CONNOR HARRIS: Hi. Sem Connor Harris. Sem CS50 CA na Harvardu. STEPHEN KREWSON: Jaz sem Stephen Krewson. Sem TF za CS50 na univerzi Yale. CONNOR HARRIS: In bomo govorili o nekaterih tehnologij, ki jih lahko želeli uporabiti, če ste zainteresirani pri tem končni projekt, ali res karkoli z glasbo. Bomo osredotočili na prvem a programski jezik imenuje Haskell. To je funkcionalna jezik, tako da je paradigma je zelo drugačen od C ali PHP ali drugih nujnih jeziki ki ste jih že uporabili, in še posebej o knjižnici napisana v Haskell imenovano Euterpea, ki lahko pomaga ljudem s pisanjem glasbe funkcionalno, v bistvu. In Stephen vas bo vodil skozi odličen primer tega. Po tem, vam bom predstavil nekaj, kar se imenuje LillyPond, ki je tehnologija za stave glasbe. To je nekako tako kot LaTeX za glasbo, če kdo od vas so uporabili LaTeX za matematiko razrede ali drugi razredi P nastavite ali kaj imate. In zato ti bom dal, še enkrat, nekaj preprostih primerov, ki in točko ste v splošnem Smer nekaterih boljših virov. STEPHEN KREWSON: V Poleg tega smo mislili bi bilo kul, da ustanovi malo namigov proti plinovoda med -Euterpea ustvarila MIDI datotek v LillyPond, zato nudimo nekaj navodil o skripte za to, da so opremljena z LillyPond samo, da ostane odprto kodo in dobili plinovoda dogaja. CONNOR HARRIS: Again, moramo poudariti, ti dve tehnologiji, ki jih nimajo, da jih uporabljajo skupaj. Oni niso namenjeni za delo skupaj, čeprav to počnejo zelo lepo. STEPHEN KREWSON: Right. In popolnoma brezplačno. CONNOR HARRIS: Torej priznanja, samo prebral to. STEPHEN KREWSON: Pravilno opozoriti. Hvala za te ljudi. To bom ostajal na le za trenutek. Postopek namestitve je malce zapleteno. Imamo mi preberete na GitHub da si lahko ogledate. Samo email mi če imate kakršnakoli vprašanja. Ampak bomo teči to pod predpostavko, da to deluje za vsakogar. CONNOR HARRIS: In če ne morete dobili LillyPond za delo, no big deal. Ni živo kompilacija, ki bodo vključeni, vsaj na mojem koncu. STEPHEN KREWSON: Haskell in LillyPond morala oba imeti monterji. Euterpea se prenese kot paket, tako naprej in tako naprej. Torej, govorimo o računalniško glasbo. In to je samo Zelo pogled 50.000 metrov. Obstaja nekaj različnih vidikov njega. In to je hrapava in je dogaja, da zakriva nekaj podrobnosti. Vendar bi lahko razmišljamo o nečem kot algoritmično kompozicijo, uporabo algoritmov, z uporabo kode za generiranje nekatere vrste of-- morda self-podobno Zaporedje bankovcev, ali morda opombe pod neko prisilo. In potem tisti, bi bilo izvaja ali razlaga z analognimi instrumenti ali kaj podobnega. Toda sestavek bil storiti algoritmom. Seveda pa morda površina računalniško glasbo ali digitalne glasbe smo bolj seznanjeni z je digitalna zvočna sinteza ali digitalnega vzorčenja in digitalni zapis. Veliko digitalnih instrumentov poteka preko digitalnega vzorčenja. V resnici, bomo z eno od tistih v v obliki trdnega knjižnice črke kasneje. Ampak tam je tudi nekaj, kar se imenuje digitalna sinteza, ki je prišel ven V poznih 70-ih in v 80-ih s Yamaha in John Chowning na Stanfordu početje sintezo FM ali Frekvenca sinteza Modulacija, kjer boste imeli prevoznika signal in modulacije signala tako v avdio spektra. Toda kaj bomo osredotočili na Danes je nekaj, kar se imenuje MIDI, in seveda algoritmična sestavek. Ne bomo, da instrumenti, vendar smo namesto dogaja, da nekaj glasbe, in nato, da se razlaga z nekaterimi instrumenti, ki so conformant na standardna splošno MIDI. Torej, kaj je MIDI? Jaz ne bom se preveč globoko v njej, vendar MIDI je protokol za prenos podatkov. To je neke vrste vodnik po Različna podjetja in industrijo za organizacijo zvoki ali popravke. Tako da bomo videli, da tam je standard MIDI za vse različne tolkala na zvoki in priporočila MIDI za vse različne vrste iz sintetični ali različne vrste vseh instrumenta skupine v orkestru, pravijo. Vi ste verjetno seznanjeni z 0 preko 127 MIDI sporočila. MIDI signal je običajno en bit označuje ali je to podatki, ali Status paketni, in potem je tukaj še sedem bitov signala. In ti lahko nadzorujejo vse od prostornine ukrepu ali tlaka na posamezne tipke če ste se opravlja z MIDI krmilnik ter seveda opombe. In seveda, MIDI ima bilo zelo koristno, ker je to način, da se žice skupaj ali Daisy chain kup MIDI strojne naprave. Imam sedem ali osem nazaj v moji hiši. To postane zelo zapleteno, ampak to je res močna. In to je res star. To je od zgodnjih 80-ih, in to je res lepo in majhen. CONNOR HARRIS: Ja. Vse classic Nintendo bi videoigre verjetno imajo MIDI datoteke za glasbo, na primer. STEPHEN KREWSON: Tukaj je Primer splošne MIDI, prikazuje MIDI kot neke vrste po splošnem predpisu. In mislim, da smo lahko zamislite od Razlika med specifikaciji da bi bilo treba nekaj podobnega ta instrument zvoki in dejanski Uresničitev teh instrumentov sliši v dobrem pisavi ali posebno MIDI sintetizator kot razlika med Mogoče typeface--, ki pravi, V splošnem je to oblikovanje to predvsem način, da predstavljajo characters-- ter posebno pisavo ki ima posebno velikost in timbre, in tam je realizacija the-- CONNOR HARRIS: Mogoče boljša primerjava bi biti standard Unicode says-- daje število za vsak znak, in res vsak jezik na svetu, ali velika množica skript jezika v svetu, nato pa so to opravljene v nekaj grafični različne pakete pisav. In seveda, si lahko zamislite MIDI kot Unicode zvoka. In to je samo seznam of-- velikem toku dogodkov in instrumentov in drugih malenkosti, in moraš imeti ločen Program, kot pisave, nuditi, da v nekaj, kar je slišen. STEPHEN KREWSON: Torej, zakaj Haskell? Haskell je funkcionalno programiranje jezik, zelo napreden, zelo različen od C, zelo razlikuje od PHP. In bomo videli, da tam je enostavnost sestave funkcije v Haskell ki nam bo omogočilo, da vetrič skozi sestavljanje ali tipkanje up, prepisovanje, nekaj podobnega frère Jacques, ta preprosta pesem, ki ima veliko dela v njej, da so self-podobna ali ponavljanje. Torej bo to nekaj motivacija zakaj smo s pomočjo Haskell, v kateri funkcije razreda državljani prve. In sem želela razširiti to malo. To je malo težko notate frère Jacquesa v Haskell. Toda kaj, če smo želeli dodati dela bobna z njim? Kaj pa, če smo želeli, da bi poskušali narediti nekaj podobnega Roland 808 ali 909 bobnu stroj, kjer imate približno 16 različnih korakov? Navadno so ti misli kot 16. not. In lahko nadzorujete globalno tempo, in lahko izločiti kup različnih tolkal delov za bas boben, A klap, različne zanke, odprti in zaprti visoki klobuki na te vrste kanalov, in potem si lahko EQ ali prilagodijo svoj obseg. In bomo videli lepo pot v Haskell predstavljanja ta korak sekvencer z vsemi različne kul stvari v Haskell lahko storimo z ustvarjanjem Seznami in filtriranje več seznamov, kartiranje več seznamov, kartiranje Funkcije več seznamov. In hitro opravičilo. To je zelo površna in preveč hitra skica nekaterih vidikih od Haskell in Euterpea, ki je specifična domena vgrajeni jezik pisno v Haskell glasbenih tipov. Torej, prosim, preverite kodo na spletu. Razvneti GHCI, ki je Glasgow Haskell Compiler prevajalec. In bom delal nekaj to v malo tako da boste lahko videli, kako je to storjeno. In to vam omogoča, da naložite z the-- sintaksa je debelo črevo in nato ukaz. Lahko naložite datoteke. Lahko uporabite brskanje na teh datotek da vidite vse funkcije, ki jih obstajajo v posameznem modulu. In potem, kot bomo videli, vrste in tipa razredi so tako pomembna v Haskell, tako da lahko vedno check-- posebej če delate v novem DSCL kot je ta, kaj je vrsta glasbe? Vem, da o tem, kako številčna vrste dela v Haskell, ampak jaz ne vem veliko o glasbi. Ampak lahko raziskujejo, kako oni definirana z uporabo te t ali tipa ukaza in potem kliče na določenem Funkcija ali podatkovni objekt. CONNOR HARRIS: Ja. Če ste mislili, C in Jek je hardass o vrstah, nimate pojma o Haskell. Dobra stvar Haskell je, da če lahko dobite kodo za sestavljanje in če pregledih tipa Haskell, je verjetno prav, ker sistem tip je tako stroga. STEPHEN KREWSON: Ja. Torej, jaz samo želim iti through-- in znova, To se ne počne to justice-- nekaj značilnosti Haskell, da se vsaj njegove creators-- in je bila ustvarjena V poznih 1980-ih s kupom ljudi, odbor za približno 20 people-- mislil bili pomembni. In prva stvar, ki jih navedeni v papirju, ki opisano geneze Haskell V prvih 20 let ali tako je, da je len. Torej, kaj to pomeni? No, to pomeni, ko imamo nekakšno izražanja, ga moramo ovrednotiti. In Haskell počne to v razpisu ki jih potrebujejo tako ali ne-strogo. To je, če imamo kup komponente našega izražanja, smo poskušali odložiti oceno teh podkomponente dokler absolutno zadnjega minute-- da je, dokler smo jih dejansko potrebujejo. Torej, to means-- ki je res kul, še posebej, če razmišljate o abstrakciji glasbenega korak sekvencer. Zavijemo ga na, in začnete teče korak sequence-- Če ste kdaj delali z bobnom machine-- in da gre samo za večno. Tako da bi bilo res lepo, če bi bi lahko posnemali, da je v Haskell. In bomo lahko to storite z neskončno vrednosti, zlasti neskončnih seznamov. To je zelo enostavno, da vnesete neskončen seznam v Haskell. Lahko samo uporabo sintakse navzdol tukaj, kjer lahko vidite od 1 do 3, odstranite 3 1 dot dot, in da je neskončen seznam vseh naravnih števil z razširitvijo na kolikor si lahko predstavljate. Rad bi uvesti Koncept gub takoj. In še enkrat, namen za ta seminar ni da spoznajo gub v Haskell ali višje funkcije naročilo. Ampak jaz samo želim, da se predstavim dajo točno občutek, kako čudno Haskell je in kako močna je. In predvsem, gremo na be-- ko bomo naše različne drum deli, bomo se manipulira sezname številke, ki jih dvokrilna na drug drugega. In za to, da bomo uporabljali zemljevide in gub. Tam je prav asociativna krat, kar je ta pravica here-- 1 minus količina, 2 minus količina, 3 minus 0. In sintaksa za krat, daš krat Z bazo vrednost, potem pa operation-- V tem primeru dodajanjem ali odvzemanjem. Pokazal sem obeh primerih. In potem je tukaj še akumulator, ki nabira preko celotnega seznama uporabi tega operaterja plus ali minus, nato pa ga kopičijo. Torej bo to the--, če je bil imenovan z zložljivimi r plus 0, začenši z 0, mi bi potem sešteje vse številke v tem seznamu. In da je seznam od 1 do 3. CONNOR HARRIS: Torej, da bi ji dal še eno Tako krat r traja tri argumente. Tam je funkcija sama traja dva argumenta, potem je vrednost starter, in tam je seznam vrednot. In kaj morate storiti, je vzameš starter vrednost, prva vrednost, jih postaviti v funkcijo. Kaj dobiš ven, Vzemi, da krma, ki v odvisnosti od druga vrednost, kaj dobiš ven, sprejeti, da se krma da v Funkcija tretje vrednosti. In potem, če greš dol vsa ta seznam na ta način, boš dobil na koncu nekateri singularna vrednost, ki je istega tipa, kaj se je začela ven z in istega tipa kot stvari na seznamu in nato to je posledica vračanja kratno R. STEPHEN KREWSON: Torej, še zlasti, to so višje funkcije naročilo, ker oni ob drugo Funkcija kot enega od argumentov. CONNOR HARRIS: Ja. Če ste uporabljali določena druga languages-- Vem R [neslišno] jezik ima ta, ki se imenuje Zmanjšajte. Morda imate podobne funkcije v drugih jezikih, tako imenovano različni stvari. STEPHEN KREWSON: In kaj je lepo o kratno R v tem primeru je, da zgib R lahko delajo z neskončnimi seznami. Torej, v tem dnu, to P5 se ustvarjajo zapiske, ki vklopljena v koraku sekvencerja za nekateri del bobna, peti del bobna, in morda je conga boben ali kaj podobnega. In to je namerno Nor način pisanja tega ampak to je zabavno, ker to kaže veliko stvari o Haskell in Euterpea. Torej krat R te colon-- debelega črevesa je le operater, ki potisne stvari skupaj na list-- pozval prazna Seznam, ki je le prazne konzole. In kličem, da o tem neskončnem seznamu. To je pravzaprav dva seznama seštevati tukaj. Seznam 1 vejica 6 dot pika 1, 6, 11, 16. Torej Haskell-- v samo nekaj znakov, ki jih lahko ustvarjajo cele zaporedje števil da so pet številk narazen raztezanje naprej v neskončnost. In moramo dodati, da, da to krajše malo list-- 3, 8, 21--, samo da ti pokažem kako lahko združite sezname. In potem sem se zloži na sebi. In to konča kot le nekakšen Operacija identiteta, vendar je neskončno. In krat R lahko storite, da se zaradi nje leno vrednoti, kot je navedeno zgoraj. Če imamo 1 in 2 in 3, smo lahko Samo oklepati off celoten preostanek njega. Da ne bo delo za minus ali plus, vendar si bo prizadevala za to debelega črevesa identiteta delovanje na seznamu. Torej, kako praktično uporabiti, da če smo imajo neskončno dolg seznam stvari? No, Haskell zagotavlja Veliko functions-- in so videti bolj v ti v svoj time-- kot traja ki pravi, OK, mi smo ustvarjajo to neskončno seznam, vendar smo le, da bo sprejeti nekatere število nje In v tem case-- bomo to videli kasneje v Naša boben stroj code-- GM je le nekakšen globalni spremenljivka za število korakov v sekvencerja. Na strojih roll-in I ti so pokazali, da je običajno 16, ampak sem ga izvajajo z 32. To sploh ni pomembno. Haskell je tako čista, tako da ima močan statični tipkanje da Connor namiguje. Torej funkcije Matematični v sense-- oni so bolj matematična da oni zajamčena da ne dostopa ali spremeniti kakršnokoli spremenljivka ali opravljati vhod ali izhod. Torej, če imate funkcijo, je deterministična. To bo vedno vrnil enak vrednost v stanju programa ali ostala enaka. Obstajajo seveda unarna izjeme za to, ampak to je izven našega dosega. CONNOR HARRIS: Ja. Kaj to pomeni, čeprav je tam so nekateri pomembni [neslišno] Posledice tega. Ena je, da je zelo enostaven za paralelizirajo programe Haskell. Ker, če imate, pravijo, funkcijo, ki potrebuje za delovanje na milijon vrednotah, če ste vedeli, da bo funkcija vedno dati ven enako vrednost, če hraniš v določenem value-- če ste [neslišno] f 1, f 2, nato f 3 ali whatnot-- f od 1 se ne dogaja, da napišete v datoteko ali pa kaj ki bo spremenila vrednost f2. Lahko samo razdeliti to funkcijo k milijon različnih strojev ali milijon različne teme, ali karkoli, dobili vse odgovore nazaj, dobili vse vrednosti vračanja nazaj, in potem to je to. Torej, zelo enostavno paralelizirajo stvari. Slaba stran je, da je vhod in izhod posebej vklopil v sistem tipa v zelo zapletene načine. Mi ne bo šel v to prav zdaj, ampak jaz vam svetujemo, da pogled na nekatere vire na spletu, če želite izvedeti več o tem. STEPHEN KREWSON: Torej tip classes-- in to was-- razredi tipov so izumili za reševanje problem operaterja preobremenitve. Tako smo želeli imeti enakost med različnimi vrstami stvari. Seveda, lahko razmišljamo of-- enakost med številčne vrste je zelo enostavno, da razmišljajo o tem, vendar Kaj pa enakost med seznamih? Kaj pa enakost med drevesne podatkovne noga strukture? In to sploh mogoče Haskell zaradi razredov tipa. Torej, če si določite neko podatkovno type-- in tukaj, to so glasbeni parcele. Mi smo končno dobili do neke računalniške glasbe. Torej imamo C, C oster, in tako naprej in tako naprej. Spadajo v kup različni razredi tipa. EQ-- pripadajo razredu tipa EQ. To pomeni, da podpirajo Operacije enakosti. Tako da lahko oceni, ali enega Zaporedje glasbenih gradnikov je enaka kot druga. Pripadajo vrstilnega razredu. To pomeni, da tam je naročanje na njih. D pride po C. C ostra prihaja po C, kot dobro. Pripadajo k razredu kažejo, kar pomeni, da lahko se natisne na konzoli ali terminala. Spadajo k Razred naštel, ki pomeni, da čeprav to so znaki, imajo na katerem temelji numerični zastopanje začne pri 0 in tekoč off skozi vendar veliko stvari, ki so tukaj, 20 ali tako, ali 30 ali 40, morda. CONNOR HARRIS: In ko imamo vrsto podatkov da derives-- s to ključno besedo "deriving--" določen razred tipa, to pomeni, da bo prevajalnik poskušali zgraditi nekaj samodejno. Torej, morda boste želeli opredeliti kakovost različno. Boste želeli opredeliti C oster kot enaka D ploska, npr. S to gradnjo tukaj, jaz ne mislim, C oster in D ravnim bo enaka, saj prevajalnik bo samodejno pravijo, vsak drugačen možno vrednost se razlikuje od vsakega drugega. Torej je možno, da preglasi privzete izvedb teh vrst razredov. Še enkrat, poglej na referenco, če želite izvedeti več o tem. STEPHEN KREWSON: In tukaj, v resnici, to bom koristno, ko smo kodo kasneje. Vidimo nekateri operaterji Vplivajo za zaporedno sestavka, vzporedno sestavek, in tako naprej, ti plusi in enake znake obdan s podpičji. To pomeni, da lahko igramo ti različni glasbeni primitivnih eno za drugo. To je zaporedna sestava. Ali jih lahko igrajo v vzporedno hkrati. Torej imam lahko glasbeno vrednost, in potem je to enako in dvopičja, Vplivajo vzporedno operaterja sestavo, in jih igrajo, kot neke vrste tetive. In bomo uporabili to, ko smo se združujejo naš del bobna z našimi malo Frere Jacques pesem odigrati ti dve sekvence glasbeni vrednosti hkrati. Currying is-- Curry je bil nazadnje ime za Haskell Curry, ki je Haskell slika se imenuje po njem. In to nam tudi omogoča, lepo, elegance, ko smo pisanje vseh teh različnih funkcije ali filtri, da smo bo kartiranje preko naših seznamih. Funkcije dveh arguments-- f x in y-- se lahko predstavi kot f x uporablja za y. Tako da je funkcija en argument, da se vrne druga funkcija enega argumenta. Torej to pomeni, da lahko preslikati funkcija f x nad seznamom y-jev. CONNOR HARRIS: Želite dati zgled za to? STEPHEN KREWSON: Ja. Imam primer tukaj iz nekatere stvari, ki jih bo vpisoval. Torej ponovitev 2-- dobro, ponovitev bo ena vrednost, ki je, koliko krat, da posnema nekaj, in potem bo trajalo value-- navadno seznam ali kaj podobnega. Torej, tukaj, smo kartiranje ponovitev 2 nad drugo seznamu. Torej, če imamo karto ponovitev 2, če želimo posnemati 2 uporablja na prvi element tega list-- in to so seznami glasbene phrases-- bo ustvarila dva "si sleeping--" tako spiš, spiš. Torej, zdaj imamo dva. Ampak posnetek traja dva argumenti, ampak zato, ker smo currying in nato kartiranje, moremo predstavljati posnemati 2 kot je bilo ko se je vrnil kot funkcija ena argument-- samo posnemajo dvakrat. In potem smo se uporablja, da je vsak element tega seznama stavkov. In concat je Haskell Operacija za uravnavanjem seznam. Ker ponovitev 2 volje pripravo seznama seznamov. In to je ta vmesna oblika tukaj. In tako potem bomo lahko concat ali ravnimi da dvakrat. CONNOR HARRIS: Enostavnejši Primer strojenje, Če želite like-- predstavljate f je le Funkcija množenje, ki traja dve argumenti in se vrne v svoj proizvod. Torej, če imate F 4 5, to je 20. Ampak si lahko zamislite, da je to also-- imate funkcijo F 4 da je argument in vrne Štirikrat to argument-- samo delna aplikacija, ki samo en argument 4. In če krma f od 4 5, ki vam bo dala 20. In to je preprostejša Primer strojenje. To je običajno eden izmed učbenikov narave. STEPHEN KREWSON: Lambda izrazi ali anonimni funkcije so še Haskell znak. Torej, če moramo Ščepati malo funkcija življenje ponovitev, ampak pravijo, da je ni v standard knjižnica, lahko uporabite sintakso podobno naslednjemu. In bomo vetrič čez to. Ena stvar, ki jo boste videli veliko v boben stroj smo klice na nekaj imenovano filter, ki je tako kot prej, je preslikava odvisnosti nad seznamom, ampak to je kartiranje logične funkcije. Torej imamo tukaj primer od brezhibna anonimno opredeljena Boolova funkcija, ki samo traja par vrednosti. To ni strogo gledano anonimni funkcija. Ampak to je definirati da je sintaksa za jedrnatosti in to samo traja x modul N- CONNOR HARRIS: Ja. Torej f je funkcija dva argumenta n in p da vrne funkcijo, ki je sama funkcija enega argumenta, in sicer x. STEPHEN KREWSON: I zgoraj omenjeni operaterji Vplivajo. Kaj so operaterji Vplivajo? No, operaterji Vplivajo so običajen način predstavljajo operacije, pravijo, v mathematics-- 2 plus 2 namesto operaterja plus in potem dva argumenta 2 in 2. CONNOR HARRIS: To se imenuje reverse polish zapis, ki je izraz, dvomim, da kdo od vas bi vedel. STEPHEN KREWSON: Right. Povratne nohte ali predpono zapis. Ampak Haskell se odločili, da uporabite operaterjev Vplivajo. Torej, to so nekateri tisti v meri, ki definirani za Euterpea DSCL v Haskell. Torej je bilo to zaporedno sestava. To je bila vzporedna sestavek, in to je med krčenjem paralelno kompozicijo. In bomo potrebovali, da z našo boben stroj, saj bomo uporabili zadnji operater v tej mali zapis tam igrati boben stroj skupaj z našo Frere Jacques pesem. In naša boben stroj bo neskončno. To je samo igra večno. Toda Frere Jacques pesem ni. Saj ni tako dolgo. To je le nekaj barov. Zato smo morali prenehati bobna stroj kot Takoj, ko pride krajši glasbeni vrednost do konca. In da vdelane operater je super koristno s tem. In Vplivajo zapis všeč to je nekako lepo, ker je rekel, da imajo funkcijo kot Citat, ki daje celi delitev x zaradi nečesa else-- Žal mi je, da bi moralo biti a in b. Lahko bi jo napišite kot citat b. Torej, če ste put-- element še en primer tega. x element na nek seznam, če si dal je v Backticks, ga lahko uporabite. Čeprav to ni simbol kot plus ali minus ali časih, lahko uporabite ime funkcija, kot je ta v Backticks kot upravljavec Vplivajo, kar je precej kul. CONNOR HARRIS: Tudi to je vse samo skladenjski sladkor, res. To ne vpliva na bistvo jezika. STEPHEN KREWSON: Tako vidimo tukaj za zadnji stavek našega Frere Jacques pesem, Igral sem nekaj malo akordov ali tretjini uporabljajo vzporedno kompozicijo operater. To je še en način rekel nekaj o tem, kaj smo pravkar rekel. Torej lahko zemljevid funkcije en argument več seznamov. CONNOR HARRIS: Again, reference za Haskell-- uvodnih učbenikov bo imel vse to v njej. STEPHEN KREWSON: Torej, tukaj je precej Ključ linija koraku sekvencerja bomo vzeli pogled na uporabo seznam razumevanje. In vidimo tukaj, je, da je element v fiksni operater v hrbtu narekovajih. Torej, če je x element seznama x-ih, potem bomo vpokličejo Perc funkcij. Torej Perc je samo funkcija tolkala. To traja nekaj vrednosti p, ki je del omejene niza vse različna tolkala zvoki da smo videli v prejšnjem diapozitivu, in potem daje da Trajanje četrt note. Ostalo pa ji daje QNR in QNR je le četrtina opomba počitek. Torej, to je vzpostavitev nekaj lepega. Imamo seznam elementov, in Bomo zanka preko nekega seznama iz ene do max vrednosti našega korak sekvencer. In ko smo že pri določenem i v da je seznam enega do max vrednosti, če je, da sem član tega set ustvaril v tej funkciji, dobro, potem pa ga obrnite v tolkala noto. Sicer pa smo pravkar igrajo počitek, ki se pravi, smo samo molči. In lahko vidimo tukaj, da se v ta seznam razumevanje sintakse, x je poseljena s tem seznam zgrajeno eno s svetovnim velikosti sekvencerja. CONNOR HARRIS: Ja. Osnovna sintaksa za Seznam spoznanjih je nosilec, vrednost vključuje nekatere spremenljivke, bar, možne vrednosti spremenljivk sami, zaprt nosilec. In če ste naredili določene graditelja zapis v kakršnikoli matematike razreda, ste morda nastavljena 2n kot da je n ali n v zv. Podobno thing-- tem zapisu je mišljeno, da napeljuje te matematično notacijo. STEPHEN KREWSON: In lahko uporabljajo več predikate in več filtri v seznamu razumevanje, ki je zelo lepo. Algebraic types-- smo ne bo tukaj ostajal dolgo. Tam ni dobra ideja v Haskell ali dobra, očitno pojem kako sprejeti, recimo, privzeto parameter za funkcijo ali kaj podobnega. V Python, je to precej enostavno. Lahko samo rečem z enako na deklaracija funkcije, privzeta vrednost Primer none je na voljo. V Haskell, bi si morda uporabite morda morda tip, ki bo bodisi nič ali njena vrednost tipa samo. Tako smo izkoristiti to v boben stroja da nam omogočajo, da izbirni volumen parametri za vsakega od delov bobna. Tako, da nam daje pot ob EQ ali njena prostornina na določen kanal. CONNOR HARRIS: V drugi Haskell primeri, lahko vidite mogoče uporabiti za funkcije, da bi propadel. To je skupna ena. STEPHEN KREWSON: In lahko dobavi neke vrste sporočilo o napaki kot privzeto. In to je še posebej priročno, če delaš I / O v Haskell. Da je mogoče trike. CONNOR HARRIS: ali za Podoben primer, mislim, od odvisnosti, ki vključuje delitev parametra, ki so lahko 0. In to funkcijo lahko vrnitev morda karkoli. Torej, če ne obstaja delitev z 0, se bo vrnil šele karkoli. In če obstaja delitev, ki jih 0, vrne nič kot način za signaliziranje napako. Ker je ena od posledic Haskell je zelo stroga tipkanje je, da ni real-- Izjeme so nerodni, v bistvu, obravnavanje napak je nerodno. In to je eden zelo pogost način to počne. STEPHEN KREWSON: Torej, zdaj smo dobili drugemu um-upogibni stvar o Haskell, ki je vzorec ujemanje in funkcijske opredelitve. Sem ti pokazal v zadnjem diapozitiva Izjava o zaporedjem faz Funkcija, ki je vzel morda vrednost, nato int, nato seznam ints, nato vrne zaporedje glasbene vrednote tam označi s tako poškodbo in volumen. Torej ti trije argumenti so lahko Vzorec ujema na naslednji način. In smo vedno želeli biti prepričani, da narediti osnovni primer ali izstopa primer prvi. In ti podčrtaj se samo mogoče razlagati pomeni nobene vrednosti, ki je tam. Torej, če smo dobili poziv, naj okrepijo zaporedje z določeno vrednostjo, kakšno drugo vrednost, in potem je prazen seznam, kaj želimo Za vrnitev je le tišina, počitek 0. In namesto tega čemer je prazna seznam ali 0, to je ostalo 0, ker smo ki se ukvarjajo z vrsto glasbe, in prazni seznam glasbe Tip je le ostali brez trajanja. To ni glasba. In potem bomo videli, če bomo dobili korak zaporedje s proti trditev prostornine, p za previdnosti instrumenta Argument, nato pa seznam x-ih. Potem smo narediti nekaj stvari. Predvsem pa uporablja ta seznam razumevanje, in mi opravljanje nekaterih Operacije na morda vrednosti da se spremeni v numerične vrednosti, tako da da bi se lahko nato našteti in rabljeno Za izbiro instrumenta. Tudi to je malo bit namerno inconcise samo, da pokažejo vse čudne stvari lahko storite v Haskell kot vi poglej na njej o svojem času. V redu. Torej smo končno dobili na to, kar smo si zastavili, da ne, ki je narediti nekaj računalniško glasbo. Torej bomo poskušali narediti Frere Jacques pesem. Torej obstaja koliko besedne zveze v frère Jacques? Four. Great. In tisto, kar je lepo, je, da oni vse ponovi enako količino roki, ki je dva. Torej imamo štiri stavke vsak ponovili dvakrat. In zlasti oni v krogu. In obstaja veliko, veliko načinov za izvajanje okrogla, da bi bilo zabavno delati. Sem jo izvajati na zelo preprost način tu, ki je samo za construct-- linijo funkcija je seznam glasbenih vrednot in jo spremeni v zaporedno sestavo z uporabo te sekvenčni sestavo operater. In potem sem se odloži različne dele tako, ki se začnejo s počitek. Torej začnem s preostalim dveh ukrepov, in nato preostanek štirih ukrepov, in nato preostanek šest Ukrepi, nato okrogla Deluje, kot vsi vemo, to pesem. Vidimo dve pripisi ali modifikacije glasbenih vrednot ki so vsebovane v tem zaporednega Razporeditev glasbenih elementov. Imamo volumen dodati. To je funkcija, da zabeležijo glasba z določenim volumnom. To je dober primer signala zapored MIDI od 0 do 127, sedem bitov informacije, ki se lahko prenaša. In then-- smo videli zelo na kratko, ampak splošno MIDI Seznam vseh različnih instrumentov. In tam ni cel kup njih. Če uporabljate digitalni avdio delovne postaje, kot Ableton Live, ali Pro Tools, tam je neverjetno širši razpon sintetizatorjev in VST instrumentov. Ampak samo standard MIDI ima nekaj ali nekaj deset. In nekateri od njih so smešno. Mislil sem, da bi bilo zabavno, če bi igral instrument instrument MIDI helikopter, nato pa Naslednja pot skozi krogu, smo naredili pad sintetični, in potem to corny svinec synth kvadratni val, in nato govorni izcedek, ki so malo nejasno na mojo slabo MIDI sintetizator, vendar pa v redu. In potem vidimo to ponovitev in v skladnji od Haskell, in potem igramo vsi ti deli skupaj z vzporednim operaterja sestavek. In smo lahko verjetno pokazal nekaj od tega. Tukaj je koda. In si lahko ogledate v C, da bi bilo Veliko grla kliringa in nastavitve koda miza pred vami bi lahko glasbo, kot je ta. Ali katero koli drugo programsko jezik, bi vam verjetno morali za interakcijo z neke vrste knjižnico ali API in nastavite vse gor, in potem boš moral pospraviti. Ampak tukaj v Haskell je, mislim, enkrat boste dobili visi za to, neverjetno berljiva in zelo izrazit. Tako da je izvajanje od frère Jacques. V redu. Sedaj želimo dodati tolkala, in to je malo umazani. Tako da je lahko pogled na diapozitive. Tako da je velika ideja je, da bi kup seznamov ali delov. Na teh roll-avtomatov, obstaja so tipično okoli morda osem 10 ritma ali udarnih delov. In nato uporabite kup tehnik. In smo se pogovarjali o these-- uporabo kratnih, filtri, lambda funkcije, preslikan več seznamov, ki ustvarjajo vrednosti v nekem območju 1 do r, r 16, ali 32 korakov v sekvencer. In potem, če je vrednost v tem seznamu kot smo teče skozi sekvencer, ki teče skozi njo znova in več, se je izkazalo na to opombo, ter da vzorec postane sprožil. Tu so vse različne čudne načine za Sem prišel gor, da ustvarjajo zapiske. Poskusi na svojem pol zneska. To bo sliši kul. Čas dopušča, bomo šli skozi to. Ampak za zdaj, mislim, moramo demo, kar imamo. Upajmo, da to gre v redu. Torej, to je GHCI. In bomo naložite datoteko Imam imenovane song.lhs, ki je datoteka sem ti pokazal. OK super. Kot je dejal Connor prej, je zbrati, s tipom se preveri, tako da ne morem dihati veliko lažje. To se ne bo razstrelil na mene. Nisem rad bi vam pokazal nekaj koristnega. Lahko vidite, da je modul naložen imenuje 50. Brskate lahko ta modul. In to je tako lepo o doing-- morda kaj delaš v je Haskell ne imenovan za razvoj programske opreme, vendar pa lahko naredite veliko zabavne stvari na svoje. In potek dela je res lepo, kot je v primerjavi z veliko drugih jezikov, ker si lahko ogledate v res berljiv način, kaj se dogaja. Tako vidimo, da imamo Vse te fraze, ki so seznami glasbenih parcel, nato pa smo zgraditi ti gor v nekaj večjega, ki je glasbeni pesem. To je glasbena enota. In potem to lahko igrajo vse z play funkcijo imenovano glasbo. Vidite lahko, da sem dol. Ki je samo igra. Moral bi say-- nisem govoril o to znak za dolar, ki je povsod. Znak za dolar je še Vplivajo operater. Vendar ima najnižjo prednost za vsak gospodarski subjekt, ki učinkovito pomeni, da je vse, kar je na leva za znak za dolar in pravica znak za dolar, bomo dobili oceniti pred njim. Torej, to je nekako kot druga način dodajanja oklepajev. CONNOR HARRIS: To je v bistvu Funkcija sestavek. In zagotavlja, da ne boste have-- če moraš naloge, bodisi s strani ali Vplivajo subjekti na obeh straneh, da ne bodo povezujejo preko njega in daš nepričakovane rezultate. STEPHEN KREWSON: Tako smo can-- uporabi, da lahko rečemo. Najprej bomo igrati brez bobnov. Da je helikopter, MIDI helikopter. [Predvaja glasba] Tam je kvadratni val. Glas izcedek. In lahko res divje s tem. Pobral sem precej enostavna, ker sem vedel, da ne bi smel odgriznejo več kot sem lahko žveči. Samo da je zelo preprosta prikazati glavne ideje. Ampak potem sem bil všeč, smo moram dodati nekaj bobnov na to. Samo zato, ker gre za malo nepredirna, in nisem uporabite Ime delov bobna, I preslikan them--, ker oni del tega naštevanja razreda, Sem jih preslikajo v ints. Ena je kot bas boben. Je nič, kot tudi. Sedem je visok klobuk. In dol, tukaj, kjer se Funkcije dobil malo bolj naključno, ti so kot Conga bobnih. Torej, če mislite about-- morda zabaven način za izvajanje boben stroj je uporaba zelo urejeno vzorci na vaš bas boben. Tako na primer, na filtriranje nad Seznam z vsem, kar daje nazaj A 1, ko je to izvedel modul 04. Tako sem dobil 1, 5, 9, 13, 17-- tako da to je prvi utrip vsakega ukrepa. In potem je to isto stvar premaknilo v dveh korakih. Torej, to je Nekonvencionalan. Torej to ne bi bilo nekaj podobnega visoki klobuk. In tukaj potem spet dol, to je malo naključno, ker delava Conga boben. In imam nekaj MARACAS dol, preveč. Tako sem lahko pokličete play boben stroj, vendar pa bi šel na večno, in bi bilo začeti oprijemalne gor ves spomin v mojem sistemu. Torej bom poklical to funkcijo predvajanje glasbe, ki je, kot bomo videli, uporabite oklesti paralelno kompozicijo da igrajo naši mali Frere Jacques pesem skupaj s to čudno boben stroja. Torej, kaj si zdaj. In prosim ne izboljša na mojem razporeditev vseh delov bobna. Ni moja posebnost, vendar sem imeli veliko zabave počne. [Predvaja glasba] Torej seveda, to je vse malo, ne bit tako zabavno če ga ne moremo spremeniti k rezultatom tako da morda je lahko razlaga s človeško izvajalca. Zato sem ga ne bodo izvajali tukaj. Sem že ustvarjenih datotek. Vidite lahko, da obstaja dot LilyPond file-- in to bo moj segue prenesejo Connor-- in datoteke dot MIDI, in datoteko dot PDF, ki je kaj LilyPond bo na koncu ustvarijo. Toda to so tiste skripte, in bom samo jih vodijo z njihovimi možnostmi za pomoč. Če dobiš to in teče s Euterpea, lahko ustvarite MIDI datoteko. In nato iz MIDI datoteke s tem programom MIDI 2LY, lahko ustvarite Lily Ribnik datoteke, nato pa lahko ustvarite PDF partiture. In moramo sprejeti pogled na to. Torej Connor bo verjetno pokazal ste, kako zabeležijo to bolje, ampak to je Frere Jacques kot ki sem jih ustvarila v Euterpea. To je samo v C. Naj so pogruntal , kaj je kramp je dejansko. Ampak, da je cevovod za kako to narediš s tem. Spregovorimo več o LilyPond. CONNOR HARRIS: OK Pa poglejmo. Si omenil izvedeli ste Haskell? STEPHEN KREWSON: Oh ja. Oglejte si Več o tem vam Haskell. To je v virih. To je, kako sem začel učenja, in to je super. Ni neumna učenje. CONNOR HARRIS: Torej, to je na spletu. Torej fant z imenom [neslišno] learnyouahaskell.com, brez presledkov. Slovnica je bolan. STEPHEN KREWSON: To je ilustrirana, preveč. CONNOR HARRIS: Torej, kaj je LilyPond? To je deklarativno programiranje jezik za glasbeni stavljenje. Torej declarative-- lahko razmišljati o stvareh, kot so HTML, kjer nisi saying-- HTML ne pove, kako spletni brskalniki smeli napravijo strani, korak za korakom. To je samo to rekel je tekstovni opis o tem, kaj želite, da se stran izgledal. In potem je tudi program da pripravlja ta jezik, ali pa preberite in pozneje dejansko does stavljenje za vas, in ga izpljune ti čudovito je videti rezultati PDF. Dobite lahko tudi PNG format ali karkoli. Dober način, da razmišljajo za to po analogiji je, da je LaTeX nekaj podobnega LillyPond, ampak samo navadne stavljenje. Torej, namesto of-- to ni WYSIWYG, What You See Kaj dobiš, kot so, recimo Finale je, ali Sibelius, ali Microsoft Word, kjer lahko vnesete v realnem času in osnutki stvari v realnem času in videti spremembe v trenutku. Temelji besedilo. Moraš zbrati Vaš rezultati, ki uporabljajo poseben program in ven PDF kasneje. To je nekoliko manj primeren za uporabo, če ste skuša neposredno pisati v rezultat in si poskuša sestaviti na računalniku. Ampak obstaja veliko prednosti za to. Ena, zgleda veliko lepše, ker LillyPond lahko dejansko vzeti čas, da naredite postavitev odločitve pravilno, za razliko od Sibelius ali Finale, ki imajo da bo ogrožena algoritme tako da lahko prikaz stvari v realnem času. Torej, zakaj je LilyPond-- računalniška grafika je težko. Če delaš karkoli z glasbo in želite napisati ven rezultate, nočeš pisati ven vse, kar sami začenši s tem, kako pripraviti štabi in kako pripraviti pisemski papir. To je zelo težko. To je bilo storjeno pred. Ti si v redu. Če želite uporabiti Finale ali Sibelius, zapisov za te stvari so zelo zapleteni, in ne morete res jih uporabite programsko. Lahko odpirajo Sibelius z Finale in pojdite na File, Export as PDF sami, Ampak ne moreš zares klic, da iz scenarija. LillyPond, lahko pokličete od teh scenarijev. Lahko bi enostavno Ponovil LillyPond LaTeX. Ne bom imel toliko časa, da gredo v teh tehnologij prav zdaj, vendar pa obstaja. Če želite iskati v LillyPond knjigo, to je program, ki prihaja z Vaše LillyPond distribucija, in to je za ponavljanjem LillyPond fragmenti v LaTeX če hočeš narediti nekaj kot velik muzikologije dokument s primeri, npr. In to je dobro znanje za življenje, če delaš karkoli z glasbo, ne samo CS50. Uporabil sem LillyPond za vse mojih sestave projektov saj sem bil v bistvu višji v srednji šoli. Torej, tukaj je nekaj preprostih primerov. To je v bistvu predstavnik raven zahtevnosti da večina ljudi bi lice so poskušali uporabiti LilyPond za enostavne projekte. Ta prva je začetek na korala uvod, ki ga Bach. To spodaj je ena odlomek iz enega od mojih lastnih del, in to je samo tam, da pokažejo vi stvari, kot so [neslišno] dajanje več vrstic v isti Osebje, kako lirski undersetting deluje. Lyric podloge so stvar, ki je zelo enostaven za uporabo LilyPond za zborovsko glasbo. In tako potem je tukaj še nekaj več zapletene primere tukaj. Vse to so storili v LilyPond in oni so izvedljivi. Ta prvi odlomek iz [Neslišno] do [neslišno]. In to [neslišno] iz kos za solo bas flavta s [neslišno] ki je longtime-- ki je bil dolgoletni član od glasbeni oddelek tukaj, mislim. Nisem prepričan, če je šel off. Vendar pa je bil svetovalec na Harvardu Skladatelji Društvo za dolgo časa. Čudovit človek. In piše glasbo, ki ima zelo zapleten zapis da LillyPond lahko kljub temu ravnati zelo lepo. Torej, samo da vam občutek, kaj Zmogljivosti Ta stvar je are-- tako Notranjost LillyPond so zelo zapleteni. In ga lahko uporabite za dolgo časa, vključno z za nekatere precej zapletena stvari, ne da bi zares da bi vedeli veliko o njih. Ampak osnovna ideja je, da na najnižja raven, da se atomi LillyPonds sta pojasnila. Pojasnila, vsebujejo kontekst imenovane glasove. Torej glasovnega kontekstu v bistvu ustreza na eno linijo polifonije. In potem se lahko kontekst biti vseboval hierarhično v višjih tiste ravni, ki predstavljajo štabi na rezultat ali večje skupine, kot so klavir štabi ali zbor štabi, in nato ob Celo partituro kontekstih. In lahko dejansko zajemajo več rezultati v knjigi. In vsak kontekst ima Število priloženih graverjev. Če pogledaš skozi vsebina kontekstu in natisniti določen znak ali določen razred simbolov kot je potrebno. Torej za vsako glasovno kontekstu, tam je [neslišno] opombe graver, da je v bistvu funkcija ali predmet, ki piše vso beležko glave na pravih delih strani. Potem pa je razcepljena graver, ki piše ven shiz na osebje. Potem je tu še metronom Oznaka graver, da piše iz metronom znamk v rezultat. In vsi ti prilegajo precej tudi v hierarhiji. In to je zelo, zelo, zelo prilagodljiv, kar morate če želite, da se stvari, kot je ta. Torej vsi konteksti imajo Veliko različnih atributov da lahko spremenite za vse od razmika za različne pisave Izbor za velikosti stvari. Če želite narediti še bolj zapletene stvari, tam je vgrajeni skriptni jezik. Uporabljajo shemo, ki je narečje LISP. To verjetno ne kaj pomeni. Ampak v bistvu, shema drugo funkcionalno programski jezik, bolj ali manj. STEPHEN KREWSON: The tie-in. CONNOR HARRIS: Ja. To je dobra tie-in, mislim. In je uporabljena kot učnim jezikom, pravzaprav, dol množično Ave. Na MIT. In to je zelo priročen za LillyPond zaradi različnih tehničnih razlogov. In tako, če želite, da enostavno poteg odvisne od pogojnih, za example-- tam je gotovo Stanje rezultatom, ki je spoznal, da spremembe na postavitev ali whatnot-- nato ti objekti so tam. Oni so zapleteni. Torej, tukaj je zelo preprost primer kode. To je pet vrstic. V bistvu, sem opredeljuje dva štabi. To je v 3/4. Prvi osebje ima pritrjen tempo znamka, ampak da se dejansko dogaja iti na celotno število točk, ker tempo znamkah so na ravni rezultata. Graver Metronom znamka je pritrjena na semaforju kontekst. Obstajajo različni ključi, ker je [neslišno] graver je priložen štabi. Lahko dejansko storiti, je. Vzorec sem napisal je pravzaprav v C-duru, ampak to je samo zato, da dokazati, da lahko imajo različni ključi v različnih štabi. In osnovna sintaksa je pišete Upoštevajte imena z E, F, G, karkoli. Če želite storiti predznakov, ste pripona ali ES. To je iz nizozemščini muzikološki konvencij. In narediti oktavo preskoke, boste morali uporabiti ti ustrezno oznake, vejico ali opuščaj. Relativno pomeni le karkoli imate noto, se bo samodejno plaec v oktavo najbližje prejšnjega. In če želite skočiti več kot fifth-- pravijo petino ali more-- potem boste morali uporabiti [neslišno]. Sicer pa, ti ne bi bilo treba določite oktavo vsakega posameznega lista. In relativna C, prime, in C, ki ste jo pravkar določite srednji C in osnova C, še posebej prvih pojasnila. Potem imate te štabi, ki organizirajo ta dva glasova ali vzorci glasbe, in imaš rezultat. In da je videti takole. Če želite, da bo čas do kopirati to vzorec LillyPond koda na prejšnji potisnite navzdol tukaj, in ti Lahko pišete za LillyPond sami. Vem, da imamo nekaj da je videti veliko, kot je ta. Torej, obstaja še en tehnologija imenuje Music XML nogah s povsem različnimi ljudmi. XML je besedilnih podatkov structure-- I Ne bi rekel podatki structure-- reči Metafora map nekako. In to je zasnovan tako, da imajo hierarhičnih podatkov zelo dobro. HTML, na primer, je vrsta XML. In lahko povem, XML, ker so imeli vsi kotni nosilci in kot je Nosilec poševnica znamke ki kažejo podatkovnih polj. Nimam kodo Primer iz Music XML. Najdete ga sami. V bistvu je razlog, boste morda želeli uporabljati XML kot vmesni fazi je, najprej, da je formata za izmenjavo za v bistvu every-- jaz ne bi rekel vsak, vendar veliko različnih rezultatom pisatelji. Torej, če ste napisali v glasbo XML, ne samo, da lahko LillyPond brati s pomočjo tega Pomožni Program se imenuje Music XML LY, ampak tudi lahko Finale prebrati je lahko Sibelius prebrati. Odvisno od tega, kako je vaš notranji predmeta Hierarhija dela za zastopanje glasbe, bi bilo morda lažje pisati ven Glasbo XML kot da LillyPond in samo zanašajo na Glasbeni XML da LY narediti konverzijo. Ne verjamem, da [neslišno] ima Music XML. STEPHEN KREWSON: To pa ne. Nekdo se dela na tem, čeprav. CONNOR HARRIS: OK. Euterpea nima Glasba XML izhod funkcija še ni. Če želite zaključno projektno idejo, mogoče priti v stik s fanti da Stephen ve, in ki jih lahko uporabite vašo pomoč. STEPHEN KREWSON: Rad bi, da je. CONNOR HARRIS: Prav tako, v bistvu, vsakih programskih jezikov da je vredno njegovo sol že ima knjižnico XML, tako da lahko interno pretvorite vse svojo glasbo v neki objekt da lahko knjižnica XML pisati , da bi bilo potrebno manj spremembe v vašem notranjo strukturo za kar vas glasba objekti želite napisati kot je pisanje neposredno v LillyPond bi. Potem pa ga natisnite z XML s knjižnice XML v vašem jeziku, ki bo zagotavljal, da je sintaktično pravilna in vse, in ga nato pretvoriti v LillyPond. Torej tehnologija, boste morda želeli poglej v če delaš nekaj Všečkaj to. [Neslišno], drugo auxilarry tehnologija. To je v bistvu Tech Works ali Tech Studio za LillyPond. Tako da nudi pomoč pri sintakso, s predlogami za različne skupne kombinacije instrumentov. Omogoča ogled na razdeljenem zaslonu tako lahko imate kodo v enem oknu in PDF v drugem oknu in kliknite na mestih v PDF za skok na ustrezni pike v izvorni kodi. To je bolj uporabno, če ste dejansko pisanje LillyPond sami datotek razen če ste generiranje jim načrtno. Ampak še enkrat, to je nekaj koristno imeti. Great. Drug resources-- bom iti skozi to zelo hitro. LillyPond manuals-- LillyPond ima odlično dokumentacijo, na svoji spletni strani. Imajo tutorial. Imajo sklic skladenjski. Imajo na stotine odrezke raznih majhnih stvareh yo bi morali storiti, da dokaže različne sposobnosti. Če želite uporabljati skriptni jezik ali bolj obsežna prilagoditve, potem je notranji reference na tem URL. Če želite uporabiti Music XML, tam je da URL, musicxml.com/tutorial. In potem, če boste morali naučiti shemo ker si dejansko želite uporabiti skriptni objektov v LillyPond, potem je [neslišno] imenuje Strukturiran Razlaga računalniških programov, ki ni samo drugi Največji CS učbenik kdaj written-- me našli potem, če hočeš vedeti kar mislim, da je največji eno is-- ampak to je tudi zelo dobra uvod v jezik pravilno. Ne boste potrebovali več kot prvih nekaj odsekov. In to je to. Kakšno vprašanje? ŠTUDENT: Kje lahko prenesete Vaše ustvarila Frere Jacques da jo bom lahko dal na svoj iPod? STEPHEN KREWSON: No, lahko pišete ven, da nekaj WAV v Euterpea. In imaš kodo. To je na GitHub. Naredite svoj različic Frere Jacques jih CS50 panjski mislih. To bi bilo super. CONNOR HARRIS: Še kdo? STEPHEN KREWSON: Potrebujemo boljši bas boben, preveč. To je res slabo. ŠTUDENT: Euterpea nima le stranska sestavek, vendar signal-- STEPHEN KREWSON: Da. Dejstvo je, delo I storil v Euterpea, ko sem je this-- obstaja Študij arhitekture na univerzi Yale, ki uporablja it-- bil na zvočne sinteze. Torej je res lep način, z uporabo puščic in nekatere notacije smo videli od sestavljanje skupaj signalne funkcije. Še posebej, bas za najbolj med njimi je samo preprost sinusni. Ampak, če začnete skladanje tistih, v čudnih programskih načinov, lahko dobite norega zvoka učinki, kot so čudne kaskade. Lahko ustvarite zelo kašaste Sliši se z veliko modulacije. Jaz sem projekt na medzrnsko sinteza, ki je nekje med FM in vzorčenje. Vzameš zelo majhna, malo vzorcev in nato jih kombinira z neke vrste modulator in zgraditi bogatejši zvok. Naredili smo tudi fizično modeliranje, zato poskušam razmišljati o fiziki in psihoakustika za nekaj podobnega trobenta, in razmišljam o tem, kako Zvok se odbija zvonec za trobento in akustika prostor in modeliranje da z osnovnimi oscilatorjev. CONNOR HARRIS: Najlepša hvala. Hvala za prihod. In jaz sem vedno pripravljen vzemite vprašanja email-- connorharris@college.harvard.edu. STEPHEN KREWSON: Ja. stephen.krewson@yale.edu. Cool.