1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Hi. 3 00:00:05,930 --> 00:00:06,820 Mwen se Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Mwen se yon CA CS50 nan Harvard. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Mwen Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Mwen se yon TF pou CS50 nan Yale. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: E nou pwal pale sou kèk teknoloji ki ou ta ka 8 00:00:15,790 --> 00:00:18,880 vle sèvi ak si w ap enterese nan fè yon pwojè final oswa vrèman 9 00:00:18,880 --> 00:00:20,920 anyen ak mizik. 10 00:00:20,920 --> 00:00:24,400 Nou ap ale nan dwe konsantre sou premye yon lang programmation rele Haskell. 11 00:00:24,400 --> 00:00:26,280 Li se yon fonksyonèl lang, se konsa paradigm nan 12 00:00:26,280 --> 00:00:29,620 se yon bagay ki diferan de C oswa PHP oswa lòt lang enperatif 13 00:00:29,620 --> 00:00:33,450 ke ou te itilize deja, epi sitou sou yon bibliyotèk ekri nan Haskell 14 00:00:33,450 --> 00:00:40,240 rele Euterpea, sa ki ka ede moun ak ekri mizik fonksyonèl, 15 00:00:40,240 --> 00:00:40,780 fondamantalman. 16 00:00:40,780 --> 00:00:43,400 Apre sa, Stephen ap mache ou atravè yon gwo egzanp sou sa. 17 00:00:43,400 --> 00:00:46,423 >> Apre sa, mwen pral entwodui ou nan yon bagay yo rele LillyPond, ki 18 00:00:46,423 --> 00:00:48,370 se yon teknoloji pou mizik Tipografi. 19 00:00:48,370 --> 00:00:50,830 Li nan sòt de tankou kapòt an latèks pou mizik si nenpòt nan ou 20 00:00:50,830 --> 00:00:57,530 te itilize kapòt an latèks pou klas matematik oswa lòt klas P seri oswa sa ki gen ou. 21 00:00:57,530 --> 00:01:00,440 Se konsa, mwen pral ban nou an, ankò, kèk egzanp senp nan ki 22 00:01:00,440 --> 00:01:03,640 ak pwen ou nan jeneral la direksyon nan kèk pi bon resous yo. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: Nan de sa, nou te panse li 24 00:01:04,319 --> 00:01:06,720 ta dwe fre yo mete kanpe yon ti kras nan sijesyon 25 00:01:06,720 --> 00:01:10,780 nan direksyon yon tiyo ant Euterpea-pwodwi MIDI dosye 26 00:01:10,780 --> 00:01:13,910 nan LillyPond, se konsa nou bay kèk enstriksyon sou Scripts 27 00:01:13,910 --> 00:01:16,310 fè sa ki bay ak LillyPond 28 00:01:16,310 --> 00:01:19,160 jis kenbe li sous louvri epi pou yo jwenn yon tiyo prale. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Yon fwa ankò, nou ta dwe mete aksan sou, 30 00:01:20,910 --> 00:01:23,100 de teknoloji sa yo, ou pa gen yo sèvi ak yo ansanm. 31 00:01:23,100 --> 00:01:25,370 Yo pa ap fèt nan travay ansanm, menm si yo fè trè joliman. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Dwa. 33 00:01:26,362 --> 00:01:30,116 Ak totalman lib. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Se konsa, Remèsiman, jis li sa. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: duman te note. 36 00:01:33,406 --> 00:01:36,360 Mèsi a moun jan. 37 00:01:36,360 --> 00:01:39,180 Sa a mwen pral retade ankò sou jis pou yon moman. 38 00:01:39,180 --> 00:01:41,560 Pwosesis la enstalasyon se yon ti jan ti kras difisil. 39 00:01:41,560 --> 00:01:45,420 Nou te yon li m 'sou GitHub nan ke ou ka pran yon gade nan. 40 00:01:45,420 --> 00:01:47,840 Jis voye yon imèl ba m 'si ou gen nenpòt kesyon. 41 00:01:47,840 --> 00:01:52,829 Men, nou pral kouri sa a anba sipozisyon an ke sa a ap travay pou tout moun. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: Men, si ou pa kapab jwenn LillyPond nan travay, pa gen okenn kontra gwo. 43 00:01:55,620 --> 00:02:00,139 Gen nan pa gen konpilasyon viv ki pral patisipe, omwen sou fen m 'yo. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell ak LillyPond ta dwe tou de gen enstalatè. 45 00:02:02,930 --> 00:02:08,497 Se Euterpea telechaje kòm yon pake, sou sa ak pou fè. 46 00:02:08,497 --> 00:02:10,080 Se konsa, nou ap pale de mizik òdinatè. 47 00:02:10,080 --> 00:02:12,990 Lè sa a se jis yon trè View 50,000-pye. 48 00:02:12,990 --> 00:02:15,700 Genyen yon aspè kèk diferan nan li. 49 00:02:15,700 --> 00:02:18,120 Lè sa a se ki graj epi li se ale nan fènwa kèk detay. 50 00:02:18,120 --> 00:02:22,090 Men, nou te ka panse a yon bagay tankou algoritmik konpozisyon, 51 00:02:22,090 --> 00:02:24,920 lè l sèvi avèk algoritm, lè l sèvi avèk kòd, jenere 52 00:02:24,920 --> 00:02:30,280 kèk kalite de- petèt yon pwòp tèt ou-menm jan an sekans nan nòt, oswa petèt nòt 53 00:02:30,280 --> 00:02:33,330 anba kèk contrainte. 54 00:02:33,330 --> 00:02:35,350 Lè sa a, moun ta ka fèt oswa entèprete 55 00:02:35,350 --> 00:02:38,390 ak enstriman mizik analòg oswa yon bagay tankou sa. 56 00:02:38,390 --> 00:02:42,010 Men, konpozisyon sa a te fè algorithmically. 57 00:02:42,010 --> 00:02:45,120 >> Men, nan kou, petèt zòn nan nan mizik òdinatè oswa mizik dijital 58 00:02:45,120 --> 00:02:48,870 nou ap plis abitye ak se dijital sentèz son oswa dijital pran echantiyon 59 00:02:48,870 --> 00:02:51,160 ak dijital anrejistreman. 60 00:02:51,160 --> 00:02:55,650 Yon anpil nan enstriman mizik dijital yo fè nan dijital pran echantiyon. 61 00:02:55,650 --> 00:03:00,110 An reyalite, nou pral lè l sèvi avèk youn nan moun ki nan fòm la nan yon bibliyotèk font son pita. 62 00:03:00,110 --> 00:03:02,850 >> Men, gen nan tou yon bagay rele dijital sentèz ki soti 63 00:03:02,850 --> 00:03:08,650 nan '70s yo ak nan' an reta 80s yo ak Yamaha ak Jan Chowning nan Stanford 64 00:03:08,650 --> 00:03:11,990 fè sentèz FM oswa Sentèz modulation frekans, 65 00:03:11,990 --> 00:03:15,100 kote ou te gen yon konpayi asirans siyal ak yon siyal modulation 66 00:03:15,100 --> 00:03:18,270 tou de nan spectre an odyo. 67 00:03:18,270 --> 00:03:22,570 Men, sa ki nou ap konsantre sou jodi a se yon bagay yo rele MIDI, 68 00:03:22,570 --> 00:03:25,040 ak nan kou, algoritmik konpozisyon. 69 00:03:25,040 --> 00:03:30,940 >> Nou pa pwal fè enstriman mizik, men nou ap olye ale nan fè kèk mizik, 70 00:03:30,940 --> 00:03:33,940 ak Lè sa a ki pral debarase entèprete pa kèk enstriman mizik ki 71 00:03:33,940 --> 00:03:38,300 se Conform nan la jeneral MIDI estanda. 72 00:03:38,300 --> 00:03:40,830 Se konsa, sa ki nan MIDI? 73 00:03:40,830 --> 00:03:45,550 Mwen pa pral jwenn twò gwo twou san fon nan li, men MIDI se pwotokòl transfè done. 74 00:03:45,550 --> 00:03:49,250 Li se yon kalite yon gid atravè konpayi diferan ak endistri 75 00:03:49,250 --> 00:03:52,250 pou òganize son oswa plak. 76 00:03:52,250 --> 00:03:54,170 Se konsa, nou ap wè ke gen nan yon estanda MIDI 77 00:03:54,170 --> 00:03:57,500 pou tout pèkisyon nan diferan son ak rekòmandasyon MIDI 78 00:03:57,500 --> 00:04:01,360 pou tout kalite sa yo diferan nan Synth oswa diferan kalite tout enstriman an 79 00:04:01,360 --> 00:04:03,650 gwoup nan yon òkès, yo di. 80 00:04:03,650 --> 00:04:08,916 >> Ou se pwobableman abitye avèk 0 a 127 mesaj MIDI. 81 00:04:08,916 --> 00:04:12,920 Yon siyal MIDI se tipikman yon sèl ti jan ki endike 82 00:04:12,920 --> 00:04:16,130 si li nan yon done oswa yon pake estati, ak Lè sa a, gen nan 83 00:04:16,130 --> 00:04:18,589 sèt Bits nan yon siyal. 84 00:04:18,589 --> 00:04:21,430 Ak sa yo ka kontwole tout bagay soti nan volim 85 00:04:21,430 --> 00:04:25,330 nan aksyon an oswa presyon sou yon kle patikilye 86 00:04:25,330 --> 00:04:29,400 si w ap fè ak yon MIDI kontwolè menm jan tou, nan kou, 87 00:04:29,400 --> 00:04:31,250 nòt. 88 00:04:31,250 --> 00:04:33,450 Ak nan kou, gen MIDI te trè itil, 89 00:04:33,450 --> 00:04:37,550 paske li nan yon fason yo fil ansanm oswa chèn flè magerit 90 00:04:37,550 --> 00:04:41,570 yon pakèt moun sou MIDI aparèy kenkayri. 91 00:04:41,570 --> 00:04:44,050 Mwen gen sèt oswa uit tounen nan kay mwen an. 92 00:04:44,050 --> 00:04:46,610 Li vin reyèlman konplike, men li la reyèlman gen anpil pouvwa. 93 00:04:46,610 --> 00:04:47,460 Apre sa, li vrèman fin vye granmoun. 94 00:04:47,460 --> 00:04:51,117 Li nan soti nan '80s yo byen bonè, yo li vrèman bèl ak piti. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Yeah. 96 00:04:51,950 --> 00:04:54,230 Tout nintendo a klasik jwèt videyo ta pwobableman 97 00:04:54,230 --> 00:04:56,088 gen dosye MIDI pou mizik, pou egzanp. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Isit la nan yon egzanp sou MIDI jeneral, 100 00:05:01,740 --> 00:05:06,520 ki montre MIDI kòm yon kalite nan pwotokòl jeneral. 101 00:05:06,520 --> 00:05:13,280 Apre sa, mwen panse ke nou ka panse a nan diferans ki genyen ant spesifikasyon la 102 00:05:13,280 --> 00:05:17,830 ke ta dwe gen yon bagay tankou sa yo enstriman son ak aktyèl la 103 00:05:17,830 --> 00:05:21,740 realizasyon nan tout sa yo enstriman mizik son nan yon font son oswa yon MIDI patikilye 104 00:05:21,740 --> 00:05:25,740 synthesizer tankou se te diferans ki genyen ant petèt yon typeface-- ki di, 105 00:05:25,740 --> 00:05:30,350 an jeneral, sa a se desen an nan fason sa a an patikilye ki reprezante 106 00:05:30,350 --> 00:05:35,907 characters-- ak yon font patikilye ki gen yon gwosè espesifik ak tenbr, 107 00:05:35,907 --> 00:05:37,240 ak gen nan realizasyon nan the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Petèt yon pi bon konparezon ta 109 00:05:39,156 --> 00:05:43,430 gen estanda nan Unicode says-- li bay yon PO bay chak karaktè, ak reyèlman 110 00:05:43,430 --> 00:05:46,830 chak ak lang nan mond lan, oswa yon seri vas nan Scripts nan lang 111 00:05:46,830 --> 00:05:51,310 nan mond lan, ak Lè sa a sa yo se rann nan yon bagay grafik 112 00:05:51,310 --> 00:05:53,710 pa plizyè pakè font. 113 00:05:53,710 --> 00:05:56,630 Apre sa, evidamman, ou ka panse a MIDI kòm Unicode a son. 114 00:05:56,630 --> 00:06:03,250 Apre sa, li nan jis yon lis de- yon gwo kouran nan evènman ak enstriman mizik ak etajèr, 115 00:06:03,250 --> 00:06:06,090 epi ou gen gen yon separe pwogram, tankou yon caractere, 116 00:06:06,090 --> 00:06:08,537 rann ki nan yon bagay sa a, se Acoustics. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Se konsa, poukisa Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell se yon pwogram fonksyonèl lang, trè avanse, 120 00:06:19,110 --> 00:06:22,770 trè diferan de C, trè diferan de PHP. 121 00:06:22,770 --> 00:06:28,120 Epi nou ap ale nan wè ke gen nan yon fasilite nan konpozisyon fonksyon nan Haskell 122 00:06:28,120 --> 00:06:37,640 ki pral pèmèt nou briz a konpozisyon oswa tape moute, transkripsyon, 123 00:06:37,640 --> 00:06:42,160 yon bagay tankou FRERE Jacques, chante sa a ki senp 124 00:06:42,160 --> 00:06:46,815 gen yon anpil nan pati nan li ki se pwòp tèt ou-menm jan an oswa repete. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Se konsa, sa a pral kèk nan motivasyon an pou poukisa 127 00:06:53,250 --> 00:06:59,400 nou ap lè l sèvi avèk Haskell, nan ki fonksyon se sitwayen premye klas. 128 00:06:59,400 --> 00:07:01,120 >> Apre sa, mwen te vle pou yon ekstansyon pou sa a yon ti kras. 129 00:07:01,120 --> 00:07:08,800 Li se yon ti jan pi fasil yo notate FRERE Jacques nan Haskell. 130 00:07:08,800 --> 00:07:12,100 Men, e si nou te vle ajoute yon pati tanbou a li? 131 00:07:12,100 --> 00:07:17,320 E si nou te vle pou yo eseye fè yon bagay tankou yon Roland 808 oswa 909 tanbou 132 00:07:17,320 --> 00:07:20,970 machin ki kote ou gen sou 16 etap diferan? 133 00:07:20,970 --> 00:07:24,590 Anjeneral sa yo, se te panse nan nòt kòm 16th. 134 00:07:24,590 --> 00:07:28,640 Epi ou ka kontwole mondyal la tèmpo, epi ou ka chwazi soti 135 00:07:28,640 --> 00:07:34,620 yon pakèt moun sou diferan pati pèkisyon a bas tanbou, se yon bat, pèlen diferan, 136 00:07:34,620 --> 00:07:37,540 ouvè ak fèmen chapo segondè sou sa yo sòt de chanèl, 137 00:07:37,540 --> 00:07:41,600 ak Lè sa a ou ka EQ oswa ajiste volim yo. 138 00:07:41,600 --> 00:07:45,290 >> Epitou, n ap wè yon fason bèl nan Haskell a reprezante etap sa a 139 00:07:45,290 --> 00:07:48,810 sekansyèl ak nan tout divès kalite bagay sa yo fre nan Haskell 140 00:07:48,810 --> 00:07:53,100 nou ka fè ak génération lis ak filtraj sou lis, 141 00:07:53,100 --> 00:07:56,060 kat sou lis, kat fonksyon sou lis. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 Ak yon ekskiz rapid. 144 00:08:00,760 --> 00:08:05,300 Sa a se yon trè supèrfisyèl ak chema tro rapid 145 00:08:05,300 --> 00:08:07,620 nan kèk nan aspè yo a Haskell ak Euterpea, 146 00:08:07,620 --> 00:08:11,760 ki se yon domèn ki espesifik embedded ak lang ekri 147 00:08:11,760 --> 00:08:14,970 nan Haskell pou kalite mizik. 148 00:08:14,970 --> 00:08:17,350 Se konsa, tanpri tcheke deyò Kòd sou entènèt. 149 00:08:17,350 --> 00:08:22,404 Dife moute GHCI, ki se Glasgow a Haskell konpilateur Entèprèt. 150 00:08:22,404 --> 00:08:24,320 Apre sa, mwen pral fè kèk bagay sa yo nan yon ti jan 151 00:08:24,320 --> 00:08:25,880 konsa ou ka wè ki jan li fè. 152 00:08:25,880 --> 00:08:31,021 >> Lè sa a pèmèt ou chaje nan ak the-- sentaks la se kolon ak Lè sa a 153 00:08:31,021 --> 00:08:31,520 lòd la. 154 00:08:31,520 --> 00:08:33,510 Ou ka chaje nan dosye. 155 00:08:33,510 --> 00:08:36,840 Ou kapab sèvi ak browse sou sa yo dosye yo wè tout fonksyon yo ki 156 00:08:36,840 --> 00:08:39,169 egziste nan yon modil patikilye. 157 00:08:39,169 --> 00:08:43,850 Lè sa a, jan nou pral wè, kalite ak kalite klas yo, se pou enpòtan nan Haskell, 158 00:08:43,850 --> 00:08:48,850 se konsa ou ka toujou check-- espesyalman si w ap k ap travay nan yon nouvo DSCL 159 00:08:48,850 --> 00:08:51,600 tankou sa a, ki sa ki yon kalite mizik? 160 00:08:51,600 --> 00:08:55,114 Mwen konnen sou fason nimerik la kalite travay nan Haskell, 161 00:08:55,114 --> 00:08:56,530 men mwen pa konnen anpil sou mizik. 162 00:08:56,530 --> 00:09:01,280 Men, ou ka eksplore chemen an, yo ap defini lè l sèvi avèk sa a t pa oswa kalite lòd 163 00:09:01,280 --> 00:09:04,577 ak Lè sa a rele nan yon patikilye fonksyon oswa yon objè done. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Yeah. 165 00:09:05,410 --> 00:09:09,820 Si ou te panse ak rezone C te hardass sou kalite, 166 00:09:09,820 --> 00:09:11,230 ou pa gen okenn lide sou Haskell. 167 00:09:11,230 --> 00:09:14,230 Bagay nan bon sou Haskell se ke si ou kapab jwenn kòd ou a te rekeyi 168 00:09:14,230 --> 00:09:16,790 epi si chèk Haskell kalite, li la pwobableman dwa, 169 00:09:16,790 --> 00:09:18,675 paske sistèm nan di ki kalite se konsa strik. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Yeah. 171 00:09:20,090 --> 00:09:21,980 Se konsa, mwen jis vle ale through-- e ankò, 172 00:09:21,980 --> 00:09:27,160 sa a se pa fè li justice-- yon kèk nan karakteristik yo ki nan Haskell ki, omwen 173 00:09:27,160 --> 00:09:31,780 creators-- li yo ak li te kreye nan ane 1980 yo an reta pa yon pakèt moun sou moun, 174 00:09:31,780 --> 00:09:34,610 yon komite nan apeprè 20 people-- te panse te enpòtan. 175 00:09:34,610 --> 00:09:36,850 Apre sa, premye bagay la yo ki nan lis nan yon papye ki 176 00:09:36,850 --> 00:09:41,890 dekri Genesis nan Haskell plis pase 20 premye ane yo oswa konsa 177 00:09:41,890 --> 00:09:43,390 te ke li te parese. 178 00:09:43,390 --> 00:09:44,990 Se konsa, sa sa vle di? 179 00:09:44,990 --> 00:09:49,860 >> Oke, sa vle di lè nou gen kèk kalite nan ekspresyon, nou bezwen evalye li. 180 00:09:49,860 --> 00:09:54,390 Apre sa, fè bagay sa a Haskell nan yon apèl pa bezwen fason oubyen yon fason ki pa strik. 181 00:09:54,390 --> 00:09:57,250 Sa se, si nou gen yon pakèt moun sou eleman nan ekspresyon nou an, 182 00:09:57,250 --> 00:10:00,660 nou eseye pran reta evalyasyon an nan tout sa yo subcomponents 183 00:10:00,660 --> 00:10:05,300 jouk absoli minute-- ki sot pase a ki se jiskaske nou aktyèlman bezwen yo. 184 00:10:05,300 --> 00:10:08,480 >> Se konsa, sa a ki se means-- vrèman fre, espesyalman 185 00:10:08,480 --> 00:10:13,200 si nou ap panse sou distraksyon nan nan yon sekansyèl etap mizik. 186 00:10:13,200 --> 00:10:16,740 Ou vire l 'sou, epi ou kòmanse kouri yon sequence-- etap 187 00:10:16,740 --> 00:10:20,010 si ou te janm te travay ak yon tanbou machine-- epi li jis ale pou tout tan. 188 00:10:20,010 --> 00:10:24,650 Se konsa, li ta dwe reyèlman bon si nou te kapab rivalize ke nan Haskell. 189 00:10:24,650 --> 00:10:31,040 Epi nou ka fè l 'ak enfini valè, nan lis patikilye enfini. 190 00:10:31,040 --> 00:10:35,860 Li trè fasil yo tape yon lis enfini nan Haskell. 191 00:10:35,860 --> 00:10:39,230 Ou te kapab jis itilize sentaks la desann isit la, kote ou wè 1 jiska 3, 192 00:10:39,230 --> 00:10:42,440 retire 3 1 dot dot la, ak ki se yon lis enfini 193 00:10:42,440 --> 00:10:46,960 nan tout nimewo yo natirèl pwolonje sou osi lwen ke ou ka imajine. 194 00:10:46,960 --> 00:10:49,925 >> Mwen vle entwodui yon konsèp nan ranpa touswit. 195 00:10:49,925 --> 00:10:51,800 Epi ankò, bi pou nan seminè sa a se pa 196 00:10:51,800 --> 00:10:55,770 yo aprann sou ranpa nan Haskell oswa pi wo lòd fonksyon. 197 00:10:55,770 --> 00:10:59,640 Men, mwen jis vle prezante l 'bay bay yon sans ki ekzak sou ki jan etranj 198 00:10:59,640 --> 00:11:03,700 Haskell se ak ki jan pwisan li ye. 199 00:11:03,700 --> 00:11:08,000 Apre sa, an patikilye, nou ap ale nan be-- lè nou fè pati diferan tanbou nou an, 200 00:11:08,000 --> 00:11:12,790 nou ap ale nan dwe manipile bay lis nimewo, plisman yo sou youn ak lòt. 201 00:11:12,790 --> 00:11:17,290 Men, fè sa, nou pral lè l sèvi avèk kat ak ranpa. 202 00:11:17,290 --> 00:11:21,770 >> Genyen yon asosyatif dwat pliye, ki se sa a dwat youn 203 00:11:21,770 --> 00:11:26,990 isit lan-- 1 mwens kantite a, 2 mwens kantite a, 3 mwens 0. 204 00:11:26,990 --> 00:11:29,170 Apre sa, sentaks la pou yon pliye, ou bay yon pliye 205 00:11:29,170 --> 00:11:34,680 se yon valè baz ak Lè sa a yon operation-- nan ka sa a, de sa oswa soustraksyon. 206 00:11:34,680 --> 00:11:36,280 Mwen te montre tou de ka. 207 00:11:36,280 --> 00:11:41,760 Lè sa a, gen nan yon aku ki akimile sou lis la an antye, 208 00:11:41,760 --> 00:11:46,330 k ap aplike ki plis operatè oswa mwens, ak Lè sa a akimile li. 209 00:11:46,330 --> 00:11:52,680 Se konsa, sa a pral the-- si li te rele ak pliye r plis nan 0, kòmanse avèk 0, 210 00:11:52,680 --> 00:11:54,720 nou ta Lè sa a, sòm tout chif yo nan ke lis. 211 00:11:54,720 --> 00:11:57,134 Epi sa a, yon lis nan 1 rive nan 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Se konsa, yo mete l 'yon lòt fason sa a, pliye r pran twa agiman. 213 00:12:00,050 --> 00:12:02,540 Genyen yon fonksyon ki tèt li pran de agiman, 214 00:12:02,540 --> 00:12:05,400 Lè sa a, gen nan yon valè starter, ak gen nan yon lis ki gen valè. 215 00:12:05,400 --> 00:12:08,570 Ak sa ki sa ou fè se ou pran starter valè, premye valè, 216 00:12:08,570 --> 00:12:09,850 mete yo nan fonksyon an. 217 00:12:09,850 --> 00:12:11,607 Ki sa ou jwenn soti, pran ki, manje ki 218 00:12:11,607 --> 00:12:13,940 nan fonksyon an nan la dezyèm valè, ki sa ou jwenn soti, 219 00:12:13,940 --> 00:12:16,690 pran ki, manje ki nan la fonksyon nan twazyèm valè an. 220 00:12:16,690 --> 00:12:18,740 Lè sa a, si ou ale desann sa a lis tout fason sa a, 221 00:12:18,740 --> 00:12:22,970 w ap ale nan jwenn evantyèlman kèk valè sa a, se sengilye 222 00:12:22,970 --> 00:12:25,720 nan kalite la menm nan sa ki ou te kòmanse soti ak ak nan kalite la menm 223 00:12:25,720 --> 00:12:29,147 kòm bagay sa yo nan lis la, ak Lè sa a sa a, se rezilta a retounen nan pliye R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Se konsa, an patikilye, sa yo, se pi wo lòd fonksyon, 225 00:12:31,980 --> 00:12:34,460 paske yo ap pran yon lòt fonksyon kòm youn nan agiman yo. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Yeah. 227 00:12:34,770 --> 00:12:37,820 Si ou te itilize kèk lòt languages-- mwen konnen R, [fèbl] 228 00:12:37,820 --> 00:12:41,510 lang sa a gen, ki rele Diminye. 229 00:12:41,510 --> 00:12:45,460 Ou ta ka gen fonksyon menm jan an nan lòt lang, jis rele 230 00:12:45,460 --> 00:12:48,160 bagay diferan. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: Ak sa ki nan bèl sou pliye R 232 00:12:50,680 --> 00:12:53,880 nan egzanp sa a se ke pliye R ka travay avèk lis enfini. 233 00:12:53,880 --> 00:12:59,490 Se konsa, nan pati anba sa a, sa a P5 se génération nòt yo ki 234 00:12:59,490 --> 00:13:03,120 yo vire sou nan sekansyèl nan etap pou kèk pati tanbou, pati nan tanbou senkyèm, 235 00:13:03,120 --> 00:13:05,480 e petèt li nan yon konga tanbou oswa yon bagay. 236 00:13:05,480 --> 00:13:09,719 Lè sa a se yon fè espre obti fason pou ekri sa a, 237 00:13:09,719 --> 00:13:11,510 men li la plezi, paske li demontre yon anpil 238 00:13:11,510 --> 00:13:14,460 de bagay sa yo sou Haskell ak Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Se konsa, pliye R nan kolon sa a se colon-- jis yon operatè ki pouse bagay 240 00:13:20,650 --> 00:13:25,700 ansanm sou yon list-- rele sou yon vid lis, ki se jis parantèz yo vid. 241 00:13:25,700 --> 00:13:28,250 Apre sa, mwen ap rele ki sou lis enfini sa a. 242 00:13:28,250 --> 00:13:31,570 Sa a se aktyèlman de lis te ajoute ansanm desann isit la. 243 00:13:31,570 --> 00:13:37,150 Lis 1 vigil 6 dot la dot se 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Se konsa, nan jis Haskell-- yon karaktè kèk, ou 245 00:13:39,750 --> 00:13:42,420 ka jenere tout la sekans nan nimewo 246 00:13:42,420 --> 00:13:46,240 ki se senk nimewo apa etann sou nan Infinity. 247 00:13:46,240 --> 00:13:49,860 Apre sa, mwen prepan ak sa yo ki sa a pi kout ti kras list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- jis montre w ki jan ou ka anchene lis. 249 00:13:54,370 --> 00:13:55,790 >> Lè sa a, mwen te ki plwaye sou tèt li. 250 00:13:55,790 --> 00:14:01,510 Lè sa a fini moute ke yo te yon jis kalite operasyon idantite, men li la enfini. 251 00:14:01,510 --> 00:14:06,070 Apre sa, pliye R ka fè sa, paske li paresezman evalye, tankou nan pi wo a la. 252 00:14:06,070 --> 00:14:10,582 Si nou gen yon 1 ak yon 2 ak 3, nou kapab jis bracket koupe rès la tout antye de li. 253 00:14:10,582 --> 00:14:12,290 Sa pa pral travay pou mwens oswa plis, men li 254 00:14:12,290 --> 00:14:17,760 pral travay pou kolon sa a operasyon idantite sou lis la. 255 00:14:17,760 --> 00:14:24,620 >> Se konsa, ki jan nou pratikman itilize ke si nou gen yon lis long nan enfiniman bagay sa yo? 256 00:14:24,620 --> 00:14:26,500 Oke, Haskell bay yon anpil nan functions-- 257 00:14:26,500 --> 00:14:29,450 epi gade plis nan sa yo nan pwòp time-- ou a, tankou pran 258 00:14:29,450 --> 00:14:32,200 ki di, OK, nou ap génération lis enfini sa a, 259 00:14:32,200 --> 00:14:35,950 men nou ap jis ale nan pran kèk Nimewo nan li Ak nan sa a case-- 260 00:14:35,950 --> 00:14:38,410 nou pral wè sa a pita nan code-- machin tanbou nou an 261 00:14:38,410 --> 00:14:43,740 GM se jis kèk kalite mondyal varyab pou kantite etap 262 00:14:43,740 --> 00:14:44,610 nan sekansyèl la. 263 00:14:44,610 --> 00:14:47,630 Sou woulo liv-nan machin yo mwen te montre ou, sa a, se tipikman 16, 264 00:14:47,630 --> 00:14:51,475 men mwen te aplike l 'ak 32. 265 00:14:51,475 --> 00:14:54,470 Li pa reyèlman gen pwoblèm. 266 00:14:54,470 --> 00:15:00,230 >> Haskell se tou pi bon kalite, se konsa li gen fò estatik sezisman ki Connor mansyone a. 267 00:15:00,230 --> 00:15:03,220 Se konsa, fonksyon yo matematik nan sense-- nan 268 00:15:03,220 --> 00:15:06,600 yo ap plis matematik ke yo ap garanti 269 00:15:06,600 --> 00:15:11,530 pa jwenn aksè nan oswa chanje nenpòt kalite varyab oswa fè opinyon oswa pwodiksyon. 270 00:15:11,530 --> 00:15:14,420 Se konsa, si ou gen yon fonksyon, li nan detèrminist. 271 00:15:14,420 --> 00:15:17,400 Li ap toujou retounen menm bagay la tou valè nan eta a nan pwogram nan 272 00:15:17,400 --> 00:15:19,310 oswa rete menm jan an. 273 00:15:19,310 --> 00:15:22,940 Gen, nan kou, eksepsyon monadic nan sa a, men sa a depase limit nou yo. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Yeah. 275 00:15:23,900 --> 00:15:26,946 Kisa sa vle di, menm si, ki gen la se kèk enpòtan [fèbl] 276 00:15:26,946 --> 00:15:27,820 konsekans nan sa a. 277 00:15:27,820 --> 00:15:30,940 Youn nan se ke li nan trè fasil a parallelize pwogram Haskell. 278 00:15:30,940 --> 00:15:32,773 Paske si ou genyen, di, yon fonksyon nan ki 279 00:15:32,773 --> 00:15:36,064 bezwen yo opere sou yon milyon valè, si ou konnen ke fonksyon an ap toujou 280 00:15:36,064 --> 00:15:39,280 bay soti valè a menm si ou manje nan yon sèten value-- 281 00:15:39,280 --> 00:15:43,055 si w ap [fèbl] f nan 1, f nan 2, Lè sa a, f nan 3 oswa whatnot-- f nan 1 282 00:15:43,055 --> 00:15:45,180 a pa pral ekri soti nan yon dosye oswa fè yon bagay 283 00:15:45,180 --> 00:15:46,850 ki pral chanje valè a nan F2. 284 00:15:46,850 --> 00:15:50,220 Ou ka jis fann moute fonksyon sa a nan yon milyon dola machin diferan oswa yon milyon 285 00:15:50,220 --> 00:15:54,720 fil diferan oswa kèlkeswa sa, jwenn tout repons yo tounen, 286 00:15:54,720 --> 00:15:56,900 jwenn tout valè yo retounen tounen, ak Lè sa a sa a, se li. 287 00:15:56,900 --> 00:15:59,780 Se konsa, trè fasil a parallelize bagay sa yo. 288 00:15:59,780 --> 00:16:03,140 >> Inconvénient a se ke opinyon ak pwodiksyon espesyalman 289 00:16:03,140 --> 00:16:05,720 anfòm nan sistèm lan kalite nan fason bagay ki konplike anpil. 290 00:16:05,720 --> 00:16:09,010 Nou pa pral antre nan ki kounye a, men mwen ankouraje w fè yon gade nan kèk nan resous 291 00:16:09,010 --> 00:16:11,175 sou entènèt si ou vle aprann sou sa. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Se konsa, tape classes-- ak sa a 294 00:16:16,550 --> 00:16:21,610 klas was-- nan kalite yo te envante yo rezoud 295 00:16:21,610 --> 00:16:24,160 yon pwoblèm nan operatè surcharges. 296 00:16:24,160 --> 00:16:27,590 Se konsa, nou te vle gen egalite ant diferan kalite bagay sa yo. 297 00:16:27,590 --> 00:16:31,040 Natirèlman, nou te ka panse de- egalite ant nimerik kalite 298 00:16:31,040 --> 00:16:34,720 se trè fasil yo reflechi sou, men sa ki sou egalite ant lis? 299 00:16:34,720 --> 00:16:37,610 Ki sa ki sou egalite ant pyebwa done janm estrikti? 300 00:16:37,610 --> 00:16:43,130 Lè sa a se tout posib nan Haskell paske nan klas kalite. 301 00:16:43,130 --> 00:16:48,000 >> Se konsa, si ou defini yon done sèten type-- ak isit la, sa yo se ton mizik. 302 00:16:48,000 --> 00:16:50,960 Nou ap finalman ap resevwa nan kèk mizik òdinatè. 303 00:16:50,960 --> 00:16:57,420 Se konsa, nou gen C, C byen file, ak sou sa ak pou fè. 304 00:16:57,420 --> 00:17:01,080 Yo apatni a yon pakèt moun sou diferan klas kalite. 305 00:17:01,080 --> 00:17:03,510 EQ-- yo apatni a klas la di ki EQ. 306 00:17:03,510 --> 00:17:06,780 Sa vle di yo sipòte operasyon egalite. 307 00:17:06,780 --> 00:17:12,650 Se konsa, ou ka evalye si yon sèl sekans nan primitives mizik 308 00:17:12,650 --> 00:17:15,400 se menm bagay la kòm yon yon sèl diferan. 309 00:17:15,400 --> 00:17:17,280 >> Yo apatni a klas la òdinal. 310 00:17:17,280 --> 00:17:19,479 Sa vle di gen nan yon kòmann-nan nan sa yo. 311 00:17:19,479 --> 00:17:27,670 D vin apre C. C byen file vin apre C kòm byen. 312 00:17:27,670 --> 00:17:29,840 Yo fè pati nan klas la montre, ki vle di yo kapab 313 00:17:29,840 --> 00:17:33,000 ap enprime nan yon konsole oswa tèminal. 314 00:17:33,000 --> 00:17:36,090 Yo fè pati nan nan klas enimere, ki 315 00:17:36,090 --> 00:17:39,770 vle di ke menm si sa yo, se karaktè, 316 00:17:39,770 --> 00:17:45,340 yo gen yon kache nimerik reprezantasyon kòmanse nan 0 317 00:17:45,340 --> 00:17:48,960 ak ale nan nan sepandan anpil bagay la a, 20 oswa konsa, 318 00:17:48,960 --> 00:17:51,770 oswa 30 oswa 40, petèt. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: Lè nou gen yon kalite done 320 00:17:54,259 --> 00:17:57,050 ki derives-- ak sa mo kle "deriving--" yon klas kalite sèten, 321 00:17:57,050 --> 00:18:01,160 sa vle di ke du a pral eseye yo konstwi yon bagay otomatikman. 322 00:18:01,160 --> 00:18:05,120 Se konsa, petèt ou pral vle defini yon bon jan kalite yon lòt jan. 323 00:18:05,120 --> 00:18:09,450 Ou pral vle defini C byen file kòm egal a D plat, pou egzanp. 324 00:18:09,450 --> 00:18:11,560 Avèk sa a konstriksyon isit la, mwen pa panse ke C byen file 325 00:18:11,560 --> 00:18:14,940 ak D plat pral egal, paske du a pral otomatikman 326 00:18:14,940 --> 00:18:19,670 di chak diferan valè posib se diferan de tout lòt. 327 00:18:19,670 --> 00:18:22,930 >> Se konsa, li se posib yo pase sou desizyon en yo default 328 00:18:22,930 --> 00:18:25,730 nan sa yo kalite klas yo. 329 00:18:25,730 --> 00:18:28,640 Yon fwa ankò, gade nan referans a si ou vle aprann sou sa. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: Ak isit la, aktyèlman, sa a 'tout 332 00:18:33,600 --> 00:18:36,930 ka itil pou lè nou kode pita. 333 00:18:36,930 --> 00:18:42,150 Nou wè kèk nan operatè yo inséré pou sekans konpozisyon, 334 00:18:42,150 --> 00:18:46,570 paralèl konpozisyon, e konsa soti, pluses sa yo ak siy egal 335 00:18:46,570 --> 00:18:48,620 ki te antoure pa kolon. 336 00:18:48,620 --> 00:18:53,330 Sa vle di nou ka jwe sa yo diferan primitives mizik youn apre lòt la. 337 00:18:53,330 --> 00:18:54,590 Sa a sekans konpozisyon. 338 00:18:54,590 --> 00:18:57,170 >> Oubyen èske nou ka jwe yo nan paralèl nan menm tan an. 339 00:18:57,170 --> 00:19:05,100 Se konsa, mwen ka gen yon valè mizik, ak Lè sa a sa a egal ak kolon, 340 00:19:05,100 --> 00:19:09,669 inséré paralèl konpozisyon operatè, ak jwe yo kòm yon kalite kòd. 341 00:19:09,669 --> 00:19:11,460 Epi nou ap ale nan sèvi ak lè sa a nou konbine 342 00:19:11,460 --> 00:19:15,080 pati tanbou nou yo ak nou an ti kras chante FRERE Jacques 343 00:19:15,080 --> 00:19:19,460 yo jwe de sekans sa yo nan valè mizik nan menm tan an. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying is-- Curry te dènye non Haskell Curry, ki moun ki 346 00:19:29,250 --> 00:19:31,850 se imaj la Haskell rele apre. 347 00:19:31,850 --> 00:19:34,330 Lè sa a pèmèt nou yon bèl distenksyon lè nou ap 348 00:19:34,330 --> 00:19:36,880 ekri tout bagay sa yo diferan fonksyon oswa filtè ke nou ap 349 00:19:36,880 --> 00:19:39,330 pral fè kat sou lis nou an. 350 00:19:39,330 --> 00:19:42,810 Yon fonksyon nan de arguments-- f nan x ak y-- 351 00:19:42,810 --> 00:19:46,630 ka reprezante kòm f nan x aplike nan y. 352 00:19:46,630 --> 00:19:49,800 Se konsa, li yon fonksyon nan yon sèl agiman ki retounen 353 00:19:49,800 --> 00:19:51,240 yon lòt fonksyon nan yon sèl agiman. 354 00:19:51,240 --> 00:19:56,962 Se konsa, sa vle di nou ka kat jeyografik yon fonksyon f nan x sou lis y la. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Vle bay yon egzanp sou sa a? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Yeah. 357 00:19:59,836 --> 00:20:05,390 Mwen gen yon egzanp dwat isit la soti nan kèk nan bagay sa yo nou pral ekri. 358 00:20:05,390 --> 00:20:10,500 Se konsa, replike 2-- byen, replike pral pran 359 00:20:10,500 --> 00:20:13,040 yon sèl valè, ki se ki jan anpil fwa a replike yon bagay, 360 00:20:13,040 --> 00:20:16,690 ak Lè sa a li pral pran yon value-- anjeneral yon lis oswa yon bagay. 361 00:20:16,690 --> 00:20:23,450 Se konsa, isit la, nou ap kat replike 2 pase yon lòt lis. 362 00:20:23,450 --> 00:20:27,440 >> Se konsa, si nou kat jeyografik replike 2, si nou replike 2 aplike 363 00:20:27,440 --> 00:20:31,890 nan eleman an premye nan sa a epi list-- sa yo, se bay lis phrases-- mizik 364 00:20:31,890 --> 00:20:37,650 yo pral pwodwi de nan "ou sleeping--" se konsa w'ap dòmi, ou menm ki ap dòmi. 365 00:20:37,650 --> 00:20:40,040 Se konsa, kounye a nou gen de. 366 00:20:40,040 --> 00:20:42,570 Men, pran de replike agiman, men paske nou ap 367 00:20:42,570 --> 00:20:47,100 currying ak Lè sa a kat, nou ka reprezante replike 2 368 00:20:47,100 --> 00:20:52,310 kòm ke nou fin tounen kòm yon fonksyon nan youn argument-- jis repwodui de fwa. 369 00:20:52,310 --> 00:20:57,010 Lè sa a, nou ap aplike ki nan chak eleman nan lis sa a nan fraz. 370 00:20:57,010 --> 00:21:01,900 >> Apre sa, concat se yon Haskell operasyon pou plat yon lis. 371 00:21:01,900 --> 00:21:04,400 Paske replike 2 volonte pwodwi yon lis lis. 372 00:21:04,400 --> 00:21:06,660 Lè sa a se fòm entèmedyè sa a isit la. 373 00:21:06,660 --> 00:21:10,365 Se konsa, Lè sa a, nou ka concat oswa plati ki soti de fwa. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Yon senp egzanp sou currying, 375 00:21:12,240 --> 00:21:15,323 si ou ta like-- imajine f se jis yon fonksyon ki pran de miltiplikasyon 376 00:21:15,323 --> 00:21:16,840 agiman ak retounen pwodwi yo. 377 00:21:16,840 --> 00:21:19,320 Se konsa, si ou gen yon f 4 5, li nan 20. 378 00:21:19,320 --> 00:21:22,670 Men, ou ka panse a sa a kòm also-- ou gen yon f fonksyon 4 379 00:21:22,670 --> 00:21:25,560 ki pran yon agiman epi retounen kat fwa sa a argument-- jis 380 00:21:25,560 --> 00:21:27,870 aplikasyon yon pati nan ki sèlman yon sèl agiman 4. 381 00:21:27,870 --> 00:21:31,182 Men, si ou manje f nan 4 5, ki pral ba ou 20. 382 00:21:31,182 --> 00:21:32,890 Epi sa a, yon pi senp egzanp sou currying. 383 00:21:32,890 --> 00:21:34,473 Li nan anjeneral yon sèl nan yo menm ki liv. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: LAMBDA ekspresyon oswa fonksyon anonim 386 00:21:42,110 --> 00:21:47,330 yo se yon lòt Hallmark Haskell. 387 00:21:47,330 --> 00:21:51,242 Se konsa, si nou bezwen fwe moute yon ti kras fonksyon replike lavi, 388 00:21:51,242 --> 00:21:52,950 men di li nan pa nan bibliyotèk la estanda, 389 00:21:52,950 --> 00:21:56,150 nou ka sèvi ak yon sentaks menm jan ak sa ki annapre yo. 390 00:21:56,150 --> 00:21:58,730 Epitou, n ap briz sou sa a. 391 00:21:58,730 --> 00:22:02,160 Youn nan bagay ou pral wè yon anpil nan nan nan machin tanbou se nou ap fè apèl 392 00:22:02,160 --> 00:22:05,790 nan yon bagay yo rele filtre, ki renmen anvan, 393 00:22:05,790 --> 00:22:08,185 se yon kat nan yon fonksyon sou yon lis, men li la 394 00:22:08,185 --> 00:22:10,260 yon kat nan yon fonksyon Boolean. 395 00:22:10,260 --> 00:22:13,390 >> Se konsa, nou gen isit la yon egzanp nan yon yon anonim 396 00:22:13,390 --> 00:22:19,150 defini fonksyon Boolean ki jis pran yon valè koup. 397 00:22:19,150 --> 00:22:22,990 Sa a se pa estrikteman pale yon fonksyon anonim. 398 00:22:22,990 --> 00:22:25,850 Men, li la defini ak ki sentaks pou konsizyon, 399 00:22:25,850 --> 00:22:28,007 ak sa a jis pran x modil n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Yeah. 401 00:22:28,840 --> 00:22:31,330 Se konsa, f se yon fonksyon nan de agiman n ak p 402 00:22:31,330 --> 00:22:35,440 ki retounen yon fonksyon ki se tèt li yon fonksyon nan yon sèl agiman, sètadi x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: Mwen inséré operatè mansyone. 405 00:22:40,690 --> 00:22:42,642 Ki sa ki se operatè inséré? 406 00:22:42,642 --> 00:22:45,710 Oke, operatè inséré yo nan nòmal fason nou reprezante operasyon yo, 407 00:22:45,710 --> 00:22:49,910 di, nan mathematics-- 2 plis 2 olye pou yo operatè a plis 408 00:22:49,910 --> 00:22:51,202 ak Lè sa a de agiman 2 ak 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Yo rele li ranvèse polish notasyon, ki se 410 00:22:53,701 --> 00:22:55,330 yon tèm mwen gen dout nenpòt nan ou ta konnen. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Dwa. 412 00:22:56,288 --> 00:22:58,290 Ranvèse polish oswa prefiks notasyon. 413 00:22:58,290 --> 00:23:01,412 Men, Haskell deside itilize operatè inséré. 414 00:23:01,412 --> 00:23:03,120 Se konsa, sa yo, se kèk nan yo menm ki koutim ki 415 00:23:03,120 --> 00:23:07,770 yo defini pou la Euterpea DSCL nan Haskell. 416 00:23:07,770 --> 00:23:10,730 Se konsa, sa a te sekans konpozisyon. 417 00:23:10,730 --> 00:23:16,340 Sa a te konpozisyon paralèl, ak sa a te truncating konpozisyon paralèl. 418 00:23:16,340 --> 00:23:18,710 Epitou, n ap bezwen ke ak machin tanbou nou an, 419 00:23:18,710 --> 00:23:22,640 paske nou pral sèvi ak dènye a operatè nan ki ti kras tupl gen 420 00:23:22,640 --> 00:23:26,330 yo jwe machin nan tanbou ansanm ak chante FRERE Jacques nou an. 421 00:23:26,330 --> 00:23:28,650 Ak machin tanbou nou an, se pral fè enfini. 422 00:23:28,650 --> 00:23:30,920 Li jis jwe pou tout tan. 423 00:23:30,920 --> 00:23:32,692 Men, chante sa a, FRERE Jacques se pa vre. 424 00:23:32,692 --> 00:23:33,510 Li pa ke lontan. 425 00:23:33,510 --> 00:23:36,610 Li nan sèlman yon ba kèk. 426 00:23:36,610 --> 00:23:43,030 Se konsa, nou bezwen sispann machin nan tanbou kòm pli vit ke valè a ki pi kout mizik vini 427 00:23:43,030 --> 00:23:43,700 nan yon fen. 428 00:23:43,700 --> 00:23:46,980 Epi sa operatè infixed se super itil ak sa. 429 00:23:46,980 --> 00:23:50,090 >> Epi notasyon inséré tankou sa a se kalite bèl, 430 00:23:50,090 --> 00:23:57,095 paske di ou gen yon fonksyon tankou quote, ki bay nan nonb antye relatif divizyon 431 00:23:57,095 --> 00:24:01,010 nan x pa yon bagay else-- regrèt sa, ki ta dwe gen yon ak b. 432 00:24:01,010 --> 00:24:04,740 Ou te kapab ekri li kòm yon quote nan b. 433 00:24:04,740 --> 00:24:09,670 Se konsa, si ou eleman put-- se yon lòt egzanp nan sa a. 434 00:24:09,670 --> 00:24:14,730 x eleman nan kèk lis, si ou mete li nan Backticks, ou ka sèvi ak li. 435 00:24:14,730 --> 00:24:20,400 Menm si li pa yon senbòl tankou plis oswa mwens oswa fwa, 436 00:24:20,400 --> 00:24:24,630 ou ka itilize non an nan yon fonksyon tankou sa nan Backticks 437 00:24:24,630 --> 00:24:27,045 kòm inséré operatè, ki se trè fre. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Yon fwa ankò, sa a se tout sik jis Massachusetts Institute of Technology, vrèman. 439 00:24:29,670 --> 00:24:32,310 Li pa afekte nwayo a nan lang. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Se konsa, nou wè isit la pou la fraz sot pase a nan chante FRERE Jacques nou an, 441 00:24:37,440 --> 00:24:45,740 Mwen te jwe kèk kòd ti kras oswa ki tyè lè l sèvi avèk konpozisyon an paralèl 442 00:24:45,740 --> 00:24:46,240 operatè. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Sa se yon lòt fason pou li di kèk nan sa nou te jis te di. 445 00:24:54,950 --> 00:24:59,986 Se konsa, ou ka kat jeyografik fonksyon nan yon sèl agiman sou lis. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Yon fwa ankò, referans pou Haskell-- liv entwodiksyon 447 00:25:02,860 --> 00:25:04,680 ap gen tout bagay sa yo nan li. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Se konsa, isit la nan yon bèl liy kle nan sekansyèl nan etap 449 00:25:07,790 --> 00:25:12,820 nou pral pran yon gade nan lè l sèvi avèk yon lis konpreyansyon. 450 00:25:12,820 --> 00:25:17,810 Apre sa, nou wè isit la se ke eleman nan operatè fiks nan quotes tounen. 451 00:25:17,810 --> 00:25:23,030 Se konsa, si x se yon eleman nan lis la nan x la, Lè sa a, nou pral rele moute fonksyon pèrk. 452 00:25:23,030 --> 00:25:25,100 Se konsa, pèrk se jis yon fonksyon pèkisyon. 453 00:25:25,100 --> 00:25:30,200 Li pran kèk p valè sa a, se yon pati nan mete nan limiter nan tout 454 00:25:30,200 --> 00:25:35,310 son yo pèkisyon diferan ke nou te wè nan yon glise anvan, 455 00:25:35,310 --> 00:25:38,840 ak Lè sa a li bay ki dire nan yon nòt trimès. 456 00:25:38,840 --> 00:25:43,190 Lòt Bagay li bay li yon QNR, ak QNR se jis yon rès nòt trimès. 457 00:25:43,190 --> 00:25:44,970 >> Se konsa, sa a se bati yon bagay bèl. 458 00:25:44,970 --> 00:25:52,110 Nou gen yon lis nan eleman, ak nou pral bouk sou kèk lis soti nan yon 459 00:25:52,110 --> 00:25:54,540 nan valè a max a sekansyèl etap nou an. 460 00:25:54,540 --> 00:25:58,290 Lè nou ap nan yon m patikilye nan ke lis nan yon sèl nan valè a max, 461 00:25:58,290 --> 00:26:02,970 si sa m se yon manm nan sa a seri ki te kreye nan fonksyon sa a, 462 00:26:02,970 --> 00:26:06,040 byen, lè sa a nou vire l ' nan yon nòt pèkisyon. 463 00:26:06,040 --> 00:26:10,960 Sinon, nou jis jwe yon rès, ki sa a vle di, nou jis rete an silans. 464 00:26:10,960 --> 00:26:16,050 Apre sa, nou ka wè isit la ke nan sa a konpreyansyon sentaks lis, 465 00:26:16,050 --> 00:26:20,030 x se peple pa sa a lis konstwi youn 466 00:26:20,030 --> 00:26:22,462 nan gwosè a mondyal de sekansyèl la. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Yeah. 468 00:26:23,295 --> 00:26:26,340 Sentaks la debaz pou lis comprehensions se 469 00:26:26,340 --> 00:26:30,810 bracket, valè ki enplike kèk varyab, ba, 470 00:26:30,810 --> 00:26:34,260 valè posib pou varyab yo tèt yo, fèmen bracket. 471 00:26:34,260 --> 00:26:38,545 Men, si ou te fè mete notasyon mason nan nenpòt ki sòt nan klas matematik, 472 00:26:38,545 --> 00:26:45,999 ou ta ka te mete 2n sa yo ki n se nan oswa n se nan z. 473 00:26:45,999 --> 00:26:48,290 Menm jan an bagay-- notasyon sa a ki te vle di yo dwe sijestif 474 00:26:48,290 --> 00:26:49,630 nan ki notasyon matematik. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: Epi ou kapab aplike miltip atribu 476 00:26:51,880 --> 00:26:56,250 ak filtè miltip nan yon lis konpreyansyon, ki se byen bèl. 477 00:26:56,250 --> 00:27:01,800 Aljebrik types-- nou pa pral retade ankò lontan isit la. 478 00:27:01,800 --> 00:27:04,840 Gen nan pa yon nosyon bon nan Haskell oswa yon bon, nosyon evidan 479 00:27:04,840 --> 00:27:10,720 pou konnen kijan pou pran, di, yon default paramèt nan yon fonksyon oswa yon bagay. 480 00:27:10,720 --> 00:27:13,370 Nan Piton, sa a se byen fasil. 481 00:27:13,370 --> 00:27:18,460 Ou ka jis di ak egal sou deklarasyon an nan fonksyon an, 482 00:27:18,460 --> 00:27:21,420 se yon valè default nan se ka pa youn bay. 483 00:27:21,420 --> 00:27:27,010 >> Nan Haskell, ou te kapab petèt itilize petèt petèt tape nan, 484 00:27:27,010 --> 00:27:32,190 ki te pran swa pa gen anyen oswa se yon valè nan kalite jis yon. 485 00:27:32,190 --> 00:27:38,630 Se konsa, nou esplwate sa a nan machin nan tanbou yo ki pèmèt nou bay volim si ou vle 486 00:27:38,630 --> 00:27:40,730 paramèt nan chak nan pati pyès sa yo tanbou. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Se konsa, ki ba nou yon fason pou gen EQ oswa yon volim sou yon kanal patikilye. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: Nan lòt egzanp Haskell, 490 00:27:56,440 --> 00:28:00,450 ou ta ka wè petèt itilize pou fonksyon ki ta ka febli. 491 00:28:00,450 --> 00:28:03,470 Sa a se yon yon sèl komen. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: Epi ou ka bay kèk sòt de mesaj erè kòm yon default. 493 00:28:07,010 --> 00:28:11,020 Epi sa a, patikilyèman sou la men lè w ap fè mwen / O nan nan Haskell. 494 00:28:11,020 --> 00:28:12,044 Ki ka ke trik nouvèl. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: Ou pou yon menm jan egzanp, panse 496 00:28:13,960 --> 00:28:17,460 nan yon fonksyon ki enplike nan divizyon nan yon paramèt ke sa ta kapab 0. 497 00:28:17,460 --> 00:28:20,020 Epi sa te kapab fonksyon retounen petèt kèlkeswa sa. 498 00:28:20,020 --> 00:28:22,802 Se konsa, si gen nan pa gen divizyon pa 0, li pral retounen jis kèlkeswa sa. 499 00:28:22,802 --> 00:28:25,010 Men, si gen divizyon pa 0, li pral retounen pa gen anyen 500 00:28:25,010 --> 00:28:26,910 kòm yon fason pou siyal erè a. 501 00:28:26,910 --> 00:28:30,330 Paske yon sèl konsekans Trè sevè sezisman Haskell nan 502 00:28:30,330 --> 00:28:34,100 se ke gen nan pa gen real-- eksepsyon yo se gòch, fondamantalman, 503 00:28:34,100 --> 00:28:36,160 manyen erè se gòch. 504 00:28:36,160 --> 00:28:39,440 Lè sa a se yon sèl trè fason ki pi kouran pou fè li. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Se konsa, kounye a nou jwenn nan yon lòt bagay lide-koube 506 00:28:42,990 --> 00:28:49,160 sou Haskell, ki se modèl matche ak fonksyon definisyon. 507 00:28:49,160 --> 00:28:53,390 Mwen te montre ou nan dènye glise nan la deklarasyon sekans lan etap 508 00:28:53,390 --> 00:28:58,170 fonksyon, ki te pran se yon valè petèt, Lè sa a, yon int, lè sa a yon lis ki gen antye, 509 00:28:58,170 --> 00:29:03,850 Lè sa a, retounen yon sekans nan valè mizik gen Anote 510 00:29:03,850 --> 00:29:05,375 ak tou de ton ak volim. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Se konsa, moun twa agiman kapab modèl matche nan fason ki anba la a. 513 00:29:11,820 --> 00:29:16,660 Apre sa, nou toujou vle asire w ke ou fè yon ka baz oswa sòti ka an premye. 514 00:29:16,660 --> 00:29:19,690 Apre sa, evidans sa yo ka jis kapab entèprete 515 00:29:19,690 --> 00:29:22,340 vle di nenpòt ki valè sa a, se la. 516 00:29:22,340 --> 00:29:26,580 Se konsa, si nou jwenn yon apèl nan etap sekans ak kèk valè, kèk lòt valè, 517 00:29:26,580 --> 00:29:32,210 ak Lè sa a lis la vid, ki sa nou vle retounen se jis silans, yon rès 0. 518 00:29:32,210 --> 00:29:35,110 >> Ak olye pou yo ki ke yo te yon lis vid oswa 0, 519 00:29:35,110 --> 00:29:38,150 li nan yon rès 0, paske nou ap fè fas ak kalite a mizik, 520 00:29:38,150 --> 00:29:43,230 ak lis la vid nan mizik la di ki kalite se jis yon rès ki pa gen dire. 521 00:29:43,230 --> 00:29:45,680 Li nan okenn mizik. 522 00:29:45,680 --> 00:29:51,460 Lè sa a, nou wè si nou jwenn yon etap sekans ak yon v pou volim agiman, 523 00:29:51,460 --> 00:29:57,290 p pou enstriman prekosyon agiman, ak Lè sa a yon lis ki gen x an. 524 00:29:57,290 --> 00:29:58,360 >> Lè sa a, nou fè kèk bagay. 525 00:29:58,360 --> 00:30:01,290 An patikilye, nou aplike lis sa a konpreyansyon, 526 00:30:01,290 --> 00:30:05,700 epi nou fè kèk operasyon sou valè a petèt 527 00:30:05,700 --> 00:30:10,050 yo vire l 'nan yon nimerik valè pou ke li te kapab Lè sa a, enimere ak itilize 528 00:30:10,050 --> 00:30:12,300 yo ka chwazi enstriman an. 529 00:30:12,300 --> 00:30:16,730 Yon fwa ankò, sa a se yon ti kras ti jan fè espre inconcise 530 00:30:16,730 --> 00:30:20,580 jis yo montre tout bagay sa yo etranj ou ka fè nan Haskell jan ou 531 00:30:20,580 --> 00:30:23,170 pran yon gade nan l 'sou tan pwòp ou yo. 532 00:30:23,170 --> 00:30:23,802 >> Tout dwa. 533 00:30:23,802 --> 00:30:26,010 Se konsa, nou ap finalman ap resevwa nan fè sa nou mete soti nan fè, 534 00:30:26,010 --> 00:30:28,820 ki se fè kèk mizik òdinatè. 535 00:30:28,820 --> 00:30:32,250 Se konsa, nou ap ale nan eseye fè chante sa a, FRERE Jacques. 536 00:30:32,250 --> 00:30:35,220 Se konsa, gen konbyen Fraz nan FRERE Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Kat. 539 00:30:39,680 --> 00:30:40,460 Great. 540 00:30:40,460 --> 00:30:42,490 Ak sa ki nan bèl se ke yo tout ap repete 541 00:30:42,490 --> 00:30:46,990 menm kantite lajan an nan fwa, ki se de. 542 00:30:46,990 --> 00:30:50,730 >> Se konsa, nou gen kat fraz chak repete de fwa. 543 00:30:50,730 --> 00:30:53,590 Ak nan patikilye, yo ap nan yon wonn. 544 00:30:53,590 --> 00:30:55,340 E genyen anpil anpil moun, plizyè fason aplike 545 00:30:55,340 --> 00:30:57,520 yon wonn ki te kapab plezi yo fè. 546 00:30:57,520 --> 00:31:00,260 Mwen te fè l 'nan yon trè senp fason isit la, 547 00:31:00,260 --> 00:31:05,760 ki se jis yo construct-- liy lan fonksyon pran yon lis ki gen valè mizik 548 00:31:05,760 --> 00:31:10,390 ak vire l 'nan sekans konpozisyon pa aplike ke konpozisyon sekans 549 00:31:10,390 --> 00:31:13,000 operatè. 550 00:31:13,000 --> 00:31:19,540 >> Lè sa a, mwen pran reta pati pyès sa yo diferan pa fè yo kòmanse avèk yo yon repo. 551 00:31:19,540 --> 00:31:22,770 Se konsa, mwen kòmanse avèk yon rès nan de mezi, ak Lè sa a yon repo nan kat mezi, 552 00:31:22,770 --> 00:31:26,160 ak Lè sa a yon repo nan sis mezi, ak Lè sa a wonn nan 553 00:31:26,160 --> 00:31:32,290 ap travay, kòm nou tout konnen chante sa a. 554 00:31:32,290 --> 00:31:37,180 Nou wè de anote oswa modifikasyon nan valè yo mizik 555 00:31:37,180 --> 00:31:43,150 ki genyen nan yo nan sa a sekans aranjman nan eleman mizik. 556 00:31:43,150 --> 00:31:44,810 Nou gen yon volim ajoute. 557 00:31:44,810 --> 00:31:48,960 Sa a se yon fonksyon anot mizik ak yon volim patikilye. 558 00:31:48,960 --> 00:31:51,320 Sa a se yon bon egzanp a yon siyal kouri MIDI 559 00:31:51,320 --> 00:31:57,510 ki ant 0 a 127, sèt Bits yo nan enfòmasyon ki ka dwe te pote. 560 00:31:57,510 --> 00:32:00,650 >> Apre sa, nou te wè then-- li trè yon ti tan, men an jeneral MIDI 561 00:32:00,650 --> 00:32:02,310 lis tout enstriman mizik yo diferan. 562 00:32:02,310 --> 00:32:04,450 Apre sa, gen nan pa yon anpil tout nan yo. 563 00:32:04,450 --> 00:32:11,230 Si ou itilize yon dijital estasyon odyo, tankou Ableton Live oswa Pro zouti, 564 00:32:11,230 --> 00:32:17,560 gen nan yon ranje pi laj èkstrèmeman a sente ak enstriman mizik VST. 565 00:32:17,560 --> 00:32:21,510 Men, estanda nan MIDI sèlman gen yon kèk, oswa plizyè douzèn. 566 00:32:21,510 --> 00:32:22,799 Se konsa, kèk nan yo se amizan. 567 00:32:22,799 --> 00:32:25,840 Mwen te panse li ta enteresan si nou te jwe enstriman an enstriman an MIDI 568 00:32:25,840 --> 00:32:30,550 elikoptè, ak Lè sa a nan fason pwochen nan tou an, 569 00:32:30,550 --> 00:32:37,980 nou te fè yon pad Synth, ak Lè sa a sa a banal plon Synth vag kare, 570 00:32:37,980 --> 00:32:44,240 ak Lè sa a tande vwa bou, ki se yon ti jan endesi sou MIDI move mwen 571 00:32:44,240 --> 00:32:46,410 synthesizer, men yo OK. 572 00:32:46,410 --> 00:32:50,030 >> Lè sa a, nou wè kite sa ak nan sentaks soti nan Haskell, 573 00:32:50,030 --> 00:32:54,030 ak Lè sa a nou ap jwe tout bagay sa yo pati ansanm 574 00:32:54,030 --> 00:32:56,265 ak konpozisyon operatè a paralèl. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 Apre sa, nou te kapab pwobableman montre kèk nan sa a. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Isit la nan kòd la. 579 00:33:08,340 --> 00:33:14,960 Epi ou ka wè nan C, gen ta gen yon anpil nan netwaye gòj ak anviwònman 580 00:33:14,960 --> 00:33:19,760 kòd a tab anvan ou te kapab fè mizik tankou sa a. 581 00:33:19,760 --> 00:33:22,080 Oswa nenpòt ki lòt pwogram lang, ou ta pwobableman 582 00:33:22,080 --> 00:33:27,210 gen yo kominike avèk kèk sòt de bibliyotèk oswa API, li mete tout bagay moute, 583 00:33:27,210 --> 00:33:28,725 ak Lè sa a ou ta gen netwaye. 584 00:33:28,725 --> 00:33:33,810 Men, isit la nan Haskell se, mwen panse ke, yon fwa ou jwenn pann an nan li, èkstrèmeman 585 00:33:33,810 --> 00:33:35,770 lizib ak anpil espresif. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Se konsa, gen aplikasyon an a FRERE Jacques. 588 00:33:43,240 --> 00:33:43,740 Tout dwa. 589 00:33:43,740 --> 00:33:47,557 Koulye a, nou vle ajoute pèkisyon, ak sa a se yon ti kras messier ti jan. 590 00:33:47,557 --> 00:33:49,015 Se konsa, kite a pran yon gade nan glisad yo. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Se konsa, lide a gwo se fè yon pakèt moun sou lis oswa pati. 593 00:34:00,540 --> 00:34:04,140 Sou moun woulo liv-nan machin, gen te tipikman sou petèt uit 594 00:34:04,140 --> 00:34:08,670 a 10 ritm oswa pèkisyon pati. 595 00:34:08,670 --> 00:34:10,159 Lè sa a, sèvi ak yon pakèt moun sou teknik. 596 00:34:10,159 --> 00:34:14,889 Apre sa, nou te pale osijè de lè l sèvi avèk these-- ranpa, filtè, fonksyon LAMBDA, 597 00:34:14,889 --> 00:34:19,429 trase sou lis jenere valè nan kèk seri 1 a r, r se 16, 598 00:34:19,429 --> 00:34:20,699 oswa 32 etap nan sekansyèl la. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> Lè sa a, si gen nan yon valè nan ke lis kòm nou ap kouri nan sekansyèl a, 601 00:34:29,920 --> 00:34:34,190 kouri atravè li sou yo ak sou yo, li vire sou sa nòt, 602 00:34:34,190 --> 00:34:36,060 ak vin ki echantiyon deklanche. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Isit la yo se tout diferan fason yo etranj Mwen te vini ak jenere nòt. 605 00:34:47,110 --> 00:34:48,940 Eseye li sou pwòp sòm semi ou yo. 606 00:34:48,940 --> 00:34:50,360 Li pral son fre. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Tan pèmèt, nou pral ale nan sa a. 609 00:34:54,690 --> 00:34:59,200 Men, pou kounye a, mwen devine nou ta dwe Demo sa nou genyen. 610 00:34:59,200 --> 00:35:01,380 Ann espere sa a ale OK. 611 00:35:01,380 --> 00:35:02,670 >> Se konsa, sa a se GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 Epitou, n ap chaje yon dosye Mwen gen yo rele song.lhs, 614 00:35:09,121 --> 00:35:10,620 ki se dosye a mwen jis te montre ou. 615 00:35:10,620 --> 00:35:11,470 OK, gwo. 616 00:35:11,470 --> 00:35:15,010 Kòm Connor te di byen bonè, li konpile, li tape tcheke, 617 00:35:15,010 --> 00:35:18,380 Se konsa, mwen ka respire yon anpil pi fasil. 618 00:35:18,380 --> 00:35:20,010 Li nan pa ale nan kònen moute pou mwen. 619 00:35:20,010 --> 00:35:22,720 >> Mwen t 'vle montre w yon bagay itil. 620 00:35:22,720 --> 00:35:25,900 Ou ka wè ke yon modil chaje rele 50. 621 00:35:25,900 --> 00:35:28,240 Ou ka browse ki modil. 622 00:35:28,240 --> 00:35:32,092 Lè sa a se konsa bèl sou doing-- petèt sa 623 00:35:32,092 --> 00:35:34,550 w ap fè nan Haskell se pa rele devlopman lojisyèl, 624 00:35:34,550 --> 00:35:36,980 men ou ka fè yon anpil nan plezi bagay sou pwòp ou yo. 625 00:35:36,980 --> 00:35:42,410 Apre sa, workflow la se reyèlman bon kòm konpare ak yon anpil nan lòt lang, 626 00:35:42,410 --> 00:35:45,872 paske ou ka wè nan yon vrèman lizib fason sa k ap pase sou. 627 00:35:45,872 --> 00:35:47,830 Se konsa, nou wè ke nou gen tout fraz sa yo, ki 628 00:35:47,830 --> 00:35:53,760 yo se lis nan ton mizik, ak lè sa a nou bati sa yo moute nan yon bagay pi gwo, 629 00:35:53,760 --> 00:35:55,220 ki se yon chante mizik. 630 00:35:55,220 --> 00:35:58,450 Li se yon inite mizik. 631 00:35:58,450 --> 00:36:05,545 Lè sa a, nou ka jwe sa a tout ak yon fonksyon rele mizik jwe. 632 00:36:05,545 --> 00:36:09,040 Ou ka wè ke desann isit la. 633 00:36:09,040 --> 00:36:11,310 Ki se jis jwe. 634 00:36:11,310 --> 00:36:15,040 >> Mwen ta dwe say-- mwen pa t 'pale sou sa a siy dola sa a, se toupatou. 635 00:36:15,040 --> 00:36:17,980 Siy dola se yon lòt operatè inséré. 636 00:36:17,980 --> 00:36:22,500 Men, li gen priyorite ki pi ba nan nenpòt ki operatè, ki efektivman 637 00:36:22,500 --> 00:36:24,960 vle di ke tout bagay sou bò gòch la nan siy a an dola 638 00:36:24,960 --> 00:36:28,460 e yo gen dwa a nan siy lan dola, nou ap ale nan jwenn evalye anvan li. 639 00:36:28,460 --> 00:36:31,430 Se konsa, li sòt de tankou yon lòt fason pou ajoute parantèz. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: Se fondamantalman konpozisyon fonksyon. 642 00:36:36,220 --> 00:36:40,026 Epi, se asire ke ou pa en-si ou gen fonksyon chak bò oswa inséré 643 00:36:40,026 --> 00:36:42,900 operatè sou chak bò, yo pa pral asosye atravè li ak ba ou 644 00:36:42,900 --> 00:36:46,030 rezilta inatandi. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Se konsa, nou can-- lè l sèvi avèk sa, nou ka rele. 646 00:36:49,790 --> 00:36:51,415 Premyèman, nou pral jwe li san yo pa tanbou yo. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Sa a elikoptè a, elikoptè a MIDI. 649 00:37:03,170 --> 00:37:05,495 >> [MIZIK jwe] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Genyen vag nan kare. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Bou nan vwa. 654 00:37:25,490 --> 00:37:27,630 Epi ou ka reyèlman ale nan bwa ak sa. 655 00:37:27,630 --> 00:37:30,872 Mwen te chwazi yon yon sèl trè senp, paske mwen te konnen mwen pa ta dwe mòde koupe 656 00:37:30,872 --> 00:37:31,830 plis pase mwen te kapab moulen. 657 00:37:31,830 --> 00:37:36,460 Jis kenbe l 'trè senp yo montre lide prensipal yo. 658 00:37:36,460 --> 00:37:39,952 Men, lè sa a mwen te tankou, nou te te rive nan ajoute kèk tanbou sa a. 659 00:37:39,952 --> 00:37:41,910 Jis paske sa a se yon ti jan inpénétrabl, 660 00:37:41,910 --> 00:37:45,790 epi mwen pa t 'sèvi ak nan non nan pati yo tanbou, 661 00:37:45,790 --> 00:37:49,490 Mwen trase them-- paske yo ap yon pati nan ki klas enimere, 662 00:37:49,490 --> 00:37:51,500 Mwen trase yo nan antye. 663 00:37:51,500 --> 00:37:53,120 Youn nan se tankou yon tanbou bas. 664 00:37:53,120 --> 00:37:54,370 Zewo se kòm byen. 665 00:37:54,370 --> 00:37:56,000 Sèt se yon chapo segondè. 666 00:37:56,000 --> 00:38:00,920 , Li desann nan isit la ki kote nan fonksyon jwenn yon ti kras pi plis o aza, 667 00:38:00,920 --> 00:38:02,100 sa yo, se tankou tanbou konga. 668 00:38:02,100 --> 00:38:08,360 >> Se konsa, si ou panse sou- petèt yon plezi fason yo aplike yon machin tanbou 669 00:38:08,360 --> 00:38:12,830 se sèvi ak trè lòd modèl sou tanbou bas ou yo. 670 00:38:12,830 --> 00:38:17,640 Se konsa, pou egzanp, sou filtraj sou la lis ak tout bagay ki bay tounen 671 00:38:17,640 --> 00:38:20,590 yon 1 lè li te pran modil 04. 672 00:38:20,590 --> 00:38:27,190 Se konsa, mwen jwenn 1, 5, 9, 13, se konsa sa a 17-- se premye bat la nan chak mezi. 673 00:38:27,190 --> 00:38:32,860 >> Lè sa a, sa a se menm bagay la tou bagay deplase plis pase de etap. 674 00:38:32,860 --> 00:38:33,850 Se konsa, sa a, se décalée nan. 675 00:38:33,850 --> 00:38:37,480 Se konsa, sa a ta ka yon bagay tankou yon chapo segondè. 676 00:38:37,480 --> 00:38:39,640 Lè sa a, ankò, desann isit la, li nan yon ti kras o aza, 677 00:38:39,640 --> 00:38:41,080 paske nou ap fè tanbou konga. 678 00:38:41,080 --> 00:38:44,180 Apre sa, mwen gen kèk maraka desann isit la, tou. 679 00:38:44,180 --> 00:38:50,280 >> Se konsa, mwen te kapab rele jwe machin tanbou, men li ta ale sou pou tout tan, 680 00:38:50,280 --> 00:38:53,700 epi li ta ka kòmanse arachman moute tout memwa a nan sistèm m 'yo. 681 00:38:53,700 --> 00:38:57,090 Se konsa, mwen pral rele sa a fonksyon jwe mizik, ki jan nou pral wè, 682 00:38:57,090 --> 00:39:02,020 itilize truncating konpozisyon sa a paralèl yo jwe ti kras chante FRERE Jacques nou an 683 00:39:02,020 --> 00:39:04,200 ansanm ak sa a machin tanbou etranj. 684 00:39:04,200 --> 00:39:06,190 Se konsa, kite a pran yon gade. 685 00:39:06,190 --> 00:39:10,920 Ak tanpri amelyore sou mwen aranjman nan tout pati yo nan tanbou. 686 00:39:10,920 --> 00:39:13,375 Pa espesyalite mwen, men mwen te gen yon anpil plezi fè li. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [MIZIK jwe] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Se konsa, nan kou, sa a se tout yon ti kras pa tankou plezi 691 00:39:56,980 --> 00:40:01,100 si nou pa ka konvèti li nan yon nòt pou petèt li 692 00:40:01,100 --> 00:40:04,650 ta ka entèprete pa yon sèn moun. 693 00:40:04,650 --> 00:40:06,535 Se konsa, mwen pa pral kouri li isit la. 694 00:40:06,535 --> 00:40:07,910 Mwen te deja te pwodwi dosye yo. 695 00:40:07,910 --> 00:40:10,280 Ou ka wè ke gen nan yon dot lilipon file-- ak sa a 696 00:40:10,280 --> 00:40:14,500 yo pral seg mwen nan men Connor-- ak yon dosye dot MIDI, 697 00:40:14,500 --> 00:40:18,610 ak yon dosye dot PDF yo, ki se ki sa Lilipon pral finalman jenere. 698 00:40:18,610 --> 00:40:23,770 >> Men, sa yo moun sa yo ki Scripts, ak mwen pral jis kouri yo ak opsyon èd yo. 699 00:40:23,770 --> 00:40:28,090 Si w ap resevwa sa yo leve, li kouri ak Euterpea, ou ka jenere yon dosye MIDI. 700 00:40:28,090 --> 00:40:31,160 Lè sa a, soti nan dosye a MIDI ak pwogram MIDI 2LY sa a, 701 00:40:31,160 --> 00:40:34,930 ou ka jenere yon Lily Dosye Pond, ak lè sa a ou 702 00:40:34,930 --> 00:40:37,974 ka jenere yon PDF nan nòt la. 703 00:40:37,974 --> 00:40:39,390 Apre sa, nou ta dwe pran yon gade nan sa a. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Se konsa, Connor pwal pwobableman montre w kouman yo anot sa a pi byen, 706 00:40:55,140 --> 00:41:02,570 men sa a se FRERE Jacques kòm ki te pwodwi pa m 'nan Euterpea. 707 00:41:02,570 --> 00:41:07,300 Li nan jis nan C. mwen ta dwe yo te kalkile konnen ki sa ki Hack nan li la aktyèlman nan. 708 00:41:07,300 --> 00:41:11,090 Men sa se tiyo a pou ki jan ou fè sa ak sa. 709 00:41:11,090 --> 00:41:12,950 Se pou nou pale plis sou lilipon. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Se pou nou wè. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Èske w te mansyone Aprann Ou Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Oh yeah. 714 00:41:22,460 --> 00:41:23,480 Tcheke Aprann Ou Haskell. 715 00:41:23,480 --> 00:41:24,410 Li nan nan resous yo. 716 00:41:24,410 --> 00:41:26,830 Sa a ki jan mwen te kòmanse aprann, epi li gwo. 717 00:41:26,830 --> 00:41:27,580 Pa bèbè aprann. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Se konsa, li nan entènèt. 719 00:41:28,829 --> 00:41:34,760 Se konsa, yon nèg yo te rele [fèbl] learnyouahaskell.com, pa gen espas. 720 00:41:34,760 --> 00:41:37,065 Gramè ki malad. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: Se ilistre, tou. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Se konsa, ki sa ki lilipon? 723 00:41:39,440 --> 00:41:42,480 Li se yon pwogram asèrtif ak lang pou Tipografi mizik. 724 00:41:42,480 --> 00:41:45,480 Se konsa, ou kapab declarative-- panse a bagay sa yo tankou HTML, 725 00:41:45,480 --> 00:41:50,900 kote ou pa ap saying-- HTML pa di ki jan navigatè entènèt yo ta dwe 726 00:41:50,900 --> 00:41:52,180 rann paj etap pa etap. 727 00:41:52,180 --> 00:41:54,096 Li nan jis di sa a se yon deskripsyon textuelle 728 00:41:54,096 --> 00:41:56,100 nan sa ki ou vle paj la yo gade tankou. 729 00:41:56,100 --> 00:41:59,310 >> Lè sa a, li la tou yon pwogram ki compiles ak lang sa a, 730 00:41:59,310 --> 00:42:02,300 oswa li li nan li yo ak Lè sa a, aktyèlman fè Tipografi la pou ou, 731 00:42:02,300 --> 00:42:05,570 epi li krache soti sa yo bèl bagay kap nòt PDF. 732 00:42:05,570 --> 00:42:08,250 Ou kapab tou jwenn fòma PNG oswa kèlkeswa sa. 733 00:42:08,250 --> 00:42:10,300 Yon bon fason yo panse nan sa a se pa analoji 734 00:42:10,300 --> 00:42:16,620 se ke kapòt an latèks se sòt de tankou LillyPond, men pou jis Tipografi òdinè. 735 00:42:16,620 --> 00:42:20,360 Se konsa, olye de- li nan pa Wiziwig: -Kisa ou wè 736 00:42:20,360 --> 00:42:22,960 Se sa ou jwenn, tankou, di Final se, oswa Sibelius, 737 00:42:22,960 --> 00:42:27,430 oswa Microsoft Word, kote ou ka tape nan tan reyèl ak bouyon bagay sa yo nan tan reyèl 738 00:42:27,430 --> 00:42:31,340 ak wè chanjman enstantane. 739 00:42:31,340 --> 00:42:32,140 >> Li baze tèks. 740 00:42:32,140 --> 00:42:35,290 Ou gen konpile ou nòt lè l sèvi avèk yon pwogram separe 741 00:42:35,290 --> 00:42:37,090 epi pou yo jwenn soti pdf pita. 742 00:42:37,090 --> 00:42:43,320 Sa a se yon ti jan mwens pratik pou itilize si w ap 743 00:42:43,320 --> 00:42:46,520 ap eseye ekri dirèkteman nan yon nòt epi w ap 744 00:42:46,520 --> 00:42:48,620 ap eseye konpoze sou òdinatè a. 745 00:42:48,620 --> 00:42:50,830 Men, gen yon anpil nan avantaj pou li. 746 00:42:50,830 --> 00:42:56,110 Youn, li gade yon anpil joli, paske LillyPond kapab aktyèlman 747 00:42:56,110 --> 00:42:58,210 pran tan nan fè desizyon Layout byen, 748 00:42:58,210 --> 00:43:02,380 kontrèman Sibelius oswa Final, ki gen fè algoritm konpwomèt konsa 749 00:43:02,380 --> 00:43:05,020 yo ke yo ka montre bagay sa yo nan tan reyèl. 750 00:43:05,020 --> 00:43:07,660 >> Se konsa, poukisa se LilyPond-- grafik òdinatè se difisil. 751 00:43:07,660 --> 00:43:10,535 Si w ap fè anyen ak mizik , epi ou vle ekri soti nòt, 752 00:43:10,535 --> 00:43:13,900 ou pa vle ekri soti tout bagay nan tèt ou 753 00:43:13,900 --> 00:43:19,040 kòmanse avèk ki jan yo desine baton ak ki jan yo desine notepads. 754 00:43:19,040 --> 00:43:21,020 Trè difisil Li nan. Li te fè l 'anvan. 755 00:43:21,020 --> 00:43:22,170 Ou se amann. 756 00:43:22,170 --> 00:43:26,200 >> Si ou vle sèvi ak Final oswa Sibelius, fòma yo ranpli pou bagay sa yo 757 00:43:26,200 --> 00:43:30,180 se bagay ki konplike anpil, epi ou pa kapab reyèlman sèvi ak yo pwogramasyon. 758 00:43:30,180 --> 00:43:35,020 Ou ka louvri moute Sibelius ak final epi ale nan File, Export PDF kòm tèt ou, 759 00:43:35,020 --> 00:43:37,600 men ou pa ka vrèman rele ki soti nan yon script. 760 00:43:37,600 --> 00:43:40,440 LillyPond, ou ka rele nan men moun Scripts. 761 00:43:40,440 --> 00:43:44,397 Ou te kapab fasilman repekte LillyPond ak kapòt an latèks. 762 00:43:44,397 --> 00:43:47,230 Mwen pa pral gen ke anpil tan yo ale nan teknoloji sa yo kounye a, 763 00:43:47,230 --> 00:43:48,321 men yo egziste. 764 00:43:48,321 --> 00:43:50,070 Si ou vle fè yon gade nan yon liv LillyPond, 765 00:43:50,070 --> 00:43:53,760 li nan yon pwogram ki vini ak distribisyon LillyPond ou, 766 00:43:53,760 --> 00:43:57,030 ak li a pou iteration LillyPond fragman nan kapòt an latèks 767 00:43:57,030 --> 00:44:00,340 si ou vle fè yon bagay tankou yon dokiman Muzikoloji gwo 768 00:44:00,340 --> 00:44:02,289 ak egzanp, pou egzanp. 769 00:44:02,289 --> 00:44:04,580 Lè li nan yon konpetans bon pou lavi si w ap fè anyen 770 00:44:04,580 --> 00:44:05,770 ak mizik, pa sèlman CS50. 771 00:44:05,770 --> 00:44:09,320 Mwen te itilize pou tout LillyPond nan pwojè konpozisyon m ' 772 00:44:09,320 --> 00:44:11,880 depi m 'te fondamantalman yon wo grade nan lekòl segondè. 773 00:44:11,880 --> 00:44:13,455 >> Se konsa, isit la yo se kèk egzanp ki senp. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 Sa a se fondamantalman reprezantan nan nivo a nan difikilte 776 00:44:21,060 --> 00:44:23,481 ki pi fò moun ta figi l 'yo t ap 777 00:44:23,481 --> 00:44:24,980 yo sèvi ak lilipon pou pwojè senp. 778 00:44:24,980 --> 00:44:29,519 Youn premye Sa a se nan konmansman an nan yon prelid Koral pa Bach. 779 00:44:29,519 --> 00:44:31,810 Youn anba Sa a se yon ekstrè soti nan yon nan travay pwòp mwen an, 780 00:44:31,810 --> 00:44:34,650 ak li nan jis gen yo montre ou bagay sa yo tankou [fèbl] 781 00:44:34,650 --> 00:44:38,550 mete liy miltip nan menm bagay la tou anplwaye yo, ki jan lyric undersetting fonksyone. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Tibod Lyric se yon bagay ki trè fasil yo sèvi ak lilipon pou mizik koral. 784 00:44:46,110 --> 00:44:48,814 >> Se konsa, Lè sa a, gen nan kèk plis egzanp konplike isit la. 785 00:44:48,814 --> 00:44:50,980 Tout moun sa yo ap fè nan Lilipon e yo ap posib. 786 00:44:50,980 --> 00:44:55,280 Ekstrè premye Sa a se soti nan [Fèbl] pa [fèbl]. 787 00:44:55,280 --> 00:44:58,860 Lè sa a [fèbl] soti nan yon moso pou bas solo 788 00:44:58,860 --> 00:45:03,550 flit pa [fèbl], ki se yon longtime-- ki 789 00:45:03,550 --> 00:45:07,101 te yon manm depi lontan nan la depatman mizik isit la, mwen panse ke. 790 00:45:07,101 --> 00:45:08,600 Mwen pa si kote l 'te ale yo ale nan. 791 00:45:08,600 --> 00:45:12,410 Men, li te konseye nan Harvard nan Konpozitè Asosyasyon pou yon tan long. 792 00:45:12,410 --> 00:45:13,530 Bèl moun. 793 00:45:13,530 --> 00:45:16,920 Apre sa, li ekri kèk mizik ki gen trè notasyon konplike ki LillyPond 794 00:45:16,920 --> 00:45:20,500 ka Alòske okipe trè joliman. 795 00:45:20,500 --> 00:45:26,030 >> Se konsa, jis ba ou yon sans de sa ki kapasite bagay sa a nan sont- konsa 796 00:45:26,030 --> 00:45:28,960 entèrn yo nan LillyPond yo trè konplike. 797 00:45:28,960 --> 00:45:31,060 Epi ou ka sèvi ak li pou yon bon bout tan, ki gen ladan 798 00:45:31,060 --> 00:45:32,520 pou kèk bèl konplike bagay sa yo, san yo pa vrèman 799 00:45:32,520 --> 00:45:34,060 gen konnen yon anpil sou yo. 800 00:45:34,060 --> 00:45:38,720 Men, lide a debaz se ke sou la pi ba nivo, atòm yo nan LillyPonds 801 00:45:38,720 --> 00:45:39,970 se nòt yo. 802 00:45:39,970 --> 00:45:42,761 Nòt yo genyen yon kontèks rele vwa. 803 00:45:42,761 --> 00:45:44,510 Se konsa, kontèks la vwa fondamantalman koresponn 804 00:45:44,510 --> 00:45:47,410 nan yon sèl liy nan polifoni. 805 00:45:47,410 --> 00:45:49,410 Lè sa a, kontèks kapab genyen yerarchik 806 00:45:49,410 --> 00:45:53,590 nan pi wo yo menm nivo ki reprezante baton sou nòt la 807 00:45:53,590 --> 00:45:56,750 oswa pi gwo gwoupman tankou baton pyano oswa baton koral, 808 00:45:56,750 --> 00:45:58,990 Lè sa a, evantyèlman ak kontèks nòt tout antye. 809 00:45:58,990 --> 00:46:02,260 Epi ou ka aktyèlman kouvri miltip nòt nan yon liv. 810 00:46:02,260 --> 00:46:05,770 >> Tout kontèks gen yon kantite ENGRAVERS tache. 811 00:46:05,770 --> 00:46:08,340 Si ou gade nan nan sa nan yon kontèks 812 00:46:08,340 --> 00:46:14,410 epi enprime yon senbòl sèten oswa yon sèten klas nan senbòl sa nesesè. 813 00:46:14,410 --> 00:46:17,840 Se konsa, yo chak kontèks vwa, gen nan [fèbl] nòt 814 00:46:17,840 --> 00:46:24,270 Owoliyab ki se fondamantalman yon fonksyon oswa yon bagay ki ekri soti tout nòt la 815 00:46:24,270 --> 00:46:26,290 tèt sou pati pyès sa yo dwa nan yon paj. 816 00:46:26,290 --> 00:46:29,510 Lè sa a, gen nan yon Owoliyab fann, ki ekri soti tèt gwo sou anplwaye a. 817 00:46:29,510 --> 00:46:31,517 Lè sa a, gen nan yon metronom make Owoliyab ki 818 00:46:31,517 --> 00:46:33,100 ekri soti mak metronom nan yon nòt. 819 00:46:33,100 --> 00:46:36,410 Apre sa, tout bagay sa yo anfòm bèl byen nan yerachi a. 820 00:46:36,410 --> 00:46:39,500 Lè li nan trè, trè, trè customizable, ki ou bezwen 821 00:46:39,500 --> 00:46:42,880 si ou vle jwenn bagay sa yo tankou sa. 822 00:46:42,880 --> 00:46:45,730 >> Se konsa, tout yo gen yon kontèks anpil nan atribi diferan 823 00:46:45,730 --> 00:46:52,410 ke ou ka modifye pou tout bagay soti nan espas la nan divès font 824 00:46:52,410 --> 00:46:54,942 seleksyon gwosè nan bagay sa yo. 825 00:46:54,942 --> 00:46:56,900 Si ou vle fè menm bagay ki pi konplike, 826 00:46:56,900 --> 00:46:59,210 gen nan yon lang scripting entegre. 827 00:46:59,210 --> 00:47:01,820 Yo sèvi ak konplo, ki se dyalèk nan zozote. 828 00:47:01,820 --> 00:47:04,960 Sa yo pwobableman pa fè sa vle di anyen nan ou. 829 00:47:04,960 --> 00:47:06,900 Men, fondamantalman, yon konplo yon lòt fonksyonèl 830 00:47:06,900 --> 00:47:09,500 lang programmation, plis oswa mwens. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: menm kantite vòt-nan a. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Yeah. 833 00:47:12,690 --> 00:47:15,390 Li se yon bon menm kantite vòt-nan, Mwen ta kwè. 834 00:47:15,390 --> 00:47:20,150 Apre sa, li la itilize kòm yon lang ansèyman, aktyèlman, desann Mass Ave. Nan MIT. 835 00:47:20,150 --> 00:47:26,590 Apre sa, li trè sou la men pou LillyPond pou plizyè rezon teknik. 836 00:47:26,590 --> 00:47:30,317 >> Se konsa, si ou vle fè senp reglaj depann sou kondisyonal, 837 00:47:30,317 --> 00:47:32,900 pou example-- gen nan sèten kondisyon pou yon nòt ki nan te rankontre, 838 00:47:32,900 --> 00:47:36,495 fè amenajman nan la Layout oswa whatnot-- Lè sa a, 839 00:47:36,495 --> 00:47:37,620 fasilite sa yo se a. 840 00:47:37,620 --> 00:47:38,667 Yo ap konplike. 841 00:47:38,667 --> 00:47:40,250 Se konsa, isit la nan yon echantiyon Kòd trè senp. 842 00:47:40,250 --> 00:47:43,810 Li nan senk liy yo. 843 00:47:43,810 --> 00:47:46,120 Fondamantalman, mwen defini de baton. 844 00:47:46,120 --> 00:47:46,904 Li nan nan 3/4. 845 00:47:46,904 --> 00:47:48,695 Anplwaye nan premye gen yon tache tèmpo make, 846 00:47:48,695 --> 00:47:51,110 men sa a aktyèlman pral yo ale sou li nan yon nòt nan tout antye, 847 00:47:51,110 --> 00:47:54,960 paske mak tèmpo yo sou nivo nan nòt yo. 848 00:47:54,960 --> 00:47:59,044 Owoliyab la metronom make se tache ak nòt kontèks. 849 00:47:59,044 --> 00:48:01,460 Gen kle diferan, paske [fèbl] Owoliyab la 850 00:48:01,460 --> 00:48:02,710 se tache baton yo. 851 00:48:02,710 --> 00:48:04,441 Ou ka aktyèlman fè se. 852 00:48:04,441 --> 00:48:06,190 Echantiyon an mwen te ekri se aktyèlman nan C pi gwo, 853 00:48:06,190 --> 00:48:07,990 men li la jis yo demontre ou ka gen 854 00:48:07,990 --> 00:48:09,570 kle diferan nan baton diferan. 855 00:48:09,570 --> 00:48:15,710 Apre sa, sentaks la debaz se ou ekri sonje non ak E, F, G, kèlkeswa sa. 856 00:48:15,710 --> 00:48:18,910 Si ou vle fè alterasyon, ou sifiks IS oswa ES. 857 00:48:18,910 --> 00:48:22,640 Sa a se soti nan Dutch konvansyon muzikolojik. 858 00:48:22,640 --> 00:48:28,290 >> Ak fè franchi oktav, ou gen yo sèvi ak sa yo tik mak, vigil oswa apostwòf. 859 00:48:28,290 --> 00:48:30,580 Relatif nan jis vle di tou sa ou gen yon nòt, 860 00:48:30,580 --> 00:48:34,080 li pral otomatikman dwe plaec nan la oktav pi pre nan yon sèl la anvan yo. 861 00:48:34,080 --> 00:48:37,624 Men, si ou vle sote plis pase yon fifth-- di yon senkyèm oswa more-- 862 00:48:37,624 --> 00:48:39,165 lè sa a ou gen yo sèvi ak [fèbl a]. 863 00:48:39,165 --> 00:48:42,580 Men, otreman, ou pa bezwen presize oktav la nan chak nòt sèl. 864 00:48:42,580 --> 00:48:46,130 >> Apre sa, manm fanmi C, pwemye, ak C, ou jis presize mitan C 865 00:48:46,130 --> 00:48:48,630 ak baz C, espesyalman premye nòt. 866 00:48:48,630 --> 00:48:55,020 Lè sa a, ou gen baton sa yo ki òganize de vwa oswa echantiyon nan mizik sa yo, 867 00:48:55,020 --> 00:48:56,730 epi ou gen yon nòt. 868 00:48:56,730 --> 00:48:58,440 Epi sa sanble tankou sa a. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Si ou vle pran tan nan kopi ki echantiyon nan LillyPond 871 00:49:05,380 --> 00:49:07,530 Kòd sou anvan an glise desann isit la, epi ou 872 00:49:07,530 --> 00:49:09,030 ka ekri li pou LillyPond tèt ou. 873 00:49:09,030 --> 00:49:11,280 Mwen konnen nou te gen yon bagay ki sanble yon sanble anpil ak sa a. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Se konsa, gen nan yon lòt teknoloji rele Mizik XML konsève 876 00:49:19,610 --> 00:49:22,030 pa moun ki pale konplètman diferan. 877 00:49:22,030 --> 00:49:28,150 XML se yon textuelle done structure-- mwen pa ta dwe di done structure-- di 878 00:49:28,150 --> 00:49:29,580 metafò kat jeyografik sòt de. 879 00:49:29,580 --> 00:49:33,800 Apre sa, li la ki fèt yo kenbe done yerarchize trè byen. 880 00:49:33,800 --> 00:49:37,050 HTML, pou egzanp, se yon kalite XML. 881 00:49:37,050 --> 00:49:41,090 Epi ou ka di XML paske yo te gen tout parantèz yo ang ak ang 882 00:49:41,090 --> 00:49:44,700 mak koupe bracket ki montre done jaden. 883 00:49:44,700 --> 00:49:47,390 >> Mwen pa gen yon kòd egzanp soti nan Klas Mizik XML. 884 00:49:47,390 --> 00:49:50,450 Ou ka jwenn li tèt ou. 885 00:49:50,450 --> 00:49:53,735 Fondamantalman, rezon ki fè yo ou ta ka vle yo sèvi ak XML kòm etap la entèmedyè 886 00:49:53,735 --> 00:49:55,980 se, premye a tout moun, li nan yon fòma echanj 887 00:49:55,980 --> 00:50:02,301 pou fondamantalman every-- mwen pa ta dwe di chak, men yon anpil nan diferan ak nòt 888 00:50:02,301 --> 00:50:02,800 ekriven. 889 00:50:02,800 --> 00:50:04,966 Se konsa, si ou ekri nan Klas Mizik XML, pa sèlman ka LillyPond 890 00:50:04,966 --> 00:50:08,080 li li l 'avèk èd nan oksilyè sa a pwogram yo rele XML Mizik LY, 891 00:50:08,080 --> 00:50:11,360 men tou, Final ka li li, Sibelius ka li li. 892 00:50:11,360 --> 00:50:14,770 Tou depan de ki jan objè entèn ou yerachi travay pou reprezante mizik, 893 00:50:14,770 --> 00:50:18,820 li ta kapab pi fasil yo ekri soti Klas Mizik XML pase yo LillyPond 894 00:50:18,820 --> 00:50:22,410 ak jis konte sou XML Mizik LY fè konvèsyon an. 895 00:50:22,410 --> 00:50:24,282 >> Mwen pa panse [fèbl] gen XML Klas Mizik. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: Li pa fè sa. 897 00:50:25,490 --> 00:50:26,340 Yon moun ap travay sou li, menm si. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea pa gen yon XML Mizik pwodiksyon fonksyon ankò. 900 00:50:31,040 --> 00:50:35,340 Si ou vle yon lide pwojè final la, petèt jwenn an kontak ak mesye 901 00:50:35,340 --> 00:50:38,620 ki Stephen konnen, ak yo te kapab sèvi ak èd-ou. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Mwen ta renmen sa. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Epitou, fondamantalman, chak lang pwogramasyon 904 00:50:43,450 --> 00:50:46,610 sa a, se vo sèl li yo deja gen yon bibliyotèk XML, 905 00:50:46,610 --> 00:50:51,030 pou ou kapab intern konvèti tout nan mizik ou a nan kèk objè 906 00:50:51,030 --> 00:50:54,120 ki bibliyotèk la XML ka ekri soti ke ta ka mande mwens 907 00:50:54,120 --> 00:50:57,470 chanjman nan estrikti entèn ou pou kèlkeswa mizik objè ou 908 00:50:57,470 --> 00:51:00,310 vle ekri pase ekri li dirèkteman nan LillyPond ta. 909 00:51:00,310 --> 00:51:04,380 Lè sa a, jis enprime li soti ak XML ak bibliyotèk yo XML nan lang ou, 910 00:51:04,380 --> 00:51:07,260 ki pral garanti ke li nan syntactically kòrèk epi yo tout bagay, 911 00:51:07,260 --> 00:51:08,720 ak Lè sa a konvèti li nan LillyPond. 912 00:51:08,720 --> 00:51:11,060 Se konsa, teknoloji ou ta ka vle gade nan si w ap fè yon bagay 913 00:51:11,060 --> 00:51:11,650 tankou sa a. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Fèbl], yon lòt auxilarry teknoloji. 916 00:51:16,370 --> 00:51:21,700 Sa a se fondamantalman Tech Works oswa Studio Tech pou LillyPond. 917 00:51:21,700 --> 00:51:25,380 Se konsa, li ofri èd ak sentaks, ak modèl 918 00:51:25,380 --> 00:51:28,770 pou plizyè komen konbinezon nan enstriman mizik. 919 00:51:28,770 --> 00:51:32,780 Li pèmèt fann ekran gade konsa ou ka gen kòd ou a nan yon sèl fenèt 920 00:51:32,780 --> 00:51:37,350 ak PDF nan yon lòt fenèt ak klike sou kote nan PDF la 921 00:51:37,350 --> 00:51:40,650 Ale nan ki enpòtan a tach nan kòd sous ou yo. 922 00:51:40,650 --> 00:51:45,330 Sa a se pi plis itil si w ap aktyèlman ekri LillyPond depoze tèt ou 923 00:51:45,330 --> 00:51:47,400 pase si w ap génération yo pwogramasyon. 924 00:51:47,400 --> 00:51:51,230 Men, ankò, li nan yon bagay itil nan genyen. 925 00:51:51,230 --> 00:51:51,970 >> Great. 926 00:51:51,970 --> 00:51:55,860 Yon lòt resources-- mwen pral jis ale nan sa a trè vit. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond gen ekselan dokiman sou sit entènèt li yo. 928 00:52:01,270 --> 00:52:02,270 Yo gen yon leson patikilye. 929 00:52:02,270 --> 00:52:03,478 Yo gen yon referans sentaks. 930 00:52:03,478 --> 00:52:07,010 Yo gen dè santèn de koupe pou plizyè ti bagay 931 00:52:07,010 --> 00:52:09,930 Yo ta ka bezwen fè yo demontre divès kalite kapasite. 932 00:52:09,930 --> 00:52:12,250 Si ou vle sèvi ak lang nan scripting 933 00:52:12,250 --> 00:52:14,740 oswa fè plis vaste pèrsonalizasyon, lè sa a gen nan 934 00:52:14,740 --> 00:52:16,730 entèrn referans lè sa URL. 935 00:52:16,730 --> 00:52:21,950 Si ou vle sèvi ak XML Mizik, gen nan ki URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> Lè sa a, si ou bezwen aprann konplo paske ou aktyèlman vle sèvi ak 937 00:52:27,960 --> 00:52:30,960 fasilite yo scripting an LillyPond, Lè sa a, gen nan yon [fèbl] rele 938 00:52:30,960 --> 00:52:32,918 Estriktire Entèpretasyon nan Pwogram konpitè, 939 00:52:32,918 --> 00:52:35,820 ki se pa sèlman dezyèm lan pi gran liv CS janm written-- 940 00:52:35,820 --> 00:52:39,770 jwenn mwen apre sa si ou vle konnen sa mwen panse pi gran yon sèl is-- nan 941 00:52:39,770 --> 00:52:43,580 men li la tou yon trè bon entwodiksyon nan lang ki apwopriye a. 942 00:52:43,580 --> 00:52:46,630 Ou pa pral bezwen plis pase premye seksyon yo ki kèk. 943 00:52:46,630 --> 00:52:47,827 >> Epi sa a, li. 944 00:52:47,827 --> 00:52:48,410 Nenpòt kesyon? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> ELÈV: Ki kote mwen ka telechaje ou pwodwi FRERE Jacques 947 00:52:57,972 --> 00:53:01,050 pou m ka mete l 'sou iPod mwen an? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Bon, ou ka ekri soti nan kèk dosye wav nan Euterpea. 949 00:53:07,574 --> 00:53:08,490 Epi ou gen kòd la. 950 00:53:08,490 --> 00:53:10,000 Li nan sou GitHub. 951 00:53:10,000 --> 00:53:15,590 Fè pwòp ou a nan varyasyon FRERE Jacques pa CS50 ruch tèt ou. 952 00:53:15,590 --> 00:53:17,095 Li ta gen gwo pouvwa. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Nenpòt moun ki lòt bagay? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Nou bezwen yon pi bon tanbou bas, tou. 955 00:53:20,261 --> 00:53:21,935 Li nan reyèlman move. 956 00:53:21,935 --> 00:53:26,565 >> ELÈV: Euterpea gen pa sèlman bò konpozisyon, men signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Wi. 958 00:53:27,440 --> 00:53:30,100 An reyalite, travay I te fè nan Euterpea lè m ' 959 00:53:30,100 --> 00:53:33,450 pran sa a men gen nan yon gradye kou nan Yale ki 960 00:53:33,450 --> 00:53:35,900 sèvi ak l-- te sou sentèz son. 961 00:53:35,900 --> 00:53:39,810 Se konsa, gen nan yon reyèlman bèl fason l sèvi avèk flèch 962 00:53:39,810 --> 00:53:46,150 ak kèk nan notasyon a nou te wè a konpozisyon ansanm fonksyon siyal. 963 00:53:46,150 --> 00:53:50,610 An patikilye, Bass la pou pifò nan yo se jis yon senp vag sinis. 964 00:53:50,610 --> 00:53:54,240 Men, si ou kòmanse konpozisyon moun nan etranj fason pwogramatik, 965 00:53:54,240 --> 00:54:00,010 ou ka jwenn fou son efè, tankou kaskad etranj. 966 00:54:00,010 --> 00:54:04,640 Ou ka kreye trè courageux son ak yon anpil nan batman. 967 00:54:04,640 --> 00:54:07,730 >> Mwen te fè yon pwojè sou granulaire sentèz, ki se 968 00:54:07,730 --> 00:54:12,290 yon kote nan ant FM ak pran echantiyon. 969 00:54:12,290 --> 00:54:15,230 Ou pran piti anpil, echantiyon ti kras, ak Lè sa a 970 00:54:15,230 --> 00:54:20,440 konbine yo ak kèk sòt de modulation ak konstwi yon son pi rich. 971 00:54:20,440 --> 00:54:24,900 Nou menm tou nou te fè modèl fizik, se konsa ap eseye panse osijè de fizik la 972 00:54:24,900 --> 00:54:29,410 ak psikoakoustik nan yon bagay tankou yon klewon, ak panse sou wout la 973 00:54:29,410 --> 00:54:32,320 son an se rebondi koupe klòch an bay siyal la 974 00:54:32,320 --> 00:54:35,200 ak acoustique yo nan sal la ak modèl 975 00:54:35,200 --> 00:54:40,195 ke ak osilateur yo de baz yo. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Mèsi anpil. 978 00:54:48,940 --> 00:54:50,140 Mèsi pou vini yo. 979 00:54:50,140 --> 00:54:52,400 Apre sa, mwen se toujou vle pran kesyon pa 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: Yeah. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Fre. 984 00:55:00,360 --> 00:55:01,667