CONNOR HARRIS: Tere.
Ma olen Connor Harris.
Ma olen CS50 CA Harvardi.
STEPHEN KREWSON: ma olen Stephen Krewson.
Ma olen TF CS50 Yale'i.
CONNOR HARRIS: Ja me ei kavatse rääkida mõningate tehnoloogiate, mida võiks
soovite kasutada, kui olete huvitatud tehes lõpliku projekti või tõesti
midagi muusikaga.
Me läheme tuleb keskendudes esmalt programmeerimiskeelt nimega Haskell.
See on funktsionaalne keeles, nii et paradigma
on väga erinev C või PHP või muu hädavajalik keeles
et olete kasutanud juba, ja eriti kohta raamatukogu kirjutatud Haskell
nimetatakse Euterpea, mis aitab inimesi kirjutamiseni muusika funktsionaalselt
põhimõtteliselt.
Ja Stephen sõelub läbi hea näide sellest.
>> Pärast seda, ma tutvustada teile midagi, mida nimetatakse LillyPond, mis
on tehnoloogia ladumise muusika.
See on omamoodi nagu LaTeX muusika, kui keegi teist
on kasutatud LaTeX matemaatika klassi või teiste P varaklassidesse või mida iganes.
Ja nii ma annan sulle taas, mõned lihtsad näited, mis
ja punkti sind üldiselt suunas mõned paremad vahendid.
>> STEPHEN KREWSON: In Lisaks arvasime
oleks lahe luua natuke vihjed
poole gaasijuhe Euterpea loodud MIDI faile
in LillyPond, et pakume mõned juhiseid skripte
mida teha, et see on varustatud LillyPond
lihtsalt hoida avatud lähtekoodiga ja saada gaasijuhe läheb.
CONNOR HARRIS: Jällegi, me peaks rõhutama,
need kaks tehnoloogiat, siis pole neid kasutada koos.
Nad ei loodud töötama koos, kuigi nad väga kenasti.
>> STEPHEN KREWSON: Right.
Ja täiesti tasuta.
CONNOR HARRIS: Nii tunnustused, just lugesin seda.
STEPHEN KREWSON: täpselt ära märkida.
Tänu neile inimesed.
See ma jõlkuma vaid hetkeks.
Paigaldamise käigus on natuke keeruline.
Oleme lugemiseks mind github et võite võtta pilk.
Lihtsalt kirjuta mulle, kui teil on mingeid küsimusi.
Aga me käivitada eeldusel et see töötab kõigi jaoks.
CONNOR HARRIS: Ja kui sa ei saa saada LillyPond tööd, ei ole suur asi.
Ei ole live koostamine, mis osaleb vähemalt minu lõpp.
STEPHEN KREWSON: Haskell ja LillyPond peaks nii olema paigaldajad.
Euterpea laaditakse kui pakett, nii edasi ja nii edasi.
Nii et me räägime arvuti muusikat.
Ja see on lihtsalt väga 50.000 jala arvates.
Seal on mõned eri aspektide üle.
Ja see on karm ja on läheb segaseks üsna üksikasjalikult.
Aga me võiksime mõelda midagi nagu algoritmilise koosseisu,
kasutades algoritme, kasutades koodi, et luua
teatud tüüpi of-- võibolla enesesarnaste nootide jada, või äkki märkmed
mõnele piirang.
Ja siis need võiksid olla läbi või tõlgendada
analoog vahendid või midagi sellist.
Aga koostis oli teha algoritmiliselt.
>> Aga muidugi, võibolla valdkonnas arvuti muusikat või digitaalse muusika
me oleme rohkem tuttavad on digitaalne heli sünteesi või digitaalset andmekogumis-
ja digitaalset salvestamist.
Palju digitaalsete vahendite on teinud läbi digitaalset andmekogumis-.
Tegelikult oleme me kasutada üht need kujul heli kirjasinkirjaston hiljem.
>> Aga seal on ka midagi, mida nimetatakse digitaalse sünteesi, mis tuli välja
on 70ndate arvesse "80s Yamaha ja John Chowning Stanfordi
teeme FM sünteesi või Sagedusmodulatsioon sünteesi,
kus sa olid vedaja signaali ja moduleeriva
nii audio spektri.
Aga mida me keskendunud täna on midagi, mida nimetatakse MIDI,
ja muidugi algoritmilise koosseisu.
>> Me ei kavatse teha vahendeid, kuid me mitte kavatse teha mõned muusika,
ja siis saavad tõlgendada mõned vahendid, et
on sobi kokku üldiselt MIDI standard.
Mis siis MIDI?
Ma ei hakka liiga sügavale see, kuid MIDI on andmevahetusprotokolliga.
See on mingi juhend üle erinevate ettevõtete ja tööstuste
korraldamiseks helisid või plaastrid.
Nii me näeme, et seal on MIDI standard
kõik erinevad löökpillid heli ja MIDI soovitused
Kõigi erinevate süntesaatorit või eri tüüpi kõiki seadme
rühmade orkester, öelda.
>> Sa oled ilmselt kursis 0 kuni 127 MIDI sõnumeid.
MIDI signaal on tavaliselt üks natuke näitab
kas see on andmed või staatus pakettaknad, ja siis on
seitsme bitti signaali.
Ja neid on võimalik kontrollida kõike maht
kaebusele või surve konkreetse võti
kui sa esinedes MIDI controller samuti loomulikult
märkmeid.
Ja muidugi, MIDI on olnud väga kasulik,
sest see on võimalus juhe koos või ketjuttaa
kamp MIDI riistvara.
Mul on seitse või kaheksa tagasi oma maja.
Läheb tõesti keeruline, aga see on tõesti võimas.
Ja see on tõesti vana.
See on alates 80ndate alguses, ja see on tõesti kena ja väike.
CONNOR HARRIS: Jah.
Kõik klassikaline Nintendo video mängud oleks ilmselt
on MIDI failid muusika, näiteks.
>> STEPHEN KREWSON: Siin on Näiteks üldise MIDI,
näitab MIDI omamoodi Üldise protokoll.
Ja ma arvan, et me ei mõtle vahe spetsifikatsioon
et tuleks midagi Nende instrument kõlab ja tegeliku
realiseerimise nende instrumentide helid tugevas fondi või teatud MIDI
süntesaator, nagu oleks vahe vahel võibolla typeface-- mis ütleb,
üldiselt, see on disain see konkreetne võimalus esindada
characters-- ja konkreetse fondi mis on konkreetse suuruse ja tämber,
ja seal on realiseerimise the--
>> CONNOR HARRIS: Võib-olla parem oleks võrdlus
olla Unicode standardi says-- see annab Numbri iga tegelane ja tõesti
Iga keel maailmas, või suur hulk skripte keel
maailmas ning seejärel need on sulatatud millekski graafiline
erinevate font paketid.
Ja muidugi, sa ei mõtle MIDI kui Unicode heli.
Ja see on lihtsalt nimekiri of-- suur vool sündmuste ja instrumendid ja tühi-tähi,
ja sa pead olema eraldi programmi, nagu kirjatüüp,
muuta, et võtta midagi, mis on kuuldav.
>> STEPHEN KREWSON: Miks Haskell?
Haskell on funktsionaalne programmeerimine keelt, väga hästi arenenud,
väga erinev C, väga erinevad PHP.
Ja me näeme, et seal on lihtsus Liitfunktsioon Haskell
mis võimaldab meil tuul läbi koostamisel või kirjutades üles, transkribeerivate,
midagi Frere Jacques, Selle lihtsa laulu
on palju osi nii, et on ise sarnast või korratakse.
Nii et see on osa motivatsiooni, miks
me kasutame Haskell, kus funktsioonid on esimese klassi kodanikud.
>> Ja ma tahtsin, et laiendada see natuke.
See on natuke lihtne noodistada Frere Jacques Haskell.
Aga mis siis, kui me tahtsime lisada trumliosaga on?
Mis siis, kui me tahtsime proovida teha midagi Roland 808 või 909 trumm
masin, kus teil on umbes 16 eri etappe?
Tavaliselt on need mõelnud kui 16. märkmeid.
Ja saate kontrollida globaalse tempo, ja te saate noppida
hunnik erinevaid löökpille osad bass trumm, plaksutama, erinevad püünised,
avatud ja suletud suure mütsid Nende omamoodi kanalite
ja siis saate EQ kohandada oma mahust.
>> Ja me näeme kena viis Haskell esindada seda sammu
sequencer kõik erinevate lahedaid asju Haskell
me saame teha teeniva nimekirjad ja filtreerimine üle nimekirju,
kaardistamine üle nimekirju, kaardistamine funktsioonid üle nimekirju.
Ja kiire vabandust.
See on väga pealiskaudne ja liiga kiire visand
Mõnede aspektid of Haskell ja Euterpea,
mis on valdkonnapõhised varjatud keeles kirjutatud
Haskell muusikaline tüüpi.
Nii et palun ärge vaadake kood online.
Käivita GHCI, mis on Glasgow Haskell tõlkija tõlk.
Ja ma tulen teeme mõned Käesoleva in natuke
nii näed, kuidas see on tehtud.
>> Ja see võimaldab teil laadida sisse the-- süntaks on koolon ja seejärel
käsk.
Võite laadida faile.
Võite kasutada sirvida neid faile et näha kõiki funktsioone,
eksisteerida konkreetse mooduli.
Ja siis, kui me näeme, liigid ja liigid Klassid on nii oluline Haskell,
nii saad alati kontroll-- eriti kui te töötate uue DSCL
nagu see, mida on muusika tüübist?
Ma tean, kuidas numbriline tüüpi tööd Haskell,
aga ma ei tea, palju muusikat.
Aga võite uurida, kuidas nad määratletud, kasutades seda t või tüübi käsk
ja siis helistab teatud funktsiooni või andmeid objekti.
CONNOR HARRIS: Jah.
Kui oled mõelnud, C ja rõkkama oli hardass umbes tüüpi,
sul pole aimugi Haskell.
Hea asi Haskell on see, et kui saad oma koodi kompileerida
ja kui Haskell tüübi kontroll, see on ilmselt õige,
kuna tüüpi süsteem on nii ranged.
>> STEPHEN KREWSON: Jah.
Nii et ma tahan minna through-- ja jälle,
see ei tee seda justice-- mõned funktsioonid Haskell, et vähemalt
oma creators-- ja see loodi 1980ndate lõpus kamp inimesi,
komitee umbes 20 people-- mõelnud olid olulised.
Ja esimene asi, mida nad loetletud paber,
kirjeldatud genees Haskell üle esimesed 20 aastat või nii
oli see, et laisk.
Mida see tähendab?
>> Noh, see tähendab, kui meil on mingi sõnavabadus, peame hindama seda.
Ja Haskell teeb seda kõnet mida vaja nii või mitte-range viis.
See tähendab, et kui meil on kamp osad meie väljendus,
püüame viivitada hindamisega nende komponente
kuni absoluutse viimase minute-- see on kuni me tegelikult vajame neid.
>> Nii et see means-- mis on väga lahe, eriti
Kui me mõtleme võtmiseks muusikaline samm sequence.
See on sisse lülitatud, ja hakkate töötab samm sequence--
kui sa kunagi töötanud trummi machine-- ja ta lihtsalt läheb igavesti.
Seega oleks tore, kui me mida jäljendada, et Haskell.
Ja me ei saa seda teha lõpmatu väärtused, eriti lõpmatu nimekirjad.
See on väga lihtne tippida lõputu nimekiri Haskell.
Sa võid lihtsalt kasutada süntaksi alla siin, kus sa näed 1 kuni 3,
eemaldada 3 1 dot dot ning mis on lõpmatu nimekirja
kõik füüsilised näitajad laiendada kohta nii palju kui võite kujutada.
>> Ma tahan, et kehtestada mõiste voldid kohe.
Ja jälle, eesmärgiga Seminari pole
õppida voldid Haskell või kõrgemat järku funktsioonid.
Aga ma tahan seda tutvustama andma täpse ettekujutuse imelik
Haskell on ja kui võimas see on.
Ja eriti, me ei kavatse olla-- kui me teeme oma erinevate drum osad,
me ei kavatse olla manipuleerides nimekirjad numbrid, kokkuklapitavad neid üksteise peale.
Ja seda, et me tulen kasutad kaartide ja voldid.
>> Seal on õigus assotsiatiivne korda, mis on see üks õige
siin-- 1 miinus kogus, 2 miinus kogus, 3 miinus 0.
Ja süntaksit korda, annad korda
algväärtuseks ja siis operation-- sel juhul, lisamine või lahutamine.
Olen näidanud mõlemal juhul.
Ja siis seal on aku, mis koguneb kogu nimekirja
kohaldamisel, et operaator pluss või minus, ja siis kuhjuvad.
Nii et see on the-- kui ta kutsuti voldiga r pluss 0, alustades 0,
me siis Kokkuvõttes kõik numbrid, mida nimekirjas.
Ja see nimekiri 1-3.
CONNOR HARRIS: Nii teisisõnu Nii korda r kolme argumenti.
Seal on funktsioon, mis ise kaht argumenti,
siis seal on starter väärtus, ja seal on väärtuste nimekirja.
Ja mida sa teed on teil võtta starter väärtus, esimene väärtus,
neid ellu funktsiooni.
Mida sa välja, võtta, et sööda
viiakse funktsiooni teine ​​väärtus, mida sa välja,
võtta, et toita seda arvesse funktsiooni kolmanda väärtuse.
Ja siis, kui sa lähed mööda kogu see nimekiri nii,
sa lähed, et saada lõpuks mõned ainsuses väärtus, mis on
sama tüüpi, mida sa alustasid välja ja sama tüüpi
kui asjad nimekirjas ja seejärel see on tagastamise tulemusena kordne R.
STEPHEN KREWSON: Nii eelkõige need on kõrgemat järku funktsioonid,
sest nad võtavad mingit muud funktsioneerivad ühe argumendi.
>> CONNOR HARRIS: Jah.
Kui olete kasutanud teatud teisi languages-- Tean R, [kuuldamatu]
keel on see, mida nimetatakse Vähendada.
Sul võib olla sarnased ülesanded teistes keeltes, just helistas
erinevaid asju.
>> STEPHEN KREWSON: Ja Mis tore kordne R
antud juhul on see, et fold R suudab töötada lõpmatu nimekirjad.
Nii see põhja, see P5 tekitab lisades, et
on sisse lülitatud samm sequence mõned trumliosaga viies trumliosaga,
ja võibolla on see conga trummel või midagi.
Ja see on sihilikult nüri, kuidas kirjutada seda,
aga see on tore, sest see näitab palju
asju Haskell ja Euterpea.
>> Nii korda R selle colon-- Koolon lihtsalt operaator, kes vajutab asju
koostööd vastastikuse list-- nimetatakse tühja nimekirja, mis on lihtsalt tühi sulgudes.
Ja ma helistan, et Selle lõputu nimekiri.
See on tegelikult kahe nimekirja liita siia.
Nimekirja 1 komaga 6 dot dot on 1, 6, 11, 16.
Nii Haskell-- vaid mõned tegelased, siis
võib tekitada kogu numbrijada
mis on viis numbrit peale venitades kohta lõpmatusse.
Ja ma ülaloleva sellele seda lühemat vähe list--
3, 8, 21-- lihtsalt näidata teile kuidas saab concatenate nimekirjad.
>> Ja siis ma olen volditud ise.
Ja see jõuab lihtsalt on selline identiteedi operatsioon, kuid see on lõpmatu.
Ja korda R saa seda teha, sest see Laiskasti hindab, nagu eespool.
Kui meil on 1 ja 2 ja 3, saame lihtsalt sulg ära kogu ülejäänud seda.
See ei tööta miinus või pluss, kuid see
töötab selles käärsoole identiteedi operatsioon nimekirja.
>> Niisiis, kuidas me praktiliselt kasutada, et kui me on lõpmatult pikk nimekiri asjadest?
Noh, Haskell annab palju functions--
ja uurida täpsemalt neid oma AEG_ nagu võtta
mis ütleb, OK, me oleme teeniva see lõputu nimekiri,
aga me lihtsalt aega võtab mõned number see ja selles case--
me näeme seda hiljem meie drum masin code--
GM on lihtsalt mingi ülemaailmne muutuja sammude arv
on sequence.
Roll-in masinad Ma näitasin teile, see on tavaliselt 16,
kuid olen rakendanud 32.
See ei ole tegelikult küsimus.
>> Haskell on ka puhta, nii et see on tugev staatiline kirjutades, et Connor vihjas.
Nii funktsioonid matemaatika on sense--
nad enam matemaatiliste et nad tagatud
mitte kasutada või muuta mis tahes muutuja või täita sisendi või väljundi.
Nii et kui teil on funktsioon, see on determineeritud.
Ta on alati tagasi samal väärtus riik programmi
või jäävad samaks.
On muidugi monaadilist erandeid sellele, kuid see on väljaspool meie ulatust.
>> CONNOR HARRIS: Jah.
See tähendab, kuigi on olemas on mõned olulised [kuuldamatu]
tagajärgi.
Üks on see, et see on väga lihtne paralleelseks Haskell programme.
Sest kui sul on, öelda, funktsioon, mis
peab toimima miljoni väärtusi, kui sa tead, et funktsioon on alati
anna sama väärtusega kui toida teatud value--
kui sa oled [kuuldamatu] f 1, f 2, siis f on 3 või whatnot-- f 1
ei kavatse kirjutada faili või midagi
mis muudab väärtust f2.
Sa võid lahku seda funktsiooni miljonit erinevaid masinaid või miljon
erinevad teemad või mida iganes, saad kõik vastused tagasi,
saad kõik tagasipöördumist väärtused tagasi, ja siis ongi kõik.
Nii väga lihtne paralleelseks asju.
>> Negatiivne külg on, et sisend ja väljund eriti
sobituvad tüüpi süsteem väga keeruline viisil.
Me ei hakka, et just nüüd, aga ma Julgustame teid mõningaid ressursse
Internetis kui tahad õppida seda.
>> STEPHEN KREWSON: Nii kirjuta classes-- ja selle
was-- klasside liike leiutati lahendada
probleem käitaja ülekoormus.
Nii et me tahtnud võrdõiguslikkuse eri liiki asjadest.
Muidugi võiks mõelda of-- võrdõiguslikkuse numbriline tüüpi
on väga lihtne mõelda, kuid Aga võrdõiguslikkuse nimekirjad?
Aga võrdõiguslikkus puu jala andmestruktuurid?
Ja see kõik on võimalik Haskell sest tüübi klassi.
>> Nii et kui oled määranud teatud andmete liik-- ja siin on need muusikalised noodid.
Me lõpuks ometi mõned arvuti muusikat.
Nii et meil on C, C teravad, ja nii edasi ja nii edasi.
Nad kuuluvad kamp Erinevat tüüpi klasse.
EQ-- nad kuuluvad EQ tüübi klassi.
See tähendab, et nad toetavad võrdõiguslikkuse operatsioone.
Nii saab hinnata, kas üks jada muusikaline primitiivid
on sama erinev.
>> Nad kuuluvad ordinal klassi.
See tähendab, et seal on tellimise neid.
D tuleb pärast C. C teravad tuleb pärast C samuti.
Nad kuuluvad klassi näidata, mis tähendab, et nad saavad
trükitakse konsooli või terminal.
Nad kuuluvad klassi küsitletud, mis
tähendab, et kuigi need tegelased,
nad on aluseks numbrilise esindatuse alguseks 0
ja läheb välja läbi aga paljud asjad on siin, 20 või nii,
või 30 või 40, võib-olla.
>> CONNOR HARRIS: Ja kui meil on andmetüüp
et derives-- selle märksõna "deriving--" teatud tüüpi klass,
see tähendab, et koostaja püüab ehitada midagi automaatselt.
Ehk tahad määratleda kvaliteedi erinevalt.
Sa tahad, et määratleda C teravad nagu võrdne D lame, näiteks.
Selle ehitus siin, ma ei usu, C teravad
ja D korter on võrdsed, sest koostaja automaatselt
öelda iga erinevat võimalik väärtus erineb iga teine.
>> Seega on võimalik, et alistada Vaikimisi rakendused
Sellist tüüpi klassidesse.
Jällegi, vaadata viide, kui sa tahad õppida sellest.
STEPHEN KREWSON: Ja siin, tegelikult see tulen
kasulik, kui me koodi hiljem.
Me näeme mõnede Siseliidete ettevõtjad järjestikuse koosseisu,
Paralleelselt koosseisu, ja nii edasi, need plussid ja võrdse märke
ümbritsetud kooloniga.
See tähendab, et me saame mängida neid erinevaid muusikaliste primitiivide üksteise järel.
See on järjestikune koosseisu.
>> Või saame mängida neid paralleelsed samaaegselt.
Nii et ma ei ole muusikalist väärtust, ja siis see võrdub ja kooloniga,
Siseliidete paralleelselt koosseisu operaator, ja mängida neid mingi akord.
Ja me ei kavatse kasutada see, kui me ühendame
Meie trumliosaga meie vähe Frere Jacques laul
mängida need kaks järjestused muusikaline väärtused samal ajal.
>> Currying on-- Curry Viimane nimetus Haskell Curry, kes
Haskell pilt on nime saanud.
Ja see võimaldab meil kena elegants, kui me oleme
kirjalikult kõik need erinevad funktsioone või filtreid, et me oleme
saab olema kaardistamine üle meie nimekirju.
Funktsioon kahe arguments-- f kohal x ja y--
võib olla esindatud f x rakendatud y.
Nii et see on funktsioon üks argument, mis tagastab
teise funktsiooni üks argument.
Nii see tähendab, et saame kaardistatakse funktsioon f x üle nimekirja y.
CONNOR HARRIS: Tahad Nii näiteks seda?
STEPHEN KREWSON: Jah.
Mul on näiteks siin on mõned asjad, mida me ei kirjuta.
Nii imiteerida 2-- hästi, imiteerida võtab
üks väärtus, mis on mitu korda korrata midagi,
ja siis ta võtab value-- Tavaliselt nimekirja või midagi.
Nii et siin me oleme kaardistamine imiteerida 2 teisele nimekirja.
>> Nii et kui me map imiteerida 2, kui me imiteerida 2 kohaldatakse
esimesele element käesoleva list-- ja need nimekirjad muusikaline phrases--
hakkab tootma kaks "sa sleeping--" nii te magate, te magate.
Nüüd on meil kaks.
Aga imiteerida võtab kaks argumente, kuid kuna me oleme
currying ja siis kaardistamine, saame esindada imiteerida 2
nagu oleks tagastatud funktsioonina üks argument-- lihtsalt imitatsiooniga kaks korda.
Ja siis me kohaldamisel, et iga element selle väljendite loetelu.
>> Ja concat on Haskell operatsiooni lamedamad nimekirja.
Kuna imiteerida 2 tahet koostada nimekirja nimekirjad.
Ja see on see vahe vorm siin.
Ja nii siis saame CONCAT või lamedamaks, et kaks korda.
CONNOR HARRIS: lihtsam näide currying,
Kui soovite like-- kujutada f on lihtsalt korrutamine funktsioon, mis võtab kaks
argumente ja naaseb oma toodet.
Nii et kui teil on f 4 5, see on 20.
Aga sa ei mõtle seda also-- teil on funktsiooni f 4
mis võtab argumendiks ja naaseb neli korda seda argument-- lihtsalt
osaline rakendus, mis lihtsalt üks argument 4.
Ja kui te toita f 4 5, mis annab sulle 20.
Ja see on lihtsam näide currying.
See on tavaliselt üks õpik ones.
>> STEPHEN KREWSON: Lambda väljendid või anonüümseid funktsioone
on teise Haskell tunnuseks.
Nii et kui me peame klopsima vähe funktsiooni elu imiteerida,
aga öelda, et see ei ole standard raamatukogu
saame kasutada süntaks sarnaseid järgmine.
Ja me imelihtne üle selle.
Üks asi, mida sa näed, palju on drum masin me helistamisel
et midagi, mida nimetatakse filtreerida, mis näeb ette,
on kaardistada funktsioon Üle nimekirja, kuid see on
kaardistada Boole'i ​​funktsiooni.
>> Nii et meil on siin üks näide on anonüümselt
määratletud Boole'i ​​funktsiooni, mis võtab kõigest paar väärtusi.
See ei ole rangelt võttes anonüümne funktsioon.
Aga see on seaduses määratletakse et süntaks lühiduse,
ja see lihtsalt võtab x moodul n--
CONNOR HARRIS: Jah.
Nii f on funktsioon kaks argumenti n ja p
mis tagastab funktsioon, mis on iseenesest funktsioon üks argument, nimelt x.
STEPHEN KREWSON: Ma mainitud Siseliidete ettevõtjad.
Mis on Siseliidete ettevõtjad?
Noh, Siseliidete ettevõtjad on tavalisel viisil me esindame toimingud,
öelda, in mathematics-- 2 pluss 2 asemel operaatori pluss
ja siis kaks argumenti 2 ja 2.
CONNOR HARRIS: Seda nimetatakse reverse Poola märke, mis on
termin ma kahtlen keegi teist teab.
>> STEPHEN KREWSON: Right.
Tagurpidi Poola või eesliite märke.
Aga Haskell otsustanud kasuta Siseliidete ettevõtjad.
Nii et need on vaid mõned Kohandatud need, mis
kasutamiseks määratletakse Euterpea DSCL Haskell.
Nii et see oli järjestikuse koosseisu.
See oli paralleelselt koosseisu, ja see oli kärpimisel paralleelselt koosseisu.
Ja me vajame, et meie drum masin,
sest me kasutame viimase operaator, et vähe korteež seal
mängida trummi masin mööda meie Frere Jacques laulu.
Ja meie drum masin saab olema lõpmatu.
See lihtsalt mängib igavesti.
Aga Frere Jacques laulu ei ole.
See ei ole nii pikk.
See on ainult mõned baarid.
Nii et me peame lõpetama drum masin Niipea kui lühem muusikaline väärtus on
lõpetamiseks.
Ja et infixed operaator on super abivalmis sellega.
>> Ja Siseliidete märke nagu see on selline kena,
sest et teil on funktsioon nagu tsitaat, mis annab täisarvu jagamine
x miski else-- kahju, et peaks olema a ja b.
Sa võid kirjutada seda quote b.
Nii et kui sa put-- element on Teise näite korral.
x element mõnes nimekirjas, kui paned see Backticks, saab seda kasutada.
Kuigi see ei ole sümbol nagu pluss või miinus või korda,
saate nimi funktsiooni niimoodi Backticks
kui infiksoperaator, mis on päris lahe.
CONNOR HARRIS: Ka see on kõik lihtsalt süntaktiliste suhkrut, tõesti.
See ei mõjuta tuum keeles.
>> STEPHEN KREWSON: Nii näeme siia viimase lause meie Frere Jacques laulu,
Mängisin mõned vähe akorde või kolmandikku kasutades paralleelselt koosseisu
operaator.
See on üks viis öelda mõned mida oleme lihtsalt öeldes.
Nii saab kaardistada funktsioonid Ühe tüli nimekirjad.
CONNOR HARRIS: Jälle viited jaoks Haskell-- sissejuhatav õpikud
on see kõik see.
>> STEPHEN KREWSON: Nii et siin on päris võti rida samm sequence
heidame pilgu abil nimekirja arusaamist.
Ja me näeme siin, et element fikseeritud operaator tagasi hinnapakkumisi.
Nii et kui x on element nimekirja X, siis me kutsume üles perc funktsioone.
Nii perc on lihtsalt löökpillid funktsiooni.
See võtab mõned väärtus p, mis on osa piirneb k~oigi
Erinevate löökpillide helide et me nägime eelmise slaidi,
ja siis see annab, et kestus veerand märkuse.
Else see annab talle qnr-valguga ja qnr-valguga on lihtsalt veerandnootidega puhata.
>> Nii et see on rajada midagi ilusat.
Meil on elementide loetelu ja jagame loop üle mõned nimekirja ühest
max väärtus meie sammu sequence.
Ja kui me oleme kindlal i et nimekiri ühe max väärtus,
kui see i kuulub see komplekt on loodud seda funktsiooni,
noh, siis lülitage see arvesse löökpillid märkuse.
Muidu lihtsalt mängida puhata, mis See tähendab, et me lihtsalt vaikida.
Ja me näeme siin, et Selles nimekirjas arusaamise süntaks,
x on asustatud käesoleva nimekirja ehitatud ühe
globaalsele suurus sekvenaatorisse.
CONNOR HARRIS: Jah.
Põhiline süntaks nimekirja arusaamadele on
sulg, väärtus, mis hõlmab mõned muutujad, baar,
võimalikult muutujate väärtused ise, suletud sulg.
Ja kui sa oled teinud seatud ehitaja märke aastal mingit matemaatika klassi,
sa oleks võinud seada 2n sellised et n on sisse või n on z.
Sarnased asi-- selle märke on mõeldud sugestiivne
Selle matemaatilist.
STEPHEN KREWSON: Ja saate kohaldavad mitut öeldisi
ja mitu filtrit nimekirja arusaamine, mis on üsna kena.
Algebraic types-- me ei jõlkuma kaua siin.
Seal ei ole hea idee in Haskell või hea, selge arusaam
kuidas võtta, ütleme, vaikimisi parameetrit funktsioonile või midagi.
Python, see on üsna lihtne.
Sa võid öelda võrdub kohta tunnistamise funktsioon,
vaikeväärtuses Juhul ükski tarnitakse.
>> Haskell, siis võiks olla kasuta võibolla äkki kirjutad,
mis võtab kas midagi või väärtuse tüüp lihtsalt.
Nii me kasutavad seda ära trumli masin et saaksime anda vabatahtlik maht
parameetrid igale trumliosa.
Nii et see annab meile viis, mille EQ või mahu konkreetse kanali.
>> CONNOR HARRIS: In teiste Haskell näiteid,
Võite näha võibolla kasutada funktsioonid ei pruugi ühtida.
See on ühine.
>> STEPHEN KREWSON: Ja te võite anda mingi veateate kui default.
Ja see on eriti mugav, kui sa teed I / O Haskell.
See võib olla trikke.
CONNOR HARRIS: Or jaoks sarnane näiteks arvavad, et
funktsiooni, mis hõlmab jagunemine parameetri, mis võiksid olla 0.
Ja see funktsioon võiks tagasi võibolla mis iganes.
Nii et kui pole jagunemise 0, siis taastub ainult iganes.
Ja kui on jagunemist 0, siis taastub midagi
kui viis signalisatsiooni viga.
Kuna üks tagajärg Haskell on väga ranged kirjutades
on see, et seal ei ole real-- Erandiks on ebamugav, põhimõtteliselt
veatöötluse on ebamugav.
Ja see on üks väga levinum viis seda teha.
>> STEPHEN KREWSON: Nüüd saame teise Raske asi
umbes Haskell, mis on muster sobitamise ja funktsiooni mõisted.
Ma näitasin teile viimase slaidile deklaratsiooni sammjuhtimise
funktsioon, mis võttis äkki väärtus, siis int, siis nimekiri ints,
Seejärel tagastab jada muusika väärtusi on kommenteeritud
nii pigi ja maht.
>> Nii et need kolm argumenti võib olla mustrit sobitada järgmisel viisil.
Ja me alati tahame olla kindlad, et teha aluspõhimõtted või väljumise korral esimest.
Ja need allkriipsud lihtsalt tõlgendada
et igasugune väärtus, mis on seal.
Nii et kui me kõne samm jada mõned väärtus, mõnda muud väärtust,
ja siis tühja nimekirja, mida me tahame tagasi on vaid vaikus, puhata 0.
>> Ja selle asemel, et on tühja nimekirja või 0,
see on ülejäänud 0, sest me oleme tegeleb muusika tüübile,
ja tühja nimekirja muusika tüüp on lihtsalt mujal ei ajaks.
Pole muusika.
Ja siis me näeme, kui me samm jadaks v helitugevuse argument,
p ettevaatusabinõu instrument argument, ja siis nimekirja x on.
>> Siis me teeme mõned asjad.
Eelkõige me rakendame Selles nimekirjas mõistmine,
ja me täita mõned toiminguid ehk väärtus
muuta see arvväärtus et seda võib siis loendati ja ko
valida instrument.
Ka see on veidi natuke tahtlikult inconcise
lihtsalt näidata kõiki imelikke asju saate teha Haskell kui
heita pilk see oma aja.
>> Hästi.
Nii et me lõpuks saada seda, mida me ette teha,
mis on teha mõned arvuti muusikat.
Nii et me läheme püüdma teha Frere Jacques laulu.
Seega on olemas mitu laused Frere Jacques?
Neli.
Hea.
Ja mis on tore, et nad kõik korduvad
sama koguse korda, mis on kaks.
>> Nii et meil on neli laused Iga korratakse kaks korda.
Ja eriti, nad on ümmargune.
Ja seal on palju, palju võimalusi, kuidas rakendada
ümmargune, et oleks lõbus teha.
Ma olen teinud seda päris lihtne viis siin,
mis on lihtsalt konstrueerida-- rida Funktsioon nimekirja muusikat väärtused
ja muudab see järjestikuse koosseisu kohaldades, et järjestikune koosseisu
operaator.
>> Ja siis ma viivitada eri paigus muutes need algavad puhata.
Nii et ma alustada ülejäänud kaks meedet, ja siis ülejäänud neli meetmeid,
ja siis ülejäänud kuus meetmed, ja siis edasi
töötab, nagu me kõik teame, et see laul.
Me näeme kahte annotatsioone või muudatused muusika väärtuste
mis sisalduvad selles järjestikuseks paigutus muusika elemente.
Meil on kohevaks.
See on funktsioon, märkmete muusika konkreetse ruumala.
See on hea näide on MIDI signaali jooksmine
0-127, seitse bitti teavet, mis võib toimuda.
>> Ja then-- nägime seda väga lühidalt, kuid üldiselt MIDI
loetelu erinevaid vahendeid.
Ja seal ei ole palju neist.
Kui kasutate digitaalset audio tööjaama, nagu Ableton Live või Pro Tools,
seal on uskumatult laiemat süntesaatorite ja VST instrumendid.
Aga MIDI standard ainult on vähe, või mitukümmend.
Ja mõned neist on naljakas.
Ma arvasin, et oleks tore, kui me mängisime instrumendi MIDI instrumendi
helikopter, ja seejärel Järgmine võimalus läbi ringi,
tegime pad süntesaatorit, ja seejärel see kulunud plii ruutlaine süntesaatorit,
ja siis väljendada löga, mis on natuke segane minu halb MIDI
süntesaator, kuid nad OK.
>> Ja siis me näeme seda let ja süntaks on Haskell,
ja siis me oleme mänginud kõik need osad kokku
kusjuures samaaegselt koosseisu operaator.
Ja me võiks ilmselt näidata osa sellest.
Siin on kood.
Ja näete C, siis oleksin palju köhatamist ja seadistus
Tabeli kood, enne kui võiks teha sarnast muusikat.
Või mõni muu programmeerimine keel, siis tahaks ilmselt
on suhelda mingisugune raamatukogu või API ja seada kõik üles,
ja siis sa pead puhastada.
Aga siin Haskell on, ma arvan, kui sa saad aru saama sellest, uskumatult
loetav ja väga väljendusrikas.
Seega on rakendamise of Frere Jacques.
Hästi.
Nüüd tahame lisada löökpillid, ja see on natuke segasem.
Võtame pilk libiseb.
Nii suur idee on teha kamp nimekirju või osad.
Esitatud roll-masinates, seal olid tavaliselt umbes võibolla kaheksa
10 rütmi ja löökpillid osad.
Ja siis kasutada kamp tehnikaid.
Ja me rääkisime these-- kasutades voldid, filtrid, lambda funktsioone,
kaardistati üle nimekirju luua väärtusi Mõnes vahemikus 1 kuni r, r on 16,
või 32 samme sekvenaatorisse.
>> Ja siis, kui seal on väärtus, mida nimekirjas kui meil hakkab läbi sequence,
voolab läbi üle ja üle, see sõltub, et märkus,
ja et proovi aktiveerub.
Siin on kõik erinevad imelik viise Tulin koos, et luua märkmeid.
Proovi ise pool summast.
Seda saad tunduda lahe.
Aeg lubab, läheme läbi selle.
Aga just nüüd, ma arvan peaksime demo mis meil on.
Loodame seda läheb OK.
>> Nii et see on GHCI.
Ja me laadida faili Mul on kutsutud song.lhs,
mis on fail ma näitasin teile.
OK, suur.
Nagu Connor ütles varem, et koostatud, siis tippige kontrollida,
nii et ma ei hinga palju lihtsam.
Ta ei kavatse õhkima mind.
>> Ma ei taha, et sulle midagi kasulikku.
Näete, et moodul koormatud nn 50.
Saate sirvida, et moodul.
Ja see on nii kena umbes doing-- äkki mida
sa teed Haskell ei ole nimetatakse tarkvara arendamiseks,
kuid mida saate teha palju lõbusaid asju ise.
Ja töökorraldus on tõesti kena, kui Võrreldes paljude teiste keelte
sest näete tõesti loetaval viisil, mis toimub.
Nii näeme, et meil on kõik need laused, mis
on nimekirjad muusika noodid ja siis me ehitada neid millekski suuremaks
mis on muusika laul.
See on muusikaline seade.
Ja siis me saame mängida kõik funktsiooniga nimetatakse mängida muusikat.
Te näete, et siin.
Kumb on lihtsalt mängida.
>> Ma peaks say-- ma ei räägi Selle dollari märk, et on kõikjal.
Dollar märk on teine ​​infiksoperaator.
Aga see on madalaim tähtsam mis tahes ettevõtja, mis tegelikult
tähendab, et kõike vasakul dollari märk
ja paremal dollari märk, me ei kavatse saada hinnatud enne seda.
Nii et see on omamoodi nagu teise lisamise viis sulgudes.
>> CONNOR HARRIS: See on põhimõtteliselt Liitfunktsioon.
Ja see tagab, et te ei have-- kui sul on funktsioonid mõlemal pool või Siseliidete
ettevõtjad mõlemal pool, nad ei seostada kogu seda ja teile
ootamatuid tulemusi.
>> STEPHEN KREWSON: Nii me can-- kasutades, et me saame helistada.
Esiteks, me mängida ilma trummid.
See on helikopter, MIDI helikopter.
>> [Muusika mängib]
Seal on ruutlaine.
Hääl löga.
Ja te võite tõesti minna loodusesse seda.
Ma valisin päris lihtne, sest ma teadsin, et ma ei peaks hammustada
rohkem kui ma võiks närida.
Lihtsalt see päris lihtne näitama peamised ideed.
Aga siis ma olin nagu oleme sain lisada mõned trummid sellele.
Just, sest see on natuke arusaamatu,
ja ma ei kasutanud nimi trumli osad,
Ma kaardistatud them--, sest nad on osa, mis loenduratribuudi klassi,
Ma kaardistatud neid ints.
Üks on nagu trumm.
Zero on samuti.
Seitse on suur müts.
Ja maha siin, kus funktsioonid natuke rohkem juhuslik,
Need on nagu conga trummid.
>> Nii et kui te arvate about-- võibolla lõbusalt rakendada drum masin
on kasutada väga korrektsel mustrid oma trumm.
Nii näiteks filtreerimiseks üle nimekirja kõike, mis annab tagasi
1, kui see on võetud moodul 04.
Nii et ma saan 1, 5, 9, 13, 17-- nii et see on esimene võita iga meede.
>> Ja siis see on sama asi nihkunud kahe etapi.
Nii et Pentsik.
Nii et see oleks midagi suurt mütsi.
Ja siis jälle siin, see on natuke juhuslik,
sest me teeme conga trummid.
Ja mul on mõned maracad maha ka siin.
>> Nii et ma võiks nimetada mängida trummi masin, kuid see kesta igavesti,
ja see võib hakata haarates üles kõik mälu minu süsteemi.
Nii et ma kutsun seda funktsiooni mängida muusikat, mis, nagu me näeme,
kasutada kärpimisel paralleelselt koosseisu mängida meie väike Frere Jacques laul
koos see imelik drum masin.
Võtame pilk.
Ja palun ärge parandada minu paigutus kõik trumliosa.
Pole minu eriala, kuid ma oli lõbus seda teha.
>> [Muusika mängib]
>> Nii et loomulikult, see on kõik natuke mitte nii lõbus
Kui me ei saa muuta selle et skoor nii äkki see
võib tõlgendada inimese poolt esineja.
Nii et ma ei hakka seda siin.
Olen juba loodud faile.
Te näete, et seal on dot LilyPond file-- ja selle
on minu Segue üle Connor-- ja dot MIDI faili,
ja dot PDF-faili, mis on see, mida LilyPond lõppkokkuvõttes luua.
>> Aga need on need skriptid, ja ma lihtsalt käivitada neid nende abiga võimalusi.
Kui sa need üles ja töötab Euterpea, saate luua MIDI faili.
Ja siis alates MIDI faili Selle MIDI 2LY programmi
saate luua Lily Tiigi faili, ja siis
võib tekitada PDF skoori.
Ja me peaks võtma pilk see.
Nii Connor ilmselt näidata kuidas märke sellest parem,
kuid see on Frere Jacques nagu loodud mulle Euterpea.
See on lihtsalt C. Ma oleks pidanud arvasin välja, mida häkkida see tegelikult.
Aga see on torujuhtme kuidas sa seda, et.
Räägime lähemalt LilyPond.
>> CONNOR HARRIS: OK Vaatame.
Kas sa mainida Loe Sa Haskell?
STEPHEN KREWSON: Oh yeah.
Tutvu Loe Sa Haskell.
See on ka ressursse.
See, kuidas ma hakkasin õppida, ja see on suurepärane.
Mitte loll õppimist.
>> CONNOR HARRIS: Nii et see on online.
Nii mees nimega [kuuldamatu] learnyouahaskell.com, tühikuid.
Grammatika on haige.
STEPHEN KREWSON: See on illustreeritud ka.
CONNOR HARRIS: Mis on LilyPond?
See on deklaratiivne programmeerimine keele muusika ladumiseks.
Nii declarative-- saate mõtle asju nagu HTML,
kus sa ei ole saying-- HTML ei saa öelda, kuidas veebibrauserid peaksid
muuta lehekülgi samm-sammult.
See on lihtsalt öeldes see on tekstiline kirjeldus
mida sa tahad lehel nägema.
>> Ja siis see on ka programmi mis koostab selle keele,
või siis lugeda tema kohta ja siis tegelikult teeb ladumise teile,
ja see sülitab välja need Imeline otsin PDF hinded.
Samuti saate PNG või mis iganes.
Hea võimalus mõelda Käesoleva on analoogiline
on see, et LaTeX on omamoodi nagu LillyPond, kuid just tavaline ladumiseks.
Nii et selle asemel of-- see ei ole WYSIWYG, mida näed
Millised on teile, nagu, ütleme Finale on, või Sibelius,
või Microsoft Word, kus saab sisestada reaalajas ja eelnõu asju reaalajas
ja vaata muutused koheselt.
>> See on tekst põhineb.
Sa pead koguma oma hinded kasutades eraldi programm
ja välja tulla PDF hiljem.
See on natuke vähem mugav kasutada, kui olete
üritan kirjutada otse arvesse skoor ja sa oled
üritab kirjutada arvutis.
Aga seal on palju eeliseid see.
Üks, ta ei vaata palju kenamaks, sest LillyPond saab tegelikult
võtta aega, et teha paigutusotsustel korralikult,
Erinevalt Sibelius või Finale, mis on teha kahjustusega algoritme nii
et nad saaksid kuvada asju reaalajas.
>> Miks on LilyPond-- arvutigraafika on raske.
Kui sa teed midagi muusika ja sa tahad kirjutada hinded,
sa ei taha kirjutada kõike ise
alustades kuidas juhtida staabid ja kuidas juhtida märkmikud.
See on väga raske. See on olnud varem teinud.
Sa oled hea.
>> Kui soovid kasutada Finale või Sibelius, failivormingute jaoks need asjad
on väga keeruline, ja sa ei saa tõesti neid kasutada programmiliselt.
Võite avada Sibelius koos Finale ja minge File, Ekspordi PDF ise,
Aga sa ei saa tõesti helistada, et skripti.
LillyPond, võite helistada omadest skripte.
Sa võid kergesti itereerima LillyPond LaTeX.
Ma ei ole nii palju aega, et minna arvesse nende tehnoloogiate kohe,
kuid nad on olemas.
Kui te soovite vaadata arvesse LillyPond raamat,
see on programm, mis on varustatud Sinu LillyPond jaotus,
ja see on ette iterating LillyPond fragmendid LaTeX
kui sa tahad midagi teha nagu suur muusikateaduse dokument
näidetega, näiteks.
Ja see on hea oskus elu kui sa teed midagi
muusika, mitte ainult CS50.
Olen kasutanud LillyPond kõik minu koosseisu projektid
sest ma olin põhimõtteliselt vanem keskkoolis.
>> Nii et siin on mõned lihtsad näited.
See on põhimõtteliselt esindaja ja raskusaste
et enamik inimesi ausad nad üritasid
kasutada LilyPond lihtsaid projekte.
See esimene on algusest kuni Urkukoraali Bachi.
See alumine on väljavõte ühest oma tööd,
ja see on lihtsalt seal näidata sa asjad [kuuldamatu]
pannes mitmes reas sama personal, kuidas lüürilise undersetting toimib.
Lyric aluskihid on asi, mis on väga lihtne kasutada LilyPond eest koorimuusika.
>> Ja nii siis seal on veel mõned keeruline näited siin.
Kõik need on tehtud LilyPond ja nad teostatav.
Esimene katkend on pärit [Kuuldamatu] poolt [kuuldamatu].
Ja see [kuuldamatu] alates tükk soolo bass
flööt poolt [kuuldamatu] kes on longtime-- kes
oli kauaaegne liige muusikaosakond siin, ma arvan.
Ma ei tea, kus ta on läinud ära.
Aga ta oli nõunik Harvard Heliloojate Liit pikka aega.
Wonderful mees.
Ja ta kirjutab muusikat, mis on väga keeruline märke, et LillyPond
saab siiski hakkama väga kenasti.
>> Nii lihtsalt teile tunnet, mida see asi võimete are-- nii
sisemust LillyPond on väga keerulised.
Ja te võite seda kasutada kaua, sealhulgas
mõned päris keeruline asju, ilma tõesti
võttes teada palju neid.
Aga põhiline mõte on selles, et madalaimale tasemele, aatomid LillyPonds
on märkmeid.
Lisad sisaldavad kontekstis nimetatakse hääli.
Nii hääle kontekstis põhimõtteliselt vastab
ühe rea polüfoonia.
Ja siis kontekstis saab sisalduvad hierarhiliselt
kõrgema taseme need, mis esindavad staabid kaotusseisu
või suurematesse rühmadesse, nagu klaver staabid või koori staabid,
ja siis lõpuks Kogu skoor kontekstis.
Ja te võite tegelikult hõlmab Mitme hinded raamatusse.
>> Ja igas kontekstis on arvu kinnitatud graveerijad.
Kui sa vaatad läbi sisu kontekstis
ja printida teatud sümbol või teatud liiki sümbolid nagu vaja.
Nii et iga hääl kontekstis seal on [kuuldamatu] märkmed
graveerija, et on põhimõtteliselt funktsiooni või objekt, mis kirjutab kõik märkus
pead paremale osad lehel.
Siis on lõhki graveerija, mis kirjutab välja clefts töötajate kohta.
Siis on metronoom märgi graveerija, et
kirjutab välja metronoom kaubamärkide skoor.
Ja kõik need sobivad päris hästi hierarhia.
Ja see on väga, väga, väga kohandatav, mis teil on vaja
Kui sa tahad saada asju.
>> Nii et kõik kontekstides on palju erinevaid atribuute
et saate muuta kõike alates vahed erinevate fontide
Valiku suurused asju.
Kui sa tahad teha isegi keerulisem asju,
seal on sisseehitatud skript keel.
Nad kasutavad süsteemi, mis on dialekt Lisp.
Need ilmselt ei sulle midagi.
Aga põhimõtteliselt, kava teise funktsionaalse
programmeerimiskeele suuremal või vähemal määral.
>> STEPHEN KREWSON: Tie-in.
>> CONNOR HARRIS: Jah.
See on hea tie-in, ma arvan.
Ja seda kasutatakse õpetamise keel, tegelikult, alla Mass Ave. MIT.
Ja see on väga mugav LillyPond erinevat tehnilistel põhjustel.
>> Ja kui sa tahad teha lihtsaid tweaks sõltub conditionals,
jaoks example-- seal teatud seisund skoor mis on täidetud,
teha muudatusi, et paigutus või whatnot-- siis
need võimalused on olemas.
Nad on keeruline.
Nii et siin on päris lihtne koodi proovi.
See on viis rida.
Põhimõtteliselt ma määratlemisel kaks staabid.
See on 3/4.
Esimene töötajad on lisatud tempo märk,
kuid mis on tegelikult toimub minna kogu tulemus,
sest tempo märgid olete jaole.
Metronoom märk graveerija on lisatud skoor kontekstis.
On erinevaid võtmeid, sest [kuuldamatu] graveerija
on lisatud staabid.
Tegelikult võite seda teha on.
Proovi kirjutasin on tegelikult C-duur,
aga see on lihtsalt näitama sul võib olla
erinevaid võtmeid erinevate staabid.
Ja põhiline süntaks on teile kirjutan tähele nimed E, F, G, mida iganes.
Kui sa tahad teha alteratsioonimärgid, sa liidet või ES.
See on Hollandi Muusikateaduse konventsioone.
>> Ja teha oktaavi hüpped, sa pead kasutama Nende märgistuste, koma või ülakoma.
Suhteline tähendab lihtsalt mida iganes sa pead tähele,
see automaatselt plaec on oktaav lähim eelmine.
Ja kui sa tahad hüpata üle fifth-- öelda viiendik või more--
siis sa pead kasutama [kuuldamatu].
Aga muidu, sa ei pea täpsustada oktaavi iga noot.
>> Ja suhteline C, peaminister ja C, sa lihtsalt määrata keset C
ja C alust, eriti esimestest nootidest.
Siis on need staabid, et korraldada Nende kahe hääle või proovid muusika,
ja teil on tulemus.
Ja see näeb välja selline.
>> Kui soovite võtta aeg kopeerida, et proovi LillyPond
kood eelmise lükake siia alla, ja sa
saab kirjutada seda LillyPond ise.
Ma tean, et meil midagi mis näeb välja palju nagu see.
Nii on teine ​​tehnoloogia nimetatakse Muusika XML säilitada
täiesti erinevad inimesed.
XML on tekstiline andmed structure-- ma ei peaks ütlema andmed structure-- öelda
metafoor kaart omamoodi.
Ja see on kavandatud korraldada hierarhiliste andmete väga hästi.
HTML, näiteks on teatud tüüpi XML.
Ja te võite öelda, XML, sest nad olid kõik noolsulgudes ja nurk
sulg kaldkriipsuga märgid et näidata andmeväljad.
>> Ma ei ole koodi näiteks Music XML.
Leiate selle ise.
Põhimõtteliselt põhjust võiksite kasutada XML nagu vaheetapp
on, esiteks, see on andmevahetuse vorming
jaoks põhimõtteliselt every-- ma ei peaks ütlema iga, kuid on palju erinevaid skoor
kirjanikud.
Nii et kui te kirjutate Muusika XML, mitte ainult ei LillyPond
lugeda abiga see auxilary programmi nimega Music XML Ly,
vaid ka Finale saab lugeda see, Sibelius seda lugeda.
Sõltuvalt sellest, kuidas teie sisemine objekti hierarhia töötab esindavad muusika,
see võib olla lihtsam kirjutada Muusika XML kui LillyPond
ja lihtsalt tugineda Muusika XML Ly teha muutmist.
>> Ma ei usu, et [kuuldamatu] on muusika XML.
STEPHEN KREWSON: see ei ole.
Keegi kallal, kuigi.
>> CONNOR HARRIS: OK.
Euterpea ei ole Muusika XML väljund funktsioon veel.
Kui soovite lõpliku projekti idee, võibolla võtke poisid
et Stephen teab, ja nad võiksid kasutada oma abi.
>> STEPHEN KREWSON: Ma armastan seda.
CONNOR HARRIS: Ka põhimõtteliselt, Iga programmeerimiskeelte
mis on väärt oma soolast Juba on XML raamatukogu
siis võite sisemiselt teisendada kõik oma muusikat mingi objekti
et XML raamatukogu saab kirjutada meelde, et oleks vaja vähem
muudatusi oma sisemist struktuuri mingil muusika objektid
tahan kirjutada kui kirjutamist otse LillyPond oleks.
Siis lihtsalt printida välja XML XML raamatukogudesse oma keel,
mis tagab, et see on süntaktiliselt õigesti ja kõike,
ja seejärel teisendada see LillyPond.
Nii tehnoloogia võiksite uurima, kui sa teed midagi
nagu nii.
>> [Kuuldamatu], teise auxilarry tehnoloogia.
See on põhimõtteliselt Tech Works või Tech Studio LillyPond.
Seega pakub abi süntaks, malle
erinevat ühise kombinatsioone vahendeid.
See võimaldab poolitatud ekraanil vaatamise nii sul võib olla oma koodi ühes aknas
ja PDF teises aknas ja kliki kohti PDF
hüpata vastavale täpid lähtekoodi.
See on kasulikum, kui sa oled tegelikult kirjalikult LillyPond failid ise
kui siis, kui sa oled teeniva neid programmiliselt.
Aga jälle, see on midagi kasulikku on.
>> Hea.
Teine resources-- ma lihtsalt läbida seda väga kiiresti.
LillyPond manuals-- LillyPond on väga hea dokumentatsiooni oma kodulehel.
Nad on ka juhendaja.
Nad on syntaksiviite.
Nad on sadu klippe erinevat väikestest asjadest
yo vajada teha, et näidata erinevaid võimalusi.
Kui soovid kasutada skriptimiskeel
või laialdasemalt kohandused, siis pole
siseosad viide, et URL.
Kui soovid kasutada Muusika XML, seal on et URL, musicxml.com/tutorial.
>> Ja siis, kui teil on vaja õppida kava sest sa tegelikult soovid kasutada
skriptimise rajatiste LillyPond, siis seal on [kuuldamatu] nimetatakse
Struktureeritud tõlgendamine arvutiprogrammide,
mis ei ole ainult teise Suurim CS õpik kunagi written--
Leia mind hiljem, kui tahad teada ma arvan, et suurim ühe on--
aga see on ka väga hea Sissejuhatus keele õige.
Te ei pea enam kui Esimese paari lõigud.
>> Ja see ongi kõik.
Kas küsimusi on?
>> Üliõpilane: Kust alla laadida Sinu loodud Frere Jacques
nii et ma ei pane see minu iPod?
>> STEPHEN KREWSON: Noh, võite kirjutada välja mõned wav faili Euterpea.
Ja sul on kood.
See aasta github.
Tee oma variatsioonid Frere Jacques poolt CS50 taru meelt.
See oleks tore.
CONNOR HARRIS: Keegi teine?
STEPHEN KREWSON: Vajame parem bass trumm, liiga.
See on tõesti halb.
>> Üliõpilane: Euterpea ei ole mitte ainult koosseisu poolel, kuid signal--
STEPHEN KREWSON: Jah.
Tegelikult tööd ma tegi Euterpea kui ma
võttis see-- seal on magistriõppes Yale, et
kasutab see-- oli heli sünteesi.
Nii et tõesti kena viis kasutades nooli
ja mõned märke nägime kohta komponeerimise koos signaali funktsioone.
Eelkõige bassi kõige neist on lihtsalt siinus.
Aga kui te hakkate neid in imelik programmilisi võimalusi,
saad hull heli mõju, nagu imelik kaskaadid.
Võite luua väga sõmer kõlab palju ümbersuunamine.
>> Ma tegin projekti granuleeritud süntees, mis on
kusagil vahepeal FM ja proovide võtmist.
Võtad väga väike, vähe proove ja seejärel
kombineerima need mingisugune modulaator ja luua rikkama heli.
Samuti tegi füüsilise modelleerimine, nii üritan mõelda füüsika
ja psühhoakustikast midagi sellist trompet, ja mõtlema, kuidas
heli on kopsakas off kella trompet
ja akustika ruumi ja modelleerimine
et põhiliste ostsillaatorid.
CONNOR HARRIS: Tänu nii palju.
Tänan, et tulid.
Ja ma olen alati valmis võtta küsimustele email--
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Jah. stephen.krewson@yale.edu.
Cool.