CONNOR HARRIS: Bok.
Ja sam Connor Harris.
Ja sam CS50 CA na Harvardu.
STEPHEN KREWSON: Ja sam Stjepan Krewson.
Ja sam TF za CS50 na Yaleu.
CONNOR HARRIS: I mi ćemo razgovarati o nekim tehnologijama koje možda
želite koristiti, ako ste zainteresirani na taj konačni projekt ili stvarno
ništa s glazbom.
Mi ćemo se usredotočiti na prvom a programski jezik zove Haskell.
To je funkcionalni jezik, pa je paradigma
vrlo različit od C ili PHP ili drugim imperativ jezici
koje ste koristili već, a posebno na knjižnica napisan u Haskell
zove Euterpea, koji može pomoći ljudima s pisanjem glazbe funkcionalno,
u osnovi.
Stephen će vas provesti izvrsnog primjer toga.
>> Nakon toga, ja ću vam predstaviti nešto što se zove LillyPond, koji
je tehnologija za slaganje sloga glazbe.
To je vrsta kao LaTeX za glazbu, ako bilo koji od vas
koriste LaTeX za matematike klase ili ostali P set klasa ili što si.
I tako ću ti dati, opet, neke jednostavne primjere koje
te vas uputiti u opće Smjer nekih boljih resursa.
>> STEPHEN KREWSON: U Uz to, mislili smo
bilo bi super da postavite malo savjeta
prema cjevovoda između Euterpea generirani MIDI datoteke
u LillyPond, tako pružamo neki naputak o skripti
za to da su opremljen LillyPond
samo da bi ga open source i dobiti plinovod ide.
CONNOR HARRIS: Opet, Treba naglasiti,
ove dvije tehnologije, što ne morate ih koristiti zajedno.
Nisu dizajniran za rad zajedno, iako su to vrlo lijepo.
>> STEPHEN KREWSON: Tako je.
I potpuno besplatno.
CONNOR HARRIS: Pa priznanja, samo pročitao da.
STEPHEN KREWSON: Propisno navedeno.
Zahvaljujući tim ljudima.
Ovo ću zadržati na samo na trenutak.
Proces instalacije je malo zeznuto.
Imamo mi pročitati na GitHub koje možete pogledati.
Samo mi e-mail ako imate bilo kakvih pitanja.
No, mi ćemo pokrenuti ovo pod pretpostavkom kako je to raditi za svakoga.
CONNOR HARRIS: A ako ne možeš dobili LillyPond na posao, nije velika stvar.
Nema Kompilacija koja će biti uključeni, barem na mom kraju.
STEPHEN KREWSON: Haskell i LillyPond trebali oboje imaju instalatere.
Euterpea je skinuti kao Paket, tako dalje i tako dalje.
Dakle, govorimo o računalnoj glazbi.
A to je samo Vrlo pogled 50.000-noga.
Postoji nekoliko različitih aspekata njega.
I ovo je gruba i će zasjeniti neke pojedinosti.
Ali smo mogli smisliti nešto kao i algoritamskog sastava,
pomoću algoritama, pomoću koda, generirati
neki tip of-- možda self-sličan slijed nota, ili možda bilješke
pod nekim pritiskom.
A onda one mogu biti obavlja i tumačiti
s analognim instrumentima ili bilo što slično.
Ali pripravak je učinio algoritamski.
>> Ali, naravno, možda područje računalo glazba ili digitalne glazbe
mi smo više upoznati s je digitalna Zvuk sinteza ili digitalni uzorkovanja
i digitalno snimanje.
Puno digitalnih instrumenata obaviti putem digitalnog uzorkovanja.
U stvari, mi ćemo se pomoću jednog od onih u oblik zvuka fonta knjižnici kasnije.
>> No, tu je i nešto što se zove digitalna sinteza koja je izašla
od kasnih 70-ih i 80-ih godina u s Yamaha i John Chowning na Stanfordu
radiš FM sintezu ili Frekvencijska modulacija sinteza,
gdje je imao karijeru signal i modulirajući signal
kako u audio spektru.
No, ono što smo usredotočeni na danas je nešto što se zove MIDI,
i naravno, algoritamski sastava.
>> Nećemo napraviti instrumenata, ali mi umjesto da ide napraviti neku glazbu,
a onda će se tumačiti neke instrumente koji
su conformant na Općenito MIDI standard.
Dakle, što je MIDI?
Neću da se previše duboko u nju, ali MIDI protokol za prijenos podataka.
To je neka vrsta vodiča kroz različite tvrtke i industrije
za organizaciju zvukove ili zakrpe.
Tako ćemo vidjeti da tu je standardni MIDI
za sve različite udaraljke zvukove i MIDI preporuke
za sve različite vrste ili synth različiti tipovi sve isprave
skupine u orkestru, kažu.
>> Vjerojatno ste upoznati s 0 putem 127 MIDI poruke.
MIDI signal je obično jedan malo što ukazuje
da li je podatke ili Status paketa, a onda je
sedam bitova signala.
A to se može kontrolirati sve od volumena
djelovanju ili pritiska na određenom ključu
ako ste obavljanje s MIDI Regulator kao, naravno,
bilješke.
I naravno, MIDI ima bio iznimno koristan,
jer je to način da se žice zajedno ili lančano
hrpa MIDI hardverskih uređaja.
Imam sedam ili osam leđa u mojoj kući.
To stvarno dobiva komplicirano, ali to je stvarno moćan.
I to je zapravo stara.
To je od ranih 80-ih, i to je stvarno lijepo i male.
CONNOR HARRIS: Da.
Sve klasična Nintendo video igre bi vjerojatno
ima MIDI datoteke za glazbu, na primjer.
>> STEPHEN KREWSON: Evo primjer opće MIDI,
pokazujući MIDI kao svojevrsni opće protokola.
I mislim da možemo misliti na Razlika između specifikaciji
da ne bi trebalo biti nešto poput zvuči ovih instrumenata i stvarni
Ostvarenje tih instrumenata zvuči u zdravom font ili određenom MIDI
sintisajzer kao razlika između možda je typeface-- koji kaže,
u cjelini, ovo je dizajn ovaj način predstavlja
characters-- i određeni font koji ima određenu veličinu i boju,
a tu je realizacija the--
>> CONNOR HARRIS: Možda Bolje bi usporedbu
biti Unicode standardni says-- daje broj na svaki znak, i stvarno
svaki jezik na svijetu, ili velika skup skripti jezika
u svijetu, a onda su to donio u nešto grafički
raznim font paketa.
I očito, možete misliti MIDI kao Unicode zvuka.
A to je samo popis of-- velikom strujom događaja i instrumenata i sitnica,
i morate imati zasebni Program, kao pisma,
kako bi se taj u nešto što je goste.
>> STEPHEN KREWSON: Pa zašto Haskell?
Haskell je funkcionalna programiranje jezik, vrlo napredna,
jako razlikuju od C, vrlo različit od PHP.
A mi ćemo vidjeti da postoji jednostavnost sastava funkcije u Haskell
koji će nam omogućiti da povjetarac kroz skladanje ili pisanja, prepisivanje,
nešto poput Frère Jacques, ovaj jednostavan pjesma koja
ima puno dijelova u to da su self-slične ili ponavljanje.
Dakle, to će biti neki od motivacija zašto
mi smo pomoću Haskell, u kojem funkcije su prve klase građana.
>> I ja sam htjela proširiti ovo malo.
To je malo lako notate Frère Jacques u Haskell.
Ali što ako smo htjeli dodati dio bubnja na njega?
Što ako smo htjeli pokušati učiniti nešto poput Roland 808 ili 909 bubnju
Stroj kojoj morate oko 16 različitih koraka?
Obično su misli kao 16. bilješke.
I vi možete kontrolirati globalni tempo, a možete izabrati
hrpa različitih udaraljki dijelova bas bubnja, A pljesak, različite zamke,
otvorene i zatvorene visoke kape na tih vrsta kanala,
a onda možete EQ ili prilagoditi svoj volumen.
>> I mi ćemo vidjeti lijep način u Haskell zastupanja ovaj korak
sekvencer sa svim razne cool stvari u Haskell
možemo učiniti s generiranjem liste i filtriranje preko popisa,
mapiranje preko liste, mapiranje Funkcije preko popisa.
I brzo ispriku.
Ovo je vrlo površan i pretjerano brzo skica
nekih aspekata od Haskell i Euterpea,
što je domena specifična ugrađeni jezik napisano
u Haskell za glazbene vrste.
Dakle, molimo Vas da provjerite kod on-line.
Ložiti GHCI, što je Glasgow Haskell prevodilac prevoditelj.
I ja ću biti događaj neki to u malo
tako da možete vidjeti kako se to radi.
>> I to vam omogućuje da učitati u s the-- sintaksa je debelo crijevo, a zatim
naredba.
Možete učitati datoteke.
Možete koristiti pregledavanje tih datoteka vidjeti sve funkcije koje
postojati u određenom modulu.
A onda, kao što ćemo vidjeti, vrsta i tip klase su toliko važni u Haskell,
tako da uvijek možete check-- posebno ako radite u novom DSCL
ovako, ono što je glazba tipa?
Znam o načinu brojčani Vrste raditi u Haskell,
ali ja ne znam puno o glazbi.
Ali možete istražiti način na koji su oni definirani pomoću ovog t ili upišite command
a zatim pozivom na određeni Funkcija ili objekt podataka.
CONNOR HARRIS: Da.
Ako ste mislili C i zveket Bio hardass o vrstama,
nemate pojma o Haskell.
Dobra stvar o Haskell je da ako mogu dobiti svoj kod za prikupljanje
a ako tipa Haskell provjere, to je vjerojatno u pravu,
jer je tip sustava je tako stroga.
>> STEPHEN KREWSON: Da.
Dakle, ja samo želim otići through-- i opet,
to ne radi da justice-- nekoliko značajke Haskell, barem
svoje creators-- a nastao u kasnim 1980-ih je hrpa ljudi,
odbor 20 people-- mislili su važni.
I prva stvar koju navedene u članku koji
opisao genezu Haskell tijekom prvih 20 godina ili na taj način
je da je lijen.
Dakle, što to znači?
>> Pa, to znači da kad imamo neku izražavanja, moramo ga ocijeniti.
I Haskell to radi u pozivu po potrebi putu ili ne-strogom način.
To jest, ako imamo hrpu komponente našeg izražavanja,
pokušavamo odgoditi procjenu tih potkomponenta
do apsolutne zadnjeg minute-- to je sve što im zapravo treba.
>> Dakle, ovo što je means-- stvarno cool, pogotovo
ako smo razmišljati o apstrakciji glazbenog korak sekvencer.
Možete ga uključite, a vi početi trčanje korak sequence--
Ako ste ikada radili s bubnjem machine-- i to samo ide zauvijek.
Dakle, to bi bilo jako lijepo, ako mi mogao natjecati da u Haskell.
I mi to možemo učiniti s beskonačnim vrijednosti, posebno beskonačnim popisima.
To je vrlo lako za upisivanje beskonačan popis u Haskell.
Vi samo mogao koristiti sintaksu dolje ovdje, gdje možete vidjeti 1 do 3,
uklonite 3 1 točka točku i koji je beskonačan popis
Od svih prirodnih brojeva proširenje na koliko možete zamisliti.
>> Želim uvesti Koncept nabora odmah.
I opet, svrha ovog seminara nije
naučiti o naborima u Haskell ili funkcije višeg reda.
Ali ja samo želim da ga predstavimo dati točan osjećaj kako čudno
Haskell i koliko je moćan je.
A posebno ćemo be-- kada radimo naše različite bubanj dijelovi,
ćemo se manipulira popise brojevi, sklopivi ih jedan na drugi.
A za to, mi ćemo se pomoću karte i nabora.
>> Postoji pravo asocijativni fold, što je ovaj jedan pravu
here-- 1 minus količina, 2 minus količina, 3 minus 0.
A sintaksa za puta, što daju puta
baza vrijednost i zatim operation-- U tom slučaju, dodatak ili oduzimanje.
Ja sam prikazana oba slučaja.
A onda tu je akumulator koji akumulira tijekom cijelog popisa,
Primjenom tog operatora plus minus, a zatim ga gomilaju.
Dakle, to će biti the-- ako je zvao sa strukom r plus od 0, počevši od 0,
mi bi onda sumirati sve brojevi u tom popisu.
I to je popis od 1 do 3.
CONNOR HARRIS: Pa da ga drugi Tako puta R traje tri argumente.
Postoji funkcija Sam traje dva argumenta,
onda je starter vrijednost, a tu je popis vrijednosti.
A što ti se uzeti starter vrijednost, prva vrijednost,
stavite ih u funkciju.
Što ste dobili, uzeti, hranu koja
u funkciju Druga vrijednost, ono što ste dobili,
uzeti, hraniti toga u Funkcija treće vrijednosti.
A onda, ako idete dolje Cijeli ovaj popis na ovaj način,
ti si idući u dobiti na kraju Neki jednini vrijednost koja je
istog tipa što ste započeli s i istog tipa
kao stvari s popisa, a zatim to je povratak rezultat fold R.
STEPHEN KREWSON: Tako posebno, to su veće funkcije reda,
jer oni su uzimajući drugi Funkcija kao jedan od argumenata.
>> CONNOR HARRIS: Da.
Ako ste koristili određeni drugi languages-- znam R, [nečujan]
jezik ima to, zove smanjiti.
Možda ste slične funkcije u drugim jezicima, jednostavno zove
različite stvari.
>> STEPHEN KREWSON: I što je lijepo o fold R
u ovom slučaju je to puta R može raditi s beskonačnim popisima.
Dakle, u ovom dnu, ovaj P5 generira note koje
su uključena u koraku sekvencer za neki bubanj dio, peti dio bubanj,
a možda je to Conga bubanj ili nešto.
A to je namjerno tupo način pisanja ovog,
ali to je zabavno, jer to pokazuje puno
stvari o Haskell i Euterpea.
>> Tako fold R ovog colon-- kolona je Samo operator koji gura stvari
zajedno na list-- pozvao prazna Popis, koji je samo prazne zagrade.
I Zovem da na ovom beskrajnom popisu.
To je zapravo dvije liste zbrojiti ovdje.
Popis 1 zarezom 6 točaka točka je 1, 6, 11, 16.
Tako Haskell-- u samo nekoliko znakova, te
može generirati cijelu slijed brojeva
da pet brojeva osim proteže na u beskonačnost.
I ja prepend na to to kraći malo list--
3, 8, 21-- samo da vam pokazati kako možete spojite liste.
>> A onda sam presavijeni na sebi.
A ovo završi samo kao neka vrsta Operacija identitet, ali to je beskonačan.
I preklopite R može učiniti, jer je to lijeno ocjenjuje, kao gore.
Ako imamo 1 i 2 i 3, možemo Samo omeđi isključivanje cijeli ostatak.
To neće raditi za minus ili plus, ali to
će raditi za ovaj kolona Operacija identiteta na popisu.
>> Pa kako ćemo praktično koristiti da ako ima beskrajno dug popis stvari?
Pa, Haskell pruža puno functions--
i tražiti više u te u vlastiti time-- kao što poduzeti
koji kaže: U redu, mi smo generiranje ovu beskonačnu listu,
ali mi samo uzeti neke Broj njega I u ovom case--
ćemo vidjeti kasnije u naš bubanj stroj code--
GM je samo neka vrsta globalnog varijabla za broj koraka
u sekvencer.
Na roll-u strojevima sam pokazali vas, to je obično 16,
ali sam ga provodi sa 32.
To zapravo ne smeta.
>> Haskell je i čista, tako da ima jake statički tipkanje Connor aludirao.
Tako su funkcije Matematički u sense--
oni su više matematički da oni zajamčena
ne pristupiti ili promijeniti bilo koje vrste promjenjiva ili izvođenje ulaz ili izlaz.
Dakle, ako imate funkciju, to je deterministička.
Uvijek će se vratiti isto vrijednost u stanju programa
ili ostati isti.
Postoje, naravno, iznimke mantrom na to, ali to je izvan našeg dosega.
>> CONNOR HARRIS: Da.
Što to znači, iako je tu nekoliko važnih [nečujan]
Posljedice toga.
Jedan od njih je da je vrlo lako parallelize Haskell programe.
Jer ako imate, kažu, funkciju koja
treba raditi na milijun vrijednosti, ako Znate li da je funkcija će uvijek
dati istu vrijednost ako hranite na određenoj value--
ako ste [nečujan] F 1, F 2, onda f 3 ili whatnot-- f od 1
se neće ispisati u datoteku ili učiniti nešto
koji će izmijeniti vrijednost f2.
Vi samo možete podijeliti ovu funkciju do milijun različitih strojevi ili milijun
različite teme ili bilo što, dobiti sve odgovore unatrag,
dobiti sve vrijednosti povratak natrag, a onda to je to.
Dakle, vrlo lako parallelize stvari.
>> The downside je da unos i izlaz osobito
uklapaju u tip sustava u vrlo komplicirane načine.
Nećemo ulaziti u to upravo sada, ali ja potičemo vas da pogledate neke resurse
online, ako želite saznati više o tome.
>> STEPHEN KREWSON: Pa upišite classes-- i to
was-- klase tipa su izmislili riješiti
problem operatera preopterećenja.
Tako smo željeli imati jednakost između različitih vrsta stvari.
Naravno, mogli bismo razmišljati of-- jednakost između numeričkih tipova
vrlo je lako razmišljati o, ali što o ravnopravnosti liste?
Što o ravnopravnosti stablo podataka noga strukture?
I to je sve moguće u Haskell zbog tipa nastave.
>> Dakle, ako ste definirali određene podatke type-- i ovdje, to su glazbene parcela.
Mi napokon dobivamo do neke računalne glazbe.
Tako imamo C, C oštra, i tako dalje i tako dalje.
Oni pripadaju hrpa različite klase tipa.
EQ-- pripadaju tipa EQ klasi.
To znači da oni podržavaju Poslovanje jednakosti.
Na taj način možete procijeniti je li jedan slijed glazbenih primitivaca
isti kao drugu.
>> Oni pripadaju rednim klasi.
To znači da postoji naručivanja na njih.
D dolazi nakon oštre C C dolazi nakon C, kao dobro.
Pripadaju klasi pokazati, što znači da oni mogu
biti tiskan na konzolu ili terminala.
Oni pripadaju Klasa nabrojane, koji
znači da, iako to su likovi,
imaju temeljne numeričku zastupljenost početkom u 0
i otišao kroz međutim mnoge stvari ovdje, 20 ili tako,
ili 30 ili 40, možda.
>> CONNOR HARRIS: A kada imamo tip podataka
da derives-- s tom ključnom riječi "deriving--" određena vrsta klase,
to znači da je prevodilac će pokušati konstruirati nešto automatski.
Dakle, možda ćete želite definirati kvalitetu drugačije.
Vi ćete želite definirati C oštar kao jednako D ravna, npr.
Ovom konstrukcijom ovdje ne mislim C sharp
i D stan će biti jednak, jer prevodilac će automatski
kažu svaku drugu moguću vrijednost se razlikuje od svakog drugog.
>> Dakle, moguće je nadjačati zadani implementacije
ove vrste nastave.
Opet, pogledajte reference ako Želite li saznati više o tome.
STEPHEN KREWSON: I Ovdje, zapravo, to će
biti od pomoći kad smo kodirati kasnije.
Vidimo neke od utjerati operatora za uzastopnu sastava,
Sastav paralelno, tako dalje, ti plusa i jednake znakove
okružen kolona.
To znači da možemo igrati ove različite glazbeni primitivci jednu za drugom.
To je sekvencijalni sastav.
>> Ili ih možemo igrati u paralelno istovremeno.
Dakle, ja mogu imati glazbenu vrijednost, i onda to jednako i dvotočke,
utjerati paralelni operator sastav, i igrati ih kao neku vrstu akorda.
A mi ćemo koristiti ovo kad kombiniramo
naš bubanj dio s našim Malo Frere Jacques pjesma
igrati ove dvije sekvence glazbene vrijednosti u isto vrijeme.
>> Currying is-- Curry je zadnji put naziv Haskell Curry, koji je
Haskell slika je nazvana.
I to omogućuje nam Lijepo eleganciju kad smo
pisanje svih tih različitih funkcije ili filteri koji smo
će biti mapiranje nad našim listama.
Funkcija dva arguments-- f X i y--
može se prikazati kao f x primijeniti na y.
Dakle, to je funkcija jedan argument da se vraća
jedna funkcija jednog argumenta.
Dakle, to znači da možemo mapirati Funkcija f x preko popisa y a.
CONNOR HARRIS: Želite li dati primjer za to?
STEPHEN KREWSON: Da.
Imam primjer ovdje iz neke stvari ćemo pisati.
Dakle, odgovor 2-- dobro, odgovor će se
jedna vrijednost, a to je koliko je puta ponoviti nešto,
a onda će se value-- Obično popis ili nešto.
Dakle ovdje smo mapiranje replicirati 2 nad drugom popisu.
>> Dakle, ako smo mapirati replicirati 2, ako mi replicirati 2 prijaviti
na prvi element ovog list-- i To su popisi glazbene phrases--
će proizvoditi dva "vi sleeping--" tako da ste spavali, jeste li spavali.
Dakle, sada imamo dva.
Ali repliciraju traje dvije argumenti, nego zato što smo
currying a onda mapiranje, možemo predstavljati replicira 2
kao što je vraćeno u funkciji jedan argument-- samo replicira dvaput.
A onda smo se prijavljujete da je svaki element ovog popisa fraza.
>> I concat je Haskell Rad za ravnanje popis.
Budući da repliciraju 2 volje proizvesti popis listama.
I to je to prijelazni oblik ovdje.
I tako onda možemo concat ili poravnati da se dva puta.
CONNOR HARRIS: Jednostavniji Primjer currying,
ako bih volimo-članovima zamisliti f je samo množenja funkcija koja traje dva
argumente i vraća njihov proizvod.
Dakle, ako imate F 4 5, to je 20.
Ali možete misliti o tome kako je also-- imate funkcija f 4
koji traje argument i vraća četiri puta ovaj argument-- jednostavno
djelomična aplikacija koja samo jedan argument 4.
A ako hraniti f od 4 5, koji će vam dati 20.
I to je jednostavnije Primjer currying.
To je obično jedan od onih udžbenika.
>> STEPHEN KREWSON: Lambda izrazi ili anonimni funkcije
su još Haskell znak.
Dakle, ako moramo bič gore Malo funkcija život repliciraju,
ali kažu da nije u standardni knjižnica,
možemo koristiti sintaksu sličan sljedećem.
A mi ćemo povjetarac preko toga.
Jedna stvar koju ćete vidjeti puno u bubanj stroj smo pozive
na nešto što se zove filter, koji je kao i prije,
je mapiranje funkciju preko popisa, ali to je
mapiranje i Boolean funkcije.
>> Dakle, ovdje imamo primjer se od anonimno
definirati Booleova funkcija koja traje samo par vrijednosti.
Ovo nije strogo govoreći anonimni funkcija.
Ali to je definirati s da sintaksa za sažetosti,
i to traje samo x modul n-
CONNOR HARRIS: Da.
F pa je funkcija dva argumenta n i p
koji vraća funkciju koja je sama funkcija jednog argumenta, odnosno x.
STEPHEN KREWSON: ja navedeni utjerati operatora.
Što su utjerati operateri?
Pa, utjerati operateri su normalan način zastupamo poslovanje,
kažu, u mathematics-- 2 plus 2 umjesto operatora plus
a zatim dva argumenta 2 i 2.
CONNOR HARRIS: To se zove obrnuti poljski zapis, što je
pojam Sumnjam itko od vas će znati.
>> STEPHEN KREWSON: Tako je.
Obrnut poljski ili prefiks zapis.
Ali Haskell odlučio koristiti utjerati operatore.
Dakle, to su neke od prilagođene one koje
su definirani za Euterpea DSCL u Haskell.
Dakle, to je sekvencijalni sastav.
To je paralelno sastav, a to je skraćivanjem paralelno sastav.
I mi ćemo morati da s našim bubanj stroja,
jer ćemo koristiti zadnji operator u tom malom torka tamo
igrati bubanj stroj zajedno s našim Frere Jacques pjesme.
I naš bubanj stroj će biti beskonačan.
To je samo igra zauvijek.
Ali Frere Jacques pjesma nije.
Nije to dugo.
To je samo nekoliko barova.
Dakle, moramo zaustaviti bubanj stroj kao Čim je kraća glazbena vrijednost dolazi
do kraja.
I to infixed operater je super korisno s tim.
>> I utjerati zapisa kao to je vrsta lijepo,
jer kažu da imate funkciju kao citat, koji daje podjelu cijeli broj
x nečim else-- Nažalost, to bi trebao biti i b.
Ti bi mogao napisati kao citat od b.
Dakle, ako ste put-- element još jedan primjer toga.
x element u nekom popisu, ako ste stavili je u Backticks, možete ga koristiti.
Iako to nije simbol kao plus ili minus ili puta,
možete koristiti naziv je funkcija kao što je to u Backticks
kao utjerati operatora, što je prilično cool.
CONNOR HARRIS: Opet, ovo je svi samo sintaktička šećer, stvarno.
To ne utječe na jezgru jeziku.
>> STEPHEN KREWSON: Tako vidimo ovdje za Posljednji izraz našeg Frere Jacques pjesme,
Igrao sam neke malo akorde ili trećine pomoću paralelnog sastav
operater.
Ovo je još jedan način da se kaže neke onoga što smo upravo govorili.
Tako možete map funkcije jednog argumenta nad listama.
CONNOR HARRIS: Opet, reference za Haskell-- uvodnih udžbenika
će imati sve to u njoj.
>> STEPHEN KREWSON: pa ovdje je prilično Ključni redak korak sekvencer
ćemo pogledati pomoću popis razumijevanja.
I ovdje vidimo je taj element u fiksnom operateru u leđa citati.
Dakle, ako je x element popisa x-a, onda ćemo nazvati Perc funkcije.
Dakle perc je samo funkcija udaraljke.
Potrebno je neko vrijednosti p koji je dio omeđen skup svih
različite udaraljke zvukovi kako smo vidjeli u prethodnom slajdu,
a onda daje da trajanje četvrtinka.
Inače to mu daje QNR i QNR je samo četvrtina napomena ostali.
>> Dakle, ovo je izgradnju nešto lijepo.
Imamo popis elemenata, te mi ćemo petlje preko neke liste od jedne
do max vrijednosti našeg koraka sekvencer.
A kad smo već kod određenog I u taj popis od jednog do max vrijednosti,
ako to i je član ove Skup je stvorio u ovoj funkciji,
dobro, onda smo ga uključili u udaraljke bilješku.
Inače, upravo smo igrati ostatak koji Naime, mi samo šutjeti.
I možemo vidjeti da se ovdje u ovaj popis razumijevanje sintakse,
X je naseljeno ovo Popis izgrađeno jedno
na globalnu veličinu sekvencer.
CONNOR HARRIS: Da.
Osnovna sintaksa za Popis spoznaja je
nosač, vrijednost uključuje neke varijable, bar,
Moguće vrijednosti varijabli sami, zatvorena zagrada.
A ako ste učinili postavljanje graditelj zapis u bilo kakve matematike klase,
možda ste postavili 2n kao da n ili n je z.
Slično stvar-- ovom načinu je značilo da se sugestivni
te matematičke notacije.
STEPHEN KREWSON: A što možete vrijede više predikate
i više filtri popisu razumijevanje, što je prilično lijepo.
Algebarski types-- smo neće oklijevati dugo ovdje.
Nema dobra ideja u Haskell ili dobar, očito pojam
kako bi se, recimo, zadani parametar u funkciji ili nešto.
U Python, to je vrlo jednostavno.
Vi samo mogu reći s jednako na izjava o funkciji,
zadana vrijednost Slučaj nitko dobivate.
>> U Haskell, što bi možda koristite možda možda upisati,
koja traje ili ništa ili vrijednost tipa samo.
Tako smo to iskoristili u bubanj stroja kako bi se omogućilo nam dati dodatni volumen
Parametri za svaki od bubnja dijelova.
Tako da nam daje način ima EQ ili volumen na određenom kanalu.
>> CONNOR HARRIS: U drugi Haskell primjeri,
možete vidjeti možda koristi za Funkcije koje bi mogle uspjeti.
To je zajednički.
>> STEPHEN KREWSON: A možete dostaviti neka vrsta poruka o pogrešci kao zadani.
A to je osobito zgodan kada radite na I / O u Haskell.
To može biti trikove.
CONNOR HARRIS: ili za Sličan primjer, mislim
od funkcija koja uključuje podjelu od parametara koji bi mogli biti 0.
I to je funkcija mogla povratak možda god.
Dakle, ako ne postoji podjela po 0, ona će se vratiti samo ono.
A ako postoji podjela po 0, da će se vratiti ništa
kao način signaliziranja pogreške.
Zbog jedne posljedica Haskellov je vrlo strogi tipkanje
je da nema real-- Izuzetak su nespretno, u osnovi,
rukovanje pogreškama je nezgodno.
A to je jedan vrlo čest način to radi.
>> STEPHEN KREWSON: Tako sada smo dobili na drugi um-savijanje stvar
o Haskell, koji je uzorak Usklađivanje i definicije funkcija.
Ja vam pokazali u zadnjem gurnite izjava koraka slijeda
funkcija, što je uzeo možda vrijednosti, onda int, a zatim popis Ints,
zatim vraća slijed glazbene vrijednosti postoji obilježeni
s obje teren i volumena.
>> Dakle, ta tri argumenti mogu biti uzorak odgovara na sljedeći način.
A mi uvijek želimo biti sigurni da napraviti bazu slučaj ili izlaz slučaj prvi.
I ove podvlake može samo tumačiti
znači bilo koju vrijednost koja je tamo.
Dakle, ako smo dobili poziv na korak slijed s nekim vrijednosti, neke druge vrijednosti,
a zatim prazan list, ono što želimo Za povratak je samo tišina, odmoriti 0.
>> I umjesto da se biti prazan popis ili 0,
to je ostatak 0, jer smo bave vrsti glazbe,
i prazna popis glazbe Tip je samo ostatak bez trajanja.
To nije glazba.
A onda ćemo vidjeti da li ćemo dobiti korak slijed sa v za volumen argument,
p za opreza instrumenta Argument, a zatim popis x-ih.
>> Onda smo napraviti neke stvari.
Konkretno, primjenjujemo ovaj popis razumijevanje,
i izvodimo neke Poslovanje na možda vrijednosti
da se to pretvorilo u brojčane vrijednosti, tako da to bi mogao biti onda nabrojani i koristi
za odabir instrumenta.
Opet, ovo je malo malo namjerno inconcise
samo pokazati sve čudne stvari možete učiniti u Haskell kao ti
pogledajte to u svoje slobodno vrijeme.
>> U redu.
Tako smo napokon dobivanje učiniti ono što smo to učiniti,
što je napraviti neki računalni glazbu.
Tako ćemo pokušati napraviti Frere Jacques pjesmu.
Dakle, postoje koliko fraze u Frère Jacques?
Četiri.
Veliki.
A što je lijepo je da svi oni ponavljaju
ista količina vremena, što je dva.
>> Dakle, imamo četiri fraze svaka dva puta ponavlja.
A posebno, oni su u krugu.
A tu su i mnogi, mnogo načina za provedbu
okrugli da bi moglo biti zabavno raditi.
Ja sam to učinio u prilično jednostavan način ovdje,
koji je samo construct-- liniju Funkcija traje popis glazbenih vrijednosti
i pretvara ga u sekvencijalnom sastav primjenom tog sekvencijalni sastav
operater.
>> A onda sam odgoditi različite dijelove čineći ih početi s ostatkom.
Tako sam početi s ostatkom dvije mjere, a zatim ostatak četiri mjere,
a zatim ostatak šest mjere, a zatim okrugli
radi, kao što svi znamo ovu pjesmu.
Vidimo dvije primjedbe ili modifikacije glazbenih vrijednosti
koje su sadržane u ovom sekvencijalne raspored glazbenih elemenata.
Imamo volumen dodati.
Ova je funkcija za obilježavanje Glazba s određenom volumenu.
Ovo je dobar primjer od signala trčanje MIDI
od 0 do 127, sedam bitova Informacije koje se mogu provesti.
>> I then-- smo to vidjeli vrlo kratko, ali opći MIDI
Popis svih različitih instrumenata.
A nema ih puno od njih.
Ako koristite digitalni audio radne stanice, kao Ableton žive ili Pro Tools,
postoji nevjerojatno širi raspon od sintisajzer i VST instrumenata.
No, MIDI standardni jedini ima nekoliko ili nekoliko desetaka.
A neki od njih su smiješne.
Mislio sam da će biti zabavno, ako smo igrali instrument MIDI instrumenata
helikopter, a onda Sljedeći put kroz krug,
smo jastučić synth, a potom to otrcano glavni trg val synth,
a onda glas mulj, koji su malo nejasna na mom lošem MIDI
sintisajzer, ali su u redu.
>> A onda ćemo vidjeti ovaj let i sintaksi od Haskell,
a onda igramo svi ti dijelovi zajedno
s operatorom paralelnom sastava.
I vjerojatno mogao pokazati neke od ovoga.
Evo kod.
A možete vidjeti u C, tu bi se Puno čišćenje grla i postavljanje
stol broj pred vama mogao napraviti glazbu kao što je ovaj.
Ili bilo koji drugi programski jezik, vjerojatno bih
moraju komunicirati s nekakvim Knjižnica i API i postaviti sve gore,
i onda bih morati počistiti.
Ali ovdje u Haskell, mislim, jednom kada dobijete dokučiti ga, nevjerojatno
čitljiv i vrlo izražajan.
Tako da je provedba od Frère Jacques.
U redu.
Sada želimo dodati udaraljke, i to je malo Messier.
Tako ćemo pogledati slajdova.
Tako je velika ideja je napraviti hrpa popisa ili dijelova.
Na tim pristupom strojeva, postoji su obično o možda osam
10 ritma ili udaraljke dijelova.
A onda koristite hrpu tehnika.
A mi smo razgovarali o these-- korištenja nabori, filteri, lambda funkcije,
mapirati preko popisa za generiranje vrijednosti u nekom opsegu od 1 do R, R je 16,
ili 32 koraka u sekvencer.
>> A onda, ako postoji vrijednost u tom popisu kao što smo trčanje kroz sekvencer,
trčanje kroz nju više i više, ispada na toj bilješci,
i da uzorak dobiva pokreću.
Ovdje su svi različiti načini čudne Došao sam do generirati bilješke.
Probajte ga na svoju polu iznos.
To će zvučati kul.
Ukoliko vrijeme dozvoli, mi ćemo proći kroz ovo.
No, za sada, valjda trebamo demo ono što imamo.
Nadajmo se da to ide u redu.
>> Dakle, to je GHCI.
A mi ćemo učitati datoteku Nazvao sam song.lhs,
što je datoteka samo sam ti pokazao.
OK super.
Kao što je Connor rekao ranije, to sastaviti, upišite ga provjeriti,
tako da mogu disati mnogo lakše.
To neće raznijeti na mene.
>> Ja želim da vam pokazati nešto korisno.
Možete vidjeti da je modul učitan pozvao 50.
Možete pregledavati taj modul.
A to je tako lijepo o doing-- možda ono
radite u Haskell nije zove razvoj softvera,
ali možete učiniti puno zabavne stvari na svoju vlastitu.
A tijek rada je jako lijepo, kao u odnosu na puno drugih jezika,
jer možete vidjeti u stvarno čitljiv način što se događa.
Dakle, vidimo da imamo Svi ovi izrazi, koji se
su popisi glazbenih parcela, a potom smo izgraditi ovih gore u nešto veće,
što je glazba pjesma.
To je glazbena cjelina.
A onda možemo igrati sve ovo s funkcijskom zove reprodukciju glazbe.
Možete vidjeti da je ovdje.
Koji je samo igra.
>> Trebao say-- nisam govoriti o ovo dolar znak da je svugdje.
Dolar znak je još utjerati operater.
Ali to ima najnižu prednost bilo operatora, koji učinkovito
znači da je sve na lijevo od znaka dolara
i pravo na znak za dolar, ćemo dobiti ocjenjuju pred njim.
Dakle, to je vrsta kao druga način dodavanja zagrade.
>> CONNOR HARRIS: To je u osnovi Sastav funkcija.
I to osigurava da ne have-- ako imate funkcionira s obje strane ili utjerati
operatori na obje strane, oni neće povezati preko njega i dati vam
neočekivane rezultate.
>> STEPHEN KREWSON: Tako smo can-- pomoću koje možemo nazvati.
Prvo, mi ćemo igrati bez bubnjeva.
To je helikopter, MIDI helikopter.
>> [Glazbom]
Tu je kvadratni val.
Glas mulj.
A ti stvarno može idu divlje s tim.
Uzela sam prilično jednostavna, jer sam znao da ne bih trebao odgristi
više nego što sam mogao žvakati.
Samo ga zadržati vrlo jednostavna prikazati glavne ideje.
Ali onda sam bio kao, mi smo dobio dodati neke bubnjeve na ovo.
Samo zato što je to malo neprobojna,
i nisam koristiti Naziv bubanj dijelova,
Ja mapirani them-- jer oni dio tog popisanoj klase,
Ja ih mapirati Ints.
Jedan je kao bas bubanj.
Nula je kao dobro.
Sedam je visoki šešir.
A dolje u ovdje gdje Funkcije dobiti malo više slučajna,
oni su poput Conga bubnjevima.
>> Dakle, ako mislite about-- možda zabavan način provesti bubanj stroj
je koristiti vrlo uredan uzorci na vašem bas bubanj.
Tako na primjer, na filtriranje preko Popis sa svime što daje natrag
A 1 kada je snimljen modul 04.
Tako sam se 1, 5, 9, 13, tako da je ovo 17-- je prvi beat svake mjere.
>> A onda je to isto stvar prebacio preko dva koraka.
Dakle, to je nekonvencionalan.
Dakle, to bi bilo nešto kao visoki šešir.
I ovdje opet, dolje, to je malo slučajan,
jer radimo Conga bubnjeve.
I ja imam neke maracas ovdje, previše.
>> Tako sam mogao nazvati igrati bubanj stroja, ali to će ići na zauvijek,
i to bi moglo početi grabbing se sve memorije u mom sustavu.
Dakle, ja ću nazvati ovu funkciju slušati glazbu, koja kao što ćemo vidjeti,
koristiti oduzimanja paralelni sastav igrati naš mali Frere Jacques pjesmu
uz ovaj čudan bubanj stroja.
Tako ćemo pogledati.
I nemojte poboljšati na mom Raspored svih dijelova bubnja.
Nije moja specijalnost, ali sam imali puno zabave radi.
>> [Glazbom]
>> Pa naravno, to je sve malo ne kao zabavu
ako ne možemo ga pretvoriti na rezultat pa možda ga
može se tumačiti po ljudsko izvođača.
Pa neću ga pokrenuti ovdje.
Već sam generira datoteke.
Možete vidjeti da postoji dot LilyPond file-- i to
će biti moj segue preko Connor-- i točka MIDI datoteke,
i točka PDF datoteke, što je ono LilyPond će u konačnici generirati.
>> No, to su one skripte, i ja ću samo ih izvoditi uz njihovu pomoć opcijama.
Ako se to gore i trčanje sa Euterpea, možete generirati MIDI datoteke.
I onda iz MIDI datoteke s ovim MIDI 2LY programa,
možete generirati Lily Ribnjak datoteke, a zatim vam
može generirati PDF s rezultatom.
I mi bi trebali pogledati ovaj.
Dakle Connor će vjerojatno pokazati vam kako prokomentirati ovo bolje,
ali to je Frere Jacques kao generira mi Euterpea.
To je samo u C. trebala sam shvatio u čemu je hack to je zapravo u.
Ali to je cjevovod za Kako ste to učiniti s tim.
Razgovarajmo više o LilyPond.
>> CONNOR HARRIS: OK Da vidimo.
Jeste li spomenuti Saznajte You Haskell?
STEPHEN KREWSON: O da.
Provjerite Saznajte vam Haskell.
To je u resursima.
Tako sam počeo učenje, i to je super.
Ne glupa učenja.
>> CONNOR HARRIS: Pa to je on-line.
Dakle, čovjek po imenu [nečujan] learnyouahaskell.com, bez razmaka.
Gramatika je bolestan.
STEPHEN KREWSON: To je ilustrirano, previše.
CONNOR HARRIS: Pa što je LilyPond?
To je deklarativno programiranje jezik za glazbu slaganje sloga.
Dakle declarative-- možete mislim stvari kao što su HTML,
gdje niste saying-- HTML ne kažem kako web-preglednici trebaju
uzvratiti stranice korak po korak.
To samo govori to je tekstualni opis
o tome što želite stranica izgledati.
>> A onda je i program koji prikuplja ovaj jezik,
ili čitati svoje u te stvari radi Type za vas,
i to ispljune to prekrasna potrazi PDF rezultate.
Također možete dobiti PNG formatu ili bilo što drugo.
Dobar način da mislite to je analogno
je da LaTeX je vrsta kao LillyPond, ali za samo obični slaganje sloga.
Dakle, umjesto of-- nije WYSIWYG, ono što vidite
Je ono što dobivate, kao što su, recimo Finale je, ili Sibelius,
ili Microsoft Word, gdje možete upisati realnom vremenu i nacrti stvari u realnom vremenu
i vidjeti promjene odmah.
>> To je tekst temelji.
Morate sastaviti svoj rezultati koriste poseban program
i izaći PDF kasnije.
To je nešto manje prikladan za upotrebu, ako ste
pokušava pisati izravno u rezultat, a vi ste
pokušava sastaviti na računalu.
No, postoji mnogo prednosti za to.
Jedan, to ne izgleda puno ljepše, jer LillyPond mogu zapravo
uzeti vremena za napraviti izgleda odluke ispravno,
za razliku od Sibelius ili Finale, koje su kako bi ugrožena algoritme tako
da oni mogu prikazati stvari u realnom vremenu.
>> Pa zašto je LilyPond-- računalna grafika je teško.
Ako radite ništa s glazbom i želite napisati rezultate,
ne želite pisati iz svega po sebi
počevši kako se izvući osoblje i kako se izvući bilježnicama.
To je vrlo teško. To je učinjeno prije.
Ti si u redu.
>> Ako želite koristiti Finale ili Sibelius, formati datoteka za te stvari
su vrlo komplicirano, a vi ne možete stvarno ih koristiti programski.
Možete otvoriti Sibelius s Finale i idite na File, Izvoz kao PDF sebe,
ali stvarno ne mogu nazvati iz skripte.
LillyPond, možete nazvati iz tih skripti.
Možete lako mogao ponoviti LillyPond s LaTeX.
Neću imati toliko vremena za odlazak u ove tehnologije upravo sada,
ali oni postoje.
Ako želite pogledati u LillyPond knjigu,
to je program koji dolazi s Vaša LillyPond distribucije,
i to je za iterating LillyPond fragmenti u LaTeX
ako želite nešto učiniti kao velika muzikologije dokumenta
s primjerima, za primjer.
I to je dobra vještina za život ako radite ništa
uz glazbu, a ne samo CS50.
Ja sam se LillyPond za sve moji sastav projekata
jer sam bio u osnovi viši u srednjoj školi.
>> Dakle ovdje su neke jednostavne primjere.
To je u osnovi predstavnik razine težine
da većina ljudi bi lice to su pokušavali
koristiti LilyPond za jednostavne projekte.
Ovaj prvi je početak na koralne predigre Bacha.
Ovo dno je jedan izvadak iz jednog od mojih radova,
i to je samo tamo pokazati ti stvari poput [nečujan]
stavljajući više redaka u isto Osoblje, kako lirska undersetting radi.
Lirski podloge su stvar koja je vrlo jednostavan za korištenje LilyPond za zborske glazbe.
>> I tako onda postoji nešto više komplicirane primjere ovdje.
Sve su to učinili u LilyPond i oni izvedivo.
Ovaj prvi je izvadak iz [Nečujan] od [nečujan].
I to [nečujan] iz komad za solo bas
fruli [nečujan] tko je tko longtime--
Bio je dugogodišnji član glazbeni odjel ovdje, mislim.
Nisam siguran kamo je otišao off.
Ali on je bio savjetnik u Harvardu Skladatelji Udruga za dugo vremena.
Divan čovjek.
I on piše glazbu koja ima vrlo komplicirano zapis koji LillyPond
može ipak nositi vrlo lijepo.
>> Dakle, samo kako bi vam dati osjećaj za ono što Ova stvar je sposobnosti are-- tako
Unutarnje LillyPond vrlo komplicirano.
A možete ga koristiti za dugo vremena, uključujući
za neke prilično komplicirano stvari, bez stvarno
da znaju puno o njima.
No, osnovna ideja je da se na najniža razina, atomi LillyPonds
su bilješke.
Bilješke sadrže kontekst nazivaju glasovi.
Dakle glasovnog kontekstu zapravo odgovara
na jednu liniju višeglasja.
A onda kontekst može biti sadržana hijerarhijski
u višim razinama onih koji predstavlja osoblje na rezultat
ili veće grupacije poput klavir osoblje ili osoblje, zbor
i onda na kraju cijeli score kontekstima.
I što zapravo može obuhvatiti više rezultate u knjizi.
>> I svaki kontekst ima Broj priloženih gravera.
Ako pogledate kroz Sadržaj kontekstu
i ispisati određeni simbol ili određena klasa simbole potrebno.
Tako da svaki glas kontekstu, postoji [nečujan] bilješke
gravera da je u osnovi funkcija ili objekt koji ispisuje sve bilješke
glave na pravim dijelovima stranice.
Zatim tu je rascjep gravera, koji piše se clefts na osoblje.
Zatim tu je metronom Oznaka gravera da
piše se Metronome maraka u rezultat.
I sve to stane lijepa dobro u hijerarhiji.
I to je vrlo, vrlo, vrlo prilagodljiv, što vam je potrebno
Ako želite da se stvari kao što je to.
>> Dakle, svi konteksti imaju mnogo različitih atributa
koje možete mijenjati za sve od razmaka na razne fonta
Izbor za veličine stvari.
Ako želite učiniti još složeniji stvari,
postoji Ugrađeni skriptni jezik.
Oni koriste shemu, koja je dijalekt LISP.
To vjerojatno ne znači ništa za vas.
No u osnovi, shema drugu funkcionalnu
programski jezik, više ili manje.
>> STEPHEN KREWSON: Kravata-u.
>> CONNOR HARRIS: Da.
To je dobar kravata-u, pretpostavljam.
I to se koristi kao nastavnog jezika, Zapravo, dolje Mass Ave. Na MIT-u.
I to je vrlo zgodan za LillyPond raznih tehničkih razloga.
>> I tako, ako želite napraviti jednostavan Friziranje ovise o uvjetne,
za example-- postoji određena Stanje rezultatom koji je susreo,
napraviti preinake na Izgled ili whatnot-- onda
Ti objekti su tu.
Oni komplicirano.
Dakle, ovdje je prilično jednostavan uzorak koda.
To je pet redaka.
Uglavnom, ja sam definiranja dva štapa.
To je u 3/4.
Prva osoblje ima vezani tempo oznaka,
ali to je zapravo događa ići na cijelom rezultat,
jer tempo maraka su na razini rezultata.
Metronom oznaka gravera nalazi se u privitku rezultat kontekst.
Postoje različiti ključevi, jer [nečujan] gravera
pričvršćen na osoblje.
Vi zapravo možete učiniti je.
Uzorak sam napisao je zapravo u C-duru,
ali to je samo pokazuju možete imati
različite tipke u različitim štabova.
A osnovna sintaksa je pišete Napomena imena s E, F, G, bilo što.
Ako želite učiniti slučajnosti, što sufiks je ili ES.
To je od Dutch muzikološko konvencije.
>> I učiniti oktava skokovi, morate koristiti ovi kliknite Marks, zarez ili apostrof.
Relativna samo znači sve što imate na znanje,
automatski će se plaec u Octave najbliži prethodni.
A ako želite skočiti više od fifth-- kažu peti ili more--
onda morate koristiti [nečujan].
Ali inače, ne morate se odrediti oktavu svakog pojedinog bilješku.
>> I relativna C, premijera i C, što samo navesti srednji C
i baza C, pogotovo prve note.
Onda imate ove osoblje koje organiziraju ta dva glasa ili uzoraka glazbe,
i imate rezultat.
A to izgleda ovako.
>> Ako želite uzeti vremena da kopirati taj uzorak LillyPond
broj u odnosu na prethodnu slajd ovdje, a vi
može pisati za LillyPond sami.
Znam da smo dobili nešto koji izgleda puno kao što je ovaj.
Dakle, postoji još jedna tehnologija zove Glazba XML nogama
strane potpuno različite osobe.
XML je tekstualne podatke structure-- sam Ne treba reći podaci structure-- reći
Metafora karta vrsta.
I to je dizajniran za držanje hijerarhijskih podataka vrlo dobro.
HTML, na primjer, je vrsta XML.
I vi možete reći XML jer imao sve kutne zagrade i kut
Nosač SLASH oznake koji pokazuju polja podataka.
>> Nemam kod primjer iz Music XML.
Možete ga naći.
Uglavnom, razlog možda želite koristiti kao XML međufazi
je, prije svega, to je format za razmjenu
za u osnovi every-- nisam trebao reći svaki, ali puno drugačiji rezultat
pisci.
Dakle, ako ste napisali u Glazba XML, ne samo da može LillyPond
čitajte ga uz pomoć ovog auxilary Program pod nazivom Music XML LY,
ali Finale možete pročitati je, Sibelius može pročitati.
Ovisno o tome kako vaše unutarnje objekt hijerarhija radi za zastupanje glazbe,
to bi moglo biti lakše za napisati u Music XML nego da LillyPond
i samo osloniti na Muzičkoj XML da LY napraviti konverziju.
>> Ne mislim da [nečujan] ima Glazba XML.
STEPHEN KREWSON: To ne.
Netko se radi na tome, ipak.
>> CONNOR HARRIS: U redu.
Euterpea ne imati Glazba XML funkcija još.
Ako želite konačnu projektnu ideju, možda doći u dodir s dečkima
da Stephen zna, i oni mogu koristiti Vašu pomoć.
>> STEPHEN KREWSON: Volio bih to.
CONNOR HARRIS: Također, u osnovi, svaki programski jezici
to je vrijedan njegove soli već XML knjižnica,
tako da interno možete pretvoriti sve svoju glazbu na nekom objektu
da XML knjižnica može pisati da će zahtijevati manje
promjene na vašem unutarnjem ustrojstvu za sve što vas glazba objekata
želite napisati od pisanja izravno LillyPond bi.
Zatim samo ga ispisati s XML s XML knjižnice u svom jeziku,
koji će jamčiti da je sintaktički ispravan i sve,
a zatim ga pretvoriti u LillyPond.
Dakle, tehnologija možda želite gledati u ako radite nešto
kao ovo.
>> [Nečujan], jedna auxilarry tehnologija.
To je u osnovi Tech radova ili Tech Studio za LillyPond.
Dakle, nudi pomoć za sintaksa, s predlošcima
za razne uobičajene kombinacije instrumenata.
To vam omogućuje gledanje tako podijeljenog ekrana možete imati svoj kod u jednom prozoru
i PDF u drugom prozoru i kliknite na mjestima u PDF
skočiti na relevantne mjesta u izvornom kodu.
To je više koristan ako ste stvarno Pisanje LillyPond datoteke sebe
nego ako ste generiranja ih programski.
Ali opet, to je nešto korisno imati.
>> Veliki.
Još resources-- ću samo proći kroz to vrlo brzo.
LillyPond manuals-- LillyPond ima izvrsna dokumentacija na svojim internetskim stranicama.
Imaju tutorial.
Oni imaju referencu sintakse.
Imaju stotine isječaka za razne male stvari
yo možda morati učiniti pokazati razne mogućnosti.
Ako želite koristiti skriptni jezik
ili napraviti opsežniji prilagodbe, onda postoji
unutarnji referenca na taj URL.
Ako želite koristiti Music XML, postoji taj URL, musicxml.com/tutorial.
>> I onda, ako morate naučiti shemu jer zapravo želite koristiti
skriptirani objekata u LillyPond, tada postoji [nečujan] naziva
Strukturirani Tumačenje računalnih programa,
koji nije samo drugi Najveći CS udžbenik ikad written--
nađi mi nakon toga, ako želite znati ono što mislim da je najveća jedan is--
ali to je također vrlo dobar Uvod u jezik pravilno.
Nećete trebati više od prvih nekoliko sekcija.
>> I to je to.
Ima li pitanja?
>> UČENIK: Gdje mogu skinuti Vaša generira Frere Jacques
tako da ja mogu staviti na moj iPod?
>> STEPHEN KREWSON: Pa, možete napisati na neki WAV datoteku u Euterpea.
A imate kod.
To je na GitHub.
Napravite vlastite varijacije Frere Jacques strane CS50 košnici uma.
Bilo bi sjajno.
CONNOR HARRIS: Još netko?
STEPHEN KREWSON: Moramo bolji bas bubanj, previše.
To je stvarno loše.
>> UČENIK: Euterpea ne samo strana sastav, ali signal--
STEPHEN KREWSON: Da.
U stvari, rad sam učinio u Euterpea kada sam
uzeo this-- postoji Diplomski studij na Yaleu koji
koristi it-- bio na zvučne sinteze.
Dakle, tu je stvarno lijep način pomoću strelica
a neki od zapisa koji smo vidjeli od skladanja zajedno funkcije signala.
Konkretno, bas za većinu od njih je samo jednostavna sinusni val.
Ali ako počnete skladanja onima u čudnim programske načine,
možete dobiti ludi zvuk učinci, poput čudnih kaskadama.
Možete stvoriti vrlo odlučan zvuči s puno modulacije.
>> Ja sam projekt granulirane sinteza, koja je
negdje između FM i uzorkovanja.
Vi se vrlo mala, mali uzorci, a zatim
ih kombinirati s nekom vrstom modulator i izgraditi bogatiji zvuk.
Također smo radili fizički modeliranje, pa pokušavajući razmišljati o fizici
i psihoakustika nešto poput trublje i razmišljati o načinu na
zvuk je odskakanje zvono trube
i akustika soba i modeliranje
koji s osnovnim oscilatora.
CONNOR HARRIS: Hvala puno.
Hvala što ste došli.
A ja sam uvijek spreman uzeti pitanja po Email
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Da. stephen.krewson@yale.edu.
Cool.