CONNOR HARRIS: Ahoj. Som Connor Harris. Som CS50 CA na Harvarde. STEPHEN KREWSON: Ja som Stephen Krewson. Som TF pre CS50 na Yale. CONNOR HARRIS: A budeme hovoriť o niektorých technológií, ktoré by ste mohli chcete použiť, ak máte záujem v tom záverečný projekt alebo naozaj čokoľvek s hudbou. Budeme so zameraním na Najskôr programovací jazyk nazvaný Haskell. Je to funkčné jazyk, takže paradigma je veľmi odlišný od C alebo PHP alebo z iných naliehavých jazyky že ste použili už, a to najmä na knižnice napísané v jazyku Haskell volal Euterpea, ktoré môžu pomôcť ľuďom s písaním hudby funkčne, v podstate. A Stephen budú chodiť vás cez skvelý príklad toho, že. Po tomto, budem vám predstaviť niečo, čo nazýva LillyPond, ktorý je technológia pre sadzbu hudbu. Je to niečo ako LaTeXu pre hudbu, ak niekto z vás Použili LaTeX pre matematické triedy, alebo ostatné P set triedy alebo to, čo ťa mať. A tak som ťa dať, znova, niekoľko jednoduchých príkladov, ktoré a bod, ktorý v všeobecné Smer niektorých lepších zdrojov. STEPHEN KREWSON: V Okrem toho, že sme si mysleli by byť v pohode nastaviť trochu rád smerom k potrubia medzi Euterpea generované MIDI súbory v LillyPond, takže zabezpečujeme nejaký návod na skriptoch k tomu, že sú opatrený LillyPond Len aby to open source a získať potrubie deje. CONNOR HARRIS: Opäť, mali by sme zdôrazniť, tieto dve technológie, vy Nemusíte ich používať dohromady. Oni nie sú určené pre prácu spolu, hoci oni predsa veľmi pekne. STEPHEN KREWSON: Správne. A úplne zadarmo. CONNOR HARRIS: So poďakovanie, len čítať, že. STEPHEN KREWSON: Riadne poznamenal. Vďaka týmto ľudí. To budem prodleva na len na chvíľu. Proces inštalácie je trochu zložitejšie. Máme ma prečítať na GitHub že môžete sa pozrieť na. Len mi e-mail, ak máte nejaké otázky. Ale my spustiť to za predpokladu, že to funguje pre všetkých. CONNOR HARRIS: A ak si nemôžete dostať sa LillyPond do práce, žiadny veľký problém. Neexistuje žiadna živá kompilácie, že sa bude podieľať, aspoň z mojej strany. STEPHEN KREWSON: Haskell a LillyPond by obaja majú inštalátory. Euterpea sa stiahne ako balíček, tak ďalej a tak ďalej. Takže hovoríme o počítačovej hudby. A to je len Veľmi pohľad 50.000 stôp. K dispozícii je niekoľko rôznych aspektov toho. A to je hrubý a je ísť zatemniť nejaký detail. Ale mohli by sme niečo vymyslieť ako algoritmické zloženie, pomocou algoritmov, pomocou kódu, pre generovanie nejaký typ of-- možná self-podobný sled tónov, alebo možno poznámky pod nejakým obmedzeniam. A potom tie, ktoré by mohli byť vykonaný alebo interpretované s analógových prístrojov alebo niečo také. Avšak zmes vykonáva algoritmickým. Ale samozrejme, možno oblasť Počítač hudbu alebo digitálnej hudby sme bližšie zoznámiť s je digitálny zvukovej syntézy alebo digitálny vzorkovania a digitálny záznam. Mnoho digitálnych prístrojov sú vykonáva prostredníctvom digitálneho vzorkovania. V skutočnosti, budeme pomocou jedného z tých v forma zvukového knižnice písma neskôr. Ale je tu tiež niečo volal digitálne syntéza, že vyšiel z konca 70. rokov, a do 80. rokov sa Yamaha a John Chowning na Stanforde robí syntézu FM alebo Frequency Modulation syntéza, kde ste mali dopravcu signálu a modulačné signál a to ako v zvukového spektra. Ale to, čo sa zameriavame na dnes je niečo, čo nazýva MIDI, a samozrejme, algoritmické zloženie. Nebudeme robiť nástroje, ale budeme namiesto toho chystá urobiť nejakú hudbu, a potom to dostane interpretovaný niektorými nástrojmi, ktoré sú konformné k Štandardné General MIDI. Takže to, čo je MIDI? Nebudem sa dostať príliš hlboko do nej, ale MIDI je prenos dát protokol. Je to akýsi sprievodca naprieč rôzne firmy a odvetvia pre organizovanie zvukov alebo opravy. Tak uvidíme, že tam je štandardný MIDI pre všetky rôzne bicie zvuky a odporúčania MIDI pre všetky rôzne typy synth, alebo rôzne typy všetkých nástroje skupiny v orchestri, hovoria. Vy ste pravdepodobne oboznámení s 0 až 127 MIDI správy. MIDI signál je typicky jeden bit s uvedením či už je to dát alebo stav paket, a potom je tu sedem bitov signálu. A tie môžu kontrolovať všetko z objemu na akciu alebo tlaku na konkrétny kľúč ak si vediete s MIDI regulátora, ako aj, samozrejme, poznámky. A samozrejme, MIDI má Bol veľmi užitočné, pretože je to spôsob, ako drôt spoločne alebo sedmokráska reťaz banda hardvérových zariadení MIDI. Mám sedem alebo osem späť v mojom dome. To dostane naozaj zložité, ale je to naozaj silný. A je to naozaj starý. To je od začiatku 80. rokov, a je to naozaj pekné a malý. CONNOR HARRIS: Jo. Všetky klasické Nintendo video hry by pravdepodobne majú MIDI súbory pre hudbu, napríklad. STEPHEN KREWSON: Tu je Príkladom General MIDI, ukazujúci midi ako druh všeobecného protokolu. A myslím, že môžeme myslieť na Rozdiel medzi špecifikáciu že by mal byť niečo ako Tieto zvuky nástrojov a skutočnou realizácia týchto nástrojov zvukov v zdravom písmom alebo na konkrétne MIDI syntetizátor ako rozdiel Medzi možno aj typeface-- ktorý hovorí, Všeobecne, toto je návrh tento konkrétny spôsob, ako reprezentovať characters-- a konkrétne písmo že má špecifickú veľkosť a zafarbenie, a tam je realizácia the-- CONNOR HARRIS: Možno lepšie porovnanie by byť štandard Unicode says-- dáva číslo na každý znak, a naozaj každý jazyk na svete, alebo obrovská sada skriptov jazyka vo svete, a potom to sú poskytnutý do niečoho grafický rôznymi balíčky písiem. A samozrejme, môžete si myslíte, MIDI ako Unicode zvuku. A je to len zoznam of-- veľký prúd akcií a nástrojov a ktovie čo ešte, a musíte mať samostatný Program, ako písmo, k tomu, že do niečo, čo je počuť. STEPHEN KREWSON: Tak prečo Haskell? Haskell je funkcionálne programovanie jazyka, veľmi pokročilý, veľmi odlišný od C, veľmi odlišný od PHP. A budeme vidieť, že je tu jednoduchosť skladanie funkcií v Haskell že nám umožní vánok prostredníctvom skladanie alebo písanie hore, prepis, niečo ako Frere Jacques, tento jednoduchý pieseň, ktorá má mnoho dielov v tom, že sú self-podobný alebo opakovanie. Takže to bude niektorá motivácia, prečo sme pomocou Haskell, v ktorom Funkcie sú občania prvej triedy. A ja som chcel predĺžiť to trochu. Je to trochu ľahké nota Frere Jacques v Haskell. Ale čo keď sme chceli pridať časť bubna na to? Čo keby sme chceli snažiť, aby niečo ako Roland 808 alebo 909 bubna Stroj kde musíte asi 16 rôzne kroky? Zvyčajne sa jedná o myšlienka ako 16. poznámky. A môžete ovládať globálnej tempo, a môžete si vybrať veľa rôznych bicích častí z basový bubon, tlieskať, rôzne Snares, otvorené a uzavreté vysokými klobúky na tieto druh kanálov, a potom môžete EQ, alebo prispôsobiť ich objemu. A uvidíme pekný cestu Haskell reprezentovať tento krok sekvencer so všetkými rôzne chladné veci v Haskell môžeme robiť s generovaním zoznamy a filtrovanie cez zoznamov, mapovanie nad zoznamy, mapovanie funkcie, ktoré zoznamy. A rýchla ospravedlnenie. Jedná sa o veľmi povrchné a príliš rýchla skica niektorých aspektov Haskell a Euterpea, čo je doména špecifická vložený jazyk písaný v Haskell pre hudobné typy. Takže, prosím, pozrite sa na kód on-line. Oheň ghci, čo je Glasgow Haskell Compiler Interpreter. A ja budem robiť niektoré tohto v trochu takže môžete vidieť, ako sa to robí. A to vám umožní nahrať sa the-- syntax je dvojbodka a potom príkaz. Môžete vložiť do súboru. Môžete použiť Prehľadávať na tie súbory vidieť všetky funkcie, ktoré existujú v určitom module. A potom ako uvidíme, typy a typ triedy sú tak dôležité v Haskell, takže môžete vždy check-- obzvlášť ak pracujete v novom DSCL ako je tento, aký je druh hudobné? Viem, že o tom, ako numerickej typy pracujú v Haskell, ale ja neviem, moc o hudbe. Ale môžete preskúmať toho, ako sú definovaný pomocou tohto T alebo typ príkazu a potom volania v konkrétnej Funkcie alebo dátový objekt. CONNOR HARRIS: Jo. Ak ste si mysleli, C a Clang Bol hardass o typy, nemáte žiadnu predstavu o Haskell. Dobrú vec, o Haskell je, že ak môžete získať váš kód kompilovať a ak kontroly typu Haskell, je to asi v poriadku, pretože typ systém je tak prísny. STEPHEN KREWSON: Jo. Tak som len chcem ísť through-- a znovu, to nie je, ako to urobiť justice-- pár rysy Haskell, že prinajmenšom k jeho creators-- a bol vytvorený v neskorej 1980 bandou ľudí, výbor asi 20 people-- považoval za dôležité. A prvá vec, ktorú uvedené v papiera, ktorý opísal genézu Haskell počas prvých 20 rokov alebo tak bolo, že lenivý. Takže čo to znamená? No, to znamená, keď máme nejaký druh prejavu, musíme hodnotiť. A Haskell robí toto v hovore potrebou ceste alebo non-prísne spôsobom. To znamená, že ak budeme mať veľa súčasti nášho prejavu, snažíme odložiť hodnotenie z tých čiastkových komponentov až do absolútnej posledného minute-- to je, kým sme skutočne potrebujú je. Tak toto means-- ktorá je naozaj cool, a to najmä ak budeme premýšľať o abstrakcie hudobného kroku sekvenceru. Môžete ju zapnúť, a začnete beh krok sequence-- Ak ste niekedy pracovali s bubnom machine-- a to len ide večne. Tak to by bolo naozaj pekné, keby sme mohol napodobniť, že v Haskell. A môžeme to urobiť s nekonečným hodnoty, najmä nekonečnými zoznamy. Je to veľmi jednoduché na zadanie nekonečný zoznam v Haskell. Dalo by sa stačí použiť syntax dole tu, kde je vidieť 1 až 3, odstrániť 3 1 dot dot, a že je nekonečný zoznam zo všetkých prirodzených čísel predĺženie Na čo si dokážete predstaviť. Chcem sa predstaviť Koncept záhybov hneď. A opäť, účel na tento seminár nie je dozvedieť sa o záhyby v Haskell alebo vyšších rádov funkcie. Ale chcem predstaviť ju poskytnúť presný pocit, ako divný Haskell je a ako silný to je. A najmä, budeme be-- keď budeme robiť naše rôzne bicie party, budeme sa manipuluje zoznamy Čísla, skladanie na seba. A k tomu, že budeme sa používajú mapy a záhyby. Je tu právo asociatívne zložiť, čo je tento pravdu here-- 1 sa zníži o množstvo, 2 sa zníži o množstvo, 3 mínus 0. A Syntax pre fold, dáte fold základná hodnota a potom operation-- v tomto prípade, sčítanie alebo odčítanie. Ja som je znázornené oba prípady. A potom je tu akumulátor, ktoré hromadí po celej zoznamu použitie tohto operátora Plus alebo mínus, a potom ju hromadia. Takže to bude the--, keď sa mu hovorilo s rozkladacím R plus 0, počnúc 0, potom by sme sčítať všetky Čísla v tomto zozname. A to je zoznam od 1 do 3. CONNOR HARRIS: Tak, aby to dať ďalšie cesta, fold r trvá tri argumenty. K dispozícii je funkcia, ktorá sám prijíma dva argumenty, potom je tu hodnotu štartér, a tam je zoznam hodnôt. A to, čo robíte, je si vziať štartér hodnoty, prvá hodnota, dať ich do funkcie. Čo dostanete von, vezmem, krmivo, ktoré do funkcie z druhá hodnota, čo dostanete von, vziať, nakŕmiť, že do Funkcia tretieho hodnoty. A potom, keď idete dole celý tento zoznam týmto spôsobom, budete mať nakoniec niektorí singulární to je rovnakého typu, čo začali sa s a rovnakého typu ako veci v zozname a potom že je to návrat výsledok fold R. STEPHEN KREWSON: Tak predovšetkým, to sú funkcie vyššieho rádu, pretože berieš ďalšie Funkcie ako jednu z úvah. CONNOR HARRIS: Jo. Ak ste použili niektoré ďalšie languages-- Viem, že R, [nepočuteľných] jazyk má to, tzv znížiť. Tie by mohli mať podobné funkcie v iných jazykoch, len volal rôzne veci. STEPHEN KREWSON: A čo je pekné o fold R v tomto prípade je, že záhyb R môže pracovať s nekonečnými zoznamy. Takže v tomto dnu, tento P5 vytvára poznámky sú zapnuté v kroku sekvenceru pre niektorá časť bubna, piata časť bubna, a možno je to Conga bubon, alebo tak niečo. A to je zámerne tupé spôsob písania tohto, ale je to zábava, pretože demonštruje veľa z vecí, o Haskell a Euterpea. Takže zložiť R tejto colon-- hrubého čreva je len operátor, ktorý tlačí veci spolu na list-- vyzvala prázdny zoznam, čo je len prázdne zátvorky. A volám, že na tomto nekonečný zoznam. To je vlastne dva zoznamy sčítavajú tu dole. Zoznam 1 čiarka 6 bodka dot je 1, 6, 11, 16. Takže Haskell-- v práve niekoľko znakov, vy môžete vygenerovať celokrajné postupnosť čísel ktoré sú od seba päť čísel rozkladajúce sa na do nekonečna. A ja som sa, že predradiť tento malý kratšie list-- 3, 8, 21-- len preto, aby vám ukázať, ako môžete zřetězit zoznamy. A potom som zložil na seba. A to skončí byť len akousi Prevádzka identity, ale je to nekonečné. A fold R môže urobiť, pretože to lenivo hodnotí, ako je vo vyššie uvedenom. Ak máme 1 a 2 a 3, môžeme len zátvorka mimo celý zvyšok. To nebude fungovať mínus alebo plus, ale bude pracovať pre tento hrubého čreva Prevádzka identity na zozname. Tak ako sme sa prakticky použiť, že ak budeme majú nekonečne dlhý zoznam vecí? No, Haskell poskytuje veľa functions-- a pozerať sa viac do nich v vlastné time-- ako je vziať ktorý hovorí, OK, my sme generovanie tohto nekonečný zoznam, ale my sme len tak, aby sa niektoré počet IT a v tomto case-- uvidíme neskôr v naše bicie automat code-- GM je len nejaký druh globálneho premenná pre počtu krokov v sekvenceru. Na strojoch Roll-in I vám ukázal, že je to typicky 16, ale som implementoval ju s 32. Je to naozaj nezáleží. Haskell je tiež čistý, takže to má silný statické písania, že Connor spomínal. Takže funkcie matematické v sense-- oni sú viac matematický že sú zaručené sa nedá pristupovať alebo zmeniť akékoľvek premenná alebo vykonať vstup alebo výstup. Takže ak máte funkciu, to je deterministický. To bude vždy vrátiť rovnaký hodnota v stave programu alebo zostávajú rovnaké. Existujú, samozrejme, Monadické výnimky k tomu, ale to je mimo našu pôsobnosť. CONNOR HARRIS: Jo. Čo to znamená, keď je tam sú málo dôležité [nepočuteľných] Dôsledky tejto. Jedným z nich je, že je to veľmi jednoduché paralelizovat programov Haskell. Vzhľadom k tomu, ak máte, hovoria, funkciu, ktorá musí fungovať na milión hodnotách, pokiaľ viete, že funkcia bude vždy rozdávať rovnakú hodnotu, ak kŕmite v určitom value-- ak ste [nepočuteľné] f 1, f 2, potom f 3 alebo whatnot-- f 1 sa nebude písať von do súboru alebo robiť niečo , Ktorý bude meniť hodnotu f2. Stačí si len rozdeliť túto funkciu do A miliónov rôznych strojov alebo milión rôzne závity alebo čokoľvek, získať všetky odpovede naspäť, získať všetky návratové hodnoty dozadu, a potom je to. Takže veľmi ľahko paralelizovat veci. Nevýhodou je, že vstup a výstup obzvlášť zapadajú do systému typu vo veľmi zložitých spôsobmi. Nebudeme zachádzať do tohto práva, ale ja Odporúčame vám pozrieť sa na niektoré zdroje on-line, ak sa chcete dozvedieť o tom. STEPHEN KREWSON: So zadajte classes-- a to was-- triedy typov boli vynájdené riešiť problém operátora preťaženia. Takže sme chceli mať rovnosť medzi rôznymi typmi vecí. Samozrejme, že si myslíme, že of-- rovnosť medzi typmi číselných je veľmi ľahké si myslieť o tom, ale čo o ​​rovnosti medzi zoznamy? Čo rovnosti stromovej dátové štruktúry noha? A to všetko je možné v Haskell pretože tried typu. Takže ak definujete určité údaje type-- a tu, to sú hudobné ihrisko. Sme konečne dostáva nejaké počítačové hudby. Takže máme C, C ostrý, a tak ďalej a tak ďalej. Patrí k banda Rôzne typové triedy. EQ-- oni patria k typu EQ triedy. To znamená, že podporujú Operácia rovnosti. Takže si môžete vyhodnotiť, či jeden sled hudobných primitív je rovnaké ako iné. Patrí do radovej triedy. To znamená, že tam je usporiadanie na ne. D prichádza potom, čo C. C ostrý prichádza potom, C i. Patrí do triedy ukazujú, čo znamená, že môžu byť vytlačená na konzole alebo terminálu. Oni patria k trieda vymenoval, ktorý Znamená to, že aj keď to sú znaky, majú podkladové číselný zastúpenie začínajúceho na 0 a ísť preč cez však veľa vecí sa tu, 20 alebo tak, alebo 30 alebo 40, možno. CONNOR HARRIS: A kedy máme dátový typ že derives-- sa dané kľúčové slovo "deriving--" určitý druh triedy, to znamená, že kompilátor bude snažiť postaviť niečo, čo automaticky. Takže možno budete chcieť definovať kvalitu inak. Budete chcieť definovať C ostrý ako rovná D byt, napríklad. U tejto konštrukcie tu, nemyslím si, že C ostrý a D ploché bude rovnaká, pretože kompilátor automaticky hovoria, každý inú možnú hodnotu sa líši od každej inej. Je teda možné, aby prepísať Predvolené implementácia z týchto typov tried. Opäť platí, pozrite sa na odkaz, ak Chcete sa dozvedieť o tom. STEPHEN KREWSON: A Tu, v skutočnosti, to bude byť užitočné, keď sme sa kód neskôr. Vidíme niektoré z operátorov Infix pre sekvenčné zloženie, paralelné zloženie, a preto ďalej, tieto plusy a rovnaké znaky obklopený dvojbodkami. To znamená, že môžeme hrať tieto rôzne hudobné primitíva jeden po druhom. To je sekvenčná zloženie. Alebo môžeme hrať je v paralelne v rovnakej dobe. Takže môžem mať hudobné hodnotu, a potom sa to rovná a dvojbodky, Infix paralelné operátor zloženie, a prehrať ich ako druh akordu. A budeme používať to, keď sme sa spojiť Naše časť bubna s našimi málo Frere Jacques song hrať tieto dve sekvencie hudobné hodnoty v rovnakom čase. Mazanie, je-- Curry bol naposledy meno Haskell Curry, ktorý obraz Haskell je pomenoval. A to nám umožní si pekné elegancia keď sme písať všetky tieto rôzne funkcií alebo filtre, ktoré sme Bude mapovanie cez naše stránky. Funkcie dvoch arguments-- f x a y- môže byť reprezentovaný ako f x aplikovaný na y. Takže je to funkcia jeden argument, že sa vráti Ďalšou funkciou jedným argumentom. Takže to znamená, že môžeme mapovať funkcia f x nad zoznamom y je. CONNOR HARRIS: Chcem dať príklad to? STEPHEN KREWSON: Jo. Mám príklad tu od niektoré z vecí, budeme písať. Takže replikovať 2-- dobre, replikovať bude trvať jedna hodnota, ktorá je, koľko časy replikovať niečo, a potom to bude trvať value-- obvykle zoznam alebo tak niečo. Tak tu, my sme mapovanie replikovať 2 cez iného zoznamu. Takže ak budeme máp replikovať 2, ak by sme replikovať 2 platí na prvý prvok tohto list-- a to sú zoznamy hudobného phrases-- bude vyrábať dva "vy sleeping--" takže spíte, spíte. Takže teraz máme dve. Ale Replika trvá dva argumenty, ale preto, že sme mazanie, a potom mapovanie, môžeme reprezentovať replikovať 2 ako by bola vrátená ako funkcia jedným argument-- len replikáciu dvakrát. A potom sme sa uchádzate, že pre každý prvkom tohto zoznamu fráz. A concat je Haskell Operácie pre zlúčenie zoznamu. Vzhľadom k tomu, repliky 2, bude vytvorí zoznam zoznamov. A to je tu to prechodná forma. A tak potom môžeme concat alebo vyrovnať, že dvakrát. CONNOR HARRIS: Jednoduchšie mazanie, na príklad, ak by ste jako-- predstaviť, f je len Funkcia násobenie, ktorá berie dva argumenty a vráti ich produktu. Takže ak máte F 4 5, to je 20. Ale môžete myslieť na to, ako also-- máte funkciu f 4 ktorý berie argument a vracia štvornásobok tejto argument-- len čiastočná aplikácia, ktorá len jeden argument 4. A či kŕmite f 4 5, ktorý vám dá 20. A to je jednoduchšie Príkladom mazanie, na. Je to zvyčajne jedna z učebnice tie. STEPHEN KREWSON: Lambda výrazy alebo anonymné funkcie sú ďalšie Haskell znakom. Takže ak budeme potrebovať, aby vybičovať málo funkcie život replikami, ale hovoria, že to nie je Štandardná knižnica, môžeme použiť syntax podobné nasledujúcom. A budeme vánok nad tým. Jedna vec, ktorú uvidíte veľa v bicie automat je robíme hovorov k niečomu volal filter, ktorá je rovnako ako predtým, je zobrazenie funkcie nad zozname, ale je to mapovanie logický funkcie. Takže tu máme príklad štandardu A anonymne definovaná boolovská funkcie, ktoré Stačí len pár hodnôt. To nie je prísne vzaté anonymné funkcie. Ale je to definovať s že syntax pre stručnosť, a to jednoducho trvá x modul n- CONNOR HARRIS: Jo. Takže f je funkciou dva argumenty n a p že vráti funkciu, ktorá je sama funkcie jedného argumentu, a to x. STEPHEN KREWSON: I Uvedené operátormi Infix. Aké sú operátori Infix? No, operátori Infix sú Normálny spôsob zastupujeme operácie, hovoria, v mathematics-- 2 plus 2 miesto prevádzkovateľa a a potom dva argumenty 2 a 2. CONNOR HARRIS: Volá sa to Reverznej poľská notácie, čo je termín Pochybujem, niekto z vás bude vedieť. STEPHEN KREWSON: Správne. Reverznej poľská notácie alebo predpony. Ale rozhodol sa Haskell používať operátormi Infix. Tak to sú niektoré z Vlastné tie, ktoré sú definované pre Euterpea DSCL v Haskell. Tak toto je sekvenčná zloženie. Toto bolo paralelné zloženie, a to sa skracovať paralelné zloženie. A budeme potrebovať s našim automatom, pretože budeme používať posledná operátor v tom, že malé tica hrať na bicie automat pozdĺž s našou Frere Jacques pieseň. A naše bicie automat je Bude nekonečný. Je to len hrá navždy. Ale pieseň Frere Jacques nie je. Nie je to tak dlho. Je to len pár barov. Takže potrebujeme zastaviť bicie automat as Akonáhle je kratšia hudobné hodnota vychádza do konca. A to infixed operátor je super užitočné, s tým. A Infix notácie ako To je celkom pekné, preto, že hovoria, že máte funkciu ako citát, ktorý dáva celočíselné delenie x niečím else-- Ospravedlňujem sa, že by mal byť, a b. Dalo by sa napísať, ako citácie b. Takže ak ste put-- prvok Ďalším príkladom. x element v nejakom zozname, ak ste dal to v backticks, môžete ho použiť. Aj keď to nie je symbol ako plus alebo mínus alebo časy, môžete použiť meno Funkcie, ako že v backticks ako zavádzacie operátor, čo je celkom v pohode. CONNOR HARRIS: Znovu, toto je všetko len syntaxe cukor, naozaj. To nemá vplyv na jadro jazyka. STEPHEN KREWSON: Takže tu vidíme pre Posledná veta nášho Frere Jacques piesne, Hral som nejaké malé alebo akordy tretiny pomocou paralelné zloženie operátor. To je ďalší spôsob, ako hovoriť niektoré z toho, čo sme práve hovorili. Takže si môžete mapovať funkcie jedného argumentu nad zoznamy. CONNOR HARRIS: Opäť odkazy pre Haskell-- úvodných učebnice bude mať všetko v ňom. STEPHEN KREWSON: Tak tu je celkom Kľúčovým riadok kroku sekvenceru budeme sa pozrieť na použitie zoznam porozumenie. A tu vidíme, je, že prvok V prevádzkovateľa pevných vzadu úvodzovkách. Takže ak x je prvkom zoznamu x je, potom budeme vyvolať Perc funkcie. Takže perc je len funkcia bicie. To trvá nejakú hodnotu p, ktorý je časť ohraničené množiny všetkých rôzne bicie zvuky že sme videli v predchádzajúcom snímke, a potom to, že dáva Doba trvania štvrť poznámky. Inak to mu dáva gnr, a gnr je len odpočinok štvrťová nota. Tak toto je budovanie niečo pekného. Máme zoznam prvkov, a my budeme slučku nad nejakou zoznamu od jedného na maximálne hodnoty nášho kroku sekvenceru. A keď sme v určitom aj v že zoznam jedného do maximálnej hodnoty, ak, že aj je členom tejto sada bola vytvorená v tejto funkcii, dobre, potom sme to otočiť do perkusné poznámky. Inak sme len hrať odpočinok, ktorý znamená, že sme jednoducho mlčí. A vidíme tu, že v Tento zoznam porozumenie syntax, x je obývaný to Zoznam postavil jedného ku globálnemu veľkosti sekvenceru. CONNOR HARRIS: Jo. Základná syntax Zoznam je comprehension držiak, hodnota zahŕňajúce niektoré premenné, bar, Možné hodnoty premenných sám, uzavretý držiak. A ak ste urobili nastaviť staviteľ notácie v nejakom druhu matematiky triedy, môžete mať nastavené ako 2n že n je alebo n je v z. Podobné thing-- tomto zápise má byť podnetný tohto matematického zápisu. STEPHEN KREWSON: A môžete použiť viac predikáty a viac filtrov v zozname porozumenie, čo je celkom pekné. Algebraická types-- sme nebude otáľať tu dlho. Tam to nie je dobrý pojem v Haskell alebo dobrý, zrejmý pojem o tom, ako vziať, povedzme, v predvolenom nastavení parameter funkciu alebo tak niečo. V Pythone, je to celkom jednoduché. Stačí si len povedať rovná na vyhlásenie o funkcie, predvolená hodnota v Prípad nikto je dodávaný. V Haskell, mohol by ste možno použite možná možná typ, ktorý berie buď nič alebo hodnotu typu len. Tak sme to využiť v bubne práčky , Aby sme mohli dať voliteľného objemu parametre na každej z častí bubna. Tak, že nám dáva spôsob, ako mať EQ alebo objem na konkrétny kanál. CONNOR HARRIS: V ďalšie príklady Haskell, môžete vidieť môžu byť použité pre funkcie, ktoré by mohli zlyhať. To je obyčajný. STEPHEN KREWSON: A môžete doplniť akési chybové správy ako predvolené. A to je obzvlášť vhod, keď robíte I / O v Haskell. To môže byť triky. CONNOR HARRIS: alebo pre Podobným príkladom, myslím, funkcia, ktorá zahŕňa rozdelenie parametra, ktorá môže byť 0. A táto funkcia mohla vráti možná čokoľvek. Takže v prípade, že to nie je delenie 0, vráti proste čokoľvek. A v prípade, že sa delenie 0, vráti sa nič ako spôsob signalizujúci chybu. Vzhľadom k tomu, jeden dôsledku Haskell má veľmi prísna písanie je to, že neexistuje žiadny real-- Výnimkou sú trápne, v podstate, spracovanie chýb je trápne. A to je jeden veľmi obyčajný spôsob, ako robiť to. STEPHEN KREWSON: Takže teraz dostaneme na inú myseľ ohýbanie vec o Haskell, ktorý je vzorom zodpovedajúce a funkčné definície. Ukázal som ťa v poslednej nasuňte Vyhlásenie sekvencie kroku Funkcie, ktoré trvalo možná hodnota, potom int, potom zoznam ints, potom vracia sekvenciu hudobné hodnoty tam komentovaný s oboma výšky a hlasitosti. Takže tieto tri argumenty môžu byť vzor uzavreté v nasledujúcom spôsobom. A vždy chceme byť istí, robiť základné veci ani ukončiť prípad ako prvý. A tieto podčiarknutia stačí byť vykladané znamenať nejakú hodnotu, ktorá tam je. Takže ak sa dostaneme volania do kroku sekvencie s určitou hodnotou, nejaká iná hodnota, a potom sa prázdny zoznam, čo chceme, Pre návrat je len ticho, odpočinok 0. A namiesto toho, aby bytia prázdny zoznam alebo 0, to je zvyšok 0, pretože sme rokovania s typom hudby, a prázdny zoznam hudby Typ je len zvyšok nie trvanie. To nie je hudba. A potom uvidíme, či dostaneme o krok sekvenciu s obj pre objemovú argumentu, p pre predbežnej opatrnosti nástroj Argument, a potom zoznam x rokov. Potom sme urobiť nejaké veci. Predovšetkým aplikujeme tento zoznam s porozumením, a vykonávame niektoré operácie na možná hodnota premeniť ju na číselnú hodnotu, takže to by mohlo byť potom zoznamu a používané vyberte nástroj. Opäť platí, že sa jedná o málo bit úmyselne inconcise len aby ukázal všetky divné veci môžete urobiť v Haskell ako vy pozrite sa na to vo svojom voľnom čase. Dobre. Takže sme sa konečne dostať do to, čo sme sa vydali k tomu, čo je zarobiť nejaké počítačové hudby. Takže budeme snažiť aby pieseň Frere Jacques. Takže tam sú, koľko frázy v Frere Jacques? Štyri. Skvelé. A čo je pekné, je, že všetci sa opakujú rovnaké množstvo časov, ktorý je dva. Takže máme štyri frázy každý opakuje dvakrát. A najmä, sú v jednom kole. A existuje veľa, mnoho spôsobov, ako realizovať koleso, ktorá by mohla byť legrace robiť. Urobil som to v veľmi jednoduchý spôsob, ako tu, ktorý je len construct-- linku Funkcia vezme zoznam hudobných hodnôt a stáča sa do sekvenčná kompozície použitím tejto sekvenčné zloženie operátor. A potom som odložiť jednotlivé časti tým, že je začať s odpočinku. Tak som sa začať s ostatnými dvoch opatrení, a potom zvyšok štyroch opatrení, a potom zvyšok šiestich opatrenia, a potom koleso funguje, ako všetci vieme, túto pieseň. Vidíme dve poznámky alebo modifikácie hudobných hodnôt ktoré sú obsiahnuté v tejto sekvenčné Usporiadanie hudobných prvkov. Máme objem doplnku. Jedná sa o funkciu pre anotáciu hudba s určitým objemom. To je dobrý príklad signálneho prevádzky MIDI od 0 do 127, sedem bitov informácie, ktoré sa môžu vykonávať. A then-- sme to videli veľmi krátko, ale všeobecné MIDI Zoznam všetkých rôznych nástrojov. A že to nie je celá kopa z nich. Ak používate digitálny audio pracovné stanice, ako Ableton Live alebo Pro Tools, je tu neuveriteľne širší rozsah syntetizátorov a VST nástrojov. Ale len štandardné MIDI má niekoľko alebo niekoľko desiatok. A niektoré z nich sú zábavné. Myslel som, že by bolo zábavné, keď sme hrali prístroji Prístroj MIDI vrtuľník, a potom ďalšia cesta cez koleso, sme urobili pad syntetizátor, a potom to banálne vedenie námestí vlna synth, a potom hlasom sliz, ktoré sú trochu nejasný na mojej zlej MIDI syntezátor, ale OK. A potom sme sa vidieť tento ROKOV a v syntaxi z Haskell, a potom hráme všetky tieto časti dohromady s paralelným operátorom zloženie. A mohli by sme pravdepodobne ukázať niečo z toho. Tu je kód. A môžete vidieť v C, že by bolo Veľa krku zúčtovanie a nastavenie tabuľku kód pred vami mohol robiť hudbu takhle. Alebo akékoľvek iné programovacie jazyk, to by asi musieť spolupracovať s nejakým druhom knižnica alebo API a nastaviť všetko, a potom budete musieť upratať. Ale tu v Haskell je, myslím, raz sa dostanete na kĺb, neuveriteľne čitateľný a veľmi expresívne. Takže tam je implementácia z Frere Jacques. Dobre. Teraz chceme pridať bicie, a to je trochu Messier. Takže poďme sa pozrieť na zábery. Tak veľká myšlienka je, aby sa banda zoznamov alebo ich častí. Z týchto valcov-in strojoch, tam boli typicky asi možná ôsmich 10 rytmu bicích alebo častí. A potom použiť veľa techník. A my sme hovorili o these-- použitie záhyby, filtre, lambda funkcie, mapované cez zoznamy na výrobu hodnoty v nejakom rozsahu 1 až r, r je 16, alebo 32 kroky v sekvenceru. A potom, či je hodnota v tomto zozname ako sme beh cez sekvenceru, beh cez to a cez nad, sa ukáže v takom prípade, a tento vzorka dostane spustená. Tu sú všetky rôzne podivné spôsoby Prišiel som s generovať poznámky. Skúste to na vlastnú semifinále sumy. Bude to znieť v pohode. Čas dovolí, pôjdeme cez to. Ale práve teraz, myslím, že by sme mali demo, čo máme. Dúfajme, že to ide OK. Tak to je GHCi. A budeme načítať súbor Nazval som song.lhs, čo je súbor som vám ukázal. OK skvele. Ako povedal Connor skôr, skompilovaný, napíšte ju skontrolovať, takže môžem dýchať oveľa jednoduchšie. Nebude to vyhodiť do vzduchu na mňa. Chcel som vám ukázať niečo užitočného. Môžete vidieť, že modul načítaný nazýva 50. Môžete prechádzať tento modul. A to je tak pekné o tom, čo možno doing-- robíte v Haskell nie je volal vývoj software, ale môžete urobiť veľa zábavné veci na vlastnú päsť. A workflow je naozaj pekné as v porovnaní s mnohými iných jazykoch, pretože môžete vidieť v naozaj čitateľný spôsob, ako čo sa deje. Vidíme teda, že máme všetky tieto vety, ktoré sú zoznamy hudobných ihrísk, a potom sme stavať tieto sa do niečoho väčšieho, čo je hudobná skladba. Je to hudobný prehrávač. A potom to môžeme hrať všetky s funkciou tzv prehrávania hudby. Môžete vidieť, že tu dole. Čo je len hrať. Mal by som say-- som nemal hovoriť o Tento znak dolára, ktorý je všade. Znak dolára je ďalší uvádzaciu operátor. Ale to má najnižšiu prednosť ľubovoľného operátora, ktorý účinne znamená, že všetko, čo na ľavá strana sa znak dolára a právo na znak dolára, budeme dostať vyhodnotené pred ním. Takže je to niečo ako ďalší spôsob pridávania zátvorka. CONNOR HARRIS: Je to v podstate skladanie funkcií. A to zaručuje, že vy, ak nie have-- Máte funkcie oboch stranách, alebo Infix operátori na oboch stranách, nebudú združovať cez neho a dá vám neočakávané výsledky. STEPHEN KREWSON: Takže sme can-- pomocou ktorej môžeme zavolať. Po prvé, budeme hrať bez bubnov. To je vrtuľník, MIDI vrtuľník. [Prehrávanie hudby] Tam je námestie vlna. Hlas sliz. A naozaj môžete ísť voľne žijúcich s tým. Vzal som celkom jednoduchý, pretože som vedel, že by som nemala odhryznúť viac, ako som mohol žuť. Len aby to celkom jednoduché ukázať hlavné myšlienky. Ale potom som bol rád, máme musím pridať nejaké bicie v tejto oblasti. Práve preto, že sa jedná o trochu nepreniknuteľný, a ja som nemal používať názov bicích častí, Aj mapované them-- preto, že sú časť tohto vymenovaného triedy, Mapovaná som ich ints. Jedným z nich je ako basový bubon. Nula je tiež. Sedem je vysoký klobúk. A v tú, kde sa Funkcie trochu viac náhodný, títo sú ako conga bubny. Takže ak si myslíte, about-- možná zábavný spôsob, ako realizovať bicie automat je použitie veľmi usmernený vzory na vašom basový bubon. Tak napríklad, na filtrovanie cez Zoznam so všetkým, čo dáva späť 1 keď je to vziať modul 04. Tak som si 1, 5, 9, 13, 17-- takže to je prvý poraziť každého opatrenia. A potom je to rovnaké vec posunula v dvoch krokoch. Tak to je nekonvenčná. Takže by to bolo niečo ako vysoké klobúk. A tu opäť, dole, je to trochu náhodný, pretože robíme Conga bubny. A ja mám nejaké maracas tady taky. Takže som mohol zavolať hrať bicie automat, ale to by trvať večne, a to by mohlo začať schmatol celá pamäť v mojom systéme. Takže ja zavolám túto funkciu prehrávať hudbu, ktorá, ako uvidíme, použite skracovanie paralelné zloženie hrať našu malú Frere Jacques pieseň spolu s tejto podivné automatom. Takže poďme sa pozrieť. A prosím ťa, zlepšenie na mojom Usporiadanie všetkých bubnových častí. Nie moja špecialita, ale ja Mal veľa zábavy robiť to. [Prehrávanie hudby] Tak samozrejme, je to všetko trochu nie ako zábavu keď nemôžeme previesť na skóre, takže možno to by mohla byť vykladaná ľudským umelec. Tak som sa nebude pracovať tu. Už som generované súbory. Môžete vidieť, že je tu dot LilyPond file-- a to bude môj segue sa k Connor-- a súbor bodka MIDI, a súbor bodka PDF, čo je to, čo LilyPond nakoniec generovať. Ale to sú tie skripty, a budem stačí spustiť je s ich možnosťami pomocníka. Ak sa vám tieto hore a beží s Euterpea, môžete vygenerovať súbor MIDI. A potom z MIDI súboru s týmto programom MIDI 2LY, môžete vygenerovať Lily Rybník súbor, a potom môžu generovať vo formáte PDF skóre. A mali by sme sa pozrieť na toto. Takže Connor bude pravdepodobne ukáže , Ako anotácie lepšie, ale to je Frere Jacques as generované mnou v Euterpea. Je to len v C. Mal som prišiel out čo hack to je vlastne v. Ale to je pre potrubie ako to robíte, že s tým. Poďme hovoriť viac o LilyPond. CONNOR HARRIS: OK Poďme sa pozrieť. Zmienila ste sa dozviete Vy Haskell? STEPHEN KREWSON: Ach jo. Pozrite sa na Naučte You Haskell. Je to v zdrojoch. To je, ako som začal učenia, a je to skvelé. Nie je hlúpy učenia. CONNOR HARRIS: Takže je to on-line. Takže chlapík menom [nepočuteľných] learnyouahaskell.com, žiadne medzery. Gramatika je chorý. STEPHEN KREWSON: Je to ilustroval, taky. CONNOR HARRIS: Takže to, čo je LilyPond? Je to deklaratívne programovanie jazyka k Music sadzbu. Takže declarative-- môžete myslieť na veci, ako je HTML, kde nie ste saying-- HTML nehovorí, ako sa webové prehliadače by mali vykreslenie stránky krok za krokom. Je to len, že to hovorím je textový popis o tom, čo chcete, aby stránky vyzerať. A potom je to tiež program ktorý prekladá tento jazyk, alebo si prečítajte jeho, a potom vlastne robí sadzbu pre vás, a to vypľuje títo nádherné vyzerajúce skóre PDF. Môžete tiež získať vo formáte PNG alebo čokoľvek iného. Dobrým spôsobom, ako myslieť toho je, obdobne je, že LaTeX je niečo ako LillyPond, ale len pre obyčajné sadzbu. Takže namiesto toho, of-- to nie je WYSIWYG to, čo vidíte Je to, čo dostanete, rovnako ako, povedzme Finale je, alebo Sibelius, alebo Microsoft Word, kde môžete zadať v reálnom čase a návrhy veci v reálnom čase a vidieť zmeny okamžite. Je založená textu. Musíte kompilovať skóre pomocou osobitný program a dostať sa von PDF neskôr. To je o niečo menej vhodný na použitie, ak ste snaží písať priamo do skóre a vy ste sa snaží skladať na počítači. Ale existuje veľa výhod pre neho. Raz, to vyzerá oveľa krajší, pretože LillyPond môže v skutočnosti mať čas na to rozvrhnutie rozhodnutie správne, Na rozdiel od Sibelius alebo Finale, ktoré majú aby sa tak ohrozená algoritmy že sa môžu zobrazovať veci v reálnom čase. Tak prečo je LilyPond-- počítačová grafika je ťažké. Ak robíte čokoľvek s hudbou a chcete vypísať skóre, nechcete písať out všetko sami: počnúc ako kresliť štáby a ako kresliť poznámkové bloky. Je veľmi ťažké. Bolo to predtým. Si v poriadku. Ak chcete používať Finale alebo Sibelius, formáty súborov pre tie veci, sú veľmi komplikované, a nemôžete Naozaj používať programovo. Môžete otvoriť Sibelius s Finale a prejdite na Súbor, Export ako PDF sami, ale môžete naozaj volať, že zo skriptu. LillyPond, môžete volať z týchto skriptov. Dalo by sa ľahko opakovať LillyPond s LaTeXu. Nebudem mať toľko času ísť do týchto technológií práve teraz, ale, že existujú. Ak sa chcete pozrieť do LillyPond knihy, je to program, ktorý je dodávaný s vaše distribúcie LillyPond, a je to pre iterácii LillyPond fragmenty do LaTeXu Ak chcete urobiť niečo ako veľký Musicology dokumente s príkladmi, napríklad. A je to dobrý skill pre Život ak robíte niečo s hudbou, nie len CS50. Použil som LillyPond pre všetky mojich zloženie projektov pretože som bol v podstate senior na strednej škole. Tak tu je pár jednoduchých príkladov. To je v podstate reprezentatívny úrovne obtiažnosti že väčšina ľudí by tvária, že sa snažili používať LilyPond pre jednoduché projekty. Prvý z nich je začiatok na chorál predohru Bach. To dno jeden je výňatok od jedného z mojich vlastných prác, a je to len tam ukázať vám veci, ako je [nepočuteľných] uvedenie viac riadkov v rovnakom personál, ako lyrická undersetting funguje. Lyrické podložky sú vec, ktorá je veľmi jednoduché použitie lilypond pre zborové hudby. A tak potom je tu viac Zložitejšie príklady tu. Všetky tieto sú vykonávané v LilyPond a sú uskutočniteľné. Prvý úryvok je z [Nepočuteľný] podľa [nepočuteľných]. A toto [nepočuteľných] z kus pre sólový bas flauta podľa [nepočuteľných], ktorý je longtime-- ktorý Bol dlhoročným členom hudobné oddelenie tu, myslím. Nie som si istý, kde on odišiel do. Ale on bol poradcom Harvarde Skladatelia Association po dlhú dobu. Báječný človek. A píše hudbu, ktorá má veľmi komplikovaný zápis že LillyPond možno však zvládnuť veľmi pekne. Takže len, aby vám zmysel toho, čo schopnosti tá vec je tak are-- internals LillyPond sú veľmi komplikované. A môžete použiť pre dlhá doba, vrátane pre niektoré celkom zložité veci, bez skutočne museli vedieť veľa o nich. Ale základnou myšlienkou je, že na Najnižšiu úroveň, atómy LillyPonds sú poznámky. Poznámky obsahujú kontext volal hlasy. Takže hlasové kontextu v zásade zodpovedá na jeden riadok polyfónia. A potom kontext môže byť obsahoval hierarchicky vo vyšších tie úrovne, ktoré predstavujú štáby na skóre alebo väčšie zoskupenia, ako je piano štáby alebo zbor štáby, a potom nakoniec Celý skóre kontexty. A môžete skutočne zahŕňať viac skóre v knihe. A každý kontext má počet pripojených rytcov. Ak sa pozriete prostredníctvom Obsah kontextu a vytlačiť určitý symbol alebo Určitá trieda symbolov podľa potreby. Tak, aby každý hlasový súvislosti tam je [nepočuteľných] poznámky Rytec, že ​​je v podstate funkcie alebo objekt, ktorý vypíše všetky poznámky hlavy na pravej časti stránky. Potom je tu trhlina rytec, ktorý píše sa rázštepy na zamestnancov. Potom je tu metronóm Značka rytec, že vypíše metronóm stopy v skóre. A všetky tieto zmestili pekne dobre do hierarchie. A je to veľmi, veľmi, veľmi prispôsobiteľné, ktorý budete potrebovať ak chcete získať také veci. Takže všetky kontexty majú mnoho rôznych atribútov že môžete zmeniť všetko z odstupu k rôznym písmo výberu, aby veľkosťou vecí. Ak si chcete urobiť ešte zložitejšie veci, tam je vstavaný skriptovací jazyk. Oni používajú schému, ktoré je dialekt LISP. Tie pravdepodobne nie ti niečo. Ale v podstate, schéma ďalšie funkčné programovací jazyk, viac alebo menej. STEPHEN KREWSON: viazanka-in. CONNOR HARRIS: Jo. Je to dobrý tie-in, povedal by som. A to je používané ako vyučovacím jazykom, v skutočnosti, dole Mass Ave. Na MIT. A to je veľmi užitočné pre LillyPond z rôznych technických dôvodov. A tak, ak chcete, aby jednoduchý vylepší závislé na conditionals, pre example-- tam je isté stav skóre, ktoré je splnená, vykonávať zmeny usporiadanie alebo whatnot-- potom Tieto zariadenia sú tam. Sú to zložité. Tak tu je celkom jednoduchý ukážkový kód. Je to päť riadkov. V podstate, ja definovať dve palice. Je to v 3/4. Prvý zamestnanci má pripojený tempo značka, ale to je v skutočnosti deje Pre prechod na celej partitúry, pretože tempa značiek sú na úrovni skóre. Metronóm značka rytec je pripojený ku skóre kontext. K dispozícii sú rôzne kľúče, pretože [nepočuteľných] rytca je pripojený štáby. Môžete si skutočne urobiť, je. Vzorka som napísal, je vlastne v C dur, ale je to len preto, aby demonštrovať môžete mať rôzne kľúče v rôznych štábov. A Základné syntax je píšete na vedomie, mená s E, F, G, čokoľvek. Ak si chcete urobiť posuvek, vy prípona je alebo ES. To je z holandského muzikologického konvencie. A k tomu oktávy skoky, budete musieť použiť Tieto dieliky, čiarky alebo apostrof. Relatívna jednoducho znamená, čo máte na vedomie, bude automaticky plaec v oktávy najbližšie k predchádzajúcej. A ak si chcete skočiť viac ako fifth-- hovoria piatom či dokonca more-- potom budete musieť použiť [nepočuteľných]. Ale inak, nemusíte sa špecifikovať oktávu každú notu. A relatívna C, prime a C, stačí zadať stred C a základné C, najmä prvé tóny. Potom budete mať tieto štáby, ktoré organizujú tieto dva hlasy alebo vzorky hudby, a máte skóre. A to vyzerá takto. Ak chcete mať čas na kopírovať, že vzorka LillyPond kód na predchádzajúcu kĺzať dolu tu, a vy Môžete napísať to pre LillyPond sami. Viem, že sme niečo ktorá vyzerá veľa ako je tento. Takže je tu ďalšie technológie volal Music XML zachované úplne inými ľuďmi. XML je textové dáta structure-- I nemal hovoriť údaje structure-- hovoria mapa metafora druh. A to je navrhnutý tak, aby držanie hierarchických dát veľmi dobre. HTML, napríklad, je typ XML. A môžete povedať, XML, pretože boli všetky ostré zátvorky a uhol držiak lomky ktoré ukazujú, dátových polí. Nemám kód príklad z Music XML. Môžete ho nájsť sami. V podstate, dôvod, prečo by ste mohli chcieť používať XML ako medzistupne je v prvom rade je to výmenný formát pre v podstate every-- by som nepovedal každý, ale dosť odlišné skóre spisovatelia. Takže ak píšete v hudbe XML, a to nielen môže LillyPond prečítajte si to s pomocou tohto Prídavné program s názvom Music XML do LY, ale tiež Finale môžete prečítať to, Sibelius ho prečítať. V závislosti na tom, ako vo vnútornej objekt hierarchie pracuje pre reprezentovať hudbu, to by mohlo byť jednoduchšie vypísať Hudobné XML ako k LillyPond a len spoliehať na hudbu XML do LY robiť konverzie. Nemyslím si, že [nepočuteľný] má hudobný XML. STEPHEN KREWSON: to nie je. Niekto pracuje na tom, hoci. CONNOR HARRIS: OK. Euterpea nie je vybavený Výstupné funkcie ešte Music XML. Ak chcete konečnej nápad na projekt, Možno, že dostať do kontaktu s mužmi že Stephen vie, a oni mohli použiť vašu pomoc. STEPHEN KREWSON: Rád by som to. CONNOR HARRIS: Tiež, v podstate, každý programovacie jazyky že to stojí za jeho soli už má knižnicu XML, takže môžete interne previesť všetky vašej hudby do nejaký predmet že knižnica XML môže písať na to, že by vyžadoval menej zmeny na váš vnútornej štruktúry čokoľvek, čo môžete hudobné objekty chcete napísať, ako písanie priamo v LillyPond by. Potom už stačí len vytlačiť s XML s XML knižnice v slovenčine, , Ktorá zaručí, že je to syntakticky správne a všetko, a potom ju previesť na LillyPond. Takže technológia budete chcieť pozrieť do ak robíte niečo, ako toto. [Nepočuteľný], ďalší auxilarry technológie. To je v podstate Tech Works alebo Tech Studio pre LillyPond. Tak to ponúka pomoc s syntax, so šablónami pre rôzne bežné kombinácia nástrojov. To umožňuje prezeranie tak rozdelená obrazovka môžete mať svoj kód v jednom okne a PDF v inom okne a kliknite na miestach v PDF prejsť na príslušné škvrny v zdrojovom kóde. To je oveľa užitočnejšie, ak ste naozaj písanie LillyPond súbory sami ako keď ste generovanie je programovo. Ale na druhú stranu, je to niečo užitočné mať. Skvelé. Ďalšie resources-- budem prejsť to veľmi rýchlo. LillyPond manuals-- LillyPond má Vynikajúca dokumentácia na svojich internetových stránkach. Majú tutorial. Majú odkaz syntaxe. Majú stovky fragmentov pre rôzne drobnosti yo môže byť potrebné urobiť, aby preukázať rôzne schopnosti. Ak chcete použiť skriptovací jazyk alebo vykonať rozsiahlejšie prispôsobenie, potom je tu vnútorné zariadenie odkazovať na tejto adrese URL. Ak chcete použiť Music XML, je tu že URL, musicxml.com/tutorial. A potom, ak budete musieť naučiť systému preto, že ste vlastne chcete použiť skriptovací zariadenia v LillyPond, potom je tu [nepočuteľných] nazvaný Štruktúrované Tlmočenie počítačových programov, ktorá je nielen druhým Najväčšie SK učebnice vôbec written-- nájsť mi potom, ak chcete vedieť, čo si myslím Najväčší jednu je-- ale je to tiež veľmi dobrý Úvod do jazyka správne. Nebudete potrebovať viac ako niekoľko prvých profily. A to je všetko. Nejaké otázky? STUDENT: Kde môžem stiahnuť Váš generované Frere Jacques tak som si dal to na môj iPod? STEPHEN KREWSON: No, môžete písať out na niektoré wav súbor v Euterpea. A máte kód. Je to na GitHub. Vytvorte si vlastné variácie Frere Jacques by CS50 myseľ úľa. To by bolo skvelé. CONNOR HARRIS: niekto? STEPHEN KREWSON: Potrebujeme lepší basový bubon, taky. Je to naozaj zlé. STUDENT: Euterpea má nielen zloženie strane, ale signal-- STEPHEN KREWSON: Áno. V skutočnosti, sa práca I robil, keď som v Euterpea vzal tohle-- je tu Absolvent kurzu na Yale, že používa to-- bol na syntézu zvuku. Takže tam je naozaj príjemný spôsob, ako pomocou šípok a niektoré z notácie sme videli z skladanie dohromady signálne funkcie. Najmä basy pre väčšinu z nich je len jednoduchý sínusoida. Ale ak začnete skladať tie v podivné programovej spôsoby, môžete získať šialený zvuk efekty, ako podivných kaskádami. Môžete vytvoriť veľmi odvážny zvuky s množstvom modulácie. Urobil som projekt na granulované syntéza, ktorá je niekde medzi FM a odberu vzoriek. Budete mať veľmi malý, malé vzorky, a potom kombinovať ich s nejakým druhom modulátor a vybudovať bohatší zvuk. Tiež sme fyzikálne modelovanie, tak sa snažia premýšľať o fyzike a psychoakustiky niečo ako trúbka, a premýšľať o tom, ako zvuk je odráža od zvon poľnice a akustika miestnosť a modelovanie že sa základnými oscilátorov. CONNOR HARRIS: Vďaka moc. Vďaka za príchod. A ja som vždy ochotný trvať otázky podľa email-- connorharris@college.harvard.edu. STEPHEN KREWSON: Jo. stephen.krewson@yale.edu. Super.