CONNOR HARRIS: Szia.
Én Connor Harris.
Én egy CS50 CA Harvardon.
STEPHEN KREWSON: Én vagyok Stephen Krewson.
Én egy TF CS50 a Yale-en.
CONNOR HARRIS: És mi beszélni fogunk néhány technológiák, hogy lehet,
kívánja használni, ha érdekel ennek során a végleges projekt vagy tényleg
semmit zenével.
Fogunk összpontosítani először programozási nyelv nevű Haskell.
Ez egy funkcionális nyelv, így a paradigma
nagyon különbözik a C vagy PHP vagy más kényszerítő nyelveken
hogy már használatban van, és különösen a A könyvtár írt Haskell
nevű Euterpea, melyek elősegítik az emberek A zeneírás funkcionálisan,
alapvetően.
És Stephen átvisz egy jó példa erre.
>> Ezt követően fogom bemutatni, hogy úgynevezett LillyPond, amely
olyan technológia betűszedő zenét.
Ez a fajta, mint a LaTeX a zene, ha valakinek
használt LaTeX matematikai osztályok vagy Más Pset osztályok, vagy mit.
És ezért adok neked, ismét néhány egyszerű példát, hogy
és pont akkor az általános irányába néhány jobb források.
>> STEPHEN KREWSON: A Emellett úgy gondoltuk,
jó lenne létrehozni egy kis tanácsok
felé gázvezeték között Euterpea generált MIDI-fájlok
A LillyPond, tehát minden Néhány utasítást szkriptek
erre, amelyek ellátva LillyPond
csak hogy tartsa nyílt forráskódú és kap egy vezeték megy.
CONNOR HARRIS: Ismét hangsúlyoznunk kell,
E két technológia, akkor Nem kell használni őket.
Ők nem tervezték, hogy a együtt, bár ők nagyon szépen.
>> STEPHEN KREWSON: Így van.
És teljesen ingyenes.
CONNOR HARRIS: Tehát elismerések, csak olvastam, hogy.
STEPHEN KREWSON: kellően megállapított.
Köszönet azoknak, emberek.
Ez fogok habozik egy pillanatra.
A telepítési folyamat egy kicsit trükkös.
Van egy olvasott nekem a GitHub hogy akkor vess egy pillantást.
Csak írjon nekem, ha bármilyen kérdése van.
De majd futtatni ezt a feltételezéssel hogy ez működik mindenkinek.
CONNOR HARRIS: És ha nem tudsz kap LillyPond dolgozni, nem nagy ügy.
Nincs élő összeállítás, részt fog venni, legalábbis az én vége.
STEPHEN KREWSON: Haskell és LillyPond kell mindkettő szerelők.
Euterpea letöltődik a csomag, így tovább és így tovább.
Így beszélünk számítógépes zene.
És ez csak egy Nagyon 50.000 láb kilátás.
Van néhány különböző szempontjait is.
És ez durva és fog eltakarni néhány részlet.
De eszünkbe jutott valami mint algoritmikus kompozíció,
algoritmusok segítségével, kóddal, hogy létrehoz
valamilyen of-- talán egy önhasonló sorozata jegyzetek, vagy talán jegyzetek
Bizonyos kényszer.
És akkor ezek lehetnek elvégzett vagy értelmezni
analóg műszerek vagy ilyesmi.
De a készítmény volt kész algoritmus.
>> Persze, lehet, hogy a terület számítógépes zene vagy digitális zene
mi jobban ismerik a digitális hangszintézist vagy digitális mintavételi
és digitális felvételt.
Sok digitális eszközök keresztül történik a digitális mintavétel.
Sőt, mi lesz használva az egyik ilyen, formájában egy hang font könyvtár később.
>> De van még valami, nevezzük digitális szintézis hogy kijött
A '70 -es évek végén és a 80-as években Yamaha és John Chowning a Stanford
Ennek FM szintézis vagy Frekvenciamoduláció szintézis,
ahol volt egy fuvarozó jelet, és a moduláló jellel
mind az audio spektrum.
De mit is összpontosít ma egy úgynevezett MIDI,
és persze, az algoritmikus kompozíció.
>> Nem fogunk tenni eszközök, de mi inkább megy, hogy egy kis zenét,
majd, hogy lesz értelmezhető Egyes eszközök
a mindig illeszkednek a általános MIDI szabvány.
Szóval mi MIDI?
Nem fogom, hogy túl mélyen bele, de MIDI adatátviteli protokoll.
Ez egyfajta útmutató szerte különböző vállalatok és iparágak
rendezésére hangok vagy foltok.
Szóval majd meglátjuk, hogy van egy MIDI szabvány
az összes különböző ütőhangszerek hangok és MIDI ajánlások
az összes különböző típusú Synth vagy különböző típusú minden, a műszer
csoportok egy zenekarban, mondják.
>> Te bizonyára ismeri 0-tól 127-MIDI üzeneteket.
A MIDI jelet általában Egy kicsit jelezve
hogy ez egy adat vagy állapot csomagban, és akkor ott van
hét bit egy jel.
És ezek az ellenőrzés mindent volumene
hogy az intézkedés vagy nyomás egy adott billentyűt
ha te teljesítő egy MIDI vezérlővel, valamint, természetesen,
jegyzeteket.
És persze, MIDI van rendkívül hasznos,
mert ez egy módja annak, hogy vezeték együttesen vagy lánc
egy csomó MIDI hardver eszközök.
Van hét vagy nyolc vissza a házamban.
Nem lesz igazán bonyolult, de ez nagyon erős.
És ez nagyon régi.
Ez a '80 -as évek elején, és ez nagyon szép és kicsi.
CONNOR HARRIS: Igen.
Az összes klasszikus Nintendo videojátékok lenne talán
Van MIDI fájlokat a zene, például.
>> STEPHEN KREWSON: Íme egy Például az általános MIDI,
mutató MIDI egyfajta Az általános protokoll.
És azt hiszem, el tudunk képzelni a különbség a specifikáció
hogy legyen valami ilyesmi Ezek hangszer és a tényleges
megvalósítása ezen eszközök hangok Egy hang betűtípust vagy egy adott MIDI
szintetizátor, hogy a különbség között talán egy typeface--, amely azt mondja,
általában ez a tervezés ebben a konkrét módját, hogy képviselje
jellemek és egy betűtípus amelyek egy meghatározott méretű és hangszín,
és van megvalósítása the--
>> CONNOR HARRIS: Talán egy jobb összehasonlítást lenne
a Unicode szabvány says-- ez ad Számos minden karaktert, és tényleg
Minden nyelv a világon, vagy egy hatalmas sor szkriptek nyelv
a világon, majd ezek renderelt valami grafikai
különböző betűkészlet-csomagokat.
És természetesen, lehet gondolni MIDI, mint az Unicode hang.
És ez csak egy lista of-- egy nagy folyam Az események és eszközök és miegymás,
és van, hogy van egy külön programot, mint egy betűtípust,
teszi, hogy a valamit, ami hallható.
>> STEPHEN KREWSON: Miért Haskell?
Haskell egy funkcionális programozási nyelvet, nagyon fejlett,
nagyon eltér a C, nagyon különbözik a PHP.
És fogunk látni, hogy van egy Könnyű funkció összetételű Haskell
amely lehetővé teszi számunkra, hogy szél a alkotó vagy gépelés, átírására,
valami ilyesmit Frere Jacques, ez az egyszerű dal,
van egy csomó alkatrész benne, hogy önálló hasonló vagy ismétlődő.
Szóval ez lesz néhány, A motiváció, amiért
mi használ Haskell, amelyben funkciók első osztályú állampolgárok.
>> És szerettem volna kiterjeszteni ez egy kicsit.
Ez egy kicsit könnyű notate Frere Jacques Haskell.
De mi van, ha azt akartuk, hogy adjunk hozzá egy dob része rá?
Mi lenne, ha ki akartam próbálni, hogy olyasmi, mint egy Roland 808, illetve 909 dob
gép, ahol van mintegy 16 különböző lépéseket?
Általában ezek úgy, mint 16. megjegyzi.
És akkor az ellenőrzés a globális tempó, és akkor vedd ki
egy csomó különböző ütős alkatrészek A lábdob, a taps, a különböző csapdákat,
nyitott és zárt nagy kalapok a következő fajta csatornák,
és akkor kiegyenlíti, vagy igazítaniuk hangerőt.
>> És majd meglátjuk egy szép utat Haskell a képviselő ezt a lépést
sorrendvezérlő az összes különböző klassz dolgokat Haskell
tehetünk generátor listák és szűrés fölött listákat,
térképezés több mint listákat, térképezés funkcióit az listákat.
És egy gyors bocsánatkérést.
Ez egy nagyon felületes és túlságosan gyors vázlatot
Egyes szempontok A Haskell és Euterpea,
amely a terület-specifikus beágyazott nyelven íródott
Haskell zenei típusok.
Ezért kérjük, ne nézd meg a kódot az interneten.
Indítsd GHCI, amely a Glasgow Haskell Compiler tolmács.
És fogok csinálni néhány ennek egy kicsit
így láthatja, hogyan kell ezt csinálni.
>> És ez lehetővé teszi, hogy töltsön be the-- a szintaxis vastagbél majd
A parancs.
Ön tudja tölteni a fájlokat.
Használhatja Tallózás a fájlok hogy az összes funkciót, hogy
létezik egy adott modult.
És akkor, mint látni fogjuk, fajtáját és típusát osztályok annyira fontos Haskell,
így mindig check-- különösen ha dolgozik egy új dscl
mint ez, mi az a zene típusa?
Tudom, hogy milyen módon numerikus típusok dolgoznak Haskell,
de én nem sokat tudok zenét.
De akkor tárja fel, ahogy ők által meghatározott ezzel t, vagy írja be a command
és akkor még egy adott funkciót, vagy egy adat objektumot.
CONNOR HARRIS: Igen.
Ha azt hitted, C és csenget volt hardass típusairól,
Önnek fogalma sincs arról Haskell.
A jó dolog az, hogy Haskell ha nem kap a kódot összeállításához
és ha Haskell típusú ellenőrzések, ez talán jobb,
mert a típusú rendszer annyira szigorú.
>> STEPHEN KREWSON: Igen.
Szóval csak azt akarom, hogy menjen through-- és újra,
ezt nem csinálja justice-- néhány a funkciók a Haskell, hogy legalább
annak creators-- és jött létre az 1980-as egy csomó ember,
A bizottság 20 people-- gondoltam fontosak voltak.
És az első dolog, felsorolt ​​egy papírt, hogy
leírt genezise Haskell az év első 20 év során,
volt, hogy lusta.
Tehát mit jelent ez?
>> Nos, ez azt jelenti, ha van valamiféle véleménynyilvánítás, meg kell, hogy értékelje azt.
És Haskell Teszi ezt annak hívás által szükségessége módon, vagy egy nem-szigorú módon.
Azaz, ha van egy csomó összetevője a kifejezés,
igyekszünk késleltetni az értékelési e alkomponense
amíg az abszolút utolsó minute-- vagyis amíg valóban szükség van rájuk.
>> Tehát ez means-- amely nagyon klassz, különösen
ha arra gondoltunk, hogy a kivételi A zenei step sequencer.
Bekapcsoláskor, és elkezdi fut egy lépést sequence--
Ha valaha is dolgozott egy dob machine-- és ez csak azt örökre.
Tehát ez lenne igazán jó, ha tudta felülmúlni, hogy a Haskell.
És meg tudjuk csinálni végtelen értékeket, különösen a végtelen listák.
Ez nagyon könnyű gépelni egy végtelen listája Haskell.
Lehet csak használja a szintaxis le Itt, ahol látod 1-től 3-
távolítsa el a 3 1 pont pont, és hogy egy végtelen lista
az összes természetes számok meghosszabbításáról A ameddig csak el lehet képzelni.
>> Azt akarom, hogy vezessenek be egy fogalmát ráncok azonnal.
És megint az a célja, A szeminárium nem
hogy megtudjuk, redők Haskell vagy magasabb rendű funkciókat.
De én csak azt szeretném bemutatni, hogy ad pontos értelme, hogyan fura
Haskell van, és milyen erős is.
És különösen, megyünk be-- amikor így teszünk mi más dob részei,
mi lesz manipulálni listái szám, hajtogatni egymásra.
És erre, akkor lennie térkép segítségével, és kiszáll.
>> Van egy jobb asszociatív szeres, ami ez jobb
here-- 1 mínusz a mennyiséget, 2 mínusz a mennyiséget, 3 mínusz 0.
És a szintaxis egy szeres, adsz egy kinyitható
bázis értéket, majd egy operation-- Ebben az esetben, összeadás vagy a kivonás.
Már látható mindkét esetben.
És akkor ott van egy akkumulátor, amely felhalmozódik az egész listát,
alkalmazásával ez az üzemeltető vagy plusz mínusz, majd felhalmozódó azt.
Szóval ez lesz the--, ha ez volt az úgynevezett A szeres r plusz 0, 0-tól indul,
mi lenne akkor összeadják A számok a listára.
És ez egy lista 1-3.
CONNOR HARRIS: Tehát más szavakkal Így szeres r három paramétert.
Van olyan funkció, Maga a két érv,
Aztán ott van a kezdő érték, és van egy lista eleme.
És mit csinál van szedése starter értéket, az első érték,
tedd be a funkciót.
Mit kijutni, figyelembe, hogy a takarmány, hogy
a funkciója a második érték, amit kijutni,
figyelembe, hogy a takarmány, hogy a funkciója a harmadik érték.
Aztán ha lemegy ez a teljes lista ezen a módon,
fogsz kapni végül Egyes szingulárisérték ez
Az azonos típusú, amit elkezdtél ki és az azonos típusú
a dolgok a listán, majd ez a visszatérés miatt szeres R.
STEPHEN KREWSON: Így különösen, Ezek magasabb rendű funkciókat,
mert az ember vesz egy másik funkciója, mint az egyik érv.
>> CONNOR HARRIS: Igen.
Ha már használt bizonyos egyéb languages-- Tudom R, [hallhatatlan]
nyelvnek ez, az úgynevezett Csökkentse.
Lehet, hogy hasonló feladatokat más nyelveken, csak úgynevezett
különböző dolgok.
>> STEPHEN KREWSON: És Mi a szép a behajtott R
ebben az esetben az, hogy a hajtás R működhet végtelen listák.
Tehát ebben az alsó, ez P5 generál a jegyzeteket, hogy
be van kapcsolva a lépést szekvenszer Néhány dob részét, az ötödik dob része,
és talán ez egy konga dob, vagy valami.
És ez egy szándékosan tompa írásmód ez,
de szórakoztató, mert ez bizonyítja a sok
A dolog Haskell és Euterpea.
>> Tehát szeres R e colon-- vastagbél Csak egy operátor, hogy megnyomja a dolgok
együtt egy list-- felszólította üres listát, amely csak az üres zárójelek.
És hívom, hogy Ezen végtelen listáját.
Ez tulajdonképpen két listát összeadják le ide.
A lista 1 vessző 6 pontos dot jelentése 1, 6, 11, 16.
Tehát Haskell-- mindössze néhány karaktert, akkor
generálhat az egész számsorozat
hogy öt szám egymástól nyúlik a végtelenbe.
És én hozzáfűzése az, hogy ez a rövidebb kis list--
3, 8, 21-- csak hogy megmutassam hogyan lehet összefűzni listákat.
>> És akkor én már hajtva magát.
És ez végül csak, hogy egyfajta identitás működését, de ez végtelen.
És hajtsa R tudom csinálni, mert lustán értékeli, mint a fenti.
Ha van egy 1 és A 2 és 3, tudjuk Csak zárójelbe le a teljes többit is.
Ez nem fog működni levonva vagy hozzáadva, de
működni fog ez a vastagbélrák identitás működését a listán.
>> Szóval hogyan lehet a gyakorlatban használni, hogy ha Egy végtelen hosszú listát azokról a dolgokról?
Nos, Haskell biztosít egy csomó functions--
és hogy inkább ezekbe a saját time--, mint hogy
amely azt mondja, OK, mi vagyunk generáló ez a végtelen listáját,
de mi csak fog tartani egy száma, és ebben az case--
fogjuk látni ezt később a dobgép code--
GM csak valamiféle globális változó a lépések számát
A szekvenszer.
A közlekedő gépek I. mutatta meg, hogy ez tipikusan 16,
de én hajtotta végre azt a 32.
Ez nem igazán számít.
>> Haskell is tiszta, így erős statikus gépelés Connor utalt.
Szóval funkciók matematikai a sense--
ők inkább matematikai hogy ők garantált
hogy nem fér hozzá, vagy megváltoztatni bármilyen változó vagy végre bemeneti és kimeneti.
Tehát ha van egy függvény, ez determinisztikus.
Ez mindig ugyanazt értéke az állami program
vagy ugyanaz marad.
Vannak, persze, monádi kivételek erre, de ez túl körünket.
>> CONNOR HARRIS: Igen.
Mit jelent ez, mégis, van- Néhány fontos [hallhatatlan]
Ennek a következményei.
Az egyik az, hogy nagyon könnyű összevessünk Haskell programok.
Mert ha van, mondjuk, a függvénye, hogy a
kell működnie egy millió értékeket, ha Tudja, hogy a funkció mindig
adja ki ugyanazt az értéket, ha adsz egy bizonyos value--
ha [hallhatatlan] f 1, f 2, akkor f 3 vagy whatnot-- f 1
nem fog kiírni fájlba vagy tenni valamit
hogy megváltoztatja az értéke F2.
Tudod csak szét ezt a funkciót a millió különböző gépek vagy egy millió
különböző szálak, vagy bármi, hogy minden a válaszokat vissza,
hogy minden a visszatérési érték vissza, majd ennyi.
Így nagyon könnyen összevessünk dolgokat.
>> A hátránya az, hogy input és kimeneti különösen
illeszkednek a típusú rendszer A nagyon bonyolult módon.
Mi nem megyünk bele, hogy most, de én Javasoljuk, hogy nézd meg néhány erőforrások
online, csak szeretné megismerni ezt.
>> STEPHEN KREWSON: Tehát írja classes-- és ez
was-- fajtáinak kínálnak megoldást
a probléma az üzemeltető túlterhelés.
Így akartuk, hogy az egyenlőség A különböző típusú dolgokat.
Persze, azt gondolhatnánk, of-- közötti egyenlőség numerikus típusok
Nagyon könnyű gondolni, de Mi a helyzet közötti egyenlőség listák?
Mi a helyzet közötti egyenlőség fa lába adatszerkezetek?
És ez mind lehetséges Haskell miatt típusú osztályok.
>> Tehát, ha meg egy bizonyos adatok type-- és itt, ezek a zenei helyek.
Mi végre megkapja Egyes számítógépes zene.
Tehát van C, C éles, és így tovább, és így tovább.
Ők tartoznak egy csomó különböző típusú osztályok.
EQ-- tartoznak az EQ típusú osztály.
Ez azt jelenti, hogy támogatják egyenlőség műveleteket.
Szóval lehet értékelni, hogy az egyik zeneszámokat primitívek
jelentése ugyanaz, mint a másikat.
>> Ők a sorrendi osztályban.
Ez azt jelenti, hogy van egy rendelési ezekre.
D után jön C. Cisz után jön a C is.
Ők tartoznak az osztály mutatják, ami azt jelenti, tudnak
nyomtatható egy vagy terminálon.
Ők tartoznak a osztályú felsorolt,
azt jelenti, hogy bár Ezek azok a karakterek,
hogy van egy mögöttes numerikus képviselet 0-nál kezdődik
és megy keresztül ki azonban sok dolog van, 20, vagy úgy,
vagy 30, vagy 40, talán.
>> CONNOR HARRIS: És amikor van egy adattípus
hogy derives-- azzal kulcsszó "deriving--" egy bizonyos típusú osztály,
ez azt jelenti, hogy a fordító megpróbálja építeni valamit automatikusan.
Így talán akkor szeretnénk határozza meg a minőséget másképp.
Azt akarja, hogy meghatározzák Cisz egyenlő a D sík, például.
E konstrukció Itt, nem hiszem, Cisz
és D lapos lesz egyenlő, mert a fordító automatikusan
mondom, hogy minden más lehetséges értéke különbözik minden más.
>> Így lehetséges, hogy felülbírálja Az alapértelmezett implementáció
az ilyen típusú osztályok.
Ismét nézd meg a referencia, ha szeretné megismerni ezt.
STEPHEN KREWSON: És Itt, valójában, Ez majd
hasznos lehet a kódolás közben, később.
Látjuk néhány infix operátorok szekvenciális összetétele,
párhuzamos összetétel, és így oda, ezek a plusszok és egyenlőség jelet
körülvéve kettőspont.
Ez azt jelenti, hogy tudunk játszani a különböző zenei primitívek egyik a másik után.
Ez szekvenciális összetételét.
>> Vagy tudjuk játszani őket párhuzamosan egyidejűleg.
Szóval lehet egy zenei értéke, majd ez megegyezik és kettőspont,
Infix párhuzamos összetétele üzemeltető, és játszani velük, mint egyfajta húrt.
És fogunk használni ez ha kombináljuk
a dob része a mi kis Frere Jacques dalt
játszani ezt a két szekvencia zenei értékek egyidejűleg.
>> Kikészítéséhez is-- Curry utoljára Nevét Haskell Curry, aki
A Haskell kép névadója.
És ez lehetővé teszi számunkra a Jó eleganciát mikor vagyunk
írásban ezeket a különböző funkciók vagy a szűrőket, hogy mi vagyunk
lesz feltérképezése mint a listákat.
A funkció két arguments-- f x és y--
is képviselteti magát f x alkalmazott y.
Tehát ez egy funkciója Egy érv, hogy visszatér
Egy másik funkciója az egyik érv.
Tehát ez azt jelenti, hogy a map f x fölött listáját y években.
CONNOR HARRIS: Szeretné Hogy egy példát erre?
STEPHEN KREWSON: Igen.
Van egy példát itt-re néhány dolog fogjuk írni.
Tehát lemásolni 2-- is, lemásolni kerül
Egy érték, ami hány alkalommal megismételni valamit,
és akkor lesz egy value-- általában egy listát, vagy valami.
Tehát itt vagyunk feltérképezése lemásolni 2 másik felett listáját.
>> Tehát, ha feltérképezzük lemásolni 2, ha lemásolni 2 alkalmazni
Az első eleme ennek list-- és Ezek listák zenei phrases--
fog két "te sleeping--" így alszol, alszol.
Tehát most van kettő.
De úgy két párhuzamos érvek, hanem azért, mert mi vagyunk
kikészítéséhez majd feltérképezése, tudjuk képviselni párhuzamos 2
mint már visszatért a függvényében Egy argument-- csak lemásolják kétszer.
És akkor mi alkalmazása, hogy az egyes eleme a fenti kifejezések.
>> És concat egy Haskell művelet összeolvasztás listáját.
Mivel párhuzamos 2 akarata listázza a listákat.
És ez ebben a köztes formája van.
És akkor mi is concat vagy lelapul, hogy kétszer.
CONNOR HARRIS: Egyszerűbb Például a kikészítéséhez,
ha azt az általam elvártnál képzelni f mindössze szorzásművelet, hogy úgy két
érvek és visszaadja a terméket.
Tehát ha van egy f 4 5, ez 20.
De lehet gondolni ezt also-- van egy f 4
hogy vesz egy érv, és visszatér négyszer argument-- csak
részleges alkalmazás, amely Csak egy érv 4.
És ha adsz f 4 5, hogy kapsz 20.
És ez egy egyszerűbb Például a szíj.
Ez általában az egyik tankönyv is.
>> STEPHEN KREWSON: Lambda kifejezéseket vagy névtelen függvények
egy másik Haskell fémjelzi.
Tehát, ha szükségünk van, hogy felkap egy kis funkció élet párhuzamos,
de azt mondják, ez nem az A standard könyvtár,
tudjuk használni a szintaktikai hasonló a következőket.
És mi szél emiatt.
Egy dolog látni fogod a sok a dobgép van tesszük hívások
valami úgynevezett kiszűrni, amely, mint korábban,
egy leképezés egy függvény több mint egy lista, de ez
feltérképezése egy logikai függvény.
>> Tehát van itt egy példa Egy névtelenül
meghatározott logikai függvény, Csak úgy egy pár értékeket.
Ez nem szigorúan véve egy névtelen függvényt.
De ez határozza meg a hogy szintaxis rövidség
és ez csak úgy x modul n--
CONNOR HARRIS: Igen.
Tehát f függvénye két érvet n és p
ami visszaadja a függvény, amely maga is függvényében egy érv, nevezetesen x.
STEPHEN KREWSON: I a fent említett infix operátorok.
Mik infix operátorok?
Nos, infix operátorok a szokásos módon képviseljük műveletek,
azt mondják, a mathematics-- 2 plusz 2 helyett az üzemeltető plusz
majd két érvet 2 és 2.
CONNOR HARRIS: Úgy hívják fordított lengyel jelölés, amely
kifejezést Kétlem bármely tudni fogja.
>> STEPHEN KREWSON: Így van.
Fordított lengyel vagy előtag jelöléssel.
De Haskell úgy döntött, hogy Használja infix operátorok.
Tehát ezek egy része Az egyéni is, hogy
határoztak meg az Euterpea dscl Haskell.
Szóval ez volt szekvenciális összetételét.
Ez volt a párhuzamos készítmény, és ez a volt visszavágni párhuzamos összetételét.
És szükségünk lesz, hogy a mi dobgép,
mert fogjuk használni az utolsó szereplő a kis tuple van
játszani a dobgép mentén a mi Frere Jacques dalt.
És mi dobgép van lesz végtelen.
Csak játszik örökre.
De a Frere Jacques dal nem.
Ez nem olyan hosszú.
Ez csak néhány taktust.
Tehát meg kell állítani a dobgép, mint Amint a rövidebb zenei érték jön
véget.
És hogy infixed üzemeltető szuper hasznos ezzel.
>> És infix jelölés, mint ez a fajta szép,
mert azt mondják, hogy van egy ilyen függvényt idézet, amely a egészosztás
Az x valami else-- Sajnálom, hogy legyen a és b.
Lehet írni, mint egy idézet a b.
Tehát, ha put-- elem egy másik példa erre.
x elem néhány listát, ha tesz ez a fordított aposztróffal, akkor tudja használni.
Annak ellenére, hogy ez nem egy szimbólum mint plusz vagy mínusz vagy szer,
akkor használja a nevét egy funkciót, mint hogy a fordított aposztróffal
mint operátor segítségé- vel, ami elég jó.
CONNOR HARRIS: Ez megint minden csak szintaktikai cukor, tényleg.
Ez nem befolyásolja a lényege nyelven.
>> STEPHEN KREWSON: Tehát azt látjuk, itt a utolsó fordulata a Frere Jacques dalt,
Játszottam egy kis akkordokat, vagy kétharmada a párhuzamos összetétele
operátor.
Ez más szóval néhány Az amit az imént mondott.
Így térkép funkciói Egy vitatkozni listákat.
CONNOR HARRIS: Ismét referenciák A Haskell-- bevezető tankönyvek
lesz az összes e benne.
>> STEPHEN KREWSON: Tehát itt egy szép vonal, a step sequencer
Most vessünk egy pillantást a egy listát a megértés.
És itt látunk, az adott elem fix szereplő vissza idézetek.
Tehát, ha x egy eleme, a lista X, akkor hívjuk össze perc funkciókat.
Szóval perc csak egy ütős funkció.
Beletelik némi értéke p ez része a korlátos sor minden
A különböző ütőhangokat hogy láttunk egy korábbi csúszda,
és akkor ad, hogy időtartama negyedévében a jegyzetet.
Különben ez ad, hogy a qnr, és qnr csak egy negyed hang többit.
>> Tehát ez kiépítése valami szép.
Van egy lista elemeit, és fogunk végiglépkedjünk néhány lista egyik
a max értéke a step sequencer.
És ha már itt tartunk egy adott i hogy listát egy a max értéket,
ha ez a i egy tagja ennek set létre ezt a funkciót,
Nos, akkor kapcsolja egy ütős jegyzetet.
Ellenkező esetben, mi csak játszani pihenni, amelyek Azaz, mi csak maradjon csendben.
És van itt szó, hogy a ez a lista a megértés szintaxist,
x által lakott ebben a lista épített egy
A globális méretű sorrendvezérlõvel.
CONNOR HARRIS: Igen.
Az alapvető szintaxis lista comprehensions van
konzol, értéket érintő Egyes változók, bár,
lehetséges értékeit a változók magukat, zárt konzollal.
És ha már kész beállítani építő jelölés bármiféle osztályban a matematika,
lehet, hogy állítsa 2n ilyen hogy n vagy n jelentése Z.
Hasonló thing-- ezt a jelölést célja, hogy szuggesztív
Az, hogy a matematikai jelöléssel.
STEPHEN KREWSON: És akkor alkalmazni több predikátumok
és több szűrőt egy listát megértés, ami elég szép.
Algebrai types-- vagyunk nem habozik sokáig itt.
Van nem egy jó elképzelés a Haskell vagy egy jó, nyilvánvaló fogalma
A hogyan kell, mondjuk, egy alapértelmezett paraméter függvényében, vagy valami.
Python, ez elég egyszerű.
Tudod csak mondani megegyezik a A nyilatkozat a funkciót,
alapértelmezett érték esetben sem kerül forgalomba.
>> Haskell, akkor talán Használja talán az lehet, írja,
vevő vagy semmi vagy egy típusú érték csak egy.
Tehát kihasználni ezt a dobgép hogy lehetővé teszik számunkra, hogy nem kötelező volumene
paramétereket minden egyes dob részek.
Szóval ez ad nekünk egy módja annak, EQ vagy egy kötetet egy adott csatornán.
>> CONNOR HARRIS: A Más Haskell példák,
Lehet látni, talán használható funkciók meghiúsulhat.
Ez egy közös egy.
>> STEPHEN KREWSON: És akkor a kínálat valamilyen hibaüzenetet legyen az alapértelmezett.
És ez különösen hasznos, ha csinálsz az I / O Haskell.
Ez lehet trükköket.
CONNOR HARRIS: Vagy egy Hasonló példa, gondolom
Egy függvény, amely magában foglalja divízió Az a paraméter, amely lehet 0.
És a függvény tudja visszatér talán mindegy.
Tehát, ha nincs 0-val osztás, hogy vissza fog térni, csak mi.
És ha van osztás 0, akkor vissza semmit
mert így a jelző a hibát.
Mert az egyik következménye Haskell nagyon szigorú gépelés
az, hogy nincs real-- Kivétel a kínos, alapvetően,
hibakezelés kínos.
És ez az egyik nagyon közös módja csinálja.
>> STEPHEN KREWSON: Tehát most kap Egy másik pszichedelikus dolog
mintegy Haskell, amely minta megfelelő és függvénydefiníciókat.
Megmutattam neked az utolsó dia a nyilatkozat a lépéssorozat
funkciót, amelyik egy talán értéket, Ezután egy int, majd egy listát a ints,
majd visszatér egy sorozata zenei értékek vannak jegyzetekkel
Mindkét hangmagasság és a hangerő.
>> Tehát a három érvet lehet minta illeszkedik a következő módon.
És mindig biztos akar lenni abban, hogy nem egy alapeset vagy kilépés esetén az első.
És ezek aláhúzás egyszerűen értelmezhető
hogy minden olyan értéket, hogy ott van.
Tehát, ha kap egy hívást, hogy lemond sorrendben néhány érték, más értéket,
majd az üres lista, amit akarunk hogy visszatérjen csak a csend, a többi 0.
>> És ahelyett, hogy hogy egy üres lista, vagy 0,
ez egy nyugalmi 0, mert mi vagyunk foglalkozik a zenével típusú,
és az üres listát a zene típusú mindössze többi nem időtartamát.
Ez nem szól a zene.
És akkor látjuk, ha kapunk egy lépésben a sorozat, v hangerő érv,
o elkerülésének eszköze érvet, majd egy listát x években.
>> Akkor mi néhány dolgot.
Különösen azt alkalmazni ez a lista a megértés,
és mi végre valami műveletek a talán értéke
hogy átalakítsuk azt egy számértéket úgy, hogy lehetne majd felsorolta és használt
válassza ki a műszer.
Ismét, ez egy kicsit kicsit szándékosan inconcise
csak hogy megmutassa a furcsa dolgokat, meg tudod csinálni a Haskell mint te
vessünk egy pillantást, hogy a maga idejében.
>> Minden rendben.
Szóval végre megkapja a csinálni, amit meghatározott köze,
amely, hogy néhány számítógépes zene.
Úgyhogy megpróbálom hogy a Frere Jacques dalt.
Tehát vannak, hogy hány kifejezések Frere Jacques?
Négy.
Nagy.
És mi a szép, hogy ezek mind ismételt
azonos mennyiségű szer, ami két.
>> Tehát van négy kifejezések Minden kétszer ismételjük meg.
És különösen, ők egy fordulóban.
És sokan vannak, Sok szempontból, hogy hajtsák végre
egy kerek, hogy lehet szórakoztató is.
Megcsináltam egy Nagyon egyszerű módja van,
ami csak construct-- a sor függvény egy lista a zenei értékek
és kiderül, hogy a szekvenciális összetétele azzal, hogy e szekvenciális összetétele
operátor.
>> És akkor késlelteti a különböző részek azáltal, hogy kezdődik a többit.
Szóval kezdődik a többi két intézkedés, majd a többi négy intézkedést,
majd egy többi hat intézkedések, majd a kerek
működik, mint tudjuk ezt a dalt.
Látjuk két kommentárokat, vagy módosításokat a zenei értékek
hogy tartalmazza ezt a szekvenciális elrendezése zenei elemekkel.
Van egy add hangerőt.
Ez a funkció jegyzetekkel zenét adott térfogatra.
Ez egy jó példa a MIDI jel futó
0-127, a hét bit információt, hogy lehet végrehajtani.
>> És then-- láttuk, hogy nagyon röviden, de az általános MIDI
listáját a különböző eszközök.
És ott nem egy csomó közülük.
Ha egy digitális audió munkaállomás, mint Ableton Live, vagy a Pro Tools,
van egy hihetetlenül szélesebb szintetizátorok és VST hangszerek.
De a MIDI szabvány csak van egy pár, vagy több tucat.
És némelyik vicces.
Azt gondoltam, hogy vicces lenne, ha játszottunk Az eszköz a MIDI eszköz
helikopter, majd a következő utat a kerek,
csináltunk egy pad szinti, majd a ez a giccses vezető négyszögjel szintetizátor,
majd hangot szivárog, amelyek a kicsit homályos az én rossz MIDI
szintetizátor, de az OK gombra.
>> És akkor azt látjuk, ez let és a szintaxis Haskell,
majd mi játszunk ezeket a részeket össze
A párhuzamos összetétele üzemeltető.
És valószínűleg mutatnak e.
Itt a kód.
És láthatjuk a C, nem lenne egy Sok torokköszörülés és nyomás
A táblázat kódot, mielőtt tudta, hogy a zene, mint ez.
És más programozási nyelvet, akkor azt valószínűleg
kapcsolatba kell lépniük a valamilyen könyvtárban vagy API és mindent beállítottunk,
majd ha volna, hogy tisztítsák meg.
De itt Haskell, azt hiszem, egyszer kap a nyitjára, hihetetlenül
olvasható és nagyon kifejező.
Tehát van végrehajtásáról A Frere Jacques.
Minden rendben.
Most szeretnénk felvenni ütőhangszerek, és ez egy kicsit Messier.
Szóval vessünk egy pillantást a diák.
Tehát a nagy ötlet az, hogy egy csomó listák vagy alkatrészeket.
A fenti közlekedő gépek mellett jellemzően mintegy talán nyolc
10 ritmus vagy ütős részeket.
És majd egy csomó technikát.
És beszéltünk these-- segítségével redők, szűrők, lambda funkciók,
leképezve át listákat értékeinek előállítására néhány tartomány 1 és R, R 16,
vagy 32 lépés a szekvenszer.
>> És akkor, ha van egy értéket a listán mint mi fut át ​​a sequencer,
fut át ​​rajta, és vége, akkor bekapcsol a feljegyzésben
és hogy a minta aktiválnak.
Itt megtalálja az összes különböző furcsa módon Kitaláltam, hogy létrehoz jegyzeteket.
Próbálja ki a saját félig összeget.
Ez lesz a hang jó.
Az idő megengedi, akkor végig ezt.
De most, azt hiszem, meg kell demo, amink van.
Reméljük, ez megy az OK gombra.
>> Tehát ez GHCI.
És majd tölteni a fájlt Van úgynevezett song.lhs,
amely a fájl csak mutattam.
Jólvan szuper.
Connor azt mondta korábban, hogy összeállításakor típusa ellenőrizni,
így tudok lélegezni sokkal könnyebb.
Ez nem fog felrobbantani rám.
>> Én meg akarom mutatni neked valami hasznosat.
Láthatjuk, hogy a modul betöltése nevezett 50.
Kereshetünk ezt a modult.
És ez olyan szép mintegy doing-- talán mi
csinálsz Haskell nem nevű szoftverfejlesztés,
de akkor nem sok szórakoztató dolgokat a saját.
És a munkafolyamat igazán szép, mint mint sok más nyelven,
mert látni lehet egy igazán olvasható módon, mi folyik itt.
Tehát azt látjuk, hogy van Mindezen kifejezések, amelyek
a zenei összeállításokat helyek, és akkor építeni ezeket fel valami nagyobb,
amely a zenei dalt.
Ez egy zenei egységet.
És akkor mi is játszani ezt minden a nevezett funkció zenélni.
Láthatjuk, hogy itt lent.
Amely csak játszani.
>> Azt kell say-- én nem beszélni ez a dollár jel, hogy mindenhol ott van.
Dollárjel egy másik operátor segítségé- vel.
De ez a legalacsonyabb elsőbbséget bármely üzemeltető, amely hatékonyan
azt jelenti, hogy mindent A bal oldalon a dollár jel
és a jogot a dollár jelet, mi lesz, hogy értékeljük előtt.
Tehát ez a fajta, mint a másik hozzáadásának módja zárójelben.
>> CONNOR HARRIS: Ez alapvetően funkciót összetételét.
És ez biztosítja, hogy ne have-- ha Van funkciók mindkét oldalára vagy infix
üzemeltetők mindkét oldalán, akkor nem társítani át rajta, és kapsz
várt eredmények.
>> STEPHEN KREWSON: Tehát can-- segítségével, hogy tudjuk hívni.
Először fogunk játszani nélkül a dobokat.
Ez a helikopter, A MIDI helikopter.
>> [Zenelejátszási]
Ott a négyszögjel.
A hang szivárog.
És akkor tényleg megőrülnek ezt.
Felvettem egy nagyon egyszerű, mert tudtam, hogy nem harap le
Több mint tudtam rágni.
Csak tartsa nagyon egyszerű megmutatni a főbb gondolatokat.
De aztán olyan volt, mint volt, most már Van, hogy adjunk néhány dobok ehhez.
Csak azért, mert ez egy kicsit átláthatatlan,
és én nem használja a Nevét a dob részek,
Feltérképeztem them-- mert ők része, hogy a felsorolás osztály,
Feltérképeztem őket ints.
Az egyik olyan, mint egy nagydob.
Zero is.
A hét nagy kalap.
És le itt, ahol a funkciók egy kicsit több véletlenszerű,
Ezek olyanok, mint a konga dob.
>> Tehát, ha úgy gondolja, about-- talán egy szórakoztató módon, hogy végre egy dobgép
az, hogy nagyon rendezett minták a lábdob.
Így például a szűrés felett listát, hogy mindent ad vissza
1, ha ez hozott modul 04.
Szóval kapok 1, 5, 9, 13, 17-- így ez az első ütemére minden intézkedést.
>> És akkor ez ugyanaz dolog eltolódott a két lépésre.
Szóval ez a szokatlan.
Ez lenne tehát a olyasmi, mint egy nagy kalap.
És akkor megint, itt lent, ez egy kicsit véletlenszerű,
mert csinálunk konga dob.
És van néhány csörgőkkel idelent is.
>> Így tudtam hívni játék dobgép, de ez örökké,
és ez talán újra megragadta fel az összes memóriát az én-rendszer.
Szóval hívom ezt a funkciót zenélni, amely mint látni fogjuk,
Használja a csonkolt párhuzamos összetétele játszani a mi kis Frere Jacques dalt
ezzel együtt a furcsa dobgép.
Szóval vessünk egy pillantást.
És kérem, ne javítsák az én elrendezése minden a dob részeket.
Nem az én specialitásom, de én Volt egy nagyon szórakoztató csinálja.
>> [Zenelejátszási]
>> Így persze, ez az egész egy kicsit nem olyan szórakoztató,
ha nem konvertálható egy pontszámot, így lehet, hogy
lehetne értelmezni, egy emberi előadóművész.
Szóval nem fut itt.
Már létrehozott fájlokat.
Láthatjuk, hogy van egy dot LilyPond file-- és ez
lesz a Segue át Connor-- és egy pontot MIDI fájlt,
és egy pontot PDF fájl, amely a mi LilyPond végül generál.
>> De ezek azok a szkriptek, és én csak fuss őket az ő segítségükkel lehetőség.
Ha ilyen, és fut Euterpea, akkor létrehoz egy MIDI-fájl.
És akkor a MIDI fájl ezzel a MIDI 2LY program
akkor létrehoz egy Lily Pond fájlt, és akkor
generálhat PDF a pontszámot.
És mi kell egy pillantást erre.
Így Connor valószínűleg azt mutatják, Ön hogyan jegyzetekkel ezt jobban,
de ez Frere Jacques mint által generált nekem Euterpea.
Ez csak a C. kellett volna gondoltam hogy mi a hack ez valójában.
De ez a csővezeték hogyan csinálod, hogy ezzel.
Beszéljünk többet LilyPond.
>> CONNOR HARRIS: OK Lássuk.
Említette Ismerje meg Ön Haskell?
STEPHEN KREWSON: Ó, igen.
Nézze meg tanuljanak meg Haskell.
Ez a forrásokat.
Így kezdtem tanulás, és ez nagyszerű.
Nem hülye tanulás.
>> CONNOR HARRIS: Szóval ez az interneten.
Tehát egy srác nevű [hallhatatlan] learnyouahaskell.com, szóköz nélkül.
Nyelvtan beteg.
STEPHEN KREWSON: Ez illusztrált is.
CONNOR HARRIS: Tehát mi LilyPond?
Ez egy deklaratív programozás nyelv zenei betűszedő.
Szóval declarative-- tudsz gondolni a dolgokat, mint a HTML,
ahol te nem saying-- HTML Nem mondom, hogy a böngészők
render oldalak lépésről lépésre.
Ez csak azt mondom, ez a egy szöveges leírás
hogy mit akar az oldalt, hogy néz ki.
>> És akkor ez is egy programot hogy lefordítja ezen a nyelven,
vagy az beolvassa a be majd ténylegesen nem a betűszedő az Ön számára,
és kiköpi ezeket Csodálatos megjelenésű PDF pontszámok.
Ön is kap PNG formátumban, vagy bármi.
Egy jó módja annak, hogy úgy gondolja, erre analógiájára
az, hogy a LaTeX a fajta, mint LillyPond, de csak hétköznapi betűszedő.
Tehát ahelyett of-- ez nem WYSIWYG, What You See
What You Get, mint mondjuk Finálé, vagy Sibelius,
vagy a Microsoft Word, ahol beírhatod valós időben és a tervezet a dolgok valós időben
és látni a változásokat azonnal.
>> Ez a szöveg alapján.
Meg kell fordítanod a pontszámok egy külön programot
és kijutni a PDF fájlok később.
Ez egy kicsit kevesebb kényelmes használatra, ha
próbál írni közvetlenül egy pontszámot, és te
próbált magában a számítógépen.
De van egy csomó előnye érte.
Az egyik, úgy néz ki sokkal kedvesebb, mert LillyPond lehet ténylegesen
időt arra, hogy ezt layout döntések megfelelően,
eltérően Sibelius vagy Finale, amelyeknek hogy beszűkült algoritmusok így
hogy képes megjeleníteni dolgok valós időben.
>> Akkor miért van LilyPond-- számítógépes grafika nehéz.
Ha csinálsz semmit zenével és azt szeretné, hogy írjon ki pontszámokat,
nem akarok írni ki mindent magad
kezdve hogyan kell felhívni botok és hogyan kell felhívni jegyzettömbök.
Ez nagyon nehéz. Ez megtörtént korábban.
Jól vagy.
>> Ha a használni kívánt Finale vagy Sibelius, A fájlformátumok azokért a dolgokért,
nagyon bonyolult, és nem tudsz tényleg használja őket programból.
Akkor nyit Sibelius és Finale és válassza ki a Fájl, Export PDF magát,
de nem igazán lehet nevezném egy script.
LillyPond, akkor hívja azoktól szkripteket.
Könnyedén ismételget LillyPond LaTeX.
Nem lesz, hogy sok időt menni figyelembe ezeket a technológiákat most,
de léteznek.
Ha meg szeretnéd nézni egy LillyPond könyvet,
ez egy program ami Ön LillyPond forgalmazás,
és ez a iterációjával LillyPond töredékek LaTeX
Ha azt szeretnénk, hogy tegyen valamit mint egy nagy zenetudományi dokumentum
példákkal, például.
És ez egy jó készség az élet, ha csinálsz valamit
zenével, nem csak CS50.
Én is használtam LillyPond minden Az én összetételű projektek
mivel én alapvetően egy középiskolás.
>> Tehát itt van néhány egyszerű példát.
Ez alapvetően képviselője A nehézségi szintet
hogy a legtöbb ember szembe vele akarták
használni LilyPond egyszerű projektek.
Ez első a kezdet egy Korálelőjáték Bach.
Ez alsót egy részlet az egyik saját munkák,
és ez csak ott, hogy jelezze Ön a dolgok, mint [hallhatatlan]
amivel több vonal ugyanazon személyzet, hogyan lírai undersetting működik.
Líra alátétek olyan dolog van, ami nagyon könnyen kezelhető LilyPond a kóruszenének.
>> És akkor ott van még néhány bonyolultabb példák itt.
Mindezeket történik LilyPond és ők megvalósítható.
Ez az első részlet re [Hallhatatlan] által [hallhatatlan].
És ez [hallhatatlan] -tól egy darab az egyéni basszus
fuvola által [hallható], aki egy longtime--, aki
volt egy régi tagja zenei részleg itt, azt hiszem.
Nem vagyok benne biztos, ha ő elment, hogy.
De ő volt a tanácsadója a Harvard Zeneszerzők Egyesülete sokáig.
Csodálatos ember.
És azt írja a zenét, amely nagyon bonyolult jelölés, LillyPond
mindazonáltal kezelni nagyon szépen.
>> Tehát csak hogy érzékeltessem, hogy mi ez a dolog képességeit are-- így
A belsõ LillyPond nagyon bonyolult.
És tudod használni az hosszú ideig, beleértve
néhány elég bonyolult dolgokat, anélkül, hogy igazán
kelljen sokat tud róluk.
De az alapötlet az, hogy a legalacsonyabb szinten, az atomok LillyPonds
a jegyzeteket.
A jegyzetek tartalmaznak összefüggésben az úgynevezett hangokat.
Tehát a hang keretében alapvetően megfelel
az egy vonalra leütését.
És akkor a szövegkörnyezetben lehet tartalmazott hierarchikusan
A magasabb szintű is, hogy képviseli vezérkar a pontszám
vagy nagyobb csoportosulásokat, mint zongora botok vagy kórus botok,
majd végül teljes pontszámot környezetben.
És tulajdonképpen magában foglalja több hanganyagot egy könyvben.
>> És minden összefüggésben van számú mellékelt rézmetszés.
Ha megnézed a tartalmát egy kontextus
és nyomtatni egy bizonyos szimbólumot vagy bizonyos osztálya szimbólumok szükség.
Tehát minden hang összefüggésben van [hallhatatlan] jegyzetek
rézmetsző, hogy alapvetően egy funkciót vagy egy tárgy, amely azt írja ki az összes jegyzetet
fej jobb részek az oldalon.
Aztán ott van a hasadék rézmetsző, amely kiírja hasadékok a személyzet.
Aztán ott van egy metronóm mark rézmetsző, hogy
kiírja a metronóm jelöléseket egy pontszámot.
És mindezek illeszkednek elég valamint a hierarchiában.
És ez nagyon, nagyon, nagyon testreszabható, amelyben meg kell
Ha azt akarjuk, hogy az ilyen dolgokat.
>> Tehát minden környezetben van Sok más-más tulajdonságokkal
hogy lehet módosítani mindent a távolság a különböző betűkészlet
Kijelölés méretű dolgokat.
Ha azt szeretnénk, hogy még bonyolultabb dolog,
van egy beágyazott programozási nyelv.
Az általuk használt rendszer, amely a nyelvjárás LISP.
Ezek valószínűleg nem jelent semmit.
De alapvetően, a program egy másik funkcionális
programozási nyelv, több vagy kevesebb.
>> STEPHEN KREWSON: A tie-ben.
>> CONNOR HARRIS: Igen.
Ez egy jó tie-ben, azt hiszem.
És ez használják a tanítási nyelv, valóban, le Mass Ave A MIT.
És ez nagyon jól jöhet a LillyPond A különböző technikai okok miatt.
>> És ezért ha azt szeretnénk, hogy győződjön egyszerű csíp függ feltételes,
A example-- vannak bizonyos feltétele a kottát, hogy találkozott,
hogy változnak a elrendezés vagy whatnot-- majd
ezek a lehetőségek vannak.
Ők bonyolult.
Tehát itt egy nagyon egyszerű kódpéldára.
Ez öt sor.
Alapvetően én meghatározó két vezérkar.
Ez a 3/4.
Az első személyzettel rendelkezik mellékelt tempó jelet,
de ez valóban megy menni az egész pontszámot,
mert tempó jelek vannak a pontszám szint.
A metronóm védjegy rézmetsző csatolták gólt összefüggésben.
Vannak különböző kulcsok, mert az [hallhatatlan] rézmetsző
csatolták a vezérkar.
Tudod valójában tennie.
A mintát írtam is valójában C-dúr,
de ez csak a bizonyítani tudja, hogy
különböző kulcsokat különböző vezérkar.
És az alapvető szintaxis írsz megjegyezni a neveket, E, F, G, mindegy.
Ha szeretne csinálni accidentals, Ön utótag vagy ES.
Ez holland zenetudományi egyezmények.
>> És hogy nem oktáv ugrások, meg kell használni Ezek osztásjelek, vessző sem aposztróf.
A relatív csak azt jelenti, amit ki egy feljegyzést,
akkor automatikusan plaec a oktáv legközelebb az előzőhöz.
És ha akarsz ugrani több mint Egy fifth-- mondjuk egy ötödik vagy more--
akkor meg kell használni a [hallhatatlan].
De egyébként, akkor nem kell adja meg az oktáv minden egyes hang.
>> És relatív C, elsődleges, és a C, csak adja meg a közép C
és az alap C, különösen az első feljegyzések.
Akkor neked ezek a botok, hogy szervezzen E két hang, vagy a minták a zene,
és van egy pont.
És úgy néz ki, mint ez.
>> Ha azt szeretnénk, hogy időt arra, hogy másolni, hogy mintát LillyPond
kód az előző lecsúszni itt, és
lehet írni, hogy a LillyPond magad.
Tudom, hogy van valami hogy néz ki, mint ez.
Szóval van egy másik technológia nevű Music XML karbantartott
teljesen eltérő emberek.
Az XML egy szöveges adatok structure-- I Nem mondom adatok structure-- mondják
metaforája térképen fajta.
És úgy tervezték, hogy tartsa hierarchikus adatok nagyon jól.
HTML-ben például, egy olyan típusú XML.
És meg tudod mondani, XML, mert Volt minden a szögletes zárójelet és a szög
konzol jeleknek ami adatokat mutat mezőket.
>> Nem kell a kódot például Music XML.
Megtalálható magát.
Alapvetően azért érdemes használható az XML, mint a köztes szakasz
van, először is, ez Egy csereformátum
A alapvetően every-- nem kéne mondani minden, de egy csomó más pontszámot
írók.
Tehát ha írsz Zene XML, nem csak LillyPond
olvasd el a segítségével ezt a segédkontaktuson nevű program Music XML LY,
hanem Finale lehet olvasni ez, Sibelius tudja olvasni.
Attól függően, hogyan belső objektum hierarchiában működik képviselő zene,
akkor könnyebb, hogy írjon ki a Music XML, mint a LillyPond
és csak támaszkodni Music XML hogy LY Az átalakítás.
>> Nem hiszem, hogy [hallhatatlan] rendelkezik Music XML.
STEPHEN KREWSON: Nem kapcsolódik.
Valaki dolgozik rajta, mégis.
>> CONNOR HARRIS: OK.
Euterpea nem rendelkezik Zene XML kimeneti funkció még.
Ha azt szeretnénk, a végleges projekt ötlete, Talán lépni srácok
hogy Stephen tudja, és tudták használni a segítségedre.
>> STEPHEN KREWSON: Én szeretem.
CONNOR HARRIS: Is, alapvetően, Minden programozási nyelvek
ez érdemes a só Már van egy XML könyvtár,
így belsőleg megtérít minden A zenét a néhány tárgyat
hogy az XML könyvtár írhat arra, hogy kevesebb lenne szükség
változtatások a belső szerkezete bármilyen zenei objektumok
akarsz írni, mint az írás, hogy közvetlenül LillyPond lenne.
Akkor csak nyomtassa ki az XML és Az XML könyvtárak az Ön nyelvén,
amely garantálja, hogy ez az szintaktikailag helyes, és mindent,
majd átalakítani, hogy LillyPond.
Szóval technológia érdemes nézni, ha csinálsz valamit
ez tetszik.
>> [Hallható], egy másik auxilarry technológia.
Ez alapvetően Tech Works vagy Tech Stúdió a LillyPond.
Tehát kínál segítséget szintaxis, sablonok
A különféle közös kombinációi eszközök.
Ez lehetővé teszi az osztott képernyős, így akkor már a kód egy ablakban
és PDF másik ablakban, és kattintson helyen a PDF
ugrás az érintett foltok a forráskódban.
Ez több hasznos, ha ténylegesen írásban LillyPond fájlok magát
mint ha generáló őket programból.
De ismétlem, ez valami hasznosat, hogy van.
>> Nagy.
Egy másik resources-- Én csak végig ezt nagyon gyorsan.
LillyPond manuals-- LillyPond van kiváló dokumentációt a honlapján.
Nekik van egy tutorial.
Nekik van egy szintaktikai hivatkozást.
Nekik van több száz töredék különböző apró dolgok
yo szüksége lehet tenni bizonyítani különböző képességek.
Ha a használni kívánt A programozási nyelv
vagy hogy szélesebb körű testreszabást, akkor ott van
belső referencia adott URL-címen.
Ha a használni kívánt Music XML, van hogy az URL, musicxml.com/tutorial.
>> És akkor, ha meg kell tanulni rendszer mert ha valóban szeretné használni
A script létesítmények LillyPond, Aztán ott van a [hallhatatlan] nevezett
Strukturált értelmezése A számítógépes programok,
amely nem csak a második legnagyobb CS könyv sem written--
rám talál utána, ha tudni akarod, mit gondolok a legnagyobb egy is--
de ez is egy nagyon jó Bevezetés a nyelv helyes.
Akkor nem kell több, mint Az első néhány fejezet.
>> És ennyi.
Bármi kérdés?
>> Diák: Hol tudom letölteni A keletkezett Frere Jacques
így tudok tedd az én iPod?
>> STEPHEN KREWSON: Nos, akkor írj ki néhány wav fájl Euterpea.
És van a kód.
Ez a GitHub.
Készítsd el saját változatát, Frere Jacques által CS50 kaptár elme.
Jó lenne.
CONNOR HARRIS: Még valaki?
STEPHEN KREWSON: Szükségünk jobb nagydob is.
Ez tényleg rossz.
>> Diák: Euterpea nem csak A kompozíció oldalon, de signal--
STEPHEN KREWSON: Igen.
Tény, hogy a munka I. tette Euterpea amikor
vette this-- van egy diplomás természetesen a Yale, hogy
használja it-- volt hangszintézist.
Szóval van egy nagyon Jó utat nyilak segítségével
és néhány, a jelölést láttunk zeneszerzés együtt jelet funkciókat.
Különösen a basszus a legtöbb közülük csak egy egyszerű szinusz hullám.
De ha elkezd alkotó azoknak fura programadó módon,
akkor kap őrült hang hatások, mint a fura zuhatagok.
Tudod teremt nagyon karakán hangok egy csomó moduláció.
>> Én egy projekt szemcsés szintézis, amely a
valahol a kettő között FM és mintavétel.
Veszel nagyon kicsi, kis mintát, majd
összekapcsolják őket valamiféle modulátor és létre kell hozni egy gazdagabb hangzást.
Mi is volt a fizikai modellezés, így próbál gondolkodni a fizika
és pszichoakusztika valami hasonló a trombita, és gondolkodik, ahogy
A hang pattogó le A harang a trombita
és az akusztika A szoba és modellezés
hogy az alapvető oszcillátor.
CONNOR HARRIS: Köszönöm szépen.
Köszi, hogy eljöttél.
És én mindig szívesen tehetnek fel kérdéseket a email--
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Igen. stephen.krewson@yale.edu.
Hűvös.