CONNOR HARRIS: Hi.
Mwen se Connor Harris.
Mwen se yon CA CS50 nan Harvard.
STEPHEN KREWSON: Mwen Stephen Krewson.
Mwen se yon TF pou CS50 nan Yale.
CONNOR HARRIS: E nou pwal pale sou kèk teknoloji ki ou ta ka
vle sèvi ak si w ap enterese nan fè yon pwojè final oswa vrèman
anyen ak mizik.
Nou ap ale nan dwe konsantre sou premye yon lang programmation rele Haskell.
Li se yon fonksyonèl lang, se konsa paradigm nan
se yon bagay ki diferan de C oswa PHP oswa lòt lang enperatif
ke ou te itilize deja, epi sitou sou yon bibliyotèk ekri nan Haskell
rele Euterpea, sa ki ka ede moun ak ekri mizik fonksyonèl,
fondamantalman.
Apre sa, Stephen ap mache ou atravè yon gwo egzanp sou sa.
>> Apre sa, mwen pral entwodui ou nan yon bagay yo rele LillyPond, ki
se yon teknoloji pou mizik Tipografi.
Li nan sòt de tankou kapòt an latèks pou mizik si nenpòt nan ou
te itilize kapòt an latèks pou klas matematik oswa lòt klas P seri oswa sa ki gen ou.
Se konsa, mwen pral ban nou an, ankò, kèk egzanp senp nan ki
ak pwen ou nan jeneral la direksyon nan kèk pi bon resous yo.
>> STEPHEN KREWSON: Nan de sa, nou te panse li
ta dwe fre yo mete kanpe yon ti kras nan sijesyon
nan direksyon yon tiyo ant Euterpea-pwodwi MIDI dosye
nan LillyPond, se konsa nou bay kèk enstriksyon sou Scripts
fè sa ki bay ak LillyPond
jis kenbe li sous louvri epi pou yo jwenn yon tiyo prale.
CONNOR HARRIS: Yon fwa ankò, nou ta dwe mete aksan sou,
de teknoloji sa yo, ou pa gen yo sèvi ak yo ansanm.
Yo pa ap fèt nan travay ansanm, menm si yo fè trè joliman.
>> STEPHEN KREWSON: Dwa.
Ak totalman lib.
CONNOR HARRIS: Se konsa, Remèsiman, jis li sa.
STEPHEN KREWSON: duman te note.
Mèsi a moun jan.
Sa a mwen pral retade ankò sou jis pou yon moman.
Pwosesis la enstalasyon se yon ti jan ti kras difisil.
Nou te yon li m 'sou GitHub nan ke ou ka pran yon gade nan.
Jis voye yon imèl ba m 'si ou gen nenpòt kesyon.
Men, nou pral kouri sa a anba sipozisyon an ke sa a ap travay pou tout moun.
CONNOR HARRIS: Men, si ou pa kapab jwenn LillyPond nan travay, pa gen okenn kontra gwo.
Gen nan pa gen konpilasyon viv ki pral patisipe, omwen sou fen m 'yo.
STEPHEN KREWSON: Haskell ak LillyPond ta dwe tou de gen enstalatè.
Se Euterpea telechaje kòm yon pake, sou sa ak pou fè.
Se konsa, nou ap pale de mizik òdinatè.
Lè sa a se jis yon trè View 50,000-pye.
Genyen yon aspè kèk diferan nan li.
Lè sa a se ki graj epi li se ale nan fènwa kèk detay.
Men, nou te ka panse a yon bagay tankou algoritmik konpozisyon,
lè l sèvi avèk algoritm, lè l sèvi avèk kòd, jenere
kèk kalite de- petèt yon pwòp tèt ou-menm jan an sekans nan nòt, oswa petèt nòt
anba kèk contrainte.
Lè sa a, moun ta ka fèt oswa entèprete
ak enstriman mizik analòg oswa yon bagay tankou sa.
Men, konpozisyon sa a te fè algorithmically.
>> Men, nan kou, petèt zòn nan nan mizik òdinatè oswa mizik dijital
nou ap plis abitye ak se dijital sentèz son oswa dijital pran echantiyon
ak dijital anrejistreman.
Yon anpil nan enstriman mizik dijital yo fè nan dijital pran echantiyon.
An reyalite, nou pral lè l sèvi avèk youn nan moun ki nan fòm la nan yon bibliyotèk font son pita.
>> Men, gen nan tou yon bagay rele dijital sentèz ki soti
nan '70s yo ak nan' an reta 80s yo ak Yamaha ak Jan Chowning nan Stanford
fè sentèz FM oswa Sentèz modulation frekans,
kote ou te gen yon konpayi asirans siyal ak yon siyal modulation
tou de nan spectre an odyo.
Men, sa ki nou ap konsantre sou jodi a se yon bagay yo rele MIDI,
ak nan kou, algoritmik konpozisyon.
>> Nou pa pwal fè enstriman mizik, men nou ap olye ale nan fè kèk mizik,
ak Lè sa a ki pral debarase entèprete pa kèk enstriman mizik ki
se Conform nan la jeneral MIDI estanda.
Se konsa, sa ki nan MIDI?
Mwen pa pral jwenn twò gwo twou san fon nan li, men MIDI se pwotokòl transfè done.
Li se yon kalite yon gid atravè konpayi diferan ak endistri
pou òganize son oswa plak.
Se konsa, nou ap wè ke gen nan yon estanda MIDI
pou tout pèkisyon nan diferan son ak rekòmandasyon MIDI
pou tout kalite sa yo diferan nan Synth oswa diferan kalite tout enstriman an
gwoup nan yon òkès, yo di.
>> Ou se pwobableman abitye avèk 0 a 127 mesaj MIDI.
Yon siyal MIDI se tipikman yon sèl ti jan ki endike
si li nan yon done oswa yon pake estati, ak Lè sa a, gen nan
sèt Bits nan yon siyal.
Ak sa yo ka kontwole tout bagay soti nan volim
nan aksyon an oswa presyon sou yon kle patikilye
si w ap fè ak yon MIDI kontwolè menm jan tou, nan kou,
nòt.
Ak nan kou, gen MIDI te trè itil,
paske li nan yon fason yo fil ansanm oswa chèn flè magerit
yon pakèt moun sou MIDI aparèy kenkayri.
Mwen gen sèt oswa uit tounen nan kay mwen an.
Li vin reyèlman konplike, men li la reyèlman gen anpil pouvwa.
Apre sa, li vrèman fin vye granmoun.
Li nan soti nan '80s yo byen bonè, yo li vrèman bèl ak piti.
CONNOR HARRIS: Yeah.
Tout nintendo a klasik jwèt videyo ta pwobableman
gen dosye MIDI pou mizik, pou egzanp.
>> STEPHEN KREWSON: Isit la nan yon egzanp sou MIDI jeneral,
ki montre MIDI kòm yon kalite nan pwotokòl jeneral.
Apre sa, mwen panse ke nou ka panse a nan diferans ki genyen ant spesifikasyon la
ke ta dwe gen yon bagay tankou sa yo enstriman son ak aktyèl la
realizasyon nan tout sa yo enstriman mizik son nan yon font son oswa yon MIDI patikilye
synthesizer tankou se te diferans ki genyen ant petèt yon typeface-- ki di,
an jeneral, sa a se desen an nan fason sa a an patikilye ki reprezante
characters-- ak yon font patikilye ki gen yon gwosè espesifik ak tenbr,
ak gen nan realizasyon nan the--
>> CONNOR HARRIS: Petèt yon pi bon konparezon ta
gen estanda nan Unicode says-- li bay yon PO bay chak karaktè, ak reyèlman
chak ak lang nan mond lan, oswa yon seri vas nan Scripts nan lang
nan mond lan, ak Lè sa a sa yo se rann nan yon bagay grafik
pa plizyè pakè font.
Apre sa, evidamman, ou ka panse a MIDI kòm Unicode a son.
Apre sa, li nan jis yon lis de- yon gwo kouran nan evènman ak enstriman mizik ak etajèr,
epi ou gen gen yon separe pwogram, tankou yon caractere,
rann ki nan yon bagay sa a, se Acoustics.
>> STEPHEN KREWSON: Se konsa, poukisa Haskell?
Haskell se yon pwogram fonksyonèl lang, trè avanse,
trè diferan de C, trè diferan de PHP.
Epi nou ap ale nan wè ke gen nan yon fasilite nan konpozisyon fonksyon nan Haskell
ki pral pèmèt nou briz a konpozisyon oswa tape moute, transkripsyon,
yon bagay tankou FRERE Jacques, chante sa a ki senp
gen yon anpil nan pati nan li ki se pwòp tèt ou-menm jan an oswa repete.
Se konsa, sa a pral kèk nan motivasyon an pou poukisa
nou ap lè l sèvi avèk Haskell, nan ki fonksyon se sitwayen premye klas.
>> Apre sa, mwen te vle pou yon ekstansyon pou sa a yon ti kras.
Li se yon ti jan pi fasil yo notate FRERE Jacques nan Haskell.
Men, e si nou te vle ajoute yon pati tanbou a li?
E si nou te vle pou yo eseye fè yon bagay tankou yon Roland 808 oswa 909 tanbou
machin ki kote ou gen sou 16 etap diferan?
Anjeneral sa yo, se te panse nan nòt kòm 16th.
Epi ou ka kontwole mondyal la tèmpo, epi ou ka chwazi soti
yon pakèt moun sou diferan pati pèkisyon a bas tanbou, se yon bat, pèlen diferan,
ouvè ak fèmen chapo segondè sou sa yo sòt de chanèl,
ak Lè sa a ou ka EQ oswa ajiste volim yo.
>> Epitou, n ap wè yon fason bèl nan Haskell a reprezante etap sa a
sekansyèl ak nan tout divès kalite bagay sa yo fre nan Haskell
nou ka fè ak génération lis ak filtraj sou lis,
kat sou lis, kat fonksyon sou lis.
Ak yon ekskiz rapid.
Sa a se yon trè supèrfisyèl ak chema tro rapid
nan kèk nan aspè yo a Haskell ak Euterpea,
ki se yon domèn ki espesifik embedded ak lang ekri
nan Haskell pou kalite mizik.
Se konsa, tanpri tcheke deyò Kòd sou entènèt.
Dife moute GHCI, ki se Glasgow a Haskell konpilateur Entèprèt.
Apre sa, mwen pral fè kèk bagay sa yo nan yon ti jan
konsa ou ka wè ki jan li fè.
>> Lè sa a pèmèt ou chaje nan ak the-- sentaks la se kolon ak Lè sa a
lòd la.
Ou ka chaje nan dosye.
Ou kapab sèvi ak browse sou sa yo dosye yo wè tout fonksyon yo ki
egziste nan yon modil patikilye.
Lè sa a, jan nou pral wè, kalite ak kalite klas yo, se pou enpòtan nan Haskell,
se konsa ou ka toujou check-- espesyalman si w ap k ap travay nan yon nouvo DSCL
tankou sa a, ki sa ki yon kalite mizik?
Mwen konnen sou fason nimerik la kalite travay nan Haskell,
men mwen pa konnen anpil sou mizik.
Men, ou ka eksplore chemen an, yo ap defini lè l sèvi avèk sa a t pa oswa kalite lòd
ak Lè sa a rele nan yon patikilye fonksyon oswa yon objè done.
CONNOR HARRIS: Yeah.
Si ou te panse ak rezone C te hardass sou kalite,
ou pa gen okenn lide sou Haskell.
Bagay nan bon sou Haskell se ke si ou kapab jwenn kòd ou a te rekeyi
epi si chèk Haskell kalite, li la pwobableman dwa,
paske sistèm nan di ki kalite se konsa strik.
>> STEPHEN KREWSON: Yeah.
Se konsa, mwen jis vle ale through-- e ankò,
sa a se pa fè li justice-- yon kèk nan karakteristik yo ki nan Haskell ki, omwen
creators-- li yo ak li te kreye nan ane 1980 yo an reta pa yon pakèt moun sou moun,
yon komite nan apeprè 20 people-- te panse te enpòtan.
Apre sa, premye bagay la yo ki nan lis nan yon papye ki
dekri Genesis nan Haskell plis pase 20 premye ane yo oswa konsa
te ke li te parese.
Se konsa, sa sa vle di?
>> Oke, sa vle di lè nou gen kèk kalite nan ekspresyon, nou bezwen evalye li.
Apre sa, fè bagay sa a Haskell nan yon apèl pa bezwen fason oubyen yon fason ki pa strik.
Sa se, si nou gen yon pakèt moun sou eleman nan ekspresyon nou an,
nou eseye pran reta evalyasyon an nan tout sa yo subcomponents
jouk absoli minute-- ki sot pase a ki se jiskaske nou aktyèlman bezwen yo.
>> Se konsa, sa a ki se means-- vrèman fre, espesyalman
si nou ap panse sou distraksyon nan nan yon sekansyèl etap mizik.
Ou vire l 'sou, epi ou kòmanse kouri yon sequence-- etap
si ou te janm te travay ak yon tanbou machine-- epi li jis ale pou tout tan.
Se konsa, li ta dwe reyèlman bon si nou te kapab rivalize ke nan Haskell.
Epi nou ka fè l 'ak enfini valè, nan lis patikilye enfini.
Li trè fasil yo tape yon lis enfini nan Haskell.
Ou te kapab jis itilize sentaks la desann isit la, kote ou wè 1 jiska 3,
retire 3 1 dot dot la, ak ki se yon lis enfini
nan tout nimewo yo natirèl pwolonje sou osi lwen ke ou ka imajine.
>> Mwen vle entwodui yon konsèp nan ranpa touswit.
Epi ankò, bi pou nan seminè sa a se pa
yo aprann sou ranpa nan Haskell oswa pi wo lòd fonksyon.
Men, mwen jis vle prezante l 'bay bay yon sans ki ekzak sou ki jan etranj
Haskell se ak ki jan pwisan li ye.
Apre sa, an patikilye, nou ap ale nan be-- lè nou fè pati diferan tanbou nou an,
nou ap ale nan dwe manipile bay lis nimewo, plisman yo sou youn ak lòt.
Men, fè sa, nou pral lè l sèvi avèk kat ak ranpa.
>> Genyen yon asosyatif dwat pliye, ki se sa a dwat youn
isit lan-- 1 mwens kantite a, 2 mwens kantite a, 3 mwens 0.
Apre sa, sentaks la pou yon pliye, ou bay yon pliye
se yon valè baz ak Lè sa a yon operation-- nan ka sa a, de sa oswa soustraksyon.
Mwen te montre tou de ka.
Lè sa a, gen nan yon aku ki akimile sou lis la an antye,
k ap aplike ki plis operatè oswa mwens, ak Lè sa a akimile li.
Se konsa, sa a pral the-- si li te rele ak pliye r plis nan 0, kòmanse avèk 0,
nou ta Lè sa a, sòm tout chif yo nan ke lis.
Epi sa a, yon lis nan 1 rive nan 3.
CONNOR HARRIS: Se konsa, yo mete l 'yon lòt fason sa a, pliye r pran twa agiman.
Genyen yon fonksyon ki tèt li pran de agiman,
Lè sa a, gen nan yon valè starter, ak gen nan yon lis ki gen valè.
Ak sa ki sa ou fè se ou pran starter valè, premye valè,
mete yo nan fonksyon an.
Ki sa ou jwenn soti, pran ki, manje ki
nan fonksyon an nan la dezyèm valè, ki sa ou jwenn soti,
pran ki, manje ki nan la fonksyon nan twazyèm valè an.
Lè sa a, si ou ale desann sa a lis tout fason sa a,
w ap ale nan jwenn evantyèlman kèk valè sa a, se sengilye
nan kalite la menm nan sa ki ou te kòmanse soti ak ak nan kalite la menm
kòm bagay sa yo nan lis la, ak Lè sa a sa a, se rezilta a retounen nan pliye R.
STEPHEN KREWSON: Se konsa, an patikilye, sa yo, se pi wo lòd fonksyon,
paske yo ap pran yon lòt fonksyon kòm youn nan agiman yo.
>> CONNOR HARRIS: Yeah.
Si ou te itilize kèk lòt languages-- mwen konnen R, [fèbl]
lang sa a gen, ki rele Diminye.
Ou ta ka gen fonksyon menm jan an nan lòt lang, jis rele
bagay diferan.
>> STEPHEN KREWSON: Ak sa ki nan bèl sou pliye R
nan egzanp sa a se ke pliye R ka travay avèk lis enfini.
Se konsa, nan pati anba sa a, sa a P5 se génération nòt yo ki
yo vire sou nan sekansyèl nan etap pou kèk pati tanbou, pati nan tanbou senkyèm,
e petèt li nan yon konga tanbou oswa yon bagay.
Lè sa a se yon fè espre obti fason pou ekri sa a,
men li la plezi, paske li demontre yon anpil
de bagay sa yo sou Haskell ak Euterpea.
>> Se konsa, pliye R nan kolon sa a se colon-- jis yon operatè ki pouse bagay
ansanm sou yon list-- rele sou yon vid lis, ki se jis parantèz yo vid.
Apre sa, mwen ap rele ki sou lis enfini sa a.
Sa a se aktyèlman de lis te ajoute ansanm desann isit la.
Lis 1 vigil 6 dot la dot se 1, 6, 11, 16.
Se konsa, nan jis Haskell-- yon karaktè kèk, ou
ka jenere tout la sekans nan nimewo
ki se senk nimewo apa etann sou nan Infinity.
Apre sa, mwen prepan ak sa yo ki sa a pi kout ti kras list--
3, 8, 21-- jis montre w ki jan ou ka anchene lis.
>> Lè sa a, mwen te ki plwaye sou tèt li.
Lè sa a fini moute ke yo te yon jis kalite operasyon idantite, men li la enfini.
Apre sa, pliye R ka fè sa, paske li paresezman evalye, tankou nan pi wo a la.
Si nou gen yon 1 ak yon 2 ak 3, nou kapab jis bracket koupe rès la tout antye de li.
Sa pa pral travay pou mwens oswa plis, men li
pral travay pou kolon sa a operasyon idantite sou lis la.
>> Se konsa, ki jan nou pratikman itilize ke si nou gen yon lis long nan enfiniman bagay sa yo?
Oke, Haskell bay yon anpil nan functions--
epi gade plis nan sa yo nan pwòp time-- ou a, tankou pran
ki di, OK, nou ap génération lis enfini sa a,
men nou ap jis ale nan pran kèk Nimewo nan li Ak nan sa a case--
nou pral wè sa a pita nan code-- machin tanbou nou an
GM se jis kèk kalite mondyal varyab pou kantite etap
nan sekansyèl la.
Sou woulo liv-nan machin yo mwen te montre ou, sa a, se tipikman 16,
men mwen te aplike l 'ak 32.
Li pa reyèlman gen pwoblèm.
>> Haskell se tou pi bon kalite, se konsa li gen fò estatik sezisman ki Connor mansyone a.
Se konsa, fonksyon yo matematik nan sense-- nan
yo ap plis matematik ke yo ap garanti
pa jwenn aksè nan oswa chanje nenpòt kalite varyab oswa fè opinyon oswa pwodiksyon.
Se konsa, si ou gen yon fonksyon, li nan detèrminist.
Li ap toujou retounen menm bagay la tou valè nan eta a nan pwogram nan
oswa rete menm jan an.
Gen, nan kou, eksepsyon monadic nan sa a, men sa a depase limit nou yo.
>> CONNOR HARRIS: Yeah.
Kisa sa vle di, menm si, ki gen la se kèk enpòtan [fèbl]
konsekans nan sa a.
Youn nan se ke li nan trè fasil a parallelize pwogram Haskell.
Paske si ou genyen, di, yon fonksyon nan ki
bezwen yo opere sou yon milyon valè, si ou konnen ke fonksyon an ap toujou
bay soti valè a menm si ou manje nan yon sèten value--
si w ap [fèbl] f nan 1, f nan 2, Lè sa a, f nan 3 oswa whatnot-- f nan 1
a pa pral ekri soti nan yon dosye oswa fè yon bagay
ki pral chanje valè a nan F2.
Ou ka jis fann moute fonksyon sa a nan yon milyon dola machin diferan oswa yon milyon
fil diferan oswa kèlkeswa sa, jwenn tout repons yo tounen,
jwenn tout valè yo retounen tounen, ak Lè sa a sa a, se li.
Se konsa, trè fasil a parallelize bagay sa yo.
>> Inconvénient a se ke opinyon ak pwodiksyon espesyalman
anfòm nan sistèm lan kalite nan fason bagay ki konplike anpil.
Nou pa pral antre nan ki kounye a, men mwen ankouraje w fè yon gade nan kèk nan resous
sou entènèt si ou vle aprann sou sa.
>> STEPHEN KREWSON: Se konsa, tape classes-- ak sa a
klas was-- nan kalite yo te envante yo rezoud
yon pwoblèm nan operatè surcharges.
Se konsa, nou te vle gen egalite ant diferan kalite bagay sa yo.
Natirèlman, nou te ka panse de- egalite ant nimerik kalite
se trè fasil yo reflechi sou, men sa ki sou egalite ant lis?
Ki sa ki sou egalite ant pyebwa done janm estrikti?
Lè sa a se tout posib nan Haskell paske nan klas kalite.
>> Se konsa, si ou defini yon done sèten type-- ak isit la, sa yo se ton mizik.
Nou ap finalman ap resevwa nan kèk mizik òdinatè.
Se konsa, nou gen C, C byen file, ak sou sa ak pou fè.
Yo apatni a yon pakèt moun sou diferan klas kalite.
EQ-- yo apatni a klas la di ki EQ.
Sa vle di yo sipòte operasyon egalite.
Se konsa, ou ka evalye si yon sèl sekans nan primitives mizik
se menm bagay la kòm yon yon sèl diferan.
>> Yo apatni a klas la òdinal.
Sa vle di gen nan yon kòmann-nan nan sa yo.
D vin apre C. C byen file vin apre C kòm byen.
Yo fè pati nan klas la montre, ki vle di yo kapab
ap enprime nan yon konsole oswa tèminal.
Yo fè pati nan nan klas enimere, ki
vle di ke menm si sa yo, se karaktè,
yo gen yon kache nimerik reprezantasyon kòmanse nan 0
ak ale nan nan sepandan anpil bagay la a, 20 oswa konsa,
oswa 30 oswa 40, petèt.
>> CONNOR HARRIS: Lè nou gen yon kalite done
ki derives-- ak sa mo kle "deriving--" yon klas kalite sèten,
sa vle di ke du a pral eseye yo konstwi yon bagay otomatikman.
Se konsa, petèt ou pral vle defini yon bon jan kalite yon lòt jan.
Ou pral vle defini C byen file kòm egal a D plat, pou egzanp.
Avèk sa a konstriksyon isit la, mwen pa panse ke C byen file
ak D plat pral egal, paske du a pral otomatikman
di chak diferan valè posib se diferan de tout lòt.
>> Se konsa, li se posib yo pase sou desizyon en yo default
nan sa yo kalite klas yo.
Yon fwa ankò, gade nan referans a si ou vle aprann sou sa.
STEPHEN KREWSON: Ak isit la, aktyèlman, sa a 'tout
ka itil pou lè nou kode pita.
Nou wè kèk nan operatè yo inséré pou sekans konpozisyon,
paralèl konpozisyon, e konsa soti, pluses sa yo ak siy egal
ki te antoure pa kolon.
Sa vle di nou ka jwe sa yo diferan primitives mizik youn apre lòt la.
Sa a sekans konpozisyon.
>> Oubyen èske nou ka jwe yo nan paralèl nan menm tan an.
Se konsa, mwen ka gen yon valè mizik, ak Lè sa a sa a egal ak kolon,
inséré paralèl konpozisyon operatè, ak jwe yo kòm yon kalite kòd.
Epi nou ap ale nan sèvi ak lè sa a nou konbine
pati tanbou nou yo ak nou an ti kras chante FRERE Jacques
yo jwe de sekans sa yo nan valè mizik nan menm tan an.
>> Currying is-- Curry te dènye non Haskell Curry, ki moun ki
se imaj la Haskell rele apre.
Lè sa a pèmèt nou yon bèl distenksyon lè nou ap
ekri tout bagay sa yo diferan fonksyon oswa filtè ke nou ap
pral fè kat sou lis nou an.
Yon fonksyon nan de arguments-- f nan x ak y--
ka reprezante kòm f nan x aplike nan y.
Se konsa, li yon fonksyon nan yon sèl agiman ki retounen
yon lòt fonksyon nan yon sèl agiman.
Se konsa, sa vle di nou ka kat jeyografik yon fonksyon f nan x sou lis y la.
CONNOR HARRIS: Vle bay yon egzanp sou sa a?
STEPHEN KREWSON: Yeah.
Mwen gen yon egzanp dwat isit la soti nan kèk nan bagay sa yo nou pral ekri.
Se konsa, replike 2-- byen, replike pral pran
yon sèl valè, ki se ki jan anpil fwa a replike yon bagay,
ak Lè sa a li pral pran yon value-- anjeneral yon lis oswa yon bagay.
Se konsa, isit la, nou ap kat replike 2 pase yon lòt lis.
>> Se konsa, si nou kat jeyografik replike 2, si nou replike 2 aplike
nan eleman an premye nan sa a epi list-- sa yo, se bay lis phrases-- mizik
yo pral pwodwi de nan "ou sleeping--" se konsa w'ap dòmi, ou menm ki ap dòmi.
Se konsa, kounye a nou gen de.
Men, pran de replike agiman, men paske nou ap
currying ak Lè sa a kat, nou ka reprezante replike 2
kòm ke nou fin tounen kòm yon fonksyon nan youn argument-- jis repwodui de fwa.
Lè sa a, nou ap aplike ki nan chak eleman nan lis sa a nan fraz.
>> Apre sa, concat se yon Haskell operasyon pou plat yon lis.
Paske replike 2 volonte pwodwi yon lis lis.
Lè sa a se fòm entèmedyè sa a isit la.
Se konsa, Lè sa a, nou ka concat oswa plati ki soti de fwa.
CONNOR HARRIS: Yon senp egzanp sou currying,
si ou ta like-- imajine f se jis yon fonksyon ki pran de miltiplikasyon
agiman ak retounen pwodwi yo.
Se konsa, si ou gen yon f 4 5, li nan 20.
Men, ou ka panse a sa a kòm also-- ou gen yon f fonksyon 4
ki pran yon agiman epi retounen kat fwa sa a argument-- jis
aplikasyon yon pati nan ki sèlman yon sèl agiman 4.
Men, si ou manje f nan 4 5, ki pral ba ou 20.
Epi sa a, yon pi senp egzanp sou currying.
Li nan anjeneral yon sèl nan yo menm ki liv.
>> STEPHEN KREWSON: LAMBDA ekspresyon oswa fonksyon anonim
yo se yon lòt Hallmark Haskell.
Se konsa, si nou bezwen fwe moute yon ti kras fonksyon replike lavi,
men di li nan pa nan bibliyotèk la estanda,
nou ka sèvi ak yon sentaks menm jan ak sa ki annapre yo.
Epitou, n ap briz sou sa a.
Youn nan bagay ou pral wè yon anpil nan nan nan machin tanbou se nou ap fè apèl
nan yon bagay yo rele filtre, ki renmen anvan,
se yon kat nan yon fonksyon sou yon lis, men li la
yon kat nan yon fonksyon Boolean.
>> Se konsa, nou gen isit la yon egzanp nan yon yon anonim
defini fonksyon Boolean ki jis pran yon valè koup.
Sa a se pa estrikteman pale yon fonksyon anonim.
Men, li la defini ak ki sentaks pou konsizyon,
ak sa a jis pran x modil n--
CONNOR HARRIS: Yeah.
Se konsa, f se yon fonksyon nan de agiman n ak p
ki retounen yon fonksyon ki se tèt li yon fonksyon nan yon sèl agiman, sètadi x.
STEPHEN KREWSON: Mwen inséré operatè mansyone.
Ki sa ki se operatè inséré?
Oke, operatè inséré yo nan nòmal fason nou reprezante operasyon yo,
di, nan mathematics-- 2 plis 2 olye pou yo operatè a plis
ak Lè sa a de agiman 2 ak 2.
CONNOR HARRIS: Yo rele li ranvèse polish notasyon, ki se
yon tèm mwen gen dout nenpòt nan ou ta konnen.
>> STEPHEN KREWSON: Dwa.
Ranvèse polish oswa prefiks notasyon.
Men, Haskell deside itilize operatè inséré.
Se konsa, sa yo, se kèk nan yo menm ki koutim ki
yo defini pou la Euterpea DSCL nan Haskell.
Se konsa, sa a te sekans konpozisyon.
Sa a te konpozisyon paralèl, ak sa a te truncating konpozisyon paralèl.
Epitou, n ap bezwen ke ak machin tanbou nou an,
paske nou pral sèvi ak dènye a operatè nan ki ti kras tupl gen
yo jwe machin nan tanbou ansanm ak chante FRERE Jacques nou an.
Ak machin tanbou nou an, se pral fè enfini.
Li jis jwe pou tout tan.
Men, chante sa a, FRERE Jacques se pa vre.
Li pa ke lontan.
Li nan sèlman yon ba kèk.
Se konsa, nou bezwen sispann machin nan tanbou kòm pli vit ke valè a ki pi kout mizik vini
nan yon fen.
Epi sa operatè infixed se super itil ak sa.
>> Epi notasyon inséré tankou sa a se kalite bèl,
paske di ou gen yon fonksyon tankou quote, ki bay nan nonb antye relatif divizyon
nan x pa yon bagay else-- regrèt sa, ki ta dwe gen yon ak b.
Ou te kapab ekri li kòm yon quote nan b.
Se konsa, si ou eleman put-- se yon lòt egzanp nan sa a.
x eleman nan kèk lis, si ou mete li nan Backticks, ou ka sèvi ak li.
Menm si li pa yon senbòl tankou plis oswa mwens oswa fwa,
ou ka itilize non an nan yon fonksyon tankou sa nan Backticks
kòm inséré operatè, ki se trè fre.
CONNOR HARRIS: Yon fwa ankò, sa a se tout sik jis Massachusetts Institute of Technology, vrèman.
Li pa afekte nwayo a nan lang.
>> STEPHEN KREWSON: Se konsa, nou wè isit la pou la fraz sot pase a nan chante FRERE Jacques nou an,
Mwen te jwe kèk kòd ti kras oswa ki tyè lè l sèvi avèk konpozisyon an paralèl
operatè.
Sa se yon lòt fason pou li di kèk nan sa nou te jis te di.
Se konsa, ou ka kat jeyografik fonksyon nan yon sèl agiman sou lis.
CONNOR HARRIS: Yon fwa ankò, referans pou Haskell-- liv entwodiksyon
ap gen tout bagay sa yo nan li.
>> STEPHEN KREWSON: Se konsa, isit la nan yon bèl liy kle nan sekansyèl nan etap
nou pral pran yon gade nan lè l sèvi avèk yon lis konpreyansyon.
Apre sa, nou wè isit la se ke eleman nan operatè fiks nan quotes tounen.
Se konsa, si x se yon eleman nan lis la nan x la, Lè sa a, nou pral rele moute fonksyon pèrk.
Se konsa, pèrk se jis yon fonksyon pèkisyon.
Li pran kèk p valè sa a, se yon pati nan mete nan limiter nan tout
son yo pèkisyon diferan ke nou te wè nan yon glise anvan,
ak Lè sa a li bay ki dire nan yon nòt trimès.
Lòt Bagay li bay li yon QNR, ak QNR se jis yon rès nòt trimès.
>> Se konsa, sa a se bati yon bagay bèl.
Nou gen yon lis nan eleman, ak nou pral bouk sou kèk lis soti nan yon
nan valè a max a sekansyèl etap nou an.
Lè nou ap nan yon m patikilye nan ke lis nan yon sèl nan valè a max,
si sa m se yon manm nan sa a seri ki te kreye nan fonksyon sa a,
byen, lè sa a nou vire l ' nan yon nòt pèkisyon.
Sinon, nou jis jwe yon rès, ki sa a vle di, nou jis rete an silans.
Apre sa, nou ka wè isit la ke nan sa a konpreyansyon sentaks lis,
x se peple pa sa a lis konstwi youn
nan gwosè a mondyal de sekansyèl la.
CONNOR HARRIS: Yeah.
Sentaks la debaz pou lis comprehensions se
bracket, valè ki enplike kèk varyab, ba,
valè posib pou varyab yo tèt yo, fèmen bracket.
Men, si ou te fè mete notasyon mason nan nenpòt ki sòt nan klas matematik,
ou ta ka te mete 2n sa yo ki n se nan oswa n se nan z.
Menm jan an bagay-- notasyon sa a ki te vle di yo dwe sijestif
nan ki notasyon matematik.
STEPHEN KREWSON: Epi ou kapab aplike miltip atribu
ak filtè miltip nan yon lis konpreyansyon, ki se byen bèl.
Aljebrik types-- nou pa pral retade ankò lontan isit la.
Gen nan pa yon nosyon bon nan Haskell oswa yon bon, nosyon evidan
pou konnen kijan pou pran, di, yon default paramèt nan yon fonksyon oswa yon bagay.
Nan Piton, sa a se byen fasil.
Ou ka jis di ak egal sou deklarasyon an nan fonksyon an,
se yon valè default nan se ka pa youn bay.
>> Nan Haskell, ou te kapab petèt itilize petèt petèt tape nan,
ki te pran swa pa gen anyen oswa se yon valè nan kalite jis yon.
Se konsa, nou esplwate sa a nan machin nan tanbou yo ki pèmèt nou bay volim si ou vle
paramèt nan chak nan pati pyès sa yo tanbou.
Se konsa, ki ba nou yon fason pou gen EQ oswa yon volim sou yon kanal patikilye.
>> CONNOR HARRIS: Nan lòt egzanp Haskell,
ou ta ka wè petèt itilize pou fonksyon ki ta ka febli.
Sa a se yon yon sèl komen.
>> STEPHEN KREWSON: Epi ou ka bay kèk sòt de mesaj erè kòm yon default.
Epi sa a, patikilyèman sou la men lè w ap fè mwen / O nan nan Haskell.
Ki ka ke trik nouvèl.
CONNOR HARRIS: Ou pou yon menm jan egzanp, panse
nan yon fonksyon ki enplike nan divizyon nan yon paramèt ke sa ta kapab 0.
Epi sa te kapab fonksyon retounen petèt kèlkeswa sa.
Se konsa, si gen nan pa gen divizyon pa 0, li pral retounen jis kèlkeswa sa.
Men, si gen divizyon pa 0, li pral retounen pa gen anyen
kòm yon fason pou siyal erè a.
Paske yon sèl konsekans Trè sevè sezisman Haskell nan
se ke gen nan pa gen real-- eksepsyon yo se gòch, fondamantalman,
manyen erè se gòch.
Lè sa a se yon sèl trè fason ki pi kouran pou fè li.
>> STEPHEN KREWSON: Se konsa, kounye a nou jwenn nan yon lòt bagay lide-koube
sou Haskell, ki se modèl matche ak fonksyon definisyon.
Mwen te montre ou nan dènye glise nan la deklarasyon sekans lan etap
fonksyon, ki te pran se yon valè petèt, Lè sa a, yon int, lè sa a yon lis ki gen antye,
Lè sa a, retounen yon sekans nan valè mizik gen Anote
ak tou de ton ak volim.
>> Se konsa, moun twa agiman kapab modèl matche nan fason ki anba la a.
Apre sa, nou toujou vle asire w ke ou fè yon ka baz oswa sòti ka an premye.
Apre sa, evidans sa yo ka jis kapab entèprete
vle di nenpòt ki valè sa a, se la.
Se konsa, si nou jwenn yon apèl nan etap sekans ak kèk valè, kèk lòt valè,
ak Lè sa a lis la vid, ki sa nou vle retounen se jis silans, yon rès 0.
>> Ak olye pou yo ki ke yo te yon lis vid oswa 0,
li nan yon rès 0, paske nou ap fè fas ak kalite a mizik,
ak lis la vid nan mizik la di ki kalite se jis yon rès ki pa gen dire.
Li nan okenn mizik.
Lè sa a, nou wè si nou jwenn yon etap sekans ak yon v pou volim agiman,
p pou enstriman prekosyon agiman, ak Lè sa a yon lis ki gen x an.
>> Lè sa a, nou fè kèk bagay.
An patikilye, nou aplike lis sa a konpreyansyon,
epi nou fè kèk operasyon sou valè a petèt
yo vire l 'nan yon nimerik valè pou ke li te kapab Lè sa a, enimere ak itilize
yo ka chwazi enstriman an.
Yon fwa ankò, sa a se yon ti kras ti jan fè espre inconcise
jis yo montre tout bagay sa yo etranj ou ka fè nan Haskell jan ou
pran yon gade nan l 'sou tan pwòp ou yo.
>> Tout dwa.
Se konsa, nou ap finalman ap resevwa nan fè sa nou mete soti nan fè,
ki se fè kèk mizik òdinatè.
Se konsa, nou ap ale nan eseye fè chante sa a, FRERE Jacques.
Se konsa, gen konbyen Fraz nan FRERE Jacques?
Kat.
Great.
Ak sa ki nan bèl se ke yo tout ap repete
menm kantite lajan an nan fwa, ki se de.
>> Se konsa, nou gen kat fraz chak repete de fwa.
Ak nan patikilye, yo ap nan yon wonn.
E genyen anpil anpil moun, plizyè fason aplike
yon wonn ki te kapab plezi yo fè.
Mwen te fè l 'nan yon trè senp fason isit la,
ki se jis yo construct-- liy lan fonksyon pran yon lis ki gen valè mizik
ak vire l 'nan sekans konpozisyon pa aplike ke konpozisyon sekans
operatè.
>> Lè sa a, mwen pran reta pati pyès sa yo diferan pa fè yo kòmanse avèk yo yon repo.
Se konsa, mwen kòmanse avèk yon rès nan de mezi, ak Lè sa a yon repo nan kat mezi,
ak Lè sa a yon repo nan sis mezi, ak Lè sa a wonn nan
ap travay, kòm nou tout konnen chante sa a.
Nou wè de anote oswa modifikasyon nan valè yo mizik
ki genyen nan yo nan sa a sekans aranjman nan eleman mizik.
Nou gen yon volim ajoute.
Sa a se yon fonksyon anot mizik ak yon volim patikilye.
Sa a se yon bon egzanp a yon siyal kouri MIDI
ki ant 0 a 127, sèt Bits yo nan enfòmasyon ki ka dwe te pote.
>> Apre sa, nou te wè then-- li trè yon ti tan, men an jeneral MIDI
lis tout enstriman mizik yo diferan.
Apre sa, gen nan pa yon anpil tout nan yo.
Si ou itilize yon dijital estasyon odyo, tankou Ableton Live oswa Pro zouti,
gen nan yon ranje pi laj èkstrèmeman a sente ak enstriman mizik VST.
Men, estanda nan MIDI sèlman gen yon kèk, oswa plizyè douzèn.
Se konsa, kèk nan yo se amizan.
Mwen te panse li ta enteresan si nou te jwe enstriman an enstriman an MIDI
elikoptè, ak Lè sa a nan fason pwochen nan tou an,
nou te fè yon pad Synth, ak Lè sa a sa a banal plon Synth vag kare,
ak Lè sa a tande vwa bou, ki se yon ti jan endesi sou MIDI move mwen
synthesizer, men yo OK.
>> Lè sa a, nou wè kite sa ak nan sentaks soti nan Haskell,
ak Lè sa a nou ap jwe tout bagay sa yo pati ansanm
ak konpozisyon operatè a paralèl.
Apre sa, nou te kapab pwobableman montre kèk nan sa a.
Isit la nan kòd la.
Epi ou ka wè nan C, gen ta gen yon anpil nan netwaye gòj ak anviwònman
kòd a tab anvan ou te kapab fè mizik tankou sa a.
Oswa nenpòt ki lòt pwogram lang, ou ta pwobableman
gen yo kominike avèk kèk sòt de bibliyotèk oswa API, li mete tout bagay moute,
ak Lè sa a ou ta gen netwaye.
Men, isit la nan Haskell se, mwen panse ke, yon fwa ou jwenn pann an nan li, èkstrèmeman
lizib ak anpil espresif.
Se konsa, gen aplikasyon an a FRERE Jacques.
Tout dwa.
Koulye a, nou vle ajoute pèkisyon, ak sa a se yon ti kras messier ti jan.
Se konsa, kite a pran yon gade nan glisad yo.
Se konsa, lide a gwo se fè yon pakèt moun sou lis oswa pati.
Sou moun woulo liv-nan machin, gen te tipikman sou petèt uit
a 10 ritm oswa pèkisyon pati.
Lè sa a, sèvi ak yon pakèt moun sou teknik.
Apre sa, nou te pale osijè de lè l sèvi avèk these-- ranpa, filtè, fonksyon LAMBDA,
trase sou lis jenere valè nan kèk seri 1 a r, r se 16,
oswa 32 etap nan sekansyèl la.
>> Lè sa a, si gen nan yon valè nan ke lis kòm nou ap kouri nan sekansyèl a,
kouri atravè li sou yo ak sou yo, li vire sou sa nòt,
ak vin ki echantiyon deklanche.
Isit la yo se tout diferan fason yo etranj Mwen te vini ak jenere nòt.
Eseye li sou pwòp sòm semi ou yo.
Li pral son fre.
Tan pèmèt, nou pral ale nan sa a.
Men, pou kounye a, mwen devine nou ta dwe Demo sa nou genyen.
Ann espere sa a ale OK.
>> Se konsa, sa a se GHCI.
Epitou, n ap chaje yon dosye Mwen gen yo rele song.lhs,
ki se dosye a mwen jis te montre ou.
OK, gwo.
Kòm Connor te di byen bonè, li konpile, li tape tcheke,
Se konsa, mwen ka respire yon anpil pi fasil.
Li nan pa ale nan kònen moute pou mwen.
>> Mwen t 'vle montre w yon bagay itil.
Ou ka wè ke yon modil chaje rele 50.
Ou ka browse ki modil.
Lè sa a se konsa bèl sou doing-- petèt sa
w ap fè nan Haskell se pa rele devlopman lojisyèl,
men ou ka fè yon anpil nan plezi bagay sou pwòp ou yo.
Apre sa, workflow la se reyèlman bon kòm konpare ak yon anpil nan lòt lang,
paske ou ka wè nan yon vrèman lizib fason sa k ap pase sou.
Se konsa, nou wè ke nou gen tout fraz sa yo, ki
yo se lis nan ton mizik, ak lè sa a nou bati sa yo moute nan yon bagay pi gwo,
ki se yon chante mizik.
Li se yon inite mizik.
Lè sa a, nou ka jwe sa a tout ak yon fonksyon rele mizik jwe.
Ou ka wè ke desann isit la.
Ki se jis jwe.
>> Mwen ta dwe say-- mwen pa t 'pale sou sa a siy dola sa a, se toupatou.
Siy dola se yon lòt operatè inséré.
Men, li gen priyorite ki pi ba nan nenpòt ki operatè, ki efektivman
vle di ke tout bagay sou bò gòch la nan siy a an dola
e yo gen dwa a nan siy lan dola, nou ap ale nan jwenn evalye anvan li.
Se konsa, li sòt de tankou yon lòt fason pou ajoute parantèz.
>> CONNOR HARRIS: Se fondamantalman konpozisyon fonksyon.
Epi, se asire ke ou pa en-si ou gen fonksyon chak bò oswa inséré
operatè sou chak bò, yo pa pral asosye atravè li ak ba ou
rezilta inatandi.
>> STEPHEN KREWSON: Se konsa, nou can-- lè l sèvi avèk sa, nou ka rele.
Premyèman, nou pral jwe li san yo pa tanbou yo.
Sa a elikoptè a, elikoptè a MIDI.
>> [MIZIK jwe]
Genyen vag nan kare.
Bou nan vwa.
Epi ou ka reyèlman ale nan bwa ak sa.
Mwen te chwazi yon yon sèl trè senp, paske mwen te konnen mwen pa ta dwe mòde koupe
plis pase mwen te kapab moulen.
Jis kenbe l 'trè senp yo montre lide prensipal yo.
Men, lè sa a mwen te tankou, nou te te rive nan ajoute kèk tanbou sa a.
Jis paske sa a se yon ti jan inpénétrabl,
epi mwen pa t 'sèvi ak nan non nan pati yo tanbou,
Mwen trase them-- paske yo ap yon pati nan ki klas enimere,
Mwen trase yo nan antye.
Youn nan se tankou yon tanbou bas.
Zewo se kòm byen.
Sèt se yon chapo segondè.
, Li desann nan isit la ki kote nan fonksyon jwenn yon ti kras pi plis o aza,
sa yo, se tankou tanbou konga.
>> Se konsa, si ou panse sou- petèt yon plezi fason yo aplike yon machin tanbou
se sèvi ak trè lòd modèl sou tanbou bas ou yo.
Se konsa, pou egzanp, sou filtraj sou la lis ak tout bagay ki bay tounen
yon 1 lè li te pran modil 04.
Se konsa, mwen jwenn 1, 5, 9, 13, se konsa sa a 17-- se premye bat la nan chak mezi.
>> Lè sa a, sa a se menm bagay la tou bagay deplase plis pase de etap.
Se konsa, sa a, se décalée nan.
Se konsa, sa a ta ka yon bagay tankou yon chapo segondè.
Lè sa a, ankò, desann isit la, li nan yon ti kras o aza,
paske nou ap fè tanbou konga.
Apre sa, mwen gen kèk maraka desann isit la, tou.
>> Se konsa, mwen te kapab rele jwe machin tanbou, men li ta ale sou pou tout tan,
epi li ta ka kòmanse arachman moute tout memwa a nan sistèm m 'yo.
Se konsa, mwen pral rele sa a fonksyon jwe mizik, ki jan nou pral wè,
itilize truncating konpozisyon sa a paralèl yo jwe ti kras chante FRERE Jacques nou an
ansanm ak sa a machin tanbou etranj.
Se konsa, kite a pran yon gade.
Ak tanpri amelyore sou mwen aranjman nan tout pati yo nan tanbou.
Pa espesyalite mwen, men mwen te gen yon anpil plezi fè li.
>> [MIZIK jwe]
>> Se konsa, nan kou, sa a se tout yon ti kras pa tankou plezi
si nou pa ka konvèti li nan yon nòt pou petèt li
ta ka entèprete pa yon sèn moun.
Se konsa, mwen pa pral kouri li isit la.
Mwen te deja te pwodwi dosye yo.
Ou ka wè ke gen nan yon dot lilipon file-- ak sa a
yo pral seg mwen nan men Connor-- ak yon dosye dot MIDI,
ak yon dosye dot PDF yo, ki se ki sa Lilipon pral finalman jenere.
>> Men, sa yo moun sa yo ki Scripts, ak mwen pral jis kouri yo ak opsyon èd yo.
Si w ap resevwa sa yo leve, li kouri ak Euterpea, ou ka jenere yon dosye MIDI.
Lè sa a, soti nan dosye a MIDI ak pwogram MIDI 2LY sa a,
ou ka jenere yon Lily Dosye Pond, ak lè sa a ou
ka jenere yon PDF nan nòt la.
Apre sa, nou ta dwe pran yon gade nan sa a.
Se konsa, Connor pwal pwobableman montre w kouman yo anot sa a pi byen,
men sa a se FRERE Jacques kòm ki te pwodwi pa m 'nan Euterpea.
Li nan jis nan C. mwen ta dwe yo te kalkile konnen ki sa ki Hack nan li la aktyèlman nan.
Men sa se tiyo a pou ki jan ou fè sa ak sa.
Se pou nou pale plis sou lilipon.
>> CONNOR HARRIS: OK Se pou nou wè.
Èske w te mansyone Aprann Ou Haskell?
STEPHEN KREWSON: Oh yeah.
Tcheke Aprann Ou Haskell.
Li nan nan resous yo.
Sa a ki jan mwen te kòmanse aprann, epi li gwo.
Pa bèbè aprann.
>> CONNOR HARRIS: Se konsa, li nan entènèt.
Se konsa, yon nèg yo te rele [fèbl] learnyouahaskell.com, pa gen espas.
Gramè ki malad.
STEPHEN KREWSON: Se ilistre, tou.
CONNOR HARRIS: Se konsa, ki sa ki lilipon?
Li se yon pwogram asèrtif ak lang pou Tipografi mizik.
Se konsa, ou kapab declarative-- panse a bagay sa yo tankou HTML,
kote ou pa ap saying-- HTML pa di ki jan navigatè entènèt yo ta dwe
rann paj etap pa etap.
Li nan jis di sa a se yon deskripsyon textuelle
nan sa ki ou vle paj la yo gade tankou.
>> Lè sa a, li la tou yon pwogram ki compiles ak lang sa a,
oswa li li nan li yo ak Lè sa a, aktyèlman fè Tipografi la pou ou,
epi li krache soti sa yo bèl bagay kap nòt PDF.
Ou kapab tou jwenn fòma PNG oswa kèlkeswa sa.
Yon bon fason yo panse nan sa a se pa analoji
se ke kapòt an latèks se sòt de tankou LillyPond, men pou jis Tipografi òdinè.
Se konsa, olye de- li nan pa Wiziwig: -Kisa ou wè
Se sa ou jwenn, tankou, di Final se, oswa Sibelius,
oswa Microsoft Word, kote ou ka tape nan tan reyèl ak bouyon bagay sa yo nan tan reyèl
ak wè chanjman enstantane.
>> Li baze tèks.
Ou gen konpile ou nòt lè l sèvi avèk yon pwogram separe
epi pou yo jwenn soti pdf pita.
Sa a se yon ti jan mwens pratik pou itilize si w ap
ap eseye ekri dirèkteman nan yon nòt epi w ap
ap eseye konpoze sou òdinatè a.
Men, gen yon anpil nan avantaj pou li.
Youn, li gade yon anpil joli, paske LillyPond kapab aktyèlman
pran tan nan fè desizyon Layout byen,
kontrèman Sibelius oswa Final, ki gen fè algoritm konpwomèt konsa
yo ke yo ka montre bagay sa yo nan tan reyèl.
>> Se konsa, poukisa se LilyPond-- grafik òdinatè se difisil.
Si w ap fè anyen ak mizik , epi ou vle ekri soti nòt,
ou pa vle ekri soti tout bagay nan tèt ou
kòmanse avèk ki jan yo desine baton ak ki jan yo desine notepads.
Trè difisil Li nan. Li te fè l 'anvan.
Ou se amann.
>> Si ou vle sèvi ak Final oswa Sibelius, fòma yo ranpli pou bagay sa yo
se bagay ki konplike anpil, epi ou pa kapab reyèlman sèvi ak yo pwogramasyon.
Ou ka louvri moute Sibelius ak final epi ale nan File, Export PDF kòm tèt ou,
men ou pa ka vrèman rele ki soti nan yon script.
LillyPond, ou ka rele nan men moun Scripts.
Ou te kapab fasilman repekte LillyPond ak kapòt an latèks.
Mwen pa pral gen ke anpil tan yo ale nan teknoloji sa yo kounye a,
men yo egziste.
Si ou vle fè yon gade nan yon liv LillyPond,
li nan yon pwogram ki vini ak distribisyon LillyPond ou,
ak li a pou iteration LillyPond fragman nan kapòt an latèks
si ou vle fè yon bagay tankou yon dokiman Muzikoloji gwo
ak egzanp, pou egzanp.
Lè li nan yon konpetans bon pou lavi si w ap fè anyen
ak mizik, pa sèlman CS50.
Mwen te itilize pou tout LillyPond nan pwojè konpozisyon m '
depi m 'te fondamantalman yon wo grade nan lekòl segondè.
>> Se konsa, isit la yo se kèk egzanp ki senp.
Sa a se fondamantalman reprezantan nan nivo a nan difikilte
ki pi fò moun ta figi l 'yo t ap
yo sèvi ak lilipon pou pwojè senp.
Youn premye Sa a se nan konmansman an nan yon prelid Koral pa Bach.
Youn anba Sa a se yon ekstrè soti nan yon nan travay pwòp mwen an,
ak li nan jis gen yo montre ou bagay sa yo tankou [fèbl]
mete liy miltip nan menm bagay la tou anplwaye yo, ki jan lyric undersetting fonksyone.
Tibod Lyric se yon bagay ki trè fasil yo sèvi ak lilipon pou mizik koral.
>> Se konsa, Lè sa a, gen nan kèk plis egzanp konplike isit la.
Tout moun sa yo ap fè nan Lilipon e yo ap posib.
Ekstrè premye Sa a se soti nan [Fèbl] pa [fèbl].
Lè sa a [fèbl] soti nan yon moso pou bas solo
flit pa [fèbl], ki se yon longtime-- ki
te yon manm depi lontan nan la depatman mizik isit la, mwen panse ke.
Mwen pa si kote l 'te ale yo ale nan.
Men, li te konseye nan Harvard nan Konpozitè Asosyasyon pou yon tan long.
Bèl moun.
Apre sa, li ekri kèk mizik ki gen trè notasyon konplike ki LillyPond
ka Alòske okipe trè joliman.
>> Se konsa, jis ba ou yon sans de sa ki kapasite bagay sa a nan sont- konsa
entèrn yo nan LillyPond yo trè konplike.
Epi ou ka sèvi ak li pou yon bon bout tan, ki gen ladan
pou kèk bèl konplike bagay sa yo, san yo pa vrèman
gen konnen yon anpil sou yo.
Men, lide a debaz se ke sou la pi ba nivo, atòm yo nan LillyPonds
se nòt yo.
Nòt yo genyen yon kontèks rele vwa.
Se konsa, kontèks la vwa fondamantalman koresponn
nan yon sèl liy nan polifoni.
Lè sa a, kontèks kapab genyen yerarchik
nan pi wo yo menm nivo ki reprezante baton sou nòt la
oswa pi gwo gwoupman tankou baton pyano oswa baton koral,
Lè sa a, evantyèlman ak kontèks nòt tout antye.
Epi ou ka aktyèlman kouvri miltip nòt nan yon liv.
>> Tout kontèks gen yon kantite ENGRAVERS tache.
Si ou gade nan nan sa nan yon kontèks
epi enprime yon senbòl sèten oswa yon sèten klas nan senbòl sa nesesè.
Se konsa, yo chak kontèks vwa, gen nan [fèbl] nòt
Owoliyab ki se fondamantalman yon fonksyon oswa yon bagay ki ekri soti tout nòt la
tèt sou pati pyès sa yo dwa nan yon paj.
Lè sa a, gen nan yon Owoliyab fann, ki ekri soti tèt gwo sou anplwaye a.
Lè sa a, gen nan yon metronom make Owoliyab ki
ekri soti mak metronom nan yon nòt.
Apre sa, tout bagay sa yo anfòm bèl byen nan yerachi a.
Lè li nan trè, trè, trè customizable, ki ou bezwen
si ou vle jwenn bagay sa yo tankou sa.
>> Se konsa, tout yo gen yon kontèks anpil nan atribi diferan
ke ou ka modifye pou tout bagay soti nan espas la nan divès font
seleksyon gwosè nan bagay sa yo.
Si ou vle fè menm bagay ki pi konplike,
gen nan yon lang scripting entegre.
Yo sèvi ak konplo, ki se dyalèk nan zozote.
Sa yo pwobableman pa fè sa vle di anyen nan ou.
Men, fondamantalman, yon konplo yon lòt fonksyonèl
lang programmation, plis oswa mwens.
>> STEPHEN KREWSON: menm kantite vòt-nan a.
>> CONNOR HARRIS: Yeah.
Li se yon bon menm kantite vòt-nan, Mwen ta kwè.
Apre sa, li la itilize kòm yon lang ansèyman, aktyèlman, desann Mass Ave. Nan MIT.
Apre sa, li trè sou la men pou LillyPond pou plizyè rezon teknik.
>> Se konsa, si ou vle fè senp reglaj depann sou kondisyonal,
pou example-- gen nan sèten kondisyon pou yon nòt ki nan te rankontre,
fè amenajman nan la Layout oswa whatnot-- Lè sa a,
fasilite sa yo se a.
Yo ap konplike.
Se konsa, isit la nan yon echantiyon Kòd trè senp.
Li nan senk liy yo.
Fondamantalman, mwen defini de baton.
Li nan nan 3/4.
Anplwaye nan premye gen yon tache tèmpo make,
men sa a aktyèlman pral yo ale sou li nan yon nòt nan tout antye,
paske mak tèmpo yo sou nivo nan nòt yo.
Owoliyab la metronom make se tache ak nòt kontèks.
Gen kle diferan, paske [fèbl] Owoliyab la
se tache baton yo.
Ou ka aktyèlman fè se.
Echantiyon an mwen te ekri se aktyèlman nan C pi gwo,
men li la jis yo demontre ou ka gen
kle diferan nan baton diferan.
Apre sa, sentaks la debaz se ou ekri sonje non ak E, F, G, kèlkeswa sa.
Si ou vle fè alterasyon, ou sifiks IS oswa ES.
Sa a se soti nan Dutch konvansyon muzikolojik.
>> Ak fè franchi oktav, ou gen yo sèvi ak sa yo tik mak, vigil oswa apostwòf.
Relatif nan jis vle di tou sa ou gen yon nòt,
li pral otomatikman dwe plaec nan la oktav pi pre nan yon sèl la anvan yo.
Men, si ou vle sote plis pase yon fifth-- di yon senkyèm oswa more--
lè sa a ou gen yo sèvi ak [fèbl a].
Men, otreman, ou pa bezwen presize oktav la nan chak nòt sèl.
>> Apre sa, manm fanmi C, pwemye, ak C, ou jis presize mitan C
ak baz C, espesyalman premye nòt.
Lè sa a, ou gen baton sa yo ki òganize de vwa oswa echantiyon nan mizik sa yo,
epi ou gen yon nòt.
Epi sa sanble tankou sa a.
>> Si ou vle pran tan nan kopi ki echantiyon nan LillyPond
Kòd sou anvan an glise desann isit la, epi ou
ka ekri li pou LillyPond tèt ou.
Mwen konnen nou te gen yon bagay ki sanble yon sanble anpil ak sa a.
Se konsa, gen nan yon lòt teknoloji rele Mizik XML konsève
pa moun ki pale konplètman diferan.
XML se yon textuelle done structure-- mwen pa ta dwe di done structure-- di
metafò kat jeyografik sòt de.
Apre sa, li la ki fèt yo kenbe done yerarchize trè byen.
HTML, pou egzanp, se yon kalite XML.
Epi ou ka di XML paske yo te gen tout parantèz yo ang ak ang
mak koupe bracket ki montre done jaden.
>> Mwen pa gen yon kòd egzanp soti nan Klas Mizik XML.
Ou ka jwenn li tèt ou.
Fondamantalman, rezon ki fè yo ou ta ka vle yo sèvi ak XML kòm etap la entèmedyè
se, premye a tout moun, li nan yon fòma echanj
pou fondamantalman every-- mwen pa ta dwe di chak, men yon anpil nan diferan ak nòt
ekriven.
Se konsa, si ou ekri nan Klas Mizik XML, pa sèlman ka LillyPond
li li l 'avèk èd nan oksilyè sa a pwogram yo rele XML Mizik LY,
men tou, Final ka li li, Sibelius ka li li.
Tou depan de ki jan objè entèn ou yerachi travay pou reprezante mizik,
li ta kapab pi fasil yo ekri soti Klas Mizik XML pase yo LillyPond
ak jis konte sou XML Mizik LY fè konvèsyon an.
>> Mwen pa panse [fèbl] gen XML Klas Mizik.
STEPHEN KREWSON: Li pa fè sa.
Yon moun ap travay sou li, menm si.
>> CONNOR HARRIS: OK.
Euterpea pa gen yon XML Mizik pwodiksyon fonksyon ankò.
Si ou vle yon lide pwojè final la, petèt jwenn an kontak ak mesye
ki Stephen konnen, ak yo te kapab sèvi ak èd-ou.
>> STEPHEN KREWSON: Mwen ta renmen sa.
CONNOR HARRIS: Epitou, fondamantalman, chak lang pwogramasyon
sa a, se vo sèl li yo deja gen yon bibliyotèk XML,
pou ou kapab intern konvèti tout nan mizik ou a nan kèk objè
ki bibliyotèk la XML ka ekri soti ke ta ka mande mwens
chanjman nan estrikti entèn ou pou kèlkeswa mizik objè ou
vle ekri pase ekri li dirèkteman nan LillyPond ta.
Lè sa a, jis enprime li soti ak XML ak bibliyotèk yo XML nan lang ou,
ki pral garanti ke li nan syntactically kòrèk epi yo tout bagay,
ak Lè sa a konvèti li nan LillyPond.
Se konsa, teknoloji ou ta ka vle gade nan si w ap fè yon bagay
tankou sa a.
>> [Fèbl], yon lòt auxilarry teknoloji.
Sa a se fondamantalman Tech Works oswa Studio Tech pou LillyPond.
Se konsa, li ofri èd ak sentaks, ak modèl
pou plizyè komen konbinezon nan enstriman mizik.
Li pèmèt fann ekran gade konsa ou ka gen kòd ou a nan yon sèl fenèt
ak PDF nan yon lòt fenèt ak klike sou kote nan PDF la
Ale nan ki enpòtan a tach nan kòd sous ou yo.
Sa a se pi plis itil si w ap aktyèlman ekri LillyPond depoze tèt ou
pase si w ap génération yo pwogramasyon.
Men, ankò, li nan yon bagay itil nan genyen.
>> Great.
Yon lòt resources-- mwen pral jis ale nan sa a trè vit.
LillyPond manuals-- LillyPond gen ekselan dokiman sou sit entènèt li yo.
Yo gen yon leson patikilye.
Yo gen yon referans sentaks.
Yo gen dè santèn de koupe pou plizyè ti bagay
Yo ta ka bezwen fè yo demontre divès kalite kapasite.
Si ou vle sèvi ak lang nan scripting
oswa fè plis vaste pèrsonalizasyon, lè sa a gen nan
entèrn referans lè sa URL.
Si ou vle sèvi ak XML Mizik, gen nan ki URL, musicxml.com/tutorial.
>> Lè sa a, si ou bezwen aprann konplo paske ou aktyèlman vle sèvi ak
fasilite yo scripting an LillyPond, Lè sa a, gen nan yon [fèbl] rele
Estriktire Entèpretasyon nan Pwogram konpitè,
ki se pa sèlman dezyèm lan pi gran liv CS janm written--
jwenn mwen apre sa si ou vle konnen sa mwen panse pi gran yon sèl is-- nan
men li la tou yon trè bon entwodiksyon nan lang ki apwopriye a.
Ou pa pral bezwen plis pase premye seksyon yo ki kèk.
>> Epi sa a, li.
Nenpòt kesyon?
>> ELÈV: Ki kote mwen ka telechaje ou pwodwi FRERE Jacques
pou m ka mete l 'sou iPod mwen an?
>> STEPHEN KREWSON: Bon, ou ka ekri soti nan kèk dosye wav nan Euterpea.
Epi ou gen kòd la.
Li nan sou GitHub.
Fè pwòp ou a nan varyasyon FRERE Jacques pa CS50 ruch tèt ou.
Li ta gen gwo pouvwa.
CONNOR HARRIS: Nenpòt moun ki lòt bagay?
STEPHEN KREWSON: Nou bezwen yon pi bon tanbou bas, tou.
Li nan reyèlman move.
>> ELÈV: Euterpea gen pa sèlman bò konpozisyon, men signal--
STEPHEN KREWSON: Wi.
An reyalite, travay I te fè nan Euterpea lè m '
pran sa a men gen nan yon gradye kou nan Yale ki
sèvi ak l-- te sou sentèz son.
Se konsa, gen nan yon reyèlman bèl fason l sèvi avèk flèch
ak kèk nan notasyon a nou te wè a konpozisyon ansanm fonksyon siyal.
An patikilye, Bass la pou pifò nan yo se jis yon senp vag sinis.
Men, si ou kòmanse konpozisyon moun nan etranj fason pwogramatik,
ou ka jwenn fou son efè, tankou kaskad etranj.
Ou ka kreye trè courageux son ak yon anpil nan batman.
>> Mwen te fè yon pwojè sou granulaire sentèz, ki se
yon kote nan ant FM ak pran echantiyon.
Ou pran piti anpil, echantiyon ti kras, ak Lè sa a
konbine yo ak kèk sòt de modulation ak konstwi yon son pi rich.
Nou menm tou nou te fè modèl fizik, se konsa ap eseye panse osijè de fizik la
ak psikoakoustik nan yon bagay tankou yon klewon, ak panse sou wout la
son an se rebondi koupe klòch an bay siyal la
ak acoustique yo nan sal la ak modèl
ke ak osilateur yo de baz yo.
CONNOR HARRIS: Mèsi anpil.
Mèsi pou vini yo.
Apre sa, mwen se toujou vle pran kesyon pa email--
connorharris@college.harvard.edu.
>> STEPHEN KREWSON: Yeah. stephen.krewson@yale.edu.
Fre.