1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Szia. 3 00:00:05,930 --> 00:00:06,820 Én Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Én egy CS50 CA Harvardon. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Én vagyok Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Én egy TF CS50 a Yale-en. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: És mi beszélni fogunk néhány technológiák, hogy lehet, 8 00:00:15,790 --> 00:00:18,880 kívánja használni, ha érdekel ennek során a végleges projekt vagy tényleg 9 00:00:18,880 --> 00:00:20,920 semmit zenével. 10 00:00:20,920 --> 00:00:24,400 Fogunk összpontosítani először programozási nyelv nevű Haskell. 11 00:00:24,400 --> 00:00:26,280 Ez egy funkcionális nyelv, így a paradigma 12 00:00:26,280 --> 00:00:29,620 nagyon különbözik a C vagy PHP vagy más kényszerítő nyelveken 13 00:00:29,620 --> 00:00:33,450 hogy már használatban van, és különösen a A könyvtár írt Haskell 14 00:00:33,450 --> 00:00:40,240 nevű Euterpea, melyek elősegítik az emberek A zeneírás funkcionálisan, 15 00:00:40,240 --> 00:00:40,780 alapvetően. 16 00:00:40,780 --> 00:00:43,400 És Stephen átvisz egy jó példa erre. 17 00:00:43,400 --> 00:00:46,423 >> Ezt követően fogom bemutatni, hogy úgynevezett LillyPond, amely 18 00:00:46,423 --> 00:00:48,370 olyan technológia betűszedő zenét. 19 00:00:48,370 --> 00:00:50,830 Ez a fajta, mint a LaTeX a zene, ha valakinek 20 00:00:50,830 --> 00:00:57,530 használt LaTeX matematikai osztályok vagy Más Pset osztályok, vagy mit. 21 00:00:57,530 --> 00:01:00,440 És ezért adok neked, ismét néhány egyszerű példát, hogy 22 00:01:00,440 --> 00:01:03,640 és pont akkor az általános irányába néhány jobb források. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: A Emellett úgy gondoltuk, 24 00:01:04,319 --> 00:01:06,720 jó lenne létrehozni egy kis tanácsok 25 00:01:06,720 --> 00:01:10,780 felé gázvezeték között Euterpea generált MIDI-fájlok 26 00:01:10,780 --> 00:01:13,910 A LillyPond, tehát minden Néhány utasítást szkriptek 27 00:01:13,910 --> 00:01:16,310 erre, amelyek ellátva LillyPond 28 00:01:16,310 --> 00:01:19,160 csak hogy tartsa nyílt forráskódú és kap egy vezeték megy. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Ismét hangsúlyoznunk kell, 30 00:01:20,910 --> 00:01:23,100 E két technológia, akkor Nem kell használni őket. 31 00:01:23,100 --> 00:01:25,370 Ők nem tervezték, hogy a együtt, bár ők nagyon szépen. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Így van. 33 00:01:26,362 --> 00:01:30,116 És teljesen ingyenes. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Tehát elismerések, csak olvastam, hogy. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: kellően megállapított. 36 00:01:33,406 --> 00:01:36,360 Köszönet azoknak, emberek. 37 00:01:36,360 --> 00:01:39,180 Ez fogok habozik egy pillanatra. 38 00:01:39,180 --> 00:01:41,560 A telepítési folyamat egy kicsit trükkös. 39 00:01:41,560 --> 00:01:45,420 Van egy olvasott nekem a GitHub hogy akkor vess egy pillantást. 40 00:01:45,420 --> 00:01:47,840 Csak írjon nekem, ha bármilyen kérdése van. 41 00:01:47,840 --> 00:01:52,829 De majd futtatni ezt a feltételezéssel hogy ez működik mindenkinek. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: És ha nem tudsz kap LillyPond dolgozni, nem nagy ügy. 43 00:01:55,620 --> 00:02:00,139 Nincs élő összeállítás, részt fog venni, legalábbis az én vége. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell és LillyPond kell mindkettő szerelők. 45 00:02:02,930 --> 00:02:08,497 Euterpea letöltődik a csomag, így tovább és így tovább. 46 00:02:08,497 --> 00:02:10,080 Így beszélünk számítógépes zene. 47 00:02:10,080 --> 00:02:12,990 És ez csak egy Nagyon 50.000 láb kilátás. 48 00:02:12,990 --> 00:02:15,700 Van néhány különböző szempontjait is. 49 00:02:15,700 --> 00:02:18,120 És ez durva és fog eltakarni néhány részlet. 50 00:02:18,120 --> 00:02:22,090 De eszünkbe jutott valami mint algoritmikus kompozíció, 51 00:02:22,090 --> 00:02:24,920 algoritmusok segítségével, kóddal, hogy létrehoz 52 00:02:24,920 --> 00:02:30,280 valamilyen of-- talán egy önhasonló sorozata jegyzetek, vagy talán jegyzetek 53 00:02:30,280 --> 00:02:33,330 Bizonyos kényszer. 54 00:02:33,330 --> 00:02:35,350 És akkor ezek lehetnek elvégzett vagy értelmezni 55 00:02:35,350 --> 00:02:38,390 analóg műszerek vagy ilyesmi. 56 00:02:38,390 --> 00:02:42,010 De a készítmény volt kész algoritmus. 57 00:02:42,010 --> 00:02:45,120 >> Persze, lehet, hogy a terület számítógépes zene vagy digitális zene 58 00:02:45,120 --> 00:02:48,870 mi jobban ismerik a digitális hangszintézist vagy digitális mintavételi 59 00:02:48,870 --> 00:02:51,160 és digitális felvételt. 60 00:02:51,160 --> 00:02:55,650 Sok digitális eszközök keresztül történik a digitális mintavétel. 61 00:02:55,650 --> 00:03:00,110 Sőt, mi lesz használva az egyik ilyen, formájában egy hang font könyvtár később. 62 00:03:00,110 --> 00:03:02,850 >> De van még valami, nevezzük digitális szintézis hogy kijött 63 00:03:02,850 --> 00:03:08,650 A '70 -es évek végén és a 80-as években Yamaha és John Chowning a Stanford 64 00:03:08,650 --> 00:03:11,990 Ennek FM szintézis vagy Frekvenciamoduláció szintézis, 65 00:03:11,990 --> 00:03:15,100 ahol volt egy fuvarozó jelet, és a moduláló jellel 66 00:03:15,100 --> 00:03:18,270 mind az audio spektrum. 67 00:03:18,270 --> 00:03:22,570 De mit is összpontosít ma egy úgynevezett MIDI, 68 00:03:22,570 --> 00:03:25,040 és persze, az algoritmikus kompozíció. 69 00:03:25,040 --> 00:03:30,940 >> Nem fogunk tenni eszközök, de mi inkább megy, hogy egy kis zenét, 70 00:03:30,940 --> 00:03:33,940 majd, hogy lesz értelmezhető Egyes eszközök 71 00:03:33,940 --> 00:03:38,300 a mindig illeszkednek a általános MIDI szabvány. 72 00:03:38,300 --> 00:03:40,830 Szóval mi MIDI? 73 00:03:40,830 --> 00:03:45,550 Nem fogom, hogy túl mélyen bele, de MIDI adatátviteli protokoll. 74 00:03:45,550 --> 00:03:49,250 Ez egyfajta útmutató szerte különböző vállalatok és iparágak 75 00:03:49,250 --> 00:03:52,250 rendezésére hangok vagy foltok. 76 00:03:52,250 --> 00:03:54,170 Szóval majd meglátjuk, hogy van egy MIDI szabvány 77 00:03:54,170 --> 00:03:57,500 az összes különböző ütőhangszerek hangok és MIDI ajánlások 78 00:03:57,500 --> 00:04:01,360 az összes különböző típusú Synth vagy különböző típusú minden, a műszer 79 00:04:01,360 --> 00:04:03,650 csoportok egy zenekarban, mondják. 80 00:04:03,650 --> 00:04:08,916 >> Te bizonyára ismeri 0-tól 127-MIDI üzeneteket. 81 00:04:08,916 --> 00:04:12,920 A MIDI jelet általában Egy kicsit jelezve 82 00:04:12,920 --> 00:04:16,130 hogy ez egy adat vagy állapot csomagban, és akkor ott van 83 00:04:16,130 --> 00:04:18,589 hét bit egy jel. 84 00:04:18,589 --> 00:04:21,430 És ezek az ellenőrzés mindent volumene 85 00:04:21,430 --> 00:04:25,330 hogy az intézkedés vagy nyomás egy adott billentyűt 86 00:04:25,330 --> 00:04:29,400 ha te teljesítő egy MIDI vezérlővel, valamint, természetesen, 87 00:04:29,400 --> 00:04:31,250 jegyzeteket. 88 00:04:31,250 --> 00:04:33,450 És persze, MIDI van rendkívül hasznos, 89 00:04:33,450 --> 00:04:37,550 mert ez egy módja annak, hogy vezeték együttesen vagy lánc 90 00:04:37,550 --> 00:04:41,570 egy csomó MIDI hardver eszközök. 91 00:04:41,570 --> 00:04:44,050 Van hét vagy nyolc vissza a házamban. 92 00:04:44,050 --> 00:04:46,610 Nem lesz igazán bonyolult, de ez nagyon erős. 93 00:04:46,610 --> 00:04:47,460 És ez nagyon régi. 94 00:04:47,460 --> 00:04:51,117 Ez a '80 -as évek elején, és ez nagyon szép és kicsi. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Igen. 96 00:04:51,950 --> 00:04:54,230 Az összes klasszikus Nintendo videojátékok lenne talán 97 00:04:54,230 --> 00:04:56,088 Van MIDI fájlokat a zene, például. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Íme egy Például az általános MIDI, 100 00:05:01,740 --> 00:05:06,520 mutató MIDI egyfajta Az általános protokoll. 101 00:05:06,520 --> 00:05:13,280 És azt hiszem, el tudunk képzelni a különbség a specifikáció 102 00:05:13,280 --> 00:05:17,830 hogy legyen valami ilyesmi Ezek hangszer és a tényleges 103 00:05:17,830 --> 00:05:21,740 megvalósítása ezen eszközök hangok Egy hang betűtípust vagy egy adott MIDI 104 00:05:21,740 --> 00:05:25,740 szintetizátor, hogy a különbség között talán egy typeface--, amely azt mondja, 105 00:05:25,740 --> 00:05:30,350 általában ez a tervezés ebben a konkrét módját, hogy képviselje 106 00:05:30,350 --> 00:05:35,907 jellemek és egy betűtípus amelyek egy meghatározott méretű és hangszín, 107 00:05:35,907 --> 00:05:37,240 és van megvalósítása the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Talán egy jobb összehasonlítást lenne 109 00:05:39,156 --> 00:05:43,430 a Unicode szabvány says-- ez ad Számos minden karaktert, és tényleg 110 00:05:43,430 --> 00:05:46,830 Minden nyelv a világon, vagy egy hatalmas sor szkriptek nyelv 111 00:05:46,830 --> 00:05:51,310 a világon, majd ezek renderelt valami grafikai 112 00:05:51,310 --> 00:05:53,710 különböző betűkészlet-csomagokat. 113 00:05:53,710 --> 00:05:56,630 És természetesen, lehet gondolni MIDI, mint az Unicode hang. 114 00:05:56,630 --> 00:06:03,250 És ez csak egy lista of-- egy nagy folyam Az események és eszközök és miegymás, 115 00:06:03,250 --> 00:06:06,090 és van, hogy van egy külön programot, mint egy betűtípust, 116 00:06:06,090 --> 00:06:08,537 teszi, hogy a valamit, ami hallható. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Miért Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell egy funkcionális programozási nyelvet, nagyon fejlett, 120 00:06:19,110 --> 00:06:22,770 nagyon eltér a C, nagyon különbözik a PHP. 121 00:06:22,770 --> 00:06:28,120 És fogunk látni, hogy van egy Könnyű funkció összetételű Haskell 122 00:06:28,120 --> 00:06:37,640 amely lehetővé teszi számunkra, hogy szél a alkotó vagy gépelés, átírására, 123 00:06:37,640 --> 00:06:42,160 valami ilyesmit Frere Jacques, ez az egyszerű dal, 124 00:06:42,160 --> 00:06:46,815 van egy csomó alkatrész benne, hogy önálló hasonló vagy ismétlődő. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Szóval ez lesz néhány, A motiváció, amiért 127 00:06:53,250 --> 00:06:59,400 mi használ Haskell, amelyben funkciók első osztályú állampolgárok. 128 00:06:59,400 --> 00:07:01,120 >> És szerettem volna kiterjeszteni ez egy kicsit. 129 00:07:01,120 --> 00:07:08,800 Ez egy kicsit könnyű notate Frere Jacques Haskell. 130 00:07:08,800 --> 00:07:12,100 De mi van, ha azt akartuk, hogy adjunk hozzá egy dob része rá? 131 00:07:12,100 --> 00:07:17,320 Mi lenne, ha ki akartam próbálni, hogy olyasmi, mint egy Roland 808, illetve 909 dob 132 00:07:17,320 --> 00:07:20,970 gép, ahol van mintegy 16 különböző lépéseket? 133 00:07:20,970 --> 00:07:24,590 Általában ezek úgy, mint 16. megjegyzi. 134 00:07:24,590 --> 00:07:28,640 És akkor az ellenőrzés a globális tempó, és akkor vedd ki 135 00:07:28,640 --> 00:07:34,620 egy csomó különböző ütős alkatrészek A lábdob, a taps, a különböző csapdákat, 136 00:07:34,620 --> 00:07:37,540 nyitott és zárt nagy kalapok a következő fajta csatornák, 137 00:07:37,540 --> 00:07:41,600 és akkor kiegyenlíti, vagy igazítaniuk hangerőt. 138 00:07:41,600 --> 00:07:45,290 >> És majd meglátjuk egy szép utat Haskell a képviselő ezt a lépést 139 00:07:45,290 --> 00:07:48,810 sorrendvezérlő az összes különböző klassz dolgokat Haskell 140 00:07:48,810 --> 00:07:53,100 tehetünk generátor listák és szűrés fölött listákat, 141 00:07:53,100 --> 00:07:56,060 térképezés több mint listákat, térképezés funkcióit az listákat. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 És egy gyors bocsánatkérést. 144 00:08:00,760 --> 00:08:05,300 Ez egy nagyon felületes és túlságosan gyors vázlatot 145 00:08:05,300 --> 00:08:07,620 Egyes szempontok A Haskell és Euterpea, 146 00:08:07,620 --> 00:08:11,760 amely a terület-specifikus beágyazott nyelven íródott 147 00:08:11,760 --> 00:08:14,970 Haskell zenei típusok. 148 00:08:14,970 --> 00:08:17,350 Ezért kérjük, ne nézd meg a kódot az interneten. 149 00:08:17,350 --> 00:08:22,404 Indítsd GHCI, amely a Glasgow Haskell Compiler tolmács. 150 00:08:22,404 --> 00:08:24,320 És fogok csinálni néhány ennek egy kicsit 151 00:08:24,320 --> 00:08:25,880 így láthatja, hogyan kell ezt csinálni. 152 00:08:25,880 --> 00:08:31,021 >> És ez lehetővé teszi, hogy töltsön be the-- a szintaxis vastagbél majd 153 00:08:31,021 --> 00:08:31,520 A parancs. 154 00:08:31,520 --> 00:08:33,510 Ön tudja tölteni a fájlokat. 155 00:08:33,510 --> 00:08:36,840 Használhatja Tallózás a fájlok hogy az összes funkciót, hogy 156 00:08:36,840 --> 00:08:39,169 létezik egy adott modult. 157 00:08:39,169 --> 00:08:43,850 És akkor, mint látni fogjuk, fajtáját és típusát osztályok annyira fontos Haskell, 158 00:08:43,850 --> 00:08:48,850 így mindig check-- különösen ha dolgozik egy új dscl 159 00:08:48,850 --> 00:08:51,600 mint ez, mi az a zene típusa? 160 00:08:51,600 --> 00:08:55,114 Tudom, hogy milyen módon numerikus típusok dolgoznak Haskell, 161 00:08:55,114 --> 00:08:56,530 de én nem sokat tudok zenét. 162 00:08:56,530 --> 00:09:01,280 De akkor tárja fel, ahogy ők által meghatározott ezzel t, vagy írja be a command 163 00:09:01,280 --> 00:09:04,577 és akkor még egy adott funkciót, vagy egy adat objektumot. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Igen. 165 00:09:05,410 --> 00:09:09,820 Ha azt hitted, C és csenget volt hardass típusairól, 166 00:09:09,820 --> 00:09:11,230 Önnek fogalma sincs arról Haskell. 167 00:09:11,230 --> 00:09:14,230 A jó dolog az, hogy Haskell ha nem kap a kódot összeállításához 168 00:09:14,230 --> 00:09:16,790 és ha Haskell típusú ellenőrzések, ez talán jobb, 169 00:09:16,790 --> 00:09:18,675 mert a típusú rendszer annyira szigorú. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Igen. 171 00:09:20,090 --> 00:09:21,980 Szóval csak azt akarom, hogy menjen through-- és újra, 172 00:09:21,980 --> 00:09:27,160 ezt nem csinálja justice-- néhány a funkciók a Haskell, hogy legalább 173 00:09:27,160 --> 00:09:31,780 annak creators-- és jött létre az 1980-as egy csomó ember, 174 00:09:31,780 --> 00:09:34,610 A bizottság 20 people-- gondoltam fontosak voltak. 175 00:09:34,610 --> 00:09:36,850 És az első dolog, felsorolt ​​egy papírt, hogy 176 00:09:36,850 --> 00:09:41,890 leírt genezise Haskell az év első 20 év során, 177 00:09:41,890 --> 00:09:43,390 volt, hogy lusta. 178 00:09:43,390 --> 00:09:44,990 Tehát mit jelent ez? 179 00:09:44,990 --> 00:09:49,860 >> Nos, ez azt jelenti, ha van valamiféle véleménynyilvánítás, meg kell, hogy értékelje azt. 180 00:09:49,860 --> 00:09:54,390 És Haskell Teszi ezt annak hívás által szükségessége módon, vagy egy nem-szigorú módon. 181 00:09:54,390 --> 00:09:57,250 Azaz, ha van egy csomó összetevője a kifejezés, 182 00:09:57,250 --> 00:10:00,660 igyekszünk késleltetni az értékelési e alkomponense 183 00:10:00,660 --> 00:10:05,300 amíg az abszolút utolsó minute-- vagyis amíg valóban szükség van rájuk. 184 00:10:05,300 --> 00:10:08,480 >> Tehát ez means-- amely nagyon klassz, különösen 185 00:10:08,480 --> 00:10:13,200 ha arra gondoltunk, hogy a kivételi A zenei step sequencer. 186 00:10:13,200 --> 00:10:16,740 Bekapcsoláskor, és elkezdi fut egy lépést sequence-- 187 00:10:16,740 --> 00:10:20,010 Ha valaha is dolgozott egy dob machine-- és ez csak azt örökre. 188 00:10:20,010 --> 00:10:24,650 Tehát ez lenne igazán jó, ha tudta felülmúlni, hogy a Haskell. 189 00:10:24,650 --> 00:10:31,040 És meg tudjuk csinálni végtelen értékeket, különösen a végtelen listák. 190 00:10:31,040 --> 00:10:35,860 Ez nagyon könnyű gépelni egy végtelen listája Haskell. 191 00:10:35,860 --> 00:10:39,230 Lehet csak használja a szintaxis le Itt, ahol látod 1-től 3- 192 00:10:39,230 --> 00:10:42,440 távolítsa el a 3 1 pont pont, és hogy egy végtelen lista 193 00:10:42,440 --> 00:10:46,960 az összes természetes számok meghosszabbításáról A ameddig csak el lehet képzelni. 194 00:10:46,960 --> 00:10:49,925 >> Azt akarom, hogy vezessenek be egy fogalmát ráncok azonnal. 195 00:10:49,925 --> 00:10:51,800 És megint az a célja, A szeminárium nem 196 00:10:51,800 --> 00:10:55,770 hogy megtudjuk, redők Haskell vagy magasabb rendű funkciókat. 197 00:10:55,770 --> 00:10:59,640 De én csak azt szeretném bemutatni, hogy ad pontos értelme, hogyan fura 198 00:10:59,640 --> 00:11:03,700 Haskell van, és milyen erős is. 199 00:11:03,700 --> 00:11:08,000 És különösen, megyünk be-- amikor így teszünk mi más dob részei, 200 00:11:08,000 --> 00:11:12,790 mi lesz manipulálni listái szám, hajtogatni egymásra. 201 00:11:12,790 --> 00:11:17,290 És erre, akkor lennie térkép segítségével, és kiszáll. 202 00:11:17,290 --> 00:11:21,770 >> Van egy jobb asszociatív szeres, ami ez jobb 203 00:11:21,770 --> 00:11:26,990 here-- 1 mínusz a mennyiséget, 2 mínusz a mennyiséget, 3 mínusz 0. 204 00:11:26,990 --> 00:11:29,170 És a szintaxis egy szeres, adsz egy kinyitható 205 00:11:29,170 --> 00:11:34,680 bázis értéket, majd egy operation-- Ebben az esetben, összeadás vagy a kivonás. 206 00:11:34,680 --> 00:11:36,280 Már látható mindkét esetben. 207 00:11:36,280 --> 00:11:41,760 És akkor ott van egy akkumulátor, amely felhalmozódik az egész listát, 208 00:11:41,760 --> 00:11:46,330 alkalmazásával ez az üzemeltető vagy plusz mínusz, majd felhalmozódó azt. 209 00:11:46,330 --> 00:11:52,680 Szóval ez lesz the--, ha ez volt az úgynevezett A szeres r plusz 0, 0-tól indul, 210 00:11:52,680 --> 00:11:54,720 mi lenne akkor összeadják A számok a listára. 211 00:11:54,720 --> 00:11:57,134 És ez egy lista 1-3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Tehát más szavakkal Így szeres r három paramétert. 213 00:12:00,050 --> 00:12:02,540 Van olyan funkció, Maga a két érv, 214 00:12:02,540 --> 00:12:05,400 Aztán ott van a kezdő érték, és van egy lista eleme. 215 00:12:05,400 --> 00:12:08,570 És mit csinál van szedése starter értéket, az első érték, 216 00:12:08,570 --> 00:12:09,850 tedd be a funkciót. 217 00:12:09,850 --> 00:12:11,607 Mit kijutni, figyelembe, hogy a takarmány, hogy 218 00:12:11,607 --> 00:12:13,940 a funkciója a második érték, amit kijutni, 219 00:12:13,940 --> 00:12:16,690 figyelembe, hogy a takarmány, hogy a funkciója a harmadik érték. 220 00:12:16,690 --> 00:12:18,740 Aztán ha lemegy ez a teljes lista ezen a módon, 221 00:12:18,740 --> 00:12:22,970 fogsz kapni végül Egyes szingulárisérték ez 222 00:12:22,970 --> 00:12:25,720 Az azonos típusú, amit elkezdtél ki és az azonos típusú 223 00:12:25,720 --> 00:12:29,147 a dolgok a listán, majd ez a visszatérés miatt szeres R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Így különösen, Ezek magasabb rendű funkciókat, 225 00:12:31,980 --> 00:12:34,460 mert az ember vesz egy másik funkciója, mint az egyik érv. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Igen. 227 00:12:34,770 --> 00:12:37,820 Ha már használt bizonyos egyéb languages-- Tudom R, [hallhatatlan] 228 00:12:37,820 --> 00:12:41,510 nyelvnek ez, az úgynevezett Csökkentse. 229 00:12:41,510 --> 00:12:45,460 Lehet, hogy hasonló feladatokat más nyelveken, csak úgynevezett 230 00:12:45,460 --> 00:12:48,160 különböző dolgok. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: És Mi a szép a behajtott R 232 00:12:50,680 --> 00:12:53,880 ebben az esetben az, hogy a hajtás R működhet végtelen listák. 233 00:12:53,880 --> 00:12:59,490 Tehát ebben az alsó, ez P5 generál a jegyzeteket, hogy 234 00:12:59,490 --> 00:13:03,120 be van kapcsolva a lépést szekvenszer Néhány dob részét, az ötödik dob része, 235 00:13:03,120 --> 00:13:05,480 és talán ez egy konga dob, vagy valami. 236 00:13:05,480 --> 00:13:09,719 És ez egy szándékosan tompa írásmód ez, 237 00:13:09,719 --> 00:13:11,510 de szórakoztató, mert ez bizonyítja a sok 238 00:13:11,510 --> 00:13:14,460 A dolog Haskell és Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Tehát szeres R e colon-- vastagbél Csak egy operátor, hogy megnyomja a dolgok 240 00:13:20,650 --> 00:13:25,700 együtt egy list-- felszólította üres listát, amely csak az üres zárójelek. 241 00:13:25,700 --> 00:13:28,250 És hívom, hogy Ezen végtelen listáját. 242 00:13:28,250 --> 00:13:31,570 Ez tulajdonképpen két listát összeadják le ide. 243 00:13:31,570 --> 00:13:37,150 A lista 1 vessző 6 pontos dot jelentése 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Tehát Haskell-- mindössze néhány karaktert, akkor 245 00:13:39,750 --> 00:13:42,420 generálhat az egész számsorozat 246 00:13:42,420 --> 00:13:46,240 hogy öt szám egymástól nyúlik a végtelenbe. 247 00:13:46,240 --> 00:13:49,860 És én hozzáfűzése az, hogy ez a rövidebb kis list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- csak hogy megmutassam hogyan lehet összefűzni listákat. 249 00:13:54,370 --> 00:13:55,790 >> És akkor én már hajtva magát. 250 00:13:55,790 --> 00:14:01,510 És ez végül csak, hogy egyfajta identitás működését, de ez végtelen. 251 00:14:01,510 --> 00:14:06,070 És hajtsa R tudom csinálni, mert lustán értékeli, mint a fenti. 252 00:14:06,070 --> 00:14:10,582 Ha van egy 1 és A 2 és 3, tudjuk Csak zárójelbe le a teljes többit is. 253 00:14:10,582 --> 00:14:12,290 Ez nem fog működni levonva vagy hozzáadva, de 254 00:14:12,290 --> 00:14:17,760 működni fog ez a vastagbélrák identitás működését a listán. 255 00:14:17,760 --> 00:14:24,620 >> Szóval hogyan lehet a gyakorlatban használni, hogy ha Egy végtelen hosszú listát azokról a dolgokról? 256 00:14:24,620 --> 00:14:26,500 Nos, Haskell biztosít egy csomó functions-- 257 00:14:26,500 --> 00:14:29,450 és hogy inkább ezekbe a saját time--, mint hogy 258 00:14:29,450 --> 00:14:32,200 amely azt mondja, OK, mi vagyunk generáló ez a végtelen listáját, 259 00:14:32,200 --> 00:14:35,950 de mi csak fog tartani egy száma, és ebben az case-- 260 00:14:35,950 --> 00:14:38,410 fogjuk látni ezt később a dobgép code-- 261 00:14:38,410 --> 00:14:43,740 GM csak valamiféle globális változó a lépések számát 262 00:14:43,740 --> 00:14:44,610 A szekvenszer. 263 00:14:44,610 --> 00:14:47,630 A közlekedő gépek I. mutatta meg, hogy ez tipikusan 16, 264 00:14:47,630 --> 00:14:51,475 de én hajtotta végre azt a 32. 265 00:14:51,475 --> 00:14:54,470 Ez nem igazán számít. 266 00:14:54,470 --> 00:15:00,230 >> Haskell is tiszta, így erős statikus gépelés Connor utalt. 267 00:15:00,230 --> 00:15:03,220 Szóval funkciók matematikai a sense-- 268 00:15:03,220 --> 00:15:06,600 ők inkább matematikai hogy ők garantált 269 00:15:06,600 --> 00:15:11,530 hogy nem fér hozzá, vagy megváltoztatni bármilyen változó vagy végre bemeneti és kimeneti. 270 00:15:11,530 --> 00:15:14,420 Tehát ha van egy függvény, ez determinisztikus. 271 00:15:14,420 --> 00:15:17,400 Ez mindig ugyanazt értéke az állami program 272 00:15:17,400 --> 00:15:19,310 vagy ugyanaz marad. 273 00:15:19,310 --> 00:15:22,940 Vannak, persze, monádi kivételek erre, de ez túl körünket. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Igen. 275 00:15:23,900 --> 00:15:26,946 Mit jelent ez, mégis, van- Néhány fontos [hallhatatlan] 276 00:15:26,946 --> 00:15:27,820 Ennek a következményei. 277 00:15:27,820 --> 00:15:30,940 Az egyik az, hogy nagyon könnyű összevessünk Haskell programok. 278 00:15:30,940 --> 00:15:32,773 Mert ha van, mondjuk, a függvénye, hogy a 279 00:15:32,773 --> 00:15:36,064 kell működnie egy millió értékeket, ha Tudja, hogy a funkció mindig 280 00:15:36,064 --> 00:15:39,280 adja ki ugyanazt az értéket, ha adsz egy bizonyos value-- 281 00:15:39,280 --> 00:15:43,055 ha [hallhatatlan] f 1, f 2, akkor f 3 vagy whatnot-- f 1 282 00:15:43,055 --> 00:15:45,180 nem fog kiírni fájlba vagy tenni valamit 283 00:15:45,180 --> 00:15:46,850 hogy megváltoztatja az értéke F2. 284 00:15:46,850 --> 00:15:50,220 Tudod csak szét ezt a funkciót a millió különböző gépek vagy egy millió 285 00:15:50,220 --> 00:15:54,720 különböző szálak, vagy bármi, hogy minden a válaszokat vissza, 286 00:15:54,720 --> 00:15:56,900 hogy minden a visszatérési érték vissza, majd ennyi. 287 00:15:56,900 --> 00:15:59,780 Így nagyon könnyen összevessünk dolgokat. 288 00:15:59,780 --> 00:16:03,140 >> A hátránya az, hogy input és kimeneti különösen 289 00:16:03,140 --> 00:16:05,720 illeszkednek a típusú rendszer A nagyon bonyolult módon. 290 00:16:05,720 --> 00:16:09,010 Mi nem megyünk bele, hogy most, de én Javasoljuk, hogy nézd meg néhány erőforrások 291 00:16:09,010 --> 00:16:11,175 online, csak szeretné megismerni ezt. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Tehát írja classes-- és ez 294 00:16:16,550 --> 00:16:21,610 was-- fajtáinak kínálnak megoldást 295 00:16:21,610 --> 00:16:24,160 a probléma az üzemeltető túlterhelés. 296 00:16:24,160 --> 00:16:27,590 Így akartuk, hogy az egyenlőség A különböző típusú dolgokat. 297 00:16:27,590 --> 00:16:31,040 Persze, azt gondolhatnánk, of-- közötti egyenlőség numerikus típusok 298 00:16:31,040 --> 00:16:34,720 Nagyon könnyű gondolni, de Mi a helyzet közötti egyenlőség listák? 299 00:16:34,720 --> 00:16:37,610 Mi a helyzet közötti egyenlőség fa lába adatszerkezetek? 300 00:16:37,610 --> 00:16:43,130 És ez mind lehetséges Haskell miatt típusú osztályok. 301 00:16:43,130 --> 00:16:48,000 >> Tehát, ha meg egy bizonyos adatok type-- és itt, ezek a zenei helyek. 302 00:16:48,000 --> 00:16:50,960 Mi végre megkapja Egyes számítógépes zene. 303 00:16:50,960 --> 00:16:57,420 Tehát van C, C éles, és így tovább, és így tovább. 304 00:16:57,420 --> 00:17:01,080 Ők tartoznak egy csomó különböző típusú osztályok. 305 00:17:01,080 --> 00:17:03,510 EQ-- tartoznak az EQ típusú osztály. 306 00:17:03,510 --> 00:17:06,780 Ez azt jelenti, hogy támogatják egyenlőség műveleteket. 307 00:17:06,780 --> 00:17:12,650 Szóval lehet értékelni, hogy az egyik zeneszámokat primitívek 308 00:17:12,650 --> 00:17:15,400 jelentése ugyanaz, mint a másikat. 309 00:17:15,400 --> 00:17:17,280 >> Ők a sorrendi osztályban. 310 00:17:17,280 --> 00:17:19,479 Ez azt jelenti, hogy van egy rendelési ezekre. 311 00:17:19,479 --> 00:17:27,670 D után jön C. Cisz után jön a C is. 312 00:17:27,670 --> 00:17:29,840 Ők tartoznak az osztály mutatják, ami azt jelenti, tudnak 313 00:17:29,840 --> 00:17:33,000 nyomtatható egy vagy terminálon. 314 00:17:33,000 --> 00:17:36,090 Ők tartoznak a osztályú felsorolt, 315 00:17:36,090 --> 00:17:39,770 azt jelenti, hogy bár Ezek azok a karakterek, 316 00:17:39,770 --> 00:17:45,340 hogy van egy mögöttes numerikus képviselet 0-nál kezdődik 317 00:17:45,340 --> 00:17:48,960 és megy keresztül ki azonban sok dolog van, 20, vagy úgy, 318 00:17:48,960 --> 00:17:51,770 vagy 30, vagy 40, talán. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: És amikor van egy adattípus 320 00:17:54,259 --> 00:17:57,050 hogy derives-- azzal kulcsszó "deriving--" egy bizonyos típusú osztály, 321 00:17:57,050 --> 00:18:01,160 ez azt jelenti, hogy a fordító megpróbálja építeni valamit automatikusan. 322 00:18:01,160 --> 00:18:05,120 Így talán akkor szeretnénk határozza meg a minőséget másképp. 323 00:18:05,120 --> 00:18:09,450 Azt akarja, hogy meghatározzák Cisz egyenlő a D sík, például. 324 00:18:09,450 --> 00:18:11,560 E konstrukció Itt, nem hiszem, Cisz 325 00:18:11,560 --> 00:18:14,940 és D lapos lesz egyenlő, mert a fordító automatikusan 326 00:18:14,940 --> 00:18:19,670 mondom, hogy minden más lehetséges értéke különbözik minden más. 327 00:18:19,670 --> 00:18:22,930 >> Így lehetséges, hogy felülbírálja Az alapértelmezett implementáció 328 00:18:22,930 --> 00:18:25,730 az ilyen típusú osztályok. 329 00:18:25,730 --> 00:18:28,640 Ismét nézd meg a referencia, ha szeretné megismerni ezt. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: És Itt, valójában, Ez majd 332 00:18:33,600 --> 00:18:36,930 hasznos lehet a kódolás közben, később. 333 00:18:36,930 --> 00:18:42,150 Látjuk néhány infix operátorok szekvenciális összetétele, 334 00:18:42,150 --> 00:18:46,570 párhuzamos összetétel, és így oda, ezek a plusszok és egyenlőség jelet 335 00:18:46,570 --> 00:18:48,620 körülvéve kettőspont. 336 00:18:48,620 --> 00:18:53,330 Ez azt jelenti, hogy tudunk játszani a különböző zenei primitívek egyik a másik után. 337 00:18:53,330 --> 00:18:54,590 Ez szekvenciális összetételét. 338 00:18:54,590 --> 00:18:57,170 >> Vagy tudjuk játszani őket párhuzamosan egyidejűleg. 339 00:18:57,170 --> 00:19:05,100 Szóval lehet egy zenei értéke, majd ez megegyezik és kettőspont, 340 00:19:05,100 --> 00:19:09,669 Infix párhuzamos összetétele üzemeltető, és játszani velük, mint egyfajta húrt. 341 00:19:09,669 --> 00:19:11,460 És fogunk használni ez ha kombináljuk 342 00:19:11,460 --> 00:19:15,080 a dob része a mi kis Frere Jacques dalt 343 00:19:15,080 --> 00:19:19,460 játszani ezt a két szekvencia zenei értékek egyidejűleg. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Kikészítéséhez is-- Curry utoljára Nevét Haskell Curry, aki 346 00:19:29,250 --> 00:19:31,850 A Haskell kép névadója. 347 00:19:31,850 --> 00:19:34,330 És ez lehetővé teszi számunkra a Jó eleganciát mikor vagyunk 348 00:19:34,330 --> 00:19:36,880 írásban ezeket a különböző funkciók vagy a szűrőket, hogy mi vagyunk 349 00:19:36,880 --> 00:19:39,330 lesz feltérképezése mint a listákat. 350 00:19:39,330 --> 00:19:42,810 A funkció két arguments-- f x és y-- 351 00:19:42,810 --> 00:19:46,630 is képviselteti magát f x alkalmazott y. 352 00:19:46,630 --> 00:19:49,800 Tehát ez egy funkciója Egy érv, hogy visszatér 353 00:19:49,800 --> 00:19:51,240 Egy másik funkciója az egyik érv. 354 00:19:51,240 --> 00:19:56,962 Tehát ez azt jelenti, hogy a map f x fölött listáját y években. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Szeretné Hogy egy példát erre? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Igen. 357 00:19:59,836 --> 00:20:05,390 Van egy példát itt-re néhány dolog fogjuk írni. 358 00:20:05,390 --> 00:20:10,500 Tehát lemásolni 2-- is, lemásolni kerül 359 00:20:10,500 --> 00:20:13,040 Egy érték, ami hány alkalommal megismételni valamit, 360 00:20:13,040 --> 00:20:16,690 és akkor lesz egy value-- általában egy listát, vagy valami. 361 00:20:16,690 --> 00:20:23,450 Tehát itt vagyunk feltérképezése lemásolni 2 másik felett listáját. 362 00:20:23,450 --> 00:20:27,440 >> Tehát, ha feltérképezzük lemásolni 2, ha lemásolni 2 alkalmazni 363 00:20:27,440 --> 00:20:31,890 Az első eleme ennek list-- és Ezek listák zenei phrases-- 364 00:20:31,890 --> 00:20:37,650 fog két "te sleeping--" így alszol, alszol. 365 00:20:37,650 --> 00:20:40,040 Tehát most van kettő. 366 00:20:40,040 --> 00:20:42,570 De úgy két párhuzamos érvek, hanem azért, mert mi vagyunk 367 00:20:42,570 --> 00:20:47,100 kikészítéséhez majd feltérképezése, tudjuk képviselni párhuzamos 2 368 00:20:47,100 --> 00:20:52,310 mint már visszatért a függvényében Egy argument-- csak lemásolják kétszer. 369 00:20:52,310 --> 00:20:57,010 És akkor mi alkalmazása, hogy az egyes eleme a fenti kifejezések. 370 00:20:57,010 --> 00:21:01,900 >> És concat egy Haskell művelet összeolvasztás listáját. 371 00:21:01,900 --> 00:21:04,400 Mivel párhuzamos 2 akarata listázza a listákat. 372 00:21:04,400 --> 00:21:06,660 És ez ebben a köztes formája van. 373 00:21:06,660 --> 00:21:10,365 És akkor mi is concat vagy lelapul, hogy kétszer. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Egyszerűbb Például a kikészítéséhez, 375 00:21:12,240 --> 00:21:15,323 ha azt az általam elvártnál képzelni f mindössze szorzásművelet, hogy úgy két 376 00:21:15,323 --> 00:21:16,840 érvek és visszaadja a terméket. 377 00:21:16,840 --> 00:21:19,320 Tehát ha van egy f 4 5, ez 20. 378 00:21:19,320 --> 00:21:22,670 De lehet gondolni ezt also-- van egy f 4 379 00:21:22,670 --> 00:21:25,560 hogy vesz egy érv, és visszatér négyszer argument-- csak 380 00:21:25,560 --> 00:21:27,870 részleges alkalmazás, amely Csak egy érv 4. 381 00:21:27,870 --> 00:21:31,182 És ha adsz f 4 5, hogy kapsz 20. 382 00:21:31,182 --> 00:21:32,890 És ez egy egyszerűbb Például a szíj. 383 00:21:32,890 --> 00:21:34,473 Ez általában az egyik tankönyv is. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda kifejezéseket vagy névtelen függvények 386 00:21:42,110 --> 00:21:47,330 egy másik Haskell fémjelzi. 387 00:21:47,330 --> 00:21:51,242 Tehát, ha szükségünk van, hogy felkap egy kis funkció élet párhuzamos, 388 00:21:51,242 --> 00:21:52,950 de azt mondják, ez nem az A standard könyvtár, 389 00:21:52,950 --> 00:21:56,150 tudjuk használni a szintaktikai hasonló a következőket. 390 00:21:56,150 --> 00:21:58,730 És mi szél emiatt. 391 00:21:58,730 --> 00:22:02,160 Egy dolog látni fogod a sok a dobgép van tesszük hívások 392 00:22:02,160 --> 00:22:05,790 valami úgynevezett kiszűrni, amely, mint korábban, 393 00:22:05,790 --> 00:22:08,185 egy leképezés egy függvény több mint egy lista, de ez 394 00:22:08,185 --> 00:22:10,260 feltérképezése egy logikai függvény. 395 00:22:10,260 --> 00:22:13,390 >> Tehát van itt egy példa Egy névtelenül 396 00:22:13,390 --> 00:22:19,150 meghatározott logikai függvény, Csak úgy egy pár értékeket. 397 00:22:19,150 --> 00:22:22,990 Ez nem szigorúan véve egy névtelen függvényt. 398 00:22:22,990 --> 00:22:25,850 De ez határozza meg a hogy szintaxis rövidség 399 00:22:25,850 --> 00:22:28,007 és ez csak úgy x modul n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Igen. 401 00:22:28,840 --> 00:22:31,330 Tehát f függvénye két érvet n és p 402 00:22:31,330 --> 00:22:35,440 ami visszaadja a függvény, amely maga is függvényében egy érv, nevezetesen x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: I a fent említett infix operátorok. 405 00:22:40,690 --> 00:22:42,642 Mik infix operátorok? 406 00:22:42,642 --> 00:22:45,710 Nos, infix operátorok a szokásos módon képviseljük műveletek, 407 00:22:45,710 --> 00:22:49,910 azt mondják, a mathematics-- 2 plusz 2 helyett az üzemeltető plusz 408 00:22:49,910 --> 00:22:51,202 majd két érvet 2 és 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Úgy hívják fordított lengyel jelölés, amely 410 00:22:53,701 --> 00:22:55,330 kifejezést Kétlem bármely tudni fogja. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Így van. 412 00:22:56,288 --> 00:22:58,290 Fordított lengyel vagy előtag jelöléssel. 413 00:22:58,290 --> 00:23:01,412 De Haskell úgy döntött, hogy Használja infix operátorok. 414 00:23:01,412 --> 00:23:03,120 Tehát ezek egy része Az egyéni is, hogy 415 00:23:03,120 --> 00:23:07,770 határoztak meg az Euterpea dscl Haskell. 416 00:23:07,770 --> 00:23:10,730 Szóval ez volt szekvenciális összetételét. 417 00:23:10,730 --> 00:23:16,340 Ez volt a párhuzamos készítmény, és ez a volt visszavágni párhuzamos összetételét. 418 00:23:16,340 --> 00:23:18,710 És szükségünk lesz, hogy a mi dobgép, 419 00:23:18,710 --> 00:23:22,640 mert fogjuk használni az utolsó szereplő a kis tuple van 420 00:23:22,640 --> 00:23:26,330 játszani a dobgép mentén a mi Frere Jacques dalt. 421 00:23:26,330 --> 00:23:28,650 És mi dobgép van lesz végtelen. 422 00:23:28,650 --> 00:23:30,920 Csak játszik örökre. 423 00:23:30,920 --> 00:23:32,692 De a Frere Jacques dal nem. 424 00:23:32,692 --> 00:23:33,510 Ez nem olyan hosszú. 425 00:23:33,510 --> 00:23:36,610 Ez csak néhány taktust. 426 00:23:36,610 --> 00:23:43,030 Tehát meg kell állítani a dobgép, mint Amint a rövidebb zenei érték jön 427 00:23:43,030 --> 00:23:43,700 véget. 428 00:23:43,700 --> 00:23:46,980 És hogy infixed üzemeltető szuper hasznos ezzel. 429 00:23:46,980 --> 00:23:50,090 >> És infix jelölés, mint ez a fajta szép, 430 00:23:50,090 --> 00:23:57,095 mert azt mondják, hogy van egy ilyen függvényt idézet, amely a egészosztás 431 00:23:57,095 --> 00:24:01,010 Az x valami else-- Sajnálom, hogy legyen a és b. 432 00:24:01,010 --> 00:24:04,740 Lehet írni, mint egy idézet a b. 433 00:24:04,740 --> 00:24:09,670 Tehát, ha put-- elem egy másik példa erre. 434 00:24:09,670 --> 00:24:14,730 x elem néhány listát, ha tesz ez a fordított aposztróffal, akkor tudja használni. 435 00:24:14,730 --> 00:24:20,400 Annak ellenére, hogy ez nem egy szimbólum mint plusz vagy mínusz vagy szer, 436 00:24:20,400 --> 00:24:24,630 akkor használja a nevét egy funkciót, mint hogy a fordított aposztróffal 437 00:24:24,630 --> 00:24:27,045 mint operátor segítségé- vel, ami elég jó. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Ez megint minden csak szintaktikai cukor, tényleg. 439 00:24:29,670 --> 00:24:32,310 Ez nem befolyásolja a lényege nyelven. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Tehát azt látjuk, itt a utolsó fordulata a Frere Jacques dalt, 441 00:24:37,440 --> 00:24:45,740 Játszottam egy kis akkordokat, vagy kétharmada a párhuzamos összetétele 442 00:24:45,740 --> 00:24:46,240 operátor. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Ez más szóval néhány Az amit az imént mondott. 445 00:24:54,950 --> 00:24:59,986 Így térkép funkciói Egy vitatkozni listákat. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Ismét referenciák A Haskell-- bevezető tankönyvek 447 00:25:02,860 --> 00:25:04,680 lesz az összes e benne. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Tehát itt egy szép vonal, a step sequencer 449 00:25:07,790 --> 00:25:12,820 Most vessünk egy pillantást a egy listát a megértés. 450 00:25:12,820 --> 00:25:17,810 És itt látunk, az adott elem fix szereplő vissza idézetek. 451 00:25:17,810 --> 00:25:23,030 Tehát, ha x egy eleme, a lista X, akkor hívjuk össze perc funkciókat. 452 00:25:23,030 --> 00:25:25,100 Szóval perc csak egy ütős funkció. 453 00:25:25,100 --> 00:25:30,200 Beletelik némi értéke p ez része a korlátos sor minden 454 00:25:30,200 --> 00:25:35,310 A különböző ütőhangokat hogy láttunk egy korábbi csúszda, 455 00:25:35,310 --> 00:25:38,840 és akkor ad, hogy időtartama negyedévében a jegyzetet. 456 00:25:38,840 --> 00:25:43,190 Különben ez ad, hogy a qnr, és qnr csak egy negyed hang többit. 457 00:25:43,190 --> 00:25:44,970 >> Tehát ez kiépítése valami szép. 458 00:25:44,970 --> 00:25:52,110 Van egy lista elemeit, és fogunk végiglépkedjünk néhány lista egyik 459 00:25:52,110 --> 00:25:54,540 a max értéke a step sequencer. 460 00:25:54,540 --> 00:25:58,290 És ha már itt tartunk egy adott i hogy listát egy a max értéket, 461 00:25:58,290 --> 00:26:02,970 ha ez a i egy tagja ennek set létre ezt a funkciót, 462 00:26:02,970 --> 00:26:06,040 Nos, akkor kapcsolja egy ütős jegyzetet. 463 00:26:06,040 --> 00:26:10,960 Ellenkező esetben, mi csak játszani pihenni, amelyek Azaz, mi csak maradjon csendben. 464 00:26:10,960 --> 00:26:16,050 És van itt szó, hogy a ez a lista a megértés szintaxist, 465 00:26:16,050 --> 00:26:20,030 x által lakott ebben a lista épített egy 466 00:26:20,030 --> 00:26:22,462 A globális méretű sorrendvezérlõvel. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Igen. 468 00:26:23,295 --> 00:26:26,340 Az alapvető szintaxis lista comprehensions van 469 00:26:26,340 --> 00:26:30,810 konzol, értéket érintő Egyes változók, bár, 470 00:26:30,810 --> 00:26:34,260 lehetséges értékeit a változók magukat, zárt konzollal. 471 00:26:34,260 --> 00:26:38,545 És ha már kész beállítani építő jelölés bármiféle osztályban a matematika, 472 00:26:38,545 --> 00:26:45,999 lehet, hogy állítsa 2n ilyen hogy n vagy n jelentése Z. 473 00:26:45,999 --> 00:26:48,290 Hasonló thing-- ezt a jelölést célja, hogy szuggesztív 474 00:26:48,290 --> 00:26:49,630 Az, hogy a matematikai jelöléssel. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: És akkor alkalmazni több predikátumok 476 00:26:51,880 --> 00:26:56,250 és több szűrőt egy listát megértés, ami elég szép. 477 00:26:56,250 --> 00:27:01,800 Algebrai types-- vagyunk nem habozik sokáig itt. 478 00:27:01,800 --> 00:27:04,840 Van nem egy jó elképzelés a Haskell vagy egy jó, nyilvánvaló fogalma 479 00:27:04,840 --> 00:27:10,720 A hogyan kell, mondjuk, egy alapértelmezett paraméter függvényében, vagy valami. 480 00:27:10,720 --> 00:27:13,370 Python, ez elég egyszerű. 481 00:27:13,370 --> 00:27:18,460 Tudod csak mondani megegyezik a A nyilatkozat a funkciót, 482 00:27:18,460 --> 00:27:21,420 alapértelmezett érték esetben sem kerül forgalomba. 483 00:27:21,420 --> 00:27:27,010 >> Haskell, akkor talán Használja talán az lehet, írja, 484 00:27:27,010 --> 00:27:32,190 vevő vagy semmi vagy egy típusú érték csak egy. 485 00:27:32,190 --> 00:27:38,630 Tehát kihasználni ezt a dobgép hogy lehetővé teszik számunkra, hogy nem kötelező volumene 486 00:27:38,630 --> 00:27:40,730 paramétereket minden egyes dob részek. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Szóval ez ad nekünk egy módja annak, EQ vagy egy kötetet egy adott csatornán. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: A Más Haskell példák, 490 00:27:56,440 --> 00:28:00,450 Lehet látni, talán használható funkciók meghiúsulhat. 491 00:28:00,450 --> 00:28:03,470 Ez egy közös egy. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: És akkor a kínálat valamilyen hibaüzenetet legyen az alapértelmezett. 493 00:28:07,010 --> 00:28:11,020 És ez különösen hasznos, ha csinálsz az I / O Haskell. 494 00:28:11,020 --> 00:28:12,044 Ez lehet trükköket. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: Vagy egy Hasonló példa, gondolom 496 00:28:13,960 --> 00:28:17,460 Egy függvény, amely magában foglalja divízió Az a paraméter, amely lehet 0. 497 00:28:17,460 --> 00:28:20,020 És a függvény tudja visszatér talán mindegy. 498 00:28:20,020 --> 00:28:22,802 Tehát, ha nincs 0-val osztás, hogy vissza fog térni, csak mi. 499 00:28:22,802 --> 00:28:25,010 És ha van osztás 0, akkor vissza semmit 500 00:28:25,010 --> 00:28:26,910 mert így a jelző a hibát. 501 00:28:26,910 --> 00:28:30,330 Mert az egyik következménye Haskell nagyon szigorú gépelés 502 00:28:30,330 --> 00:28:34,100 az, hogy nincs real-- Kivétel a kínos, alapvetően, 503 00:28:34,100 --> 00:28:36,160 hibakezelés kínos. 504 00:28:36,160 --> 00:28:39,440 És ez az egyik nagyon közös módja csinálja. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Tehát most kap Egy másik pszichedelikus dolog 506 00:28:42,990 --> 00:28:49,160 mintegy Haskell, amely minta megfelelő és függvénydefiníciókat. 507 00:28:49,160 --> 00:28:53,390 Megmutattam neked az utolsó dia a nyilatkozat a lépéssorozat 508 00:28:53,390 --> 00:28:58,170 funkciót, amelyik egy talán értéket, Ezután egy int, majd egy listát a ints, 509 00:28:58,170 --> 00:29:03,850 majd visszatér egy sorozata zenei értékek vannak jegyzetekkel 510 00:29:03,850 --> 00:29:05,375 Mindkét hangmagasság és a hangerő. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Tehát a három érvet lehet minta illeszkedik a következő módon. 513 00:29:11,820 --> 00:29:16,660 És mindig biztos akar lenni abban, hogy nem egy alapeset vagy kilépés esetén az első. 514 00:29:16,660 --> 00:29:19,690 És ezek aláhúzás egyszerűen értelmezhető 515 00:29:19,690 --> 00:29:22,340 hogy minden olyan értéket, hogy ott van. 516 00:29:22,340 --> 00:29:26,580 Tehát, ha kap egy hívást, hogy lemond sorrendben néhány érték, más értéket, 517 00:29:26,580 --> 00:29:32,210 majd az üres lista, amit akarunk hogy visszatérjen csak a csend, a többi 0. 518 00:29:32,210 --> 00:29:35,110 >> És ahelyett, hogy hogy egy üres lista, vagy 0, 519 00:29:35,110 --> 00:29:38,150 ez egy nyugalmi 0, mert mi vagyunk foglalkozik a zenével típusú, 520 00:29:38,150 --> 00:29:43,230 és az üres listát a zene típusú mindössze többi nem időtartamát. 521 00:29:43,230 --> 00:29:45,680 Ez nem szól a zene. 522 00:29:45,680 --> 00:29:51,460 És akkor látjuk, ha kapunk egy lépésben a sorozat, v hangerő érv, 523 00:29:51,460 --> 00:29:57,290 o elkerülésének eszköze érvet, majd egy listát x években. 524 00:29:57,290 --> 00:29:58,360 >> Akkor mi néhány dolgot. 525 00:29:58,360 --> 00:30:01,290 Különösen azt alkalmazni ez a lista a megértés, 526 00:30:01,290 --> 00:30:05,700 és mi végre valami műveletek a talán értéke 527 00:30:05,700 --> 00:30:10,050 hogy átalakítsuk azt egy számértéket úgy, hogy lehetne majd felsorolta és használt 528 00:30:10,050 --> 00:30:12,300 válassza ki a műszer. 529 00:30:12,300 --> 00:30:16,730 Ismét, ez egy kicsit kicsit szándékosan inconcise 530 00:30:16,730 --> 00:30:20,580 csak hogy megmutassa a furcsa dolgokat, meg tudod csinálni a Haskell mint te 531 00:30:20,580 --> 00:30:23,170 vessünk egy pillantást, hogy a maga idejében. 532 00:30:23,170 --> 00:30:23,802 >> Minden rendben. 533 00:30:23,802 --> 00:30:26,010 Szóval végre megkapja a csinálni, amit meghatározott köze, 534 00:30:26,010 --> 00:30:28,820 amely, hogy néhány számítógépes zene. 535 00:30:28,820 --> 00:30:32,250 Úgyhogy megpróbálom hogy a Frere Jacques dalt. 536 00:30:32,250 --> 00:30:35,220 Tehát vannak, hogy hány kifejezések Frere Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Négy. 539 00:30:39,680 --> 00:30:40,460 Nagy. 540 00:30:40,460 --> 00:30:42,490 És mi a szép, hogy ezek mind ismételt 541 00:30:42,490 --> 00:30:46,990 azonos mennyiségű szer, ami két. 542 00:30:46,990 --> 00:30:50,730 >> Tehát van négy kifejezések Minden kétszer ismételjük meg. 543 00:30:50,730 --> 00:30:53,590 És különösen, ők egy fordulóban. 544 00:30:53,590 --> 00:30:55,340 És sokan vannak, Sok szempontból, hogy hajtsák végre 545 00:30:55,340 --> 00:30:57,520 egy kerek, hogy lehet szórakoztató is. 546 00:30:57,520 --> 00:31:00,260 Megcsináltam egy Nagyon egyszerű módja van, 547 00:31:00,260 --> 00:31:05,760 ami csak construct-- a sor függvény egy lista a zenei értékek 548 00:31:05,760 --> 00:31:10,390 és kiderül, hogy a szekvenciális összetétele azzal, hogy e szekvenciális összetétele 549 00:31:10,390 --> 00:31:13,000 operátor. 550 00:31:13,000 --> 00:31:19,540 >> És akkor késlelteti a különböző részek azáltal, hogy kezdődik a többit. 551 00:31:19,540 --> 00:31:22,770 Szóval kezdődik a többi két intézkedés, majd a többi négy intézkedést, 552 00:31:22,770 --> 00:31:26,160 majd egy többi hat intézkedések, majd a kerek 553 00:31:26,160 --> 00:31:32,290 működik, mint tudjuk ezt a dalt. 554 00:31:32,290 --> 00:31:37,180 Látjuk két kommentárokat, vagy módosításokat a zenei értékek 555 00:31:37,180 --> 00:31:43,150 hogy tartalmazza ezt a szekvenciális elrendezése zenei elemekkel. 556 00:31:43,150 --> 00:31:44,810 Van egy add hangerőt. 557 00:31:44,810 --> 00:31:48,960 Ez a funkció jegyzetekkel zenét adott térfogatra. 558 00:31:48,960 --> 00:31:51,320 Ez egy jó példa a MIDI jel futó 559 00:31:51,320 --> 00:31:57,510 0-127, a hét bit információt, hogy lehet végrehajtani. 560 00:31:57,510 --> 00:32:00,650 >> És then-- láttuk, hogy nagyon röviden, de az általános MIDI 561 00:32:00,650 --> 00:32:02,310 listáját a különböző eszközök. 562 00:32:02,310 --> 00:32:04,450 És ott nem egy csomó közülük. 563 00:32:04,450 --> 00:32:11,230 Ha egy digitális audió munkaállomás, mint Ableton Live, vagy a Pro Tools, 564 00:32:11,230 --> 00:32:17,560 van egy hihetetlenül szélesebb szintetizátorok és VST hangszerek. 565 00:32:17,560 --> 00:32:21,510 De a MIDI szabvány csak van egy pár, vagy több tucat. 566 00:32:21,510 --> 00:32:22,799 És némelyik vicces. 567 00:32:22,799 --> 00:32:25,840 Azt gondoltam, hogy vicces lenne, ha játszottunk Az eszköz a MIDI eszköz 568 00:32:25,840 --> 00:32:30,550 helikopter, majd a következő utat a kerek, 569 00:32:30,550 --> 00:32:37,980 csináltunk egy pad szinti, majd a ez a giccses vezető négyszögjel szintetizátor, 570 00:32:37,980 --> 00:32:44,240 majd hangot szivárog, amelyek a kicsit homályos az én rossz MIDI 571 00:32:44,240 --> 00:32:46,410 szintetizátor, de az OK gombra. 572 00:32:46,410 --> 00:32:50,030 >> És akkor azt látjuk, ez let és a szintaxis Haskell, 573 00:32:50,030 --> 00:32:54,030 majd mi játszunk ezeket a részeket össze 574 00:32:54,030 --> 00:32:56,265 A párhuzamos összetétele üzemeltető. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 És valószínűleg mutatnak e. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Itt a kód. 579 00:33:08,340 --> 00:33:14,960 És láthatjuk a C, nem lenne egy Sok torokköszörülés és nyomás 580 00:33:14,960 --> 00:33:19,760 A táblázat kódot, mielőtt tudta, hogy a zene, mint ez. 581 00:33:19,760 --> 00:33:22,080 És más programozási nyelvet, akkor azt valószínűleg 582 00:33:22,080 --> 00:33:27,210 kapcsolatba kell lépniük a valamilyen könyvtárban vagy API és mindent beállítottunk, 583 00:33:27,210 --> 00:33:28,725 majd ha volna, hogy tisztítsák meg. 584 00:33:28,725 --> 00:33:33,810 De itt Haskell, azt hiszem, egyszer kap a nyitjára, hihetetlenül 585 00:33:33,810 --> 00:33:35,770 olvasható és nagyon kifejező. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Tehát van végrehajtásáról A Frere Jacques. 588 00:33:43,240 --> 00:33:43,740 Minden rendben. 589 00:33:43,740 --> 00:33:47,557 Most szeretnénk felvenni ütőhangszerek, és ez egy kicsit Messier. 590 00:33:47,557 --> 00:33:49,015 Szóval vessünk egy pillantást a diák. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Tehát a nagy ötlet az, hogy egy csomó listák vagy alkatrészeket. 593 00:34:00,540 --> 00:34:04,140 A fenti közlekedő gépek mellett jellemzően mintegy talán nyolc 594 00:34:04,140 --> 00:34:08,670 10 ritmus vagy ütős részeket. 595 00:34:08,670 --> 00:34:10,159 És majd egy csomó technikát. 596 00:34:10,159 --> 00:34:14,889 És beszéltünk these-- segítségével redők, szűrők, lambda funkciók, 597 00:34:14,889 --> 00:34:19,429 leképezve át listákat értékeinek előállítására néhány tartomány 1 és R, R 16, 598 00:34:19,429 --> 00:34:20,699 vagy 32 lépés a szekvenszer. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> És akkor, ha van egy értéket a listán mint mi fut át ​​a sequencer, 601 00:34:29,920 --> 00:34:34,190 fut át ​​rajta, és vége, akkor bekapcsol a feljegyzésben 602 00:34:34,190 --> 00:34:36,060 és hogy a minta aktiválnak. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Itt megtalálja az összes különböző furcsa módon Kitaláltam, hogy létrehoz jegyzeteket. 605 00:34:47,110 --> 00:34:48,940 Próbálja ki a saját félig összeget. 606 00:34:48,940 --> 00:34:50,360 Ez lesz a hang jó. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Az idő megengedi, akkor végig ezt. 609 00:34:54,690 --> 00:34:59,200 De most, azt hiszem, meg kell demo, amink van. 610 00:34:59,200 --> 00:35:01,380 Reméljük, ez megy az OK gombra. 611 00:35:01,380 --> 00:35:02,670 >> Tehát ez GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 És majd tölteni a fájlt Van úgynevezett song.lhs, 614 00:35:09,121 --> 00:35:10,620 amely a fájl csak mutattam. 615 00:35:10,620 --> 00:35:11,470 Jólvan szuper. 616 00:35:11,470 --> 00:35:15,010 Connor azt mondta korábban, hogy összeállításakor típusa ellenőrizni, 617 00:35:15,010 --> 00:35:18,380 így tudok lélegezni sokkal könnyebb. 618 00:35:18,380 --> 00:35:20,010 Ez nem fog felrobbantani rám. 619 00:35:20,010 --> 00:35:22,720 >> Én meg akarom mutatni neked valami hasznosat. 620 00:35:22,720 --> 00:35:25,900 Láthatjuk, hogy a modul betöltése nevezett 50. 621 00:35:25,900 --> 00:35:28,240 Kereshetünk ezt a modult. 622 00:35:28,240 --> 00:35:32,092 És ez olyan szép mintegy doing-- talán mi 623 00:35:32,092 --> 00:35:34,550 csinálsz Haskell nem nevű szoftverfejlesztés, 624 00:35:34,550 --> 00:35:36,980 de akkor nem sok szórakoztató dolgokat a saját. 625 00:35:36,980 --> 00:35:42,410 És a munkafolyamat igazán szép, mint mint sok más nyelven, 626 00:35:42,410 --> 00:35:45,872 mert látni lehet egy igazán olvasható módon, mi folyik itt. 627 00:35:45,872 --> 00:35:47,830 Tehát azt látjuk, hogy van Mindezen kifejezések, amelyek 628 00:35:47,830 --> 00:35:53,760 a zenei összeállításokat helyek, és akkor építeni ezeket fel valami nagyobb, 629 00:35:53,760 --> 00:35:55,220 amely a zenei dalt. 630 00:35:55,220 --> 00:35:58,450 Ez egy zenei egységet. 631 00:35:58,450 --> 00:36:05,545 És akkor mi is játszani ezt minden a nevezett funkció zenélni. 632 00:36:05,545 --> 00:36:09,040 Láthatjuk, hogy itt lent. 633 00:36:09,040 --> 00:36:11,310 Amely csak játszani. 634 00:36:11,310 --> 00:36:15,040 >> Azt kell say-- én nem beszélni ez a dollár jel, hogy mindenhol ott van. 635 00:36:15,040 --> 00:36:17,980 Dollárjel egy másik operátor segítségé- vel. 636 00:36:17,980 --> 00:36:22,500 De ez a legalacsonyabb elsőbbséget bármely üzemeltető, amely hatékonyan 637 00:36:22,500 --> 00:36:24,960 azt jelenti, hogy mindent A bal oldalon a dollár jel 638 00:36:24,960 --> 00:36:28,460 és a jogot a dollár jelet, mi lesz, hogy értékeljük előtt. 639 00:36:28,460 --> 00:36:31,430 Tehát ez a fajta, mint a másik hozzáadásának módja zárójelben. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: Ez alapvetően funkciót összetételét. 642 00:36:36,220 --> 00:36:40,026 És ez biztosítja, hogy ne have-- ha Van funkciók mindkét oldalára vagy infix 643 00:36:40,026 --> 00:36:42,900 üzemeltetők mindkét oldalán, akkor nem társítani át rajta, és kapsz 644 00:36:42,900 --> 00:36:46,030 várt eredmények. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Tehát can-- segítségével, hogy tudjuk hívni. 646 00:36:49,790 --> 00:36:51,415 Először fogunk játszani nélkül a dobokat. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Ez a helikopter, A MIDI helikopter. 649 00:37:03,170 --> 00:37:05,495 >> [Zenelejátszási] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Ott a négyszögjel. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 A hang szivárog. 654 00:37:25,490 --> 00:37:27,630 És akkor tényleg megőrülnek ezt. 655 00:37:27,630 --> 00:37:30,872 Felvettem egy nagyon egyszerű, mert tudtam, hogy nem harap le 656 00:37:30,872 --> 00:37:31,830 Több mint tudtam rágni. 657 00:37:31,830 --> 00:37:36,460 Csak tartsa nagyon egyszerű megmutatni a főbb gondolatokat. 658 00:37:36,460 --> 00:37:39,952 De aztán olyan volt, mint volt, most már Van, hogy adjunk néhány dobok ehhez. 659 00:37:39,952 --> 00:37:41,910 Csak azért, mert ez egy kicsit átláthatatlan, 660 00:37:41,910 --> 00:37:45,790 és én nem használja a Nevét a dob részek, 661 00:37:45,790 --> 00:37:49,490 Feltérképeztem them-- mert ők része, hogy a felsorolás osztály, 662 00:37:49,490 --> 00:37:51,500 Feltérképeztem őket ints. 663 00:37:51,500 --> 00:37:53,120 Az egyik olyan, mint egy nagydob. 664 00:37:53,120 --> 00:37:54,370 Zero is. 665 00:37:54,370 --> 00:37:56,000 A hét nagy kalap. 666 00:37:56,000 --> 00:38:00,920 És le itt, ahol a funkciók egy kicsit több véletlenszerű, 667 00:38:00,920 --> 00:38:02,100 Ezek olyanok, mint a konga dob. 668 00:38:02,100 --> 00:38:08,360 >> Tehát, ha úgy gondolja, about-- talán egy szórakoztató módon, hogy végre egy dobgép 669 00:38:08,360 --> 00:38:12,830 az, hogy nagyon rendezett minták a lábdob. 670 00:38:12,830 --> 00:38:17,640 Így például a szűrés felett listát, hogy mindent ad vissza 671 00:38:17,640 --> 00:38:20,590 1, ha ez hozott modul 04. 672 00:38:20,590 --> 00:38:27,190 Szóval kapok 1, 5, 9, 13, 17-- így ez az első ütemére minden intézkedést. 673 00:38:27,190 --> 00:38:32,860 >> És akkor ez ugyanaz dolog eltolódott a két lépésre. 674 00:38:32,860 --> 00:38:33,850 Szóval ez a szokatlan. 675 00:38:33,850 --> 00:38:37,480 Ez lenne tehát a olyasmi, mint egy nagy kalap. 676 00:38:37,480 --> 00:38:39,640 És akkor megint, itt lent, ez egy kicsit véletlenszerű, 677 00:38:39,640 --> 00:38:41,080 mert csinálunk konga dob. 678 00:38:41,080 --> 00:38:44,180 És van néhány csörgőkkel idelent is. 679 00:38:44,180 --> 00:38:50,280 >> Így tudtam hívni játék dobgép, de ez örökké, 680 00:38:50,280 --> 00:38:53,700 és ez talán újra megragadta fel az összes memóriát az én-rendszer. 681 00:38:53,700 --> 00:38:57,090 Szóval hívom ezt a funkciót zenélni, amely mint látni fogjuk, 682 00:38:57,090 --> 00:39:02,020 Használja a csonkolt párhuzamos összetétele játszani a mi kis Frere Jacques dalt 683 00:39:02,020 --> 00:39:04,200 ezzel együtt a furcsa dobgép. 684 00:39:04,200 --> 00:39:06,190 Szóval vessünk egy pillantást. 685 00:39:06,190 --> 00:39:10,920 És kérem, ne javítsák az én elrendezése minden a dob részeket. 686 00:39:10,920 --> 00:39:13,375 Nem az én specialitásom, de én Volt egy nagyon szórakoztató csinálja. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Zenelejátszási] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Így persze, ez az egész egy kicsit nem olyan szórakoztató, 691 00:39:56,980 --> 00:40:01,100 ha nem konvertálható egy pontszámot, így lehet, hogy 692 00:40:01,100 --> 00:40:04,650 lehetne értelmezni, egy emberi előadóművész. 693 00:40:04,650 --> 00:40:06,535 Szóval nem fut itt. 694 00:40:06,535 --> 00:40:07,910 Már létrehozott fájlokat. 695 00:40:07,910 --> 00:40:10,280 Láthatjuk, hogy van egy dot LilyPond file-- és ez 696 00:40:10,280 --> 00:40:14,500 lesz a Segue át Connor-- és egy pontot MIDI fájlt, 697 00:40:14,500 --> 00:40:18,610 és egy pontot PDF fájl, amely a mi LilyPond végül generál. 698 00:40:18,610 --> 00:40:23,770 >> De ezek azok a szkriptek, és én csak fuss őket az ő segítségükkel lehetőség. 699 00:40:23,770 --> 00:40:28,090 Ha ilyen, és fut Euterpea, akkor létrehoz egy MIDI-fájl. 700 00:40:28,090 --> 00:40:31,160 És akkor a MIDI fájl ezzel a MIDI 2LY program 701 00:40:31,160 --> 00:40:34,930 akkor létrehoz egy Lily Pond fájlt, és akkor 702 00:40:34,930 --> 00:40:37,974 generálhat PDF a pontszámot. 703 00:40:37,974 --> 00:40:39,390 És mi kell egy pillantást erre. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Így Connor valószínűleg azt mutatják, Ön hogyan jegyzetekkel ezt jobban, 706 00:40:55,140 --> 00:41:02,570 de ez Frere Jacques mint által generált nekem Euterpea. 707 00:41:02,570 --> 00:41:07,300 Ez csak a C. kellett volna gondoltam hogy mi a hack ez valójában. 708 00:41:07,300 --> 00:41:11,090 De ez a csővezeték hogyan csinálod, hogy ezzel. 709 00:41:11,090 --> 00:41:12,950 Beszéljünk többet LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Lássuk. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Említette Ismerje meg Ön Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Ó, igen. 714 00:41:22,460 --> 00:41:23,480 Nézze meg tanuljanak meg Haskell. 715 00:41:23,480 --> 00:41:24,410 Ez a forrásokat. 716 00:41:24,410 --> 00:41:26,830 Így kezdtem tanulás, és ez nagyszerű. 717 00:41:26,830 --> 00:41:27,580 Nem hülye tanulás. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Szóval ez az interneten. 719 00:41:28,829 --> 00:41:34,760 Tehát egy srác nevű [hallhatatlan] learnyouahaskell.com, szóköz nélkül. 720 00:41:34,760 --> 00:41:37,065 Nyelvtan beteg. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: Ez illusztrált is. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Tehát mi LilyPond? 723 00:41:39,440 --> 00:41:42,480 Ez egy deklaratív programozás nyelv zenei betűszedő. 724 00:41:42,480 --> 00:41:45,480 Szóval declarative-- tudsz gondolni a dolgokat, mint a HTML, 725 00:41:45,480 --> 00:41:50,900 ahol te nem saying-- HTML Nem mondom, hogy a böngészők 726 00:41:50,900 --> 00:41:52,180 render oldalak lépésről lépésre. 727 00:41:52,180 --> 00:41:54,096 Ez csak azt mondom, ez a egy szöveges leírás 728 00:41:54,096 --> 00:41:56,100 hogy mit akar az oldalt, hogy néz ki. 729 00:41:56,100 --> 00:41:59,310 >> És akkor ez is egy programot hogy lefordítja ezen a nyelven, 730 00:41:59,310 --> 00:42:02,300 vagy az beolvassa a be majd ténylegesen nem a betűszedő az Ön számára, 731 00:42:02,300 --> 00:42:05,570 és kiköpi ezeket Csodálatos megjelenésű PDF pontszámok. 732 00:42:05,570 --> 00:42:08,250 Ön is kap PNG formátumban, vagy bármi. 733 00:42:08,250 --> 00:42:10,300 Egy jó módja annak, hogy úgy gondolja, erre analógiájára 734 00:42:10,300 --> 00:42:16,620 az, hogy a LaTeX a fajta, mint LillyPond, de csak hétköznapi betűszedő. 735 00:42:16,620 --> 00:42:20,360 Tehát ahelyett of-- ez nem WYSIWYG, What You See 736 00:42:20,360 --> 00:42:22,960 What You Get, mint mondjuk Finálé, vagy Sibelius, 737 00:42:22,960 --> 00:42:27,430 vagy a Microsoft Word, ahol beírhatod valós időben és a tervezet a dolgok valós időben 738 00:42:27,430 --> 00:42:31,340 és látni a változásokat azonnal. 739 00:42:31,340 --> 00:42:32,140 >> Ez a szöveg alapján. 740 00:42:32,140 --> 00:42:35,290 Meg kell fordítanod a pontszámok egy külön programot 741 00:42:35,290 --> 00:42:37,090 és kijutni a PDF fájlok később. 742 00:42:37,090 --> 00:42:43,320 Ez egy kicsit kevesebb kényelmes használatra, ha 743 00:42:43,320 --> 00:42:46,520 próbál írni közvetlenül egy pontszámot, és te 744 00:42:46,520 --> 00:42:48,620 próbált magában a számítógépen. 745 00:42:48,620 --> 00:42:50,830 De van egy csomó előnye érte. 746 00:42:50,830 --> 00:42:56,110 Az egyik, úgy néz ki sokkal kedvesebb, mert LillyPond lehet ténylegesen 747 00:42:56,110 --> 00:42:58,210 időt arra, hogy ezt layout döntések megfelelően, 748 00:42:58,210 --> 00:43:02,380 eltérően Sibelius vagy Finale, amelyeknek hogy beszűkült algoritmusok így 749 00:43:02,380 --> 00:43:05,020 hogy képes megjeleníteni dolgok valós időben. 750 00:43:05,020 --> 00:43:07,660 >> Akkor miért van LilyPond-- számítógépes grafika nehéz. 751 00:43:07,660 --> 00:43:10,535 Ha csinálsz semmit zenével és azt szeretné, hogy írjon ki pontszámokat, 752 00:43:10,535 --> 00:43:13,900 nem akarok írni ki mindent magad 753 00:43:13,900 --> 00:43:19,040 kezdve hogyan kell felhívni botok és hogyan kell felhívni jegyzettömbök. 754 00:43:19,040 --> 00:43:21,020 Ez nagyon nehéz. Ez megtörtént korábban. 755 00:43:21,020 --> 00:43:22,170 Jól vagy. 756 00:43:22,170 --> 00:43:26,200 >> Ha a használni kívánt Finale vagy Sibelius, A fájlformátumok azokért a dolgokért, 757 00:43:26,200 --> 00:43:30,180 nagyon bonyolult, és nem tudsz tényleg használja őket programból. 758 00:43:30,180 --> 00:43:35,020 Akkor nyit Sibelius és Finale és válassza ki a Fájl, Export PDF magát, 759 00:43:35,020 --> 00:43:37,600 de nem igazán lehet nevezném egy script. 760 00:43:37,600 --> 00:43:40,440 LillyPond, akkor hívja azoktól szkripteket. 761 00:43:40,440 --> 00:43:44,397 Könnyedén ismételget LillyPond LaTeX. 762 00:43:44,397 --> 00:43:47,230 Nem lesz, hogy sok időt menni figyelembe ezeket a technológiákat most, 763 00:43:47,230 --> 00:43:48,321 de léteznek. 764 00:43:48,321 --> 00:43:50,070 Ha meg szeretnéd nézni egy LillyPond könyvet, 765 00:43:50,070 --> 00:43:53,760 ez egy program ami Ön LillyPond forgalmazás, 766 00:43:53,760 --> 00:43:57,030 és ez a iterációjával LillyPond töredékek LaTeX 767 00:43:57,030 --> 00:44:00,340 Ha azt szeretnénk, hogy tegyen valamit mint egy nagy zenetudományi dokumentum 768 00:44:00,340 --> 00:44:02,289 példákkal, például. 769 00:44:02,289 --> 00:44:04,580 És ez egy jó készség az élet, ha csinálsz valamit 770 00:44:04,580 --> 00:44:05,770 zenével, nem csak CS50. 771 00:44:05,770 --> 00:44:09,320 Én is használtam LillyPond minden Az én összetételű projektek 772 00:44:09,320 --> 00:44:11,880 mivel én alapvetően egy középiskolás. 773 00:44:11,880 --> 00:44:13,455 >> Tehát itt van néhány egyszerű példát. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 Ez alapvetően képviselője A nehézségi szintet 776 00:44:21,060 --> 00:44:23,481 hogy a legtöbb ember szembe vele akarták 777 00:44:23,481 --> 00:44:24,980 használni LilyPond egyszerű projektek. 778 00:44:24,980 --> 00:44:29,519 Ez első a kezdet egy Korálelőjáték Bach. 779 00:44:29,519 --> 00:44:31,810 Ez alsót egy részlet az egyik saját munkák, 780 00:44:31,810 --> 00:44:34,650 és ez csak ott, hogy jelezze Ön a dolgok, mint [hallhatatlan] 781 00:44:34,650 --> 00:44:38,550 amivel több vonal ugyanazon személyzet, hogyan lírai undersetting működik. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Líra alátétek olyan dolog van, ami nagyon könnyen kezelhető LilyPond a kóruszenének. 784 00:44:46,110 --> 00:44:48,814 >> És akkor ott van még néhány bonyolultabb példák itt. 785 00:44:48,814 --> 00:44:50,980 Mindezeket történik LilyPond és ők megvalósítható. 786 00:44:50,980 --> 00:44:55,280 Ez az első részlet re [Hallhatatlan] által [hallhatatlan]. 787 00:44:55,280 --> 00:44:58,860 És ez [hallhatatlan] -tól egy darab az egyéni basszus 788 00:44:58,860 --> 00:45:03,550 fuvola által [hallható], aki egy longtime--, aki 789 00:45:03,550 --> 00:45:07,101 volt egy régi tagja zenei részleg itt, azt hiszem. 790 00:45:07,101 --> 00:45:08,600 Nem vagyok benne biztos, ha ő elment, hogy. 791 00:45:08,600 --> 00:45:12,410 De ő volt a tanácsadója a Harvard Zeneszerzők Egyesülete sokáig. 792 00:45:12,410 --> 00:45:13,530 Csodálatos ember. 793 00:45:13,530 --> 00:45:16,920 És azt írja a zenét, amely nagyon bonyolult jelölés, LillyPond 794 00:45:16,920 --> 00:45:20,500 mindazonáltal kezelni nagyon szépen. 795 00:45:20,500 --> 00:45:26,030 >> Tehát csak hogy érzékeltessem, hogy mi ez a dolog képességeit are-- így 796 00:45:26,030 --> 00:45:28,960 A belsõ LillyPond nagyon bonyolult. 797 00:45:28,960 --> 00:45:31,060 És tudod használni az hosszú ideig, beleértve 798 00:45:31,060 --> 00:45:32,520 néhány elég bonyolult dolgokat, anélkül, hogy igazán 799 00:45:32,520 --> 00:45:34,060 kelljen sokat tud róluk. 800 00:45:34,060 --> 00:45:38,720 De az alapötlet az, hogy a legalacsonyabb szinten, az atomok LillyPonds 801 00:45:38,720 --> 00:45:39,970 a jegyzeteket. 802 00:45:39,970 --> 00:45:42,761 A jegyzetek tartalmaznak összefüggésben az úgynevezett hangokat. 803 00:45:42,761 --> 00:45:44,510 Tehát a hang keretében alapvetően megfelel 804 00:45:44,510 --> 00:45:47,410 az egy vonalra leütését. 805 00:45:47,410 --> 00:45:49,410 És akkor a szövegkörnyezetben lehet tartalmazott hierarchikusan 806 00:45:49,410 --> 00:45:53,590 A magasabb szintű is, hogy képviseli vezérkar a pontszám 807 00:45:53,590 --> 00:45:56,750 vagy nagyobb csoportosulásokat, mint zongora botok vagy kórus botok, 808 00:45:56,750 --> 00:45:58,990 majd végül teljes pontszámot környezetben. 809 00:45:58,990 --> 00:46:02,260 És tulajdonképpen magában foglalja több hanganyagot egy könyvben. 810 00:46:02,260 --> 00:46:05,770 >> És minden összefüggésben van számú mellékelt rézmetszés. 811 00:46:05,770 --> 00:46:08,340 Ha megnézed a tartalmát egy kontextus 812 00:46:08,340 --> 00:46:14,410 és nyomtatni egy bizonyos szimbólumot vagy bizonyos osztálya szimbólumok szükség. 813 00:46:14,410 --> 00:46:17,840 Tehát minden hang összefüggésben van [hallhatatlan] jegyzetek 814 00:46:17,840 --> 00:46:24,270 rézmetsző, hogy alapvetően egy funkciót vagy egy tárgy, amely azt írja ki az összes jegyzetet 815 00:46:24,270 --> 00:46:26,290 fej jobb részek az oldalon. 816 00:46:26,290 --> 00:46:29,510 Aztán ott van a hasadék rézmetsző, amely kiírja hasadékok a személyzet. 817 00:46:29,510 --> 00:46:31,517 Aztán ott van egy metronóm mark rézmetsző, hogy 818 00:46:31,517 --> 00:46:33,100 kiírja a metronóm jelöléseket egy pontszámot. 819 00:46:33,100 --> 00:46:36,410 És mindezek illeszkednek elég valamint a hierarchiában. 820 00:46:36,410 --> 00:46:39,500 És ez nagyon, nagyon, nagyon testreszabható, amelyben meg kell 821 00:46:39,500 --> 00:46:42,880 Ha azt akarjuk, hogy az ilyen dolgokat. 822 00:46:42,880 --> 00:46:45,730 >> Tehát minden környezetben van Sok más-más tulajdonságokkal 823 00:46:45,730 --> 00:46:52,410 hogy lehet módosítani mindent a távolság a különböző betűkészlet 824 00:46:52,410 --> 00:46:54,942 Kijelölés méretű dolgokat. 825 00:46:54,942 --> 00:46:56,900 Ha azt szeretnénk, hogy még bonyolultabb dolog, 826 00:46:56,900 --> 00:46:59,210 van egy beágyazott programozási nyelv. 827 00:46:59,210 --> 00:47:01,820 Az általuk használt rendszer, amely a nyelvjárás LISP. 828 00:47:01,820 --> 00:47:04,960 Ezek valószínűleg nem jelent semmit. 829 00:47:04,960 --> 00:47:06,900 De alapvetően, a program egy másik funkcionális 830 00:47:06,900 --> 00:47:09,500 programozási nyelv, több vagy kevesebb. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: A tie-ben. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Igen. 833 00:47:12,690 --> 00:47:15,390 Ez egy jó tie-ben, azt hiszem. 834 00:47:15,390 --> 00:47:20,150 És ez használják a tanítási nyelv, valóban, le Mass Ave A MIT. 835 00:47:20,150 --> 00:47:26,590 És ez nagyon jól jöhet a LillyPond A különböző technikai okok miatt. 836 00:47:26,590 --> 00:47:30,317 >> És ezért ha azt szeretnénk, hogy győződjön egyszerű csíp függ feltételes, 837 00:47:30,317 --> 00:47:32,900 A example-- vannak bizonyos feltétele a kottát, hogy találkozott, 838 00:47:32,900 --> 00:47:36,495 hogy változnak a elrendezés vagy whatnot-- majd 839 00:47:36,495 --> 00:47:37,620 ezek a lehetőségek vannak. 840 00:47:37,620 --> 00:47:38,667 Ők bonyolult. 841 00:47:38,667 --> 00:47:40,250 Tehát itt egy nagyon egyszerű kódpéldára. 842 00:47:40,250 --> 00:47:43,810 Ez öt sor. 843 00:47:43,810 --> 00:47:46,120 Alapvetően én meghatározó két vezérkar. 844 00:47:46,120 --> 00:47:46,904 Ez a 3/4. 845 00:47:46,904 --> 00:47:48,695 Az első személyzettel rendelkezik mellékelt tempó jelet, 846 00:47:48,695 --> 00:47:51,110 de ez valóban megy menni az egész pontszámot, 847 00:47:51,110 --> 00:47:54,960 mert tempó jelek vannak a pontszám szint. 848 00:47:54,960 --> 00:47:59,044 A metronóm védjegy rézmetsző csatolták gólt összefüggésben. 849 00:47:59,044 --> 00:48:01,460 Vannak különböző kulcsok, mert az [hallhatatlan] rézmetsző 850 00:48:01,460 --> 00:48:02,710 csatolták a vezérkar. 851 00:48:02,710 --> 00:48:04,441 Tudod valójában tennie. 852 00:48:04,441 --> 00:48:06,190 A mintát írtam is valójában C-dúr, 853 00:48:06,190 --> 00:48:07,990 de ez csak a bizonyítani tudja, hogy 854 00:48:07,990 --> 00:48:09,570 különböző kulcsokat különböző vezérkar. 855 00:48:09,570 --> 00:48:15,710 És az alapvető szintaxis írsz megjegyezni a neveket, E, F, G, mindegy. 856 00:48:15,710 --> 00:48:18,910 Ha szeretne csinálni accidentals, Ön utótag vagy ES. 857 00:48:18,910 --> 00:48:22,640 Ez holland zenetudományi egyezmények. 858 00:48:22,640 --> 00:48:28,290 >> És hogy nem oktáv ugrások, meg kell használni Ezek osztásjelek, vessző sem aposztróf. 859 00:48:28,290 --> 00:48:30,580 A relatív csak azt jelenti, amit ki egy feljegyzést, 860 00:48:30,580 --> 00:48:34,080 akkor automatikusan plaec a oktáv legközelebb az előzőhöz. 861 00:48:34,080 --> 00:48:37,624 És ha akarsz ugrani több mint Egy fifth-- mondjuk egy ötödik vagy more-- 862 00:48:37,624 --> 00:48:39,165 akkor meg kell használni a [hallhatatlan]. 863 00:48:39,165 --> 00:48:42,580 De egyébként, akkor nem kell adja meg az oktáv minden egyes hang. 864 00:48:42,580 --> 00:48:46,130 >> És relatív C, elsődleges, és a C, csak adja meg a közép C 865 00:48:46,130 --> 00:48:48,630 és az alap C, különösen az első feljegyzések. 866 00:48:48,630 --> 00:48:55,020 Akkor neked ezek a botok, hogy szervezzen E két hang, vagy a minták a zene, 867 00:48:55,020 --> 00:48:56,730 és van egy pont. 868 00:48:56,730 --> 00:48:58,440 És úgy néz ki, mint ez. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Ha azt szeretnénk, hogy időt arra, hogy másolni, hogy mintát LillyPond 871 00:49:05,380 --> 00:49:07,530 kód az előző lecsúszni itt, és 872 00:49:07,530 --> 00:49:09,030 lehet írni, hogy a LillyPond magad. 873 00:49:09,030 --> 00:49:11,280 Tudom, hogy van valami hogy néz ki, mint ez. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Szóval van egy másik technológia nevű Music XML karbantartott 876 00:49:19,610 --> 00:49:22,030 teljesen eltérő emberek. 877 00:49:22,030 --> 00:49:28,150 Az XML egy szöveges adatok structure-- I Nem mondom adatok structure-- mondják 878 00:49:28,150 --> 00:49:29,580 metaforája térképen fajta. 879 00:49:29,580 --> 00:49:33,800 És úgy tervezték, hogy tartsa hierarchikus adatok nagyon jól. 880 00:49:33,800 --> 00:49:37,050 HTML-ben például, egy olyan típusú XML. 881 00:49:37,050 --> 00:49:41,090 És meg tudod mondani, XML, mert Volt minden a szögletes zárójelet és a szög 882 00:49:41,090 --> 00:49:44,700 konzol jeleknek ami adatokat mutat mezőket. 883 00:49:44,700 --> 00:49:47,390 >> Nem kell a kódot például Music XML. 884 00:49:47,390 --> 00:49:50,450 Megtalálható magát. 885 00:49:50,450 --> 00:49:53,735 Alapvetően azért érdemes használható az XML, mint a köztes szakasz 886 00:49:53,735 --> 00:49:55,980 van, először is, ez Egy csereformátum 887 00:49:55,980 --> 00:50:02,301 A alapvetően every-- nem kéne mondani minden, de egy csomó más pontszámot 888 00:50:02,301 --> 00:50:02,800 írók. 889 00:50:02,800 --> 00:50:04,966 Tehát ha írsz Zene XML, nem csak LillyPond 890 00:50:04,966 --> 00:50:08,080 olvasd el a segítségével ezt a segédkontaktuson nevű program Music XML LY, 891 00:50:08,080 --> 00:50:11,360 hanem Finale lehet olvasni ez, Sibelius tudja olvasni. 892 00:50:11,360 --> 00:50:14,770 Attól függően, hogyan belső objektum hierarchiában működik képviselő zene, 893 00:50:14,770 --> 00:50:18,820 akkor könnyebb, hogy írjon ki a Music XML, mint a LillyPond 894 00:50:18,820 --> 00:50:22,410 és csak támaszkodni Music XML hogy LY Az átalakítás. 895 00:50:22,410 --> 00:50:24,282 >> Nem hiszem, hogy [hallhatatlan] rendelkezik Music XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: Nem kapcsolódik. 897 00:50:25,490 --> 00:50:26,340 Valaki dolgozik rajta, mégis. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea nem rendelkezik Zene XML kimeneti funkció még. 900 00:50:31,040 --> 00:50:35,340 Ha azt szeretnénk, a végleges projekt ötlete, Talán lépni srácok 901 00:50:35,340 --> 00:50:38,620 hogy Stephen tudja, és tudták használni a segítségedre. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Én szeretem. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Is, alapvetően, Minden programozási nyelvek 904 00:50:43,450 --> 00:50:46,610 ez érdemes a só Már van egy XML könyvtár, 905 00:50:46,610 --> 00:50:51,030 így belsőleg megtérít minden A zenét a néhány tárgyat 906 00:50:51,030 --> 00:50:54,120 hogy az XML könyvtár írhat arra, hogy kevesebb lenne szükség 907 00:50:54,120 --> 00:50:57,470 változtatások a belső szerkezete bármilyen zenei objektumok 908 00:50:57,470 --> 00:51:00,310 akarsz írni, mint az írás, hogy közvetlenül LillyPond lenne. 909 00:51:00,310 --> 00:51:04,380 Akkor csak nyomtassa ki az XML és Az XML könyvtárak az Ön nyelvén, 910 00:51:04,380 --> 00:51:07,260 amely garantálja, hogy ez az szintaktikailag helyes, és mindent, 911 00:51:07,260 --> 00:51:08,720 majd átalakítani, hogy LillyPond. 912 00:51:08,720 --> 00:51:11,060 Szóval technológia érdemes nézni, ha csinálsz valamit 913 00:51:11,060 --> 00:51:11,650 ez tetszik. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Hallható], egy másik auxilarry technológia. 916 00:51:16,370 --> 00:51:21,700 Ez alapvetően Tech Works vagy Tech Stúdió a LillyPond. 917 00:51:21,700 --> 00:51:25,380 Tehát kínál segítséget szintaxis, sablonok 918 00:51:25,380 --> 00:51:28,770 A különféle közös kombinációi eszközök. 919 00:51:28,770 --> 00:51:32,780 Ez lehetővé teszi az osztott képernyős, így akkor már a kód egy ablakban 920 00:51:32,780 --> 00:51:37,350 és PDF másik ablakban, és kattintson helyen a PDF 921 00:51:37,350 --> 00:51:40,650 ugrás az érintett foltok a forráskódban. 922 00:51:40,650 --> 00:51:45,330 Ez több hasznos, ha ténylegesen írásban LillyPond fájlok magát 923 00:51:45,330 --> 00:51:47,400 mint ha generáló őket programból. 924 00:51:47,400 --> 00:51:51,230 De ismétlem, ez valami hasznosat, hogy van. 925 00:51:51,230 --> 00:51:51,970 >> Nagy. 926 00:51:51,970 --> 00:51:55,860 Egy másik resources-- Én csak végig ezt nagyon gyorsan. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond van kiváló dokumentációt a honlapján. 928 00:52:01,270 --> 00:52:02,270 Nekik van egy tutorial. 929 00:52:02,270 --> 00:52:03,478 Nekik van egy szintaktikai hivatkozást. 930 00:52:03,478 --> 00:52:07,010 Nekik van több száz töredék különböző apró dolgok 931 00:52:07,010 --> 00:52:09,930 yo szüksége lehet tenni bizonyítani különböző képességek. 932 00:52:09,930 --> 00:52:12,250 Ha a használni kívánt A programozási nyelv 933 00:52:12,250 --> 00:52:14,740 vagy hogy szélesebb körű testreszabást, akkor ott van 934 00:52:14,740 --> 00:52:16,730 belső referencia adott URL-címen. 935 00:52:16,730 --> 00:52:21,950 Ha a használni kívánt Music XML, van hogy az URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> És akkor, ha meg kell tanulni rendszer mert ha valóban szeretné használni 937 00:52:27,960 --> 00:52:30,960 A script létesítmények LillyPond, Aztán ott van a [hallhatatlan] nevezett 938 00:52:30,960 --> 00:52:32,918 Strukturált értelmezése A számítógépes programok, 939 00:52:32,918 --> 00:52:35,820 amely nem csak a második legnagyobb CS könyv sem written-- 940 00:52:35,820 --> 00:52:39,770 rám talál utána, ha tudni akarod, mit gondolok a legnagyobb egy is-- 941 00:52:39,770 --> 00:52:43,580 de ez is egy nagyon jó Bevezetés a nyelv helyes. 942 00:52:43,580 --> 00:52:46,630 Akkor nem kell több, mint Az első néhány fejezet. 943 00:52:46,630 --> 00:52:47,827 >> És ennyi. 944 00:52:47,827 --> 00:52:48,410 Bármi kérdés? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> Diák: Hol tudom letölteni A keletkezett Frere Jacques 947 00:52:57,972 --> 00:53:01,050 így tudok tedd az én iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Nos, akkor írj ki néhány wav fájl Euterpea. 949 00:53:07,574 --> 00:53:08,490 És van a kód. 950 00:53:08,490 --> 00:53:10,000 Ez a GitHub. 951 00:53:10,000 --> 00:53:15,590 Készítsd el saját változatát, Frere Jacques által CS50 kaptár elme. 952 00:53:15,590 --> 00:53:17,095 Jó lenne. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Még valaki? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Szükségünk jobb nagydob is. 955 00:53:20,261 --> 00:53:21,935 Ez tényleg rossz. 956 00:53:21,935 --> 00:53:26,565 >> Diák: Euterpea nem csak A kompozíció oldalon, de signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Igen. 958 00:53:27,440 --> 00:53:30,100 Tény, hogy a munka I. tette Euterpea amikor 959 00:53:30,100 --> 00:53:33,450 vette this-- van egy diplomás természetesen a Yale, hogy 960 00:53:33,450 --> 00:53:35,900 használja it-- volt hangszintézist. 961 00:53:35,900 --> 00:53:39,810 Szóval van egy nagyon Jó utat nyilak segítségével 962 00:53:39,810 --> 00:53:46,150 és néhány, a jelölést láttunk zeneszerzés együtt jelet funkciókat. 963 00:53:46,150 --> 00:53:50,610 Különösen a basszus a legtöbb közülük csak egy egyszerű szinusz hullám. 964 00:53:50,610 --> 00:53:54,240 De ha elkezd alkotó azoknak fura programadó módon, 965 00:53:54,240 --> 00:54:00,010 akkor kap őrült hang hatások, mint a fura zuhatagok. 966 00:54:00,010 --> 00:54:04,640 Tudod teremt nagyon karakán hangok egy csomó moduláció. 967 00:54:04,640 --> 00:54:07,730 >> Én egy projekt szemcsés szintézis, amely a 968 00:54:07,730 --> 00:54:12,290 valahol a kettő között FM és mintavétel. 969 00:54:12,290 --> 00:54:15,230 Veszel nagyon kicsi, kis mintát, majd 970 00:54:15,230 --> 00:54:20,440 összekapcsolják őket valamiféle modulátor és létre kell hozni egy gazdagabb hangzást. 971 00:54:20,440 --> 00:54:24,900 Mi is volt a fizikai modellezés, így próbál gondolkodni a fizika 972 00:54:24,900 --> 00:54:29,410 és pszichoakusztika valami hasonló a trombita, és gondolkodik, ahogy 973 00:54:29,410 --> 00:54:32,320 A hang pattogó le A harang a trombita 974 00:54:32,320 --> 00:54:35,200 és az akusztika A szoba és modellezés 975 00:54:35,200 --> 00:54:40,195 hogy az alapvető oszcillátor. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Köszönöm szépen. 978 00:54:48,940 --> 00:54:50,140 Köszi, hogy eljöttél. 979 00:54:50,140 --> 00:54:52,400 És én mindig szívesen tehetnek fel kérdéseket a 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: Igen. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Hűvös. 984 00:55:00,360 --> 00:55:01,667