CONNOR HARRIS: Hei.
Olen Connor Harris.
Olen CS50 CA Harvardin.
STEPHEN KREWSON: Olen Stephen Krewson.
Olen TF CS50 Yalen.
CONNOR HARRIS: Ja me aiomme puhua joitakin tekniikoita, jotka saatat
haluat käyttää jos olet kiinnostunut tekemään opinnäytetyön tai oikeastaan
mitään musiikkia.
Aiomme keskittyvän ensin ohjelmointikieli nimeltään Haskell.
Se on toiminnallinen kieli, joten paradigma
on hyvin erilainen kuin C tai PHP tai muu välttämätöntä kielillä
että olet käyttänyt jo, ja erityisesti on kirjasto kirjoitettu Haskell
nimeltään Euterpea, joka voi auttaa ihmisiä kanssa säveltämisen toiminnallisesti,
pohjimmiltaan.
Ja Stephen käydään kautta hyvä esimerkki siitä.
>> Tämän jälkeen, minä esitellä sinulle jotain kutsutaan LillyPond, joka
on tekniikka ladonta musiikkia.
Se on tavallaan kuin LaTeX musiikin jos joku teistä
ovat käyttäneet LaTeX matematiikan luokkia tai muut P joukko luokkia tai mitä olet.
Ja niin minä annan sinulle, taas, muutamia yksinkertaisia ​​esimerkkejä, jotka
ja kohta sinua yleisen suuntaan joitakin parempia resursseja.
>> STEPHEN KREWSON: In Lisäksi ajattelimme, että
olisi siistiä perustaa hieman vihjeitä
kohti putki välillä Euterpea syntyvän MIDI-tiedostoja
vuonna LillyPond, joten tarjoamme joitakin ohjeita skriptejä
tehdä niin, että ovat varustettu LillyPond
vain pitää se avoimen lähdekoodin ja saada putki menossa.
CONNOR HARRIS: Jälleen, meidän pitäisi korostaa,
nämä kaksi tekniikkaa, sinua ei tarvitse käyttää niitä yhdessä.
He eivät suunniteltu toimimaan yhdessä, vaikka he tekevät erittäin hienosti.
>> STEPHEN KREWSON: Oikea.
Ja täysin ilmainen.
CONNOR HARRIS: Niin kuittaukset, vain lukea, että.
Stephen KREWSON: Asianmukaisesti huomattava.
Kiitos niille seudullamme.
Tämä minä viipyä vain hetken.
Asennus on vähän hankala.
Olemme lukea minua GitHub että voit vilkaista.
Vain sähköpostia minulle, jos sinulla on kysyttävää.
Mutta me suorittaa tämän olettaen että tämä toimii kaikille.
CONNOR HARRIS: Ja jos et voi saada LillyPond töihin, no big deal.
Ei ole eläviä kokoelma että on mukana, ainakin minun pää.
STEPHEN KREWSON: Haskell ja LillyPond olisi molemmilla on asentajat.
Euterpea on ladattavissa paketti, niin edelleen ja niin edelleen.
Joten puhumme tietokonemusiikkia.
Ja tämä on vain hyvin 50000-jalka näkymä.
Siellä on muutama eri puolia.
Ja tämä on karkea ja on menossa peittää joitakin yksityiskohtia.
Mutta voisimme ajatella jotain kuten algoritmeihin koostumus,
algoritmeja käyttäen, käyttämällä koodia, tuottaa
tietyntyyppinen of-- ehkä itse samanlainen peräkkäisistä nuoteista, tai ehkä muistiinpanoja
joissakin rajoitus.
Ja sitten ne voivat olla suoritettu tai tulkita
analoginen välineet tai jotain sellaista.
Mutta koostumus oli tehty algoritmisesti.
>> Mutta tietenkin, ehkä alue tietokone musiikkia tai digitaalisen musiikin
olemme enemmän tuttuja on digitaalinen äänen synteesi tai digitaalinen näytteenotto
ja digitaalisen tallennuksen.
Paljon digitaalisia välineitä tapahtuu digitaalinen näytteenotto.
Itse asiassa, me olla jollakin kuin muodossa äänen kirjasinkirjaston myöhemmin.
>> Mutta on myös jotain kutsutaan digitaalinen synteesi, joka tuli ulos
on 70-luvun lopulla ja osaksi 80-luvun kanssa Yamaha ja John Chowning Stanfordin
tekee FM synteesi tai FM-synteesi,
jossa piti harjoittaja signaali ja modulointisignaali
sekä äänen taajuuksia.
Mutta mitä me keskittyneet tänään on jotain kutsutaan MIDI,
ja tietenkin, algoritmeihin koostumus.
>> Emme aio tehdä välineitä, mutta olemme sen sijaan aikoo tehdä musiikkia,
ja sitten, että saa tulkitaan joidenkin välineitä,
ovat vaatimustenmukaisten että General MIDI standardi.
Niin mitä MIDI?
En aio saada liian syvälle sitä, mutta MIDI on tiedonsiirron protokolla.
Se on eräänlainen opas poikki eri yritysten ja toimialojen
järjestämisestä ääniä tai laikkuja.
Joten näemme, että siellä MIDI-standardi
kaikkien eri lyömäsoittimet ääniä ja MIDI suositukset
Kaikkien erityyppisten syntetisaattori tai eri instrumentin kaikki
ryhmien orkesteri, sano.
>> Olet todennäköisesti tuttu 0 kautta 127 MIDI viestejä.
MIDI signaali on tyypillisesti yksi bitti, joka osoittaa
onko se tietoja tai tilapaketti, ja sitten on
Seitsemän bittiä signaalin.
Ja nämä voivat valvoa kaiken tilavuus
toimelle tai painetta tietyn avaimen
jos olet suorittaa kanssa MIDI ohjain sekä tietenkin,
toteaa.
Ja tietenkin, MIDI on ollut erittäin hyödyllinen,
koska se on tapa lanka yhdessä tai ketjuttaa
nippu MIDI laitteita.
Minulla on seitsemän tai kahdeksan takaisin kotiini.
Se saa todella monimutkainen, mutta se on todella voimakas.
Ja se on todella vanha.
Se on peräisin 80-luvun alussa, ja se on todella mukava ja pieni.
CONNOR HARRIS: Joo.
Kaikki klassinen Nintendo videopelit olisi luultavasti
on MIDI-tiedostoja musiikkia, esimerkiksi.
>> STEPHEN KREWSON: Tässä esimerkki General MIDI,
osoittavat MIDI eräänlaisena Yleisen protokollaa.
Ja mielestäni voimme ajatella ominaisuuksien eroista
että pitäisi olla jotain nämä soitinääniä ja todellinen
toteutuminen näiden välineiden ääniä in ääni fontti tai tietyn MIDI
syntetisaattori olevan ero välillä ehkä typeface-- jossa sanotaan,
Yleensä tämä on suunnittelu tämä erityisesti tapa esittää
characters-- ja tietyn fontin että on tietty koko ja äänenväri,
ja siellä on toteutumista the--
>> CONNOR HARRIS: Ehkä parempi vertailu olisi
olla Unicode standardi says-- se antaa numeron jokainen merkki, ja todella
jokainen kieli maailmassa, tai valtava joukko skriptejä kielen
maailmassa, ja sitten ne ovat sulatettu jotain graafinen
eri fontti paketteja.
Ja tietenkin, voit ajatella MIDI kuin Unicode äänen.
Ja se on vain lista of-- iso virta tapahtumia ja välineiden ja vaikka mitä,
ja sinulla on oltava erillinen ohjelma, kuten kirjasintyyppi,
tehdä sen osaksi jotain, joka on kuultavissa.
>> STEPHEN KREWSON: Miksi Haskell?
Haskell on funktionaalinen ohjelmointi kieli, hyvin kehittynyt,
hyvin erilainen kuin C, hyvin erilainen kuin PHP.
Ja aiomme nähdä, että siellä Helppokäyttöinen yhdistetty funktio Haskell
että antaa meille mahdollisuuden tuulta kautta säveltäminen tai kirjoittamalla ylös, puhtaaksi,
jotain Frere Jacques, tämä yksinkertainen laulu että
on paljon osia siinä, että ovat itse samanlaisia ​​tai toistuva.
Joten tämä on joitakin motivaatio miksi
käytämme Haskell, jossa toiminnot ovat ensimmäisen luokan kansalaisia.
>> Ja halusin jatkaa tämä vähän.
Se on hieman helppo notate Frere Jacques Haskell.
Mutta mitä jos halusimme lisätä rummun osa sitä?
Mitä jos halusimme yrittää tehdä jotain Roland 808 tai 909 rumpu
koneessa, jossa on noin 16 eri vaiheet?
Yleensä nämä ovat mielletään 16. toteaa.
Ja voit ohjata maailmanlaajuisen tempo, ja voit valita
joukko eri lyömäsoittimet osat ja bassorumpu, taputus, eri ansat,
avoin ja suljettu korkea hatut Näiden lajitella kanavia,
ja sitten voit EQ tai säätää niiden äänenvoimakkuutta.
>> Ja näemme mukava tapa Haskell edustaa tämän vaiheen
sekvensseri kanssa kaikki eri hienoja asioita Haskell
voimme tehdä tuottavan luettelot ja suodatus yli luettelot,
kartoitus yli luettelot, kartoitus toiminnot yli luetteloista.
Ja nopea anteeksipyynnön.
Tämä on hyvin pintapuolinen ja liian nopea luonnos
joitakin näkökohtia Haskell ja Euterpea,
joka on domain-specific upotettu kieli kirjoitettu
Haskell musiikki tyyppejä.
Joten älä tutustu koodi verkossa.
Tuli jopa GHCI, joka on Glasgow'n Haskell Compiler tulkki.
Ja minä tehdä joitakin Tämän vuonna hieman
niin näet miten se tehdään.
>> Ja tämän avulla voit ladata sisään the-- syntaksi on kaksoispiste ja sitten
komento.
Voit ladata tiedostoja.
Voit käyttää Selaa niihin tiedostot nähdä kaikki toiminnot,
olemassa tietty moduuli.
Ja sitten näemme, tyypit ja tyyppi luokat ovat niin tärkeitä Haskell,
joten voit aina check-- erityisesti jos olet työskennellyt uuden DSCL
kuten tämä, mikä on musiikkia tyyppi?
Tiedän miten numeerinen tyypit työskentelevät Haskell,
mutta en tiedä paljon musiikista.
Mutta voit tutustua, miten he määriteltävä käyttäen t tai kirjoita command
ja sitten soittaa tietyn toiminto tai tieto-objektin.
CONNOR HARRIS: Joo.
Jos olet ajatellut C ja kalahtaa oli hardass tyyppejä,
sinulla ei ole aavistustakaan siitä, Haskell.
Hyvä asia Haskell on, että jos saat koodin koota
ja jos Haskell tyyppi tarkastuksia, se on luultavasti oikeassa,
koska tyyppinen järjestelmä on niin tiukka.
>> STEPHEN KREWSON: Joo.
Joten haluan vain mennä through-- ja uudelleen,
tämä ei tee sitä justice-- muutamia piirteet Haskell, että ainakin
sen creators-- ja se luotiin 1980-luvun lopulla, jonka joukko ihmisiä,
komitea noin 20 people-- ajatteli olivat tärkeitä.
Ja ensimmäinen asia, he luetellut paperi
kuvattu syntyhistoria Haskell ensimmäisten 20 vuotta tai niin
oli, että se oli laiska.
Mitä tämä tarkoittaa?
>> No, se tarkoittaa, kun meillä on jonkinlainen ilmaisun, meidän on arvioitava sitä.
Ja Haskell tekee tämän puhelun jonka tarve tavalla tai ei-tiukasti.
Eli jos meillä on joukko komponentit meidän ilmaisun,
yritämme viivyttää arviointi näistä alakomponentteja
kunnes absoluuttinen viime minute-- eli siihen asti, me todella tarvitsemme niitä.
>> Joten tämä means--, joka on todella siistiä, varsinkin
jos ajattelemme, abstraktio musiikillinen askelsekvensseri.
Se kytketään päälle, ja aloitat käynnissä vaiheen sequence--
jos koskaan työskennellyt rummun machine-- ja se vain menee ikuisesti.
Joten se olisi todella mukavaa, jos me voi jäljitellä että Haskell.
Ja voimme tehdä sen kanssa ääretön arvot, erityisesti ääretön luetteloihin.
Se on erittäin helppo kirjoittaa ääretön lista Haskell.
Voisit vain käyttää syntaksia alas täällä, jossa näet 1 kautta 3,
poistaa 3 1 piste piste, ja että on ääretön lista
kaikki luonnolliset luvut ulottuvat on niin pitkälle kuin voitte kuvitella.
>> Haluan esitellä käsite taittuu heti.
Ja vielä, tarkoitus Seminaarin ei ole
oppia taittuu Haskell tai korkeamman asteen toiminnot.
Mutta haluan esitellä sen antaa tarkan käsityksen siitä, miten outo
Haskell on ja kuinka voimakas se on.
Ja erityisesti, aiomme be-- kun teemme eri rummun osia,
aiomme olla manipuloimalla luettelot numeroita, taittamalla päällekkäin.
Ja tehdä niin, käymme käyttää karttoja ja taittuu.
>> On oikeus assosiatiivisia kertaiseksi, mikä on tämä oikeus
here-- 1 miinus määrä, 2 miinus määrä, 3 vähennettynä 0.
Ja syntaksi kertainen, annat kertaiseksi
perusarvo ja sitten operation-- tässä tapauksessa, lisäys tai vähennys.
Olen osoittanut molemmissa tapauksissa.
Ja sitten on akkuja, kertyy koko lista,
soveltamalla että operaattori plus tai miinus, ja sitten kertynyt se.
Joten tämä on the-- jos se oli nimeltään käännettävät r plus 0 alkaen 0,
me sitten tiivistää kaikki numeroita luetteloon.
Ja että luettelo 1-3.
CONNOR HARRIS: Joten laittaa se toiseen Näin kertainen r kestää kolme väitettä.
On toiminto itse ottaa kaksi argumenttia,
sitten on käynnistin arvo, ja siellä on lista arvoja.
Ja mitä teet on otat käynnistin arvo, ensimmäinen arvo,
laittaa ne toiminto.
Mitä saat ulos, ottaa, että rehulla
osaksi toimintaa toinen arvo, mitä saat ulos,
ottaa, että rehu että otetaan funktio kolmas arvo.
Ja sitten jos mennä alas tämä koko lista tällä tavalla,
aiot saada lopulta jotkut yksikkö arvo, joka on
samantyyppisiä, mitä olet aloittanut ulos ja samantyyppisiin
kuten asiat luettelossa, ja sitten se paluu tulos kertainen R.
STEPHEN KREWSON: Eli erityisesti, nämä ovat korkeamman asteen toiminnot,
koska he jotakin muuta toiminta yhtenä argumentteja.
>> CONNOR HARRIS: Joo.
Jos olet käyttänyt tiettyjä muita languages-- Tiedän R, [kuulumaton]
kieli on tämä, kutsutaan Vähennä.
Saatat olla samankaltaisia ​​tehtäviä muilla kielillä, soitti juuri
eri asiat.
>> STEPHEN KREWSON: Ja mikä on mukavaa noin kertainen R
tässä tapauksessa on, että kansi R voi työskennellä ääretön luetteloita.
Joten tässä pohjalle, tämä P5 on tuottaa toteaa, että
kytketään päälle askelsekvensseri varten jotkut rummun osa, viides rummun osa,
ja ehkä se conga rumpu tai jotain.
Ja tämä on tarkoituksella tylppä tapa kirjoittaa tämän,
mutta se on hauskaa, koska se osoittaa paljon
asioita noin Haskell ja Euterpea.
>> Joten kertainen R Tämän colon-- paksusuolen on vain toimija, joka työntää asiat
yhdessä list-- kehotti tyhjä luettelo, joka on vain tyhjä suluissa.
Ja Soitan että tässä ääretön luetteloon.
Tämä on itse asiassa kaksi luettelot lasketaan yhteen tänne.
Listan 1 pilkku 6 piste piste on 1, 6, 11, 16.
Joten Haskell-- vain muutama merkki, voit
voi tuottaa koko numerosarja
jotka ovat viisi numeroa toisistaan venyttely on äärettömyyteen.
Ja minä alkuun lisättävä kyseisen tämä lyhyempi pieni list--
3, 8, 21-- vain näyttää miten voit liität listoja.
>> Ja sitten olen taitettu itse.
Ja tämä päätyy vain on eräänlainen identiteetti toiminta, mutta se on ääretön.
Ja fold R voi tehdä sitä, koska se laiskasti arvioi, kuten edellä.
Jos meillä on 1 ja 2 ja 3, voimme vain bracket pois koko loput siitä.
Se ei toimi miinus tai plus, mutta se
toimii tämän paksusuolen identiteetti toiminta luettelossa.
>> Miten siis käytännössä käyttää, että jos me on äärettömän pitkä lista asioita?
No, Haskell tarjoaa paljon functions--
ja näyttää enemmän osaksi näitä oma time-- kuten ottaa
joka sanoo, OK, olemme aikaan tätä ääretön lista,
mutta me vain vie jonkin lukumäärä se Ja tässä case--
näemme tämän myöhemmin meidän rumpukone code--
GM on vain jonkinlainen maailmanlaajuinen muuttuja useita vaiheita
SEQUENCER.
Telan Koneet I osoitimme, se on tyypillisesti 16,
mutta olen toteuttanut sen 32.
Se ei ole oikeastaan ​​väliä.
>> Haskell on myös puhdasta, joten se on vahva staattinen tyypitys että Connor viittasi.
Joten toiminnot ovat matemaattisia sense--
he enemmän matemaattisia että he taattu
jotta ei pääse tai muuttaa minkäänlaista muuttuja tai suorittaa tulo tai lähtö.
Joten jos sinulla on toiminto, se on deterministinen.
Se palaa aina sama arvo osavaltiossa ohjelman
tai pysyy samana.
On, tietenkin, monadisen poikkeuksia tähän, mutta se ole meidän soveltamisalaan.
>> CONNOR HARRIS: Joo.
Mitä tämä tarkoittaa, vaikka on olemassa on muutamia tärkeitä [äänetön]
seuraukset.
Yksi on, että se on erittäin helppo yhdensuuntaistettua Haskell ohjelmia.
Koska jos sinulla on, sanoa, funktio, joka
tarvitsee toimivat miljoonan arvoista, jos tiedät, että toiminto aina
anna sama arvo, jos syötät tietyllä value--
jos olet [äänetön] f 1, f 2, niin f 3 tai whatnot-- f 1
ei aio kirjoittaa tiedostoon tai tehdä jotain
että muuttavat arvoa F2.
Voit vain jakaa tämä toiminto miljoonaa eri koneita tai miljoona
eri langalla tai mitä tahansa, saada kaikki vastaukset takaisin,
saada kaikki paluuarvot takaisin, ja sitten se on siinä.
Niin kovin helppo yhdensuuntaistettua asioita.
>> Huonona puolena on, että panos ja ulostulo erityisesti
sovi tyyppinen järjestelmä hyvin monimutkainen tavalla.
Emme aio mennä, että juuri nyt, mutta olen Kannustamme sinua katsomaan joitakin resursseja
verkossa, jos haluat oppia siitä.
>> STEPHEN KREWSON: Niin kirjoita classes-- ja tämä
was-- luokat tyyppien keksittiin ratkaista
ongelma operaattorin ylikuormitus.
Joten halusimme saada tasa erityyppisten asioita.
Tietenkin voisimme ajatella of-- välisen tasa-arvon numeerinen tyypit
on hyvin helppo ajatella, mutta Entä tasa-arvosta lista?
Entä tasa-arvosta puu jalka tietorakenteita?
Ja tämä on kaikki mahdollista Haskell koska tyypin luokkiin.
>> Joten jos määrittelee tiettyjä tietoja type-- ja täällä, nämä ovat musikaalisia kentillä.
Olemme vihdoin Joidenkin tietokoneen musiikkia.
Meillä on siis C, C terävä, ja niin edelleen ja niin edelleen.
Ne kuuluvat nippu erityyppisiä luokissa.
EQ-- ne kuuluvat EQ tyyppi luokan.
Tämä tarkoittaa, että ne tukevat tasa toimintaa.
Joten voit arvioida, onko yksi sekvenssi musikaali primitives
on sama kuin toista.
>> Ne kuuluvat järjestysluku luokan.
Se tarkoittaa, että on tilaus näihin.
D tulee sen jälkeen C. cis tulee sen jälkeen C samoin.
Ne kuuluvat luokkaan osoittavat, mikä tarkoittaa, että ne voivat
tulostetaan konsoliin tai terminaaliin.
Ne kuuluvat luokan haastateltu, joka
tarkoittaa sitä, että vaikka nämä ovat merkkejä,
heillä taustalla numeerinen edustus alkaen 0
ja menee pois läpi kuitenkin monet asiat ovat täällä, 20 tai niin,
tai 30 tai 40, ehkä.
>> CONNOR HARRIS: Ja kun meillä tietotyyppi
että derives-- kanssa avainsanan "Deriving--" tietyntyyppistä luokka,
se tarkoittaa, että kääntäjä yrittää rakentaa jotain automaattisesti.
Joten ehkä sinun kannattaa määritellä laatu eri tavalla.
Sinun kannattaa määritellä cis tasavertaisina D tasainen, esimerkiksi.
Tällä rakenteella täällä, en usko cis
ja D tasainen on sama, koska kääntäjä automaattisesti
say jokainen erilaisia ​​mahdollisia arvo eroaa kaikista muista.
>> Joten on mahdollista ohittaa oletuksena toteutukset
tämäntyyppisiä luokkiin.
Jälleen, katso viite jos haluat oppia siitä.
STEPHEN KREWSON: Ja täällä, itse asiassa, tämä will
olla avuksi, kun koodin myöhemmin.
Näemme joitakin infix toimijoiden peräkkäiseen koostumus,
rinnakkainen kokoonpano, ja niin edelleen, nämä plussia ja yhtäsuuruusmerkit
ympäröi kaksoispisteet.
Tämä tarkoittaa, että voimme pelata näitä eri musiikki primitiivit yksi toisensa jälkeen.
Se on juokseva koostumus.
>> Tai voimme pelata niitä yhdensuuntainen samaan aikaan.
Jotta voin olla musiikillinen arvo, ja sitten tämä vastaa ja kaksoispistettä,
Infix rinnakkain koostumus operaattori, ja toistaa niitä eräänlaisena sointu.
Ja aiomme käyttää tämä kun yhdistämme
meidän rummun osa meidän pikku Frere Jacques laulu
pelata nämä kaksi sekvenssit musiikillisen arvot samaan aikaan.
>> Currying is-- Curry on viimeksi nimi Haskell Curry, joka
Haskell kuva on nimetty.
Ja tämä antaa meille mukava eleganssi kun olemme
kirjallisesti kaikki nämä eri toimintoja tai suodattimet, jotka olemme
tulee kartoitus yli meidän luetteloita.
Funktio kaksi arguments-- f x ja y--
voidaan esittää f x soveltaa y.
Joten se on tehtävä yksi argumentti joka palauttaa
toinen funktio yksi argumentti.
Joten tämä tarkoittaa, että voimme kartta funktio f x yli lista y n.
CONNOR HARRIS: Haluatko antaa esimerkin tästä?
STEPHEN KREWSON: Joo.
Minulla on esimerkiksi oikeus täällä joitakin asioita me kirjoittaa.
Joten jäljitellä 2-- hyvin, jäljitellä vie
yksi arvo, joka on se, kuinka monta kertaa jäljitellä jotain,
ja sitten se vie value-- yleensä lista tai jotain.
Joten tässä, olemme kartoitus jäljitellä 2 yli toiseen listaan.
>> Joten jos me kartta jäljitellä 2, jos me jäljitellä 2 sovelletaan
ensimmäiseen osa tätä list-- ja nämä ovat luettelot musiikin phrases--
tuottaa kaksi "sinua sleeping--" joten sinä nukut, olet nukkumassa.
Joten nyt meillä on kaksi.
Mutta rinnakkaisia ​​kestää kaksi perustelut, mutta koska olemme
currying ja sitten kartoitus, Voimme edustaa jäljitellä 2
että ne on palautettu funktiona yksi argument-- vain jäljittelevän kahdesti.
Ja sitten me soveltamalla että kuhunkin osa tätä luetteloa lauseita.
>> Ja concat on Haskell operaation madaltuminen lista.
Koska rinnakkaisia ​​2 tahtoa tuottaa luettelo luetteloista.
Ja tämä on tämä välimuoto täällä.
Ja niin sitten voimme concat tai tasaamaan että kahdesti.
CONNOR HARRIS: yksinkertaisempi esimerkki Parkitus,
jos olisit like-- kuvitella f on vain kertomistoimintalohkoon, joka ottaa kaksi
argumentteja ja palauttaa niiden tuote.
Joten jos sinulla on f 4 5, se on 20.
Mutta voit ajatella tätä also-- sinulla funktio f 4
joka vie lausumat ja palauttaa neljä kertaa tämä argument-- vain
osittainen sovellus, joka vain yksi argumentti 4.
Ja jos rehu f 4 5, joka antaa sinulle 20.
Ja se on yksinkertaisempi esimerkki Parkitus.
Se on yleensä yksi oppikirja niistä.
>> STEPHEN KREWSON: Lambda ilmaisuja tai anonyymejä toimintoja
ovat toinen Haskell tunnusmerkki.
Joten jos tarvitsemme lietsoa pikku toiminto elämä rinnakkaisia,
mutta sanovat, että se ei ole standardin kirjasto,
voimme käyttää syntaksia samanlainen seuraavan.
Ja me tuulta tänä.
Yksi asia näet paljon vuonna rumpu kone olemme soittaessaan
niin sanotun suodatin, joka kuten ennen,
on kartoitus toiminto yli lista, mutta se on
kartoitus Boolen funktio.
>> Joten olemme täällä esimerkki of nimettömänä
määritellään Boolen toiminto vain ottaa pari arvoja.
Tämä ei ole varsinaisesti anonyymi toiminto.
Mutta se on määritellä kanssa että syntaksi lyhyys,
ja tämä vie vain X moduuli n-
CONNOR HARRIS: Joo.
Joten f on funktio kaksi argumenttia n ja p
joka palauttaa toiminnon, joka ei itse funktio yksi argumentti, nimittäin x.
STEPHEN KREWSON: I mainitussa infix toimijoille.
Mitä infix toimijoita?
No, infix operaattorit ovat normaalisti me edustamme toimintaa,
sanoa, vuonna mathematics-- 2 plus 2 sijasta operaattorin plus
ja sitten kaksi perustelua 2 ja 2.
CONNOR HARRIS: Sitä kutsutaan Käänteinen puolalainen notaatio, joka on
termi Epäilen tahansa te tiedätte.
>> STEPHEN KREWSON: Oikea.
Käänteinen puolalainen tai etuliite notaatio.
Mutta Haskell päätti Käytä infix toimijoille.
Joten nämä ovat joitakin Custom ne, jotka
määritellään Euterpea DSCL Haskell.
Joten tämä oli juokseva koostumus.
Tämä tapahtui rinnakkain koostumus, ja tämä oli truncating rinnakkain koostumus.
Ja me tarvitsemme, että meidän rumpukone,
koska käytämme viimeinen operaattori että pikku monikko siellä
pelata rumpukone pitkin meidän Frere Jacques lauluun.
Ja meidän rumpukone on olemaan ääretön.
Se vain toistaa ikuisesti.
Mutta Frere Jacques laulu ei ole.
Se ei ole pitkä.
Se on vain muutamia baareja.
Joten meidän täytyy pysähtyä rumpukone kuin Heti lyhyempi musiikillinen arvo tulee
lopettamiseksi.
Ja että infixed operaattori on erittäin hyödyllinen kanssa.
>> Ja infix merkintätapa kuten tämä on tavallaan mukavaa,
koska että sinulla on toiminto kuten lainaus, joka antaa kokonaislukujaolla
x jotain else-- pahoillani, että pitäisi olla ja b.
Voisit kirjoittaa sen lainaus b.
Joten jos put-- elementti on Toinen esimerkki tästä.
X elementti joissakin luetteloon, jos laitat se Backticks, voit käyttää sitä.
Vaikka se ei ole symboli kuten plus tai miinus tai kertaa,
voit käyttää nimeä toiminto kuten että Backticks
kuten infix operaattori, joka on aika siistiä.
CONNOR HARRIS: Tämäkin on kaikki vain syntaktinen sokeri, todella.
Se ei vaikuta ydin kielen.
>> STEPHEN KREWSON: Näemme täällä viimeinen lause meidän Frere Jacques laulu,
Olen pelannut joitakin pikku sointuja tai kolmasosaa käytetään rinnakkain koostumus
operaattori.
Tämä on toinen tapa sanoa joidenkin mitä olemme juuri sanoneet.
Joten voit Karttatoiminnot yhden argumentin yli luetteloista.
CONNOR HARRIS: Jälleen viitteet varten Haskell-- johdanto oppikirjat
on kaikki tämän siinä.
>> STEPHEN KREWSON: Joten tässä on aika keskeinen linja askelsekvensseri
me katsomaan käyttäen lista ymmärtäminen.
Ja näemme täällä on, että elementti kiinteän operaattori takaisin lainausmerkkejä.
Joten jos x on osa luettelon X: n, niin soitamme ylös perc toimintoja.
Joten perc on vain lyömäsoittimet toiminto.
Kestää jonkin arvon p, joka on osa rajoitettu joukko kaikki
eri lyömäsoittimet äänet että näimme Edellinen dia,
ja sitten se antaa että kesto neljäsosanuotti.
Ja muuten se antaa sille QNR, ja QNR on vain neljäsosa Tauko.
>> Joten tämä on rakentaa jotain mukavaa.
Meillä on luettelo tekijöistä, ja käymme silmukka joistakin lista yhdestä
Max arvoa meidän askelsekvensseri.
Ja kun olemme tietyllä I että luettelo yhdestä max,
jos se i on jäsen tässä joka on luotu tämän toiminnon,
hyvin, niin me käännä se osaksi lyömäsoittimet huomautus.
Muuten, me vain pelata levätä, joka sanoen, me vain vaieta.
Ja voimme nähdä täällä, että tämä lista ymmärtäminen syntaksi,
X on asuttu tässä lista rakennettu yksi
maailmanlaajuiseen koko sekvensserin.
CONNOR HARRIS: Joo.
Perus syntaksi lista käsityksiä on
kiinnike, arvo liittyy jotkut muuttujia, baari,
mahdolliset arvot muuttujien itse, suljettu kiinnike.
Ja jos olet tehnyt asettanut rakentaja merkintätapa kaikesta sellaisesta matematiikan luokan,
ehkä asettanut 2n kuten että n on tai n on z.
Samanlaisia ​​thing-- tämä merkintätapa on tarkoitus olla viittaavia
Kyseisen matemaattinen.
STEPHEN KREWSON: Ja voit sovelletaan useita predikaatteja
ja useita suodattimia luettelossa ymmärtäminen, joka on varsin mukava.
Algebrallinen types-- me ei viipyä pitkään täällä.
Ei ole hyvä käsitettä Haskell tai hyvä, selvä käsite
miten ottaa vaikkapa oletus parametrin toiminnon tai jotain.
Python, tämä on melko helppoa.
Voit vain sanoa vastaa siitä ilmoitus toiminto,
oletusarvo tapauksessa ei mitään toimitetaan.
>> Haskell, voisit ehkä Käytä ehkä ehkä tyyppi,
joka vie joko mitään tai arvo tyyppiä vain.
Joten me hyödyntää tätä rumpukone jotta voimme antaa valinnainen tilavuus
parametrit jokaisen rummun osista.
Niin että antaa meille tapa, jolla EQ tai tilavuus tietyllä kanavalla.
>> CONNOR HARRIS: In muut Haskell esimerkkejä,
Saatat nähdä ehkä käyttää toiminnot saattavat epäonnistua.
Tämä on yhteinen.
>> STEPHEN KREWSON: Ja voit toimittaa jonkinlainen virheilmoituksen oletuksena.
Ja se on erityisen kätevä, kun teet I / O-Haskell.
Tämä voi olla temppuja.
CONNOR HARRIS: Tai samankaltaisia ​​esimerkiksi ajatella
funktion, johon jako parametrin, joka saattaa olla 0.
Ja että toiminta voisi palata ehkä mitä tahansa.
Joten jos ei ole jako 0, se palaa vain mitä.
Ja jos on jakautumisella 0, se palauttaa mitään
keinona signalointi virheen.
Koska yksi seuraus Haskell n erittäin tiukkoja kirjoittamalla
on, että ei ole real-- Poikkeuksia ovat hankalia, pohjimmiltaan,
virheiden käsittelyä on hankala.
Ja tämä on yksi hyvin yhteinen tapa tehdä se.
>> STEPHEN KREWSON: Joten nyt saamme toiseen aistiharhoja juttu
noin Haskell, joka on malli matching ja toiminto määritelmät.
Näytin teille viimeisen dian ilmoitus vaiheen sekvenssin
toiminto, joka kesti ehkä arvo, sitten int, niin luettelo ints,
sitten palauttaa sekvenssin musiikki arvot siellä selityksin
sekä äänenkorkeutta ja voimakkuutta.
>> Joten ne kolme seikkaa voivat olla kuvio Hyväksytty seuraavalla tavalla.
Ja haluamme aina olla varma do perustapauksen tai poistu tapauksessa ensin.
Ja nämä alaviivoja voi vain tulkita
tarkoittavan mitään arvoa, joka on siellä.
Joten jos saamme puhelun vaiheeseen järjestyksessä joidenkin arvo jokin muu arvo,
ja sitten tyhjän listan, mitä haluamme palata on vain hiljaisuus, levätä 0.
>> Ja sen sijaan, että on tyhjän listan tai 0,
se levätä 0, koska olemme tekemisissä musiikin tyyppi,
ja tyhjän listan musiikin tyyppi on vain muualla ole kestoa.
Se ei ole musiikki.
Ja sitten näemme, jos saamme askel sekvenssi V tilavuus argumentti,
p varotoimi väline väitteen, ja sitten luettelon X: n.
>> Sitten tehdä joitakin juttuja.
Erityisesti sovellamme Tässä lista ymmärtäminen,
ja teemme joitakin operaatioita ehkä arvosta
tehdä siitä numeerinen arvo niin, että se voitaisiin sitten haastateltu ja käytetyt
Valitse instrumentti.
Tämäkin on pieni bittinen tarkoituksella inconcise
vain näyttää kaikki outoja asioita voit tehdä Haskell kun
katsomaan sitä omaa aikaa.
>> Selvä.
Joten olemme vihdoin päästä mitä ryhdyimme tekemään,
joka on tehdä joitakin tietokoneen musiikkia.
Joten aiomme yrittää tehdä Frere Jacques laulun.
Joten on kuinka monta lauseita Frere Jacques?
Neljä.
Suuri.
Ja mitä mukavaa on, että he kaikki toistuvat
sama määrä kertoja, joka on kaksi.
>> Joten meillä on neljä lauseita kukin toistettiin kaksi kertaa.
Ja erityisesti, he ovat pyöreä.
Ja on monia, monia tapoja toteuttaa
kierros, joka voisi olla hauskaa tehdä.
Olen tehnyt sen melko yksinkertainen tapa täällä,
joka on vain construct-- linja Funktio ottaa luettelon musiikin arvojen
ja muuntaa sen juokseva koostumus levittämällä että peräkkäinen koostumus
operaattori.
>> Ja sitten viivyttää eri osat tekemällä niistä alkavat levätä.
Joten aloitan levätä kahdesta toimenpiteestä, ja sitten loput neljä toimenpidettä,
ja sitten loput kuusi toimenpiteitä, ja sitten kierros
toimii, kuten me kaikki tiedämme tämän laulun.
Näemme kaksi merkintöjä tai muutoksia musiikin arvojen
jotka sisältyvät tähän peräkkäisessä järjestely musiikin elementtejä.
Meillä lisätä äänenvoimakkuutta.
Tämä on toiminto käsinkirjoittaa musiikkia tiettyä tilavuutta.
Tämä on hyvä esimerkki MIDI signaalin käynnissä
0-127, seitsemän bittiä tietoja, joita voidaan suorittaa.
>> Ja then-- näimme sen hyvin lyhyesti, mutta yleinen MIDI
luettelo kaikista eri välineitä.
Ja siellä ei ole paljon niitä.
Jos käytät digitaalista ääntä työasema, kuten Ableton Liven tai Pro Tools,
siellä uskomattoman laajemmin syntetisaattorit ja VST välineitä.
Mutta MIDI standardi vain on muutamia, tai useita kymmeniä.
Ja jotkut niistä ovat hauskoja.
Ajattelin että olisi hauskaa, jos soitimme väline MIDI instrumentti
helikopteri, ja sitten seuraava läpi pyöreä,
teimme pad syntikka, ja sitten tämä korni johtaa kanttia syntetisaattori,
ja sitten ääni tihkua, jotka ovat hieman epäselvä minun huono MIDI
syntetisaattori, mutta ne OK.
>> Ja sitten me näemme tämän let ja syntaksi Haskell,
ja sitten me pelaamme kaikki nämä osat yhteen
kanssa rinnakkain koostumuksen operaattori.
Ja voisimme ehkä näyttää joitakin tämän.
Tässä koodi.
Ja voit nähdä C, ei halua olla paljon kurkun selvitys ja asetus
pöytä koodi ennen voisi tehdä musiikkia näin.
Tai muu ohjelmointi kieli, haluat luultavasti
on vuorovaikutuksessa jonkinlainen kirjasto tai API ja asettaa kaiken ylös,
ja sitten sinun täytyy siivota.
Mutta täällä Haskell on mielestäni kerran saat roikkua sitä, uskomattoman
luettavissa ja hyvin ilmeikäs.
Joten siellä on täytäntöönpano on Frere Jacques.
Selvä.
Nyt haluamme lisätä lyömäsoittimet, ja tämä on vähän Messier.
Joten katsomaan dioja.
Joten iso idea on tehdä nippu luetteloita tai osia.
Näillä rulla-koneissa, siellä olivat tyypillisesti noin ehkä kahdeksan
10 rytmi tai lyömäsoittimet osia.
Ja sitten käyttää joukko tekniikoita.
Ja olemme puhuneet these-- käyttäen taittuu, suodattimet, lambda toiminnot,
kartoitettu yli luettelot tuottaa arvoja joissakin alueella 1 R, R on 16,
tai 32 vaiheet sekvensseri.
>> Ja sitten jos on arvo kyseisessä luettelossa kuten olemme kulkee sekvensseri,
juoksee läpi yli ja yli, se syttyy että huomata,
ja että näyte saa laukaista.
Tässä ovat kaikki eri outo tavoin Päädyin tuottaa muistiinpanoja.
Kokeile sitä itse semi summa.
Se tulee kuulostaa viileä.
Jos aika sallii, me läpi tämän.
Mutta juuri nyt, kai meidän pitäisi demo, mitä meillä on.
Toivotaan tämä menee OK.
>> Joten tämä on GHCI.
Ja me ladata tiedoston Olen kutsunut song.lhs,
joka on tiedosto minä vain näytin teille.
OK, suuri.
Kuten Connor sanoi aiemmin, se koottu, se kirjoittamasi tarkastetaan,
jotta voin hengittää paljon helpompaa.
Se ei tule räjäyttää minua.
>> En halua näyttää sinulle jotain hyödyllistä.
Voit nähdä, että moduuli ladataan kutsutaan 50.
Voit selata, että moduuli.
Ja tämä on niin mukava noin doing-- ehkä mitä
teet Haskell ei ole nimeltään ohjelmistojen kehittäminen,
mutta voit tehdä paljon hauskaa itse.
Ja työnkulku on todella mukavaa kuin verrattuna paljon muita kieliä,
koska näet todella luettavalla tavalla, mitä tapahtuu.
Näemme siis, että meillä on kaikki näitä lauseita, jotka
ovat luettelot musiikin kentillä, ja sitten me rakentaa näitä ylös jotain suurempaa,
joka on musiikin laulu.
Se on musikaali yksikkö.
Ja sitten voimme pelata tämä kaikki jossa toiminto nimeltään toistaa musiikkia.
Voit nähdä, että täällä.
Joka on vain leikkiä.
>> Haluan say-- etten puhu tämä dollarin merkki, joka on kaikkialla.
Dollarin merkki on toinen infix operaattori.
Mutta se on pienin ensisijainen tahansa toimijan, joka tehokkaasti
tarkoittaa sitä, että kaiken vasemmalla dollarin merkki
ja oikealle dollarin merkki, aiomme saada arvioida ennen sitä.
Joten se on tavallaan kuin toinen tapa lisätä sulkuja.
>> CONNOR HARRIS: Se on pohjimmiltaan yhdistetty funktio.
Ja se varmistaa, että et have-- jos sinulla on toimintoja molemmin puolin tai infix
operaattorit kummallakin puolella, ne eivät liittää sen poikki ja antaa sinulle
odottamattomia tuloksia.
>> STEPHEN KREWSON: Joten meidän can-- käyttäen, että voimme kutsua.
Ensinnäkin, me pelata ilman rumpuja.
Se on helikopteri, MIDI helikopteri.
>> [Musiikkia]
On kanttia.
Ääni vuotaa.
Ja voit todella mennä villi tämän.
Otin melko yksinkertainen, koska tiesin ei pitäisi purra
enemmän kuin voisin pureskella.
Vain pitää se melko yksinkertainen näyttää keskeiset ajatukset.
Mutta sitten olin kuin, olemme sai lisätä joitakin rumpuja tähän.
Vain koska tämä on vähän käsittämätön,
ja en käyttänyt nimi rummun osia,
Olen kartoitettu them-- koska he osa että Lueteltujen luokka,
Minä kartoitettu ne ints.
Yksi on kuin bassorumpu.
Zero on samoin.
Seitsemän on korkea hattu.
Ja alas täällä, missä toiminnot saada hieman enemmän satunnaisia,
nämä ovat kuin conga rummut.
>> Joten jos luulet about-- ehkä hauska tapa toteuttaa rumpukone
on käyttää hyvin järjestelmällisesti kuvioita teidän bassorumpu.
Niin esimerkiksi suodatukseen yli lista kaikella, antaa takaisin
1, kun se otetaan moduuli 04.
Niin saan 1, 5, 9, 13, 17-- joten tämä on ensimmäisellä vastatuuliosuudella jokaisen toimenpiteen.
>> Ja sitten tämä on sama asia siirretään kahdesta vaiheesta.
Joten se omituinen.
Joten tämä olisi jotain korkea hattu.
Ja sitten taas, tänne, se on vähän satunnainen,
koska me teemme conga rummut.
Ja minulla on joitakin maracas täällä, myös.
>> Niin voisin kutsua pelata rumpukone, mutta se ikuisesti,
ja se voi aloittaa tarttumalla ylös kaikki muisti minun järjestelmään.
Joten Soitan tätä toimintoa toistaa musiikkia, joka kuten näemme,
Käytä lyhennetty rinnakkain koostumus pelata pikku Frere Jacques laulu
yhdessä tämän outo rumpukone.
Joten katsomaan.
Ja älä parantaa minun järjestely kaikkien rummun osat.
Ei minun erikoisuus, mutta minä oli hauskaa tehdä sitä.
>> [Musiikkia]
>> Niin tietenkin, tämä on kaikki vähän ei niin hauskaa
jos emme voi muuntaa sen jotta pisteet niin ehkä se
voidaan tulkita jota ihmisen esiintyjä.
Joten en suorita sitä täällä.
Olen jo syntyy tiedostoja.
Voit nähdä, että on olemassa dot LilyPond file-- ja tämä
on minun segue yli Connor-- ja piste MIDI-tiedoston,
ja piste PDF-tiedosto, joka on mitä LilyPond tuottaa ajan mittaan.
>> Mutta nämä ovat ne skriptejä, ja minä vain ajaa heitä apua vaihtoehtoja.
Jos saat nämä vauhtiin Euterpea, voit luoda MIDI-tiedoston.
Ja sitten MIDI-tiedoston Tämän MIDI 2LY ohjelma,
voit luoda Lily Lampi tiedosto, ja sitten
voi tuottaa PDF pisteet.
Ja meidän pitäisi katsoa tätä.
Joten Connor luultavasti näyttää miten voit merkitä tämän paremmin,
mutta tämä on Frere Jacques kuin tuottamat minua Euterpea.
Se on vain C. olisin tajunnut mitä hakata se on todella.
Mutta se on valmisteilla miten teet sen kanssa.
Katsotaanpa puhua enemmän LilyPond.
>> CONNOR HARRIS: OK Katsotaanpa.
Oletko mainita Lue Olet Haskell?
STEPHEN KREWSON: Ai niin.
Tutustu Opi Voit Haskell.
Se on resursseja.
Niin aloin oppiminen, ja se on hienoa.
Ei tyhmä oppiminen.
>> CONNOR HARRIS: Joten se on verkossa.
Joten kaveri nimeltä [äänetön] learnyouahaskell.com, ei välilyöntejä.
Kielioppi on sairas.
STEPHEN KREWSON: Se on kuvitettu, liian.
CONNOR HARRIS: Mikä on LilyPond?
Se on declarative ohjelma kieli musiikin ladonta.
Joten declarative-- voit ajatella asioita, kuten HTML,
jossa et ole saying-- HTML ei sanoa, kuinka selaimet pitäisi
tehdä sivuja askel askeleelta.
Se on vain sano tätä on sanallisesti
mitä haluat sivun näyttää.
>> Ja sitten se on myös ohjelma joka kokoaa tällä kielellä,
tai se lukea sen ja sitten itse tekee ladonta sinulle,
ja se sylkee nämä ihana näköinen PDF tulokset.
Voit myös saada PNG-muodossa tai mitä tahansa.
Hyvä tapa ajatella Tämän on vastaavasti
että LaTeX on tavallaan kuin LillyPond, mutta vain tavallisia ladonta.
Joten sen sijaan of-- se ei ole WYSIWYG, mitä näet
On mitä saat, kuten vaikkapa Finaali on, tai Sibelius,
tai Microsoft Word, jossa voit kirjoittaa reaaliaikainen ja luonnos asioita reaaliajassa
ja nähdä muutokset välittömästi.
>> Se on teksti perustuu.
Sinun täytyy kääntää saanut käyttää erillistä ohjelmaa
ja ulos PDF myöhemmin.
Tämä on hieman vähemmän kätevä käyttää, jos olet
yrittävät kirjoittaa suoraan osaksi pisteet ja olet
yrittää säveltää tietokoneen.
Mutta on paljon etuja sitä.
Yksi, se näyttää paljon mukavampaa, koska LillyPond voi todella
ottaa aikaa tehdä layout päätökset oikein,
toisin kuin Sibelius tai Finale, joka on tehdä vaarantunut algoritmeja niin
että ne voidaan näyttää asiat reaaliajassa.
>> Joten miksi on LilyPond-- tietokonegrafiikka on kova.
Jos teet mitään musiikkia ja haluat kirjoittaa pois tulokset,
et halua kirjoittaa pois kaiken itse
alkaen miten tehdä esikunnat ja miten tehdä lehtiöt.
Se on hyvin vaikeaa. Se on ollut tehnyt ennen.
Olet hieno.
>> Jos haluat käyttää Finale tai Sibelius, tiedostomuotoja niitä asioita
ovat hyvin monimutkaisia, ja et voi todella käyttää niitä ohjelmallisesti.
Voit avata Sibeliuksen kanssa Finale ja mene Tiedosto, Vie PDF itse,
mutta et voi oikeastaan soittaa että käsikirjoituksen.
LillyPond, voit soittaa näistä skriptejä.
Voit helposti kerrata LillyPond LaTeX.
En ole niin paljon aikaa mennä näitä tekniikoita juuri nyt,
mutta ne ovat olemassa.
Jos haluat etsiä osaksi LillyPond kirja,
se on ohjelma, joka tulee sinun LillyPond jakelu,
ja se on varten iteroimalla LillyPond fragmentit osaksi LaTeX
jos haluat tehdä jotain kuin iso musiikkitiede asiakirja
esimerkkejä, esimerkiksi.
Ja se on hyvä taito elämä jos teet mitään
musiikkia, ei vain CS50.
Olen käyttänyt LillyPond kaikille minun koostumus hankkeiden
koska olin periaatteessa vanhempi lukiossa.
>> Joten tässä on muutamia yksinkertaisia ​​esimerkkejä.
Tämä on pohjimmiltaan tyypillinen ja vaikeustaso
että useimmat ihmiset puhuen he yrittävät
käyttää LilyPond yksinkertaisiin hankkeisiin.
Tämä ensimmäinen on alku jotta urkukoraali Bachin.
Tämä pohja yksi on ote yhdeltä minun omia teoksia
ja se on vain siellä näyttää sinulle asioita, kuten [mahdoton kuulla]
laskemisesta useita rivejä samassa henkilökunta, kuinka lyyrinen undersetting toimii.
Lyyrinen aluskatteet ovat asia, joka on hyvin helppokäyttöinen LilyPond varten kuoromusiikin.
>> Ja niin sitten on joitakin enemmän monimutkainen esimerkkejä tästä.
Kaikki nämä ovat tehneet LilyPond ja he toteutettavissa.
Tämä ensimmäinen ote on peräisin [Äänetön] mukaan [kuultavissa].
Ja tämä [äänetön] alkaen pala yksin basso
huilu [kuulumaton], joka on longtime-- joka
oli pitkäaikainen jäsen musiikki osasto täällä, luulen.
En ole varma missä hän on mennyt pois.
Mutta hän oli neuvonantaja Harvardin Säveltäjät ry pitkään.
Ihana mies.
Ja hän kirjoittaa musiikkia, joka on hyvin monimutkainen merkintä että LillyPond
voi kuitenkin käsitellä erittäin hienosti.
>> Joten vain antaa sinulle tunteen mitä tämä asia kyvyistä are-- niin
sisäosat LillyPond ovat erittäin monimutkaisia.
Ja voit käyttää sitä pitkään, mukaan lukien
joidenkin melko monimutkainen asioita, ilman todella
ottaa tietää paljon niistä.
Mutta perusajatus on, että alin taso, atomit LillyPonds
ovat liitetiedoissa.
Liitetiedot sisältävät yhteydessä kutsutaan ääniä.
Joten ääni yhteydessä pohjimmiltaan vastaa
että riviäkään polyfonia.
Ja sitten yhteydessä voi olla sisälsi hierarkkisesti
korkeamman tason niitä, jotka edustavat esikunnat on pisteet
tai suuremmiksi kokonaisuuksiksi kuten piano esikunnat tai kuoro esikunnat,
ja sitten lopulta koko pisteet yhteyksissä.
Ja voit itse käsittää Useiden tulokset kirjan.
>> Ja kaikissa tilanteissa on lukumäärä liitteenä kaivertajat.
Jos katsot läpi sisällön yhteydessä
ja tulostaa tietty symboli tai tietyn luokan symbolien tarpeen.
Joten jokainen ääni yhteydessä, siellä [äänetön] muistiinpanoja
kaivertaja että on pohjimmiltaan toiminto tai objekti, joka kirjoittaa pois kaikki setelin
päitä oikeaa osaa sivun.
Sitten on halkeama kaivertajan, joka kirjoittaa ulos Halkioiden henkilökuntaan.
Sitten on metronomi Mark kaivertaja että
kirjoittaa pois metronomi tavaramerkit pisteet.
Ja kaikki nämä sopivat melko pitkälle hierarkia.
Ja se on hyvin, hyvin, hyvin muokattavissa, johon tarvitset
jos haluat saada tuollaista.
>> Joten kaikki yhteyksissä on paljon erilaisia ​​ominaisuuksia
että voit muokata kaiken alkaen väli eri fontin
valinta koot asioita.
Jos haluat tehdä vielä enemmän monimutkaisia ​​asioita,
siellä upotettu skriptikieli.
He käyttävät järjestelmää, joka on murre LISP.
Nämä luultavasti eivät merkitse mitään sinulle.
Mutta pohjimmiltaan, järjestelmä toinen toiminnallinen
ohjelmointikieli, enemmän tai vähemmän.
>> STEPHEN KREWSON: oheistuote.
>> CONNOR HARRIS: Joo.
Se on hyvä tie-in, oletan.
Ja sitä käytetään opetuskielenä, todella, alas Mass Ave. MIT.
Ja se on erittäin kätevä LillyPond eri teknisistä syistä.
>> Joten jos haluat tehdä yksinkertaisia hienosäädön riippuvainen conditionals,
sillä example-- olemassa tiettyjä kunto pisteet, joka on täytetty,
tehdä muutoksia asettelun tai whatnot-- sitten
nämä palvelut ovat siellä.
He monimutkainen.
Joten tässä on melko yksinkertainen mallikoodi.
Se on viisi riviä.
Periaatteessa olen määritellään kaksi esikunnat.
Se on 3/4.
Ensimmäinen henkilökunta on liitteenä tempo merkki,
mutta se on todella menossa mennä koko pisteet,
koska tempo tavaramerkit ovat pelin tasoissa.
Metronomi merkki kaivertaja kiinnitetään pisteet yhteydessä.
On olemassa erilaisia ​​avaimia, koska [äänetön] kaivertaja
kiinnitetään esikunnat.
Voit itse tehdä on.
Näyte Kirjoitin on todella C-duuri,
mutta se on vain osoittaa voit olla
eri avaimet eri esikunnat.
Ja Syntaksi on kirjoitat Huomaa nimet E, F, G, riippumatta.
Jos haluat tehdä etumerkkiä, te pääte on tai ES.
Tämä on kohteesta Dutch musiikkitieteellistä yleissopimukset.
>> Ja tehdä oktaavin hyppyjä, sinun on käytettävä Näiden asteikkomerkkejä, pilkku tai heittomerkki.
Suhteellinen tarkoittaa vain mitä sinulla on huomata,
se automaattisesti plaec vuonna oktaavi lähinnä edelliseen.
Ja jos haluat hypätä yli fifth-- sanoa viidesosa tai more--
sitten sinun täytyy käyttää [kuultavissa].
Mutta muuten, sinun ei tarvitse määrittää oktaavin jokaisen nuotin.
>> Ja suhteellisen C, prime, ja C, sinun vain määrittää keski-C
ja pohja C, varsinkin ensimmäiset tahdit.
Sitten on nämä esikunnat, jotka järjestävät nämä kaksi ääntä tai näytteitä musiikin,
ja olet pisteet.
Ja että näyttää tältä.
>> Jos haluat ottaa aikaa kopioida että näyte LillyPond
koodi edellisestä liukua alas täällä, ja te
voi kirjoittaa sitä LillyPond itse.
Tiedän, että meillä on jotain joka näyttää paljon kuin tämä.
Joten on toinen tekniikka nimeltään Music XML ylläpidetään
mukaan täysin eri ihmiset.
XML on sanallista tietoa structure-- I ei pitäisi sanoa tietoja structure-- sanoa
metafora kartta tavallaan.
Ja se on suunniteltu pitämään hierarkkinen tietojen hyvin.
HTML, esimerkiksi, on eräänlainen XML.
Ja voit kertoa XML koska ne oli kaikki kulmasulkeiden ja kulma
kiinnike slash merkit että Näytä tietokentät.
>> Minulla ei ole koodia Esimerkiksi Music XML.
Voit löytää sen itse.
Pohjimmiltaan, syy kannattaa käyttää XML välivaiheessa
on ensinnäkin, se on Interchange Format
sillä pohjimmiltaan every-- minun ei pitäisi sanoa jokainen, mutta paljon erilaisia ​​pisteet
kirjailijoita.
Joten jos kirjoitat Musiikki XML, ei vain voi LillyPond
lukea sen avulla tämän auxilary ohjelma nimeltä Music XML LY,
mutta myös Finale voi lukea se, Sibelius voi lukea sitä.
Riippuen siitä, miten sisäinen objekti hierarkia toimii edustavat musiikin,
se saattaa olla helpompi kirjoittaa pois Music XML kuin LillyPond
ja vain luottaa Musiikki XML ja LY tehdä muuntaminen.
>> En usko, että [äänetön] on Music XML.
STEPHEN KREWSON: ei.
Joku on työn alla, vaikka.
>> CONNOR HARRIS: OK.
Euterpea ei ole Musiikki XML toiminto vielä.
Jos haluat opinnäytetyö idea, ehkä saada yhteyttä kaverit
että Stephen tietää, ja he voisivat käyttää apuasi.
>> STEPHEN KREWSON: Haluaisin että.
CONNOR HARRIS: Lisäksi, periaatteessa, joka ohjelmointikielet
se on arvoinen suola jo on XML kirjasto,
joten voit sisäisesti muuntaa kaikki musiikin johonkin esine
että XML kirjasto voi kirjoittaa että vaatisi vähemmän
muutokset sisäistä rakennetta jostain musiikki esineet sinua
halua kirjoittaa kuin kirjoittamisesta suoraan LillyPond olisi.
Sitten vain tulostaa sen XML kanssa XML kirjastot kieli,
joka takaa, että se on syntaktisesti oikein ja kaikki,
ja sitten muuntaa sen LillyPond.
Joten tekniikka kannattaa tutkia jos teet jotain
kuten tämä.
>> [Äänetön], toinen auxilarry tekniikkaa.
Tämä on pohjimmiltaan Tech Works tai Tech Studio LillyPond.
Joten se tarjoaa apua syntaksi, malleja
eri yhteisten yhdistelmiä välineitä.
Se mahdollistaa jaetun ruudun katselu niin voit saada koodin yhdessä ikkunassa
ja PDF toiseen ikkunaan ja klikkaa paikkoja PDF
hypätä asiaa paikkoja lähdekoodia.
Tämä on enemmän hyötyä, jos olet todella kirjallisesti LillyPond tiedostot itse
kuin jos olet tuottavan ne ohjelmallisesti.
Mutta jälleen kerran, se on jotain hyödyllistä saada.
>> Suuri.
Toinen resources-- Otan vain käydä läpi tätä hyvin nopeasti.
LillyPond manuals-- LillyPond on erinomainen asiakirjat verkkosivuillaan.
Heillä on opetusohjelma.
Heillä on syntaksin viite.
Heillä on satoja katkelmia eri pieniä asioita
yo ehkä tehdä osoitettava eri ominaisuuksia.
Jos haluat käyttää skriptikieli
tai tehdä laajempi mukautukset, sitten on
sisäosat viite tuohon URL.
Jos haluat käyttää musiikki XML, siellä että URL, musicxml.com/tutorial.
>> Ja sitten jos sinun täytyy oppia järjestelmään koska te todella haluavat käyttää
Scripting tilat LillyPond, sitten on [äänetön] nimeltään
Strukturoidut Tulkinta Tietokoneohjelmien,
joka ei ole vain toinen suurin CS oppikirja koskaan written--
löytää minulle jälkeenpäin, jos haluat tietää mielestäni suurin yksi is--
mutta se on myös erittäin hyvä johdatus kielen oikea.
Et tarvitse enempää kuin muutaman ensimmäisen kohdat.
>> Ja se on siinä.
Kysymyksiä?
>> Opiskelija: Mistä voin ladata sinun syntyy Frere Jacques
joten voin laittaa sen iPodiin?
>> STEPHEN KREWSON: No, voit kirjoittaa ulos joitakin wav tiedosto Euterpea.
Ja sinulla on koodi.
Se GitHub.
Tee oma muunnelmia Frere Jacques mukaan CS50 pesää mieli.
Se olisi hienoa.
CONNOR HARRIS: Kukaan muu?
STEPHEN KREWSON: Tarvitsemme parempi bassorumpu, liian.
Se on todella huono.
>> Opiskelija: Euterpea ei ole pelkästään koostumus puolella, mutta signal--
STEPHEN KREWSON: Kyllä.
Itse työ I teki Euterpea kun
otti this-- siellä jatko kurssi Yalen että
käyttää it-- oli äänen synteesi.
Joten siellä on todella mukava tapa käyttää nuolet
ja jotkut merkintä näimme säveltäminen yhdessä signaalin toimintoja.
Erityisesti basso useimpien niistä on vain yksinkertainen siniaalto.
Mutta jos alat kirjoittaa ne in outo ohjelmallinen tavoin,
voit saada hullu ääni vaikutuksia, kuten outo porrastetusti.
Voit luoda erittäin hiekkainen kuulostaa paljon modulaatio.
>> Tein hankkeen rakeinen synteesi, joka on
jossain välissä FM ja näytteenottoa.
Otat hyvin pieni, vähän näytteitä, ja sitten
yhdistää ne jonkinlainen modulaattori ja rakentaa rikkaampi ääni.
Teimme myös fyysinen mallinnus, joten yrittää ajatella fysiikan
ja psykoakustiikkaa on jotain trumpetti, ja miettiä, miten
ääni pomppii pois kelloa trumpetti
ja akustiikkaa huone ja mallinnus
että perus oskillaattorit.
CONNOR HARRIS: Kiitos paljon.
Kiitos, että tulit.
Ja olen aina valmis ottaa kysymyksiin Email
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Joo. stephen.krewson@yale.edu.
Viileä.