1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Tere. 3 00:00:05,930 --> 00:00:06,820 Ma olen Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Ma olen CS50 CA Harvardi. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: ma olen Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Ma olen TF CS50 Yale'i. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: Ja me ei kavatse rääkida mõningate tehnoloogiate, mida võiks 8 00:00:15,790 --> 00:00:18,880 soovite kasutada, kui olete huvitatud tehes lõpliku projekti või tõesti 9 00:00:18,880 --> 00:00:20,920 midagi muusikaga. 10 00:00:20,920 --> 00:00:24,400 Me läheme tuleb keskendudes esmalt programmeerimiskeelt nimega Haskell. 11 00:00:24,400 --> 00:00:26,280 See on funktsionaalne keeles, nii et paradigma 12 00:00:26,280 --> 00:00:29,620 on väga erinev C või PHP või muu hädavajalik keeles 13 00:00:29,620 --> 00:00:33,450 et olete kasutanud juba, ja eriti kohta raamatukogu kirjutatud Haskell 14 00:00:33,450 --> 00:00:40,240 nimetatakse Euterpea, mis aitab inimesi kirjutamiseni muusika funktsionaalselt 15 00:00:40,240 --> 00:00:40,780 põhimõtteliselt. 16 00:00:40,780 --> 00:00:43,400 Ja Stephen sõelub läbi hea näide sellest. 17 00:00:43,400 --> 00:00:46,423 >> Pärast seda, ma tutvustada teile midagi, mida nimetatakse LillyPond, mis 18 00:00:46,423 --> 00:00:48,370 on tehnoloogia ladumise muusika. 19 00:00:48,370 --> 00:00:50,830 See on omamoodi nagu LaTeX muusika, kui keegi teist 20 00:00:50,830 --> 00:00:57,530 on kasutatud LaTeX matemaatika klassi või teiste P varaklassidesse või mida iganes. 21 00:00:57,530 --> 00:01:00,440 Ja nii ma annan sulle taas, mõned lihtsad näited, mis 22 00:01:00,440 --> 00:01:03,640 ja punkti sind üldiselt suunas mõned paremad vahendid. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: In Lisaks arvasime 24 00:01:04,319 --> 00:01:06,720 oleks lahe luua natuke vihjed 25 00:01:06,720 --> 00:01:10,780 poole gaasijuhe Euterpea loodud MIDI faile 26 00:01:10,780 --> 00:01:13,910 in LillyPond, et pakume mõned juhiseid skripte 27 00:01:13,910 --> 00:01:16,310 mida teha, et see on varustatud LillyPond 28 00:01:16,310 --> 00:01:19,160 lihtsalt hoida avatud lähtekoodiga ja saada gaasijuhe läheb. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Jällegi, me peaks rõhutama, 30 00:01:20,910 --> 00:01:23,100 need kaks tehnoloogiat, siis pole neid kasutada koos. 31 00:01:23,100 --> 00:01:25,370 Nad ei loodud töötama koos, kuigi nad väga kenasti. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Right. 33 00:01:26,362 --> 00:01:30,116 Ja täiesti tasuta. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Nii tunnustused, just lugesin seda. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: täpselt ära märkida. 36 00:01:33,406 --> 00:01:36,360 Tänu neile inimesed. 37 00:01:36,360 --> 00:01:39,180 See ma jõlkuma vaid hetkeks. 38 00:01:39,180 --> 00:01:41,560 Paigaldamise käigus on natuke keeruline. 39 00:01:41,560 --> 00:01:45,420 Oleme lugemiseks mind github et võite võtta pilk. 40 00:01:45,420 --> 00:01:47,840 Lihtsalt kirjuta mulle, kui teil on mingeid küsimusi. 41 00:01:47,840 --> 00:01:52,829 Aga me käivitada eeldusel et see töötab kõigi jaoks. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: Ja kui sa ei saa saada LillyPond tööd, ei ole suur asi. 43 00:01:55,620 --> 00:02:00,139 Ei ole live koostamine, mis osaleb vähemalt minu lõpp. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell ja LillyPond peaks nii olema paigaldajad. 45 00:02:02,930 --> 00:02:08,497 Euterpea laaditakse kui pakett, nii edasi ja nii edasi. 46 00:02:08,497 --> 00:02:10,080 Nii et me räägime arvuti muusikat. 47 00:02:10,080 --> 00:02:12,990 Ja see on lihtsalt väga 50.000 jala arvates. 48 00:02:12,990 --> 00:02:15,700 Seal on mõned eri aspektide üle. 49 00:02:15,700 --> 00:02:18,120 Ja see on karm ja on läheb segaseks üsna üksikasjalikult. 50 00:02:18,120 --> 00:02:22,090 Aga me võiksime mõelda midagi nagu algoritmilise koosseisu, 51 00:02:22,090 --> 00:02:24,920 kasutades algoritme, kasutades koodi, et luua 52 00:02:24,920 --> 00:02:30,280 teatud tüüpi of-- võibolla enesesarnaste nootide jada, või äkki märkmed 53 00:02:30,280 --> 00:02:33,330 mõnele piirang. 54 00:02:33,330 --> 00:02:35,350 Ja siis need võiksid olla läbi või tõlgendada 55 00:02:35,350 --> 00:02:38,390 analoog vahendid või midagi sellist. 56 00:02:38,390 --> 00:02:42,010 Aga koostis oli teha algoritmiliselt. 57 00:02:42,010 --> 00:02:45,120 >> Aga muidugi, võibolla valdkonnas arvuti muusikat või digitaalse muusika 58 00:02:45,120 --> 00:02:48,870 me oleme rohkem tuttavad on digitaalne heli sünteesi või digitaalset andmekogumis- 59 00:02:48,870 --> 00:02:51,160 ja digitaalset salvestamist. 60 00:02:51,160 --> 00:02:55,650 Palju digitaalsete vahendite on teinud läbi digitaalset andmekogumis-. 61 00:02:55,650 --> 00:03:00,110 Tegelikult oleme me kasutada üht need kujul heli kirjasinkirjaston hiljem. 62 00:03:00,110 --> 00:03:02,850 >> Aga seal on ka midagi, mida nimetatakse digitaalse sünteesi, mis tuli välja 63 00:03:02,850 --> 00:03:08,650 on 70ndate arvesse "80s Yamaha ja John Chowning Stanfordi 64 00:03:08,650 --> 00:03:11,990 teeme FM sünteesi või Sagedusmodulatsioon sünteesi, 65 00:03:11,990 --> 00:03:15,100 kus sa olid vedaja signaali ja moduleeriva 66 00:03:15,100 --> 00:03:18,270 nii audio spektri. 67 00:03:18,270 --> 00:03:22,570 Aga mida me keskendunud täna on midagi, mida nimetatakse MIDI, 68 00:03:22,570 --> 00:03:25,040 ja muidugi algoritmilise koosseisu. 69 00:03:25,040 --> 00:03:30,940 >> Me ei kavatse teha vahendeid, kuid me mitte kavatse teha mõned muusika, 70 00:03:30,940 --> 00:03:33,940 ja siis saavad tõlgendada mõned vahendid, et 71 00:03:33,940 --> 00:03:38,300 on sobi kokku üldiselt MIDI standard. 72 00:03:38,300 --> 00:03:40,830 Mis siis MIDI? 73 00:03:40,830 --> 00:03:45,550 Ma ei hakka liiga sügavale see, kuid MIDI on andmevahetusprotokolliga. 74 00:03:45,550 --> 00:03:49,250 See on mingi juhend üle erinevate ettevõtete ja tööstuste 75 00:03:49,250 --> 00:03:52,250 korraldamiseks helisid või plaastrid. 76 00:03:52,250 --> 00:03:54,170 Nii me näeme, et seal on MIDI standard 77 00:03:54,170 --> 00:03:57,500 kõik erinevad löökpillid heli ja MIDI soovitused 78 00:03:57,500 --> 00:04:01,360 Kõigi erinevate süntesaatorit või eri tüüpi kõiki seadme 79 00:04:01,360 --> 00:04:03,650 rühmade orkester, öelda. 80 00:04:03,650 --> 00:04:08,916 >> Sa oled ilmselt kursis 0 kuni 127 MIDI sõnumeid. 81 00:04:08,916 --> 00:04:12,920 MIDI signaal on tavaliselt üks natuke näitab 82 00:04:12,920 --> 00:04:16,130 kas see on andmed või staatus pakettaknad, ja siis on 83 00:04:16,130 --> 00:04:18,589 seitsme bitti signaali. 84 00:04:18,589 --> 00:04:21,430 Ja neid on võimalik kontrollida kõike maht 85 00:04:21,430 --> 00:04:25,330 kaebusele või surve konkreetse võti 86 00:04:25,330 --> 00:04:29,400 kui sa esinedes MIDI controller samuti loomulikult 87 00:04:29,400 --> 00:04:31,250 märkmeid. 88 00:04:31,250 --> 00:04:33,450 Ja muidugi, MIDI on olnud väga kasulik, 89 00:04:33,450 --> 00:04:37,550 sest see on võimalus juhe koos või ketjuttaa 90 00:04:37,550 --> 00:04:41,570 kamp MIDI riistvara. 91 00:04:41,570 --> 00:04:44,050 Mul on seitse või kaheksa tagasi oma maja. 92 00:04:44,050 --> 00:04:46,610 Läheb tõesti keeruline, aga see on tõesti võimas. 93 00:04:46,610 --> 00:04:47,460 Ja see on tõesti vana. 94 00:04:47,460 --> 00:04:51,117 See on alates 80ndate alguses, ja see on tõesti kena ja väike. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Jah. 96 00:04:51,950 --> 00:04:54,230 Kõik klassikaline Nintendo video mängud oleks ilmselt 97 00:04:54,230 --> 00:04:56,088 on MIDI failid muusika, näiteks. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Siin on Näiteks üldise MIDI, 100 00:05:01,740 --> 00:05:06,520 näitab MIDI omamoodi Üldise protokoll. 101 00:05:06,520 --> 00:05:13,280 Ja ma arvan, et me ei mõtle vahe spetsifikatsioon 102 00:05:13,280 --> 00:05:17,830 et tuleks midagi Nende instrument kõlab ja tegeliku 103 00:05:17,830 --> 00:05:21,740 realiseerimise nende instrumentide helid tugevas fondi või teatud MIDI 104 00:05:21,740 --> 00:05:25,740 süntesaator, nagu oleks vahe vahel võibolla typeface-- mis ütleb, 105 00:05:25,740 --> 00:05:30,350 üldiselt, see on disain see konkreetne võimalus esindada 106 00:05:30,350 --> 00:05:35,907 characters-- ja konkreetse fondi mis on konkreetse suuruse ja tämber, 107 00:05:35,907 --> 00:05:37,240 ja seal on realiseerimise the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Võib-olla parem oleks võrdlus 109 00:05:39,156 --> 00:05:43,430 olla Unicode standardi says-- see annab Numbri iga tegelane ja tõesti 110 00:05:43,430 --> 00:05:46,830 Iga keel maailmas, või suur hulk skripte keel 111 00:05:46,830 --> 00:05:51,310 maailmas ning seejärel need on sulatatud millekski graafiline 112 00:05:51,310 --> 00:05:53,710 erinevate font paketid. 113 00:05:53,710 --> 00:05:56,630 Ja muidugi, sa ei mõtle MIDI kui Unicode heli. 114 00:05:56,630 --> 00:06:03,250 Ja see on lihtsalt nimekiri of-- suur vool sündmuste ja instrumendid ja tühi-tähi, 115 00:06:03,250 --> 00:06:06,090 ja sa pead olema eraldi programmi, nagu kirjatüüp, 116 00:06:06,090 --> 00:06:08,537 muuta, et võtta midagi, mis on kuuldav. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Miks Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell on funktsionaalne programmeerimine keelt, väga hästi arenenud, 120 00:06:19,110 --> 00:06:22,770 väga erinev C, väga erinevad PHP. 121 00:06:22,770 --> 00:06:28,120 Ja me näeme, et seal on lihtsus Liitfunktsioon Haskell 122 00:06:28,120 --> 00:06:37,640 mis võimaldab meil tuul läbi koostamisel või kirjutades üles, transkribeerivate, 123 00:06:37,640 --> 00:06:42,160 midagi Frere Jacques, Selle lihtsa laulu 124 00:06:42,160 --> 00:06:46,815 on palju osi nii, et on ise sarnast või korratakse. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Nii et see on osa motivatsiooni, miks 127 00:06:53,250 --> 00:06:59,400 me kasutame Haskell, kus funktsioonid on esimese klassi kodanikud. 128 00:06:59,400 --> 00:07:01,120 >> Ja ma tahtsin, et laiendada see natuke. 129 00:07:01,120 --> 00:07:08,800 See on natuke lihtne noodistada Frere Jacques Haskell. 130 00:07:08,800 --> 00:07:12,100 Aga mis siis, kui me tahtsime lisada trumliosaga on? 131 00:07:12,100 --> 00:07:17,320 Mis siis, kui me tahtsime proovida teha midagi Roland 808 või 909 trumm 132 00:07:17,320 --> 00:07:20,970 masin, kus teil on umbes 16 eri etappe? 133 00:07:20,970 --> 00:07:24,590 Tavaliselt on need mõelnud kui 16. märkmeid. 134 00:07:24,590 --> 00:07:28,640 Ja saate kontrollida globaalse tempo, ja te saate noppida 135 00:07:28,640 --> 00:07:34,620 hunnik erinevaid löökpille osad bass trumm, plaksutama, erinevad püünised, 136 00:07:34,620 --> 00:07:37,540 avatud ja suletud suure mütsid Nende omamoodi kanalite 137 00:07:37,540 --> 00:07:41,600 ja siis saate EQ kohandada oma mahust. 138 00:07:41,600 --> 00:07:45,290 >> Ja me näeme kena viis Haskell esindada seda sammu 139 00:07:45,290 --> 00:07:48,810 sequencer kõik erinevate lahedaid asju Haskell 140 00:07:48,810 --> 00:07:53,100 me saame teha teeniva nimekirjad ja filtreerimine üle nimekirju, 141 00:07:53,100 --> 00:07:56,060 kaardistamine üle nimekirju, kaardistamine funktsioonid üle nimekirju. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 Ja kiire vabandust. 144 00:08:00,760 --> 00:08:05,300 See on väga pealiskaudne ja liiga kiire visand 145 00:08:05,300 --> 00:08:07,620 Mõnede aspektid of Haskell ja Euterpea, 146 00:08:07,620 --> 00:08:11,760 mis on valdkonnapõhised varjatud keeles kirjutatud 147 00:08:11,760 --> 00:08:14,970 Haskell muusikaline tüüpi. 148 00:08:14,970 --> 00:08:17,350 Nii et palun ärge vaadake kood online. 149 00:08:17,350 --> 00:08:22,404 Käivita GHCI, mis on Glasgow Haskell tõlkija tõlk. 150 00:08:22,404 --> 00:08:24,320 Ja ma tulen teeme mõned Käesoleva in natuke 151 00:08:24,320 --> 00:08:25,880 nii näed, kuidas see on tehtud. 152 00:08:25,880 --> 00:08:31,021 >> Ja see võimaldab teil laadida sisse the-- süntaks on koolon ja seejärel 153 00:08:31,021 --> 00:08:31,520 käsk. 154 00:08:31,520 --> 00:08:33,510 Võite laadida faile. 155 00:08:33,510 --> 00:08:36,840 Võite kasutada sirvida neid faile et näha kõiki funktsioone, 156 00:08:36,840 --> 00:08:39,169 eksisteerida konkreetse mooduli. 157 00:08:39,169 --> 00:08:43,850 Ja siis, kui me näeme, liigid ja liigid Klassid on nii oluline Haskell, 158 00:08:43,850 --> 00:08:48,850 nii saad alati kontroll-- eriti kui te töötate uue DSCL 159 00:08:48,850 --> 00:08:51,600 nagu see, mida on muusika tüübist? 160 00:08:51,600 --> 00:08:55,114 Ma tean, kuidas numbriline tüüpi tööd Haskell, 161 00:08:55,114 --> 00:08:56,530 aga ma ei tea, palju muusikat. 162 00:08:56,530 --> 00:09:01,280 Aga võite uurida, kuidas nad määratletud, kasutades seda t või tüübi käsk 163 00:09:01,280 --> 00:09:04,577 ja siis helistab teatud funktsiooni või andmeid objekti. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Jah. 165 00:09:05,410 --> 00:09:09,820 Kui oled mõelnud, C ja rõkkama oli hardass umbes tüüpi, 166 00:09:09,820 --> 00:09:11,230 sul pole aimugi Haskell. 167 00:09:11,230 --> 00:09:14,230 Hea asi Haskell on see, et kui saad oma koodi kompileerida 168 00:09:14,230 --> 00:09:16,790 ja kui Haskell tüübi kontroll, see on ilmselt õige, 169 00:09:16,790 --> 00:09:18,675 kuna tüüpi süsteem on nii ranged. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Jah. 171 00:09:20,090 --> 00:09:21,980 Nii et ma tahan minna through-- ja jälle, 172 00:09:21,980 --> 00:09:27,160 see ei tee seda justice-- mõned funktsioonid Haskell, et vähemalt 173 00:09:27,160 --> 00:09:31,780 oma creators-- ja see loodi 1980ndate lõpus kamp inimesi, 174 00:09:31,780 --> 00:09:34,610 komitee umbes 20 people-- mõelnud olid olulised. 175 00:09:34,610 --> 00:09:36,850 Ja esimene asi, mida nad loetletud paber, 176 00:09:36,850 --> 00:09:41,890 kirjeldatud genees Haskell üle esimesed 20 aastat või nii 177 00:09:41,890 --> 00:09:43,390 oli see, et laisk. 178 00:09:43,390 --> 00:09:44,990 Mida see tähendab? 179 00:09:44,990 --> 00:09:49,860 >> Noh, see tähendab, kui meil on mingi sõnavabadus, peame hindama seda. 180 00:09:49,860 --> 00:09:54,390 Ja Haskell teeb seda kõnet mida vaja nii või mitte-range viis. 181 00:09:54,390 --> 00:09:57,250 See tähendab, et kui meil on kamp osad meie väljendus, 182 00:09:57,250 --> 00:10:00,660 püüame viivitada hindamisega nende komponente 183 00:10:00,660 --> 00:10:05,300 kuni absoluutse viimase minute-- see on kuni me tegelikult vajame neid. 184 00:10:05,300 --> 00:10:08,480 >> Nii et see means-- mis on väga lahe, eriti 185 00:10:08,480 --> 00:10:13,200 Kui me mõtleme võtmiseks muusikaline samm sequence. 186 00:10:13,200 --> 00:10:16,740 See on sisse lülitatud, ja hakkate töötab samm sequence-- 187 00:10:16,740 --> 00:10:20,010 kui sa kunagi töötanud trummi machine-- ja ta lihtsalt läheb igavesti. 188 00:10:20,010 --> 00:10:24,650 Seega oleks tore, kui me mida jäljendada, et Haskell. 189 00:10:24,650 --> 00:10:31,040 Ja me ei saa seda teha lõpmatu väärtused, eriti lõpmatu nimekirjad. 190 00:10:31,040 --> 00:10:35,860 See on väga lihtne tippida lõputu nimekiri Haskell. 191 00:10:35,860 --> 00:10:39,230 Sa võid lihtsalt kasutada süntaksi alla siin, kus sa näed 1 kuni 3, 192 00:10:39,230 --> 00:10:42,440 eemaldada 3 1 dot dot ning mis on lõpmatu nimekirja 193 00:10:42,440 --> 00:10:46,960 kõik füüsilised näitajad laiendada kohta nii palju kui võite kujutada. 194 00:10:46,960 --> 00:10:49,925 >> Ma tahan, et kehtestada mõiste voldid kohe. 195 00:10:49,925 --> 00:10:51,800 Ja jälle, eesmärgiga Seminari pole 196 00:10:51,800 --> 00:10:55,770 õppida voldid Haskell või kõrgemat järku funktsioonid. 197 00:10:55,770 --> 00:10:59,640 Aga ma tahan seda tutvustama andma täpse ettekujutuse imelik 198 00:10:59,640 --> 00:11:03,700 Haskell on ja kui võimas see on. 199 00:11:03,700 --> 00:11:08,000 Ja eriti, me ei kavatse olla-- kui me teeme oma erinevate drum osad, 200 00:11:08,000 --> 00:11:12,790 me ei kavatse olla manipuleerides nimekirjad numbrid, kokkuklapitavad neid üksteise peale. 201 00:11:12,790 --> 00:11:17,290 Ja seda, et me tulen kasutad kaartide ja voldid. 202 00:11:17,290 --> 00:11:21,770 >> Seal on õigus assotsiatiivne korda, mis on see üks õige 203 00:11:21,770 --> 00:11:26,990 siin-- 1 miinus kogus, 2 miinus kogus, 3 miinus 0. 204 00:11:26,990 --> 00:11:29,170 Ja süntaksit korda, annad korda 205 00:11:29,170 --> 00:11:34,680 algväärtuseks ja siis operation-- sel juhul, lisamine või lahutamine. 206 00:11:34,680 --> 00:11:36,280 Olen näidanud mõlemal juhul. 207 00:11:36,280 --> 00:11:41,760 Ja siis seal on aku, mis koguneb kogu nimekirja 208 00:11:41,760 --> 00:11:46,330 kohaldamisel, et operaator pluss või minus, ja siis kuhjuvad. 209 00:11:46,330 --> 00:11:52,680 Nii et see on the-- kui ta kutsuti voldiga r pluss 0, alustades 0, 210 00:11:52,680 --> 00:11:54,720 me siis Kokkuvõttes kõik numbrid, mida nimekirjas. 211 00:11:54,720 --> 00:11:57,134 Ja see nimekiri 1-3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Nii teisisõnu Nii korda r kolme argumenti. 213 00:12:00,050 --> 00:12:02,540 Seal on funktsioon, mis ise kaht argumenti, 214 00:12:02,540 --> 00:12:05,400 siis seal on starter väärtus, ja seal on väärtuste nimekirja. 215 00:12:05,400 --> 00:12:08,570 Ja mida sa teed on teil võtta starter väärtus, esimene väärtus, 216 00:12:08,570 --> 00:12:09,850 neid ellu funktsiooni. 217 00:12:09,850 --> 00:12:11,607 Mida sa välja, võtta, et sööda 218 00:12:11,607 --> 00:12:13,940 viiakse funktsiooni teine ​​väärtus, mida sa välja, 219 00:12:13,940 --> 00:12:16,690 võtta, et toita seda arvesse funktsiooni kolmanda väärtuse. 220 00:12:16,690 --> 00:12:18,740 Ja siis, kui sa lähed mööda kogu see nimekiri nii, 221 00:12:18,740 --> 00:12:22,970 sa lähed, et saada lõpuks mõned ainsuses väärtus, mis on 222 00:12:22,970 --> 00:12:25,720 sama tüüpi, mida sa alustasid välja ja sama tüüpi 223 00:12:25,720 --> 00:12:29,147 kui asjad nimekirjas ja seejärel see on tagastamise tulemusena kordne R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Nii eelkõige need on kõrgemat järku funktsioonid, 225 00:12:31,980 --> 00:12:34,460 sest nad võtavad mingit muud funktsioneerivad ühe argumendi. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Jah. 227 00:12:34,770 --> 00:12:37,820 Kui olete kasutanud teatud teisi languages-- Tean R, [kuuldamatu] 228 00:12:37,820 --> 00:12:41,510 keel on see, mida nimetatakse Vähendada. 229 00:12:41,510 --> 00:12:45,460 Sul võib olla sarnased ülesanded teistes keeltes, just helistas 230 00:12:45,460 --> 00:12:48,160 erinevaid asju. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: Ja Mis tore kordne R 232 00:12:50,680 --> 00:12:53,880 antud juhul on see, et fold R suudab töötada lõpmatu nimekirjad. 233 00:12:53,880 --> 00:12:59,490 Nii see põhja, see P5 tekitab lisades, et 234 00:12:59,490 --> 00:13:03,120 on sisse lülitatud samm sequence mõned trumliosaga viies trumliosaga, 235 00:13:03,120 --> 00:13:05,480 ja võibolla on see conga trummel või midagi. 236 00:13:05,480 --> 00:13:09,719 Ja see on sihilikult nüri, kuidas kirjutada seda, 237 00:13:09,719 --> 00:13:11,510 aga see on tore, sest see näitab palju 238 00:13:11,510 --> 00:13:14,460 asju Haskell ja Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Nii korda R selle colon-- Koolon lihtsalt operaator, kes vajutab asju 240 00:13:20,650 --> 00:13:25,700 koostööd vastastikuse list-- nimetatakse tühja nimekirja, mis on lihtsalt tühi sulgudes. 241 00:13:25,700 --> 00:13:28,250 Ja ma helistan, et Selle lõputu nimekiri. 242 00:13:28,250 --> 00:13:31,570 See on tegelikult kahe nimekirja liita siia. 243 00:13:31,570 --> 00:13:37,150 Nimekirja 1 komaga 6 dot dot on 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Nii Haskell-- vaid mõned tegelased, siis 245 00:13:39,750 --> 00:13:42,420 võib tekitada kogu numbrijada 246 00:13:42,420 --> 00:13:46,240 mis on viis numbrit peale venitades kohta lõpmatusse. 247 00:13:46,240 --> 00:13:49,860 Ja ma ülaloleva sellele seda lühemat vähe list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- lihtsalt näidata teile kuidas saab concatenate nimekirjad. 249 00:13:54,370 --> 00:13:55,790 >> Ja siis ma olen volditud ise. 250 00:13:55,790 --> 00:14:01,510 Ja see jõuab lihtsalt on selline identiteedi operatsioon, kuid see on lõpmatu. 251 00:14:01,510 --> 00:14:06,070 Ja korda R saa seda teha, sest see Laiskasti hindab, nagu eespool. 252 00:14:06,070 --> 00:14:10,582 Kui meil on 1 ja 2 ja 3, saame lihtsalt sulg ära kogu ülejäänud seda. 253 00:14:10,582 --> 00:14:12,290 See ei tööta miinus või pluss, kuid see 254 00:14:12,290 --> 00:14:17,760 töötab selles käärsoole identiteedi operatsioon nimekirja. 255 00:14:17,760 --> 00:14:24,620 >> Niisiis, kuidas me praktiliselt kasutada, et kui me on lõpmatult pikk nimekiri asjadest? 256 00:14:24,620 --> 00:14:26,500 Noh, Haskell annab palju functions-- 257 00:14:26,500 --> 00:14:29,450 ja uurida täpsemalt neid oma AEG_ nagu võtta 258 00:14:29,450 --> 00:14:32,200 mis ütleb, OK, me oleme teeniva see lõputu nimekiri, 259 00:14:32,200 --> 00:14:35,950 aga me lihtsalt aega võtab mõned number see ja selles case-- 260 00:14:35,950 --> 00:14:38,410 me näeme seda hiljem meie drum masin code-- 261 00:14:38,410 --> 00:14:43,740 GM on lihtsalt mingi ülemaailmne muutuja sammude arv 262 00:14:43,740 --> 00:14:44,610 on sequence. 263 00:14:44,610 --> 00:14:47,630 Roll-in masinad Ma näitasin teile, see on tavaliselt 16, 264 00:14:47,630 --> 00:14:51,475 kuid olen rakendanud 32. 265 00:14:51,475 --> 00:14:54,470 See ei ole tegelikult küsimus. 266 00:14:54,470 --> 00:15:00,230 >> Haskell on ka puhta, nii et see on tugev staatiline kirjutades, et Connor vihjas. 267 00:15:00,230 --> 00:15:03,220 Nii funktsioonid matemaatika on sense-- 268 00:15:03,220 --> 00:15:06,600 nad enam matemaatiliste et nad tagatud 269 00:15:06,600 --> 00:15:11,530 mitte kasutada või muuta mis tahes muutuja või täita sisendi või väljundi. 270 00:15:11,530 --> 00:15:14,420 Nii et kui teil on funktsioon, see on determineeritud. 271 00:15:14,420 --> 00:15:17,400 Ta on alati tagasi samal väärtus riik programmi 272 00:15:17,400 --> 00:15:19,310 või jäävad samaks. 273 00:15:19,310 --> 00:15:22,940 On muidugi monaadilist erandeid sellele, kuid see on väljaspool meie ulatust. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Jah. 275 00:15:23,900 --> 00:15:26,946 See tähendab, kuigi on olemas on mõned olulised [kuuldamatu] 276 00:15:26,946 --> 00:15:27,820 tagajärgi. 277 00:15:27,820 --> 00:15:30,940 Üks on see, et see on väga lihtne paralleelseks Haskell programme. 278 00:15:30,940 --> 00:15:32,773 Sest kui sul on, öelda, funktsioon, mis 279 00:15:32,773 --> 00:15:36,064 peab toimima miljoni väärtusi, kui sa tead, et funktsioon on alati 280 00:15:36,064 --> 00:15:39,280 anna sama väärtusega kui toida teatud value-- 281 00:15:39,280 --> 00:15:43,055 kui sa oled [kuuldamatu] f 1, f 2, siis f on 3 või whatnot-- f 1 282 00:15:43,055 --> 00:15:45,180 ei kavatse kirjutada faili või midagi 283 00:15:45,180 --> 00:15:46,850 mis muudab väärtust f2. 284 00:15:46,850 --> 00:15:50,220 Sa võid lahku seda funktsiooni miljonit erinevaid masinaid või miljon 285 00:15:50,220 --> 00:15:54,720 erinevad teemad või mida iganes, saad kõik vastused tagasi, 286 00:15:54,720 --> 00:15:56,900 saad kõik tagasipöördumist väärtused tagasi, ja siis ongi kõik. 287 00:15:56,900 --> 00:15:59,780 Nii väga lihtne paralleelseks asju. 288 00:15:59,780 --> 00:16:03,140 >> Negatiivne külg on, et sisend ja väljund eriti 289 00:16:03,140 --> 00:16:05,720 sobituvad tüüpi süsteem väga keeruline viisil. 290 00:16:05,720 --> 00:16:09,010 Me ei hakka, et just nüüd, aga ma Julgustame teid mõningaid ressursse 291 00:16:09,010 --> 00:16:11,175 Internetis kui tahad õppida seda. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Nii kirjuta classes-- ja selle 294 00:16:16,550 --> 00:16:21,610 was-- klasside liike leiutati lahendada 295 00:16:21,610 --> 00:16:24,160 probleem käitaja ülekoormus. 296 00:16:24,160 --> 00:16:27,590 Nii et me tahtnud võrdõiguslikkuse eri liiki asjadest. 297 00:16:27,590 --> 00:16:31,040 Muidugi võiks mõelda of-- võrdõiguslikkuse numbriline tüüpi 298 00:16:31,040 --> 00:16:34,720 on väga lihtne mõelda, kuid Aga võrdõiguslikkuse nimekirjad? 299 00:16:34,720 --> 00:16:37,610 Aga võrdõiguslikkus puu jala andmestruktuurid? 300 00:16:37,610 --> 00:16:43,130 Ja see kõik on võimalik Haskell sest tüübi klassi. 301 00:16:43,130 --> 00:16:48,000 >> Nii et kui oled määranud teatud andmete liik-- ja siin on need muusikalised noodid. 302 00:16:48,000 --> 00:16:50,960 Me lõpuks ometi mõned arvuti muusikat. 303 00:16:50,960 --> 00:16:57,420 Nii et meil on C, C teravad, ja nii edasi ja nii edasi. 304 00:16:57,420 --> 00:17:01,080 Nad kuuluvad kamp Erinevat tüüpi klasse. 305 00:17:01,080 --> 00:17:03,510 EQ-- nad kuuluvad EQ tüübi klassi. 306 00:17:03,510 --> 00:17:06,780 See tähendab, et nad toetavad võrdõiguslikkuse operatsioone. 307 00:17:06,780 --> 00:17:12,650 Nii saab hinnata, kas üks jada muusikaline primitiivid 308 00:17:12,650 --> 00:17:15,400 on sama erinev. 309 00:17:15,400 --> 00:17:17,280 >> Nad kuuluvad ordinal klassi. 310 00:17:17,280 --> 00:17:19,479 See tähendab, et seal on tellimise neid. 311 00:17:19,479 --> 00:17:27,670 D tuleb pärast C. C teravad tuleb pärast C samuti. 312 00:17:27,670 --> 00:17:29,840 Nad kuuluvad klassi näidata, mis tähendab, et nad saavad 313 00:17:29,840 --> 00:17:33,000 trükitakse konsooli või terminal. 314 00:17:33,000 --> 00:17:36,090 Nad kuuluvad klassi küsitletud, mis 315 00:17:36,090 --> 00:17:39,770 tähendab, et kuigi need tegelased, 316 00:17:39,770 --> 00:17:45,340 nad on aluseks numbrilise esindatuse alguseks 0 317 00:17:45,340 --> 00:17:48,960 ja läheb välja läbi aga paljud asjad on siin, 20 või nii, 318 00:17:48,960 --> 00:17:51,770 või 30 või 40, võib-olla. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: Ja kui meil on andmetüüp 320 00:17:54,259 --> 00:17:57,050 et derives-- selle märksõna "deriving--" teatud tüüpi klass, 321 00:17:57,050 --> 00:18:01,160 see tähendab, et koostaja püüab ehitada midagi automaatselt. 322 00:18:01,160 --> 00:18:05,120 Ehk tahad määratleda kvaliteedi erinevalt. 323 00:18:05,120 --> 00:18:09,450 Sa tahad, et määratleda C teravad nagu võrdne D lame, näiteks. 324 00:18:09,450 --> 00:18:11,560 Selle ehitus siin, ma ei usu, C teravad 325 00:18:11,560 --> 00:18:14,940 ja D korter on võrdsed, sest koostaja automaatselt 326 00:18:14,940 --> 00:18:19,670 öelda iga erinevat võimalik väärtus erineb iga teine. 327 00:18:19,670 --> 00:18:22,930 >> Seega on võimalik, et alistada Vaikimisi rakendused 328 00:18:22,930 --> 00:18:25,730 Sellist tüüpi klassidesse. 329 00:18:25,730 --> 00:18:28,640 Jällegi, vaadata viide, kui sa tahad õppida sellest. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: Ja siin, tegelikult see tulen 332 00:18:33,600 --> 00:18:36,930 kasulik, kui me koodi hiljem. 333 00:18:36,930 --> 00:18:42,150 Me näeme mõnede Siseliidete ettevõtjad järjestikuse koosseisu, 334 00:18:42,150 --> 00:18:46,570 Paralleelselt koosseisu, ja nii edasi, need plussid ja võrdse märke 335 00:18:46,570 --> 00:18:48,620 ümbritsetud kooloniga. 336 00:18:48,620 --> 00:18:53,330 See tähendab, et me saame mängida neid erinevaid muusikaliste primitiivide üksteise järel. 337 00:18:53,330 --> 00:18:54,590 See on järjestikune koosseisu. 338 00:18:54,590 --> 00:18:57,170 >> Või saame mängida neid paralleelsed samaaegselt. 339 00:18:57,170 --> 00:19:05,100 Nii et ma ei ole muusikalist väärtust, ja siis see võrdub ja kooloniga, 340 00:19:05,100 --> 00:19:09,669 Siseliidete paralleelselt koosseisu operaator, ja mängida neid mingi akord. 341 00:19:09,669 --> 00:19:11,460 Ja me ei kavatse kasutada see, kui me ühendame 342 00:19:11,460 --> 00:19:15,080 Meie trumliosaga meie vähe Frere Jacques laul 343 00:19:15,080 --> 00:19:19,460 mängida need kaks järjestused muusikaline väärtused samal ajal. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying on-- Curry Viimane nimetus Haskell Curry, kes 346 00:19:29,250 --> 00:19:31,850 Haskell pilt on nime saanud. 347 00:19:31,850 --> 00:19:34,330 Ja see võimaldab meil kena elegants, kui me oleme 348 00:19:34,330 --> 00:19:36,880 kirjalikult kõik need erinevad funktsioone või filtreid, et me oleme 349 00:19:36,880 --> 00:19:39,330 saab olema kaardistamine üle meie nimekirju. 350 00:19:39,330 --> 00:19:42,810 Funktsioon kahe arguments-- f kohal x ja y-- 351 00:19:42,810 --> 00:19:46,630 võib olla esindatud f x rakendatud y. 352 00:19:46,630 --> 00:19:49,800 Nii et see on funktsioon üks argument, mis tagastab 353 00:19:49,800 --> 00:19:51,240 teise funktsiooni üks argument. 354 00:19:51,240 --> 00:19:56,962 Nii see tähendab, et saame kaardistatakse funktsioon f x üle nimekirja y. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Tahad Nii näiteks seda? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Jah. 357 00:19:59,836 --> 00:20:05,390 Mul on näiteks siin on mõned asjad, mida me ei kirjuta. 358 00:20:05,390 --> 00:20:10,500 Nii imiteerida 2-- hästi, imiteerida võtab 359 00:20:10,500 --> 00:20:13,040 üks väärtus, mis on mitu korda korrata midagi, 360 00:20:13,040 --> 00:20:16,690 ja siis ta võtab value-- Tavaliselt nimekirja või midagi. 361 00:20:16,690 --> 00:20:23,450 Nii et siin me oleme kaardistamine imiteerida 2 teisele nimekirja. 362 00:20:23,450 --> 00:20:27,440 >> Nii et kui me map imiteerida 2, kui me imiteerida 2 kohaldatakse 363 00:20:27,440 --> 00:20:31,890 esimesele element käesoleva list-- ja need nimekirjad muusikaline phrases-- 364 00:20:31,890 --> 00:20:37,650 hakkab tootma kaks "sa sleeping--" nii te magate, te magate. 365 00:20:37,650 --> 00:20:40,040 Nüüd on meil kaks. 366 00:20:40,040 --> 00:20:42,570 Aga imiteerida võtab kaks argumente, kuid kuna me oleme 367 00:20:42,570 --> 00:20:47,100 currying ja siis kaardistamine, saame esindada imiteerida 2 368 00:20:47,100 --> 00:20:52,310 nagu oleks tagastatud funktsioonina üks argument-- lihtsalt imitatsiooniga kaks korda. 369 00:20:52,310 --> 00:20:57,010 Ja siis me kohaldamisel, et iga element selle väljendite loetelu. 370 00:20:57,010 --> 00:21:01,900 >> Ja concat on Haskell operatsiooni lamedamad nimekirja. 371 00:21:01,900 --> 00:21:04,400 Kuna imiteerida 2 tahet koostada nimekirja nimekirjad. 372 00:21:04,400 --> 00:21:06,660 Ja see on see vahe vorm siin. 373 00:21:06,660 --> 00:21:10,365 Ja nii siis saame CONCAT või lamedamaks, et kaks korda. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: lihtsam näide currying, 375 00:21:12,240 --> 00:21:15,323 Kui soovite like-- kujutada f on lihtsalt korrutamine funktsioon, mis võtab kaks 376 00:21:15,323 --> 00:21:16,840 argumente ja naaseb oma toodet. 377 00:21:16,840 --> 00:21:19,320 Nii et kui teil on f 4 5, see on 20. 378 00:21:19,320 --> 00:21:22,670 Aga sa ei mõtle seda also-- teil on funktsiooni f 4 379 00:21:22,670 --> 00:21:25,560 mis võtab argumendiks ja naaseb neli korda seda argument-- lihtsalt 380 00:21:25,560 --> 00:21:27,870 osaline rakendus, mis lihtsalt üks argument 4. 381 00:21:27,870 --> 00:21:31,182 Ja kui te toita f 4 5, mis annab sulle 20. 382 00:21:31,182 --> 00:21:32,890 Ja see on lihtsam näide currying. 383 00:21:32,890 --> 00:21:34,473 See on tavaliselt üks õpik ones. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda väljendid või anonüümseid funktsioone 386 00:21:42,110 --> 00:21:47,330 on teise Haskell tunnuseks. 387 00:21:47,330 --> 00:21:51,242 Nii et kui me peame klopsima vähe funktsiooni elu imiteerida, 388 00:21:51,242 --> 00:21:52,950 aga öelda, et see ei ole standard raamatukogu 389 00:21:52,950 --> 00:21:56,150 saame kasutada süntaks sarnaseid järgmine. 390 00:21:56,150 --> 00:21:58,730 Ja me imelihtne üle selle. 391 00:21:58,730 --> 00:22:02,160 Üks asi, mida sa näed, palju on drum masin me helistamisel 392 00:22:02,160 --> 00:22:05,790 et midagi, mida nimetatakse filtreerida, mis näeb ette, 393 00:22:05,790 --> 00:22:08,185 on kaardistada funktsioon Üle nimekirja, kuid see on 394 00:22:08,185 --> 00:22:10,260 kaardistada Boole'i ​​funktsiooni. 395 00:22:10,260 --> 00:22:13,390 >> Nii et meil on siin üks näide on anonüümselt 396 00:22:13,390 --> 00:22:19,150 määratletud Boole'i ​​funktsiooni, mis võtab kõigest paar väärtusi. 397 00:22:19,150 --> 00:22:22,990 See ei ole rangelt võttes anonüümne funktsioon. 398 00:22:22,990 --> 00:22:25,850 Aga see on seaduses määratletakse et süntaks lühiduse, 399 00:22:25,850 --> 00:22:28,007 ja see lihtsalt võtab x moodul n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Jah. 401 00:22:28,840 --> 00:22:31,330 Nii f on funktsioon kaks argumenti n ja p 402 00:22:31,330 --> 00:22:35,440 mis tagastab funktsioon, mis on iseenesest funktsioon üks argument, nimelt x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: Ma mainitud Siseliidete ettevõtjad. 405 00:22:40,690 --> 00:22:42,642 Mis on Siseliidete ettevõtjad? 406 00:22:42,642 --> 00:22:45,710 Noh, Siseliidete ettevõtjad on tavalisel viisil me esindame toimingud, 407 00:22:45,710 --> 00:22:49,910 öelda, in mathematics-- 2 pluss 2 asemel operaatori pluss 408 00:22:49,910 --> 00:22:51,202 ja siis kaks argumenti 2 ja 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Seda nimetatakse reverse Poola märke, mis on 410 00:22:53,701 --> 00:22:55,330 termin ma kahtlen keegi teist teab. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Right. 412 00:22:56,288 --> 00:22:58,290 Tagurpidi Poola või eesliite märke. 413 00:22:58,290 --> 00:23:01,412 Aga Haskell otsustanud kasuta Siseliidete ettevõtjad. 414 00:23:01,412 --> 00:23:03,120 Nii et need on vaid mõned Kohandatud need, mis 415 00:23:03,120 --> 00:23:07,770 kasutamiseks määratletakse Euterpea DSCL Haskell. 416 00:23:07,770 --> 00:23:10,730 Nii et see oli järjestikuse koosseisu. 417 00:23:10,730 --> 00:23:16,340 See oli paralleelselt koosseisu, ja see oli kärpimisel paralleelselt koosseisu. 418 00:23:16,340 --> 00:23:18,710 Ja me vajame, et meie drum masin, 419 00:23:18,710 --> 00:23:22,640 sest me kasutame viimase operaator, et vähe korteež seal 420 00:23:22,640 --> 00:23:26,330 mängida trummi masin mööda meie Frere Jacques laulu. 421 00:23:26,330 --> 00:23:28,650 Ja meie drum masin saab olema lõpmatu. 422 00:23:28,650 --> 00:23:30,920 See lihtsalt mängib igavesti. 423 00:23:30,920 --> 00:23:32,692 Aga Frere Jacques laulu ei ole. 424 00:23:32,692 --> 00:23:33,510 See ei ole nii pikk. 425 00:23:33,510 --> 00:23:36,610 See on ainult mõned baarid. 426 00:23:36,610 --> 00:23:43,030 Nii et me peame lõpetama drum masin Niipea kui lühem muusikaline väärtus on 427 00:23:43,030 --> 00:23:43,700 lõpetamiseks. 428 00:23:43,700 --> 00:23:46,980 Ja et infixed operaator on super abivalmis sellega. 429 00:23:46,980 --> 00:23:50,090 >> Ja Siseliidete märke nagu see on selline kena, 430 00:23:50,090 --> 00:23:57,095 sest et teil on funktsioon nagu tsitaat, mis annab täisarvu jagamine 431 00:23:57,095 --> 00:24:01,010 x miski else-- kahju, et peaks olema a ja b. 432 00:24:01,010 --> 00:24:04,740 Sa võid kirjutada seda quote b. 433 00:24:04,740 --> 00:24:09,670 Nii et kui sa put-- element on Teise näite korral. 434 00:24:09,670 --> 00:24:14,730 x element mõnes nimekirjas, kui paned see Backticks, saab seda kasutada. 435 00:24:14,730 --> 00:24:20,400 Kuigi see ei ole sümbol nagu pluss või miinus või korda, 436 00:24:20,400 --> 00:24:24,630 saate nimi funktsiooni niimoodi Backticks 437 00:24:24,630 --> 00:24:27,045 kui infiksoperaator, mis on päris lahe. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Ka see on kõik lihtsalt süntaktiliste suhkrut, tõesti. 439 00:24:29,670 --> 00:24:32,310 See ei mõjuta tuum keeles. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Nii näeme siia viimase lause meie Frere Jacques laulu, 441 00:24:37,440 --> 00:24:45,740 Mängisin mõned vähe akorde või kolmandikku kasutades paralleelselt koosseisu 442 00:24:45,740 --> 00:24:46,240 operaator. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 See on üks viis öelda mõned mida oleme lihtsalt öeldes. 445 00:24:54,950 --> 00:24:59,986 Nii saab kaardistada funktsioonid Ühe tüli nimekirjad. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Jälle viited jaoks Haskell-- sissejuhatav õpikud 447 00:25:02,860 --> 00:25:04,680 on see kõik see. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Nii et siin on päris võti rida samm sequence 449 00:25:07,790 --> 00:25:12,820 heidame pilgu abil nimekirja arusaamist. 450 00:25:12,820 --> 00:25:17,810 Ja me näeme siin, et element fikseeritud operaator tagasi hinnapakkumisi. 451 00:25:17,810 --> 00:25:23,030 Nii et kui x on element nimekirja X, siis me kutsume üles perc funktsioone. 452 00:25:23,030 --> 00:25:25,100 Nii perc on lihtsalt löökpillid funktsiooni. 453 00:25:25,100 --> 00:25:30,200 See võtab mõned väärtus p, mis on osa piirneb k~oigi 454 00:25:30,200 --> 00:25:35,310 Erinevate löökpillide helide et me nägime eelmise slaidi, 455 00:25:35,310 --> 00:25:38,840 ja siis see annab, et kestus veerand märkuse. 456 00:25:38,840 --> 00:25:43,190 Else see annab talle qnr-valguga ja qnr-valguga on lihtsalt veerandnootidega puhata. 457 00:25:43,190 --> 00:25:44,970 >> Nii et see on rajada midagi ilusat. 458 00:25:44,970 --> 00:25:52,110 Meil on elementide loetelu ja jagame loop üle mõned nimekirja ühest 459 00:25:52,110 --> 00:25:54,540 max väärtus meie sammu sequence. 460 00:25:54,540 --> 00:25:58,290 Ja kui me oleme kindlal i et nimekiri ühe max väärtus, 461 00:25:58,290 --> 00:26:02,970 kui see i kuulub see komplekt on loodud seda funktsiooni, 462 00:26:02,970 --> 00:26:06,040 noh, siis lülitage see arvesse löökpillid märkuse. 463 00:26:06,040 --> 00:26:10,960 Muidu lihtsalt mängida puhata, mis See tähendab, et me lihtsalt vaikida. 464 00:26:10,960 --> 00:26:16,050 Ja me näeme siin, et Selles nimekirjas arusaamise süntaks, 465 00:26:16,050 --> 00:26:20,030 x on asustatud käesoleva nimekirja ehitatud ühe 466 00:26:20,030 --> 00:26:22,462 globaalsele suurus sekvenaatorisse. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Jah. 468 00:26:23,295 --> 00:26:26,340 Põhiline süntaks nimekirja arusaamadele on 469 00:26:26,340 --> 00:26:30,810 sulg, väärtus, mis hõlmab mõned muutujad, baar, 470 00:26:30,810 --> 00:26:34,260 võimalikult muutujate väärtused ise, suletud sulg. 471 00:26:34,260 --> 00:26:38,545 Ja kui sa oled teinud seatud ehitaja märke aastal mingit matemaatika klassi, 472 00:26:38,545 --> 00:26:45,999 sa oleks võinud seada 2n sellised et n on sisse või n on z. 473 00:26:45,999 --> 00:26:48,290 Sarnased asi-- selle märke on mõeldud sugestiivne 474 00:26:48,290 --> 00:26:49,630 Selle matemaatilist. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: Ja saate kohaldavad mitut öeldisi 476 00:26:51,880 --> 00:26:56,250 ja mitu filtrit nimekirja arusaamine, mis on üsna kena. 477 00:26:56,250 --> 00:27:01,800 Algebraic types-- me ei jõlkuma kaua siin. 478 00:27:01,800 --> 00:27:04,840 Seal ei ole hea idee in Haskell või hea, selge arusaam 479 00:27:04,840 --> 00:27:10,720 kuidas võtta, ütleme, vaikimisi parameetrit funktsioonile või midagi. 480 00:27:10,720 --> 00:27:13,370 Python, see on üsna lihtne. 481 00:27:13,370 --> 00:27:18,460 Sa võid öelda võrdub kohta tunnistamise funktsioon, 482 00:27:18,460 --> 00:27:21,420 vaikeväärtuses Juhul ükski tarnitakse. 483 00:27:21,420 --> 00:27:27,010 >> Haskell, siis võiks olla kasuta võibolla äkki kirjutad, 484 00:27:27,010 --> 00:27:32,190 mis võtab kas midagi või väärtuse tüüp lihtsalt. 485 00:27:32,190 --> 00:27:38,630 Nii me kasutavad seda ära trumli masin et saaksime anda vabatahtlik maht 486 00:27:38,630 --> 00:27:40,730 parameetrid igale trumliosa. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Nii et see annab meile viis, mille EQ või mahu konkreetse kanali. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: In teiste Haskell näiteid, 490 00:27:56,440 --> 00:28:00,450 Võite näha võibolla kasutada funktsioonid ei pruugi ühtida. 491 00:28:00,450 --> 00:28:03,470 See on ühine. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: Ja te võite anda mingi veateate kui default. 493 00:28:07,010 --> 00:28:11,020 Ja see on eriti mugav, kui sa teed I / O Haskell. 494 00:28:11,020 --> 00:28:12,044 See võib olla trikke. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: Or jaoks sarnane näiteks arvavad, et 496 00:28:13,960 --> 00:28:17,460 funktsiooni, mis hõlmab jagunemine parameetri, mis võiksid olla 0. 497 00:28:17,460 --> 00:28:20,020 Ja see funktsioon võiks tagasi võibolla mis iganes. 498 00:28:20,020 --> 00:28:22,802 Nii et kui pole jagunemise 0, siis taastub ainult iganes. 499 00:28:22,802 --> 00:28:25,010 Ja kui on jagunemist 0, siis taastub midagi 500 00:28:25,010 --> 00:28:26,910 kui viis signalisatsiooni viga. 501 00:28:26,910 --> 00:28:30,330 Kuna üks tagajärg Haskell on väga ranged kirjutades 502 00:28:30,330 --> 00:28:34,100 on see, et seal ei ole real-- Erandiks on ebamugav, põhimõtteliselt 503 00:28:34,100 --> 00:28:36,160 veatöötluse on ebamugav. 504 00:28:36,160 --> 00:28:39,440 Ja see on üks väga levinum viis seda teha. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Nüüd saame teise Raske asi 506 00:28:42,990 --> 00:28:49,160 umbes Haskell, mis on muster sobitamise ja funktsiooni mõisted. 507 00:28:49,160 --> 00:28:53,390 Ma näitasin teile viimase slaidile deklaratsiooni sammjuhtimise 508 00:28:53,390 --> 00:28:58,170 funktsioon, mis võttis äkki väärtus, siis int, siis nimekiri ints, 509 00:28:58,170 --> 00:29:03,850 Seejärel tagastab jada muusika väärtusi on kommenteeritud 510 00:29:03,850 --> 00:29:05,375 nii pigi ja maht. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Nii et need kolm argumenti võib olla mustrit sobitada järgmisel viisil. 513 00:29:11,820 --> 00:29:16,660 Ja me alati tahame olla kindlad, et teha aluspõhimõtted või väljumise korral esimest. 514 00:29:16,660 --> 00:29:19,690 Ja need allkriipsud lihtsalt tõlgendada 515 00:29:19,690 --> 00:29:22,340 et igasugune väärtus, mis on seal. 516 00:29:22,340 --> 00:29:26,580 Nii et kui me kõne samm jada mõned väärtus, mõnda muud väärtust, 517 00:29:26,580 --> 00:29:32,210 ja siis tühja nimekirja, mida me tahame tagasi on vaid vaikus, puhata 0. 518 00:29:32,210 --> 00:29:35,110 >> Ja selle asemel, et on tühja nimekirja või 0, 519 00:29:35,110 --> 00:29:38,150 see on ülejäänud 0, sest me oleme tegeleb muusika tüübile, 520 00:29:38,150 --> 00:29:43,230 ja tühja nimekirja muusika tüüp on lihtsalt mujal ei ajaks. 521 00:29:43,230 --> 00:29:45,680 Pole muusika. 522 00:29:45,680 --> 00:29:51,460 Ja siis me näeme, kui me samm jadaks v helitugevuse argument, 523 00:29:51,460 --> 00:29:57,290 p ettevaatusabinõu instrument argument, ja siis nimekirja x on. 524 00:29:57,290 --> 00:29:58,360 >> Siis me teeme mõned asjad. 525 00:29:58,360 --> 00:30:01,290 Eelkõige me rakendame Selles nimekirjas mõistmine, 526 00:30:01,290 --> 00:30:05,700 ja me täita mõned toiminguid ehk väärtus 527 00:30:05,700 --> 00:30:10,050 muuta see arvväärtus et seda võib siis loendati ja ko 528 00:30:10,050 --> 00:30:12,300 valida instrument. 529 00:30:12,300 --> 00:30:16,730 Ka see on veidi natuke tahtlikult inconcise 530 00:30:16,730 --> 00:30:20,580 lihtsalt näidata kõiki imelikke asju saate teha Haskell kui 531 00:30:20,580 --> 00:30:23,170 heita pilk see oma aja. 532 00:30:23,170 --> 00:30:23,802 >> Hästi. 533 00:30:23,802 --> 00:30:26,010 Nii et me lõpuks saada seda, mida me ette teha, 534 00:30:26,010 --> 00:30:28,820 mis on teha mõned arvuti muusikat. 535 00:30:28,820 --> 00:30:32,250 Nii et me läheme püüdma teha Frere Jacques laulu. 536 00:30:32,250 --> 00:30:35,220 Seega on olemas mitu laused Frere Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Neli. 539 00:30:39,680 --> 00:30:40,460 Hea. 540 00:30:40,460 --> 00:30:42,490 Ja mis on tore, et nad kõik korduvad 541 00:30:42,490 --> 00:30:46,990 sama koguse korda, mis on kaks. 542 00:30:46,990 --> 00:30:50,730 >> Nii et meil on neli laused Iga korratakse kaks korda. 543 00:30:50,730 --> 00:30:53,590 Ja eriti, nad on ümmargune. 544 00:30:53,590 --> 00:30:55,340 Ja seal on palju, palju võimalusi, kuidas rakendada 545 00:30:55,340 --> 00:30:57,520 ümmargune, et oleks lõbus teha. 546 00:30:57,520 --> 00:31:00,260 Ma olen teinud seda päris lihtne viis siin, 547 00:31:00,260 --> 00:31:05,760 mis on lihtsalt konstrueerida-- rida Funktsioon nimekirja muusikat väärtused 548 00:31:05,760 --> 00:31:10,390 ja muudab see järjestikuse koosseisu kohaldades, et järjestikune koosseisu 549 00:31:10,390 --> 00:31:13,000 operaator. 550 00:31:13,000 --> 00:31:19,540 >> Ja siis ma viivitada eri paigus muutes need algavad puhata. 551 00:31:19,540 --> 00:31:22,770 Nii et ma alustada ülejäänud kaks meedet, ja siis ülejäänud neli meetmeid, 552 00:31:22,770 --> 00:31:26,160 ja siis ülejäänud kuus meetmed, ja siis edasi 553 00:31:26,160 --> 00:31:32,290 töötab, nagu me kõik teame, et see laul. 554 00:31:32,290 --> 00:31:37,180 Me näeme kahte annotatsioone või muudatused muusika väärtuste 555 00:31:37,180 --> 00:31:43,150 mis sisalduvad selles järjestikuseks paigutus muusika elemente. 556 00:31:43,150 --> 00:31:44,810 Meil on kohevaks. 557 00:31:44,810 --> 00:31:48,960 See on funktsioon, märkmete muusika konkreetse ruumala. 558 00:31:48,960 --> 00:31:51,320 See on hea näide on MIDI signaali jooksmine 559 00:31:51,320 --> 00:31:57,510 0-127, seitse bitti teavet, mis võib toimuda. 560 00:31:57,510 --> 00:32:00,650 >> Ja then-- nägime seda väga lühidalt, kuid üldiselt MIDI 561 00:32:00,650 --> 00:32:02,310 loetelu erinevaid vahendeid. 562 00:32:02,310 --> 00:32:04,450 Ja seal ei ole palju neist. 563 00:32:04,450 --> 00:32:11,230 Kui kasutate digitaalset audio tööjaama, nagu Ableton Live või Pro Tools, 564 00:32:11,230 --> 00:32:17,560 seal on uskumatult laiemat süntesaatorite ja VST instrumendid. 565 00:32:17,560 --> 00:32:21,510 Aga MIDI standard ainult on vähe, või mitukümmend. 566 00:32:21,510 --> 00:32:22,799 Ja mõned neist on naljakas. 567 00:32:22,799 --> 00:32:25,840 Ma arvasin, et oleks tore, kui me mängisime instrumendi MIDI instrumendi 568 00:32:25,840 --> 00:32:30,550 helikopter, ja seejärel Järgmine võimalus läbi ringi, 569 00:32:30,550 --> 00:32:37,980 tegime pad süntesaatorit, ja seejärel see kulunud plii ruutlaine süntesaatorit, 570 00:32:37,980 --> 00:32:44,240 ja siis väljendada löga, mis on natuke segane minu halb MIDI 571 00:32:44,240 --> 00:32:46,410 süntesaator, kuid nad OK. 572 00:32:46,410 --> 00:32:50,030 >> Ja siis me näeme seda let ja süntaks on Haskell, 573 00:32:50,030 --> 00:32:54,030 ja siis me oleme mänginud kõik need osad kokku 574 00:32:54,030 --> 00:32:56,265 kusjuures samaaegselt koosseisu operaator. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 Ja me võiks ilmselt näidata osa sellest. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Siin on kood. 579 00:33:08,340 --> 00:33:14,960 Ja näete C, siis oleksin palju köhatamist ja seadistus 580 00:33:14,960 --> 00:33:19,760 Tabeli kood, enne kui võiks teha sarnast muusikat. 581 00:33:19,760 --> 00:33:22,080 Või mõni muu programmeerimine keel, siis tahaks ilmselt 582 00:33:22,080 --> 00:33:27,210 on suhelda mingisugune raamatukogu või API ja seada kõik üles, 583 00:33:27,210 --> 00:33:28,725 ja siis sa pead puhastada. 584 00:33:28,725 --> 00:33:33,810 Aga siin Haskell on, ma arvan, kui sa saad aru saama sellest, uskumatult 585 00:33:33,810 --> 00:33:35,770 loetav ja väga väljendusrikas. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Seega on rakendamise of Frere Jacques. 588 00:33:43,240 --> 00:33:43,740 Hästi. 589 00:33:43,740 --> 00:33:47,557 Nüüd tahame lisada löökpillid, ja see on natuke segasem. 590 00:33:47,557 --> 00:33:49,015 Võtame pilk libiseb. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Nii suur idee on teha kamp nimekirju või osad. 593 00:34:00,540 --> 00:34:04,140 Esitatud roll-masinates, seal olid tavaliselt umbes võibolla kaheksa 594 00:34:04,140 --> 00:34:08,670 10 rütmi ja löökpillid osad. 595 00:34:08,670 --> 00:34:10,159 Ja siis kasutada kamp tehnikaid. 596 00:34:10,159 --> 00:34:14,889 Ja me rääkisime these-- kasutades voldid, filtrid, lambda funktsioone, 597 00:34:14,889 --> 00:34:19,429 kaardistati üle nimekirju luua väärtusi Mõnes vahemikus 1 kuni r, r on 16, 598 00:34:19,429 --> 00:34:20,699 või 32 samme sekvenaatorisse. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> Ja siis, kui seal on väärtus, mida nimekirjas kui meil hakkab läbi sequence, 601 00:34:29,920 --> 00:34:34,190 voolab läbi üle ja üle, see sõltub, et märkus, 602 00:34:34,190 --> 00:34:36,060 ja et proovi aktiveerub. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Siin on kõik erinevad imelik viise Tulin koos, et luua märkmeid. 605 00:34:47,110 --> 00:34:48,940 Proovi ise pool summast. 606 00:34:48,940 --> 00:34:50,360 Seda saad tunduda lahe. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Aeg lubab, läheme läbi selle. 609 00:34:54,690 --> 00:34:59,200 Aga just nüüd, ma arvan peaksime demo mis meil on. 610 00:34:59,200 --> 00:35:01,380 Loodame seda läheb OK. 611 00:35:01,380 --> 00:35:02,670 >> Nii et see on GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 Ja me laadida faili Mul on kutsutud song.lhs, 614 00:35:09,121 --> 00:35:10,620 mis on fail ma näitasin teile. 615 00:35:10,620 --> 00:35:11,470 OK, suur. 616 00:35:11,470 --> 00:35:15,010 Nagu Connor ütles varem, et koostatud, siis tippige kontrollida, 617 00:35:15,010 --> 00:35:18,380 nii et ma ei hinga palju lihtsam. 618 00:35:18,380 --> 00:35:20,010 Ta ei kavatse õhkima mind. 619 00:35:20,010 --> 00:35:22,720 >> Ma ei taha, et sulle midagi kasulikku. 620 00:35:22,720 --> 00:35:25,900 Näete, et moodul koormatud nn 50. 621 00:35:25,900 --> 00:35:28,240 Saate sirvida, et moodul. 622 00:35:28,240 --> 00:35:32,092 Ja see on nii kena umbes doing-- äkki mida 623 00:35:32,092 --> 00:35:34,550 sa teed Haskell ei ole nimetatakse tarkvara arendamiseks, 624 00:35:34,550 --> 00:35:36,980 kuid mida saate teha palju lõbusaid asju ise. 625 00:35:36,980 --> 00:35:42,410 Ja töökorraldus on tõesti kena, kui Võrreldes paljude teiste keelte 626 00:35:42,410 --> 00:35:45,872 sest näete tõesti loetaval viisil, mis toimub. 627 00:35:45,872 --> 00:35:47,830 Nii näeme, et meil on kõik need laused, mis 628 00:35:47,830 --> 00:35:53,760 on nimekirjad muusika noodid ja siis me ehitada neid millekski suuremaks 629 00:35:53,760 --> 00:35:55,220 mis on muusika laul. 630 00:35:55,220 --> 00:35:58,450 See on muusikaline seade. 631 00:35:58,450 --> 00:36:05,545 Ja siis me saame mängida kõik funktsiooniga nimetatakse mängida muusikat. 632 00:36:05,545 --> 00:36:09,040 Te näete, et siin. 633 00:36:09,040 --> 00:36:11,310 Kumb on lihtsalt mängida. 634 00:36:11,310 --> 00:36:15,040 >> Ma peaks say-- ma ei räägi Selle dollari märk, et on kõikjal. 635 00:36:15,040 --> 00:36:17,980 Dollar märk on teine ​​infiksoperaator. 636 00:36:17,980 --> 00:36:22,500 Aga see on madalaim tähtsam mis tahes ettevõtja, mis tegelikult 637 00:36:22,500 --> 00:36:24,960 tähendab, et kõike vasakul dollari märk 638 00:36:24,960 --> 00:36:28,460 ja paremal dollari märk, me ei kavatse saada hinnatud enne seda. 639 00:36:28,460 --> 00:36:31,430 Nii et see on omamoodi nagu teise lisamise viis sulgudes. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: See on põhimõtteliselt Liitfunktsioon. 642 00:36:36,220 --> 00:36:40,026 Ja see tagab, et te ei have-- kui sul on funktsioonid mõlemal pool või Siseliidete 643 00:36:40,026 --> 00:36:42,900 ettevõtjad mõlemal pool, nad ei seostada kogu seda ja teile 644 00:36:42,900 --> 00:36:46,030 ootamatuid tulemusi. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Nii me can-- kasutades, et me saame helistada. 646 00:36:49,790 --> 00:36:51,415 Esiteks, me mängida ilma trummid. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 See on helikopter, MIDI helikopter. 649 00:37:03,170 --> 00:37:05,495 >> [Muusika mängib] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Seal on ruutlaine. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Hääl löga. 654 00:37:25,490 --> 00:37:27,630 Ja te võite tõesti minna loodusesse seda. 655 00:37:27,630 --> 00:37:30,872 Ma valisin päris lihtne, sest ma teadsin, et ma ei peaks hammustada 656 00:37:30,872 --> 00:37:31,830 rohkem kui ma võiks närida. 657 00:37:31,830 --> 00:37:36,460 Lihtsalt see päris lihtne näitama peamised ideed. 658 00:37:36,460 --> 00:37:39,952 Aga siis ma olin nagu oleme sain lisada mõned trummid sellele. 659 00:37:39,952 --> 00:37:41,910 Just, sest see on natuke arusaamatu, 660 00:37:41,910 --> 00:37:45,790 ja ma ei kasutanud nimi trumli osad, 661 00:37:45,790 --> 00:37:49,490 Ma kaardistatud them--, sest nad on osa, mis loenduratribuudi klassi, 662 00:37:49,490 --> 00:37:51,500 Ma kaardistatud neid ints. 663 00:37:51,500 --> 00:37:53,120 Üks on nagu trumm. 664 00:37:53,120 --> 00:37:54,370 Zero on samuti. 665 00:37:54,370 --> 00:37:56,000 Seitse on suur müts. 666 00:37:56,000 --> 00:38:00,920 Ja maha siin, kus funktsioonid natuke rohkem juhuslik, 667 00:38:00,920 --> 00:38:02,100 Need on nagu conga trummid. 668 00:38:02,100 --> 00:38:08,360 >> Nii et kui te arvate about-- võibolla lõbusalt rakendada drum masin 669 00:38:08,360 --> 00:38:12,830 on kasutada väga korrektsel mustrid oma trumm. 670 00:38:12,830 --> 00:38:17,640 Nii näiteks filtreerimiseks üle nimekirja kõike, mis annab tagasi 671 00:38:17,640 --> 00:38:20,590 1, kui see on võetud moodul 04. 672 00:38:20,590 --> 00:38:27,190 Nii et ma saan 1, 5, 9, 13, 17-- nii et see on esimene võita iga meede. 673 00:38:27,190 --> 00:38:32,860 >> Ja siis see on sama asi nihkunud kahe etapi. 674 00:38:32,860 --> 00:38:33,850 Nii et Pentsik. 675 00:38:33,850 --> 00:38:37,480 Nii et see oleks midagi suurt mütsi. 676 00:38:37,480 --> 00:38:39,640 Ja siis jälle siin, see on natuke juhuslik, 677 00:38:39,640 --> 00:38:41,080 sest me teeme conga trummid. 678 00:38:41,080 --> 00:38:44,180 Ja mul on mõned maracad maha ka siin. 679 00:38:44,180 --> 00:38:50,280 >> Nii et ma võiks nimetada mängida trummi masin, kuid see kesta igavesti, 680 00:38:50,280 --> 00:38:53,700 ja see võib hakata haarates üles kõik mälu minu süsteemi. 681 00:38:53,700 --> 00:38:57,090 Nii et ma kutsun seda funktsiooni mängida muusikat, mis, nagu me näeme, 682 00:38:57,090 --> 00:39:02,020 kasutada kärpimisel paralleelselt koosseisu mängida meie väike Frere Jacques laul 683 00:39:02,020 --> 00:39:04,200 koos see imelik drum masin. 684 00:39:04,200 --> 00:39:06,190 Võtame pilk. 685 00:39:06,190 --> 00:39:10,920 Ja palun ärge parandada minu paigutus kõik trumliosa. 686 00:39:10,920 --> 00:39:13,375 Pole minu eriala, kuid ma oli lõbus seda teha. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Muusika mängib] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Nii et loomulikult, see on kõik natuke mitte nii lõbus 691 00:39:56,980 --> 00:40:01,100 Kui me ei saa muuta selle et skoor nii äkki see 692 00:40:01,100 --> 00:40:04,650 võib tõlgendada inimese poolt esineja. 693 00:40:04,650 --> 00:40:06,535 Nii et ma ei hakka seda siin. 694 00:40:06,535 --> 00:40:07,910 Olen juba loodud faile. 695 00:40:07,910 --> 00:40:10,280 Te näete, et seal on dot LilyPond file-- ja selle 696 00:40:10,280 --> 00:40:14,500 on minu Segue üle Connor-- ja dot MIDI faili, 697 00:40:14,500 --> 00:40:18,610 ja dot PDF-faili, mis on see, mida LilyPond lõppkokkuvõttes luua. 698 00:40:18,610 --> 00:40:23,770 >> Aga need on need skriptid, ja ma lihtsalt käivitada neid nende abiga võimalusi. 699 00:40:23,770 --> 00:40:28,090 Kui sa need üles ja töötab Euterpea, saate luua MIDI faili. 700 00:40:28,090 --> 00:40:31,160 Ja siis alates MIDI faili Selle MIDI 2LY programmi 701 00:40:31,160 --> 00:40:34,930 saate luua Lily Tiigi faili, ja siis 702 00:40:34,930 --> 00:40:37,974 võib tekitada PDF skoori. 703 00:40:37,974 --> 00:40:39,390 Ja me peaks võtma pilk see. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Nii Connor ilmselt näidata kuidas märke sellest parem, 706 00:40:55,140 --> 00:41:02,570 kuid see on Frere Jacques nagu loodud mulle Euterpea. 707 00:41:02,570 --> 00:41:07,300 See on lihtsalt C. Ma oleks pidanud arvasin välja, mida häkkida see tegelikult. 708 00:41:07,300 --> 00:41:11,090 Aga see on torujuhtme kuidas sa seda, et. 709 00:41:11,090 --> 00:41:12,950 Räägime lähemalt LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Vaatame. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Kas sa mainida Loe Sa Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Oh yeah. 714 00:41:22,460 --> 00:41:23,480 Tutvu Loe Sa Haskell. 715 00:41:23,480 --> 00:41:24,410 See on ka ressursse. 716 00:41:24,410 --> 00:41:26,830 See, kuidas ma hakkasin õppida, ja see on suurepärane. 717 00:41:26,830 --> 00:41:27,580 Mitte loll õppimist. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Nii et see on online. 719 00:41:28,829 --> 00:41:34,760 Nii mees nimega [kuuldamatu] learnyouahaskell.com, tühikuid. 720 00:41:34,760 --> 00:41:37,065 Grammatika on haige. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: See on illustreeritud ka. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Mis on LilyPond? 723 00:41:39,440 --> 00:41:42,480 See on deklaratiivne programmeerimine keele muusika ladumiseks. 724 00:41:42,480 --> 00:41:45,480 Nii declarative-- saate mõtle asju nagu HTML, 725 00:41:45,480 --> 00:41:50,900 kus sa ei ole saying-- HTML ei saa öelda, kuidas veebibrauserid peaksid 726 00:41:50,900 --> 00:41:52,180 muuta lehekülgi samm-sammult. 727 00:41:52,180 --> 00:41:54,096 See on lihtsalt öeldes see on tekstiline kirjeldus 728 00:41:54,096 --> 00:41:56,100 mida sa tahad lehel nägema. 729 00:41:56,100 --> 00:41:59,310 >> Ja siis see on ka programmi mis koostab selle keele, 730 00:41:59,310 --> 00:42:02,300 või siis lugeda tema kohta ja siis tegelikult teeb ladumise teile, 731 00:42:02,300 --> 00:42:05,570 ja see sülitab välja need Imeline otsin PDF hinded. 732 00:42:05,570 --> 00:42:08,250 Samuti saate PNG või mis iganes. 733 00:42:08,250 --> 00:42:10,300 Hea võimalus mõelda Käesoleva on analoogiline 734 00:42:10,300 --> 00:42:16,620 on see, et LaTeX on omamoodi nagu LillyPond, kuid just tavaline ladumiseks. 735 00:42:16,620 --> 00:42:20,360 Nii et selle asemel of-- see ei ole WYSIWYG, mida näed 736 00:42:20,360 --> 00:42:22,960 Millised on teile, nagu, ütleme Finale on, või Sibelius, 737 00:42:22,960 --> 00:42:27,430 või Microsoft Word, kus saab sisestada reaalajas ja eelnõu asju reaalajas 738 00:42:27,430 --> 00:42:31,340 ja vaata muutused koheselt. 739 00:42:31,340 --> 00:42:32,140 >> See on tekst põhineb. 740 00:42:32,140 --> 00:42:35,290 Sa pead koguma oma hinded kasutades eraldi programm 741 00:42:35,290 --> 00:42:37,090 ja välja tulla PDF hiljem. 742 00:42:37,090 --> 00:42:43,320 See on natuke vähem mugav kasutada, kui olete 743 00:42:43,320 --> 00:42:46,520 üritan kirjutada otse arvesse skoor ja sa oled 744 00:42:46,520 --> 00:42:48,620 üritab kirjutada arvutis. 745 00:42:48,620 --> 00:42:50,830 Aga seal on palju eeliseid see. 746 00:42:50,830 --> 00:42:56,110 Üks, ta ei vaata palju kenamaks, sest LillyPond saab tegelikult 747 00:42:56,110 --> 00:42:58,210 võtta aega, et teha paigutusotsustel korralikult, 748 00:42:58,210 --> 00:43:02,380 Erinevalt Sibelius või Finale, mis on teha kahjustusega algoritme nii 749 00:43:02,380 --> 00:43:05,020 et nad saaksid kuvada asju reaalajas. 750 00:43:05,020 --> 00:43:07,660 >> Miks on LilyPond-- arvutigraafika on raske. 751 00:43:07,660 --> 00:43:10,535 Kui sa teed midagi muusika ja sa tahad kirjutada hinded, 752 00:43:10,535 --> 00:43:13,900 sa ei taha kirjutada kõike ise 753 00:43:13,900 --> 00:43:19,040 alustades kuidas juhtida staabid ja kuidas juhtida märkmikud. 754 00:43:19,040 --> 00:43:21,020 See on väga raske. See on olnud varem teinud. 755 00:43:21,020 --> 00:43:22,170 Sa oled hea. 756 00:43:22,170 --> 00:43:26,200 >> Kui soovid kasutada Finale või Sibelius, failivormingute jaoks need asjad 757 00:43:26,200 --> 00:43:30,180 on väga keeruline, ja sa ei saa tõesti neid kasutada programmiliselt. 758 00:43:30,180 --> 00:43:35,020 Võite avada Sibelius koos Finale ja minge File, Ekspordi PDF ise, 759 00:43:35,020 --> 00:43:37,600 Aga sa ei saa tõesti helistada, et skripti. 760 00:43:37,600 --> 00:43:40,440 LillyPond, võite helistada omadest skripte. 761 00:43:40,440 --> 00:43:44,397 Sa võid kergesti itereerima LillyPond LaTeX. 762 00:43:44,397 --> 00:43:47,230 Ma ei ole nii palju aega, et minna arvesse nende tehnoloogiate kohe, 763 00:43:47,230 --> 00:43:48,321 kuid nad on olemas. 764 00:43:48,321 --> 00:43:50,070 Kui te soovite vaadata arvesse LillyPond raamat, 765 00:43:50,070 --> 00:43:53,760 see on programm, mis on varustatud Sinu LillyPond jaotus, 766 00:43:53,760 --> 00:43:57,030 ja see on ette iterating LillyPond fragmendid LaTeX 767 00:43:57,030 --> 00:44:00,340 kui sa tahad midagi teha nagu suur muusikateaduse dokument 768 00:44:00,340 --> 00:44:02,289 näidetega, näiteks. 769 00:44:02,289 --> 00:44:04,580 Ja see on hea oskus elu kui sa teed midagi 770 00:44:04,580 --> 00:44:05,770 muusika, mitte ainult CS50. 771 00:44:05,770 --> 00:44:09,320 Olen kasutanud LillyPond kõik minu koosseisu projektid 772 00:44:09,320 --> 00:44:11,880 sest ma olin põhimõtteliselt vanem keskkoolis. 773 00:44:11,880 --> 00:44:13,455 >> Nii et siin on mõned lihtsad näited. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 See on põhimõtteliselt esindaja ja raskusaste 776 00:44:21,060 --> 00:44:23,481 et enamik inimesi ausad nad üritasid 777 00:44:23,481 --> 00:44:24,980 kasutada LilyPond lihtsaid projekte. 778 00:44:24,980 --> 00:44:29,519 See esimene on algusest kuni Urkukoraali Bachi. 779 00:44:29,519 --> 00:44:31,810 See alumine on väljavõte ühest oma tööd, 780 00:44:31,810 --> 00:44:34,650 ja see on lihtsalt seal näidata sa asjad [kuuldamatu] 781 00:44:34,650 --> 00:44:38,550 pannes mitmes reas sama personal, kuidas lüürilise undersetting toimib. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Lyric aluskihid on asi, mis on väga lihtne kasutada LilyPond eest koorimuusika. 784 00:44:46,110 --> 00:44:48,814 >> Ja nii siis seal on veel mõned keeruline näited siin. 785 00:44:48,814 --> 00:44:50,980 Kõik need on tehtud LilyPond ja nad teostatav. 786 00:44:50,980 --> 00:44:55,280 Esimene katkend on pärit [Kuuldamatu] poolt [kuuldamatu]. 787 00:44:55,280 --> 00:44:58,860 Ja see [kuuldamatu] alates tükk soolo bass 788 00:44:58,860 --> 00:45:03,550 flööt poolt [kuuldamatu] kes on longtime-- kes 789 00:45:03,550 --> 00:45:07,101 oli kauaaegne liige muusikaosakond siin, ma arvan. 790 00:45:07,101 --> 00:45:08,600 Ma ei tea, kus ta on läinud ära. 791 00:45:08,600 --> 00:45:12,410 Aga ta oli nõunik Harvard Heliloojate Liit pikka aega. 792 00:45:12,410 --> 00:45:13,530 Wonderful mees. 793 00:45:13,530 --> 00:45:16,920 Ja ta kirjutab muusikat, mis on väga keeruline märke, et LillyPond 794 00:45:16,920 --> 00:45:20,500 saab siiski hakkama väga kenasti. 795 00:45:20,500 --> 00:45:26,030 >> Nii lihtsalt teile tunnet, mida see asi võimete are-- nii 796 00:45:26,030 --> 00:45:28,960 sisemust LillyPond on väga keerulised. 797 00:45:28,960 --> 00:45:31,060 Ja te võite seda kasutada kaua, sealhulgas 798 00:45:31,060 --> 00:45:32,520 mõned päris keeruline asju, ilma tõesti 799 00:45:32,520 --> 00:45:34,060 võttes teada palju neid. 800 00:45:34,060 --> 00:45:38,720 Aga põhiline mõte on selles, et madalaimale tasemele, aatomid LillyPonds 801 00:45:38,720 --> 00:45:39,970 on märkmeid. 802 00:45:39,970 --> 00:45:42,761 Lisad sisaldavad kontekstis nimetatakse hääli. 803 00:45:42,761 --> 00:45:44,510 Nii hääle kontekstis põhimõtteliselt vastab 804 00:45:44,510 --> 00:45:47,410 ühe rea polüfoonia. 805 00:45:47,410 --> 00:45:49,410 Ja siis kontekstis saab sisalduvad hierarhiliselt 806 00:45:49,410 --> 00:45:53,590 kõrgema taseme need, mis esindavad staabid kaotusseisu 807 00:45:53,590 --> 00:45:56,750 või suurematesse rühmadesse, nagu klaver staabid või koori staabid, 808 00:45:56,750 --> 00:45:58,990 ja siis lõpuks Kogu skoor kontekstis. 809 00:45:58,990 --> 00:46:02,260 Ja te võite tegelikult hõlmab Mitme hinded raamatusse. 810 00:46:02,260 --> 00:46:05,770 >> Ja igas kontekstis on arvu kinnitatud graveerijad. 811 00:46:05,770 --> 00:46:08,340 Kui sa vaatad läbi sisu kontekstis 812 00:46:08,340 --> 00:46:14,410 ja printida teatud sümbol või teatud liiki sümbolid nagu vaja. 813 00:46:14,410 --> 00:46:17,840 Nii et iga hääl kontekstis seal on [kuuldamatu] märkmed 814 00:46:17,840 --> 00:46:24,270 graveerija, et on põhimõtteliselt funktsiooni või objekt, mis kirjutab kõik märkus 815 00:46:24,270 --> 00:46:26,290 pead paremale osad lehel. 816 00:46:26,290 --> 00:46:29,510 Siis on lõhki graveerija, mis kirjutab välja clefts töötajate kohta. 817 00:46:29,510 --> 00:46:31,517 Siis on metronoom märgi graveerija, et 818 00:46:31,517 --> 00:46:33,100 kirjutab välja metronoom kaubamärkide skoor. 819 00:46:33,100 --> 00:46:36,410 Ja kõik need sobivad päris hästi hierarhia. 820 00:46:36,410 --> 00:46:39,500 Ja see on väga, väga, väga kohandatav, mis teil on vaja 821 00:46:39,500 --> 00:46:42,880 Kui sa tahad saada asju. 822 00:46:42,880 --> 00:46:45,730 >> Nii et kõik kontekstides on palju erinevaid atribuute 823 00:46:45,730 --> 00:46:52,410 et saate muuta kõike alates vahed erinevate fontide 824 00:46:52,410 --> 00:46:54,942 Valiku suurused asju. 825 00:46:54,942 --> 00:46:56,900 Kui sa tahad teha isegi keerulisem asju, 826 00:46:56,900 --> 00:46:59,210 seal on sisseehitatud skript keel. 827 00:46:59,210 --> 00:47:01,820 Nad kasutavad süsteemi, mis on dialekt Lisp. 828 00:47:01,820 --> 00:47:04,960 Need ilmselt ei sulle midagi. 829 00:47:04,960 --> 00:47:06,900 Aga põhimõtteliselt, kava teise funktsionaalse 830 00:47:06,900 --> 00:47:09,500 programmeerimiskeele suuremal või vähemal määral. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: Tie-in. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Jah. 833 00:47:12,690 --> 00:47:15,390 See on hea tie-in, ma arvan. 834 00:47:15,390 --> 00:47:20,150 Ja seda kasutatakse õpetamise keel, tegelikult, alla Mass Ave. MIT. 835 00:47:20,150 --> 00:47:26,590 Ja see on väga mugav LillyPond erinevat tehnilistel põhjustel. 836 00:47:26,590 --> 00:47:30,317 >> Ja kui sa tahad teha lihtsaid tweaks sõltub conditionals, 837 00:47:30,317 --> 00:47:32,900 jaoks example-- seal teatud seisund skoor mis on täidetud, 838 00:47:32,900 --> 00:47:36,495 teha muudatusi, et paigutus või whatnot-- siis 839 00:47:36,495 --> 00:47:37,620 need võimalused on olemas. 840 00:47:37,620 --> 00:47:38,667 Nad on keeruline. 841 00:47:38,667 --> 00:47:40,250 Nii et siin on päris lihtne koodi proovi. 842 00:47:40,250 --> 00:47:43,810 See on viis rida. 843 00:47:43,810 --> 00:47:46,120 Põhimõtteliselt ma määratlemisel kaks staabid. 844 00:47:46,120 --> 00:47:46,904 See on 3/4. 845 00:47:46,904 --> 00:47:48,695 Esimene töötajad on lisatud tempo märk, 846 00:47:48,695 --> 00:47:51,110 kuid mis on tegelikult toimub minna kogu tulemus, 847 00:47:51,110 --> 00:47:54,960 sest tempo märgid olete jaole. 848 00:47:54,960 --> 00:47:59,044 Metronoom märk graveerija on lisatud skoor kontekstis. 849 00:47:59,044 --> 00:48:01,460 On erinevaid võtmeid, sest [kuuldamatu] graveerija 850 00:48:01,460 --> 00:48:02,710 on lisatud staabid. 851 00:48:02,710 --> 00:48:04,441 Tegelikult võite seda teha on. 852 00:48:04,441 --> 00:48:06,190 Proovi kirjutasin on tegelikult C-duur, 853 00:48:06,190 --> 00:48:07,990 aga see on lihtsalt näitama sul võib olla 854 00:48:07,990 --> 00:48:09,570 erinevaid võtmeid erinevate staabid. 855 00:48:09,570 --> 00:48:15,710 Ja põhiline süntaks on teile kirjutan tähele nimed E, F, G, mida iganes. 856 00:48:15,710 --> 00:48:18,910 Kui sa tahad teha alteratsioonimärgid, sa liidet või ES. 857 00:48:18,910 --> 00:48:22,640 See on Hollandi Muusikateaduse konventsioone. 858 00:48:22,640 --> 00:48:28,290 >> Ja teha oktaavi hüpped, sa pead kasutama Nende märgistuste, koma või ülakoma. 859 00:48:28,290 --> 00:48:30,580 Suhteline tähendab lihtsalt mida iganes sa pead tähele, 860 00:48:30,580 --> 00:48:34,080 see automaatselt plaec on oktaav lähim eelmine. 861 00:48:34,080 --> 00:48:37,624 Ja kui sa tahad hüpata üle fifth-- öelda viiendik või more-- 862 00:48:37,624 --> 00:48:39,165 siis sa pead kasutama [kuuldamatu]. 863 00:48:39,165 --> 00:48:42,580 Aga muidu, sa ei pea täpsustada oktaavi iga noot. 864 00:48:42,580 --> 00:48:46,130 >> Ja suhteline C, peaminister ja C, sa lihtsalt määrata keset C 865 00:48:46,130 --> 00:48:48,630 ja C alust, eriti esimestest nootidest. 866 00:48:48,630 --> 00:48:55,020 Siis on need staabid, et korraldada Nende kahe hääle või proovid muusika, 867 00:48:55,020 --> 00:48:56,730 ja teil on tulemus. 868 00:48:56,730 --> 00:48:58,440 Ja see näeb välja selline. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Kui soovite võtta aeg kopeerida, et proovi LillyPond 871 00:49:05,380 --> 00:49:07,530 kood eelmise lükake siia alla, ja sa 872 00:49:07,530 --> 00:49:09,030 saab kirjutada seda LillyPond ise. 873 00:49:09,030 --> 00:49:11,280 Ma tean, et meil midagi mis näeb välja palju nagu see. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Nii on teine ​​tehnoloogia nimetatakse Muusika XML säilitada 876 00:49:19,610 --> 00:49:22,030 täiesti erinevad inimesed. 877 00:49:22,030 --> 00:49:28,150 XML on tekstiline andmed structure-- ma ei peaks ütlema andmed structure-- öelda 878 00:49:28,150 --> 00:49:29,580 metafoor kaart omamoodi. 879 00:49:29,580 --> 00:49:33,800 Ja see on kavandatud korraldada hierarhiliste andmete väga hästi. 880 00:49:33,800 --> 00:49:37,050 HTML, näiteks on teatud tüüpi XML. 881 00:49:37,050 --> 00:49:41,090 Ja te võite öelda, XML, sest nad olid kõik noolsulgudes ja nurk 882 00:49:41,090 --> 00:49:44,700 sulg kaldkriipsuga märgid et näidata andmeväljad. 883 00:49:44,700 --> 00:49:47,390 >> Ma ei ole koodi näiteks Music XML. 884 00:49:47,390 --> 00:49:50,450 Leiate selle ise. 885 00:49:50,450 --> 00:49:53,735 Põhimõtteliselt põhjust võiksite kasutada XML nagu vaheetapp 886 00:49:53,735 --> 00:49:55,980 on, esiteks, see on andmevahetuse vorming 887 00:49:55,980 --> 00:50:02,301 jaoks põhimõtteliselt every-- ma ei peaks ütlema iga, kuid on palju erinevaid skoor 888 00:50:02,301 --> 00:50:02,800 kirjanikud. 889 00:50:02,800 --> 00:50:04,966 Nii et kui te kirjutate Muusika XML, mitte ainult ei LillyPond 890 00:50:04,966 --> 00:50:08,080 lugeda abiga see auxilary programmi nimega Music XML Ly, 891 00:50:08,080 --> 00:50:11,360 vaid ka Finale saab lugeda see, Sibelius seda lugeda. 892 00:50:11,360 --> 00:50:14,770 Sõltuvalt sellest, kuidas teie sisemine objekti hierarhia töötab esindavad muusika, 893 00:50:14,770 --> 00:50:18,820 see võib olla lihtsam kirjutada Muusika XML kui LillyPond 894 00:50:18,820 --> 00:50:22,410 ja lihtsalt tugineda Muusika XML Ly teha muutmist. 895 00:50:22,410 --> 00:50:24,282 >> Ma ei usu, et [kuuldamatu] on muusika XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: see ei ole. 897 00:50:25,490 --> 00:50:26,340 Keegi kallal, kuigi. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea ei ole Muusika XML väljund funktsioon veel. 900 00:50:31,040 --> 00:50:35,340 Kui soovite lõpliku projekti idee, võibolla võtke poisid 901 00:50:35,340 --> 00:50:38,620 et Stephen teab, ja nad võiksid kasutada oma abi. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Ma armastan seda. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Ka põhimõtteliselt, Iga programmeerimiskeelte 904 00:50:43,450 --> 00:50:46,610 mis on väärt oma soolast Juba on XML raamatukogu 905 00:50:46,610 --> 00:50:51,030 siis võite sisemiselt teisendada kõik oma muusikat mingi objekti 906 00:50:51,030 --> 00:50:54,120 et XML raamatukogu saab kirjutada meelde, et oleks vaja vähem 907 00:50:54,120 --> 00:50:57,470 muudatusi oma sisemist struktuuri mingil muusika objektid 908 00:50:57,470 --> 00:51:00,310 tahan kirjutada kui kirjutamist otse LillyPond oleks. 909 00:51:00,310 --> 00:51:04,380 Siis lihtsalt printida välja XML XML raamatukogudesse oma keel, 910 00:51:04,380 --> 00:51:07,260 mis tagab, et see on süntaktiliselt õigesti ja kõike, 911 00:51:07,260 --> 00:51:08,720 ja seejärel teisendada see LillyPond. 912 00:51:08,720 --> 00:51:11,060 Nii tehnoloogia võiksite uurima, kui sa teed midagi 913 00:51:11,060 --> 00:51:11,650 nagu nii. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Kuuldamatu], teise auxilarry tehnoloogia. 916 00:51:16,370 --> 00:51:21,700 See on põhimõtteliselt Tech Works või Tech Studio LillyPond. 917 00:51:21,700 --> 00:51:25,380 Seega pakub abi süntaks, malle 918 00:51:25,380 --> 00:51:28,770 erinevat ühise kombinatsioone vahendeid. 919 00:51:28,770 --> 00:51:32,780 See võimaldab poolitatud ekraanil vaatamise nii sul võib olla oma koodi ühes aknas 920 00:51:32,780 --> 00:51:37,350 ja PDF teises aknas ja kliki kohti PDF 921 00:51:37,350 --> 00:51:40,650 hüpata vastavale täpid lähtekoodi. 922 00:51:40,650 --> 00:51:45,330 See on kasulikum, kui sa oled tegelikult kirjalikult LillyPond failid ise 923 00:51:45,330 --> 00:51:47,400 kui siis, kui sa oled teeniva neid programmiliselt. 924 00:51:47,400 --> 00:51:51,230 Aga jälle, see on midagi kasulikku on. 925 00:51:51,230 --> 00:51:51,970 >> Hea. 926 00:51:51,970 --> 00:51:55,860 Teine resources-- ma lihtsalt läbida seda väga kiiresti. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond on väga hea dokumentatsiooni oma kodulehel. 928 00:52:01,270 --> 00:52:02,270 Nad on ka juhendaja. 929 00:52:02,270 --> 00:52:03,478 Nad on syntaksiviite. 930 00:52:03,478 --> 00:52:07,010 Nad on sadu klippe erinevat väikestest asjadest 931 00:52:07,010 --> 00:52:09,930 yo vajada teha, et näidata erinevaid võimalusi. 932 00:52:09,930 --> 00:52:12,250 Kui soovid kasutada skriptimiskeel 933 00:52:12,250 --> 00:52:14,740 või laialdasemalt kohandused, siis pole 934 00:52:14,740 --> 00:52:16,730 siseosad viide, et URL. 935 00:52:16,730 --> 00:52:21,950 Kui soovid kasutada Muusika XML, seal on et URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> Ja siis, kui teil on vaja õppida kava sest sa tegelikult soovid kasutada 937 00:52:27,960 --> 00:52:30,960 skriptimise rajatiste LillyPond, siis seal on [kuuldamatu] nimetatakse 938 00:52:30,960 --> 00:52:32,918 Struktureeritud tõlgendamine arvutiprogrammide, 939 00:52:32,918 --> 00:52:35,820 mis ei ole ainult teise Suurim CS õpik kunagi written-- 940 00:52:35,820 --> 00:52:39,770 Leia mind hiljem, kui tahad teada ma arvan, et suurim ühe on-- 941 00:52:39,770 --> 00:52:43,580 aga see on ka väga hea Sissejuhatus keele õige. 942 00:52:43,580 --> 00:52:46,630 Te ei pea enam kui Esimese paari lõigud. 943 00:52:46,630 --> 00:52:47,827 >> Ja see ongi kõik. 944 00:52:47,827 --> 00:52:48,410 Kas küsimusi on? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> Üliõpilane: Kust alla laadida Sinu loodud Frere Jacques 947 00:52:57,972 --> 00:53:01,050 nii et ma ei pane see minu iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Noh, võite kirjutada välja mõned wav faili Euterpea. 949 00:53:07,574 --> 00:53:08,490 Ja sul on kood. 950 00:53:08,490 --> 00:53:10,000 See aasta github. 951 00:53:10,000 --> 00:53:15,590 Tee oma variatsioonid Frere Jacques poolt CS50 taru meelt. 952 00:53:15,590 --> 00:53:17,095 See oleks tore. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Keegi teine? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Vajame parem bass trumm, liiga. 955 00:53:20,261 --> 00:53:21,935 See on tõesti halb. 956 00:53:21,935 --> 00:53:26,565 >> Üliõpilane: Euterpea ei ole mitte ainult koosseisu poolel, kuid signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Jah. 958 00:53:27,440 --> 00:53:30,100 Tegelikult tööd ma tegi Euterpea kui ma 959 00:53:30,100 --> 00:53:33,450 võttis see-- seal on magistriõppes Yale, et 960 00:53:33,450 --> 00:53:35,900 kasutab see-- oli heli sünteesi. 961 00:53:35,900 --> 00:53:39,810 Nii et tõesti kena viis kasutades nooli 962 00:53:39,810 --> 00:53:46,150 ja mõned märke nägime kohta komponeerimise koos signaali funktsioone. 963 00:53:46,150 --> 00:53:50,610 Eelkõige bassi kõige neist on lihtsalt siinus. 964 00:53:50,610 --> 00:53:54,240 Aga kui te hakkate neid in imelik programmilisi võimalusi, 965 00:53:54,240 --> 00:54:00,010 saad hull heli mõju, nagu imelik kaskaadid. 966 00:54:00,010 --> 00:54:04,640 Võite luua väga sõmer kõlab palju ümbersuunamine. 967 00:54:04,640 --> 00:54:07,730 >> Ma tegin projekti granuleeritud süntees, mis on 968 00:54:07,730 --> 00:54:12,290 kusagil vahepeal FM ja proovide võtmist. 969 00:54:12,290 --> 00:54:15,230 Võtad väga väike, vähe proove ja seejärel 970 00:54:15,230 --> 00:54:20,440 kombineerima need mingisugune modulaator ja luua rikkama heli. 971 00:54:20,440 --> 00:54:24,900 Samuti tegi füüsilise modelleerimine, nii üritan mõelda füüsika 972 00:54:24,900 --> 00:54:29,410 ja psühhoakustikast midagi sellist trompet, ja mõtlema, kuidas 973 00:54:29,410 --> 00:54:32,320 heli on kopsakas off kella trompet 974 00:54:32,320 --> 00:54:35,200 ja akustika ruumi ja modelleerimine 975 00:54:35,200 --> 00:54:40,195 et põhiliste ostsillaatorid. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Tänu nii palju. 978 00:54:48,940 --> 00:54:50,140 Tänan, et tulid. 979 00:54:50,140 --> 00:54:52,400 Ja ma olen alati valmis võtta küsimustele email-- 980 00:54:52,400 --> 00:54:55,020 connorharris@college.harvard.edu. 981 00:54:55,020 --> 00:54:57,020 >> STEPHEN KREWSON: Jah. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Cool. 984 00:55:00,360 --> 00:55:01,667