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 Som Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Som CS50 CA na Harvarde. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Ja som Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Som TF pre CS50 na Yale. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: A budeme hovoriť o niektorých technológií, ktoré by ste mohli 8 00:00:15,790 --> 00:00:18,880 chcete použiť, ak máte záujem v tom záverečný projekt alebo naozaj 9 00:00:18,880 --> 00:00:20,920 čokoľvek s hudbou. 10 00:00:20,920 --> 00:00:24,400 Budeme so zameraním na Najskôr 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 veľmi odlišný od C alebo PHP alebo z iných naliehavých jazyky 13 00:00:29,620 --> 00:00:33,450 že ste použili už, a to najmä na knižnice napísané v jazyku Haskell 14 00:00:33,450 --> 00:00:40,240 volal Euterpea, ktoré môžu pomôcť ľuďom s písaním hudby funkčne, 15 00:00:40,240 --> 00:00:40,780 v podstate. 16 00:00:40,780 --> 00:00:43,400 A Stephen budú chodiť vás cez skvelý príklad toho, že. 17 00:00:43,400 --> 00:00:46,423 >> Po tomto, budem vám predstaviť niečo, čo nazýva LillyPond, ktorý 18 00:00:46,423 --> 00:00:48,370 je technológia pre sadzbu hudbu. 19 00:00:48,370 --> 00:00:50,830 Je to niečo ako LaTeXu pre hudbu, ak niekto z vás 20 00:00:50,830 --> 00:00:57,530 Použili LaTeX pre matematické triedy, alebo ostatné P set triedy alebo to, čo ťa mať. 21 00:00:57,530 --> 00:01:00,440 A tak som ťa dať, znova, niekoľko jednoduchých príkladov, ktoré 22 00:01:00,440 --> 00:01:03,640 a bod, ktorý v všeobecné Smer niektorých lepších zdrojov. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: V Okrem toho, že sme si mysleli 24 00:01:04,319 --> 00:01:06,720 by byť v pohode nastaviť trochu rád 25 00:01:06,720 --> 00:01:10,780 smerom k potrubia medzi Euterpea generované MIDI súbory 26 00:01:10,780 --> 00:01:13,910 v LillyPond, takže zabezpečujeme nejaký návod na skriptoch 27 00:01:13,910 --> 00:01:16,310 k tomu, že sú opatrený LillyPond 28 00:01:16,310 --> 00:01:19,160 Len aby to open source a získať potrubie deje. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Opäť, mali by sme zdôrazniť, 30 00:01:20,910 --> 00:01:23,100 tieto dve technológie, vy Nemusíte ich používať dohromady. 31 00:01:23,100 --> 00:01:25,370 Oni nie sú určené pre prácu spolu, hoci oni predsa veľmi pekne. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Správne. 33 00:01:26,362 --> 00:01:30,116 A úplne zadarmo. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: So poďakovanie, len čítať, že. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: Riadne poznamenal. 36 00:01:33,406 --> 00:01:36,360 Vďaka týmto ľudí. 37 00:01:36,360 --> 00:01:39,180 To budem prodleva na len na chvíľu. 38 00:01:39,180 --> 00:01:41,560 Proces inštalácie je trochu zložitejšie. 39 00:01:41,560 --> 00:01:45,420 Máme ma prečítať na GitHub že môžete sa pozrieť na. 40 00:01:45,420 --> 00:01:47,840 Len mi e-mail, ak máte nejaké otázky. 41 00:01:47,840 --> 00:01:52,829 Ale my spustiť to za predpokladu, že to funguje pre všetkých. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: A ak si nemôžete dostať sa LillyPond do práce, žiadny veľký problém. 43 00:01:55,620 --> 00:02:00,139 Neexistuje žiadna živá kompilácie, že sa bude podieľať, aspoň z mojej strany. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell a LillyPond by obaja majú inštalátory. 45 00:02:02,930 --> 00:02:08,497 Euterpea sa stiahne ako balíček, tak ďalej a tak ďalej. 46 00:02:08,497 --> 00:02:10,080 Takže hovoríme o počítačovej hudby. 47 00:02:10,080 --> 00:02:12,990 A to je len Veľmi pohľad 50.000 stôp. 48 00:02:12,990 --> 00:02:15,700 K dispozícii je niekoľko rôznych aspektov toho. 49 00:02:15,700 --> 00:02:18,120 A to je hrubý a je ísť zatemniť nejaký detail. 50 00:02:18,120 --> 00:02:22,090 Ale mohli by sme niečo vymyslieť ako algoritmické zloženie, 51 00:02:22,090 --> 00:02:24,920 pomocou algoritmov, pomocou kódu, pre generovanie 52 00:02:24,920 --> 00:02:30,280 nejaký typ of-- možná self-podobný sled tónov, alebo možno poznámky 53 00:02:30,280 --> 00:02:33,330 pod nejakým obmedzeniam. 54 00:02:33,330 --> 00:02:35,350 A potom tie, ktoré by mohli byť vykonaný alebo interpretované 55 00:02:35,350 --> 00:02:38,390 s analógových prístrojov alebo niečo také. 56 00:02:38,390 --> 00:02:42,010 Avšak zmes vykonáva algoritmickým. 57 00:02:42,010 --> 00:02:45,120 >> Ale samozrejme, možno oblasť Počítač hudbu alebo digitálnej hudby 58 00:02:45,120 --> 00:02:48,870 sme bližšie zoznámiť s je digitálny zvukovej syntézy alebo digitálny vzorkovania 59 00:02:48,870 --> 00:02:51,160 a digitálny záznam. 60 00:02:51,160 --> 00:02:55,650 Mnoho digitálnych prístrojov sú vykonáva prostredníctvom digitálneho vzorkovania. 61 00:02:55,650 --> 00:03:00,110 V skutočnosti, budeme pomocou jedného z tých v forma zvukového knižnice písma neskôr. 62 00:03:00,110 --> 00:03:02,850 >> Ale je tu tiež niečo volal digitálne syntéza, že vyšiel 63 00:03:02,850 --> 00:03:08,650 z konca 70. rokov, a do 80. rokov sa Yamaha a John Chowning na Stanforde 64 00:03:08,650 --> 00:03:11,990 robí syntézu FM alebo Frequency Modulation syntéza, 65 00:03:11,990 --> 00:03:15,100 kde ste mali dopravcu signálu a modulačné signál 66 00:03:15,100 --> 00:03:18,270 a to ako v zvukového spektra. 67 00:03:18,270 --> 00:03:22,570 Ale to, čo sa zameriavame na dnes je niečo, čo nazýva MIDI, 68 00:03:22,570 --> 00:03:25,040 a samozrejme, algoritmické zloženie. 69 00:03:25,040 --> 00:03:30,940 >> Nebudeme robiť nástroje, ale budeme namiesto toho chystá urobiť nejakú hudbu, 70 00:03:30,940 --> 00:03:33,940 a potom to dostane interpretovaný niektorými nástrojmi, ktoré 71 00:03:33,940 --> 00:03:38,300 sú konformné k Štandardné General MIDI. 72 00:03:38,300 --> 00:03:40,830 Takže to, čo je MIDI? 73 00:03:40,830 --> 00:03:45,550 Nebudem sa dostať príliš hlboko do nej, ale MIDI je prenos dát protokol. 74 00:03:45,550 --> 00:03:49,250 Je to akýsi sprievodca naprieč rôzne firmy a odvetvia 75 00:03:49,250 --> 00:03:52,250 pre organizovanie zvukov alebo opravy. 76 00:03:52,250 --> 00:03:54,170 Tak uvidíme, že tam je štandardný MIDI 77 00:03:54,170 --> 00:03:57,500 pre všetky rôzne bicie zvuky a odporúčania MIDI 78 00:03:57,500 --> 00:04:01,360 pre všetky rôzne typy synth, alebo rôzne typy všetkých nástroje 79 00:04:01,360 --> 00:04:03,650 skupiny v orchestri, hovoria. 80 00:04:03,650 --> 00:04:08,916 >> Vy ste pravdepodobne oboznámení s 0 až 127 MIDI sprá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 či už je to dát alebo stav paket, a potom je tu 83 00:04:16,130 --> 00:04:18,589 sedem bitov signálu. 84 00:04:18,589 --> 00:04:21,430 A tie môžu kontrolovať všetko z objemu 85 00:04:21,430 --> 00:04:25,330 na akciu alebo tlaku na konkrétny kľúč 86 00:04:25,330 --> 00:04:29,400 ak si vediete s MIDI regulátora, ako aj, samozrejme, 87 00:04:29,400 --> 00:04:31,250 poznámky. 88 00:04:31,250 --> 00:04:33,450 A samozrejme, MIDI má Bol veľmi užitočné, 89 00:04:33,450 --> 00:04:37,550 pretože je to spôsob, ako drôt spoločne alebo sedmokráska reťaz 90 00:04:37,550 --> 00:04:41,570 banda hardvérových zariadení MIDI. 91 00:04:41,570 --> 00:04:44,050 Mám sedem alebo osem späť v mojom dome. 92 00:04:44,050 --> 00:04:46,610 To dostane naozaj zložité, ale je to naozaj silný. 93 00:04:46,610 --> 00:04:47,460 A je to naozaj starý. 94 00:04:47,460 --> 00:04:51,117 To je od začiatku 80. rokov, a je to naozaj pekné a malý. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Jo. 96 00:04:51,950 --> 00:04:54,230 Všetky klasické Nintendo video hry by pravdepodobne 97 00:04:54,230 --> 00:04:56,088 majú MIDI súbory pre hudbu, napríklad. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Tu je Príkladom General MIDI, 100 00:05:01,740 --> 00:05:06,520 ukazujúci midi ako druh všeobecného protokolu. 101 00:05:06,520 --> 00:05:13,280 A myslím, že môžeme myslieť na Rozdiel medzi špecifikáciu 102 00:05:13,280 --> 00:05:17,830 že by mal byť niečo ako Tieto zvuky nástrojov a skutočnou 103 00:05:17,830 --> 00:05:21,740 realizácia týchto nástrojov zvukov v zdravom písmom alebo na konkrétne MIDI 104 00:05:21,740 --> 00:05:25,740 syntetizátor ako rozdiel Medzi možno aj typeface-- ktorý hovorí, 105 00:05:25,740 --> 00:05:30,350 Všeobecne, toto je návrh tento konkrétny spôsob, ako reprezentovať 106 00:05:30,350 --> 00:05:35,907 characters-- a konkrétne písmo že má špecifickú veľkosť a zafarbenie, 107 00:05:35,907 --> 00:05:37,240 a tam je realizácia the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Možno lepšie porovnanie by 109 00:05:39,156 --> 00:05:43,430 byť štandard Unicode says-- dáva číslo na každý znak, a naozaj 110 00:05:43,430 --> 00:05:46,830 každý jazyk na svete, alebo obrovská sada skriptov jazyka 111 00:05:46,830 --> 00:05:51,310 vo svete, a potom to sú poskytnutý do niečoho grafický 112 00:05:51,310 --> 00:05:53,710 rôznymi balíčky písiem. 113 00:05:53,710 --> 00:05:56,630 A samozrejme, môžete si myslíte, MIDI ako Unicode zvuku. 114 00:05:56,630 --> 00:06:03,250 A je to len zoznam of-- veľký prúd akcií a nástrojov a ktovie čo ešte, 115 00:06:03,250 --> 00:06:06,090 a musíte mať samostatný Program, ako písmo, 116 00:06:06,090 --> 00:06:08,537 k tomu, že do niečo, čo je počuť. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Tak prečo Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell je funkcionálne programovanie jazyka, veľmi pokročilý, 120 00:06:19,110 --> 00:06:22,770 veľmi odlišný od C, veľmi odlišný od PHP. 121 00:06:22,770 --> 00:06:28,120 A budeme vidieť, že je tu jednoduchosť skladanie funkcií v Haskell 122 00:06:28,120 --> 00:06:37,640 že nám umožní vánok prostredníctvom skladanie alebo písanie hore, prepis, 123 00:06:37,640 --> 00:06:42,160 niečo ako Frere Jacques, tento jednoduchý pieseň, ktorá 124 00:06:42,160 --> 00:06:46,815 má mnoho dielov v tom, že sú self-podobný alebo opakovanie. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Takže to bude niektorá motivácia, prečo 127 00:06:53,250 --> 00:06:59,400 sme pomocou Haskell, v ktorom Funkcie sú občania prvej triedy. 128 00:06:59,400 --> 00:07:01,120 >> A ja som chcel predĺžiť to trochu. 129 00:07:01,120 --> 00:07:08,800 Je to trochu ľahké nota Frere Jacques v Haskell. 130 00:07:08,800 --> 00:07:12,100 Ale čo keď sme chceli pridať časť bubna na to? 131 00:07:12,100 --> 00:07:17,320 Čo keby sme chceli snažiť, aby niečo ako Roland 808 alebo 909 bubna 132 00:07:17,320 --> 00:07:20,970 Stroj kde musíte asi 16 rôzne kroky? 133 00:07:20,970 --> 00:07:24,590 Zvyčajne sa jedná o myšlienka ako 16. poznámky. 134 00:07:24,590 --> 00:07:28,640 A môžete ovládať globálnej tempo, a môžete si vybrať 135 00:07:28,640 --> 00:07:34,620 veľa rôznych bicích častí z basový bubon, tlieskať, rôzne Snares, 136 00:07:34,620 --> 00:07:37,540 otvorené a uzavreté vysokými klobúky na tieto druh kanálov, 137 00:07:37,540 --> 00:07:41,600 a potom môžete EQ, alebo prispôsobiť ich objemu. 138 00:07:41,600 --> 00:07:45,290 >> A uvidíme pekný cestu Haskell reprezentovať tento krok 139 00:07:45,290 --> 00:07:48,810 sekvencer so všetkými rôzne chladné veci v Haskell 140 00:07:48,810 --> 00:07:53,100 môžeme robiť s generovaním zoznamy a filtrovanie cez zoznamov, 141 00:07:53,100 --> 00:07:56,060 mapovanie nad zoznamy, mapovanie funkcie, ktoré zoznamy. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 A rýchla ospravedlnenie. 144 00:08:00,760 --> 00:08:05,300 Jedná sa o veľmi povrchné a príliš rýchla skica 145 00:08:05,300 --> 00:08:07,620 niektorých aspektov Haskell a Euterpea, 146 00:08:07,620 --> 00:08:11,760 čo je doména špecifická vložený jazyk písaný 147 00:08:11,760 --> 00:08:14,970 v Haskell pre hudobné typy. 148 00:08:14,970 --> 00:08:17,350 Takže, prosím, pozrite sa na kód on-line. 149 00:08:17,350 --> 00:08:22,404 Oheň ghci, čo je Glasgow Haskell Compiler Interpreter. 150 00:08:22,404 --> 00:08:24,320 A ja budem robiť niektoré tohto v trochu 151 00:08:24,320 --> 00:08:25,880 takže môžete vidieť, ako sa to robí. 152 00:08:25,880 --> 00:08:31,021 >> A to vám umožní nahrať sa the-- syntax je dvojbodka a potom 153 00:08:31,021 --> 00:08:31,520 príkaz. 154 00:08:31,520 --> 00:08:33,510 Môžete vložiť do súboru. 155 00:08:33,510 --> 00:08:36,840 Môžete použiť Prehľadávať na tie súbory vidieť všetky funkcie, ktoré 156 00:08:36,840 --> 00:08:39,169 existujú v určitom module. 157 00:08:39,169 --> 00:08:43,850 A potom ako uvidíme, typy a typ triedy sú tak dôležité v Haskell, 158 00:08:43,850 --> 00:08:48,850 takže môžete vždy check-- obzvlášť ak pracujete v novom DSCL 159 00:08:48,850 --> 00:08:51,600 ako je tento, aký je druh hudobné? 160 00:08:51,600 --> 00:08:55,114 Viem, že o tom, ako numerickej typy pracujú v Haskell, 161 00:08:55,114 --> 00:08:56,530 ale ja neviem, moc o hudbe. 162 00:08:56,530 --> 00:09:01,280 Ale môžete preskúmať toho, ako sú definovaný pomocou tohto T alebo typ príkazu 163 00:09:01,280 --> 00:09:04,577 a potom volania v konkrétnej Funkcie alebo dátový objekt. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Jo. 165 00:09:05,410 --> 00:09:09,820 Ak ste si mysleli, C a Clang Bol hardass o typy, 166 00:09:09,820 --> 00:09:11,230 nemáte žiadnu predstavu o Haskell. 167 00:09:11,230 --> 00:09:14,230 Dobrú vec, o Haskell je, že ak môžete získať váš kód kompilovať 168 00:09:14,230 --> 00:09:16,790 a ak kontroly typu Haskell, je to asi v poriadku, 169 00:09:16,790 --> 00:09:18,675 pretože typ systém je tak prísny. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Jo. 171 00:09:20,090 --> 00:09:21,980 Tak som len chcem ísť through-- a znovu, 172 00:09:21,980 --> 00:09:27,160 to nie je, ako to urobiť justice-- pár rysy Haskell, že prinajmenšom 173 00:09:27,160 --> 00:09:31,780 k jeho creators-- a bol vytvorený v neskorej 1980 bandou ľudí, 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 prvá vec, ktorú uvedené v papiera, ktorý 176 00:09:36,850 --> 00:09:41,890 opísal genézu Haskell počas prvých 20 rokov alebo tak 177 00:09:41,890 --> 00:09:43,390 bolo, že lenivý. 178 00:09:43,390 --> 00:09:44,990 Takže čo to znamená? 179 00:09:44,990 --> 00:09:49,860 >> No, to znamená, keď máme nejaký druh prejavu, musíme hodnotiť. 180 00:09:49,860 --> 00:09:54,390 A Haskell robí toto v hovore potrebou ceste alebo non-prísne spôsobom. 181 00:09:54,390 --> 00:09:57,250 To znamená, že ak budeme mať veľa súčasti nášho prejavu, 182 00:09:57,250 --> 00:10:00,660 snažíme odložiť hodnotenie z tých čiastkových komponentov 183 00:10:00,660 --> 00:10:05,300 až do absolútnej posledného minute-- to je, kým sme skutočne potrebujú je. 184 00:10:05,300 --> 00:10:08,480 >> Tak toto means-- ktorá je naozaj cool, a to najmä 185 00:10:08,480 --> 00:10:13,200 ak budeme premýšľať o abstrakcie hudobného kroku sekvenceru. 186 00:10:13,200 --> 00:10:16,740 Môžete ju zapnúť, a začnete beh krok sequence-- 187 00:10:16,740 --> 00:10:20,010 Ak ste niekedy pracovali s bubnom machine-- a to len ide večne. 188 00:10:20,010 --> 00:10:24,650 Tak to by bolo naozaj pekné, keby sme mohol napodobniť, že v Haskell. 189 00:10:24,650 --> 00:10:31,040 A môžeme to urobiť s nekonečným hodnoty, najmä nekonečnými zoznamy. 190 00:10:31,040 --> 00:10:35,860 Je to veľmi jednoduché na zadanie nekonečný zoznam v Haskell. 191 00:10:35,860 --> 00:10:39,230 Dalo by sa stačí použiť syntax dole tu, kde je vidieť 1 až 3, 192 00:10:39,230 --> 00:10:42,440 odstrániť 3 1 dot dot, a že je nekonečný zoznam 193 00:10:42,440 --> 00:10:46,960 zo všetkých prirodzených čísel predĺženie Na čo si dokážete predstaviť. 194 00:10:46,960 --> 00:10:49,925 >> Chcem sa predstaviť Koncept záhybov hneď. 195 00:10:49,925 --> 00:10:51,800 A opäť, účel na tento seminár nie je 196 00:10:51,800 --> 00:10:55,770 dozvedieť sa o záhyby v Haskell alebo vyšších rádov funkcie. 197 00:10:55,770 --> 00:10:59,640 Ale chcem predstaviť ju poskytnúť presný pocit, ako divný 198 00:10:59,640 --> 00:11:03,700 Haskell je a ako silný to je. 199 00:11:03,700 --> 00:11:08,000 A najmä, budeme be-- keď budeme robiť naše rôzne bicie party, 200 00:11:08,000 --> 00:11:12,790 budeme sa manipuluje zoznamy Čísla, skladanie na seba. 201 00:11:12,790 --> 00:11:17,290 A k tomu, že budeme sa používajú mapy a záhyby. 202 00:11:17,290 --> 00:11:21,770 >> Je tu právo asociatívne zložiť, čo je tento pravdu 203 00:11:21,770 --> 00:11:26,990 here-- 1 sa zníži o množstvo, 2 sa zníži o množstvo, 3 mínus 0. 204 00:11:26,990 --> 00:11:29,170 A Syntax pre fold, dáte fold 205 00:11:29,170 --> 00:11:34,680 základná hodnota a potom operation-- v tomto prípade, sčítanie alebo odčítanie. 206 00:11:34,680 --> 00:11:36,280 Ja som je znázornené oba prípady. 207 00:11:36,280 --> 00:11:41,760 A potom je tu akumulátor, ktoré hromadí po celej zoznamu 208 00:11:41,760 --> 00:11:46,330 použitie tohto operátora Plus alebo mínus, a potom ju hromadia. 209 00:11:46,330 --> 00:11:52,680 Takže to bude the--, keď sa mu hovorilo s rozkladacím R plus 0, počnúc 0, 210 00:11:52,680 --> 00:11:54,720 potom by sme sčítať všetky Čísla v tomto zozname. 211 00:11:54,720 --> 00:11:57,134 A to je zoznam od 1 do 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Tak, aby to dať ďalšie cesta, fold r trvá tri argumenty. 213 00:12:00,050 --> 00:12:02,540 K dispozícii je funkcia, ktorá sám prijíma dva argumenty, 214 00:12:02,540 --> 00:12:05,400 potom je tu hodnotu štartér, a tam je zoznam hodnôt. 215 00:12:05,400 --> 00:12:08,570 A to, čo robíte, je si vziať štartér hodnoty, prvá hodnota, 216 00:12:08,570 --> 00:12:09,850 dať ich do funkcie. 217 00:12:09,850 --> 00:12:11,607 Čo dostanete von, vezmem, krmivo, ktoré 218 00:12:11,607 --> 00:12:13,940 do funkcie z druhá hodnota, čo dostanete von, 219 00:12:13,940 --> 00:12:16,690 vziať, nakŕmiť, že do Funkcia tretieho hodnoty. 220 00:12:16,690 --> 00:12:18,740 A potom, keď idete dole celý tento zoznam týmto spôsobom, 221 00:12:18,740 --> 00:12:22,970 budete mať nakoniec niektorí singulární to je 222 00:12:22,970 --> 00:12:25,720 rovnakého typu, čo začali sa s a rovnakého typu 223 00:12:25,720 --> 00:12:29,147 ako veci v zozname a potom že je to návrat výsledok fold R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Tak predovšetkým, to sú funkcie vyššieho rádu, 225 00:12:31,980 --> 00:12:34,460 pretože berieš ďalšie Funkcie ako jednu z úvah. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Jo. 227 00:12:34,770 --> 00:12:37,820 Ak ste použili niektoré ďalšie languages-- Viem, že R, [nepočuteľných] 228 00:12:37,820 --> 00:12:41,510 jazyk má to, tzv znížiť. 229 00:12:41,510 --> 00:12:45,460 Tie by mohli mať podobné funkcie v iných jazykoch, len volal 230 00:12:45,460 --> 00:12:48,160 rôzne veci. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: A čo je pekné o fold R 232 00:12:50,680 --> 00:12:53,880 v tomto prípade je, že záhyb R môže pracovať s nekonečnými zoznamy. 233 00:12:53,880 --> 00:12:59,490 Takže v tomto dnu, tento P5 vytvára poznámky 234 00:12:59,490 --> 00:13:03,120 sú zapnuté v kroku sekvenceru pre niektorá časť bubna, piata časť bubna, 235 00:13:03,120 --> 00:13:05,480 a možno je to Conga bubon, alebo tak niečo. 236 00:13:05,480 --> 00:13:09,719 A to je zámerne tupé spôsob písania tohto, 237 00:13:09,719 --> 00:13:11,510 ale je to zábava, pretože demonštruje veľa 238 00:13:11,510 --> 00:13:14,460 z vecí, o Haskell a Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Takže zložiť R tejto colon-- hrubého čreva je len operátor, ktorý tlačí veci 240 00:13:20,650 --> 00:13:25,700 spolu na list-- vyzvala prázdny zoznam, čo je len prázdne zátvorky. 241 00:13:25,700 --> 00:13:28,250 A volám, že na tomto nekonečný zoznam. 242 00:13:28,250 --> 00:13:31,570 To je vlastne dva zoznamy sčítavajú tu dole. 243 00:13:31,570 --> 00:13:37,150 Zoznam 1 čiarka 6 bodka dot je 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Takže Haskell-- v práve niekoľko znakov, vy 245 00:13:39,750 --> 00:13:42,420 môžete vygenerovať celokrajné postupnosť čísel 246 00:13:42,420 --> 00:13:46,240 ktoré sú od seba päť čísel rozkladajúce sa na do nekonečna. 247 00:13:46,240 --> 00:13:49,860 A ja som sa, že predradiť tento malý kratšie list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- len preto, aby vám ukázať, ako môžete zřetězit zoznamy. 249 00:13:54,370 --> 00:13:55,790 >> A potom som zložil na seba. 250 00:13:55,790 --> 00:14:01,510 A to skončí byť len akousi Prevádzka identity, ale je to nekonečné. 251 00:14:01,510 --> 00:14:06,070 A fold R môže urobiť, pretože to lenivo hodnotí, ako je vo vyššie uvedenom. 252 00:14:06,070 --> 00:14:10,582 Ak máme 1 a 2 a 3, môžeme len zátvorka mimo celý zvyšok. 253 00:14:10,582 --> 00:14:12,290 To nebude fungovať mínus alebo plus, ale 254 00:14:12,290 --> 00:14:17,760 bude pracovať pre tento hrubého čreva Prevádzka identity na zozname. 255 00:14:17,760 --> 00:14:24,620 >> Tak ako sme sa prakticky použiť, že ak budeme majú nekonečne dlhý zoznam vecí? 256 00:14:24,620 --> 00:14:26,500 No, Haskell poskytuje veľa functions-- 257 00:14:26,500 --> 00:14:29,450 a pozerať sa viac do nich v vlastné time-- ako je vziať 258 00:14:29,450 --> 00:14:32,200 ktorý hovorí, OK, my sme generovanie tohto nekonečný zoznam, 259 00:14:32,200 --> 00:14:35,950 ale my sme len tak, aby sa niektoré počet IT a v tomto case-- 260 00:14:35,950 --> 00:14:38,410 uvidíme neskôr v naše bicie automat code-- 261 00:14:38,410 --> 00:14:43,740 GM je len nejaký druh globálneho premenná pre počtu krokov 262 00:14:43,740 --> 00:14:44,610 v sekvenceru. 263 00:14:44,610 --> 00:14:47,630 Na strojoch Roll-in I vám ukázal, že je to typicky 16, 264 00:14:47,630 --> 00:14:51,475 ale som implementoval ju s 32. 265 00:14:51,475 --> 00:14:54,470 Je to naozaj nezáleží. 266 00:14:54,470 --> 00:15:00,230 >> Haskell je tiež čistý, takže to má silný statické písania, že Connor spomínal. 267 00:15:00,230 --> 00:15:03,220 Takže funkcie matematické v sense-- 268 00:15:03,220 --> 00:15:06,600 oni sú viac matematický že sú zaručené 269 00:15:06,600 --> 00:15:11,530 sa nedá pristupovať alebo zmeniť akékoľvek premenná alebo vykonať vstup alebo výstup. 270 00:15:11,530 --> 00:15:14,420 Takže ak máte funkciu, to je deterministický. 271 00:15:14,420 --> 00:15:17,400 To bude vždy vrátiť rovnaký hodnota v stave programu 272 00:15:17,400 --> 00:15:19,310 alebo zostávajú rovnaké. 273 00:15:19,310 --> 00:15:22,940 Existujú, samozrejme, Monadické výnimky k tomu, ale to je mimo našu pôsobnosť. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Jo. 275 00:15:23,900 --> 00:15:26,946 Čo to znamená, keď je tam sú málo dôležité [nepočuteľných] 276 00:15:26,946 --> 00:15:27,820 Dôsledky tejto. 277 00:15:27,820 --> 00:15:30,940 Jedným z nich je, že je to veľmi jednoduché paralelizovat programov Haskell. 278 00:15:30,940 --> 00:15:32,773 Vzhľadom k tomu, ak máte, hovoria, funkciu, ktorá 279 00:15:32,773 --> 00:15:36,064 musí fungovať na milión hodnotách, pokiaľ viete, že funkcia bude vždy 280 00:15:36,064 --> 00:15:39,280 rozdávať rovnakú hodnotu, ak kŕmite v určitom value-- 281 00:15:39,280 --> 00:15:43,055 ak ste [nepočuteľné] f 1, f 2, potom f 3 alebo whatnot-- f 1 282 00:15:43,055 --> 00:15:45,180 sa nebude písať von do súboru alebo robiť niečo 283 00:15:45,180 --> 00:15:46,850 , Ktorý bude meniť hodnotu f2. 284 00:15:46,850 --> 00:15:50,220 Stačí si len rozdeliť túto funkciu do A miliónov rôznych strojov alebo milión 285 00:15:50,220 --> 00:15:54,720 rôzne závity alebo čokoľvek, získať všetky odpovede naspäť, 286 00:15:54,720 --> 00:15:56,900 získať všetky návratové hodnoty dozadu, a potom je to. 287 00:15:56,900 --> 00:15:59,780 Takže veľmi ľahko paralelizovat veci. 288 00:15:59,780 --> 00:16:03,140 >> Nevýhodou je, že vstup a výstup obzvlášť 289 00:16:03,140 --> 00:16:05,720 zapadajú do systému typu vo veľmi zložitých spôsobmi. 290 00:16:05,720 --> 00:16:09,010 Nebudeme zachádzať do tohto práva, ale ja Odporúčame vám pozrieť sa na niektoré zdroje 291 00:16:09,010 --> 00:16:11,175 on-line, ak sa chcete dozvedieť o tom. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: So zadajte classes-- a to 294 00:16:16,550 --> 00:16:21,610 was-- triedy typov boli vynájdené riešiť 295 00:16:21,610 --> 00:16:24,160 problém operátora preťaženia. 296 00:16:24,160 --> 00:16:27,590 Takže sme chceli mať rovnosť medzi rôznymi typmi vecí. 297 00:16:27,590 --> 00:16:31,040 Samozrejme, že si myslíme, že of-- rovnosť medzi typmi číselných 298 00:16:31,040 --> 00:16:34,720 je veľmi ľahké si myslieť o tom, ale čo o ​​rovnosti medzi zoznamy? 299 00:16:34,720 --> 00:16:37,610 Čo rovnosti stromovej dátové štruktúry noha? 300 00:16:37,610 --> 00:16:43,130 A to všetko je možné v Haskell pretože tried typu. 301 00:16:43,130 --> 00:16:48,000 >> Takže ak definujete určité údaje type-- a tu, to sú hudobné ihrisko. 302 00:16:48,000 --> 00:16:50,960 Sme konečne dostáva nejaké počítačové hudby. 303 00:16:50,960 --> 00:16:57,420 Takže máme C, C ostrý, a tak ďalej a tak ďalej. 304 00:16:57,420 --> 00:17:01,080 Patrí k banda Rôzne typové triedy. 305 00:17:01,080 --> 00:17:03,510 EQ-- oni patria k typu EQ triedy. 306 00:17:03,510 --> 00:17:06,780 To znamená, že podporujú Operácia rovnosti. 307 00:17:06,780 --> 00:17:12,650 Takže si môžete vyhodnotiť, či jeden sled hudobných primitív 308 00:17:12,650 --> 00:17:15,400 je rovnaké ako iné. 309 00:17:15,400 --> 00:17:17,280 >> Patrí do radovej triedy. 310 00:17:17,280 --> 00:17:19,479 To znamená, že tam je usporiadanie na ne. 311 00:17:19,479 --> 00:17:27,670 D prichádza potom, čo C. C ostrý prichádza potom, C i. 312 00:17:27,670 --> 00:17:29,840 Patrí do triedy ukazujú, čo znamená, že môžu 313 00:17:29,840 --> 00:17:33,000 byť vytlačená na konzole alebo terminálu. 314 00:17:33,000 --> 00:17:36,090 Oni patria k trieda vymenoval, ktorý 315 00:17:36,090 --> 00:17:39,770 Znamená to, že aj keď to sú znaky, 316 00:17:39,770 --> 00:17:45,340 majú podkladové číselný zastúpenie začínajúceho na 0 317 00:17:45,340 --> 00:17:48,960 a ísť preč cez však veľa vecí sa tu, 20 alebo tak, 318 00:17:48,960 --> 00:17:51,770 alebo 30 alebo 40, možno. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: A kedy máme dátový typ 320 00:17:54,259 --> 00:17:57,050 že derives-- sa dané kľúčové slovo "deriving--" určitý druh triedy, 321 00:17:57,050 --> 00:18:01,160 to znamená, že kompilátor bude snažiť postaviť niečo, čo automaticky. 322 00:18:01,160 --> 00:18:05,120 Takže možno budete chcieť definovať kvalitu inak. 323 00:18:05,120 --> 00:18:09,450 Budete chcieť definovať C ostrý ako rovná D byt, napríklad. 324 00:18:09,450 --> 00:18:11,560 U tejto konštrukcie tu, nemyslím si, že C ostrý 325 00:18:11,560 --> 00:18:14,940 a D ploché bude rovnaká, pretože kompilátor automaticky 326 00:18:14,940 --> 00:18:19,670 hovoria, každý inú možnú hodnotu sa líši od každej inej. 327 00:18:19,670 --> 00:18:22,930 >> Je teda možné, aby prepísať Predvolené implementácia 328 00:18:22,930 --> 00:18:25,730 z týchto typov tried. 329 00:18:25,730 --> 00:18:28,640 Opäť platí, pozrite sa na odkaz, ak Chcete sa dozvedieť o tom. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: A Tu, v skutočnosti, to bude 332 00:18:33,600 --> 00:18:36,930 byť užitočné, keď sme sa kód neskôr. 333 00:18:36,930 --> 00:18:42,150 Vidíme niektoré z operátorov Infix pre sekvenčné zloženie, 334 00:18:42,150 --> 00:18:46,570 paralelné zloženie, a preto ďalej, tieto plusy a rovnaké znaky 335 00:18:46,570 --> 00:18:48,620 obklopený dvojbodkami. 336 00:18:48,620 --> 00:18:53,330 To znamená, že môžeme hrať tieto rôzne hudobné primitíva jeden po druhom. 337 00:18:53,330 --> 00:18:54,590 To je sekvenčná zloženie. 338 00:18:54,590 --> 00:18:57,170 >> Alebo môžeme hrať je v paralelne v rovnakej dobe. 339 00:18:57,170 --> 00:19:05,100 Takže môžem mať hudobné hodnotu, a potom sa to rovná a dvojbodky, 340 00:19:05,100 --> 00:19:09,669 Infix paralelné operátor zloženie, a prehrať ich ako druh akordu. 341 00:19:09,669 --> 00:19:11,460 A budeme používať to, keď sme sa spojiť 342 00:19:11,460 --> 00:19:15,080 Naše časť bubna s našimi málo Frere Jacques song 343 00:19:15,080 --> 00:19:19,460 hrať tieto dve sekvencie hudobné hodnoty v rovnakom čase. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Mazanie, je-- Curry bol naposledy meno Haskell Curry, ktorý 346 00:19:29,250 --> 00:19:31,850 obraz Haskell je pomenoval. 347 00:19:31,850 --> 00:19:34,330 A to nám umožní si pekné elegancia keď sme 348 00:19:34,330 --> 00:19:36,880 písať všetky tieto rôzne funkcií alebo filtre, ktoré sme 349 00:19:36,880 --> 00:19:39,330 Bude mapovanie cez naše stránky. 350 00:19:39,330 --> 00:19:42,810 Funkcie dvoch arguments-- f x a y- 351 00:19:42,810 --> 00:19:46,630 môže byť reprezentovaný ako f x aplikovaný na y. 352 00:19:46,630 --> 00:19:49,800 Takže je to funkcia jeden argument, že sa vráti 353 00:19:49,800 --> 00:19:51,240 Ďalšou funkciou jedným argumentom. 354 00:19:51,240 --> 00:19:56,962 Takže to znamená, že môžeme mapovať funkcia f x nad zoznamom y je. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Chcem dať prí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 príklad tu od niektoré z vecí, budeme písať. 358 00:20:05,390 --> 00:20:10,500 Takže replikovať 2-- dobre, replikovať bude trvať 359 00:20:10,500 --> 00:20:13,040 jedna hodnota, ktorá je, koľko časy replikovať niečo, 360 00:20:13,040 --> 00:20:16,690 a potom to bude trvať value-- obvykle zoznam alebo tak niečo. 361 00:20:16,690 --> 00:20:23,450 Tak tu, my sme mapovanie replikovať 2 cez iného zoznamu. 362 00:20:23,450 --> 00:20:27,440 >> Takže ak budeme máp replikovať 2, ak by sme replikovať 2 platí 363 00:20:27,440 --> 00:20:31,890 na prvý prvok tohto list-- a to sú zoznamy hudobného phrases-- 364 00:20:31,890 --> 00:20:37,650 bude vyrábať dva "vy sleeping--" takže spíte, spíte. 365 00:20:37,650 --> 00:20:40,040 Takže teraz máme dve. 366 00:20:40,040 --> 00:20:42,570 Ale Replika trvá dva argumenty, ale preto, že sme 367 00:20:42,570 --> 00:20:47,100 mazanie, a potom mapovanie, môžeme reprezentovať replikovať 2 368 00:20:47,100 --> 00:20:52,310 ako by bola vrátená ako funkcia jedným argument-- len replikáciu dvakrát. 369 00:20:52,310 --> 00:20:57,010 A potom sme sa uchádzate, že pre každý prvkom tohto zoznamu fráz. 370 00:20:57,010 --> 00:21:01,900 >> A concat je Haskell Operácie pre zlúčenie zoznamu. 371 00:21:01,900 --> 00:21:04,400 Vzhľadom k tomu, repliky 2, bude vytvorí zoznam zoznamov. 372 00:21:04,400 --> 00:21:06,660 A to je tu to prechodná forma. 373 00:21:06,660 --> 00:21:10,365 A tak potom môžeme concat alebo vyrovnať, že dvakrát. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Jednoduchšie mazanie, na príklad, 375 00:21:12,240 --> 00:21:15,323 ak by ste jako-- predstaviť, f je len Funkcia násobenie, ktorá berie dva 376 00:21:15,323 --> 00:21:16,840 argumenty a vráti ich produktu. 377 00:21:16,840 --> 00:21:19,320 Takže ak máte F 4 5, to je 20. 378 00:21:19,320 --> 00:21:22,670 Ale môžete myslieť na to, ako also-- máte funkciu f 4 379 00:21:22,670 --> 00:21:25,560 ktorý berie argument a vracia štvornásobok tejto argument-- len 380 00:21:25,560 --> 00:21:27,870 čiastočná aplikácia, ktorá len jeden argument 4. 381 00:21:27,870 --> 00:21:31,182 A či kŕmite f 4 5, ktorý vám dá 20. 382 00:21:31,182 --> 00:21:32,890 A to je jednoduchšie Príkladom mazanie, na. 383 00:21:32,890 --> 00:21:34,473 Je to zvyčajne jedna z učebnice tie. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda výrazy alebo anonymné funkcie 386 00:21:42,110 --> 00:21:47,330 sú ďalšie Haskell znakom. 387 00:21:47,330 --> 00:21:51,242 Takže ak budeme potrebovať, aby vybičovať málo funkcie život replikami, 388 00:21:51,242 --> 00:21:52,950 ale hovoria, že to nie je Štandardná knižnica, 389 00:21:52,950 --> 00:21:56,150 môžeme použiť syntax podobné nasledujúcom. 390 00:21:56,150 --> 00:21:58,730 A budeme vánok nad tým. 391 00:21:58,730 --> 00:22:02,160 Jedna vec, ktorú uvidíte veľa v bicie automat je robíme hovorov 392 00:22:02,160 --> 00:22:05,790 k niečomu volal filter, ktorá je rovnako ako predtým, 393 00:22:05,790 --> 00:22:08,185 je zobrazenie funkcie nad zozname, ale je to 394 00:22:08,185 --> 00:22:10,260 mapovanie logický funkcie. 395 00:22:10,260 --> 00:22:13,390 >> Takže tu máme príklad štandardu A anonymne 396 00:22:13,390 --> 00:22:19,150 definovaná boolovská funkcie, ktoré Stačí len pár hodnôt. 397 00:22:19,150 --> 00:22:22,990 To nie je prísne vzaté anonymné funkcie. 398 00:22:22,990 --> 00:22:25,850 Ale je to definovať s že syntax pre stručnosť, 399 00:22:25,850 --> 00:22:28,007 a to jednoducho 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 funkciou dva argumenty n a p 402 00:22:31,330 --> 00:22:35,440 že vráti funkciu, ktorá je sama funkcie jedného 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átormi Infix. 405 00:22:40,690 --> 00:22:42,642 Aké sú operátori Infix? 406 00:22:42,642 --> 00:22:45,710 No, operátori Infix sú Normálny spôsob zastupujeme operácie, 407 00:22:45,710 --> 00:22:49,910 hovoria, v mathematics-- 2 plus 2 miesto prevádzkovateľa a 408 00:22:49,910 --> 00:22:51,202 a potom dva argumenty 2 a 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Volá sa to Reverznej poľská notácie, čo je 410 00:22:53,701 --> 00:22:55,330 termín Pochybujem, niekto z vás bude vedieť. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Správne. 412 00:22:56,288 --> 00:22:58,290 Reverznej poľská notácie alebo predpony. 413 00:22:58,290 --> 00:23:01,412 Ale rozhodol sa Haskell používať operátormi Infix. 414 00:23:01,412 --> 00:23:03,120 Tak to sú niektoré z Vlastné tie, ktoré 415 00:23:03,120 --> 00:23:07,770 sú definované pre Euterpea DSCL v Haskell. 416 00:23:07,770 --> 00:23:10,730 Tak toto je sekvenčná zloženie. 417 00:23:10,730 --> 00:23:16,340 Toto bolo paralelné zloženie, a to sa skracovať paralelné zloženie. 418 00:23:16,340 --> 00:23:18,710 A budeme potrebovať s našim automatom, 419 00:23:18,710 --> 00:23:22,640 pretože budeme používať posledná operátor v tom, že malé tica 420 00:23:22,640 --> 00:23:26,330 hrať na bicie automat pozdĺž s našou Frere Jacques pieseň. 421 00:23:26,330 --> 00:23:28,650 A naše bicie automat je Bude nekonečný. 422 00:23:28,650 --> 00:23:30,920 Je to len hrá navždy. 423 00:23:30,920 --> 00:23:32,692 Ale pieseň Frere Jacques nie je. 424 00:23:32,692 --> 00:23:33,510 Nie je to tak dlho. 425 00:23:33,510 --> 00:23:36,610 Je to len pár barov. 426 00:23:36,610 --> 00:23:43,030 Takže potrebujeme zastaviť bicie automat as Akonáhle je kratšia hudobné hodnota vychádza 427 00:23:43,030 --> 00:23:43,700 do konca. 428 00:23:43,700 --> 00:23:46,980 A to infixed operátor je super užitočné, s tým. 429 00:23:46,980 --> 00:23:50,090 >> A Infix notácie ako To je celkom pekné, 430 00:23:50,090 --> 00:23:57,095 preto, že hovoria, že máte funkciu ako citát, ktorý dáva celočíselné delenie 431 00:23:57,095 --> 00:24:01,010 x niečím else-- Ospravedlňujem sa, že by mal byť, a b. 432 00:24:01,010 --> 00:24:04,740 Dalo by sa napísať, ako citácie b. 433 00:24:04,740 --> 00:24:09,670 Takže ak ste put-- prvok Ďalším príkladom. 434 00:24:09,670 --> 00:24:14,730 x element v nejakom zozname, ak ste dal to v backticks, môžete ho použiť. 435 00:24:14,730 --> 00:24:20,400 Aj keď to nie je symbol ako plus alebo mínus alebo časy, 436 00:24:20,400 --> 00:24:24,630 môžete použiť meno Funkcie, ako že v backticks 437 00:24:24,630 --> 00:24:27,045 ako zavádzacie operátor, čo je celkom v pohode. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Znovu, toto je všetko len syntaxe cukor, naozaj. 439 00:24:29,670 --> 00:24:32,310 To nemá vplyv na jadro jazyka. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Takže tu vidíme pre Posledná veta nášho Frere Jacques piesne, 441 00:24:37,440 --> 00:24:45,740 Hral som nejaké malé alebo akordy tretiny pomocou paralelné zloženie 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 ďalší spôsob, ako hovoriť niektoré z toho, čo sme práve hovorili. 445 00:24:54,950 --> 00:24:59,986 Takže si môžete mapovať funkcie jedného argumentu nad zoznamy. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Opäť odkazy pre Haskell-- úvodných učebnice 447 00:25:02,860 --> 00:25:04,680 bude mať všetko v ňom. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Tak tu je celkom Kľúčovým riadok kroku sekvenceru 449 00:25:07,790 --> 00:25:12,820 budeme sa pozrieť na použitie zoznam porozumenie. 450 00:25:12,820 --> 00:25:17,810 A tu vidíme, je, že prvok V prevádzkovateľa pevných vzadu úvodzovkách. 451 00:25:17,810 --> 00:25:23,030 Takže ak x je prvkom zoznamu x je, potom budeme vyvolať Perc funkcie. 452 00:25:23,030 --> 00:25:25,100 Takže perc je len funkcia bicie. 453 00:25:25,100 --> 00:25:30,200 To trvá nejakú hodnotu p, ktorý je časť ohraničené množiny všetkých 454 00:25:30,200 --> 00:25:35,310 rôzne bicie zvuky že sme videli v predchádzajúcom snímke, 455 00:25:35,310 --> 00:25:38,840 a potom to, že dáva Doba trvania štvrť poznámky. 456 00:25:38,840 --> 00:25:43,190 Inak to mu dáva gnr, a gnr je len odpočinok štvrťová nota. 457 00:25:43,190 --> 00:25:44,970 >> Tak toto je budovanie niečo pekného. 458 00:25:44,970 --> 00:25:52,110 Máme zoznam prvkov, a my budeme slučku nad nejakou zoznamu od jedného 459 00:25:52,110 --> 00:25:54,540 na maximálne hodnoty nášho kroku sekvenceru. 460 00:25:54,540 --> 00:25:58,290 A keď sme v určitom aj v že zoznam jedného do maximálnej hodnoty, 461 00:25:58,290 --> 00:26:02,970 ak, že aj je členom tejto sada bola vytvorená v tejto funkcii, 462 00:26:02,970 --> 00:26:06,040 dobre, potom sme to otočiť do perkusné poznámky. 463 00:26:06,040 --> 00:26:10,960 Inak sme len hrať odpočinok, ktorý znamená, že sme jednoducho mlčí. 464 00:26:10,960 --> 00:26:16,050 A vidíme tu, že v Tento zoznam porozumenie syntax, 465 00:26:16,050 --> 00:26:20,030 x je obývaný to Zoznam postavil jedného 466 00:26:20,030 --> 00:26:22,462 ku globálnemu veľkosti sekvenceru. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Jo. 468 00:26:23,295 --> 00:26:26,340 Základná syntax Zoznam je comprehension 469 00:26:26,340 --> 00:26:30,810 držiak, hodnota zahŕňajúce niektoré premenné, bar, 470 00:26:30,810 --> 00:26:34,260 Možné hodnoty premenných sám, uzavretý držiak. 471 00:26:34,260 --> 00:26:38,545 A ak ste urobili nastaviť staviteľ notácie v nejakom druhu matematiky triedy, 472 00:26:38,545 --> 00:26:45,999 môžete mať nastavené ako 2n že n je alebo n je v z. 473 00:26:45,999 --> 00:26:48,290 Podobné thing-- tomto zápise má byť podnetný 474 00:26:48,290 --> 00:26:49,630 tohto matematického zápisu. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: A môžete použiť viac predikáty 476 00:26:51,880 --> 00:26:56,250 a viac filtrov v zozname porozumenie, čo je celkom pekné. 477 00:26:56,250 --> 00:27:01,800 Algebraická types-- sme nebude otáľať tu dlho. 478 00:27:01,800 --> 00:27:04,840 Tam to nie je dobrý pojem v Haskell alebo dobrý, zrejmý pojem 479 00:27:04,840 --> 00:27:10,720 o tom, ako vziať, povedzme, v predvolenom nastavení parameter funkciu alebo tak niečo. 480 00:27:10,720 --> 00:27:13,370 V Pythone, je to celkom jednoduché. 481 00:27:13,370 --> 00:27:18,460 Stačí si len povedať rovná na vyhlásenie o funkcie, 482 00:27:18,460 --> 00:27:21,420 predvolená hodnota v Prípad nikto je dodávaný. 483 00:27:21,420 --> 00:27:27,010 >> V Haskell, mohol by ste možno použite možná možná typ, 484 00:27:27,010 --> 00:27:32,190 ktorý berie buď nič alebo hodnotu typu len. 485 00:27:32,190 --> 00:27:38,630 Tak sme to využiť v bubne práčky , Aby sme mohli dať voliteľného objemu 486 00:27:38,630 --> 00:27:40,730 parametre na každej z častí bubna. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Tak, že nám dáva spôsob, ako mať EQ alebo objem na konkrétny kanál. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: V ďalšie príklady Haskell, 490 00:27:56,440 --> 00:28:00,450 môžete vidieť môžu byť použité pre funkcie, ktoré by mohli zlyhať. 491 00:28:00,450 --> 00:28:03,470 To je obyčajný. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: A môžete doplniť akési chybové správy ako predvolené. 493 00:28:07,010 --> 00:28:11,020 A to je obzvlášť vhod, keď robíte I / O v Haskell. 494 00:28:11,020 --> 00:28:12,044 To môže byť triky. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: alebo pre Podobným príkladom, myslím, 496 00:28:13,960 --> 00:28:17,460 funkcia, ktorá zahŕňa rozdelenie parametra, ktorá môže byť 0. 497 00:28:17,460 --> 00:28:20,020 A táto funkcia mohla vráti možná čokoľvek. 498 00:28:20,020 --> 00:28:22,802 Takže v prípade, že to nie je delenie 0, vráti proste čokoľvek. 499 00:28:22,802 --> 00:28:25,010 A v prípade, že sa delenie 0, vráti sa nič 500 00:28:25,010 --> 00:28:26,910 ako spôsob signalizujúci chybu. 501 00:28:26,910 --> 00:28:30,330 Vzhľadom k tomu, jeden dôsledku Haskell má veľmi prísna písanie 502 00:28:30,330 --> 00:28:34,100 je to, že neexistuje žiadny real-- Výnimkou sú trápne, v podstate, 503 00:28:34,100 --> 00:28:36,160 spracovanie chýb je trápne. 504 00:28:36,160 --> 00:28:39,440 A to je jeden veľmi obyčajný spôsob, ako robiť to. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Takže teraz dostaneme na inú myseľ ohýbanie vec 506 00:28:42,990 --> 00:28:49,160 o Haskell, ktorý je vzorom zodpovedajúce a funkčné definície. 507 00:28:49,160 --> 00:28:53,390 Ukázal som ťa v poslednej nasuňte Vyhlásenie sekvencie kroku 508 00:28:53,390 --> 00:28:58,170 Funkcie, ktoré trvalo možná hodnota, potom int, potom zoznam ints, 509 00:28:58,170 --> 00:29:03,850 potom vracia sekvenciu hudobné hodnoty tam komentovaný 510 00:29:03,850 --> 00:29:05,375 s oboma výšky a hlasitosti. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Takže tieto tri argumenty môžu byť vzor uzavreté v nasledujúcom spôsobom. 513 00:29:11,820 --> 00:29:16,660 A vždy chceme byť istí, robiť základné veci ani ukončiť prípad ako prvý. 514 00:29:16,660 --> 00:29:19,690 A tieto podčiarknutia stačí byť vykladané 515 00:29:19,690 --> 00:29:22,340 znamenať nejakú hodnotu, ktorá tam je. 516 00:29:22,340 --> 00:29:26,580 Takže ak sa dostaneme volania do kroku sekvencie s určitou hodnotou, nejaká iná hodnota, 517 00:29:26,580 --> 00:29:32,210 a potom sa prázdny zoznam, čo chceme, Pre návrat je len ticho, odpočinok 0. 518 00:29:32,210 --> 00:29:35,110 >> A namiesto toho, aby bytia prázdny zoznam alebo 0, 519 00:29:35,110 --> 00:29:38,150 to je zvyšok 0, pretože sme rokovania s typom hudby, 520 00:29:38,150 --> 00:29:43,230 a prázdny zoznam hudby Typ je len zvyšok nie trvanie. 521 00:29:43,230 --> 00:29:45,680 To nie je hudba. 522 00:29:45,680 --> 00:29:51,460 A potom uvidíme, či dostaneme o krok sekvenciu s obj pre objemovú argumentu, 523 00:29:51,460 --> 00:29:57,290 p pre predbežnej opatrnosti nástroj Argument, a potom zoznam x rokov. 524 00:29:57,290 --> 00:29:58,360 >> Potom sme urobiť nejaké veci. 525 00:29:58,360 --> 00:30:01,290 Predovšetkým aplikujeme tento zoznam s porozumením, 526 00:30:01,290 --> 00:30:05,700 a vykonávame niektoré operácie na možná hodnota 527 00:30:05,700 --> 00:30:10,050 premeniť ju na číselnú hodnotu, takže to by mohlo byť potom zoznamu a používané 528 00:30:10,050 --> 00:30:12,300 vyberte nástroj. 529 00:30:12,300 --> 00:30:16,730 Opäť platí, že sa jedná o málo bit úmyselne inconcise 530 00:30:16,730 --> 00:30:20,580 len aby ukázal všetky divné veci môžete urobiť v Haskell ako vy 531 00:30:20,580 --> 00:30:23,170 pozrite sa na to vo svojom voľnom čase. 532 00:30:23,170 --> 00:30:23,802 >> Dobre. 533 00:30:23,802 --> 00:30:26,010 Takže sme sa konečne dostať do to, čo sme sa vydali k tomu, 534 00:30:26,010 --> 00:30:28,820 čo je zarobiť nejaké počítačové hudby. 535 00:30:28,820 --> 00:30:32,250 Takže budeme snažiť aby pieseň Frere Jacques. 536 00:30:32,250 --> 00:30:35,220 Takže tam sú, koľko frázy v Frere Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Štyri. 539 00:30:39,680 --> 00:30:40,460 Skvelé. 540 00:30:40,460 --> 00:30:42,490 A čo je pekné, je, že všetci sa opakujú 541 00:30:42,490 --> 00:30:46,990 rovnaké množstvo časov, ktorý je dva. 542 00:30:46,990 --> 00:30:50,730 >> Takže máme štyri frázy každý opakuje dvakrát. 543 00:30:50,730 --> 00:30:53,590 A najmä, sú v jednom kole. 544 00:30:53,590 --> 00:30:55,340 A existuje veľa, mnoho spôsobov, ako realizovať 545 00:30:55,340 --> 00:30:57,520 koleso, ktorá by mohla byť legrace robiť. 546 00:30:57,520 --> 00:31:00,260 Urobil som to v veľmi jednoduchý spôsob, ako tu, 547 00:31:00,260 --> 00:31:05,760 ktorý je len construct-- linku Funkcia vezme zoznam hudobných hodnôt 548 00:31:05,760 --> 00:31:10,390 a stáča sa do sekvenčná kompozície použitím tejto sekvenčné zloženie 549 00:31:10,390 --> 00:31:13,000 operátor. 550 00:31:13,000 --> 00:31:19,540 >> A potom som odložiť jednotlivé časti tým, že je začať s odpočinku. 551 00:31:19,540 --> 00:31:22,770 Tak som sa začať s ostatnými dvoch opatrení, a potom zvyšok štyroch opatrení, 552 00:31:22,770 --> 00:31:26,160 a potom zvyšok šiestich opatrenia, a potom koleso 553 00:31:26,160 --> 00:31:32,290 funguje, ako všetci vieme, túto pieseň. 554 00:31:32,290 --> 00:31:37,180 Vidíme dve poznámky alebo modifikácie hudobných hodnôt 555 00:31:37,180 --> 00:31:43,150 ktoré sú obsiahnuté v tejto sekvenčné Usporiadanie hudobných prvkov. 556 00:31:43,150 --> 00:31:44,810 Máme objem doplnku. 557 00:31:44,810 --> 00:31:48,960 Jedná sa o funkciu pre anotáciu hudba s určitým objemom. 558 00:31:48,960 --> 00:31:51,320 To je dobrý príklad signálneho prevádzky MIDI 559 00:31:51,320 --> 00:31:57,510 od 0 do 127, sedem bitov informácie, ktoré sa môžu vykonávať. 560 00:31:57,510 --> 00:32:00,650 >> A then-- sme to videli veľmi krátko, ale všeobecné MIDI 561 00:32:00,650 --> 00:32:02,310 Zoznam všetkých rôznych nástrojov. 562 00:32:02,310 --> 00:32:04,450 A že to nie je celá kopa z nich. 563 00:32:04,450 --> 00:32:11,230 Ak používate digitálny audio pracovné stanice, ako Ableton Live alebo Pro Tools, 564 00:32:11,230 --> 00:32:17,560 je tu neuveriteľne širší rozsah syntetizátorov a VST nástrojov. 565 00:32:17,560 --> 00:32:21,510 Ale len štandardné MIDI má niekoľko alebo niekoľko desiatok. 566 00:32:21,510 --> 00:32:22,799 A niektoré z nich sú zábavné. 567 00:32:22,799 --> 00:32:25,840 Myslel som, že by bolo zábavné, keď sme hrali prístroji Prístroj MIDI 568 00:32:25,840 --> 00:32:30,550 vrtuľník, a potom ďalšia cesta cez koleso, 569 00:32:30,550 --> 00:32:37,980 sme urobili pad syntetizátor, a potom to banálne vedenie námestí vlna synth, 570 00:32:37,980 --> 00:32:44,240 a potom hlasom sliz, ktoré sú trochu nejasný na mojej zlej MIDI 571 00:32:44,240 --> 00:32:46,410 syntezátor, ale OK. 572 00:32:46,410 --> 00:32:50,030 >> A potom sme sa vidieť tento ROKOV a v syntaxi z Haskell, 573 00:32:50,030 --> 00:32:54,030 a potom hráme všetky tieto časti dohromady 574 00:32:54,030 --> 00:32:56,265 s paralelným operátorom zloženie. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 A mohli by sme pravdepodobne ukázať niečo z toho. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Tu je kód. 579 00:33:08,340 --> 00:33:14,960 A môžete vidieť v C, že by bolo Veľa krku zúčtovanie a nastavenie 580 00:33:14,960 --> 00:33:19,760 tabuľku kód pred vami mohol robiť hudbu takhle. 581 00:33:19,760 --> 00:33:22,080 Alebo akékoľvek iné programovacie jazyk, to by asi 582 00:33:22,080 --> 00:33:27,210 musieť spolupracovať s nejakým druhom knižnica alebo API a nastaviť všetko, 583 00:33:27,210 --> 00:33:28,725 a potom budete musieť upratať. 584 00:33:28,725 --> 00:33:33,810 Ale tu v Haskell je, myslím, raz sa dostanete na kĺb, neuveriteľne 585 00:33:33,810 --> 00:33:35,770 čitateľný a veľmi expresívne. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Takže tam je implementácia z Frere Jacques. 588 00:33:43,240 --> 00:33:43,740 Dobre. 589 00:33:43,740 --> 00:33:47,557 Teraz chceme pridať bicie, a to je trochu Messier. 590 00:33:47,557 --> 00:33:49,015 Takže poďme sa pozrieť na zábery. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Tak veľká myšlienka je, aby sa banda zoznamov alebo ich častí. 593 00:34:00,540 --> 00:34:04,140 Z týchto valcov-in strojoch, tam boli typicky asi možná ôsmich 594 00:34:04,140 --> 00:34:08,670 10 rytmu bicích alebo častí. 595 00:34:08,670 --> 00:34:10,159 A potom použiť veľa techník. 596 00:34:10,159 --> 00:34:14,889 A my sme hovorili o these-- použitie záhyby, filtre, lambda funkcie, 597 00:34:14,889 --> 00:34:19,429 mapované cez zoznamy na výrobu hodnoty v nejakom rozsahu 1 až r, r je 16, 598 00:34:19,429 --> 00:34:20,699 alebo 32 kroky v sekvenceru. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> A potom, či je hodnota v tomto zozname ako sme beh cez sekvenceru, 601 00:34:29,920 --> 00:34:34,190 beh cez to a cez nad, sa ukáže v takom prípade, 602 00:34:34,190 --> 00:34:36,060 a tento vzorka dostane spustená. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Tu sú všetky rôzne podivné spôsoby Prišiel som s generovať poznámky. 605 00:34:47,110 --> 00:34:48,940 Skúste to na vlastnú semifinále sumy. 606 00:34:48,940 --> 00:34:50,360 Bude to znieť v pohode. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Čas dovolí, pôjdeme cez to. 609 00:34:54,690 --> 00:34:59,200 Ale práve teraz, myslím, že by sme mali demo, čo máme. 610 00:34:59,200 --> 00:35:01,380 Dúfajme, že to ide 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čítať súbor Nazval som song.lhs, 614 00:35:09,121 --> 00:35:10,620 čo je súbor som vám ukázal. 615 00:35:10,620 --> 00:35:11,470 OK skvele. 616 00:35:11,470 --> 00:35:15,010 Ako povedal Connor skôr, skompilovaný, napíšte ju skontrolovať, 617 00:35:15,010 --> 00:35:18,380 takže môžem dýchať oveľa jednoduchšie. 618 00:35:18,380 --> 00:35:20,010 Nebude to vyhodiť do vzduchu na mňa. 619 00:35:20,010 --> 00:35:22,720 >> Chcel som vám ukázať niečo užitočného. 620 00:35:22,720 --> 00:35:25,900 Môžete vidieť, že modul načítaný nazýva 50. 621 00:35:25,900 --> 00:35:28,240 Môžete prechádzať tento modul. 622 00:35:28,240 --> 00:35:32,092 A to je tak pekné o tom, čo možno doing-- 623 00:35:32,092 --> 00:35:34,550 robíte v Haskell nie je volal vývoj software, 624 00:35:34,550 --> 00:35:36,980 ale môžete urobiť veľa zábavné veci na vlastnú päsť. 625 00:35:36,980 --> 00:35:42,410 A workflow je naozaj pekné as v porovnaní s mnohými iných jazykoch, 626 00:35:42,410 --> 00:35:45,872 pretože môžete vidieť v naozaj čitateľný spôsob, ako čo sa deje. 627 00:35:45,872 --> 00:35:47,830 Vidíme teda, že máme všetky tieto vety, ktoré 628 00:35:47,830 --> 00:35:53,760 sú zoznamy hudobných ihrísk, a potom sme stavať tieto sa do niečoho väčšieho, 629 00:35:53,760 --> 00:35:55,220 čo je hudobná skladba. 630 00:35:55,220 --> 00:35:58,450 Je to hudobný prehrávač. 631 00:35:58,450 --> 00:36:05,545 A potom to môžeme hrať všetky s funkciou tzv prehrávania hudby. 632 00:36:05,545 --> 00:36:09,040 Môžete vidieť, že tu dole. 633 00:36:09,040 --> 00:36:11,310 Čo je len hrať. 634 00:36:11,310 --> 00:36:15,040 >> Mal by som say-- som nemal hovoriť o Tento znak dolára, ktorý je všade. 635 00:36:15,040 --> 00:36:17,980 Znak dolára je ďalší uvádzaciu operátor. 636 00:36:17,980 --> 00:36:22,500 Ale to má najnižšiu prednosť ľubovoľného operátora, ktorý účinne 637 00:36:22,500 --> 00:36:24,960 znamená, že všetko, čo na ľavá strana sa znak dolára 638 00:36:24,960 --> 00:36:28,460 a právo na znak dolára, budeme dostať vyhodnotené pred ním. 639 00:36:28,460 --> 00:36:31,430 Takže je to niečo ako ďalší spôsob pridávania zátvorka. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: Je to v podstate skladanie funkcií. 642 00:36:36,220 --> 00:36:40,026 A to zaručuje, že vy, ak nie have-- Máte funkcie oboch stranách, alebo Infix 643 00:36:40,026 --> 00:36:42,900 operátori na oboch stranách, nebudú združovať cez neho a dá vám 644 00:36:42,900 --> 00:36:46,030 neočakávané výsledky. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Takže sme can-- pomocou ktorej môžeme zavolať. 646 00:36:49,790 --> 00:36:51,415 Po prvé, budeme hrať bez bubnov. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 To je vrtuľník, MIDI vrtuľník. 649 00:37:03,170 --> 00:37:05,495 >> [Prehrávanie hudby] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Tam je námestie 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 naozaj môžete ísť voľne žijúcich s tým. 655 00:37:27,630 --> 00:37:30,872 Vzal som celkom jednoduchý, pretože som vedel, že by som nemala odhryznúť 656 00:37:30,872 --> 00:37:31,830 viac, ako som mohol žuť. 657 00:37:31,830 --> 00:37:36,460 Len aby to celkom jednoduché ukázať hlavné myšlienky. 658 00:37:36,460 --> 00:37:39,952 Ale potom som bol rád, máme musím pridať nejaké bicie v tejto oblasti. 659 00:37:39,952 --> 00:37:41,910 Práve preto, že sa jedná o trochu nepreniknuteľný, 660 00:37:41,910 --> 00:37:45,790 a ja som nemal používať názov bicích častí, 661 00:37:45,790 --> 00:37:49,490 Aj mapované them-- preto, že sú časť tohto vymenovaného triedy, 662 00:37:49,490 --> 00:37:51,500 Mapovaná som ich ints. 663 00:37:51,500 --> 00:37:53,120 Jedným z nich je ako basový bubon. 664 00:37:53,120 --> 00:37:54,370 Nula je tiež. 665 00:37:54,370 --> 00:37:56,000 Sedem je vysoký klobúk. 666 00:37:56,000 --> 00:38:00,920 A v tú, kde sa Funkcie trochu viac náhodný, 667 00:38:00,920 --> 00:38:02,100 títo sú ako conga bubny. 668 00:38:02,100 --> 00:38:08,360 >> Takže ak si myslíte, about-- možná zábavný spôsob, ako realizovať bicie automat 669 00:38:08,360 --> 00:38:12,830 je použitie veľmi usmernený vzory na vašom basový bubon. 670 00:38:12,830 --> 00:38:17,640 Tak napríklad, na filtrovanie cez Zoznam so všetkým, čo dáva späť 671 00:38:17,640 --> 00:38:20,590 1 keď je to vziať modul 04. 672 00:38:20,590 --> 00:38:27,190 Tak som si 1, 5, 9, 13, 17-- takže to je prvý poraziť každého opatrenia. 673 00:38:27,190 --> 00:38:32,860 >> A potom je to rovnaké vec posunula v dvoch krokoch. 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 bolo niečo ako vysoké klobúk. 676 00:38:37,480 --> 00:38:39,640 A tu opäť, dole, je to trochu náhodný, 677 00:38:39,640 --> 00:38:41,080 pretože robíme Conga bubny. 678 00:38:41,080 --> 00:38:44,180 A ja mám nejaké maracas tady taky. 679 00:38:44,180 --> 00:38:50,280 >> Takže som mohol zavolať hrať bicie automat, ale to by trvať večne, 680 00:38:50,280 --> 00:38:53,700 a to by mohlo začať schmatol celá pamäť v mojom systéme. 681 00:38:53,700 --> 00:38:57,090 Takže ja zavolám túto funkciu prehrávať hudbu, ktorá, ako uvidíme, 682 00:38:57,090 --> 00:39:02,020 použite skracovanie paralelné zloženie hrať našu malú Frere Jacques pieseň 683 00:39:02,020 --> 00:39:04,200 spolu s tejto podivné automatom. 684 00:39:04,200 --> 00:39:06,190 Takže poďme sa pozrieť. 685 00:39:06,190 --> 00:39:10,920 A prosím ťa, zlepšenie na mojom Usporiadanie všetkých bubnových častí. 686 00:39:10,920 --> 00:39:13,375 Nie moja špecialita, ale ja Mal veľa zábavy robiť to. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Prehrávanie hudby] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Tak samozrejme, je to všetko trochu nie ako zábavu 691 00:39:56,980 --> 00:40:01,100 keď nemôžeme previesť na skóre, takže možno to 692 00:40:01,100 --> 00:40:04,650 by mohla byť vykladaná ľudským umelec. 693 00:40:04,650 --> 00:40:06,535 Tak som sa nebude pracovať tu. 694 00:40:06,535 --> 00:40:07,910 Už som generované súbory. 695 00:40:07,910 --> 00:40:10,280 Môžete vidieť, že je tu dot LilyPond file-- a to 696 00:40:10,280 --> 00:40:14,500 bude môj segue sa k Connor-- a súbor bodka MIDI, 697 00:40:14,500 --> 00:40:18,610 a súbor bodka PDF, čo je to, čo LilyPond nakoniec generovať. 698 00:40:18,610 --> 00:40:23,770 >> Ale to sú tie skripty, a budem stačí spustiť je s ich možnosťami pomocníka. 699 00:40:23,770 --> 00:40:28,090 Ak sa vám tieto hore a beží s Euterpea, môžete vygenerovať súbor MIDI. 700 00:40:28,090 --> 00:40:31,160 A potom z MIDI súboru s týmto programom MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 môžete vygenerovať Lily Rybník súbor, a potom 702 00:40:34,930 --> 00:40:37,974 môžu generovať vo formáte PDF skóre. 703 00:40:37,974 --> 00:40:39,390 A mali by sme sa pozrieť na toto. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Takže Connor bude pravdepodobne ukáže , Ako anotácie lepšie, 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 len v C. Mal som prišiel out čo hack to je vlastne v. 708 00:41:07,300 --> 00:41:11,090 Ale to je pre potrubie ako to robíte, že s tým. 709 00:41:11,090 --> 00:41:12,950 Poďme hovoriť viac o LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Poďme sa pozrieť. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Zmienila ste sa dozviete Vy Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Ach jo. 714 00:41:22,460 --> 00:41:23,480 Pozrite sa na Naučte You Haskell. 715 00:41:23,480 --> 00:41:24,410 Je to v zdrojoch. 716 00:41:24,410 --> 00:41:26,830 To je, ako som začal učenia, a je to skvelé. 717 00:41:26,830 --> 00:41:27,580 Nie je hlúpy učenia. 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 chlapík menom [nepočuteľných] learnyouahaskell.com, žiadne medzery. 720 00:41:34,760 --> 00:41:37,065 Gramatika je chorý. 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, čo je LilyPond? 723 00:41:39,440 --> 00:41:42,480 Je to deklaratívne programovanie jazyka k Music sadzbu. 724 00:41:42,480 --> 00:41:45,480 Takže declarative-- môžete myslieť na veci, ako je HTML, 725 00:41:45,480 --> 00:41:50,900 kde nie ste saying-- HTML nehovorí, ako sa webové prehliadače by mali 726 00:41:50,900 --> 00:41:52,180 vykreslenie stránky krok za krokom. 727 00:41:52,180 --> 00:41:54,096 Je to len, že to hovorím je textový popis 728 00:41:54,096 --> 00:41:56,100 o tom, čo chcete, aby stránky vyzerať. 729 00:41:56,100 --> 00:41:59,310 >> A potom je to tiež program ktorý prekladá tento jazyk, 730 00:41:59,310 --> 00:42:02,300 alebo si prečítajte jeho, a potom vlastne robí sadzbu pre vás, 731 00:42:02,300 --> 00:42:05,570 a to vypľuje títo nádherné vyzerajúce skóre PDF. 732 00:42:05,570 --> 00:42:08,250 Môžete tiež získať vo formáte PNG alebo čokoľvek iného. 733 00:42:08,250 --> 00:42:10,300 Dobrým spôsobom, ako myslieť toho je, obdobne 734 00:42:10,300 --> 00:42:16,620 je, že LaTeX je niečo ako LillyPond, ale len pre obyčajné sadzbu. 735 00:42:16,620 --> 00:42:20,360 Takže namiesto toho, of-- to nie je WYSIWYG to, čo vidíte 736 00:42:20,360 --> 00:42:22,960 Je to, čo dostanete, rovnako ako, povedzme Finale je, alebo Sibelius, 737 00:42:22,960 --> 00:42:27,430 alebo Microsoft Word, kde môžete zadať v reálnom čase a návrhy veci v reálnom čase 738 00:42:27,430 --> 00:42:31,340 a vidieť zmeny okamžite. 739 00:42:31,340 --> 00:42:32,140 >> Je založená textu. 740 00:42:32,140 --> 00:42:35,290 Musíte kompilovať skóre pomocou osobitný program 741 00:42:35,290 --> 00:42:37,090 a dostať sa von PDF neskôr. 742 00:42:37,090 --> 00:42:43,320 To je o niečo menej vhodný na použitie, ak ste 743 00:42:43,320 --> 00:42:46,520 snaží písať priamo do skóre a vy ste 744 00:42:46,520 --> 00:42:48,620 sa snaží skladať na počítači. 745 00:42:48,620 --> 00:42:50,830 Ale existuje veľa výhod pre neho. 746 00:42:50,830 --> 00:42:56,110 Raz, to vyzerá oveľa krajší, pretože LillyPond môže v skutočnosti 747 00:42:56,110 --> 00:42:58,210 mať čas na to rozvrhnutie rozhodnutie správne, 748 00:42:58,210 --> 00:43:02,380 Na rozdiel od Sibelius alebo Finale, ktoré majú aby sa tak ohrozená algoritmy 749 00:43:02,380 --> 00:43:05,020 že sa môžu zobrazovať veci v reálnom čase. 750 00:43:05,020 --> 00:43:07,660 >> Tak prečo je LilyPond-- počítačová grafika je ťažké. 751 00:43:07,660 --> 00:43:10,535 Ak robíte čokoľvek s hudbou a chcete vypísať skóre, 752 00:43:10,535 --> 00:43:13,900 nechcete písať out všetko sami: 753 00:43:13,900 --> 00:43:19,040 počnúc ako kresliť štáby a ako kresliť poznámkové bloky. 754 00:43:19,040 --> 00:43:21,020 Je veľmi ťažké. Bolo to predtým. 755 00:43:21,020 --> 00:43:22,170 Si v poriadku. 756 00:43:22,170 --> 00:43:26,200 >> Ak chcete používať Finale alebo Sibelius, formáty súborov pre tie veci, 757 00:43:26,200 --> 00:43:30,180 sú veľmi komplikované, a nemôžete Naozaj používať programovo. 758 00:43:30,180 --> 00:43:35,020 Môžete otvoriť Sibelius s Finale a prejdite na Súbor, Export ako PDF sami, 759 00:43:35,020 --> 00:43:37,600 ale môžete naozaj volať, že zo skriptu. 760 00:43:37,600 --> 00:43:40,440 LillyPond, môžete volať z týchto skriptov. 761 00:43:40,440 --> 00:43:44,397 Dalo by sa ľahko opakovať LillyPond s LaTeXu. 762 00:43:44,397 --> 00:43:47,230 Nebudem mať toľko času ísť do týchto technológií práve teraz, 763 00:43:47,230 --> 00:43:48,321 ale, že existujú. 764 00:43:48,321 --> 00:43:50,070 Ak sa chcete pozrieť do LillyPond knihy, 765 00:43:50,070 --> 00:43:53,760 je to program, ktorý je dodávaný s vaše distribúcie LillyPond, 766 00:43:53,760 --> 00:43:57,030 a je to pre iterácii LillyPond fragmenty do LaTeXu 767 00:43:57,030 --> 00:44:00,340 Ak chcete urobiť niečo ako veľký Musicology dokumente 768 00:44:00,340 --> 00:44:02,289 s príkladmi, napríklad. 769 00:44:02,289 --> 00:44:04,580 A je to dobrý skill pre Život ak robíte niečo 770 00:44:04,580 --> 00:44:05,770 s hudbou, nie len CS50. 771 00:44:05,770 --> 00:44:09,320 Použil som LillyPond pre všetky mojich zloženie projektov 772 00:44:09,320 --> 00:44:11,880 pretože som bol v podstate senior na strednej škole. 773 00:44:11,880 --> 00:44:13,455 >> Tak tu je pár jednoduchých príkladov. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 To je v podstate reprezentatívny úrovne obtiažnosti 776 00:44:21,060 --> 00:44:23,481 že väčšina ľudí by tvária, že sa snažili 777 00:44:23,481 --> 00:44:24,980 používať LilyPond pre jednoduché projekty. 778 00:44:24,980 --> 00:44:29,519 Prvý z nich je začiatok na chorál predohru Bach. 779 00:44:29,519 --> 00:44:31,810 To dno jeden je výňatok od jedného z mojich vlastných prác, 780 00:44:31,810 --> 00:44:34,650 a je to len tam ukázať vám veci, ako je [nepočuteľných] 781 00:44:34,650 --> 00:44:38,550 uvedenie viac riadkov v rovnakom personál, ako lyrická undersetting funguje. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Lyrické podložky sú vec, ktorá je veľmi jednoduché použitie lilypond pre zborové hudby. 784 00:44:46,110 --> 00:44:48,814 >> A tak potom je tu viac Zložitejšie príklady tu. 785 00:44:48,814 --> 00:44:50,980 Všetky tieto sú vykonávané v LilyPond a sú uskutočniteľné. 786 00:44:50,980 --> 00:44:55,280 Prvý úryvok je z [Nepočuteľný] podľa [nepočuteľných]. 787 00:44:55,280 --> 00:44:58,860 A toto [nepočuteľných] z kus pre sólový bas 788 00:44:58,860 --> 00:45:03,550 flauta podľa [nepočuteľných], ktorý je longtime-- ktorý 789 00:45:03,550 --> 00:45:07,101 Bol dlhoročným členom hudobné oddelenie tu, myslím. 790 00:45:07,101 --> 00:45:08,600 Nie som si istý, kde on odišiel do. 791 00:45:08,600 --> 00:45:12,410 Ale on bol poradcom Harvarde Skladatelia Association po dlhú dobu. 792 00:45:12,410 --> 00:45:13,530 Báječný človek. 793 00:45:13,530 --> 00:45:16,920 A píše hudbu, ktorá má veľmi komplikovaný zápis že LillyPond 794 00:45:16,920 --> 00:45:20,500 možno však zvládnuť veľmi pekne. 795 00:45:20,500 --> 00:45:26,030 >> Takže len, aby vám zmysel toho, čo schopnosti tá vec je tak are-- 796 00:45:26,030 --> 00:45:28,960 internals LillyPond sú veľmi komplikované. 797 00:45:28,960 --> 00:45:31,060 A môžete použiť pre dlhá doba, vrátane 798 00:45:31,060 --> 00:45:32,520 pre niektoré celkom zložité veci, bez skutočne 799 00:45:32,520 --> 00:45:34,060 museli vedieť veľa o nich. 800 00:45:34,060 --> 00:45:38,720 Ale základnou myšlienkou je, že na Najnižšiu úroveň, atómy LillyPonds 801 00:45:38,720 --> 00:45:39,970 sú 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ásade zodpovedá 804 00:45:44,510 --> 00:45:47,410 na jeden riadok polyfónia. 805 00:45:47,410 --> 00:45:49,410 A potom kontext môže byť obsahoval hierarchicky 806 00:45:49,410 --> 00:45:53,590 vo vyšších tie úrovne, ktoré predstavujú štáby na skóre 807 00:45:53,590 --> 00:45:56,750 alebo väčšie zoskupenia, ako je piano štáby alebo zbor štáby, 808 00:45:56,750 --> 00:45:58,990 a potom nakoniec Celý skóre kontexty. 809 00:45:58,990 --> 00:46:02,260 A môžete skutočne zahŕňať viac skóre v knihe. 810 00:46:02,260 --> 00:46:05,770 >> A každý kontext má počet pripojených rytcov. 811 00:46:05,770 --> 00:46:08,340 Ak sa pozriete prostredníctvom Obsah kontextu 812 00:46:08,340 --> 00:46:14,410 a vytlačiť určitý symbol alebo Určitá trieda symbolov podľa potreby. 813 00:46:14,410 --> 00:46:17,840 Tak, aby každý hlasový súvislosti tam je [nepočuteľných] poznámky 814 00:46:17,840 --> 00:46:24,270 Rytec, že ​​je v podstate funkcie alebo objekt, ktorý vypíše všetky poznámky 815 00:46:24,270 --> 00:46:26,290 hlavy na pravej časti stránky. 816 00:46:26,290 --> 00:46:29,510 Potom je tu trhlina rytec, ktorý píše sa rázštepy na zamestnancov. 817 00:46:29,510 --> 00:46:31,517 Potom je tu metronóm Značka rytec, že 818 00:46:31,517 --> 00:46:33,100 vypíše metronóm stopy v skóre. 819 00:46:33,100 --> 00:46:36,410 A všetky tieto zmestili pekne dobre do hierarchie. 820 00:46:36,410 --> 00:46:39,500 A je to veľmi, veľmi, veľmi prispôsobiteľné, ktorý budete potrebovať 821 00:46:39,500 --> 00:46:42,880 ak chcete získať také veci. 822 00:46:42,880 --> 00:46:45,730 >> Takže všetky kontexty majú mnoho rôznych atribútov 823 00:46:45,730 --> 00:46:52,410 že môžete zmeniť všetko z odstupu k rôznym písmo 824 00:46:52,410 --> 00:46:54,942 výberu, aby veľkosťou vecí. 825 00:46:54,942 --> 00:46:56,900 Ak si chcete urobiť ešte zložitejšie veci, 826 00:46:56,900 --> 00:46:59,210 tam je vstavaný skriptovací jazyk. 827 00:46:59,210 --> 00:47:01,820 Oni používajú schému, ktoré je dialekt LISP. 828 00:47:01,820 --> 00:47:04,960 Tie pravdepodobne nie ti niečo. 829 00:47:04,960 --> 00:47:06,900 Ale v podstate, schéma ďalšie funkčné 830 00:47:06,900 --> 00:47:09,500 programovací jazyk, viac alebo menej. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: viazanka-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, povedal by som. 834 00:47:15,390 --> 00:47:20,150 A to je používané ako vyučovacím jazykom, v skutočnosti, dole Mass Ave. Na MIT. 835 00:47:20,150 --> 00:47:26,590 A to je veľmi užitočné pre LillyPond z rôznych technických dôvodov. 836 00:47:26,590 --> 00:47:30,317 >> A tak, ak chcete, aby jednoduchý vylepší závislé na conditionals, 837 00:47:30,317 --> 00:47:32,900 pre example-- tam je isté stav skóre, ktoré je splnená, 838 00:47:32,900 --> 00:47:36,495 vykonávať zmeny usporiadanie alebo whatnot-- potom 839 00:47:36,495 --> 00:47:37,620 Tieto zariadenia sú tam. 840 00:47:37,620 --> 00:47:38,667 Sú to zložité. 841 00:47:38,667 --> 00:47:40,250 Tak tu je celkom jednoduchý ukážkový kód. 842 00:47:40,250 --> 00:47:43,810 Je to päť riadkov. 843 00:47:43,810 --> 00:47:46,120 V podstate, ja definovať dve palice. 844 00:47:46,120 --> 00:47:46,904 Je to v 3/4. 845 00:47:46,904 --> 00:47:48,695 Prvý zamestnanci má pripojený tempo značka, 846 00:47:48,695 --> 00:47:51,110 ale to je v skutočnosti deje Pre prechod na celej partitúry, 847 00:47:51,110 --> 00:47:54,960 pretože tempa značiek sú na úrovni skóre. 848 00:47:54,960 --> 00:47:59,044 Metronóm značka rytec je pripojený ku skóre kontext. 849 00:47:59,044 --> 00:48:01,460 K dispozícii sú rôzne kľúče, pretože [nepočuteľných] rytca 850 00:48:01,460 --> 00:48:02,710 je pripojený štáby. 851 00:48:02,710 --> 00:48:04,441 Môžete si skutočne urobiť, je. 852 00:48:04,441 --> 00:48:06,190 Vzorka som napísal, je vlastne v C dur, 853 00:48:06,190 --> 00:48:07,990 ale je to len preto, aby demonštrovať môžete mať 854 00:48:07,990 --> 00:48:09,570 rôzne kľúče v rôznych štábov. 855 00:48:09,570 --> 00:48:15,710 A Základné syntax je píšete na vedomie, mená s E, F, G, čokoľvek. 856 00:48:15,710 --> 00:48:18,910 Ak si chcete urobiť posuvek, vy prípona je alebo ES. 857 00:48:18,910 --> 00:48:22,640 To je z holandského muzikologického konvencie. 858 00:48:22,640 --> 00:48:28,290 >> A k tomu oktávy skoky, budete musieť použiť Tieto dieliky, čiarky alebo apostrof. 859 00:48:28,290 --> 00:48:30,580 Relatívna jednoducho znamená, čo máte na vedomie, 860 00:48:30,580 --> 00:48:34,080 bude automaticky plaec v oktávy najbližšie k predchádzajúcej. 861 00:48:34,080 --> 00:48:37,624 A ak si chcete skočiť viac ako fifth-- hovoria piatom či dokonca more-- 862 00:48:37,624 --> 00:48:39,165 potom budete musieť použiť [nepočuteľných]. 863 00:48:39,165 --> 00:48:42,580 Ale inak, nemusíte sa špecifikovať oktávu každú notu. 864 00:48:42,580 --> 00:48:46,130 >> A relatívna C, prime a C, stačí zadať stred C 865 00:48:46,130 --> 00:48:48,630 a základné C, najmä prvé tóny. 866 00:48:48,630 --> 00:48:55,020 Potom budete mať tieto štáby, ktoré organizujú tieto dva hlasy alebo 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 vyzerá takto. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Ak chcete mať čas na kopírovať, že vzorka LillyPond 871 00:49:05,380 --> 00:49:07,530 kód na predchádzajúcu kĺzať dolu tu, a vy 872 00:49:07,530 --> 00:49:09,030 Môžete napísať to pre LillyPond sami. 873 00:49:09,030 --> 00:49:11,280 Viem, že sme niečo ktorá vyzerá veľa ako je tento. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Takže je tu ďalšie technológie volal Music XML zachované 876 00:49:19,610 --> 00:49:22,030 úplne inými ľuďmi. 877 00:49:22,030 --> 00:49:28,150 XML je textové dáta structure-- I nemal hovoriť údaje structure-- hovoria 878 00:49:28,150 --> 00:49:29,580 mapa metafora druh. 879 00:49:29,580 --> 00:49:33,800 A to je navrhnutý tak, aby držanie hierarchických dát veľmi dobre. 880 00:49:33,800 --> 00:49:37,050 HTML, napríklad, je typ XML. 881 00:49:37,050 --> 00:49:41,090 A môžete povedať, XML, pretože boli všetky ostré zátvorky a uhol 882 00:49:41,090 --> 00:49:44,700 držiak lomky ktoré ukazujú, dátových polí. 883 00:49:44,700 --> 00:49:47,390 >> Nemám kód príklad z Music XML. 884 00:49:47,390 --> 00:49:50,450 Môžete ho nájsť sami. 885 00:49:50,450 --> 00:49:53,735 V podstate, dôvod, prečo by ste mohli chcieť používať XML ako medzistupne 886 00:49:53,735 --> 00:49:55,980 je v prvom rade je to výmenný formát 887 00:49:55,980 --> 00:50:02,301 pre v podstate every-- by som nepovedal každý, ale dosť odlišné skóre 888 00:50:02,301 --> 00:50:02,800 spisovatelia. 889 00:50:02,800 --> 00:50:04,966 Takže ak píšete v hudbe XML, a to nielen môže LillyPond 890 00:50:04,966 --> 00:50:08,080 prečítajte si to s pomocou tohto Prídavné program s názvom Music XML do LY, 891 00:50:08,080 --> 00:50:11,360 ale tiež Finale môžete prečítať to, Sibelius ho prečítať. 892 00:50:11,360 --> 00:50:14,770 V závislosti na tom, ako vo vnútornej objekt hierarchie pracuje pre reprezentovať hudbu, 893 00:50:14,770 --> 00:50:18,820 to by mohlo byť jednoduchšie vypísať Hudobné XML ako k LillyPond 894 00:50:18,820 --> 00:50:22,410 a len spoliehať na hudbu XML do LY robiť konverzie. 895 00:50:22,410 --> 00:50:24,282 >> Nemyslím si, že [nepočuteľný] má hudobný XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: to nie je. 897 00:50:25,490 --> 00:50:26,340 Niekto pracuje na tom, hoci. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea nie je vybavený Výstupné funkcie ešte Music XML. 900 00:50:31,040 --> 00:50:35,340 Ak chcete konečnej nápad na projekt, Možno, že dostať do kontaktu s mužmi 901 00:50:35,340 --> 00:50:38,620 že Stephen vie, a oni mohli použiť vašu pomoc. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Rád by som to. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Tiež, v podstate, každý programovacie jazyky 904 00:50:43,450 --> 00:50:46,610 že to stojí za jeho soli už má knižnicu XML, 905 00:50:46,610 --> 00:50:51,030 takže môžete interne previesť všetky vašej hudby do nejaký predmet 906 00:50:51,030 --> 00:50:54,120 že knižnica XML môže písať na to, že by vyžadoval menej 907 00:50:54,120 --> 00:50:57,470 zmeny na váš vnútornej štruktúry čokoľvek, čo môžete hudobné objekty 908 00:50:57,470 --> 00:51:00,310 chcete napísať, ako písanie priamo v LillyPond by. 909 00:51:00,310 --> 00:51:04,380 Potom už stačí len vytlačiť s XML s XML knižnice v slovenčine, 910 00:51:04,380 --> 00:51:07,260 , Ktorá zaručí, že je to syntakticky správne a všetko, 911 00:51:07,260 --> 00:51:08,720 a potom ju previesť na LillyPond. 912 00:51:08,720 --> 00:51:11,060 Takže technológia budete chcieť pozrieť do ak robíte niečo, 913 00:51:11,060 --> 00:51:11,650 ako toto. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Nepočuteľný], ďalší auxilarry technológie. 916 00:51:16,370 --> 00:51:21,700 To je v podstate Tech Works alebo Tech Studio pre LillyPond. 917 00:51:21,700 --> 00:51:25,380 Tak to ponúka pomoc s syntax, so šablónami 918 00:51:25,380 --> 00:51:28,770 pre rôzne bežné kombinácia nástrojov. 919 00:51:28,770 --> 00:51:32,780 To umožňuje prezeranie tak rozdelená obrazovka môžete mať svoj kód v jednom okne 920 00:51:32,780 --> 00:51:37,350 a PDF v inom okne a kliknite na miestach v PDF 921 00:51:37,350 --> 00:51:40,650 prejsť na príslušné škvrny v zdrojovom kóde. 922 00:51:40,650 --> 00:51:45,330 To je oveľa užitočnejšie, ak ste naozaj písanie LillyPond súbory sami 923 00:51:45,330 --> 00:51:47,400 ako keď ste generovanie je programovo. 924 00:51:47,400 --> 00:51:51,230 Ale na druhú stranu, je to niečo užitočné mať. 925 00:51:51,230 --> 00:51:51,970 >> Skvelé. 926 00:51:51,970 --> 00:51:55,860 Ďalšie resources-- budem prejsť to veľmi rýchlo. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond má Vynikajúca dokumentácia na svojich internetových stránkach. 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 fragmentov pre rôzne drobnosti 931 00:52:07,010 --> 00:52:09,930 yo môže byť potrebné urobiť, aby preukázať rôzne schopnosti. 932 00:52:09,930 --> 00:52:12,250 Ak chcete použiť skriptovací jazyk 933 00:52:12,250 --> 00:52:14,740 alebo vykonať rozsiahlejšie prispôsobenie, potom je tu 934 00:52:14,740 --> 00:52:16,730 vnútorné zariadenie odkazovať na tejto adrese URL. 935 00:52:16,730 --> 00:52:21,950 Ak chcete použiť Music XML, je tu že URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> A potom, ak budete musieť naučiť systému preto, že ste vlastne chcete použiť 937 00:52:27,960 --> 00:52:30,960 skriptovací zariadenia v LillyPond, potom je tu [nepočuteľných] nazvaný 938 00:52:30,960 --> 00:52:32,918 Štruktúrované Tlmočenie počítačových programov, 939 00:52:32,918 --> 00:52:35,820 ktorá je nielen druhým Najväčšie SK učebnice vôbec written-- 940 00:52:35,820 --> 00:52:39,770 nájsť mi potom, ak chcete vedieť, čo si myslím Najväčší jednu je-- 941 00:52:39,770 --> 00:52:43,580 ale je to tiež veľmi dobrý Úvod do jazyka správne. 942 00:52:43,580 --> 00:52:46,630 Nebudete potrebovať viac ako niekoľko prvých profily. 943 00:52:46,630 --> 00:52:47,827 >> A to je všetko. 944 00:52:47,827 --> 00:52:48,410 Nejaké otázky? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> STUDENT: Kde môžem stiahnuť Váš generované Frere Jacques 947 00:52:57,972 --> 00:53:01,050 tak som si dal to na môj iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: No, môžete písať out na niektoré wav súbor 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 Vytvorte si vlastné variácie Frere Jacques by CS50 myseľ úľa. 952 00:53:15,590 --> 00:53:17,095 To by bolo skvelé. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: niekto? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Potrebujeme lepší basový bubon, taky. 955 00:53:20,261 --> 00:53:21,935 Je to naozaj zlé. 956 00:53:21,935 --> 00:53:26,565 >> STUDENT: Euterpea má nielen zloženie strane, ale signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Áno. 958 00:53:27,440 --> 00:53:30,100 V skutočnosti, sa práca I robil, keď som 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žíva to-- bol na syntézu zvuku. 961 00:53:35,900 --> 00:53:39,810 Takže tam je naozaj príjemný spôsob, ako pomocou šípok 962 00:53:39,810 --> 00:53:46,150 a niektoré z notácie sme videli z skladanie dohromady signálne funkcie. 963 00:53:46,150 --> 00:53:50,610 Najmä basy pre väčšinu z nich je len jednoduchý sínusoida. 964 00:53:50,610 --> 00:53:54,240 Ale ak začnete skladať tie v podivné programovej spôsoby, 965 00:53:54,240 --> 00:54:00,010 môžete získať šialený zvuk efekty, ako podivných kaskádami. 966 00:54:00,010 --> 00:54:04,640 Môžete vytvoriť veľmi odvážny zvuky s množstvom modulácie. 967 00:54:04,640 --> 00:54:07,730 >> Urobil som projekt na granulované syntéza, ktorá je 968 00:54:07,730 --> 00:54:12,290 niekde medzi FM a odberu vzoriek. 969 00:54:12,290 --> 00:54:15,230 Budete mať veľmi malý, malé vzorky, a potom 970 00:54:15,230 --> 00:54:20,440 kombinovať ich s nejakým druhom modulátor a vybudovať bohatší zvuk. 971 00:54:20,440 --> 00:54:24,900 Tiež sme fyzikálne modelovanie, tak sa snažia premýšľať o fyzike 972 00:54:24,900 --> 00:54:29,410 a psychoakustiky niečo ako trúbka, a premýšľať o tom, ako 973 00:54:29,410 --> 00:54:32,320 zvuk je odráža od zvon poľnice 974 00:54:32,320 --> 00:54:35,200 a akustika miestnosť a modelovanie 975 00:54:35,200 --> 00:54:40,195 že sa základnými oscilátorov. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Vďaka moc. 978 00:54:48,940 --> 00:54:50,140 Vďaka za príchod. 979 00:54:50,140 --> 00:54:52,400 A ja som vždy ochotný trvať otázky podľ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: Jo. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Super. 984 00:55:00,360 --> 00:55:01,667