CONNOR HARRIS: Hi. Ég er Connor Harris. Ég er CS50 CA í Harvard. STEPHEN KREWSON: Ég er Stephen Krewson. Ég er TF fyrir CS50 Yale. CONNOR HARRIS: Og við erum að fara að tala um einhverja tækni sem þú gætir vilt nota ef þú hefur áhuga í að gera lokaverkefni eða í raun nokkuð með tónlist. Við erum að fara að vera með áherslu á fyrst tungumál forritun heitir Haskell. Það er hagnýtur tungumál, þannig að hugmyndafræði er mjög mismunandi frá C eða PHP eða önnur brýnar tungumál sem þú hefur notað þegar, og þá sérstaklega á bókasafni skrifað í Haskell heitir Euterpea, sem getur hjálpað fólki með að skrifa tónlist virkni, grundvallaratriðum. Og Stephen mun ganga þú í í miklu dæmi um það. Eftir þetta, ég kynna þig eitthvað sem kallast LillyPond, sem er tækni fyrir typesetting tónlist. Það er tegund af eins og LaTeX fyrir tónlist ef einhver ykkar hafa notað LaTeX fyrir stærðfræði flokkum eða aðrir flokkar P setja eða hvað hefur þú. Og svo ég ætla að gefa þér aftur, nokkur einföld dæmi um það og benda þér á almenna Átt sumum betri auðlindum. STEPHEN KREWSON: In viðbót, við héldum það væri flott að setja upp smá vísbendingar átt leiðslum milli Euterpea-mynda MIDI skrár í LillyPond, þannig að við bjóðum sumir kennsla á forskriftir að gera það sem eru veitt með LillyPond bara til að halda því opinn uppspretta og fá leiðsla fara. CONNOR HARRIS: Aftur, við ættum að leggja áherslu á, þessar tvær tækni, þú þarft ekki að nota þá saman. Þeir eru ekki hönnuð til að vinna saman, þó þeir gera mjög vel. STEPHEN KREWSON: Hægri. Og algerlega frjáls. CONNOR HARRIS: So Viðurkenningar, bara lesa það. STEPHEN KREWSON: verðskuldaða athygli. Þökk sé þeim fólkinu. Þetta ég sitja lengi á bara um stund. The embættisvígsla aðferð er svolítið erfiður. Við höfum a lesið mér á GitHub að þú getur að líta á. Bara sendu mér tölvupóst ef þú hefur einhverjar spurningar. En við munum keyra þetta undir þeirri forsendu að þetta er að vinna fyrir alla. CONNOR HARRIS: Og ef þú getur ekki fá LillyPond að vinna, ekki máli. Það er engin lifandi samantekt sem mun taka þátt, að minnsta kosti á minn endir. STEPHEN KREWSON: Haskell og LillyPond ætti bæði hafa installers. Euterpea er hlaðið sem pakka, svo framvegis og svo framvegis. Þannig að við erum að tala um tölvu tónlist. Og þetta er bara mjög 50.000 feta útsýni. Það er nokkrar mismunandi þætti þess. Og þetta er gróft og er fara til að hylja smá smáatriði. En við gætum hugsa um eitthvað eins lausnarleiðar samsetningu, nota reiknirit, með því að nota kóða, til að búa til einhvers konar of-- kannski sjálf-svipað röð af athugasemdum, eða kannski athugasemdum undir einhverjum takmörkunum. Og síðan þá gæti verið framkvæma eða túlka með hliðstæðum tækjum eða eitthvað svoleiðis. En samsetning var gert algorithmically. En auðvitað, kannski svæði tölvutónlist eða stafræna tónlist við erum fleiri þekki er stafræn Sound Myndun eða stafræna sýnatöku og stafræna hljóðritun. A einhver fjöldi af stafrænu tæki eru gert í gegnum stafræna sýnatöku. Í raun, við munum vera að nota eina af þeim í formi hljóð font bókasafninu síðar. En það er líka eitthvað sem heitir stafræna myndun sem kom út af seint '70s og í' 80s með Yamaha og John Chowning í Stanford gera FM nýmyndun eða Tíðni Mótun myndun, þar sem þú hafði flutningafyrirtæki merki og mótunin bæði í hljóð litróf. En það sem við erum lögð áhersla á í dag er eitthvað sem kallast MIDI, og að sjálfsögðu, lausnarleiðar samsetningu. Við erum ekki að fara að gera hljóðfæri, en við erum í staðinn að fara að gera smá tónlist, og þá sem vilja fá að túlka af sumum tækjum sem eru af samræmi við Almennt MIDI staðall. Svo er það MIDI? Ég ætla ekki að fá of djúpt inn í það, en MIDI er að flytja gögn siðareglur. Það er eins konar leiðarvísir yfir mismunandi fyrirtæki og atvinnugreinar að skipuleggja hljóð eða plástra. Þannig að við munum sjá að það er MIDI staðall fyrir alla aðra slagverk hljóð og MIDI tillögur fyrir öll mismunandi tegundir af Synth eða mismunandi gerðir af öllum tækið hópar í hljómsveit, segja. Þú ert líklega kunnugt 0 gegnum 127 MIDI skilaboð. A MIDI merki er yfirleitt einn hluti bendir hvort sem það er gögn eða stöðu Packet, og þá er það sjö bita af merki. Og þær geta stjórnað allt frá rúmmáli til aðgerða eða þrýstingi á viðkomandi takka ef þú ert að framkvæma með MIDI stjórnandi sem og, að sjálfsögðu, skýringum. Og auðvitað, MIDI hefur verið mjög gagnlegt, vegna þess að það er leið til að vír saman eða Daisy keðja fullt af MIDI vélbúnaður tæki. Ég hef sjö eða átta aftur á húsinu mínu. Það verður mjög flókið, en það er mjög öflugt. Og það er mjög gamall. Það er frá upphafi '80s, og það er mjög gott og lítill. CONNOR HARRIS: Já. Allt klassískt Nintendo tölvuleikir myndi líklega hafa MIDI skrár fyrir tónlist, til dæmis. STEPHEN KREWSON: Hér er dæmi um almenna MIDI, sýna MIDI eins konar almennra siðareglur. Og ég held að við getum hugsa um Munurinn á forskrift að það ætti að vera eitthvað eins og þetta tæki hljóð og í raun framkvæmd þessa gerninga hljóð í hljóð letur eða ákveðna MIDI hljóðgervill eins og að vera munurinn milli kannski typeface-- sem segir, almennt, þetta er hönnun Þessi leið til að tákna characters-- og einkum letur sem hefur ákveðna stærð og timbre, og það er framkvæmd the-- CONNOR HARRIS: Kannski betri samanburður myndi vera Unicode staðall says-- það gefur a tala til allra eðli, og í raun hvert tungumál í heiminum, eða gríðarstórt setja forskriftir tungumálsins í heiminum, og þá eru þeir veitt í eitthvað grafísku af ýmsum pakka letur. Og vitanlega, getur þú hugsa um MIDI sem Unicode hljóð. Og það er bara listi of-- stóru straumi viðburða og tækjum og whatnot, og þú þarft að hafa sérstakt program, eins og leturgerð, að láta það inn eitthvað sem er heyranlegur. STEPHEN KREWSON: Af hverju Haskell? Haskell er hagnýtur forritun tungumál, mjög háþróaður, mjög frábrugðin C, mjög mismunandi frá PHP. Og við erum að fara að sjá að það er auðvelda virka samsetningu í Haskell sem gerir okkur kleift að gola í gegnum semja eða slá upp, umritun, eitthvað eins Frere Jacques, þetta einfalt lag sem hefur mikið af hlutum í það að eru sjálfstætt svipuð eða endurtaka. Þannig að þetta verður einhver hvatning fyrir hvers við erum að nota Haskell, þar sem aðgerðir eru fyrst borgarar flokks. Og ég vildi framlengja þetta svolítið. Það er svolítið erfitt að notate Frere Jacques í Haskell. En hvað ef við vildum að bæta tromma þátt í henni? Hvað ef við vildum reyna að gera eitthvað eins og Roland 808 eða 909 tromma vél þar sem þú þarft um 16 mismunandi skref? Venjulega eru þetta talinn 16. skýringum. Og þú getur stjórnað á heimsvísu taktur, og þú getur tekið út fullt af mismunandi hlutum slagverk af bassa tromma, a Clap, mismunandi snörur, opin og lokuð hár húfur á þessum konar sund, og þá er hægt að EQ eða stilla rúmmál þeirra. Og við munum sjá gott leið í Haskell að tákna þetta skref sequencer með öllum ýmsar kaldur hlutur í Haskell við getum gert með að búa listum og sía á listum, kortlagning á listum, kortlagning aðgerðir á listum. Og fljótleg afsökunarbeiðni. Þetta er mjög cursory og óhóflega fljótur skissa sumir af þeim þáttum af Haskell og Euterpea, sem er ríki-sérstakur skrifað embed tungumál í Haskell fyrir tónlistar tegund. Svo skaltu ekki skrá sig út kóðann netinu. Eldur upp GHCI, sem er Glasgow Haskell Compiler Túlkur. Og ég ætla að gera nokkrar þetta í smá svo þú getur séð hvernig það er gert. Og þetta gerir þér kleift að hlaða inn með the-- setningafræði er ristill og þá skipunina. Þú getur hlaða í skrár. Þú getur notað beit á þeim skrám til að sjá allar aðgerðir sem vera til í einingar fyrir sig. Og þá eins og við munum sjá, tegundir og tegund flokkar eru svo mikilvæg í Haskell, svo þú getur alltaf check-- sérstaklega ef þú ert að vinna í nýju DSCL eins og þetta, það er tónlist tegund? Ég veit um leið tölugildi gerðir vinna í Haskell, en ég veit ekki mikið um tónlist. En þú getur kanna hvernig þeir eru skilgreind með því að nota þessa t eða tegund stjórn og þá að hringja í tiltekin virka eða gögn mótmæla. CONNOR HARRIS: Já. Ef þú hélst C og Clang var hardass um tegundir, þú hefur ekki hugmynd um Haskell. The gott um Haskell er að ef þú getur fengið númerið þitt til að safna saman og ef Haskell tegund eftirlits, það er sennilega rétt, vegna þess að gerð kerfi er svo ströng. STEPHEN KREWSON: Já. Svo ég vil bara fara through-- og aftur, þetta er ekki að gera það justice-- nokkrar af aðgerðir Haskell, að minnsta kosti að creators-- sinni og það var búið í lok 1980 með fullt af fólki, nefnd um 20 people-- taldi mikilvægt. Og það fyrsta sem þeir skráð í grein þar sem lýst tilurð Haskell á fyrstu 20 árum eða svo var að það var latur. Svo hvað þýðir þetta? Jæja, það þýðir þegar við höfum einhvers konar tjáningar, þurfum við að meta það. Og Haskell er þetta í símtali af þörf því eða ekki-ströngum hátt. Það er, ef við höfum fullt af hluti af tjáningu okkar, við reynum að fresta mat þessara undirliða þar alger síðasta minute-- sem er þar sem við þurfum á því að halda. Svo hver er þetta means-- virkilega flott, sérstaklega ef við erum að hugsa um nýtt á tónlist skref sequencer. Þú kveikir það á, og þú byrjar keyra skref sequence-- ef þú einhverntíma unnið tunnu machine-- og það fer bara að eilífu. Svo það væri mjög gott ef við gæti líkja sem í Haskell. Og við getum gert það með óendanlega gildi, einkum óendanlega lista. Það er mjög auðvelt að slá að óendanlega lista í Haskell. Þú getur bara notað setningafræði niður hér, þar sem þú sérð 1 til 3, fjarlægja 3 1 punktur punktur, og sem er óendanlega lista af öllum náttúrulegum tölur sem nær á eins langt og þú getur ímyndað sér. Mig langar að kynna a Hugtakið brjóta strax. Og aftur, í þeim tilgangi þetta námskeið er ekki að læra um brjóta í Haskell eða hærri röð virka. En ég vil bara að kynna hana gefa nákvæma tilfinningu hvernig skrítið Haskell er og hversu öflugt það er. Einkum, við erum að fara að be-- þegar við gerum okkar mismunandi hlutum tromma, við erum að fara að vera að notfæra lista yfir tölur, leggja saman þá á hvor aðra. Og til að gera það, við munum vera með kort og brjóta saman. Það er rétt tengin falt, sem er þetta rétt here-- 1 mínus magn, 2 mínus magn, 3 mínus 0. Og setningafræði fyrir a falt, þú gefur falt grunn gildi og síðan operation-- Í þessu tilfelli, auk þess eða frádráttur. Ég hef sýnt bæði málin. Og þá er það að rafgeymisins sem safnast upp yfir allan listann, beita þeirri rekstraraðila plús eða mínus, og þá safna hana. Þannig að þetta verður the-- ef það var kallað með tvöfaldri r plús 0, byrja með 0, við myndum þá summa allt tölurnar í þeim lista. Og það er listi frá 1 til 3. CONNOR HARRIS: Svo til að setja það annan Þannig falt r tekur þrjá rök. Það er aðgerð sem sjálf tekur tvær breytur, þá er það ræsir gildi, og það er listi af gildum. Og það sem þú gera er að þú tekur ræsir gildi, fyrst gildi, setja þá inn í aðgerð. Hvaða gera þú fá út, Taka þessi, fæða sem í starfsemi sem annað gildi, það sem þú færð út, taka að fæða það inn í fall af þriðja gildi. Og þá ef þú ferð niður allt á þessum lista með þessum hætti, þú ert að fara að fá á endanum sumir eintölu gildi sem er af sömu tegund sem þú byrjaðir út með og af sömu tegund sem hlutur í listanum, og þá sem er afleiðing aftur falt R. STEPHEN KREWSON: Svo einkum þetta eru hærri röð aðgerðir, vegna þess að þeir eru að taka aðra virka eins og einn af rökum. CONNOR HARRIS: Já. Ef þú hefur notað ákveðin önnur languages-- Ég veit R, [inaudible] tungumál hefur þetta, sem heitir Draga. Þú gætir hafa svipaðar aðgerðir á öðrum tungumálum, bara kallað mismunandi hluti. STEPHEN KREWSON: Og hvað er gott um falt R í þessu tilviki er sú að föld R er hægt að vinna með óendanlega lista. Svo í þessum botni, þetta P5 er að búa athugasemdum sem eru kveikt í skref sequencer fyrir sumir tromma hluti, fimmta tromma hluti, og kannski er það Conga tromma eða eitthvað. Og þetta er vísvitandi sjáanlegir leið til að skrifa þetta, en það er gaman, því það sýnir mikið margt um Haskell og Euterpea. Svo falt R þessarar colon-- ristli er bara rekstraraðili sem ýtir hlutum saman á list-- heitir á tómt lista, sem er bara tóm sviga. Og ég er að hringja það á þessum óendanlega lista. Þetta er í raun tveir listar bætt saman hérna. Listinn 1 komma 6 punktur punktur er 1, 6, 11, 16. Svo Haskell-- í bara nokkrar persónur, þú hægt að búa til allt röð af tölum sem eru fimm tölur í sundur teygja á í óendanleika. Og ég prepend við það þetta styttri litla list-- 3, 8, 21-- bara að sýna þér hvernig þú getur concatenate listum. Og þá hef ég brotin á sig. Og þetta endar bara að vera eins konar sjálfsmynd rekstur, en það er óendanlega. Og brjóta R getur gert það, vegna þess að það lazily metur, eins og í hér að ofan. Ef við höfum 1 og 2 og 3, getum við bara krappi af öllu restina af henni. Það mun ekki vinna fyrir mínus eða plús, en það mun vinna fyrir þetta ristli sjálfsmynd rekstur á listanum. Svo hvernig við notum nánast að ef við hafa óendanlega langan lista yfir hluti? Jæja, Haskell veitir a einhver fjöldi af functions-- og líta meira inn þetta í eigin time-- þitt eins taka sem segir, OK, við erum að búa til þessa óendanlega lista, en við erum bara að fara að taka nokkrar Fjöldi það Og í þessu case-- við munum sjá þetta síðar í tromma vél okkar code-- GM er bara einhvers konar alheims breytu fyrir fjölda skrefa í raðgreininum. Á rúlla í vélum I sýndi þér, það er yfirleitt 16, en ég hef innleitt það með 32. Það skiptir ekki máli. Haskell er líka hreint, svo það hefur sterka truflanir vélritun sem Connor kennd við. Svo aðgerðir eru stærðfræði í sense-- þeir eru meira stærðfræði sem þeir eru tryggð að ekki komast í eða breyta neina breyta eða framkvæma inntak eða framleiðsla. Svo ef þú ert með virka, það er deterministic. Það mun alltaf koma aftur það sama gildi í the ástand af the program eða staðið í stað. Það eru, að sjálfsögðu, monadic undantekningar að þessu, en það er utan gildissviðs okkar. CONNOR HARRIS: Já. Hvað þýðir þetta, þó, er það eru nokkrar mikilvægar [inaudible] Afleiðingar af þessu. Einn er að það er mjög auðvelt að parallelize HASKELL forrit. Vegna þess að ef þú ert með, segja, fall af sem þarf að ganga á milljón gildum, ef þú veist að fallið muni alltaf gefa út sama gildi ef þú beitir á ákveðnum value-- ef þú ert [inaudible] f 1, f 2, þá f 3 eða whatnot-- f 1 er ekki að fara að skrifa út skrá eða gera eitthvað sem mun breyta gildi F2. Þú getur bara skipt upp þessa aðgerð til a milljón mismunandi vélar eða milljón mismunandi þræði eða hvað, fá allar viðbrögð til baka, fá allar aftur gildi aftur, og þá er það það. Svo mjög auðvelt að parallelize hluti. The hæðir er að inntak og framleiðsla sérstaklega passa inn í kerfi af gerð í mjög flókinn hátt. Við munum ekki fara inn það núna, en ég hvetjum þig til að líta á nokkur úrræði á netinu ef þú vilt fræðast um það. STEPHEN KREWSON: So slá classes-- og þetta was-- flokkar gerðir voru fundin til að leysa vandamál af rekstraraðila villu. Þannig að við vildum að hafa jafnrétti milli mismunandi gerðir af hlutum. Auðvitað gætum við hugsa of-- jafnrétti tölugildi gerðir er mjög auðvelt að hugsa um, en hvað um jafnrétti listum? Hvað um jafnrétti tré fótur gögn uppbygging? Og þetta er allt hægt í Haskell vegna tegund flokkum. Svo ef þú skilgreinir ákveðna gögn type-- og hér, eru þessar tónlistar pitches. Við erum loksins að fá að einhverju tölvu tónlist. Þannig að við höfum C, C skarpur, og svo framvegis og svo framvegis. Þeir tilheyra fullt af mismunandi flokkum tegund. EQ-- þeir tilheyra EQ gerð bekknum. Það þýðir að þeir styðja kynjanna starfsemi. Svo er hægt að meta hvort eitt röð tónlistar frumform er það sama og a ólíkur einn. Þeir tilheyra ordinal bekknum. Það þýðir að það er óákveðinn greinir í ensku panta þessum. D kemur eftir C. C skarpur kemur eftir C eins og heilbrigður. Þeir tilheyra flokki sýna, sem þýðir að þeir geta að prenta á vélinni eða flugstöðinni. Þeir tilheyra flokki talin, sem þýðir að jafnvel þótt þetta eru stafir, þeir hafa undirliggjandi tölustafir framsetning byrja á 0 og fara burt í gegnum þó margir hlutir eru hér, 20 eða svo, eða 30 eða 40, kannski. CONNOR HARRIS: Þegar við höfum gögn tegund sem derives-- með viðkomandi leitarorði "deriving--" viss tegund bekknum, það þýðir að þýðandinn mun reyna að reisa eitthvað sjálfkrafa. Svo kannski þú þarft að skilgreina gæði öðruvísi. Þú þarft að skilgreina C Sharp sem jafngilt D íbúð, til dæmis. Með þessari framkvæmd hér, ég held ekki C skarpur og D íbúð verður jafn, því þýðandinn mun sjálfkrafa segja hvert annað mögulegt gildi er frábrugðið öllum öðrum. Svo það er hægt að hunsa sjálfgefnu gerð af þessum tegundum af flokkum. Aftur, líta á tilvísun ef þú vilt fræðast um það. STEPHEN KREWSON: Og hér, í raun, þetta verður vera gagnlegt fyrir þegar við kóða síðar. Við sjáum nokkrar af infix rekstraraðila fyrir raðbundna samsetningu, samsíða samsetningu, og svo fram þessar plús-merkjum og samasemmerki umkringdur tvípunkti. Það þýðir að við getum spilað þetta öðruvísi tónlistar frumform einn á eftir öðrum. Það er myndaröð samsetningu. Eða við getum spilað þá í samsíða á sama tíma. Svo ég geti haft tónlistar gildi, og þá jafngildir þetta og tvípunkta, infix samhliða samsetningu rekstraraðila, og spila þá eins konar strengur. Og við erum að fara að nota þetta þegar við sameina tromma hluti okkar með okkar lítið Frere Jacques lag til að spila þessa tvo röð af tónlistar gildi á sama tíma. Currying is-- Curry var síðast Heiti Haskell Curry, sem sem Haskell myndin er nefnd eftir. Og þetta gerir okkur a gott glæsileika þegar við erum skrifa allt þetta öðruvísi aðgerðir eða síur sem við erum að fara að vera í nágrenninu á listum okkar. Fall af tveimur arguments-- f x og y-- er hægt að tákna sem f x beitt y. Svo það er hlutverk eitt rifrildi sem skilar Annað hlutverk eitt rifrildi. Þannig að þetta þýðir að við getum landakort a Fallið f x yfir lista yfir Y er. CONNOR HARRIS: Langar þig að gefa dæmi um þetta? STEPHEN KREWSON: Já. Ég er með dæmi hérna frá sumir af þeim hlutum sem við munum skrifa. Svo endurtaka 2-- vel, endurtaka mun taka eitt gildi, sem er hversu margir sinnum til að endurtaka eitthvað, og þá mun það taka value-- yfirleitt lista eða eitthvað. Svo hér erum við kortlagning endurtaka 2 yfir annan lista. Þannig að ef við landakort endurtaka 2, ef við endurtaka 2 gilda að fyrsta þáttur þessarar list-- og þetta eru listar yfir tónlistar phrases-- mun framleiða tvo "þú sleeping--" svo sefur þú, sefur þú. Svo nú höfum við tvö. En endurtaka þarf tvo rök, heldur vegna þess að við erum currying og þá kortlagning, við getum tákna endurtaka 2 eins og verið flutt aftur sem fall af einn argument-- bara afrit tvisvar. Og þá erum við að beita því til hvers þáttur af þessum lista yfir setningar. Og concat er Haskell aðgerð fyrir fletja lista. Vegna endurtaka 2 mun framleiða lista af listum. Og þetta er þetta millistig form hér. Og svo þá getum við concat eða fletja það út tvisvar. CONNOR HARRIS: A einfaldari Dæmi um currying, ef þú vilt like-- ímyndað f er bara margföldun fall sem tekur tvo rök og skilar vöru sína. Svo ef þú ert með F 4 5, það er 20. En þú getur hugsað þetta eins og also-- þú hefur fallið f 4 sem tekur að rífast og skilar fjórum sinnum á þessu argument-- bara hluta forrit sem bara eitt rifrildi 4. Og ef þú fæða f 4 5, sem mun gefa þér 20. Og það er einfaldara dæmi um currying. Það er yfirleitt einn af kennslubók sjálfur. STEPHEN KREWSON: Lambda orðasambönd eða nafnlaus virka eru annað Haskell aðalsmerki. Þannig að ef við þurfum að svipa upp a lítið virka líf endurtaka, en segja að það er ekki í staðall bókasafn, við getum notað setningafræði svipaðar og eftirfarandi. Og við munum gola yfir þessu. Eitt sem þú munt sjá mikið af í tromma vél er að við erum að hringja til eitthvað sem kallast sía, sem eins og áður, er kortlagning falls yfir listann, en það er kortleggja Boolean virka. Þannig að við höfum hér dæmi á annars nafnlaust skilgreint Boolean virka sem bara tekur nokkrar gildi. Þetta er ekki strangt nafnlaus aðgerð. En það er að skilgreina með sem setningafræði fyrir brevity, og þetta bara tekur x mát n- CONNOR HARRIS: Já. Svo er f fall af tvær breytur n og p sem skilar fall sem er sjálft fall af einni rök, þ.e. x. STEPHEN KREWSON: I framangreindra infix rekstraraðila. Hvað eru infix stjórnendur? Jæja, eru infix rekstraraðilum venjulegan hátt við tákna starfsemi, segja, í mathematics-- 2 plús 2 í stað þess að rekstraraðila auk og svo tvær röksemdir 2 og 2. CONNOR HARRIS: Það heitir snúa pólska merki, sem er hugtak Ég efast um að allir af þú vildi vita. STEPHEN KREWSON: Hægri. Reverse pólska eða forskeytið tákn. En Haskell ákvað að nota infix rekstraraðila. Svo þetta eru nokkrar af Sérsniðna þau sem eru skilgreind fyrir Euterpea DSCL í Haskell. Þannig að þetta var myndaröð samsetningu. Þetta var samsetningu samhliða, og þetta var stýft samsetningu samhliða. Og við þurfum að með tromma vél okkar, vegna þess að við munum nota síðustu rekstraraðila í því litla tuple þar að spila tromma vél með með okkar Frere Jacques lag. Og tromma vél okkar er að fara að vera óendanlega. Það spilar bara eilífu. En Frere Jacques lag er ekki. Það er ekki það lengi. Það er aðeins nokkrum börum. Þannig að við þurfum að hætta að tromma vél sem leið og styttri söngleik gildi kemur til enda. Og það infixed rekstraraðila er frábær gagnlegt við það. Og infix ritháttur eins þetta er góður af gaman, því segja að þú ert með virka eins vitna, sem gefur heiltölu deild x við eitthvað else-- Afsakið, það ætti að vera og b. Þú gætir skrifað það sem vitna um b. Þannig að ef þú put-- þátturinn er annað dæmi um þetta. x þáttur í sumum lista, ef þú setur það í Backticks, getur þú notað það. Jafnvel þó að það er ekki tákn eins plús eða mínus eða stundum, þú getur notað nafn a virka svona í Backticks eins infix rekstraraðila, sem er laglegur kaldur. CONNOR HARRIS: Aftur, þetta er allt bara nokkur dæmi um setningarleg sykur, virkilega. Það hefur ekki áhrif á kjarna tungumálsins. STEPHEN KREWSON: Þannig að við sjáum hér fyrir síðustu setningu af okkar Frere Jacques lag, Ég spilaði nokkur litla hljóma eða þriðju nota samhliða samsetningu rekstraraðila. Þetta er önnur leið til að segja sumir af því sem við höfum bara verið að segja. Svo þú getur kortinu aðgerðir einn rifrildi um listum. CONNOR HARRIS: Aftur, tilvísanir fyrir Haskell-- inngangs kennslubókum verður þetta allt í það. STEPHEN KREWSON: Svo hér er nokkuð lykill lína í skrefi sequencer við munum taka a líta á að nota listi skilningur. Og við sjáum hér er þessi þáttur í föstu stjórnandi í bak gæsalappa. Svo ef x er stak í listanum yfir x er, þá munum við kalla upp Perc aðgerðir. Svo er Perc bara slagverk virka. Það tekur nokkurn gildi p sem er hluti af afmarkast mengi allra mismunandi hljóð slagverk sem við sáum í fyrri mynd, og þá gefur það að lengd fjórðungur huga. Else gefur það það QNR og QNR er bara fjórðungur huga hvíld. Svo er þetta að byggja upp eitthvað gott. Við erum með lista yfir þætti og við munum lykkja yfir einhverjum lista frá einum til max gildi sequencer skref okkar. Og þegar við erum á tilteknu i í að listi yfir einn til max gildi, ef að ég er meðlimur í þessu sett til í þessari aðgerð, Jæja, þá erum snúa það í slagverk huga. Annars spila við bara hvíld, sem er að segja, við erum enn bara þegja. Og við sjáum hér að í þessi listi skilningur setningafræði, x er fjölmennasta með þetta Listinn smíðuð einn við alþjóðlegt stærð á raðgreininum. CONNOR HARRIS: Já. The undirstöðu setningafræði fyrir Listi comprehensions er krappi, gildi þátttöku sumir breytur, Bar, möguleg gildi á breytunum sjálfir, lokað krappi. Og ef þú hefur gert sett byggir tákn í hvers konar stærðfræði bekknum, þú gætir hafa sett 2n svo að n sé í eða n er í z. Líkur thing-- þetta merki er ætlað að vera tvírætt þeirrar stærðfræði tákn. STEPHEN KREWSON: Og þú getur gilda margar predicates og margar síur í lista skilningur, sem er alveg ágætur. Algebraic types-- við mun ekki sitja lengi lengi hér. Það er ekki góð hugmynd í Haskell eða gott, augljóst hugmynd um hvernig á að taka, segja, sjálfgefið breytu að aðgerð eða eitthvað. Í Python, þetta er alveg auðvelt. Þú getur bara sagt með jafn á Yfirlýsing um virka, sjálfgefið gildi í Málið enginn er til staðar. Í Haskell, þú gætir kannski nota kannski kannski slá, sem tekur annað hvort ekkert eða gildi tegund bara. Þannig að við nýta þetta í tromma vél til að leyfa okkur að gefa valfrjálst bindi breytur til hvert tromma hlutum. Svo sem gefur okkur leið með EQ eða bindi á tilteknu rás. CONNOR HARRIS: In önnur Haskell dæmi, Þú gætir séð kannski notað fyrir aðgerðir sem gætu mistakast. Þetta er algeng einn. STEPHEN KREWSON: Og þú getur framboð einhvers konar villuboð sem sjálfgefið. Og það er sérstaklega vel þegar þú ert að gera I / O í Haskell. Það getur verið bragðarefur. CONNOR HARRIS: Eða fyrir a Svipað dæmi, held falls sem felur skiptingu á breytu sem er gæti verið 0. Og virka gæti aftur kannski hvað. Þannig að ef það er engin deild um 0, það mun skila bara hvað sem er. Og ef það er deild með 0, það mun skila ekkert sem leið til að merkja villuna. Vegna Ein afleiðing Mjög ströng vélritun HASKELL er er að það er engin real-- undantekningar eru óþægilega, í grundvallaratriðum, villa meðhöndlun er óþægilega. Og þetta er eitt mjög algeng leið til að gera það. STEPHEN KREWSON: Svo nú fáum við til annars hugur-beygja hlutur um Haskell, sem er mynstur samsvörun og virka skilgreiningar. Ég sýndi þér í síðustu mynd sem Yfirlýsing um skrefa röð virka, sem tók kannski gildi, þá int, þá listi yfir ints, þá skilar röð gildi tónlist þar merktar bæði vellinum og bindi. Svo þessir þrír rök geta verið mynstur samsvörun á eftirfarandi hátt. Og við viljum alltaf að vera viss um að gera grunntilvikið eða loka mál fyrst. Og þessar undirstrikar getur bara túlka að meina hvaða gildi sem er þarna. Svo ef við fáum símtal til að stíga röð með nokkur gildi, einhver önnur gildi, og þá tóm lista, það sem við viljum til að fara aftur er bara þögn, hvíld 0. Og í stað þess að vera tómur listi eða 0, það er hvíld 0, vegna þess að við erum takast á við tónlist tegund, og tóm lista af tónlist tegund er bara restin af neitun tíma. Það er engin tónlist. Og þá sjáum við að ef við fáum skref Sequence með v fyrir rifrildi bindi, P að þverra hljóðfæri rök, og þá listi yfir X er. Þá erum við að gera smá dót. Einkum, eiga við þessi listi skilningur, og við að framkvæma sumir aðgerðir á kannski gildi að snúa það inn í a tölugildi svo sem það gæti verið svo telja upp og nota til að velja verkfæri. Aftur, þetta er svolítið bita vísvitandi inconcise bara til að sýna allar undarlegt hluti þú getur gert í Haskell sem þig taka a líta á það á þínum eigin tíma. Allt í lagi. Þannig að við erum loksins að fá að gera það sem við sett fram til að gera, sem er að gera sumir tölva tónlist. Þannig að við erum að fara að reyna að gera Frere Jacques lag. Þannig að það eru hversu margir setningar Frere Jacques? Four. Great. Og hvað er gott er að þeir eru allir endurtaka sama magn af tíma, sem er tveggja. Þannig að við höfum fjórar setningar hver endurtekið tvisvar sinnum. Og einkum þeir í umferð. Og það eru margir, margar leiðir til að framkvæma umferð sem gæti verið gaman að gera. Ég hef gert það í nokkuð einföld leið hér, sem er bara að construct-- línuna aðgerð tekur lista af gildum tónlist og verður það í myndaröð samsetningu með því að beita þeirri myndaröð samsetningu rekstraraðila. Og þá tefja ég mismunandi hlutum með því að gera þá að byrja með hvíld. Svo ég byrja með restina af tvær aðgerðir, og þá leif af fjórum ráðstafanir, og þá leif af sex ráðstafanir, og þá umferð virkar, eins og við vitum öll þetta lag. Við sjáum tvær textaskýringar eða breytingar á tónlistinni gildi sem er að finna í þessari raðbundna fyrirkomulag þætti tónlistar. Við höfum bæta við rúmmál. Þetta er fall til að setja inn athugasemdir tónlist með ákveðnu magni. Þetta er gott dæmi af MIDI merki gangi frá 0 til 127, sjö bita af upplýsingar sem hægt er að fara. Og then-- við sáum það mjög í stuttu máli, en almenn MIDI listi yfir allar mismunandi hljóðfæri. Og það er ekki allt fullt af þeim. Ef þú notar stafræna hljóð vinnustöð, eins Ableton Live eða Pro Tools, það er ótrúlega fjölbreyttari af hljóðgerfla og VST hljóðfæri. En MIDI staðall aðeins hefur nokkra, eða nokkrir tugi. Og sumir þeirra eru fyndin. Ég hélt að það væri gaman ef við spiluðum tækið MIDI hljóðfæri þyrla, og þá Næsta leið gegnum umferð, við gerðum púða Synth, og þá á þetta corny leiða ferningur bylgja Synth, og þá rödd ooze, sem eru svolítið óljós um slæma MIDI minn hljóðgervill, en þeir OK. Og þá sjáum við þetta skulum og í setningafræði frá Haskell, og þá erum við að spila Allir þessir hlutir saman með samhliða samsetningu rekstraraðila. Og við gætum líklega með eitthvað af þessu. Hér er kóðinn. Og þú getur séð í C, þar myndi vera mikið af hálsi hreinsa og setja borðið póstnúmer fyrir þér gæti gert tónlist svona. Eða önnur forritun tungumál, þú vilt líklega hafa samskipti við einhvers konar bókasafn eða API og setja allt upp, og þá þú vilt að hreinsa upp. En hér í Haskell er, held ég, einu sinni þú fá the hanga af það, ótrúlega læsileg og mjög svipmikill. Svo er það framkvæmd af Frere Jacques. Allt í lagi. Nú viljum við bæta slagverk, og þetta er svolítið Messier. Svo skulum taka a líta á stóð. Svo er stóra hugmynd að gera fullt af listum eða hluta. Á þeim rúlla í vél, þar voru að jafnaði um kannski átta 10 hrynjandi eða slagverk hlutum. Og þá nota fullt af tækni. Og við höfum talað um these-- með brjóta, síur, lambda föll, varpað yfir lista til að búa til gildi í sumum bilinu 1 til R, R er 16, eða 32 skref í raðgreininum. Og þá ef það er gildi í þeim lista eins og við erum að keyra í gegnum sequencer, keyra í gegnum það aftur og yfir, snýr það á að huga, og að sýni fær gang. Hér eru allir mismunandi undarlegt leiðir Ég kom upp með að búa til minnismiða. Prófaðu það á eigin hálf summan þinn. Það verður hljóð kaldur. Tími leyfir, við munum fara í gegnum þetta. En núna, held ég við ættum að kynningu sem við höfum. Við skulum vona að þetta fer allt í lagi. Svo er þetta GHCI. Og við munum hlaða skrá Ég kalla song.lhs, sem er skrá sem ég sýndi bara þig. OK, frábært. Eins Connor sagði áðan, það saman, það gerðina köflóttur, svo ég get andað mikið auðveldara. Það er ekki að fara að blása upp á mér. Ég vissi langar að sýna þér eitthvað gagnlegt. Þú getur séð að mát hlaðinn heitir 50. Þú getur flett því upp á. Og þetta er svo gaman um doing-- kannski hvað þú ert að gera í Haskell er ekki kallað hugbúnaðarþróun, en þú getur gert mikið af gaman efni á eigin spýtur. Og workflow er mjög gott eins og samanborið við fullt af öðrum tungumálum, vegna þess að þú getur séð í mjög læsileg leið hvað er að gerast. Þannig að við sjáum að við höfum allar þessar setningar, sem eru listar af tónlist pitches, og þá erum við byggja þetta upp í eitthvað stærra, sem er tónlist lag. Það er söngleikur eining. Og þá getum við spilað þetta allt með virka kallast spila tónlist. Þú getur séð að hérna. Sem er bara að spila. Ég ætti say-- ég ekki tala um þetta dollaramerki sem er alls staðar. Dollaramerki er annar infix rekstraraðila. En það hefur lægsta forgang hvaða rekstraraðila, sem í raun þýðir að allt á vinstri á dollaramerki og rétt dollaramerki, við erum að fara að fá metið áður en það. Svo það er tegund af eins og annað leið að bæta sviga. CONNOR HARRIS: Það er í grundvallaratriðum virka samsetningu. Og tryggir að þú have-- ekki hvort þú þarft aðgerðir annaðhvort hlið eða infix rekstraraðila á hvorri hlið, þeir vilja ekki tengja yfir það og gefa þér óvæntar niðurstöður. STEPHEN KREWSON: Svo við can-- nota það, getum við kalla. Fyrst munum við spila það án trommur. Það er þyrla, MIDI þyrla. [TÓNLIST spila] Það er ferningur bylgja. Röddin ooze. Og þú getur raunverulega fara villt með þetta. Ég tók nokkuð einföld, vegna þess að ég vissi að ég ætti ekki að bíta af en ég gæti tyggja. Bara að halda það frekar einfalt að sýna helstu hugmyndir. En þá var ég eins, höfum við fékk að bæta nokkrum trommur til þessa. Bara vegna þess að þetta er svolítið óskiljanlegt, og ég vissi ekki notað Heiti tromma hlutum, Ég kortlagði them-- því þeir eru hluti af því sem talin voru upp bekknum, Ég varpað þeim að ints. Einn er eins og bassa tromma. Zero er eins og heilbrigður. Seven er a hár hattur. Og niður í hér þar sem aðgerðir fá smá meira af handahófi, þetta eru eins og Conga trommur. Svo ef þú heldur about-- kannski skemmtileg leið til að innleiða tromma vél er að nota mjög skipulegan mynstur á bassa tromma þinn. Svo til dæmis, á að sía yfir Listinn með öllu sem gefur aftur 1 þegar það er tekið mát 04. Þannig að ég fá 1, 5, 9, 13, 17-- þannig að þetta er fyrsta slá af hvert mál. Og þá er þetta sama hlutur færst í tveimur þrepum. Svo er það offbeat. Þannig að þetta væri eitthvað eins og a hár hattur. Og svo aftur, hérna, það er lítið af handahófi, vegna þess að við erum að gera Conga trommur. Og ég hef nokkrar maracas hristur hérna líka. Svo ég gæti hringt leika tromma vél, en það myndi fara á eilífu, og það gæti byrjað grabbing upp allt minni í tölvunni minni. Svo ég ætla að kalla þessa aðgerð spila tónlist, sem eins og við munum sjá, nota stýft samhliða samsetningu til að spila smá Frere Jacques lag okkar með þessa skrýtnu tromma vél. Svo skulum taka a líta. Og vinsamlegast ekki bæta á minn fyrirkomulag á öllum tromma hlutum. Ekki sérgrein mín, en ég hafði mikið gaman að gera það. [TÓNLIST spila] Svo auðvitað, þetta er allt svolítið ekki eins gaman ef við getum ekki breytt henni að skora svo kannski það mætti ​​túlka af manna flytjandi. Svo ég mun ekki keyra það hér. Ég hef nú þegar skilað skrár. Þú getur séð að það er punktur LilyPond file-- og þetta verður Segue mína yfir að Connor-- og punktur MIDI skrá, og punktur PDF skrá, sem er hvað LilyPond mun að lokum mynda. En þetta eru þeir forskriftir, og ég ætla bara keyra þá með hjálp valkosti þeirra. Ef þú færð þetta upp og keyra með Euterpea, getur þú búið til MIDI skrá. Og síðan úr MIDI skrá með þessum MIDI 2LY áætlun, getur þú búið til Lily Pond skrá, og þá hægt að búa til PDF skora. Og við ættum að kíkja á þetta. Svo Connor mun líklega sýna þér hvernig á að annotate þetta betur, en þetta er Frere Jacques eins mynda af mér í Euterpea. Það er bara í C. Ég ætti að hafa mynstrağur út hvað hakk það er í raun í. En það er leiðslan fyrir hvernig þú gerir það með því. Við skulum tala meira um LilyPond. CONNOR HARRIS: OK skulum sjá. Vissir þú nefnir læra HASKELL? STEPHEN KREWSON: Ó já. Skoðaðu læra HASKELL. Það er í auðlindir. Það er hvernig ég byrjaði læra, og það er frábært. Ekki heimsk nám. CONNOR HARRIS: Svo það er á netinu. Svo strákur sem heitir [inaudible] learnyouahaskell.com, engin bil. Málfræði er veikur. STEPHEN KREWSON: Það er myndskreytt líka. CONNOR HARRIS: Svo er það LilyPond? Það er declarative forritun tungumál fyrir tónlist typesetting. Svo declarative-- þú getur hugsa um hlutina eins og HTML, þar sem þú ert ekki saying-- HTML ekki segja hvernig vafrar ættu Gjaldið síður skref fyrir skref. Það er bara að segja þetta er rituð lýsing af því sem þú vilt að síðu til að líta út. Og þá er það líka program sem safnar þetta tungumál, eða það að lesa í sínum og þá í raun gerir typesetting fyrir þig, og það spits út þessar dásamlegt að leita PDF skora. Þú getur líka fengið PNG snið eða hvað. Góð leið til að hugsa þessa er á hliðstæðan hátt er að LaTeX er tegund af eins LillyPond, en fyrir bara venjulegt typesetting. Þannig að í stað of-- það er ekki WYSIWYG, Það sem þú sérð Er það sem þú færð, eins og, segja Lokaþáttur er, eða Sibelius, eða Microsoft Word, þar sem þú getur slegið í rauntíma og drög hlutir í rauntíma og sjá breytingar samstundis. Það er texti byggt. Þú þarft að safna saman þínum skorar með sér forrit og fá út PDFs síðar. Þetta er aðeins minna þægilegt fyrir notkun ef þú ert reyna að skrifa beint í a skora og þú ert reyna að semja á tölvunni. En það eru fullt af kostum fyrir það. Einn, það er litið mikið betur, vegna LillyPond getur raunverulega taka tíma til að gera án ákvarðanir almennilega, ólíkt Sibelius eða Finale, sem hafa að gera málamiðlun reiknirit þannig að þeir geta sýna hlutir í rauntíma. Svo hvers vegna er LilyPond-- tölvugrafík er erfitt. Ef þú ert að gera eitthvað með tónlist og þú vilt að skrifa út skora, þú vilt ekki að skrifa út öllu á þig byrja með hvernig á að teikna starfsfólk og hvernig á að teikna minnisblöð. Það er mjög erfitt. Það hefur verið gert áður. Þú ert fínn. Ef þú vilt nota Finale eða Sibelius, skrá snið fyrir þeim hlutum eru mjög flókið, og þú getur ekki raunverulega nota þá kerfisbundið. Þú getur opnað upp Sibelius með Finale og fara í File Export sem PDF sjálfur, en þú getur í raun ekki kalla það úr handriti. LillyPond, getur þú hringt frá þeim skriftum. Þú getur auðveldlega árétta LillyPond með LaTeX. Ég mun ekki hafa þessi mikinn tíma til að fara í þessa tækni núna, en þeir eru. Ef þú vilt líta í LillyPond bók, það er forrit sem kemur með LillyPond útbreiðsla, og það er fyrir iterating LillyPond brot í LaTeX ef þú vilt gera eitthvað eins og stór tónlistarfræðum skjal með dæmum, til dæmis. Og það er gott kunnátta fyrir líf ef þú ert að gera neitt með tónlist, ekki bara CS50. Ég hef notað LillyPond fyrir alla af samsetningu verkefnum mínum þar sem ég var í grundvallaratriðum a háttsettur í menntaskóla. Svo hér eru nokkrar einfaldar dæmi. Þetta er í grundvallaratriðum fulltrúi af því hversu erfitt að flestir myndu andlit það þeir voru að reyna að nota LilyPond til einfaldra verkefna. Þetta fyrsta er upphaf til Chorale forleikur eftir Bach. Þetta botn einn er útdráttur frá einum af verkum mínum, og það er bara þarna til að sýna þér hluti eins og [inaudible] setja margar línur í sama starfsfólk hvernig Lyric undersetting virkar. Lyric undirlög eru hlutur sem er mjög auðvelt að nota LilyPond fyrir Kórsöngur. Og svo þá er það meira flóknar dæmi hér. Allt eru þetta gert í LilyPond og þeir eru gerlegt. Þetta fyrsta útdráttur er frá [Inaudible] af [inaudible]. Og þetta [inaudible] frá a stykki fyrir sóló bassa flautu eftir [inaudible] sem er longtime-- sem var longtime félagi af tónlist deild hér, held ég. Ég er ekki viss hvar hann er farinn burt til. En hann var ráðgjafi við Harvard Tónskáld Association í langan tíma. Wonderful maður. Og hann skrifar smá tónlist sem hefur mjög flókið ritháttur sem LillyPond getur þó séð mjög vel. Svo bara til að gefa þér tilfinningu um hvað getu Þessi hlutur er are-- svo að innri af LillyPond eru mjög flókið. Og þú getur notað það fyrir fyrir löngu, þar á meðal fyrir suma nokkuð flókið það, án þess að þurfa að vita mikið um þau. En Grunnhugmyndin er að á lægsta stigi, atóm LillyPonds eru athugasemdir. Tónarnir innihalda samhengi kallast raddir. Þannig að rödd samhengi grundvallaratriðum jafngildir að einni línu af polyphony. Og þá samhengi getur verið sem hierarchically í hærri stigi þær sem tákna starfsfólk á skora eða stærri hópa eins og píanó starfsfólk eða kór starfsfólk, og þá loksins allt skora samhengi. Og þú getur raunverulega fela margar skora í bók. Og sérhver samhengi hefur Fjöldi meðfylgjandi Leturgrafari. Ef þú horfir í gegnum Innihald samhengi og prenta ákveðna tákn eða ákveðinni tegund af táknum sem þörf krefur. Svo að allar raddir samhengi, það er [inaudible] athugasemdir Engraver sem er í grundvallaratriðum a virka eða hlutur sem skrifar út allar huga höfuð á réttum hlutum á síðuna. Þá er það skarð Engraver, sem skrifar út clefts á starfsfólki. Þá er það Metronome merkja Engraver sem skrifar út Metronome merki í einkunn. Og allt þetta passar nokkuð vel inn í stigveldi. Og það er mjög, mjög, mjög customizable, sem þú þarft ef þú vilt fá svoleiðis. Svo allir samhengi hafa fullt af mismunandi eiginleikum að þú getur breytt um allt frá bil til ýmissa font val til stærðum af hlutum. Ef þú vilt til að gera enn flóknari hluti, það er embed forskriftarþarfir tungumál. Þeir nota kerfi, sem er mállýska af Lisp. Þetta hefur sennilega þýtt neitt að þér. En í grundvallaratriðum, a kerfi öðrum virknihóp forritunarmál, meira eða minna. STEPHEN KREWSON: The jafntefli í. CONNOR HARRIS: Já. Það er góð jafntefli í, býst ég við. Og það er notað sem kennslutæki tungumál, reyndar, niður Mass Ave. Í MIT. Og það er mjög vel fyrir LillyPond fyrir ýmsum tæknilegum ástæðum. Og svo ef þú vilt gera einfalt klip háðir conditionals, fyrir example-- það er víst högum skora sem er mætt, gera breytingar á skipulag eða whatnot-- þá þessir aðstaða þar. Þeir eru flókið. Svo hér er frekar einfalt kóða sýni. Það er fimm línur. Í grundvallaratriðum, ég skilgreina tvær starfsfólk. Það er í 3/4. Fyrsti starfsfólk hefur fest taktur merkja, en það er í raun að fara að fara á alla skora, vegna taktur skytta eru á að skora stig. The Metronome árangur Engraver er fest að skora samhengi. Það eru mismunandi lyklar, vegna [inaudible] Engraver er fest á starfsfólk. Þú getur raunverulega gert er. Úrtakið sem ég skrifaði er reyndar í C-dúr, en það er bara til að sýna að þú getur haft mismunandi lyklar í mismunandi starfsfólk. Og helstu setningafræði er þú skrifar athugið nöfn með E, F, G, hvað sem er. Ef þú vilt gera accidentals, þú viðskeyti er eða ES. Þetta er frá hollenska musicological samninga. Og til að gera áttund hleypur, þú þarft að nota þetta hökum, komma eða úrfellingarmerki. Hlutfallsleg þýðir bara hvað þú ert með í huga, það verður sjálfkrafa plaec í áttund næst fyrri einn. Og ef þú vilt að stökkva meira en a fifth-- segja fimmta eða more-- þá verður þú að nota [inaudible]. En annars, þú þarft ekki að tilgreina áttund á hverjum einasta huga. Og miðað C, prime, og C, sem þú tilgreinir bara middle C og stöð C, sérstaklega fyrstu skýringum. Síðan sem þú hefur þessar starfsfólk sem skipuleggja þessir tveir raddir eða sýni af tónlist, og þú hefur einkunnina. Og það lítur út eins og þetta. Ef þú vilt að taka tíma til að eintak sem sýnishorn af LillyPond kóðann á fyrri renna niður hér, og þú getur skrifað það fyrir LillyPond sjálfur. Ég veit að við höfum fengið eitthvað sem lítur mikið eins og þetta. Svo er það önnur tækni heitir Music XML haldið algjörlega mismunandi fólk. XML er rituð Data structure-- I ætti ekki að segja gögn structure-- segja samlíking kort konar. Og það er hannað til að halda Innbyrðis gögn mjög vel. HTML, til dæmis, er tegund af XML. Og þú getur sagt XML því þeir höfðu allir horn sviga og horn krappi Slash merki að sýna gögn sviðum. Ég hef ekki kóða dæmi frá Music XML. Þú getur fundið það sjálfur. Í grundvallaratriðum, ástæðan sem þú vilt kannski til að nota XML sem millistigsins er fyrst af öllu, það er að skiptast snið fyrir grundvallaratriðum every-- ég ætti ekki að segja hvert, en fullt af mismunandi skora rithöfundar. Svo ef þú skrifar í Tónlist XML, ekki aðeins hægt að LillyPond lesa það með hjálp þessarar Auxilary forrit sem heitir Tónlist XML til að LY, en einnig Finale getur lesið það, Sibelius getur lesið það. Það fer eftir því hvernig innri hlut þinn stigveldi virkar fyrir hönd tónlist, það gæti verið auðveldara að skrifa út á tónlist XML en að LillyPond og bara að treysta á Music XML að LY að gera viðskipti. Ég held ekki [inaudible] hefur tónlist XML. STEPHEN KREWSON: Það skiptir ekki. Einhver er að vinna á það, þó. CONNOR HARRIS: OK. Euterpea er ekki með Music XML framleiðsla virka enn. Ef þú vilt lokaverkefni hugmynd, kannski komast í samband við krakkar sem Stephen veit, og þeir gætu notað hjálp. STEPHEN KREWSON: Ég myndi elska það. CONNOR HARRIS: Einnig, í grundvallaratriðum, fresti forritunarmál sem er þess virði salt þess þegar hefur XML bókasafn, svo þú getur innvortis umbreyta öllum af tónlist í einhverjum hlut að XML bókasafn getur skrifað út sem myndi þurfa færri breytingar á innri uppbygging fyrir hvað tónlist hluti sem þú langar að skrifa en skrifa það beint í LillyPond vildi. Þá bara prenta það út með XML með XML bókasöfnum í þínu tungumáli, sem tryggir að það er setningafræðilega rétt og allt, og þá umbreyta það til LillyPond. Svo tækni sem þú might vilja til að líta inn í ef þú ert að gera eitthvað svona. [Inaudible], annar auxilarry tækni. Þetta er í grundvallaratriðum Tech Works eða Tech Studio fyrir LillyPond. Svo það býður hjálp með setningafræði, með sniðmát fyrir ýmsar algengar samsetningar hljóðfæri. Það gerir hættu skjár útsýni svo þú getur haft númerið þitt í einum glugga og PDF í öðrum glugga og smelltu á stöðum í PDF til að hoppa til viðeigandi blettur í kóðann þinn. Þetta er gagnlegt ef þú ert í raun skrifa LillyPond skrár sjálfur en ef þú ert að búa til þá kerfisbundið. En aftur, það er eitthvað gagnlegt að hafa. Great. Annar resources-- ég bara fara í gegnum þetta mjög fljótt. LillyPond manuals-- LillyPond hefur framúrskarandi skjöl á heimasíðu sinni. Þeir hafa eitthvert. Þeir hafa setningafræði tilvísun. Þeir hafa hundruð snifsi fyrir ýmsum litlum hlutum Yo gæti þurft að gera til að sýna fram á ýmsar getu. Ef þú vilt nota forskriftarþarfir tungumál eða gera ítarlegri customizations, þá er það innri tilvísun á þessari vefslóð. Ef þú vilt nota Tónlist XML, það er sem URL, musicxml.com/tutorial. Og svo ef þú þarft að læra kerfi vegna þess að þú vilt í raun að nota forskriftarþarfir aðstöðu í LillyPond, þá er það [inaudible] kallaði Structured túlkun tölvuforrit, sem er ekki aðeins í annað Mesta CS Kennslubók alltaf written-- finna mér eftir ef þú vilt vita það sem ég held að mesta einn is-- en það er líka mjög gott kynning á tungumáli rétta. Þú þarft ekki meira en Fyrstu köflum. Og það er það. Einhverjar spurningar? STUDENT: Hvar get ég sótt mynda Frere þinn Jacques svo ég geti sett það á minn iPod? STEPHEN KREWSON: Jæja, getur þú skrifað út að sumir WAV skrá í Euterpea. Og þú hefur númerið. Það er á GitHub. Búðu til þína eigin tilbrigði af Frere Jacques eftir CS50 býflugnabú huga. Það væri frábært. CONNOR HARRIS: Einhver annar? STEPHEN KREWSON: Við þurfum betri bassa tromma líka. Það er mjög slæmt. STUDENT: Euterpea hefur ekki aðeins samsetningu hlið, en signal-- STEPHEN KREWSON: Já. Í raun, vinna ég gerði í Euterpea þegar ég tók this-- það er útskrifast námskeið í Yale sem notar it-- var á traustum myndun. Svo er það mjög ágætur leið með örvum og sumir af the merki sem við sáum af semja saman merki aðgerðir. Einkum bassa fyrir flest af þeim er bara einföld sínus bylgja. En ef þú byrjar að skrifa þá í undarlegt forritanlegur vegu, þú getur fengið brjálaður hljóð áhrif, eins undarlegt steypist. Þú getur búið til mjög sendinn hljómar með fullt af mótum. Ég gerði verkefni um korn myndun, sem er einhvers staðar á milli FM og sýnatöku. Þú tekur mjög lítill, litlu sýni, og þá sameina þá með einhverskonar mótara og byggja upp auðæfi hljóð. Við gerðum einnig líkamlega líkan, svo reyna að hugsa um eðlisfræði og psychoacoustics af einhverju eins trompet, og hugsa um hvernig hljóðið er skoppar af bjalla lúðra og hljómburð herbergið og líkan að með helstu oscillators. CONNOR HARRIS: Takk kærlega. Takk fyrir komuna. Og ég er alltaf tilbúin til að taka spurningum frá email-- connorharris@college.harvard.edu. STEPHEN KREWSON: Já. stephen.krewson@yale.edu. Cool.