1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Ahoj. 3 00:00:05,930 --> 00:00:06,820 Jsem Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Jsem CS50 CA na Harvardu. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Já jsem Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Jsem TF pro CS50 na Yale. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: A budeme mluvit o některých technologií, které byste mohli 8 00:00:15,790 --> 00:00:18,880 chcete použít, pokud máte zájem v tom závěrečný projekt nebo opravdu 9 00:00:18,880 --> 00:00:20,920 cokoliv s hudbou. 10 00:00:20,920 --> 00:00:24,400 Budeme se zaměřením na Nejdřív programovací jazyk nazvaný Haskell. 11 00:00:24,400 --> 00:00:26,280 Je to funkční jazyk, takže paradigma 12 00:00:26,280 --> 00:00:29,620 je velmi odlišný od C nebo PHP nebo z jiných naléhavých jazyky 13 00:00:29,620 --> 00:00:33,450 že jste použili už, a to zejména na knihovny napsané v jazyce Haskell 14 00:00:33,450 --> 00:00:40,240 volal Euterpea, které mohou pomoci lidem s psaním hudby funkčně, 15 00:00:40,240 --> 00:00:40,780 v podstatě. 16 00:00:40,780 --> 00:00:43,400 A Stephen budou chodit vás přes skvělý příklad toho, že. 17 00:00:43,400 --> 00:00:46,423 >> Po tomto, budu vám představit něco, co nazývá LillyPond, který 18 00:00:46,423 --> 00:00:48,370 je technologie pro sazbu hudbu. 19 00:00:48,370 --> 00:00:50,830 Je to něco jako LaTeXu pro hudbu, pokud někdo z vás 20 00:00:50,830 --> 00:00:57,530 Použili LaTeX pro matematické třídy, nebo ostatní P set třídy nebo to, co tě mít. 21 00:00:57,530 --> 00:01:00,440 A tak jsem tě dát, znovu, několik jednoduchých příkladů, které 22 00:01:00,440 --> 00:01:03,640 a bod, který v obecné Směr některých lepších zdrojů. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: V Kromě toho, že jsme si mysleli 24 00:01:04,319 --> 00:01:06,720 by být v pohodě nastavit trochu rad 25 00:01:06,720 --> 00:01:10,780 směrem k potrubí mezi Euterpea generované MIDI soubory 26 00:01:10,780 --> 00:01:13,910 v LillyPond, takže zajišťujeme nějaký návod na skriptech 27 00:01:13,910 --> 00:01:16,310 k tomu, že jsou opatřen LillyPond 28 00:01:16,310 --> 00:01:19,160 Jen aby to open source a získat potrubí děje. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Opět, měli bychom zdůraznit, 30 00:01:20,910 --> 00:01:23,100 tyto dvě technologie, vy Nemusíte je používat dohromady. 31 00:01:23,100 --> 00:01:25,370 Oni nejsou určeny pro práci spolu, ačkoli oni přece velmi pěkně. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Správně. 33 00:01:26,362 --> 00:01:30,116 A zcela zdarma. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: So poděkování, jen číst, že. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: Řádně poznamenal. 36 00:01:33,406 --> 00:01:36,360 Díky těmto lidi. 37 00:01:36,360 --> 00:01:39,180 To budu prodlévat na jen na chvíli. 38 00:01:39,180 --> 00:01:41,560 Proces instalace je trochu složitější. 39 00:01:41,560 --> 00:01:45,420 Máme mě přečíst na GitHub že můžete se podívat na. 40 00:01:45,420 --> 00:01:47,840 Jen mi e-mail, pokud máte nějaké otázky. 41 00:01:47,840 --> 00:01:52,829 Ale my spustit to za předpokladu, že to funguje pro všechny. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: A pokud si nemůžete dostat se LillyPond do práce, žádný velký problém. 43 00:01:55,620 --> 00:02:00,139 Neexistuje žádná živá kompilace, že se bude podílet, alespoň z mé strany. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell a LillyPond by oba mají instalátory. 45 00:02:02,930 --> 00:02:08,497 Euterpea se stáhne jako balíček, tak dále a tak dále. 46 00:02:08,497 --> 00:02:10,080 Takže mluvíme o počítačové hudby. 47 00:02:10,080 --> 00:02:12,990 A to je jen Velmi pohled 50.000 stop. 48 00:02:12,990 --> 00:02:15,700 K dispozici je několik různých aspektů toho. 49 00:02:15,700 --> 00:02:18,120 A to je hrubý a je jít zatemnit nějaký detail. 50 00:02:18,120 --> 00:02:22,090 Ale mohli bychom něco vymyslet jako algoritmické složení, 51 00:02:22,090 --> 00:02:24,920 pomocí algoritmů, pomocí kódu, pro generování 52 00:02:24,920 --> 00:02:30,280 nějaký typ of-- možná self-podobný sled tónů, nebo možná poznámky 53 00:02:30,280 --> 00:02:33,330 pod nějakým omezením. 54 00:02:33,330 --> 00:02:35,350 A pak ty, které by mohly být provedený nebo interpretovány 55 00:02:35,350 --> 00:02:38,390 s analogových přístrojů nebo něco takového. 56 00:02:38,390 --> 00:02:42,010 Avšak směs provádí algoritmicky. 57 00:02:42,010 --> 00:02:45,120 >> Ale samozřejmě, možná oblast Počítač hudbu nebo digitální hudby 58 00:02:45,120 --> 00:02:48,870 jsme blíže seznámit s je digitální zvukové syntézy nebo digitální vzorkování 59 00:02:48,870 --> 00:02:51,160 a digitální záznam. 60 00:02:51,160 --> 00:02:55,650 Mnoho digitálních přístrojů jsou provádí prostřednictvím digitálního vzorkování. 61 00:02:55,650 --> 00:03:00,110 Ve skutečnosti, budeme pomocí jednoho z těch v forma zvukového knihovny písma později. 62 00:03:00,110 --> 00:03:02,850 >> Ale je tu také něco volal digitální syntéza, že vyšel 63 00:03:02,850 --> 00:03:08,650 z konce 70. let, a do 80. let se Yamaha a John Chowning na Stanfordu 64 00:03:08,650 --> 00:03:11,990 dělá syntézu FM nebo Frequency Modulation syntéza, 65 00:03:11,990 --> 00:03:15,100 kde jste měli dopravce signálu a modulační signál 66 00:03:15,100 --> 00:03:18,270 a to jak v zvukového spektra. 67 00:03:18,270 --> 00:03:22,570 Ale to, co se zaměřujeme na dnes je něco, co nazývá MIDI, 68 00:03:22,570 --> 00:03:25,040 a samozřejmě, algoritmické složení. 69 00:03:25,040 --> 00:03:30,940 >> Nebudeme dělat nástroje, ale budeme místo toho chystá udělat nějakou hudbu, 70 00:03:30,940 --> 00:03:33,940 a pak to dostane interpretován některými nástroji, které 71 00:03:33,940 --> 00:03:38,300 jsou konformní k Standardní General MIDI. 72 00:03:38,300 --> 00:03:40,830 Takže to, co je MIDI? 73 00:03:40,830 --> 00:03:45,550 Nebudu se dostat příliš hluboko do ní, ale MIDI je přenos dat protokol. 74 00:03:45,550 --> 00:03:49,250 Je to jakýsi průvodce napříč různé firmy a odvětví 75 00:03:49,250 --> 00:03:52,250 pro pořádání zvuků nebo opravy. 76 00:03:52,250 --> 00:03:54,170 Tak uvidíme, že tam je standardní MIDI 77 00:03:54,170 --> 00:03:57,500 pro všechny různé bicí zvuky a doporučení MIDI 78 00:03:57,500 --> 00:04:01,360 pro všechny různé typy synth, nebo různé typy všech nástroje 79 00:04:01,360 --> 00:04:03,650 skupiny v orchestru, říkají. 80 00:04:03,650 --> 00:04:08,916 >> Vy jste pravděpodobně obeznámeni s 0 až 127 MIDI zprávy. 81 00:04:08,916 --> 00:04:12,920 MIDI signál je typicky jeden bit s uvedením 82 00:04:12,920 --> 00:04:16,130 ať už je to dat nebo stav paket, a pak je tu 83 00:04:16,130 --> 00:04:18,589 sedm bitů signálu. 84 00:04:18,589 --> 00:04:21,430 A ty mohou kontrolovat vše z objemu 85 00:04:21,430 --> 00:04:25,330 na akci nebo tlaku na konkrétní klíč 86 00:04:25,330 --> 00:04:29,400 pokud si vedete s MIDI regulátoru, jakož i, samozřejmě, 87 00:04:29,400 --> 00:04:31,250 poznámky. 88 00:04:31,250 --> 00:04:33,450 A samozřejmě, MIDI má Byl velmi užitečné, 89 00:04:33,450 --> 00:04:37,550 protože je to způsob, jak drát společně nebo sedmikráska řetěz 90 00:04:37,550 --> 00:04:41,570 banda hardwarových zařízení MIDI. 91 00:04:41,570 --> 00:04:44,050 Mám sedm nebo osm zpátky v mém domě. 92 00:04:44,050 --> 00:04:46,610 To dostane opravdu složité, ale je to opravdu silný. 93 00:04:46,610 --> 00:04:47,460 A je to opravdu starý. 94 00:04:47,460 --> 00:04:51,117 To je od počátku 80. let, a je to opravdu pěkné a malý. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Jo. 96 00:04:51,950 --> 00:04:54,230 Všechny klasické Nintendo video hry by pravděpodobně 97 00:04:54,230 --> 00:04:56,088 mají MIDI soubory pro hudbu, například. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Tady je Příkladem General MIDI, 100 00:05:01,740 --> 00:05:06,520 ukazující midi jako druh obecného protokolu. 101 00:05:06,520 --> 00:05:13,280 A myslím, že můžeme myslet na Rozdíl mezi specifikaci 102 00:05:13,280 --> 00:05:17,830 že by měl být něco jako Tyto zvuky nástrojů a skutečnou 103 00:05:17,830 --> 00:05:21,740 realizace těchto nástrojů zvuků ve zdravém písmem nebo na konkrétní MIDI 104 00:05:21,740 --> 00:05:25,740 syntetizátor jako rozdíl Mezi možná i typeface-- který říká, 105 00:05:25,740 --> 00:05:30,350 Obecně, toto je návrh tento konkrétní způsob, jak reprezentovat 106 00:05:30,350 --> 00:05:35,907 characters-- a konkrétní písmo že má specifickou velikost a zabarvení, 107 00:05:35,907 --> 00:05:37,240 a tam je realizace the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Možná lepší srovnání by 109 00:05:39,156 --> 00:05:43,430 být standard Unicode says-- dává číslo na každý znak, a opravdu 110 00:05:43,430 --> 00:05:46,830 každý jazyk na světě, nebo obrovská sada skriptů jazyka 111 00:05:46,830 --> 00:05:51,310 ve světě, a pak to jsou poskytnutý do něčeho grafický 112 00:05:51,310 --> 00:05:53,710 různými balíčky písem. 113 00:05:53,710 --> 00:05:56,630 A samozřejmě, můžete si myslíte, MIDI jako Unicode zvuku. 114 00:05:56,630 --> 00:06:03,250 A je to jen seznam of-- velký proud akcí a nástrojů a kdoví co ještě, 115 00:06:03,250 --> 00:06:06,090 a musíte mít samostatný Program, jako písmo, 116 00:06:06,090 --> 00:06:08,537 k tomu, že do něco, co je slyšet. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Tak proč Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell je funkcionální programování jazyka, velmi pokročilý, 120 00:06:19,110 --> 00:06:22,770 velmi odlišný od C, velmi odlišný od PHP. 121 00:06:22,770 --> 00:06:28,120 A budeme vidět, že je tu snadnost skládání funkcí v Haskell 122 00:06:28,120 --> 00:06:37,640 že nám umožní vánek prostřednictvím skládání nebo psaní nahoru, přepis, 123 00:06:37,640 --> 00:06:42,160 něco jako Frere Jacques, tento jednoduchý píseň, která 124 00:06:42,160 --> 00:06:46,815 má mnoho dílů v tom, že jsou self-podobný nebo opakování. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Takže to bude některá motivace, proč 127 00:06:53,250 --> 00:06:59,400 jsme pomocí Haskell, v němž Funkce jsou občané první třídy. 128 00:06:59,400 --> 00:07:01,120 >> A já jsem chtěl prodloužit to trochu. 129 00:07:01,120 --> 00:07:08,800 Je to trochu snadné notate Frere Jacques v Haskell. 130 00:07:08,800 --> 00:07:12,100 Ale co když jsme chtěli přidat část bubnu na to? 131 00:07:12,100 --> 00:07:17,320 Co kdybychom chtěli snažit, aby něco jako Roland 808 nebo 909 bubnu 132 00:07:17,320 --> 00:07:20,970 Stroj kde musíte asi 16 různé kroky? 133 00:07:20,970 --> 00:07:24,590 Obvykle se jedná o myšlenka jako 16. poznámky. 134 00:07:24,590 --> 00:07:28,640 A můžete ovládat globální tempo, a můžete si vybrat 135 00:07:28,640 --> 00:07:34,620 spoustu různých bicích částí z basový buben, tleskat, různé Snares, 136 00:07:34,620 --> 00:07:37,540 otevřené a uzavřené vysokými klobouky na tyto druh kanálů, 137 00:07:37,540 --> 00:07:41,600 a pak můžete EQ, nebo přizpůsobit jejich objemu. 138 00:07:41,600 --> 00:07:45,290 >> A uvidíme pěkný cestu Haskell reprezentovat tento krok 139 00:07:45,290 --> 00:07:48,810 sekvencer se všemi různé chladné věci v Haskell 140 00:07:48,810 --> 00:07:53,100 můžeme dělat s generováním seznamy a filtrování přes seznamů, 141 00:07:53,100 --> 00:07:56,060 mapování nad seznamy, mapování funkce, které seznamy. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 A rychlá omluva. 144 00:08:00,760 --> 00:08:05,300 Jedná se o velmi povrchní a příliš rychlá skica 145 00:08:05,300 --> 00:08:07,620 některých aspektů Haskell a Euterpea, 146 00:08:07,620 --> 00:08:11,760 což je doména specifická vložený jazyk psaný 147 00:08:11,760 --> 00:08:14,970 v Haskell pro hudební typy. 148 00:08:14,970 --> 00:08:17,350 Takže, prosím, podívejte se na kód on-line. 149 00:08:17,350 --> 00:08:22,404 Oheň ghci, což je Glasgow Haskell Compiler Interpreter. 150 00:08:22,404 --> 00:08:24,320 A já budu dělat některé tohoto v trochu 151 00:08:24,320 --> 00:08:25,880 takže můžete vidět, jak se to dělá. 152 00:08:25,880 --> 00:08:31,021 >> A to vám umožní nahrát se the-- syntaxe je dvojtečka a pak 153 00:08:31,021 --> 00:08:31,520 příkaz. 154 00:08:31,520 --> 00:08:33,510 Můžete vložit do souboru. 155 00:08:33,510 --> 00:08:36,840 Můžete použít Procházet na ty soubory vidět všechny funkce, které 156 00:08:36,840 --> 00:08:39,169 existují v určitém modulu. 157 00:08:39,169 --> 00:08:43,850 A pak jak uvidíme, typy a typ třídy jsou tak důležité v Haskell, 158 00:08:43,850 --> 00:08:48,850 takže můžete vždy check-- zvláště pokud pracujete v novém DSCL 159 00:08:48,850 --> 00:08:51,600 jako je tento, jaký je druh hudební? 160 00:08:51,600 --> 00:08:55,114 Vím, že o tom, jak numerické typy pracují v Haskell, 161 00:08:55,114 --> 00:08:56,530 ale já nevím, moc o hudbě. 162 00:08:56,530 --> 00:09:01,280 Ale můžete prozkoumat toho, jak jsou definován pomocí tohoto T nebo typ příkazu 163 00:09:01,280 --> 00:09:04,577 a pak volání v konkrétní Funkce nebo datový objekt. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Jo. 165 00:09:05,410 --> 00:09:09,820 Pokud jste si mysleli, C a Clang Byl hardass o typy, 166 00:09:09,820 --> 00:09:11,230 nemáte žádnou představu o Haskell. 167 00:09:11,230 --> 00:09:14,230 Dobrou věc, o Haskell je, že pokud můžete získat váš kód kompilovat 168 00:09:14,230 --> 00:09:16,790 a pokud kontroly typu Haskell, je to asi v pořádku, 169 00:09:16,790 --> 00:09:18,675 protože typ systém je tak přísný. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Jo. 171 00:09:20,090 --> 00:09:21,980 Tak jsem jen chci jít through-- a znovu, 172 00:09:21,980 --> 00:09:27,160 to není, jak to udělat justice-- pár rysy Haskell, že přinejmenším 173 00:09:27,160 --> 00:09:31,780 k jeho creators-- a byl vytvořen v pozdní 1980 bandou lidí, 174 00:09:31,780 --> 00:09:34,610 výbor asi 20 people-- považoval za důležité. 175 00:09:34,610 --> 00:09:36,850 A první věc, kterou uvedeny v papíru, který 176 00:09:36,850 --> 00:09:41,890 popsal genezi Haskell během prvních 20 let nebo tak 177 00:09:41,890 --> 00:09:43,390 bylo, že líný. 178 00:09:43,390 --> 00:09:44,990 Takže co to znamená? 179 00:09:44,990 --> 00:09:49,860 >> No, to znamená, když máme nějaký druh projevu, musíme hodnotit. 180 00:09:49,860 --> 00:09:54,390 A Haskell dělá toto v hovoru potřebou cestě nebo non-přísné způsobem. 181 00:09:54,390 --> 00:09:57,250 To znamená, že pokud budeme mít spoustu součásti našeho projevu, 182 00:09:57,250 --> 00:10:00,660 snažíme odložit hodnocení z těch dílčích komponent 183 00:10:00,660 --> 00:10:05,300 až do absolutní posledního minute-- to je, dokud jsme skutečně potřebují je. 184 00:10:05,300 --> 00:10:08,480 >> Tak tohle means-- která je opravdu cool, a to zejména 185 00:10:08,480 --> 00:10:13,200 pokud budeme přemýšlet o abstrakce hudebního kroku sekvenceru. 186 00:10:13,200 --> 00:10:16,740 Můžete ji zapnout, a začnete běh krok sequence-- 187 00:10:16,740 --> 00:10:20,010 Pokud jste někdy pracovali s bubnem machine-- a to jen jde věčně. 188 00:10:20,010 --> 00:10:24,650 Tak to by bylo opravdu hezké, kdybychom mohl napodobit, že v Haskell. 189 00:10:24,650 --> 00:10:31,040 A můžeme to udělat s nekonečným hodnoty, zejména nekonečnými seznamy. 190 00:10:31,040 --> 00:10:35,860 Je to velmi jednoduché k zadání nekonečný seznam v Haskell. 191 00:10:35,860 --> 00:10:39,230 Dalo by se stačí použít syntaxi dolů tady, kde je vidět 1 až 3, 192 00:10:39,230 --> 00:10:42,440 odstranit 3 1 dot dot, a že je nekonečný seznam 193 00:10:42,440 --> 00:10:46,960 ze všech přirozených čísel prodloužení Na co si dokážete představit. 194 00:10:46,960 --> 00:10:49,925 >> Chci se představit Koncept záhybů hned. 195 00:10:49,925 --> 00:10:51,800 A opět, účel na tento seminář není 196 00:10:51,800 --> 00:10:55,770 dozvědět se o záhyby v Haskell nebo vyšších řádů funkce. 197 00:10:55,770 --> 00:10:59,640 Ale chci představit ji poskytnout přesný pocit, jak divný 198 00:10:59,640 --> 00:11:03,700 Haskell je a jak silný to je. 199 00:11:03,700 --> 00:11:08,000 A zejména, budeme be-- když budeme dělat naše různé bicí party, 200 00:11:08,000 --> 00:11:12,790 budeme se manipuluje seznamy Čísla, skládání na sebe. 201 00:11:12,790 --> 00:11:17,290 A k tomu, že budeme se používají mapy a záhyby. 202 00:11:17,290 --> 00:11:21,770 >> Je tu právo asociativní složit, což je tenhle pravdu 203 00:11:21,770 --> 00:11:26,990 here-- 1 se sníží o množství, 2 se sníží o množství, 3 mínus 0. 204 00:11:26,990 --> 00:11:29,170 A Syntaxe pro fold, dáte fold 205 00:11:29,170 --> 00:11:34,680 základní hodnota a pak operation-- v tomto případě, sčítání nebo odčítání. 206 00:11:34,680 --> 00:11:36,280 Já jsem je znázorněno oba případy. 207 00:11:36,280 --> 00:11:41,760 A pak je tu akumulátor, které hromadí po celé seznamu 208 00:11:41,760 --> 00:11:46,330 použití tohoto operátora Plus nebo minus, a pak ji hromadí. 209 00:11:46,330 --> 00:11:52,680 Takže to bude the--, když se mu říkalo s rozkládacím R plus 0, počínaje 0, 210 00:11:52,680 --> 00:11:54,720 pak bychom sečíst všechny Čísla v tomto seznamu. 211 00:11:54,720 --> 00:11:57,134 A to je seznam od 1 do 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Tak, aby to dát další cesta, fold r trvá tři argumenty. 213 00:12:00,050 --> 00:12:02,540 K dispozici je funkce, která sám přijímá dva argumenty, 214 00:12:02,540 --> 00:12:05,400 pak je tu hodnotu startér, a tam je seznam hodnot. 215 00:12:05,400 --> 00:12:08,570 A to, co děláte, je si vzít startér hodnoty, první hodnota, 216 00:12:08,570 --> 00:12:09,850 dát je do funkce. 217 00:12:09,850 --> 00:12:11,607 Co dostanete ven, vezmu, krmivo, které 218 00:12:11,607 --> 00:12:13,940 do funkce z druhá hodnota, co dostanete ven, 219 00:12:13,940 --> 00:12:16,690 vzít, nakrmit, že do Funkce třetího hodnoty. 220 00:12:16,690 --> 00:12:18,740 A pak, když jdete dolů celý tento seznam tímto způsobem, 221 00:12:18,740 --> 00:12:22,970 budete mít nakonec někteří singulární to je 222 00:12:22,970 --> 00:12:25,720 stejného typu, co začali se s a stejného typu 223 00:12:25,720 --> 00:12:29,147 jako věci v seznamu a potom že je to návrat výsledek fold R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Tak především, to jsou funkce vyššího řádu, 225 00:12:31,980 --> 00:12:34,460 protože bereš další Funkce jako jednu z úvah. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Jo. 227 00:12:34,770 --> 00:12:37,820 Pokud jste použili některé další languages-- Vím, že R, [neslyšitelných] 228 00:12:37,820 --> 00:12:41,510 jazyk má to, tzv snížit. 229 00:12:41,510 --> 00:12:45,460 Ty by mohly mít podobné funkce v jiných jazycích, jen volal 230 00:12:45,460 --> 00:12:48,160 různé věci. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: A co je hezké o fold R 232 00:12:50,680 --> 00:12:53,880 v tomto případě je, že záhyb R může pracovat s nekonečnými seznamy. 233 00:12:53,880 --> 00:12:59,490 Takže v tomto dnu, tento P5 vytváří poznámky 234 00:12:59,490 --> 00:13:03,120 jsou zapnuté v kroku sekvenceru pro některá část bubnu, pátá část bubnu, 235 00:13:03,120 --> 00:13:05,480 a možná je to conga buben, nebo tak něco. 236 00:13:05,480 --> 00:13:09,719 A to je záměrně tupé způsob psaní tohoto, 237 00:13:09,719 --> 00:13:11,510 ale je to zábava, protože demonstruje hodně 238 00:13:11,510 --> 00:13:14,460 z věcí, o Haskell a Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Takže složit R této colon-- tlustého střeva je jen operátor, který tlačí věci 240 00:13:20,650 --> 00:13:25,700 spolu na list-- vyzvala prázdný seznam, což je jen prázdné závorky. 241 00:13:25,700 --> 00:13:28,250 A volám, že na tomto nekonečný seznam. 242 00:13:28,250 --> 00:13:31,570 To je vlastně dva seznamy sčítají tady dole. 243 00:13:31,570 --> 00:13:37,150 Seznam 1 čárka 6 tečka dot je 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Takže Haskell-- v právě několik znaků, vy 245 00:13:39,750 --> 00:13:42,420 můžete vygenerovat celokrajné posloupnost čísel 246 00:13:42,420 --> 00:13:46,240 které jsou od sebe pět čísel rozkládající se na do nekonečna. 247 00:13:46,240 --> 00:13:49,860 A já jsem se, že předřadit tento malý kratší list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- jen proto, aby vám ukázat, jak můžete zřetězit seznamy. 249 00:13:54,370 --> 00:13:55,790 >> A pak jsem složil na sebe. 250 00:13:55,790 --> 00:14:01,510 A to skončí být jen jakousi Provoz identity, ale je to nekonečné. 251 00:14:01,510 --> 00:14:06,070 A fold R může udělat, protože to líně hodnotí, jak je ve výše uvedeném. 252 00:14:06,070 --> 00:14:10,582 Pokud máme 1 a 2 a 3, můžeme jen závorka mimo celý zbytek. 253 00:14:10,582 --> 00:14:12,290 To nebude fungovat minus nebo plus, ale 254 00:14:12,290 --> 00:14:17,760 bude pracovat pro tento tlustého střeva Provoz identity na seznamu. 255 00:14:17,760 --> 00:14:24,620 >> Tak jak jsme se prakticky použít, že pokud budeme mají nekonečně dlouhý seznam věcí? 256 00:14:24,620 --> 00:14:26,500 No, Haskell poskytuje hodně functions-- 257 00:14:26,500 --> 00:14:29,450 a dívat se více do nich v vlastní time-- jako je vzít 258 00:14:29,450 --> 00:14:32,200 který říká, OK, my jsme generování tohoto nekonečný seznam, 259 00:14:32,200 --> 00:14:35,950 ale my jsme jen tak, aby se některé počet IT a v tomto case-- 260 00:14:35,950 --> 00:14:38,410 uvidíme později v naše bicí automat code-- 261 00:14:38,410 --> 00:14:43,740 GM je jen nějaký druh globálního proměnná pro počtu kroků 262 00:14:43,740 --> 00:14:44,610 v sekvenceru. 263 00:14:44,610 --> 00:14:47,630 Na strojích Roll-in I vám ukázal, že je to typicky 16, 264 00:14:47,630 --> 00:14:51,475 ale jsem implementoval ji s 32. 265 00:14:51,475 --> 00:14:54,470 Je to opravdu nezáleží. 266 00:14:54,470 --> 00:15:00,230 >> Haskell je také čistý, takže to má silný statické psaní, že Connor zmiňoval. 267 00:15:00,230 --> 00:15:03,220 Takže funkce matematické v sense-- 268 00:15:03,220 --> 00:15:06,600 oni jsou více matematický že jsou zaručena 269 00:15:06,600 --> 00:15:11,530 se nelze přistupovat nebo změnit jakékoliv proměnná nebo provést vstup nebo výstup. 270 00:15:11,530 --> 00:15:14,420 Takže pokud máte funkci, to je deterministický. 271 00:15:14,420 --> 00:15:17,400 To bude vždy vrátit stejný hodnota ve stavu programu 272 00:15:17,400 --> 00:15:19,310 nebo zůstávají stejné. 273 00:15:19,310 --> 00:15:22,940 Existují, samozřejmě, Monadické výjimky k tomu, ale to je mimo naši působnost. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Jo. 275 00:15:23,900 --> 00:15:26,946 Co to znamená, když je tam jsou málo důležité [neslyšitelných] 276 00:15:26,946 --> 00:15:27,820 Důsledky této. 277 00:15:27,820 --> 00:15:30,940 Jedním z nich je, že je to velmi snadné paralelizovat programů Haskell. 278 00:15:30,940 --> 00:15:32,773 Vzhledem k tomu, máte-li, říkají, funkci, která 279 00:15:32,773 --> 00:15:36,064 musí fungovat na milion hodnotách, pokud víte, že funkce bude vždy 280 00:15:36,064 --> 00:15:39,280 rozdávat stejnou hodnotu, pokud krmíte v určitém value-- 281 00:15:39,280 --> 00:15:43,055 pokud jste [neslyšitelné] f 1, f 2, pak f 3 nebo whatnot-- f 1 282 00:15:43,055 --> 00:15:45,180 se nebude psát ven do souboru nebo dělat něco 283 00:15:45,180 --> 00:15:46,850 , který bude měnit hodnotu f2. 284 00:15:46,850 --> 00:15:50,220 Stačí si jen rozdělit tuto funkci do A milionů různých strojů nebo milion 285 00:15:50,220 --> 00:15:54,720 různé závity nebo cokoliv, získat všechny odpovědi zpět, 286 00:15:54,720 --> 00:15:56,900 získat všechny návratové hodnoty dozadu, a pak je to. 287 00:15:56,900 --> 00:15:59,780 Takže velmi snadno paralelizovat věci. 288 00:15:59,780 --> 00:16:03,140 >> Nevýhodou je, že vstup a výstup zvláště 289 00:16:03,140 --> 00:16:05,720 zapadají do systému typu ve velmi složitých způsoby. 290 00:16:05,720 --> 00:16:09,010 Nebudeme zacházet do tohoto práva, ale já Doporučujeme vám podívat se na některé zdroje 291 00:16:09,010 --> 00:16:11,175 on-line, pokud se chcete dozvědět o tom. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: So zadejte classes-- a to 294 00:16:16,550 --> 00:16:21,610 was-- třídy typů byly vynalezeny řešit 295 00:16:21,610 --> 00:16:24,160 problém operátora přetížení. 296 00:16:24,160 --> 00:16:27,590 Takže jsme chtěli mít rovnost mezi různými typy věcí. 297 00:16:27,590 --> 00:16:31,040 Samozřejmě, že si myslíme, že of-- rovnost mezi typy číselných 298 00:16:31,040 --> 00:16:34,720 je velmi snadné si myslet o tom, ale co o rovnosti mezi seznamy? 299 00:16:34,720 --> 00:16:37,610 Co rovnosti stromové datové struktury noha? 300 00:16:37,610 --> 00:16:43,130 A to vše je možné v Haskell protože tříd typu. 301 00:16:43,130 --> 00:16:48,000 >> Takže pokud definujete určité údaje type-- a tady, to jsou hudební hřiště. 302 00:16:48,000 --> 00:16:50,960 Jsme konečně dostává nějaké počítačové hudby. 303 00:16:50,960 --> 00:16:57,420 Takže máme C, C ostrý, a tak dále a tak dále. 304 00:16:57,420 --> 00:17:01,080 Patří k banda Různé typové třídy. 305 00:17:01,080 --> 00:17:03,510 EQ-- oni patří k typu EQ třídy. 306 00:17:03,510 --> 00:17:06,780 To znamená, že podporují Operace rovnosti. 307 00:17:06,780 --> 00:17:12,650 Takže si můžete vyhodnotit, zda jeden sled hudebních primitiv 308 00:17:12,650 --> 00:17:15,400 je stejné jako jiné. 309 00:17:15,400 --> 00:17:17,280 >> Patří do řadové třídy. 310 00:17:17,280 --> 00:17:19,479 To znamená, že tam je uspořádání na ně. 311 00:17:19,479 --> 00:17:27,670 D přichází poté, co C. C ostrý přichází poté, C i. 312 00:17:27,670 --> 00:17:29,840 Patří do třídy ukazují, což znamená, že mohou 313 00:17:29,840 --> 00:17:33,000 být vytištěna na konzole nebo terminálu. 314 00:17:33,000 --> 00:17:36,090 Oni patří k třída vyjmenoval, který 315 00:17:36,090 --> 00:17:39,770 Znamená to, že i když to jsou znaky, 316 00:17:39,770 --> 00:17:45,340 mají podkladové číselný zastoupení začínajícího na 0 317 00:17:45,340 --> 00:17:48,960 a jít pryč přes nicméně mnoho věcí se zde, 20 nebo tak, 318 00:17:48,960 --> 00:17:51,770 nebo 30 nebo 40, možná. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: A kdy máme datový typ 320 00:17:54,259 --> 00:17:57,050 že derives-- se dané klíčové slovo "deriving--" určitý druh třídy, 321 00:17:57,050 --> 00:18:01,160 to znamená, že kompilátor bude snažit postavit něco, co automaticky. 322 00:18:01,160 --> 00:18:05,120 Takže možná budete chtít definovat kvalitu jinak. 323 00:18:05,120 --> 00:18:09,450 Budete chtít definovat C ostrý jako rovná D byt, například. 324 00:18:09,450 --> 00:18:11,560 U této konstrukce tady, nemyslím si, že C ostrý 325 00:18:11,560 --> 00:18:14,940 a D ploché bude stejná, protože kompilátor automaticky 326 00:18:14,940 --> 00:18:19,670 říkají, každý jinou možnou hodnotu se liší od každé jiné. 327 00:18:19,670 --> 00:18:22,930 >> Je tedy možné, aby přepsat Výchozí implementace 328 00:18:22,930 --> 00:18:25,730 z těchto typů tříd. 329 00:18:25,730 --> 00:18:28,640 Opět platí, podívejte se na odkaz, pokud Chcete se dozvědět o tom. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: A Zde, ve skutečnosti, to bude 332 00:18:33,600 --> 00:18:36,930 být užitečné, když jsme se kód později. 333 00:18:36,930 --> 00:18:42,150 Vidíme některé z operátorů infix pro sekvenční složení, 334 00:18:42,150 --> 00:18:46,570 paralelní složení, a proto dále, tyto plusy a rovné znaky 335 00:18:46,570 --> 00:18:48,620 obklopen dvojtečkami. 336 00:18:48,620 --> 00:18:53,330 To znamená, že můžeme hrát tyto různé hudební primitiva jeden po druhém. 337 00:18:53,330 --> 00:18:54,590 To je sekvenční složení. 338 00:18:54,590 --> 00:18:57,170 >> Nebo můžeme hrát je v paralelně ve stejné době. 339 00:18:57,170 --> 00:19:05,100 Takže můžu mít hudební hodnotu, a pak se to rovná a dvojtečky, 340 00:19:05,100 --> 00:19:09,669 infix paralelní operátor složení, a přehrát je jako druh akordu. 341 00:19:09,669 --> 00:19:11,460 A budeme používat to, když jsme se spojit 342 00:19:11,460 --> 00:19:15,080 Naše část bubnu s našimi málo Frere Jacques song 343 00:19:15,080 --> 00:19:19,460 hrát tyto dvě sekvence hudební hodnoty ve stejnou dobu. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Mazání, je-- Curry byl naposledy jméno Haskell Curry, který 346 00:19:29,250 --> 00:19:31,850 obraz Haskell je pojmenoval. 347 00:19:31,850 --> 00:19:34,330 A to nám umožní si pěkné elegance když jsme 348 00:19:34,330 --> 00:19:36,880 psát všechny tyto různé funkcí nebo filtry, které jsme 349 00:19:36,880 --> 00:19:39,330 Bude mapování přes naše stránky. 350 00:19:39,330 --> 00:19:42,810 Funkce dvou arguments-- f x a y- 351 00:19:42,810 --> 00:19:46,630 může být reprezentován jako f x aplikován na y. 352 00:19:46,630 --> 00:19:49,800 Takže je to funkce jeden argument, že se vrátí 353 00:19:49,800 --> 00:19:51,240 Další funkcí jedním argumentem. 354 00:19:51,240 --> 00:19:56,962 Takže to znamená, že můžeme mapovat funkce f x nad seznamem y je. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Chci dát příklad to? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Jo. 357 00:19:59,836 --> 00:20:05,390 Mám příklad tady od některé z věcí, budeme psát. 358 00:20:05,390 --> 00:20:10,500 Takže replikovat 2-- dobře, replikovat bude trvat 359 00:20:10,500 --> 00:20:13,040 jedna hodnota, která je, kolik časy replikovat něco, 360 00:20:13,040 --> 00:20:16,690 a pak to bude trvat value-- obvykle seznam nebo tak něco. 361 00:20:16,690 --> 00:20:23,450 Tak tady, my jsme mapování replikovat 2 přes jiného seznamu. 362 00:20:23,450 --> 00:20:27,440 >> Takže pokud budeme map replikovat 2, pokud bychom replikovat 2 platí 363 00:20:27,440 --> 00:20:31,890 na první prvek tohoto list-- a to jsou seznamy hudebního phrases-- 364 00:20:31,890 --> 00:20:37,650 bude vyrábět dva "vy sleeping--" takže spíte, spíte. 365 00:20:37,650 --> 00:20:40,040 Takže teď máme dvě. 366 00:20:40,040 --> 00:20:42,570 Ale replikát trvá dva argumenty, ale proto, že jsme 367 00:20:42,570 --> 00:20:47,100 mazání, a pak mapování, můžeme reprezentovat replikovat 2 368 00:20:47,100 --> 00:20:52,310 jako by byla vrácena jako funkce jedním argument-- jen replikaci dvakrát. 369 00:20:52,310 --> 00:20:57,010 A pak jsme se ucházíte, že pro každý prvkem tohoto seznamu frází. 370 00:20:57,010 --> 00:21:01,900 >> A concat je Haskell Operace pro sloučení seznamu. 371 00:21:01,900 --> 00:21:04,400 Vzhledem k tomu, replikát 2, bude vytvoří seznam seznamů. 372 00:21:04,400 --> 00:21:06,660 A to je tady to přechodná forma. 373 00:21:06,660 --> 00:21:10,365 A tak pak můžeme concat nebo vyrovnat, že dvakrát. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Jednodušší mazání, na příklad, 375 00:21:12,240 --> 00:21:15,323 pokud byste jako-- představit, f je jen Funkce násobení, která bere dva 376 00:21:15,323 --> 00:21:16,840 argumenty a vrátí jejich produktu. 377 00:21:16,840 --> 00:21:19,320 Takže pokud máte F 4 5, to je 20. 378 00:21:19,320 --> 00:21:22,670 Ale můžete myslet na to, jak also-- máte funkci f 4 379 00:21:22,670 --> 00:21:25,560 který bere argument a vrací čtyřnásobek této argument-- jen 380 00:21:25,560 --> 00:21:27,870 částečná aplikace, která jen jeden argument 4. 381 00:21:27,870 --> 00:21:31,182 A jestli krmíte f 4 5, který vám dá 20. 382 00:21:31,182 --> 00:21:32,890 A to je jednodušší Příkladem mazání, na. 383 00:21:32,890 --> 00:21:34,473 Je to obvykle jedna z učebnice ty. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda výrazy nebo anonymní funkce 386 00:21:42,110 --> 00:21:47,330 jsou další Haskell znakem. 387 00:21:47,330 --> 00:21:51,242 Takže pokud budeme potřebovat, aby vybičovat málo funkce život replikát, 388 00:21:51,242 --> 00:21:52,950 ale říkají, že to není Standardní knihovna, 389 00:21:52,950 --> 00:21:56,150 můžeme použít syntax podobné následujícím. 390 00:21:56,150 --> 00:21:58,730 A budeme vánek nad tím. 391 00:21:58,730 --> 00:22:02,160 Jedna věc, kterou uvidíte hodně v bicí automat je děláme hovorů 392 00:22:02,160 --> 00:22:05,790 k něčemu volal filtr, která je stejně jako dříve, 393 00:22:05,790 --> 00:22:08,185 je zobrazení funkce nad seznamu, ale je to 394 00:22:08,185 --> 00:22:10,260 mapování logický funkce. 395 00:22:10,260 --> 00:22:13,390 >> Takže tu máme příklad standardu A anonymně 396 00:22:13,390 --> 00:22:19,150 definovaná booleovská funkce, které Stačí jen pár hodnot. 397 00:22:19,150 --> 00:22:22,990 To není přísně vzato anonymní funkce. 398 00:22:22,990 --> 00:22:25,850 Ale je to definovat s že syntaxe pro stručnost, 399 00:22:25,850 --> 00:22:28,007 a to prostě trvá x modul n- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Jo. 401 00:22:28,840 --> 00:22:31,330 Takže f je funkcí dva argumenty n a p 402 00:22:31,330 --> 00:22:35,440 že vrátí funkci, která je sama funkce jednoho argumentu, a to x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: I Uvedené operátory infix. 405 00:22:40,690 --> 00:22:42,642 Jaké jsou operátoři infix? 406 00:22:42,642 --> 00:22:45,710 No, operátoři infix jsou Normální způsob zastupujeme operace, 407 00:22:45,710 --> 00:22:49,910 říkají, v mathematics-- 2 plus 2 místo provozovatele a 408 00:22:49,910 --> 00:22:51,202 a pak dva argumenty 2 a 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Jmenuje se to Reverzní polská notace, což je 410 00:22:53,701 --> 00:22:55,330 termín Pochybuji, někdo z vás bude vědět. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Správně. 412 00:22:56,288 --> 00:22:58,290 Reverzní polská notace nebo předpony. 413 00:22:58,290 --> 00:23:01,412 Ale rozhodl se Haskell používat operátory infix. 414 00:23:01,412 --> 00:23:03,120 Tak to jsou některé z Vlastní ty, které 415 00:23:03,120 --> 00:23:07,770 jsou definovány pro Euterpea DSCL v Haskell. 416 00:23:07,770 --> 00:23:10,730 Tak tohle je sekvenční složení. 417 00:23:10,730 --> 00:23:16,340 Toto bylo paralelní složení, a to se zkracovat paralelní složení. 418 00:23:16,340 --> 00:23:18,710 A budeme potřebovat s naším automatem, 419 00:23:18,710 --> 00:23:22,640 protože budeme používat poslední operátor v tom, že malé tice 420 00:23:22,640 --> 00:23:26,330 hrát na bicí automat podél s naší Frere Jacques píseň. 421 00:23:26,330 --> 00:23:28,650 A naše bicí automat je Bude nekonečný. 422 00:23:28,650 --> 00:23:30,920 Je to jen hraje navždy. 423 00:23:30,920 --> 00:23:32,692 Ale píseň Frere Jacques není. 424 00:23:32,692 --> 00:23:33,510 Není to tak dlouho. 425 00:23:33,510 --> 00:23:36,610 Je to jen pár barů. 426 00:23:36,610 --> 00:23:43,030 Takže potřebujeme zastavit bicí automat as Jakmile je kratší hudební hodnota vychází 427 00:23:43,030 --> 00:23:43,700 do konce. 428 00:23:43,700 --> 00:23:46,980 A to infixed operátor je super užitečné, s tím. 429 00:23:46,980 --> 00:23:50,090 >> A infix notace jako To je docela hezké, 430 00:23:50,090 --> 00:23:57,095 proto, že říkají, že máte funkci jako citát, který dává celočíselné dělení 431 00:23:57,095 --> 00:24:01,010 x něčím else-- Omlouvám se, že by měl být, a b. 432 00:24:01,010 --> 00:24:04,740 Dalo by se napsat, jako citace b. 433 00:24:04,740 --> 00:24:09,670 Takže pokud jste put-- prvek Dalším příkladem. 434 00:24:09,670 --> 00:24:14,730 x element v nějakém seznamu, pokud jste dal to v backticks, můžete jej použít. 435 00:24:14,730 --> 00:24:20,400 I když to není symbol jako plus nebo minus nebo časy, 436 00:24:20,400 --> 00:24:24,630 můžete použít jméno Funkce, jako že v backticks 437 00:24:24,630 --> 00:24:27,045 jako zaváděcí operátor, což je docela v pohodě. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Znovu, toto je všechno jenom syntaktický cukr, opravdu. 439 00:24:29,670 --> 00:24:32,310 To nemá vliv na jádro jazyka. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Takže zde vidíme pro Poslední věta našeho Frere Jacques písně, 441 00:24:37,440 --> 00:24:45,740 Hrál jsem nějaké malé nebo akordy třetiny pomocí paralelní složení 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 To je další způsob, jak říkat některé z toho, co jsme právě říkali. 445 00:24:54,950 --> 00:24:59,986 Takže si můžete mapovat funkce jednoho argumentu nad seznamy. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Opět odkazy pro Haskell-- úvodních učebnice 447 00:25:02,860 --> 00:25:04,680 bude mít vše v něm. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Tak tady je docela Klíčovým řádek kroku sekvenceru 449 00:25:07,790 --> 00:25:12,820 budeme se podívat na použití seznam porozumění. 450 00:25:12,820 --> 00:25:17,810 A zde vidíme, je, že prvek V provozovatele pevných vzadu uvozovkách. 451 00:25:17,810 --> 00:25:23,030 Takže pokud x je prvkem seznamu x je, pak budeme vyvolat Perc funkce. 452 00:25:23,030 --> 00:25:25,100 Takže perc je jen funkce bicí. 453 00:25:25,100 --> 00:25:30,200 To trvá nějakou hodnotu p, který je část ohraničené množiny všech 454 00:25:30,200 --> 00:25:35,310 různé bicí zvuky že jsme viděli v předchozím snímku, 455 00:25:35,310 --> 00:25:38,840 a pak to, že dává Doba trvání čtvrt poznámky. 456 00:25:38,840 --> 00:25:43,190 Jinak to mu dává qnr, a qnr je jen odpočinek čtvrťová nota. 457 00:25:43,190 --> 00:25:44,970 >> Tak tohle je budování něco pěkného. 458 00:25:44,970 --> 00:25:52,110 Máme seznam prvků, a my budeme smyčku nad nějakou seznamu od jednoho 459 00:25:52,110 --> 00:25:54,540 na maximální hodnoty našeho kroku sekvenceru. 460 00:25:54,540 --> 00:25:58,290 A když jsme v určitém i v že seznam jednoho do maximální hodnoty, 461 00:25:58,290 --> 00:26:02,970 pokud, že i je členem této sada byla vytvořena v této funkci, 462 00:26:02,970 --> 00:26:06,040 dobře, pak jsme to otočit do perkusní poznámky. 463 00:26:06,040 --> 00:26:10,960 Jinak jsme jen hrát odpočinek, který znamená, že jsme prostě mlčí. 464 00:26:10,960 --> 00:26:16,050 A vidíme zde, že v Tento seznam porozumění syntax, 465 00:26:16,050 --> 00:26:20,030 x je obýván to Seznam postavil jednoho 466 00:26:20,030 --> 00:26:22,462 ke globálnímu velikosti sekvenceru. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Jo. 468 00:26:23,295 --> 00:26:26,340 Základní syntaxe Seznam je comprehension 469 00:26:26,340 --> 00:26:30,810 držák, hodnota zahrnující některé proměnné, bar, 470 00:26:30,810 --> 00:26:34,260 Možné hodnoty proměnných sám, uzavřený držák. 471 00:26:34,260 --> 00:26:38,545 A pokud jste udělali nastavit stavitel notace v nějakém druhu matematiky třídy, 472 00:26:38,545 --> 00:26:45,999 můžete mít nastaveno jako 2n že n je nebo n je v z. 473 00:26:45,999 --> 00:26:48,290 Podobné thing-- tomto zápisu má být podnětný 474 00:26:48,290 --> 00:26:49,630 tohoto matematického zápisu. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: A můžete použít více predikáty 476 00:26:51,880 --> 00:26:56,250 a více filtrů v seznamu porozumění, což je docela pěkné. 477 00:26:56,250 --> 00:27:01,800 Algebraická types-- jsme nebude otálet tady dlouho. 478 00:27:01,800 --> 00:27:04,840 Tam to není dobrý pojem v Haskell nebo dobrý, zřejmý pojem 479 00:27:04,840 --> 00:27:10,720 o tom, jak vzít, řekněme, ve výchozím nastavení parametr funkci nebo tak něco. 480 00:27:10,720 --> 00:27:13,370 V Pythonu, je to docela snadné. 481 00:27:13,370 --> 00:27:18,460 Stačí si jen říci rovná na prohlášení o funkce, 482 00:27:18,460 --> 00:27:21,420 výchozí hodnota v Případ nikdo je dodáván. 483 00:27:21,420 --> 00:27:27,010 >> V Haskell, mohl byste možná použijte možná možná typ, 484 00:27:27,010 --> 00:27:32,190 který bere buď nic nebo hodnotu typu jen. 485 00:27:32,190 --> 00:27:38,630 Tak jsme to využít v bubnu pračky , abychom mohli dát volitelného objemu 486 00:27:38,630 --> 00:27:40,730 parametry na každé z částí bubnu. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Tak, že nám dává způsob, jak mít EQ nebo objem na konkrétní kanál. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: V další příklady Haskell, 490 00:27:56,440 --> 00:28:00,450 můžete vidět mohou být použity pro funkce, které by mohly selhat. 491 00:28:00,450 --> 00:28:03,470 To je obyčejný. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: A můžete doplnit jakési chybové zprávy jako výchozí. 493 00:28:07,010 --> 00:28:11,020 A to je obzvláště vhod, když děláte I / O v Haskell. 494 00:28:11,020 --> 00:28:12,044 To může být triky. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: nebo pro Podobným příkladem, myslím, 496 00:28:13,960 --> 00:28:17,460 funkce, která zahrnuje rozdělení parametru, která může být 0. 497 00:28:17,460 --> 00:28:20,020 A tato funkce mohla vrátí možná cokoliv. 498 00:28:20,020 --> 00:28:22,802 Takže v případě, že to není dělení 0, vrátí prostě cokoliv. 499 00:28:22,802 --> 00:28:25,010 A v případě, že se dělení 0, vrátí se nic 500 00:28:25,010 --> 00:28:26,910 jako způsob signalizující chybu. 501 00:28:26,910 --> 00:28:30,330 Vzhledem k tomu, jeden důsledku Haskell má velmi přísná psaní 502 00:28:30,330 --> 00:28:34,100 je to, že neexistuje žádný real-- Výjimkou jsou trapné, v podstatě, 503 00:28:34,100 --> 00:28:36,160 zpracování chyb je trapné. 504 00:28:36,160 --> 00:28:39,440 A to je jeden velmi obyčejný způsob, jak dělat to. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Takže teď dostaneme na jinou mysl ohýbání věc 506 00:28:42,990 --> 00:28:49,160 o Haskell, který je vzorem odpovídající a funkční definice. 507 00:28:49,160 --> 00:28:53,390 Ukázal jsem tě v poslední nasuňte Prohlášení sekvence kroku 508 00:28:53,390 --> 00:28:58,170 Funkce, které trvalo možná hodnota, pak int, pak seznam ints, 509 00:28:58,170 --> 00:29:03,850 pak vrací sekvenci hudební hodnoty tam komentovaný 510 00:29:03,850 --> 00:29:05,375 s oběma výšky a hlasitosti. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Takže tyto tři argumenty mohou být vzor uzavřeno v následujícím způsobem. 513 00:29:11,820 --> 00:29:16,660 A vždy chceme být jisti, dělat základní věci ani ukončovat případ jako první. 514 00:29:16,660 --> 00:29:19,690 A tyto podtržítka stačí být vykládány 515 00:29:19,690 --> 00:29:22,340 znamenat nějakou hodnotu, která tam je. 516 00:29:22,340 --> 00:29:26,580 Takže pokud se dostaneme volání do kroku sekvence s určitou hodnotou, nějaká jiná hodnota, 517 00:29:26,580 --> 00:29:32,210 a pak se prázdný seznam, co chceme, Pro návrat je jen ticho, odpočinek 0. 518 00:29:32,210 --> 00:29:35,110 >> A místo toho, aby bytí prázdný seznam nebo 0, 519 00:29:35,110 --> 00:29:38,150 to je zbytek 0, protože jsme jednání s typem hudby, 520 00:29:38,150 --> 00:29:43,230 a prázdný seznam hudby Typ je jen zbytek ne trvání. 521 00:29:43,230 --> 00:29:45,680 To není hudba. 522 00:29:45,680 --> 00:29:51,460 A pak uvidíme, jestli dostaneme o krok sekvenci s obj pro objemovou argumentu, 523 00:29:51,460 --> 00:29:57,290 p pro předběžné opatrnosti nástroj Argument, a pak seznam x let. 524 00:29:57,290 --> 00:29:58,360 >> Pak jsme udělat nějaké věci. 525 00:29:58,360 --> 00:30:01,290 Především aplikujeme tento seznam s porozuměním, 526 00:30:01,290 --> 00:30:05,700 a provádíme některé operace na možná hodnota 527 00:30:05,700 --> 00:30:10,050 přeměnit ji na číselnou hodnotu, takže to by mohlo být pak výčtu a používány 528 00:30:10,050 --> 00:30:12,300 vyberte nástroj. 529 00:30:12,300 --> 00:30:16,730 Opět platí, že se jedná o málo bit úmyslně inconcise 530 00:30:16,730 --> 00:30:20,580 jen aby ukázal všechny divné věci můžete udělat v Haskell jako vy 531 00:30:20,580 --> 00:30:23,170 podívejte se na to ve svém volném čase. 532 00:30:23,170 --> 00:30:23,802 >> Dobře. 533 00:30:23,802 --> 00:30:26,010 Takže jsme se konečně dostat do to, co jsme se vydali k tomu, 534 00:30:26,010 --> 00:30:28,820 což je vydělat nějaké počítačové hudby. 535 00:30:28,820 --> 00:30:32,250 Takže budeme snažit aby píseň Frere Jacques. 536 00:30:32,250 --> 00:30:35,220 Takže tam jsou, kolik fráze ve Frere Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Čtyři. 539 00:30:39,680 --> 00:30:40,460 Skvělý. 540 00:30:40,460 --> 00:30:42,490 A co je hezké, je, že všichni jsou opakovány 541 00:30:42,490 --> 00:30:46,990 stejné množství časů, který je dva. 542 00:30:46,990 --> 00:30:50,730 >> Takže máme čtyři fráze každý opakuje dvakrát. 543 00:30:50,730 --> 00:30:53,590 A zejména, jsou v jednom kole. 544 00:30:53,590 --> 00:30:55,340 A existuje mnoho, mnoho způsobů, jak realizovat 545 00:30:55,340 --> 00:30:57,520 kolo, která by mohla být legrace dělat. 546 00:30:57,520 --> 00:31:00,260 Udělal jsem to v velmi jednoduchý způsob, jak tady, 547 00:31:00,260 --> 00:31:05,760 který je jen construct-- linku Funkce vezme seznam hudebních hodnot 548 00:31:05,760 --> 00:31:10,390 a stáčí se do sekvenční kompozice použitím této sekvenční složení 549 00:31:10,390 --> 00:31:13,000 operátor. 550 00:31:13,000 --> 00:31:19,540 >> A pak jsem odložit jednotlivé části tím, že je začít s odpočinku. 551 00:31:19,540 --> 00:31:22,770 Tak jsem se začít s ostatními dvou opatření, a pak zbytek čtyř opatření, 552 00:31:22,770 --> 00:31:26,160 a pak zbytek šesti opatření, a pak kolo 553 00:31:26,160 --> 00:31:32,290 funguje, jak všichni víme, tuto píseň. 554 00:31:32,290 --> 00:31:37,180 Vidíme dvě poznámky nebo modifikace hudebních hodnot 555 00:31:37,180 --> 00:31:43,150 které jsou obsaženy v této sekvenční Uspořádání hudebních prvků. 556 00:31:43,150 --> 00:31:44,810 Máme objem doplňku. 557 00:31:44,810 --> 00:31:48,960 Jedná se o funkci pro anotaci hudba s určitým objemem. 558 00:31:48,960 --> 00:31:51,320 To je dobrý příklad signálního provozu MIDI 559 00:31:51,320 --> 00:31:57,510 od 0 do 127, sedm bitů informace, které mohou být prováděny. 560 00:31:57,510 --> 00:32:00,650 >> A then-- jsme to viděli velmi krátce, ale obecné MIDI 561 00:32:00,650 --> 00:32:02,310 Seznam všech různých nástrojů. 562 00:32:02,310 --> 00:32:04,450 A že to není celá spousta z nich. 563 00:32:04,450 --> 00:32:11,230 Pokud používáte digitální audio pracovní stanice, jako Ableton Live nebo Pro Tools, 564 00:32:11,230 --> 00:32:17,560 je tu neuvěřitelně širší rozsah syntezátorů a VST nástrojů. 565 00:32:17,560 --> 00:32:21,510 Ale jen standardní MIDI má několik nebo několik desítek. 566 00:32:21,510 --> 00:32:22,799 A některé z nich jsou zábavné. 567 00:32:22,799 --> 00:32:25,840 Myslel jsem, že by bylo zábavné, když jsme hráli přístroji Přístroj MIDI 568 00:32:25,840 --> 00:32:30,550 vrtulník, a poté další cesta přes kolo, 569 00:32:30,550 --> 00:32:37,980 jsme udělali pad syntezátor, a pak to banální vedení náměstí vlna synth, 570 00:32:37,980 --> 00:32:44,240 a pak hlasem sliz, které jsou trochu nejasný na mé špatné MIDI 571 00:32:44,240 --> 00:32:46,410 syntezátor, ale OK. 572 00:32:46,410 --> 00:32:50,030 >> A pak jsme se vidět tento LET a v syntaxi z Haskell, 573 00:32:50,030 --> 00:32:54,030 a pak hrajeme všechny tyto části dohromady 574 00:32:54,030 --> 00:32:56,265 s paralelním operátorem složení. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 A mohli bychom pravděpodobně ukázat něco z toho. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Zde je kód. 579 00:33:08,340 --> 00:33:14,960 A můžete vidět v C, že by bylo Hodně krku zúčtování a nastavení 580 00:33:14,960 --> 00:33:19,760 tabulku kód před vámi mohl dělat hudbu takhle. 581 00:33:19,760 --> 00:33:22,080 Nebo jakékoliv jiné programovací jazyk, to by asi 582 00:33:22,080 --> 00:33:27,210 muset spolupracovat s nějakým druhem knihovna nebo API a nastavit vše, 583 00:33:27,210 --> 00:33:28,725 a pak budete muset uklidit. 584 00:33:28,725 --> 00:33:33,810 Ale tady v Haskell je, myslím, jednou se dostanete na kloub, neuvěřitelně 585 00:33:33,810 --> 00:33:35,770 čitelný a velmi expresivní. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Takže tam je implementace z Frere Jacques. 588 00:33:43,240 --> 00:33:43,740 Dobře. 589 00:33:43,740 --> 00:33:47,557 Nyní chceme přidat bicí, a to je trochu Messier. 590 00:33:47,557 --> 00:33:49,015 Takže pojďme se podívat na snímky. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Tak velká myšlenka je, aby se banda seznamů nebo jejich částí. 593 00:34:00,540 --> 00:34:04,140 Z těchto válců-in strojích, tam byly typicky asi možná osmi 594 00:34:04,140 --> 00:34:08,670 10 rytmu bicích nebo částí. 595 00:34:08,670 --> 00:34:10,159 A pak použít spoustu technik. 596 00:34:10,159 --> 00:34:14,889 A my jsme mluvili o these-- použití záhyby, filtry, lambda funkce, 597 00:34:14,889 --> 00:34:19,429 mapované přes seznamy k výrobě hodnoty v nějakém rozsahu 1 až r, r je 16, 598 00:34:19,429 --> 00:34:20,699 nebo 32 kroky v sekvenceru. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> A pak, jestli je hodnota v tomto seznamu jak jsme běh přes sekvenceru, 601 00:34:29,920 --> 00:34:34,190 běh přes to a přes nad, se ukáže v takovém případě, 602 00:34:34,190 --> 00:34:36,060 a tento vzorek dostane spuštěna. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Tady jsou všechny různé podivné způsoby Přišel jsem s generovat poznámky. 605 00:34:47,110 --> 00:34:48,940 Zkuste to na vlastní semifinále částky. 606 00:34:48,940 --> 00:34:50,360 Bude to znít v pohodě. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Čas dovolí, půjdeme přes to. 609 00:34:54,690 --> 00:34:59,200 Ale právě teď, myslím, že bychom měli demo, co máme. 610 00:34:59,200 --> 00:35:01,380 Doufejme, že to jde OK. 611 00:35:01,380 --> 00:35:02,670 >> Tak to je GHCi. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 A budeme načíst soubor Nazval jsem song.lhs, 614 00:35:09,121 --> 00:35:10,620 což je soubor jsem vám ukázal. 615 00:35:10,620 --> 00:35:11,470 OK skvěle. 616 00:35:11,470 --> 00:35:15,010 Jak řekl Connor dříve, zkompilovaný, napište ji zkontrolovat, 617 00:35:15,010 --> 00:35:18,380 takže mohu dýchat mnohem jednodušší. 618 00:35:18,380 --> 00:35:20,010 Nebude to vyhodit do vzduchu na mě. 619 00:35:20,010 --> 00:35:22,720 >> Chtěl jsem vám ukázat něco užitečného. 620 00:35:22,720 --> 00:35:25,900 Můžete vidět, že modul načten nazývá 50. 621 00:35:25,900 --> 00:35:28,240 Můžete procházet tento modul. 622 00:35:28,240 --> 00:35:32,092 A to je tak pěkné o tom, co možná doing-- 623 00:35:32,092 --> 00:35:34,550 děláte v Haskell není volal vývoj software, 624 00:35:34,550 --> 00:35:36,980 ale můžete udělat hodně zábavné věci na vlastní pěst. 625 00:35:36,980 --> 00:35:42,410 A workflow je opravdu pěkné as ve srovnání s mnoha jiných jazycích, 626 00:35:42,410 --> 00:35:45,872 protože můžete vidět v opravdu čitelný způsob, jak co se děje. 627 00:35:45,872 --> 00:35:47,830 Vidíme tedy, že máme všechny tyto věty, které 628 00:35:47,830 --> 00:35:53,760 jsou seznamy hudebních hřišť, a pak jsme stavět tyto se do něčeho většího, 629 00:35:53,760 --> 00:35:55,220 což je hudební skladba. 630 00:35:55,220 --> 00:35:58,450 Je to hudební přehrávač. 631 00:35:58,450 --> 00:36:05,545 A pak to můžeme hrát všechny s funkcí tzv přehrávání hudby. 632 00:36:05,545 --> 00:36:09,040 Můžete vidět, že tady dole. 633 00:36:09,040 --> 00:36:11,310 Což je jen hrát. 634 00:36:11,310 --> 00:36:15,040 >> Měl bych say-- jsem neměl mluvit o Tento znak dolaru, který je všude. 635 00:36:15,040 --> 00:36:17,980 Znak dolaru je další zaváděcí operátor. 636 00:36:17,980 --> 00:36:22,500 Ale to má nejnižší přednost libovolného operátora, který účinně 637 00:36:22,500 --> 00:36:24,960 znamená, že vše, co na levá strana se znak dolaru 638 00:36:24,960 --> 00:36:28,460 a právo na znak dolaru, budeme dostat vyhodnoceny před ním. 639 00:36:28,460 --> 00:36:31,430 Takže je to něco jako další způsob přidávání závorka. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: Je to v podstatě skládání funkcí. 642 00:36:36,220 --> 00:36:40,026 A to zaručuje, že vy, ne-li have-- Máte funkce obou stranách, nebo infix 643 00:36:40,026 --> 00:36:42,900 operátoři na obou stranách, nebudou sdružovat přes něj a dá vám 644 00:36:42,900 --> 00:36:46,030 neočekávané výsledky. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Takže jsme can-- pomocí které můžeme zavolat. 646 00:36:49,790 --> 00:36:51,415 Za prvé, budeme hrát bez bubnů. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 To je vrtulník, MIDI vrtulník. 649 00:37:03,170 --> 00:37:05,495 >> [Přehrávání hudby] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Tam je náměstí vlna. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Hlas sliz. 654 00:37:25,490 --> 00:37:27,630 A opravdu můžete jít volně žijících s tím. 655 00:37:27,630 --> 00:37:30,872 Vzal jsem docela jednoduchý, protože jsem věděl, že bych neměla ukousnout 656 00:37:30,872 --> 00:37:31,830 víc, než jsem mohl žvýkat. 657 00:37:31,830 --> 00:37:36,460 Jen aby to docela jednoduché ukázat hlavní myšlenky. 658 00:37:36,460 --> 00:37:39,952 Ale pak jsem byl rád, máme musím přidat nějaké bicí v této oblasti. 659 00:37:39,952 --> 00:37:41,910 Právě proto, že se jedná o trochu neproniknutelný, 660 00:37:41,910 --> 00:37:45,790 a já jsem neměl používat název bicích částí, 661 00:37:45,790 --> 00:37:49,490 I mapovány them-- proto, že jsou část tohoto výčtového třídy, 662 00:37:49,490 --> 00:37:51,500 Mapována jsem je ints. 663 00:37:51,500 --> 00:37:53,120 Jedním z nich je jako basový buben. 664 00:37:53,120 --> 00:37:54,370 Nula je také. 665 00:37:54,370 --> 00:37:56,000 Sedm je vysoký klobouk. 666 00:37:56,000 --> 00:38:00,920 A v tu, kde se Funkce trochu víc náhodný, 667 00:38:00,920 --> 00:38:02,100 tito jsou jako conga bubny. 668 00:38:02,100 --> 00:38:08,360 >> Takže pokud si myslíte, about-- možná zábavný způsob, jak realizovat bicí automat 669 00:38:08,360 --> 00:38:12,830 je použití velmi spořádaný vzory na vašem basový buben. 670 00:38:12,830 --> 00:38:17,640 Tak například, na filtrování přes Seznam se vším, co dává zpět 671 00:38:17,640 --> 00:38:20,590 1 když je to vzít modul 04. 672 00:38:20,590 --> 00:38:27,190 Tak jsem si 1, 5, 9, 13, 17-- takže to je první porazit každého opatření. 673 00:38:27,190 --> 00:38:32,860 >> A pak je to stejné věc posunula ve dvou krocích. 674 00:38:32,860 --> 00:38:33,850 Tak to je nekonvenční. 675 00:38:33,850 --> 00:38:37,480 Takže by to bylo něco jako vysoké klobouk. 676 00:38:37,480 --> 00:38:39,640 A tady opět, dolů, je to trochu náhodný, 677 00:38:39,640 --> 00:38:41,080 protože děláme Conga bubny. 678 00:38:41,080 --> 00:38:44,180 A já mám nějaké maracas tady taky. 679 00:38:44,180 --> 00:38:50,280 >> Takže jsem mohl zavolat hrát bicí automat, ale to by trvat věčně, 680 00:38:50,280 --> 00:38:53,700 a to by mohlo začít popadl celá paměť v mém systému. 681 00:38:53,700 --> 00:38:57,090 Takže já zavolám tuto funkci přehrávat hudbu, která, jak uvidíme, 682 00:38:57,090 --> 00:39:02,020 použijte zkracování paralelní složení hrát naši malou Frere Jacques píseň 683 00:39:02,020 --> 00:39:04,200 spolu s této podivné automatem. 684 00:39:04,200 --> 00:39:06,190 Takže pojďme se podívat. 685 00:39:06,190 --> 00:39:10,920 A prosím tě, zlepšení na mém Uspořádání všech bubnových částí. 686 00:39:10,920 --> 00:39:13,375 Ne moje specialita, ale já Měl spoustu legrace dělat to. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Přehrávání hudby] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Tak samozřejmě, je to vše trochu ne jako zábavu 691 00:39:56,980 --> 00:40:01,100 když nemůžeme převést na skóre, takže možná to 692 00:40:01,100 --> 00:40:04,650 by mohla být vykládána lidským umělec. 693 00:40:04,650 --> 00:40:06,535 Tak jsem se nebude pracovat zde. 694 00:40:06,535 --> 00:40:07,910 Už jsem generované soubory. 695 00:40:07,910 --> 00:40:10,280 Můžete vidět, že je tu dot LilyPond file-- a to 696 00:40:10,280 --> 00:40:14,500 bude můj segue se k Connor-- a soubor tečka MIDI, 697 00:40:14,500 --> 00:40:18,610 a soubor tečka PDF, což je to, co LilyPond nakonec generovat. 698 00:40:18,610 --> 00:40:23,770 >> Ale to jsou ty skripty, a budu stačí spustit je s jejich možnostmi nápovědy. 699 00:40:23,770 --> 00:40:28,090 Pokud se vám tyto nahoru a běží s Euterpea, můžete vygenerovat soubor MIDI. 700 00:40:28,090 --> 00:40:31,160 A pak z MIDI souboru s tímto programem MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 můžete vygenerovat Lily Rybník soubor, a pak 702 00:40:34,930 --> 00:40:37,974 mohou generovat ve formátu PDF skóre. 703 00:40:37,974 --> 00:40:39,390 A měli bychom se podívat na tohle. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Takže Connor bude pravděpodobně ukáže , jak anotace lépe, 706 00:40:55,140 --> 00:41:02,570 ale to je Frere Jacques as generované mnou v Euterpea. 707 00:41:02,570 --> 00:41:07,300 Je to jen v C. Měl jsem přišel out co hack to je vlastně v. 708 00:41:07,300 --> 00:41:11,090 Ale to je pro potrubí jak to děláte, že s tím. 709 00:41:11,090 --> 00:41:12,950 Pojďme mluvit víc o LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Pojďme se podívat. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Zmínila jste se dozvíte Vy Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Ach jo. 714 00:41:22,460 --> 00:41:23,480 Podívejte se na Naučte You Haskell. 715 00:41:23,480 --> 00:41:24,410 Je to ve zdrojích. 716 00:41:24,410 --> 00:41:26,830 To je, jak jsem začal učení, a je to skvělé. 717 00:41:26,830 --> 00:41:27,580 Není hloupý učení. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Takže je to on-line. 719 00:41:28,829 --> 00:41:34,760 Takže chlápek jménem [neslyšitelných] learnyouahaskell.com, žádné mezery. 720 00:41:34,760 --> 00:41:37,065 Gramatika je nemocný. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: Je to ilustroval, taky. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Takže to, co je LilyPond? 723 00:41:39,440 --> 00:41:42,480 Je to deklarativní programování jazyka k Music sazbu. 724 00:41:42,480 --> 00:41:45,480 Takže declarative-- můžete myslet na věci, jako je HTML, 725 00:41:45,480 --> 00:41:50,900 kde nejste saying-- HTML neříká, jak se webové prohlížeče by měly 726 00:41:50,900 --> 00:41:52,180 vykreslení stránky krok za krokem. 727 00:41:52,180 --> 00:41:54,096 Je to jen, že to říkám je textový popis 728 00:41:54,096 --> 00:41:56,100 o tom, co chcete, aby stránky vypadat. 729 00:41:56,100 --> 00:41:59,310 >> A pak je to také program který překládá tento jazyk, 730 00:41:59,310 --> 00:42:02,300 nebo si přečtěte jeho, a potom vlastně dělá sazbu pro vás, 731 00:42:02,300 --> 00:42:05,570 a to vyplivne tito nádherné vypadající skóre PDF. 732 00:42:05,570 --> 00:42:08,250 Můžete také získat ve formátu PNG nebo cokoliv jiného. 733 00:42:08,250 --> 00:42:10,300 Dobrým způsobem, jak myslet toho je, obdobně 734 00:42:10,300 --> 00:42:16,620 je, že LaTeX je něco jako LillyPond, ale jen pro obyčejné sazbu. 735 00:42:16,620 --> 00:42:20,360 Takže místo toho, of-- to není WYSIWYG to, co vidíte 736 00:42:20,360 --> 00:42:22,960 Je to, co dostanete, stejně jako, řekněme Finale je, nebo Sibelius, 737 00:42:22,960 --> 00:42:27,430 nebo Microsoft Word, kde můžete zadat v reálném čase a návrhy věci v reálném čase 738 00:42:27,430 --> 00:42:31,340 a vidět změny okamžitě. 739 00:42:31,340 --> 00:42:32,140 >> Je založena textu. 740 00:42:32,140 --> 00:42:35,290 Musíte kompilovat skóre pomocí zvláštní program 741 00:42:35,290 --> 00:42:37,090 a dostat se ven PDF později. 742 00:42:37,090 --> 00:42:43,320 To je o něco méně vhodný k použití, jestliže jste 743 00:42:43,320 --> 00:42:46,520 snaží psát přímo do skóre a vy jste 744 00:42:46,520 --> 00:42:48,620 se snaží skládat na počítači. 745 00:42:48,620 --> 00:42:50,830 Ale existuje spousta výhod pro něj. 746 00:42:50,830 --> 00:42:56,110 Jednou, to vypadá mnohem hezčí, protože LillyPond může ve skutečnosti 747 00:42:56,110 --> 00:42:58,210 mít čas na to rozvržení rozhodnutí správně, 748 00:42:58,210 --> 00:43:02,380 Na rozdíl od Sibelius nebo Finale, které mají aby se tak ohrožena algoritmy 749 00:43:02,380 --> 00:43:05,020 že se mohou zobrazovat věci v reálném čase. 750 00:43:05,020 --> 00:43:07,660 >> Tak proč je LilyPond-- počítačová grafika je těžké. 751 00:43:07,660 --> 00:43:10,535 Pokud děláte cokoliv s hudbou a chcete vypsat skóre, 752 00:43:10,535 --> 00:43:13,900 nechcete psát out všechno sami: 753 00:43:13,900 --> 00:43:19,040 počínaje jak kreslit štáby a jak kreslit poznámkové bloky. 754 00:43:19,040 --> 00:43:21,020 Je velmi obtížné. Bylo to předtím. 755 00:43:21,020 --> 00:43:22,170 Jsi v pořádku. 756 00:43:22,170 --> 00:43:26,200 >> Chcete-li používat Finale nebo Sibelius, formáty souborů pro ty věci, 757 00:43:26,200 --> 00:43:30,180 jsou velmi komplikované, a nemůžete Opravdu používat programově. 758 00:43:30,180 --> 00:43:35,020 Můžete otevřít Sibelius s Finale a přejděte na Soubor, Export jako PDF sami, 759 00:43:35,020 --> 00:43:37,600 ale můžete opravdu volat, že ze skriptu. 760 00:43:37,600 --> 00:43:40,440 LillyPond, můžete volat z těchto skriptů. 761 00:43:40,440 --> 00:43:44,397 Dalo by se snadno opakovat LillyPond s LaTeXu. 762 00:43:44,397 --> 00:43:47,230 Nebudu mít tolik času jít do těchto technologií právě teď, 763 00:43:47,230 --> 00:43:48,321 ale, že existují. 764 00:43:48,321 --> 00:43:50,070 Pokud se chcete podívat do LillyPond knihy, 765 00:43:50,070 --> 00:43:53,760 je to program, který je dodáván s vaše distribuce LillyPond, 766 00:43:53,760 --> 00:43:57,030 a je to pro iteraci LillyPond fragmenty do LaTeXu 767 00:43:57,030 --> 00:44:00,340 Pokud chcete udělat něco jako velký musicology dokumentu 768 00:44:00,340 --> 00:44:02,289 s příklady, například. 769 00:44:02,289 --> 00:44:04,580 A je to dobrý skill pro Život pokud děláte něco 770 00:44:04,580 --> 00:44:05,770 s hudbou, ne jen CS50. 771 00:44:05,770 --> 00:44:09,320 Použil jsem LillyPond pro všechny mých složení projektů 772 00:44:09,320 --> 00:44:11,880 protože jsem byl v podstatě senior na střední škole. 773 00:44:11,880 --> 00:44:13,455 >> Tak tady je pár jednoduchých příkladů. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 To je v podstatě reprezentativní úrovně obtížnosti 776 00:44:21,060 --> 00:44:23,481 že většina lidí by tváří, že se snažili 777 00:44:23,481 --> 00:44:24,980 používat LilyPond pro jednoduché projekty. 778 00:44:24,980 --> 00:44:29,519 První z nich je začátek na chorale předehru Bach. 779 00:44:29,519 --> 00:44:31,810 To dno jeden je výňatek od jednoho z mých vlastních prací, 780 00:44:31,810 --> 00:44:34,650 a je to jen tam ukázat vám věci, jako je [neslyšitelných] 781 00:44:34,650 --> 00:44:38,550 uvedení více řádků ve stejném personál, jak lyrická undersetting funguje. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Lyrické podložky jsou věc, která je velmi snadné použití lilypond pro sborové hudby. 784 00:44:46,110 --> 00:44:48,814 >> A tak pak je tu víc Složitější příklady zde. 785 00:44:48,814 --> 00:44:50,980 Všechny tyto jsou prováděny v LilyPond a jsou proveditelné. 786 00:44:50,980 --> 00:44:55,280 První úryvek je z [Neslyšitelný] podle [neslyšitelných]. 787 00:44:55,280 --> 00:44:58,860 A toto [neslyšitelných] z kus pro sólový bas 788 00:44:58,860 --> 00:45:03,550 flétna podle [neslyšitelných], který je longtime-- který 789 00:45:03,550 --> 00:45:07,101 Byl dlouholetým členem hudební oddělení tady, myslím. 790 00:45:07,101 --> 00:45:08,600 Nejsem si jistý, kde on odjel do. 791 00:45:08,600 --> 00:45:12,410 Ale on byl poradcem Harvardu Skladatelé Association po dlouhou dobu. 792 00:45:12,410 --> 00:45:13,530 Báječný člověk. 793 00:45:13,530 --> 00:45:16,920 A píše hudbu, která má velmi komplikovaný zápis že LillyPond 794 00:45:16,920 --> 00:45:20,500 lze nicméně zvládnout velmi pěkně. 795 00:45:20,500 --> 00:45:26,030 >> Takže jen, aby vám smysl toho, co schopnosti ta věc je tak are-- 796 00:45:26,030 --> 00:45:28,960 internals LillyPond jsou velmi komplikované. 797 00:45:28,960 --> 00:45:31,060 A můžete použít pro dlouhá doba, včetně 798 00:45:31,060 --> 00:45:32,520 pro některé docela složité věci, aniž by skutečně 799 00:45:32,520 --> 00:45:34,060 museli vědět hodně o nich. 800 00:45:34,060 --> 00:45:38,720 Ale základní myšlenkou je, že na Nejnižší úroveň, atomy LillyPonds 801 00:45:38,720 --> 00:45:39,970 jsou poznámky. 802 00:45:39,970 --> 00:45:42,761 Poznámky obsahují kontext volal hlasy. 803 00:45:42,761 --> 00:45:44,510 Takže hlasové kontextu v zásadě odpovídá 804 00:45:44,510 --> 00:45:47,410 na jeden řádek polyfonie. 805 00:45:47,410 --> 00:45:49,410 A pak kontext může být obsahoval hierarchicky 806 00:45:49,410 --> 00:45:53,590 ve vyšších ty úrovně, které představují štáby na skóre 807 00:45:53,590 --> 00:45:56,750 nebo větší seskupení, jako je piano štáby nebo sbor štáby, 808 00:45:56,750 --> 00:45:58,990 a pak nakonec Celý skóre kontexty. 809 00:45:58,990 --> 00:46:02,260 A můžete skutečně zahrnovat více skóre v knize. 810 00:46:02,260 --> 00:46:05,770 >> A každý kontext má počet připojených rytců. 811 00:46:05,770 --> 00:46:08,340 Podíváte-li se prostřednictvím Obsah kontextu 812 00:46:08,340 --> 00:46:14,410 a vytisknout určitý symbol nebo Určitá třída symbolů podle potřeby. 813 00:46:14,410 --> 00:46:17,840 Tak, aby každý hlasový souvislosti tam je [neslyšitelných] poznámky 814 00:46:17,840 --> 00:46:24,270 Rytec, že ​​je v podstatě funkce nebo objekt, který vypíše všechny poznámky 815 00:46:24,270 --> 00:46:26,290 hlavy na pravé části stránky. 816 00:46:26,290 --> 00:46:29,510 Pak je tu trhlina rytec, který píše se rozštěpy na zaměstnance. 817 00:46:29,510 --> 00:46:31,517 Pak je tu metronom Značka rytec, že 818 00:46:31,517 --> 00:46:33,100 vypíše metronom stopy v skóre. 819 00:46:33,100 --> 00:46:36,410 A všechny tyto vešly pěkně dobře do hierarchie. 820 00:46:36,410 --> 00:46:39,500 A je to velmi, velmi, velmi přizpůsobitelné, který budete potřebovat 821 00:46:39,500 --> 00:46:42,880 pokud chcete získat takové věci. 822 00:46:42,880 --> 00:46:45,730 >> Takže všechny kontexty mají mnoho různých atributů 823 00:46:45,730 --> 00:46:52,410 že můžete změnit všechno z odstupu k různým písmo 824 00:46:52,410 --> 00:46:54,942 výběru, aby velikostí věcí. 825 00:46:54,942 --> 00:46:56,900 Pokud si chcete udělat ještě složitější věci, 826 00:46:56,900 --> 00:46:59,210 tam je vestavěný skriptovací jazyk. 827 00:46:59,210 --> 00:47:01,820 Oni používají schéma, které je dialekt LISP. 828 00:47:01,820 --> 00:47:04,960 Ty pravděpodobně ne ti něco. 829 00:47:04,960 --> 00:47:06,900 Ale v podstatě, schéma další funkční 830 00:47:06,900 --> 00:47:09,500 programovací jazyk, více nebo méně. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: vázanka-in. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Jo. 833 00:47:12,690 --> 00:47:15,390 Je to dobrý tie-in, řekl bych. 834 00:47:15,390 --> 00:47:20,150 A to je používáno jako vyučovacím jazykem, ve skutečnosti, dolů Mass Ave. Na MIT. 835 00:47:20,150 --> 00:47:26,590 A to je velmi užitečné pro LillyPond z různých technických důvodů. 836 00:47:26,590 --> 00:47:30,317 >> A tak, pokud chcete, aby jednoduchý vylepší závislé na conditionals, 837 00:47:30,317 --> 00:47:32,900 pro example-- tam je jisté stav skóre, které je splněna, 838 00:47:32,900 --> 00:47:36,495 provádět změny uspořádání nebo whatnot-- poté 839 00:47:36,495 --> 00:47:37,620 Tato zařízení jsou tam. 840 00:47:37,620 --> 00:47:38,667 Jsou to složité. 841 00:47:38,667 --> 00:47:40,250 Tak tady je docela jednoduchý ukázkový kód. 842 00:47:40,250 --> 00:47:43,810 Je to pět řádků. 843 00:47:43,810 --> 00:47:46,120 V podstatě, já definovat dvě hole. 844 00:47:46,120 --> 00:47:46,904 Je to v 3/4. 845 00:47:46,904 --> 00:47:48,695 První zaměstnanci má připojený tempo značka, 846 00:47:48,695 --> 00:47:51,110 ale to je ve skutečnosti děje Pro přechod na celé partitury, 847 00:47:51,110 --> 00:47:54,960 protože tempa značek jsou na úrovni skóre. 848 00:47:54,960 --> 00:47:59,044 Metronom značka rytec je připojen ke skóre kontext. 849 00:47:59,044 --> 00:48:01,460 K dispozici jsou různé klíče, protože [neslyšitelných] rytce 850 00:48:01,460 --> 00:48:02,710 je připojen štáby. 851 00:48:02,710 --> 00:48:04,441 Můžete si skutečně udělat, je. 852 00:48:04,441 --> 00:48:06,190 Vzorek jsem napsal, je vlastně v C dur, 853 00:48:06,190 --> 00:48:07,990 ale je to jen proto, aby demonstrovat můžete mít 854 00:48:07,990 --> 00:48:09,570 různé klíče v různých štábů. 855 00:48:09,570 --> 00:48:15,710 A Základní syntaxe je píšete na vědomí, jména s E, F, G, cokoliv. 856 00:48:15,710 --> 00:48:18,910 Pokud si chcete udělat posuvek, vy přípona je nebo ES. 857 00:48:18,910 --> 00:48:22,640 To je z nizozemského muzikologického konvence. 858 00:48:22,640 --> 00:48:28,290 >> A k tomu oktávy skoky, budete muset použít Tyto dílky, čárky nebo apostrof. 859 00:48:28,290 --> 00:48:30,580 Relativní prostě znamená, co máte na vědomí, 860 00:48:30,580 --> 00:48:34,080 bude automaticky plaec v oktávy nejblíže k předchozí. 861 00:48:34,080 --> 00:48:37,624 A pokud si chcete skočit více než fifth-- říkají pátém či dokonce more-- 862 00:48:37,624 --> 00:48:39,165 pak budete muset použít [neslyšitelných]. 863 00:48:39,165 --> 00:48:42,580 Ale jinak, nemusíte se specifikovat oktávu každou notu. 864 00:48:42,580 --> 00:48:46,130 >> A relativní C, prime a C, stačí zadat střed C 865 00:48:46,130 --> 00:48:48,630 a základní C, zejména první tóny. 866 00:48:48,630 --> 00:48:55,020 Pak budete mít tyto štáby, které organizují tyto dva hlasy nebo vzorky hudby, 867 00:48:55,020 --> 00:48:56,730 a máte skóre. 868 00:48:56,730 --> 00:48:58,440 A to vypadá takto. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Chcete-li mít čas na kopírovat, že vzorek LillyPond 871 00:49:05,380 --> 00:49:07,530 kód na předchozí klouzat dolů tady, a vy 872 00:49:07,530 --> 00:49:09,030 Můžete napsat to pro LillyPond sami. 873 00:49:09,030 --> 00:49:11,280 Vím, že jsme něco která vypadá hodně jako je tento. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Takže je tu další technologie volal Music XML zachovány 876 00:49:19,610 --> 00:49:22,030 zcela jinými lidmi. 877 00:49:22,030 --> 00:49:28,150 XML je textová data structure-- I neměl říkat údaje structure-- říkají 878 00:49:28,150 --> 00:49:29,580 mapa metafora druh. 879 00:49:29,580 --> 00:49:33,800 A to je navržen tak, aby držení hierarchických dat velmi dobře. 880 00:49:33,800 --> 00:49:37,050 HTML, například, je typ XML. 881 00:49:37,050 --> 00:49:41,090 A můžete říct, XML, protože byly všechny ostré závorky a úhel 882 00:49:41,090 --> 00:49:44,700 držák lomítka které ukazují, datových polí. 883 00:49:44,700 --> 00:49:47,390 >> Nemám kód příklad z Music XML. 884 00:49:47,390 --> 00:49:50,450 Můžete jej najít sami. 885 00:49:50,450 --> 00:49:53,735 V podstatě, důvod, proč byste mohli chtít používat XML jako mezistupně 886 00:49:53,735 --> 00:49:55,980 je v první řadě je to výměnný formát 887 00:49:55,980 --> 00:50:02,301 pro v podstatě every-- bych neřekl každý, ale hodně odlišné skóre 888 00:50:02,301 --> 00:50:02,800 spisovatelé. 889 00:50:02,800 --> 00:50:04,966 Takže pokud píšete v hudbě XML, a to nejen může LillyPond 890 00:50:04,966 --> 00:50:08,080 přečtěte si to s pomocí tohoto Přídavné program s názvem Music XML do LY, 891 00:50:08,080 --> 00:50:11,360 ale také Finale můžete přečíst to, Sibelius jej přečíst. 892 00:50:11,360 --> 00:50:14,770 V závislosti na tom, jak ve vnitřní objekt hierarchie pracuje pro reprezentovat hudbu, 893 00:50:14,770 --> 00:50:18,820 to by mohlo být jednodušší vypsat Hudební XML než k LillyPond 894 00:50:18,820 --> 00:50:22,410 a jen spoléhat na hudbu XML do LY dělat konverze. 895 00:50:22,410 --> 00:50:24,282 >> Nemyslím si, že [neslyšitelný] má hudební XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: to není. 897 00:50:25,490 --> 00:50:26,340 Někdo pracuje na tom, ačkoli. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea není vybaven Výstupní funkce ještě Music XML. 900 00:50:31,040 --> 00:50:35,340 Chcete-li konečné nápad na projekt, Možná, že dostat do kontaktu s muži 901 00:50:35,340 --> 00:50:38,620 že Stephen ví, a oni mohli použít vaši pomoc. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Rád bych to. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Také, v podstatě, každý programovací jazyky 904 00:50:43,450 --> 00:50:46,610 že to stojí za jeho soli již má knihovnu XML, 905 00:50:46,610 --> 00:50:51,030 takže můžete interně převést všechny vaší hudby do nějaký předmět 906 00:50:51,030 --> 00:50:54,120 že knihovna XML může psát na to, že by vyžadoval méně 907 00:50:54,120 --> 00:50:57,470 změny na váš vnitřní struktury cokoliv, co můžete hudební objekty 908 00:50:57,470 --> 00:51:00,310 chcete napsat, než psaní přímo v LillyPond by. 909 00:51:00,310 --> 00:51:04,380 Pak už stačí jen vytisknout s XML s XML knihovny v češtině, 910 00:51:04,380 --> 00:51:07,260 , která zaručí, že je to syntakticky správné a všechno, 911 00:51:07,260 --> 00:51:08,720 a pak ji převést na LillyPond. 912 00:51:08,720 --> 00:51:11,060 Takže technologie budete chtít podívat do pokud děláte něco, 913 00:51:11,060 --> 00:51:11,650 takhle. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Neslyšitelný], další auxilarry technologie. 916 00:51:16,370 --> 00:51:21,700 To je v podstatě Tech Works nebo Tech Studio pro LillyPond. 917 00:51:21,700 --> 00:51:25,380 Tak to nabízí pomoc s syntax, se šablonami 918 00:51:25,380 --> 00:51:28,770 pro různé běžné kombinace nástrojů. 919 00:51:28,770 --> 00:51:32,780 To umožňuje prohlížení tak rozdělená obrazovka můžete mít svůj kód v jednom okně 920 00:51:32,780 --> 00:51:37,350 a PDF v jiném okně a klikněte na místech v PDF 921 00:51:37,350 --> 00:51:40,650 přejít na příslušné skvrny ve zdrojovém kódu. 922 00:51:40,650 --> 00:51:45,330 To je mnohem užitečnější, pokud jste opravdu psaní LillyPond soubory sami 923 00:51:45,330 --> 00:51:47,400 než když jste generování je programově. 924 00:51:47,400 --> 00:51:51,230 Ale na druhou stranu, je to něco užitečné mít. 925 00:51:51,230 --> 00:51:51,970 >> Skvělý. 926 00:51:51,970 --> 00:51:55,860 Další resources-- budu projít to velmi rychle. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond má Vynikající dokumentace na svých internetových stránkách. 928 00:52:01,270 --> 00:52:02,270 Mají tutorial. 929 00:52:02,270 --> 00:52:03,478 Mají odkaz syntaxe. 930 00:52:03,478 --> 00:52:07,010 Mají stovky fragmentů pro různé drobnosti 931 00:52:07,010 --> 00:52:09,930 yo může být nutné udělat, aby prokázat různé schopnosti. 932 00:52:09,930 --> 00:52:12,250 Chcete-li použít skriptovací jazyk 933 00:52:12,250 --> 00:52:14,740 nebo provést rozsáhlejší přizpůsobení, pak je tu 934 00:52:14,740 --> 00:52:16,730 vnitřní zařízení odkazovat na této adrese URL. 935 00:52:16,730 --> 00:52:21,950 Chcete-li použít Music XML, je tu že URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> A pak, pokud budete muset naučit systému proto, že jste vlastně chcete použít 937 00:52:27,960 --> 00:52:30,960 skriptovací zařízení v LillyPond, pak je tu [neslyšitelných] nazvaný 938 00:52:30,960 --> 00:52:32,918 Strukturované Tlumočení počítačových programů, 939 00:52:32,918 --> 00:52:35,820 která je nejen druhým Největší CS učebnice vůbec written-- 940 00:52:35,820 --> 00:52:39,770 najít mi potom, pokud chcete vědět, co si myslím Největší jednu je-- 941 00:52:39,770 --> 00:52:43,580 ale je to také velmi dobrý Úvod do jazyka správné. 942 00:52:43,580 --> 00:52:46,630 Nebudete potřebovat více než několik prvních profily. 943 00:52:46,630 --> 00:52:47,827 >> A to je vše. 944 00:52:47,827 --> 00:52:48,410 Nějaké otázky? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> STUDENT: Kde mohu stáhnout Váš generované Frere Jacques 947 00:52:57,972 --> 00:53:01,050 tak jsem si dal to na můj iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: No, můžete psát out na některé wav soubor v Euterpea. 949 00:53:07,574 --> 00:53:08,490 A máte kód. 950 00:53:08,490 --> 00:53:10,000 Je to na GitHub. 951 00:53:10,000 --> 00:53:15,590 Vytvořte si vlastní variace Frere Jacques by CS50 mysl úlu. 952 00:53:15,590 --> 00:53:17,095 To by bylo skvělé. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: někdo? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Potřebujeme lepší basový buben, taky. 955 00:53:20,261 --> 00:53:21,935 Je to opravdu špatné. 956 00:53:21,935 --> 00:53:26,565 >> STUDENT: Euterpea má nejen složení straně, ale signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Ano. 958 00:53:27,440 --> 00:53:30,100 Ve skutečnosti, se práce I dělal, když jsem v Euterpea 959 00:53:30,100 --> 00:53:33,450 vzal tohle-- je tu Absolvent kurzu na Yale, že 960 00:53:33,450 --> 00:53:35,900 používá to-- byl na syntézu zvuku. 961 00:53:35,900 --> 00:53:39,810 Takže tam je opravdu příjemný způsob, jak pomocí šipek 962 00:53:39,810 --> 00:53:46,150 a některé z notace jsme viděli z skládání dohromady signální funkce. 963 00:53:46,150 --> 00:53:50,610 Zejména basy pro většinu z nich je jen jednoduchý sinusoida. 964 00:53:50,610 --> 00:53:54,240 Ale pokud začnete skládat ty v podivné programové způsoby, 965 00:53:54,240 --> 00:54:00,010 můžete získat šílený zvuk efekty, jako podivných kaskádami. 966 00:54:00,010 --> 00:54:04,640 Můžete vytvořit velmi odvážný zvuky se spoustou modulace. 967 00:54:04,640 --> 00:54:07,730 >> Udělal jsem projekt na granulované syntéza, která je 968 00:54:07,730 --> 00:54:12,290 někde mezi FM a odběru vzorků. 969 00:54:12,290 --> 00:54:15,230 Budete mít velmi malý, malé vzorky, a pak 970 00:54:15,230 --> 00:54:20,440 kombinovat je s nějakým druhem modulátor a vybudovat bohatší zvuk. 971 00:54:20,440 --> 00:54:24,900 Také jsme fyzikální modelování, tak se snaží přemýšlet o fyzice 972 00:54:24,900 --> 00:54:29,410 a psychoakustika něco jako trubka, a přemýšlet o tom, jak 973 00:54:29,410 --> 00:54:32,320 zvuk je odráží od zvon polnice 974 00:54:32,320 --> 00:54:35,200 a akustika místnost a modelování 975 00:54:35,200 --> 00:54:40,195 že se základními oscilátorů. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Díky moc. 978 00:54:48,940 --> 00:54:50,140 Díky, že jsi přišel. 979 00:54:50,140 --> 00:54:52,400 A já jsem vždy ochoten trvat otázky podle 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: Jo. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Bezva. 984 00:55:00,360 --> 00:55:01,667