CONNOR HARRIS: Hi. Mimi nina Connor Harris. Mimi nina CS50 CA katika Harvard. STEPHEN KREWSON: Mimi ni Stephen Krewson. Mimi nina TF kwa CS50 katika Yale. CONNOR HARRIS: Na sisi ni kwenda kuzungumza kuhusu baadhi teknolojia ambayo waweza wanataka kutumia kama wewe ni nia katika kufanya mradi wa mwisho au kweli kitu chochote na muziki. Tunakwenda kulenga kwanza a lugha ya programu inayoitwa Haskell. Ni kazi lugha, hivyo dhana ni tofauti sana na C au PHP au lugha nyingine muhimu kwamba umetumia tayari, na hasa juu ya maktaba yaliyoandikwa katika Haskell aitwaye Euterpea, ambayo inaweza kusaidia watu na kuandika muziki functionally, kimsingi. Na Stephen kutembea wewe kupitia mfano mkubwa wa jambo hilo. Baada ya hayo, mimi itabidi kuanzisha wewe kitu kinachoitwa LillyPond, ambayo ni teknolojia kwa typesetting muziki. Ni aina ya kama mpira kwa muziki kama mmoja wenu wametumia mpira kwa ajili ya madarasa math au madarasa mengine P seti au una nini. Na hivyo mimi nitakupa, tena, baadhi ya mifano rahisi ya kwamba na kumweka katika ujumla mwelekeo wa rasilimali baadhi nzuri. STEPHEN KREWSON: Katika Aidha, sisi walidhani itakuwa baridi kuanzisha kidogo ya mwanga kuelekea bomba kati Euterpea-yanayotokana MIDI files katika LillyPond, hivyo sisi kutoa baadhi maelekezo ya maandiko kufanya hivyo ni kwamba zinazotolewa na LillyPond tu kushika ni wazi chanzo na kupata bomba kwenda. CONNOR HARRIS: Tena, sisi lazima kusisitiza, teknolojia hizi mbili, huna matumizi yao kwa pamoja. Wao siyo iliyoundwa kufanya kazi pamoja, ingawa wao kufanya vizuri mno. STEPHEN KREWSON: Haki. Na bure kabisa. CONNOR HARRIS: Kwa hiyo Shukrani, kusoma tu kwamba. STEPHEN KREWSON: Kihalali alibainisha. Shukrani kwa wale folks. Hii mimi itabidi msiweke juu tu kwa muda. Mchakato wa ufungaji ni kidogo suala gumu. Tumesoma yangu juu ya GitHub uweze tuangalie. Tu email yangu kama una maswali yoyote. Lakini tutaweza kukimbia chini ya dhana hii kwamba hii ni kazi kwa kila mtu. CONNOR HARRIS: Na kama huwezi kupata LillyPond kufanya kazi, hakuna mpango mkubwa. Hakuna mkusanyiko kuishi kwamba watashiriki, angalau juu ya mwisho wangu. STEPHEN KREWSON: Haskell na LillyPond lazima wote wana installers. Euterpea ni kupakuliwa kama mfuko, kadhalika na kadhalika. Hivyo sisi ni kuzungumza juu ya kompyuta muziki. Na hii ni sana maoni 50,000-mguu. Kuna wachache masuala mbalimbali ya yake. Na hii ni mbaya na ni kwenda kuficha baadhi ya kina. Lakini tunaweza kufikiria kitu kama algorithmic utungaji, kutumia algorithms, kutumia kanuni, ili kuzalisha baadhi ya aina of-- labda binafsi sawa mlolongo wa maelezo, au labda maelezo chini ya baadhi kikwazo. Na kisha wale inaweza kuwa kazi au kufasiriwa na vyombo Analog au kitu kama hicho. Lakini utungaji alikuwa amefanya algorithmically. Lakini bila shaka, labda eneo la muziki kompyuta au digital muziki tuko zaidi ya ukoo na ni digital awali sauti au sampuli digital na kurekodi digital. Mengi ya vyombo digital ni kufanyika kwa njia ya sampuli digital. Kwa kweli, tutaweza kuwa kwa kutumia moja ya wale walio katika mfumo wa sauti wa herufi maktaba baadaye. Lakini pia kuna kitu kinachoitwa awali digital waliotoka ya '70s marehemu na ndani ya' 80s na Yamaha na John Chowning katika Stanford kufanya FM awali au Mzunguko wa mawimbi ya awali, ambapo alikuwa carrier ishara na modulating ishara wote katika wigo wa sauti. Lakini nini sisi ni kulenga leo ni kitu kinachoitwa MIDI, na bila shaka, algorithmic insha. Sisi siyo kwenda kufanya vyombo, lakini sisi ni badala kwenda kufanya baadhi ya muziki, na kisha kwamba kupata kutafsiriwa na baadhi ya vyombo kwamba ni conformant kwa mkuu MIDI standard. Basi nini MIDI? Mimi si kwenda kupata pia kina ndani yake, lakini MIDI ni kuhamisha data itifaki. Ni aina ya mwongozo hela makampuni mbalimbali na viwanda kwa ajili ya maandalizi sauti au patches. Hivyo tutaweza kuona kwamba kuna kiwango MIDI kwa wote percussion tofauti sauti na MIDI mapendekezo kwa kila aina tofauti ya synth au aina mbalimbali za chombo zote makundi katika orchestra, wanasema. Wewe pengine ukoo na 0 kupitia 127 MIDI ujumbe. Ishara MIDI ni kawaida hata kidogo kuonyesha kama ni data au hali pakiti, na kisha kuna bits saba ya ishara. Na hawa wanaweza kudhibiti kila kitu kutoka kiasi kwa hatua au shinikizo juu ya msingi hasa kama wewe ni kufanya kwa MIDI mtawala kama vile, bila shaka, maelezo. Na bila shaka, MIDI ina imekuwa muhimu sana, kwa sababu ni njia ya waya pamoja au mnyororo daisy rundo la MIDI vifaa vifaa. Nina saba au nane nyuma katika nyumba yangu. Anapata kweli ngumu, lakini ni kweli nguvu. Na kwa kweli ni ya zamani. Ni kutokana na '80s mapema, na ni kweli ni nzuri na ndogo. CONNOR HARRIS: Naam. Wote classic Nintendo video michezo ingekuwa pengine na MIDI files kwa muziki, kwa mfano. STEPHEN KREWSON: Hapa ni Mfano wa ujumla MIDI, kuonyesha MIDI kama aina ya ujumla itifaki. Na nadhani tunaweza kufikiria Tofauti kati ya vipimo kwamba kuwe na kitu kama hizi chombo sauti na halisi utambuzi wa vyombo wale sauti katika herufi sauti au MIDI fulani synthesizer kama kuwa tofauti kati ya labda typeface-- inayosema, kwa ujumla, hii ni mpango wa njia hii hasa kwa kuwakilisha characters-- na herufi fulani ambayo ina ukubwa maalum na timbre, na kuna utambuzi wa the-- CONNOR HARRIS: Labda bora kulinganisha ingekuwa kuwa kiwango cha Unicode says-- anatoa idadi ya kila tabia, na kwa kweli kila lugha duniani, au seti kubwa ya maandiko ya lugha duniani, na kisha wale ni kulipwa katika kitu graphical na fedha mbalimbali font. Na ni wazi, unaweza kufikiria MIDI kama Unicode wa sauti. Na ni tu orodha of-- mkondo kubwa ya matukio na vyombo na mengineyo, na unaweza kuwa na tofauti mpango, kama typeface, atatoa kwamba katika kitu ambacho ni kusikika. STEPHEN KREWSON: Hivyo kwa nini Haskell? Haskell ni programu ya kazi lugha, juu sana, tofauti sana na C, tofauti sana na PHP. Na tunakwenda kuona kwamba kuna urahisi wa kazi utungaji katika Haskell kwamba itaruhusu sisi breeze kupitia kutunga au kuandika juu, transcribing, kitu kama Frere Jacques, wimbo huu rahisi kwamba ina mengi ya sehemu ndani yake kwamba ni binafsi sawa au kurudia. Hivyo hii itakuwa baadhi ya motisha kwa nini sisi ni kutumia Haskell, ambapo kazi ni raia wa daraja la kwanza. Na nilitaka kupanua hii kidogo. Ni kidogo rahisi notate Frere Jacques katika Haskell. Lakini nini kama sisi alitaka kuongeza ngoma sehemu yake? Nini kama sisi alitaka kujaribu kufanya kitu kama Roland 808 au 909 ngoma mashine ambapo una kuhusu 16 hatua tofauti? Kwa kawaida hawa ni mawazo ya maelezo kama 16. Na unaweza kudhibiti kimataifa tempo, na unaweza kubaini nje rundo la sehemu mbalimbali percussion ya bass ngoma, kupiga makofi, mitego mbalimbali, wazi na kufungwa kofia juu juu ya aina hii ya njia, na kisha unaweza EQ au kurekebisha kiasi yao. Na tutaweza kuona namna nzuri katika Haskell ya anayewakilisha hatua hii sequencer na kila mambo mbalimbali baridi katika Haskell tunaweza kufanya na kuzalisha orodha na kuchuja juu ya orodha, ramani juu ya orodha, ramani kazi juu ya orodha. Na kuomba msamaha haraka. Hii ni haraka haraka sana na overly haraka mchoro ya baadhi ya mambo ya Haskell na Euterpea, ambayo ni uwanja maalum iliyoingia lugha iliyoandikwa katika Haskell kwa ajili ya aina ya muziki. Hivyo tafadhali kuangalia nje kificho online. Moto hadi GHCI, ambayo ni Glasgow Haskell mkusanyaji Mkalimani. Na mimi itakuwa kufanya baadhi haya katika kidogo hivyo unaweza kuona ni jinsi gani inafanyika. Na hii utapata mzigo na the-- syntax ni koloni na kisha amri. Unaweza mzigo katika mafaili. Unaweza kutumia browse juu ya mafaili wale kuona kazi zote kwamba zipo katika moduli fulani. Na kisha kama tutaweza kuona, aina na aina madarasa ni muhimu sana katika Haskell, hivyo unaweza daima check-- hasa kama wewe ni kufanya kazi katika mpya DSCL kama hii, ni nini aina ya muziki? Najua kuhusu njia numeric aina wanafanya kazi katika Haskell, lakini sijui mengi kuhusu muziki. Lakini unaweza kuchunguza njia wao ni inavyoelezwa na kutumia t au aina amri hii na kisha wito hasa kazi au data kitu. CONNOR HARRIS: Naam. Kama walidhani C na Clang ilikuwa hardass kuhusu aina, wewe huna wazo kuhusu Haskell. Jambo zuri kuhusu Haskell ni kwamba kama unaweza kupata kanuni yako kukusanya na kama hundi Haskell aina, pengine ni haki, kwa sababu mfumo wa aina ni hivyo kali. STEPHEN KREWSON: Naam. Hivyo nataka tu kwenda through-- na tena, hii si kufanya hivyo justice-- wachache sifa za Haskell kwamba, angalau kwa creators-- wake na iliundwa mwishoni mwa mwezi 1980 na kundi la watu, kamati ya juu 20 people-- walidhani ni muhimu. Na jambo la kwanza waliotajwa katika karatasi kwamba ilivyoelezwa mwanzo wa Haskell zaidi ya kwanza miaka 20 au hivyo ni kwamba ilikuwa wavivu. Hivyo hii ina maana gani? Vizuri, ina maana wakati sisi kuwa na aina fulani wa kujieleza, tunahitaji kufanya tathmini hiyo. Na Haskell gani hii katika wito na haja ya njia au njia zisizo kali. Hiyo ni, kama sisi kuwa na rundo la vipengele wa kujieleza wetu, sisi kujaribu kuchelewesha tathmini ya subcomponents wale mpaka kabisa mwisho minute-- kwamba ni mpaka sisi kweli haja yao. Hivyo means-- hii ambayo ni kweli baridi, hasa kama sisi ni kufikiri kuhusu uchukuaji ya kimuziki hatua sequencer. Wewe kugeuka juu, na kuanza mbio hatua sequence-- kama wewe milele kazi na ngoma machine-- na huenda tu milele. Hivyo itakuwa kweli nzuri kama sisi inaweza kuiga kwamba katika Haskell. Na tunaweza kufanya hivyo na usio maadili, hasa orodha usio. Ni rahisi sana na aina orodha usio katika Haskell. Unaweza tu kutumia syntax chini hapa, ambapo unaweza kuona ya 1 mpaka 3, kuondoa 3 1 nukta nukta, na kuwa ni orodha usio ya idadi ya asili zote kupanua juu ya mbali kama unaweza kufikiria. Mimi nataka kuanzisha dhana ya folds mara moja. Na tena, lengo ya semina hii si kujifunza kuhusu folds katika Haskell au zaidi ili kazi. Lakini mimi nataka tu kuanzisha kwa kutoa hisia sahihi ya jinsi weird Haskell ni na jinsi nguvu ni. Na hasa, tunakwenda be-- wakati sisi kufanya sehemu mbalimbali yetu ngoma, tunakwenda kuwa kufanyia orodha ya idadi, kuzikunja kwenye kila mmoja. Na kwa kufanya hivyo, tutaweza kuwa kwa kutumia ramani na folds. Kuna associative haki mara, ambayo ni haki hii moja here-- 1 bala wingi, 2 bala wingi, 3 bala 0. Na syntax kwa mara, wewe kutoa mara thamani ya msingi na kisha operation-- katika kesi hii, kuongeza au kutoa. Nimekuwa umeonyesha hali zote mbili. Na kisha kuna accumulator kwamba hujilimbikiza zaidi ya orodha nzima, kutumia kwamba pamoja na alama au bala, na kisha kukusanya yake. Hivyo hii itakuwa the-- kama ilikuwa inaitwa kwa mara r pamoja ya 0, kwa kuanzia na 0, tunataka kisha kuhitimisha zote idadi katika orodha hiyo. Na hiyo ndiyo orodha 1-3. CONNOR HARRIS: Kwa hiyo kuiweka nyingine njia, mara r inachukua hoja tatu. Kuna kazi ambayo yenyewe inachukua hoja mbili, kisha kuna thamani starter, na kuna orodha ya maadili. Na nini kufanya ni kuchukua thamani starter, thamani kwanza, kuziweka katika kazi. Nini kupata nje, kuchukua kwamba, malisho kwamba ndani ya kazi ya thamani pili, nini kupata nje, kuchukua kwamba, kulisha kwamba katika kazi ya thamani ya tatu. Na kisha kama wewe kwenda chini orodha hii yote kwa njia hii, wewe ni kwenda kupata hatimaye baadhi thamani umoja hiyo ni ya aina moja ya yale ulianza nje na na ya aina moja kama mambo katika orodha, na kisha hiyo ni matokeo kurudi kwa mara R. STEPHEN KREWSON: Kwa hiyo hasa, hizi ni kazi kubwa ili, kwa sababu wao ni kuchukua mwingine kazi kama moja ya hoja. CONNOR HARRIS: Naam. Ikiwa umetumia fulani mengine languages-- Najua R, [inaudible] Lugha ina hii, iitwayo Kupunguza. Unaweza kuwa na kazi sawa kwa lugha nyingine, tu kuitwa mambo mbalimbali. STEPHEN KREWSON: Na nini ni nzuri kuhusu mara R katika mfano huu ni kwamba mara R wanaweza kufanya kazi na orodha kubwa. Hivyo katika chini, hii P5 ni kuzalisha maelezo kwamba ni akageuka juu katika hatua sequencer kwa baadhi ya ngoma sehemu, tano ngoma sehemu, na labda ni conga ngoma au kitu. Na hii ni kwa makusudi njia butu ya kuandika hii, lakini ni furaha, kwa sababu inaonyesha mengi mambo kuhusu Haskell na Euterpea. Hivyo mara R ya matumbo hii colon-- ni tu operator kwamba inasukuma mambo pamoja juu ya list-- alitoa wito kwa mikono mitupu orodha, ambayo ni tu mabano tupu. Na mimi nina wito kwamba katika orodha hii kubwa. Hii ni kweli orodha mbili aliongeza pamoja chini hapa. Orodha 1 comma 6 nukta nukta ni 1, 6, 11, 16. Hivyo Haskell-- katika tu wahusika chache, inaweza kuzalisha nzima mlolongo wa idadi ambazo ni namba tano mbali kukaza juu ya ndani ya infinity. Na mimi prepend kwa kuwa huu mfupi list-- kidogo 3, 8, 21-- tu kuonyesha jinsi gani unaweza concatenate orodha. Na kisha nimekuwa folded juu yenyewe. Na hii huishia tu kuwa aina ya utambulisho operesheni, lakini ni kubwa. Na mara R anaweza kufanya hivyo, kwa sababu lazily kutathmini, kama ilivyo katika hapo juu. Kama tuna 1 na 2 na 3, tunaweza tu mabano mbali ya mapumziko nzima ya hiyo. Hiyo haiwezi kufanya kazi kwa bala au pamoja, lakini itafanya kazi kwa matumbo hii utambulisho operesheni katika orodha. Hivyo ni jinsi gani sisi kivitendo kutumia kwamba kama sisi kuwa na orodha kubwa kwa muda mrefu wa mambo? Naam, Haskell hutoa mengi ya functions-- na kuangalia zaidi katika hizi katika time-- yako mwenyewe kama vile kuchukua inayosema, sawa, sisi ni kuzalisha orodha hii usio na mipaka, lakini sisi ni kwenda tu kuchukua baadhi idadi yake Na katika kesi hii tutaweza kuona baadaye katika hii ngoma mashine yetu code-- GM ni baadhi tu ya aina ya kimataifa kutofautiana kwa idadi ya hatua katika sequencer. Juu ya roll-katika mashine mimi ilionyesha wewe, hiyo ni kawaida 16, lakini mimi kutekelezwa kwa 32. Ni kweli haina jambo. Haskell pia ni safi, hivyo ina nguvu tuli kuandika kwamba Connor alluded. Hivyo kazi ni hisabati katika sense-- wao ni zaidi ya hisabati kuwa wao ni uhakika kwa kushindwa kupata au kubadilisha aina yoyote ya kutofautiana au kufanya pembejeo au pato. Hivyo kama una kazi, ni deterministic. Itakuwa daima kurudi sawa thamani katika jimbo la mpango au kubakia sawa. Kuna, bila shaka, isipokuwa monadic na hayo, lakini hiyo ni zaidi ya upeo wetu. CONNOR HARRIS: Naam. Hii ina maana gani, ingawa, ni pale ni wachache muhimu [inaudible] matokeo ya hii. Moja ni kwamba ni rahisi sana parallelize mipango Haskell. Kwa sababu kama una, kusema, kazi ya kwamba mahitaji ya kazi juu ya milioni maadili, ikiwa unajua kwamba kazi daima kutoa nje thamani sawa kama kulisha katika value-- fulani kama wewe ni [inaudible] f la 1, f ya 2, kisha f ya 3 au whatnot-- f ya 1 si kwenda kuandika kwa faili au kufanya kitu ambayo kubadilisha thamani ya F2. Unaweza tu wameigawanya kazi hii kwa mashine mbalimbali milioni au milioni nyuzi mbalimbali au chochote, kupata majibu yote nyuma, kupata maadili yote ya kurudi nyuma, na kisha hiyo ni yake. Hivyo rahisi sana parallelize mambo. Upande mwingine ni kwamba pembejeo na pato hasa walionao katika mfumo wa aina kwa njia ngumu sana. Sisi si kwenda katika kwamba hivi sasa, lakini mimi moyo tuangalie baadhi ya rasilimali online kama unataka kujifunza juu ya hilo. STEPHEN KREWSON: Kwa hiyo aina classes-- na hii madarasa was-- ya aina walikuwa zuliwa kutatua tatizo la operator overloading. Hivyo sisi alitaka kuwa na usawa kati ya aina tofauti ya mambo. Bila shaka, tunaweza kufikiri of-- usawa kati ya aina numeric Ni rahisi sana kufikiri juu, lakini vipi kuhusu usawa kati ya orodha? Je kuhusu usawa kati ya mti mguu data miundo? Na hii yote ni iwezekanavyo katika Haskell kwa sababu ya madarasa aina. Hivyo kama wewe kufafanua data fulani type-- na hapa, haya ni nyanja ya muziki. Sisi ni hatimaye kupata kwa baadhi ya muziki kompyuta. Hivyo tuna C, C mkali, na kadhalika na kadhalika. Wao ni wa kundi la madaraja mbalimbali ya aina. EQ-- wao ni watu wa aina EQ darasani. Hiyo ina maana wanaunga mkono shughuli usawa. Hivyo unaweza kutathmini kama moja mlolongo wa primitives kimuziki ni sawa na moja tofauti. Wao ni ya darasa makutano. Hiyo ina maana kuna kuagiza kwa haya. D inakuja baada C. C mkali inakuja baada ya C vilevile. Wao ni ya darasa kuonyesha, ambayo ina maana wanaweza kuchapishwa kwa console au wastaafu. Wao ni wa tabaka la enumerated, ambayo ina maana kwamba hata kama hizi ni wahusika, wana numeric msingi uwakilishi kuanzia saa 0 na kwenda mbali kupitia hata hivyo mambo mengi ni hapa, 20 au hivyo, au 30 au 40, labda. CONNOR HARRIS: Na wakati tuna aina data kwamba derives-- na kwamba keyword "deriving--" fulani aina darasani, maana yake ni kwamba compiler watajaribu kujenga kitu moja kwa moja. Hivyo labda utasikia wanataka kufafanua ubora tofauti. Utasikia wanataka kufafanua C mkali kama sawa na D gorofa, kwa mfano. Pamoja na ujenzi huu hapa, sidhani kama C mkali na D gorofa itakuwa sawa, kwa sababu compiler moja kwa moja kusema kila thamani mbalimbali iwezekanavyo ni tofauti na kila mmoja. Hivyo inawezekana kupuuza utekelezaji chaguo-msingi ya aina hii ya madarasa. Tena, angalia rejea kama unataka kujifunza juu ya hilo. STEPHEN KREWSON: Na hapa, kwa kweli, hii itabidi kuwa na manufaa kwa wakati sisi kanuni baadaye. Tunaona baadhi ya kampuni za infix kwa mtiririko utungaji, sambamba utungaji, na hivyo nje, pluses hizi na dalili sawa kuzungukwa na colons. Hiyo ina maana tunaweza kucheza hizi mbalimbali primitives kimuziki moja baada ya nyingine. Hiyo ni utaratibu wa kudumu insha. Au tunaweza kucheza nao katika sambamba kwa wakati mmoja. Hivyo siwezi kuwa na thamani muziki, na kisha hii ni sawa na na colons, infix utungaji sambamba operator, na kucheza nao kama aina ya gumzo. Na sisi ni kwenda kutumia wakati huu sisi kuchanganya ngoma yetu sehemu na yetu kidogo Frere Jacques wimbo kucheza Utaratibu hizi mbili za maadili kimuziki kwa wakati mmoja. Currying is-- Curry kwa mara ya mwisho jina la Haskell Curry, ambaye Haskell picha ni jina lake baada. Na hii inaruhusu sisi nzuri elegance wakati tuko kuandika haya yote tofauti kazi au filters kwamba tuko kwenda kuwa ramani juu ya orodha yetu. Kazi ya mbili arguments-- f ya x na y-- inaweza kuwakilishwa kama f ya x kutumika kwa y. Hivyo ni kazi ya Hoja moja kwamba anarudi mwingine kazi ya hoja moja. Hivyo hii ina maana tunaweza ramani kazi f ya x zaidi ya orodha ya y ya. CONNOR HARRIS: Wanataka kutoa mfano wa hili? STEPHEN KREWSON: Naam. Nina mfano hapa hapa kutoka baadhi ya mambo sisi kuandika. Hivyo kuiga 2-- vizuri, kuiga itachukua thamani moja, ambayo ni wangapi mara kwa kuiga kitu, na kisha itachukua value-- Kwa kawaida orodha au kitu. Hivyo hapa, tuko ramani kuiga 2 juu ya orodha ya mwingine. Hivyo kama sisi map kuiga 2, kama sisi kuiga 2 kuomba kwa kipengele kwanza ya orodha hii na hizi ni orodha ya phrases-- kimuziki kuzalisha mbili za "wewe sleeping--" hivyo je umelala, je umelala. Hivyo basi, tuna mbili. Lakini kuiga inachukua mbili hoja, lakini kwa sababu tuko currying na kisha ramani, tunaweza kuwakilisha kuiga 2 kama baada ya kurudi kama kazi ya argument-- moja tu kujinakilisha mara mbili. Na kisha sisi ni kutumia kwamba kwa kila kipengele cha orodha hii ya maneno. Na concat ni Haskell operesheni kwa flattening orodha. Kwa sababu kuiga 2 mapenzi kuzalisha orodha ya orodha. Na hii ni aina hii kati hapa. Na hivyo basi tunaweza concat au flatten kwamba nje mara mbili. CONNOR HARRIS: rahisi Mfano wa currying, kama wewe d like-- kufikiria f ni kuzidisha kazi ambayo inachukua mbili hoja na anarudi bidhaa zao. Hivyo kama una f 4 5, ni 20. Lakini unaweza kufikiria hili kama also-- una kazi f 4 kwamba inachukua hoja na kurudi mara nne hii argument-- tu ubaguzi maombi ambayo moja tu hoja 4. Na kama wewe kulisha f ya 4 5, kwamba nitakupa 20. Na hiyo ndiyo rahisi Mfano wa currying. Ni kawaida miongoni mwa wenye vitabu vya kiada. STEPHEN KREWSON: Lambda Maneno au kazi bila majina ni mwingine fadhila mahususi Haskell. Hivyo kama sisi haja ya mjeledi juu kidogo kazi maisha kuiga, lakini kusema ni si katika maktaba standard, tunaweza kutumia syntax sawa na yafuatayo. Na tutaweza breeze juu ya hili. Jambo moja utaona mengi ya katika ngoma mashine ni sisi ni kufanya wito kwa kitu kinachoitwa kuchuja, ambayo kama kabla, ni ramani ya kazi juu ya orodha, lakini ni ramani ya kazi Boolean. Hivyo tuna hapa mfano ya anonymously inavyoelezwa kazi Boolean kwamba tu inachukua maadili wanandoa. Hii si madhubuti kusema kazi bila majina. Lakini ni kufafanua kwa kwamba syntax kwa ufupi, na hii inachukua x moduli tu n-- CONNOR HARRIS: Naam. Hivyo f ni kazi ya hoja mbili n na p kwamba anarudi kazi ambayo ni yenyewe kazi ya hoja moja, yaani x. STEPHEN KREWSON: Mimi zilizotajwa infix waendeshaji. Ni infix waendeshaji nini? Naam, infix waendeshaji ni njia ya kawaida sisi kuwakilisha shughuli, kusema, katika mathematics-- 2 pamoja na 2 badala ya alama pamoja na kisha hoja mbili 2 na 2. CONNOR HARRIS: Ni wito kubadili polish nukuu, ambayo ni mrefu mimi shaka yoyote ya mngemjua. STEPHEN KREWSON: Haki. Kubadili polish au kiambishi awali nukuu. Lakini Haskell aliamua kutumia infix waendeshaji. Basi hizi ni baadhi ya ndio desturi kwamba yanatokana kwa Euterpea DSCL katika Haskell. Hivyo hii ilikuwa mlolongo wa insha. Hii ilikuwa sambamba utungaji, na hii ilikuwa truncating sambamba insha. Na tutaweza haja kwamba kwa ngoma mashine yetu, kwa sababu tutaweza kutumia mwisho operator katika kwamba tuple kidogo huko kucheza ngoma mashine pamoja na yetu Frere Jacques wimbo. Na ngoma mashine yetu ni kwenda kuwa kubwa. Ni tu ina milele. Lakini Frere Jacques wimbo si. Siyo kwamba kwa muda mrefu. Ni tu baa chache. Kwa hiyo, tunahitaji kuacha ngoma mashine kama Mara tu mfupi thamani kimuziki inakuja hadi mwisho. Na kwamba alama infixed ni super kusaidia na kwamba. Na infix nukuu kama hii ni aina ya nzuri, kwa sababu kusema kuwa kazi kama kunukuu, ambayo inatoa mgawanyiko integer ya x kwa kitu else-- pole, kwamba wanapaswa kuwa na b. Unaweza kuandika ni kama kunukuu wa b. Hivyo kama wewe put-- kipengele ni mfano mwingine wa hii. x kipengele katika baadhi ya orodha, kama wewe kuweka hivyo katika Backticks, unaweza kuitumia. Hata kama siyo ishara kama au plus minus au nyakati, unaweza kutumia jina la kazi kama hiyo katika Backticks kama infix operator, ambayo ni pretty cool. CONNOR HARRIS: Tena, hii ni zote sukari tu kisintaksia, kwa kweli. Haiathiri ya msingi ya lugha. STEPHEN KREWSON: Kwa hiyo tunaona hapa kwa mwisho wa maneno yetu Frere Jacques wimbo, Mimi alicheza baadhi chords kidogo au theluthi kutumia utungaji sambamba operator. Hii ni njia nyingine ya kusema baadhi nini tumekuwa tu wamekuwa wakisema. Hivyo unaweza ramani kazi ya moja hoja juu ya orodha. CONNOR HARRIS: Tena, marejeo kwa Haskell-- vitabu vya kiada utangulizi itakuwa na yote haya ndani yake. STEPHEN KREWSON: Hivyo hapa ni pretty mstari muhimu ya hatua sequencer tutaweza kuchukua kuangalia kutumia orodha ufahamu. Na tunaona hapa ni kwamba kipengele katika fasta operator katika quotes nyuma. Hivyo kama x ni kipengele cha orodha ya x, basi tutaweza wito up kazi Perc. Hivyo Perc ni kazi percussion. Inachukua baadhi thamani p hiyo ni sehemu ya imepakana seti ya yote mbalimbali sauti percussion kuwa tuliona katika slide uliopita, na kisha anatoa kwamba muda wa robo kumbuka. Pengine anatoa ni QNR, na QNR ni tu robo kumbuka mapumziko. Hivyo hii ni kujenga kitu kizuri. Tuna orodha ya mambo, na tutaweza kitanzi juu ya baadhi orodha kutoka kwa mmoja kwa thamani max ya hatua yetu sequencer. Na wakati sisi ni saa i hasa katika kwamba orodha ya moja kwa thamani max, kama kwamba i ni mwanachama wa hii seti iliundwa mwaka kazi hii, vizuri, basi sisi kugeuka kuwa ndani ya noti percussion. Vinginevyo, sisi tu kucheza mapumziko, ambayo ni kusema, sisi tu kukaa kimya. Na tunaweza kuona hapa kwamba katika hii orodha ufahamu syntax, x ni wakazi na hii orodha yalijengwa moja kwa ukubwa wa kimataifa wa sequencer. CONNOR HARRIS: Naam. Syntax ya msingi kwa orodha comprehensions ni mabano, thamani kuwashirikisha baadhi ya vigezo, bar, maadili ya uwezekano wa vigezo wenyewe, imefungwa mabano. Na kama umefanya kosa kuweka wajenzi nukuu katika aina yoyote ya darasani hisabati, unaweza kuwa kuweka 2n kama kuwa n ni katika au n ni katika z. Sawa thing-- nukuu hii ni maana ya kuwa suggestive ya nukuu kwamba hisabati. STEPHEN KREWSON: Na unaweza kuomba predicates nyingi na filters nyingi katika orodha ufahamu, ambayo ni nzuri kabisa. Kimahesabu types-- sisi si tuwama kwa muda mrefu hapa. Kuna si wazo nzuri katika Haskell au nzuri, dhahiri wazo ya jinsi ya kuchukua, kusema, chaguo-msingi parameter kwa kazi au kitu. Katika chatu, hii ni rahisi kabisa. Unaweza tu kusema kwa sawa juu ya tamko la kazi, chaguo-msingi thamani katika kesi hakuna ni hutolewa. Katika Haskell, ungeweza labda kutumia labda labda aina, ambayo inachukua ama chochote au thamani ya aina tu. Hivyo sisi kutumia hii katika ngoma mashine kuruhusu sisi kutoa kiasi hiari vigezo kwa kila moja ya sehemu ngoma. Hivyo kwamba inatupa njia ya kuwa na EQ au kiasi kwenye channel fulani. CONNOR HARRIS: Katika mifano mingine Haskell, unaweza kuona labda kutumika kwa kazi ambayo inaweza kushindwa. Hii ni moja ya kawaida. STEPHEN KREWSON: Na unaweza ugavi aina fulani ya ujumbe wa makosa kama default. Na hiyo ndiyo hasa Handy wakati unafanya I / O katika Haskell. Ambayo inaweza kuwa mbinu. CONNOR HARRIS: Au kwa mfano kama hiyo, nadhani ya kazi hiyo inahusisha mgawanyo ya parameter ambayo inaweza kuwa 0. Na kazi ambayo inaweza kurudi labda chochote. Hivyo kama hakuna mgawanyiko na 0, itakuwa kurudi chochote tu. Na kama kuna mgawanyiko na 0, itakuwa kurudi chochote kama njia ya kuonyesha makosa. Kwa sababu matokeo ya moja Haskell ya kali sana kuandika ni kwamba hakuna real-- isipokuwa ni Awkward, kimsingi, kosa utunzaji ni Awkward. Na hii ni moja sana njia ya kawaida ya kufanya hivyo. STEPHEN KREWSON: Hivyo sasa sisi kupata kwa akili-bending mwingine jambo kuhusu Haskell, ambayo ni mfano vinavyolingana na kazi ufafanuzi. Mimi ilionyesha wewe katika slide mwisho tamko la hatua mlolongo kazi, ambayo alichukua labda thamani, kisha int, basi orodha ya ints, kisha anarudi mlolongo wa maadili muziki huko Annotated na wote lami na kiasi. Hivyo wale hoja tatu inaweza kuwa mfano kuendana kwa njia zifuatazo. Na sisi daima wanataka kuwa na uhakika wa kufanya kesi ya msingi au kutoka kesi ya kwanza. Na inasisitiza hizi unaweza tu kutafsiriwa kwa maana thamani yoyote kwamba ni huko. Hivyo kama sisi kupata wito kwa hatua mlolongo pamoja na baadhi ya thamani, baadhi thamani mengine, na kisha orodha tupu, nini tunataka kurudi ni kimya tu, wengine 0. Na badala ya kuwa kuwa orodha tupu au 0, ni raha 0, kwa sababu tuko kushughulika na aina ya muziki, na orodha tupu ya muziki aina ni mapumziko ya muda hakuna. Siyo muziki. Na kisha sisi kuona kama sisi kupata hatua mlolongo kwa v kwa hoja kiasi, p kwa tahadhari chombo hoja, na kisha orodha ya x ya. Kisha sisi kufanya baadhi ya mambo. Hasa, sisi kuomba huu ufahamu orodha, na sisi kufanya baadhi ya kazi tarehe labda thamani kugeuka ndani thamani numeric ili inaweza kisha enumerated na kutumika kuchagua chombo. Tena, hii ni kidogo kidogo kwa makusudi inconcise tu kuonyesha mambo yote weird unaweza kufanya katika Haskell kama wewe kuangalia ni juu ya muda wako mwenyewe. Sawa. Hivyo sisi ni hatimaye kupata kufanya nini sisi kuweka nje kufanya, ambayo ni kufanya baadhi ya muziki kompyuta. Hivyo sisi ni kwenda kujaribu kufanya Frere Jacques wimbo. Hivyo kuna wangapi na maneno katika Frere Jacques? Nne. Kubwa. Na nini ni nzuri ni kwamba wao ni wote mara kwa mara kiasi kama hicho cha nyakati, ambayo ni mbili. Hivyo tuna misemo nne kila alirudia mara mbili. Na hasa, wao uko katika pande zote. Na kuna watu wengi, njia nyingi za kutekeleza pande zote ambayo inaweza kuwa na furaha ya kufanya. Nimekuwa kufanyika katika pretty rahisi njia hapa, ambayo ni tu kwa construct-- mstari kazi inachukua orodha ya maadili muziki na anarudi kwenye mlolongo wa utungaji kwa kutumia kwamba utungaji mtiririko operator. Na kisha mimi kuchelewesha sehemu mbalimbali na kuwafanya kuanza kwa mapumziko. Hivyo mimi kuanza na maeneo mengine ya hatua mbili, na kisha wengine wa hatua nne, na kisha wengine wa sita hatua, na kisha pande zote kazi, kama sisi wote tunajua wimbo huu. Tunaona annotations mbili au marekebisho ya maadili muziki kwamba vipo katika mlolongo huu mpangilio wa mambo muziki. Tuna kuongeza kiasi. Hii ni kazi ya kutolea maelezo muziki kwa kiasi fulani. Huu ni mfano mzuri ya MIDI ishara mbio 0-127, bits saba ya habari kwamba unaweza kufanyika. Na then-- tuliona ni sana kwa ufupi, lakini MIDI ujumla orodha ya vyombo mbalimbali. Na kuna si mengi yote ya yao. Kama matumizi ya digital audio workstation, kama Ableton Live au Pro Vyombo vya, kuna mbalimbali incredibly pana ya synthesizers na vyombo VST. Lakini kiwango cha MIDI tu ina chache, au baadhi ya kadhaa. Na baadhi yao ni funny. Mimi walidhani itakuwa furaha kama sisi alicheza chombo chombo MIDI helikopta, na kisha njia ya pili kwa njia pande zote, tulivyofanya pedi synth, na kisha ya hii corny kuongoza mraba wimbi synth, na kisha sauti ooze, ambayo ni kidogo indistinct juu ya MIDI yangu mbaya synthesizer, lakini wao Sawa. Na kisha tunaona let hii na katika syntax kutoka Haskell, na kisha sisi ni kucheza sehemu hizi zote pamoja na sambamba utungaji operator. Na tunaweza pengine kuonyesha baadhi ya haya. Hapa ni kanuni. Na unaweza kuona katika C, kutakuwepo na mengi ya koo clearing na mazingira meza kificho kabla inaweza kufanya muziki kama hii. Au programu nyingine yoyote lugha, wewe d pengine na kuingiliana na baadhi ya aina ya maktaba au API na kuweka kila kitu juu, na kisha wewe d na kuyasafisha. Lakini hapa katika Haskell ni, nadhani, kwa mara nyingine wewe kupata hutegemea yake, incredibly someka na expressive sana. Kwa hiyo, kuna utekelezaji ya Frere Jacques. Sawa. Sasa tunataka kuongeza Percussion, na hii ni kidogo messier. Basi hebu tuangalie slides. Hivyo wazo kubwa ni kufanya rundo la orodha au sehemu. Juu ya roll-katika mashine hizo, kuna walikuwa kawaida kuhusu labda nane 10 dansi au percussion sehemu. Na kisha kutumia kundi la mbinu. Na tumekuwa aliyesema kuhusu these-- kutumia mikunjo, filters, kazi lambda, mapped juu ya orodha ya kuzalisha maadili katika baadhi mbalimbali 1 kwa r, r ni 16, au hatua 32 katika sequencer. Na kisha kama kuna thamani katika orodha hiyo kama sisi ni mbio kupitia sequencer, mbio kwa njia hiyo tena na zaidi, ni zamu kumbuka kwamba, na kwamba sampuli anapata yalisababisha. Hapa ni njia zote weird tofauti Mimi kuja na kuzalisha maelezo. Jaribu juu ya nusu yako mwenyewe jibu. Kutakuwa na sauti ya baridi. Muda kuruhusu, tutaweza kwenda kwa njia hii. Lakini kwa sasa hivi, mimi nadhani tunapaswa demo kile tulichonacho. Hebu matumaini hili linakwenda sawa. Hivyo hii ni GHCI. Na tutaweza mzigo faili Nina aitwaye song.lhs, ambayo ni faili Mimi tu ilionyesha wewe. OK, kubwa. Kama Connor alisema mapema, ni ulioandaliwa, ni aina kuchunguzwa, hivyo siwezi kupumua rahisi sana. Ni si kwenda kulipua juu yangu. Sikuwa nataka kuonyesha kitu muhimu. Unaweza kuona kwamba a moduli kubeba aitwaye 50. Unaweza kuvinjari moduli huo. Na hii ni nzuri kuhusu doing-- labda kile unafanya katika Haskell si aitwaye programu za maendeleo, lakini unaweza kufanya mengi ya furaha mambo juu yako mwenyewe. Na workflow kwa kweli ni nzuri kama ikilinganishwa na mengi ya lugha nyingine, kwa sababu unaweza kuona katika kweli njia someka nini kinaendelea. Hivyo tunaona kwamba tuna maneno haya yote, ambayo ni orodha ya muziki nyanja, na kisha sisi kujenga haya juu katika kitu kubwa, ambayo ni muziki wimbo. Ni kitengo muziki. Na kisha tunaweza kucheza hii yote na kazi kuitwa kucheza muziki. Unaweza kuona kwamba chini hapa. Ambayo ni kucheza tu. Mimi lazima say-- sikuweza kuzungumza kuhusu hii ishara ya dola hiyo ni kila mahali. Dola ishara ni alama nyingine infix. Lakini ina kipaumbele cha chini ya alama yoyote, ambayo kwa ufanisi maana yake ni kwamba kila kitu juu ya upande wa kushoto wa ishara ya dola na haki ya ishara ya dola, tunakwenda kupata tathmini mbele yake. Hivyo ni aina ya kama nyingine njia ya kuongeza mabano. CONNOR HARRIS: Ni kimsingi kazi insha. Na kuhakikisha kwamba huna have-- kama una kazi ama upande au infix waendeshaji kila upande, wao si kujiunga hela yake na kukupa isiyotarajiwa matokeo. STEPHEN KREWSON: Hivyo sisi can-- kutumia hiyo, tunaweza kuwaita. Kwanza, tutaweza kucheza bila ngoma. Hiyo ni helikopta, helikopta MIDI. [Music kucheza] Kuna wimbi mraba. Ooze sauti. Na unaweza kweli kwenda porini na hii. Mimi ilichukua moja pretty rahisi, kwa sababu nilijua haipaswi bite mbali zaidi kuliko mimi naweza kutafuna. Tu kushika ni pretty rahisi kuonyesha mawazo makuu. Lakini basi mimi nilikuwa kama, tumekuwa got kuongeza baadhi ya ngoma kwa hili. Tu kwa sababu hii ni kidogo mshikamano, na mimi si kutumia jina la sehemu ngoma, Mimi mapped them-- kwa sababu wao ni sehemu ya kwamba tabaka la enumerated, Mimi mapped yao kwa ints. Moja ni kama bass ngoma. Sifuri ni kama vile. Saba ni kofia juu. Na chini katika hapa ambapo kazi kupata kidogo zaidi kubahatisha, hizi ni kama ngoma conga. Hivyo kama unadhani about-- labda njia ya kujifurahisha na kutekeleza ngoma mashine ni kutumia utaratibu sana mwelekeo juu ya bass yako ngoma. Hivyo kwa mfano, juu ya kuchuja juu ya orodha kwa kila kitu kwamba anatoa nyuma 1 wakati ni kuchukuliwa moduli 04. Hivyo mimi kupata 1, 5, 9, 13, 17-- hivyo hii ni kuwapiga wa kwanza wa kila hatua. Na kisha hii ni sawa Jambo kubadilishwa juu ya hatua mbili. Hivyo hiyo ni offbeat. Hivyo hii itakuwa kitu kama kofia juu. Na kisha tena, chini hapa, ni kidogo random, kwa sababu sisi ni kufanya ngoma conga. Na mimi na baadhi ya maracas chini hapa, pia. Hivyo mimi naweza kuita ngoma kucheza mashine, lakini itakuwa kwenda juu ya milele, na hivyo ili kuanza kupokonya up kumbukumbu zote katika mfumo wangu. Hivyo mimi itabidi kuwaita kazi hii kucheza muziki, ambayo kama tutaweza kuona, kutumia truncating sambamba utungaji kucheza kidogo Frere Jacques wimbo wetu pamoja na hii ngoma mashine weird. Hivyo hebu tuangalie. Na tafadhali kuboresha yangu mpangilio wa sehemu zote ngoma. Si kitaalam yangu, lakini mimi alikuwa na mengi ya furaha kufanya hivyo. [Music kucheza] Hivyo bila shaka, hii yote ni kidogo si kama furaha kama hatuwezi kubadilisha kwa alama hivyo labda inaweza kutafsiriwa na utendaji wa binadamu. Hivyo mimi si kukimbia hapa. Nimekuwa tayari yanayotokana mafaili. Unaweza kuona kwamba kuna dot LilyPond file-- na hii itakuwa segue yangu juu ya Connor-- na faili nukta MIDI, na nukta PDF file, ambayo ni nini LilyPond hatimaye kuzalisha. Lakini haya ni maandiko yale, na mimi itabidi tu kukimbia nao kwa msaada chaguzi zao. Kama kupata hizi juu na kukimbia na Euterpea, unaweza kuzalisha faili MIDI. Na kisha kutoka faili MIDI na mpango huu MIDI 2LY, unaweza kuzalisha Lily Bwawa faili, na kisha inaweza kuzalisha PDF ya alama. Na tunapaswa tuangalie hii. Hivyo Connor pengine kuonyesha jinsi ya kutolea maelezo haya bora, lakini hii ni Frere Jacques kama yanayotokana na mimi katika Euterpea. Ni tu katika C. Ni lazima kuwa na figured nini hack ni kweli katika. Lakini hiyo ni bomba kwa jinsi ya kufanya hivyo na kwamba. Hebu majadiliano zaidi kuhusu LilyPond. CONNOR HARRIS: OK Hebu angalia. Je, kutaja Jifunze Wewe Haskell? STEPHEN KREWSON: Oh yeah. Angalia Jifunze Wewe Haskell. Ni katika rasilimali. Hayo ni jinsi mimi kuanza kujifunza, na ni kubwa. Si bubu kujifunza. CONNOR HARRIS: Hivyo ni online. Hivyo guy aitwaye [inaudible] learnyouahaskell.com, bila kuacha nafasi. Grammar ni wagonjwa. STEPHEN KREWSON: Ni michoro, pia. CONNOR HARRIS: Kwa hiyo kile ni LilyPond? Ni programu declarative lugha ya muziki typesetting. Hivyo declarative-- unaweza kufikiria mambo kama HTML, ambapo huna saying-- HTML haisemi jinsi browsers mtandao lazima atatoa kurasa hatua kwa hatua. Ni kusema tu hii ni maelezo textual ya nini unataka ukurasa na kuangalia kama. Na kisha pia ni mpango kwamba inaandaa lugha hii, au ni kusoma kwake mwaka na kisha kweli anafanya typesetting kwa ajili yenu, na mtemi hizi ajabu kuangalia PDF alama. Unaweza pia kupata PNG format au chochote. Njia nzuri ya kufikiri haya ni kwa mfano ni kwamba mpira ni aina ya kama LillyPond, lakini kwa kawaida tu typesetting. Hivyo badala of-- siyo WYSIWYG, What You Angalia Ni nini kupata, kama, kusema Finale ni, au Sibelius, au Microsoft Word, ambapo unaweza aina katika muda halisi na rasimu mambo katika muda halisi na kuona mabadiliko mara mmoja. Ni Nakala ya msingi. Una kukusanya yako alama ya kutumia mpango tofauti na kutoka nje PDFs baadaye. Hii ni kidogo kidogo rahisi kwa ajili ya matumizi kama wewe ni kujaribu kuandika moja kwa moja ndani ya alama na uko kujaribu kutunga kwenye kompyuta. Lakini kuna mengi ya faida kwa ajili yake. Moja, haina kuangalia mengi nicer, kwa sababu LillyPond Unaweza kweli kuchukua muda wa kufanya maamuzi mpangilio vizuri, tofauti na Sibelius au Finale, ambazo zina kufanya algorithms kuathirika hivyo waweze kuonyesha mambo katika muda muafaka. Hivyo kwa nini ni LilyPond-- kompyuta graphics ni ngumu. Kama wewe ni kufanya kitu chochote na muziki na unataka kuandika nje alama, wewe hawataki kuandika nje kila kitu na wewe mwenyewe kuanzia na jinsi ya kuteka fimbo na jinsi ya kuteka notepads. Ni vigumu sana. Imekuwa ni kufanyika kabla. Wewe ni faini. Kama unataka kutumia Finale au Sibelius, muundo faili kwa mambo hayo ni ngumu sana, na huwezi kweli matumizi yao programmatically. Unaweza kufungua Sibelius na Finale na kwenda Picha, Export kama PDF mwenyewe, lakini huwezi kweli wito kwamba kutoka script. LillyPond, unaweza kupiga kutoka maandiko hayo. Unaweza kwa urahisi iterate LillyPond na mpira. Mimi si kuwa na muda kwamba sehemu kubwa ya kwenda ndani ya teknolojia hizi sasa hivi, lakini wao kuwepo. Kama unataka kuangalia ndani ya kitabu LillyPond, ni mpango kwamba anakuja na LillyPond yako usambazaji, na ni kwa iterating LillyPond vipande katika mpira kama unataka kufanya kitu kama kubwa musicology hati pamoja na mifano, kwa mfano. Na ni ujuzi mzuri kwa maisha kama wewe ni kufanya kitu chochote na muziki, sio tu CS50. Nimekuwa kutumika LillyPond kwa wote ya miradi yangu utungaji tangu nilipokuwa kimsingi mwandamizi katika shule ya sekondari. Hivyo hapa ni baadhi ya mifano rahisi. Hii ni kimsingi mwakilishi ya kiwango cha ugumu kwamba watu wengi bila uso yake walikuwa wakijaribu kutumia LilyPond kwa ajili ya miradi rahisi. Hii moja ya kwanza ni mwanzo kwa utangulizi chorale na Bach. Hii moja chini ni Excerpt kutoka moja ya kazi yangu mwenyewe, na ni tu pale kuonyesha wewe mambo kama [inaudible] kuweka mistari mingi katika huo wafanyakazi, jinsi lyric undersetting kazi. Underlays Lyric ni jambo hilo ni sana rahisi kutumia LilyPond kwa kwaya. Na hivyo basi kuna baadhi zaidi mifano ngumu hapa. Haya yote ni kufanyika katika LilyPond na wao uko upembuzi yakinifu. Hii excerpt kwanza ni kutoka [Inaudible] na [inaudible]. Na hii [inaudible] kutoka kipande kwa solo bass filimbi na [inaudible], ambao ni longtime-- ambao alikuwa mwanachama wa muda mrefu wa muziki idara hapa, nadhani. Sina hakika ambapo yeye amekwenda mbali na. Lakini alikuwa mshauri wa Harvard Watunzi wa Chama kwa muda mrefu. Mtu wa ajabu. Naye anaandika baadhi muziki ambayo ina sana nukuu ngumu kwamba LillyPond Unaweza hata hivyo kushughulikia vizuri mno. Hivyo tu kukupa hisia ya kile uwezo jambo hili la are-- hivyo internals ya LillyPond ni ngumu sana. Na unaweza kuitumia kwa muda mrefu, ikiwa ni pamoja na kwa baadhi pretty ngumu mambo, bila kweli kuwa na kujua mengi kuhusu wao. Lakini wazo la msingi ni kwamba juu ya kiwango cha chini kabisa, chembe ya LillyPonds ni maelezo. Maelezo vyenye mazingira aitwaye sauti. Hivyo mazingira sauti kimsingi sambamba kwa line moja ya Polyphony. Na kisha mazingira inaweza kuwa zilizomo hierarchically katika zile ngazi ya juu kwamba kuwakilisha fimbo juu ya alama au makundi makubwa kama fimbo piano au kwaya fimbo, na kisha hatimaye nzima alama mazingira. Na unaweza kweli kuhusisha alama nyingi katika kitabu. Na kila mazingira ina idadi ya engravers masharti. Kama ukiangalia kupitia yaliyomo ya mazingira na magazeti alama fulani au darasa, baadhi ya alama kama ni muhimu. Hivyo kwa kila mazingira sauti, kuna [inaudible] maelezo mwenye kuchora kwamba kimsingi ni kazi au kitu kwamba anaandika nje wote kumbuka vichwa juu ya sehemu kulia wa ukurasa. Kisha kuna mwenye kuchora ufa, ambayo anaandika nje ya pango juu ya wafanyakazi. Kisha kuna metronome alama mwenye kuchora kwamba anaandika nje alama metronome katika alama. Watu hawa wote walionao pretty vizuri katika uongozi. Na ni sana, sana, sana customizable, ambayo unahitaji kama unataka kupata mambo kama hayo. Hivyo wote wana mazingira mengi ya sifa mbalimbali ambayo unaweza kurekebisha kwa kila kitu kutoka nafasi ya herufi mbalimbali uteuzi wa ukubwa wa mambo. Kama unataka kufanya hata mambo ngumu zaidi, kuna iliyoingia scripting lugha. Wao kutumia mpango huo, ambao ni lahaja ya LISP. Hizi pengine hawana maana yoyote na wewe. Lakini kimsingi, mpango mwingine kazi lugha ya programu, zaidi au chini. STEPHEN KREWSON: tie-katika. CONNOR HARRIS: Naam. Ni vizuri tie-katika, nadhani. Na ni kutumika kama lugha ya kufundisha, kweli, chini Misa Ave. Katika MIT. Na ni Handy sana kwa LillyPond kwa sababu mbalimbali za kiufundi. Na hivyo kama unataka kufanya rahisi tweaks tegemezi kwa conditionals, kwa example-- kuna baadhi ya masharti ya alama hiyo ni alikutana, kufanya mabadiliko ya mpangilio au whatnot-- kisha vifaa vya wale ni huko. Wao ni ngumu. Hivyo hapa ni pretty rahisi kificho sampuli. Ni mistari mitano. Kimsingi, mimi nina kufafanua fimbo mbili. Ni katika 3/4. Wafanyakazi kwanza ina masharti tempo alama, lakini hiyo ni kweli kwenda kwenda kwenye alama nzima, kwa sababu alama tempo ni juu ya ngazi alama. Mwenye kuchora metronome alama ni masharti ya alama mazingira. Kuna funguo mbalimbali, kwa sababu [inaudible] mwenye kuchora ni masharti fimbo. Unaweza kweli kufanya ni. Sampuli niliandika ni kweli katika C kubwa, lakini ni tu kwa kuonyesha unaweza kuwa funguo tofauti katika fimbo mbalimbali. Na syntax ya msingi ni kuandika kumbuka majina na E, F, G, chochote. Kama unataka kufanya accidentals, wewe Suffix NI au ES. Hii ni kutokana na Uholanzi musicological makongamano. Na kufanya oktavo kiwango kikubwa, una kutumia hizi Jibu alama, comma au apostrophe. Jamaa tu ina maana chochote una kumbuka, itakuwa moja kwa moja plaec katika Octave karibu na mmoja uliopita. Na kama unataka kuruka zaidi ya a fifth-- kusema tano au more-- kisha una kutumia [inaudible]. Lakini vinginevyo, huna kwa kutaja oktavo ya kila noti moja. Na jamaa C, mkuu, na C, wewe tu bayana katikati C na msingi C, maelezo hasa kwanza. Kisha una wafanyakazi hao kwamba kupanga sauti hizi mbili au sampuli ya muziki, na una alama. Na kwamba inaonekana kama hii. Kama unataka kuchukua muda wa nakala ya kwamba sampuli ya LillyPond kanuni ya awali slide chini hapa, na wewe Unaweza kuandika ni kwa LillyPond mwenyewe. Najua sisi tumepewa kitu kwamba inaonekana mengi kama hii. Hivyo kuna teknolojia nyingine aitwaye Music XML iimarishwe na watu tofauti kabisa. XML ni textual data structure-- mimi haipaswi kusema data structure-- kusema mfano ramani aina ya. Na ni iliyoundwa na kushikilia data kihierarkia vizuri sana. HTML, kwa mfano, ni aina ya XML. Na unaweza kuwaambia XML kwa sababu wao walikuwa wote mabano angle na pembe alama mabano kufyeka show takwimu ambazo mashamba. Sina kificho mfano kutoka Music XML. Unaweza kupata ni wewe mwenyewe. Kimsingi, sababu unaweza kutaka kutumia XML kama hatua ya kati ni, kwanza ya yote, ni muundo interchange kwa kimsingi every-- sitakuwa kusema kila, lakini mengi ya alama mbalimbali waandishi. Hivyo kama wewe kuandika katika Music XML, si tu inaweza LillyPond kusoma kwa msaada wa auxilary hii mpango ujulikanao Music XML kwa LY, lakini pia Finale unaweza kusoma hivyo, Sibelius wanaweza kuisoma. Kulingana na jinsi kitu yako ndani uongozi kazi kwa ajili anayewakilisha muziki, inaweza kuwa rahisi kuandika kwa Music XML kuliko LillyPond na tu wanategemea Music XML kwa LY kufanya kubadilika. Sidhani [inaudible] ina Music XML. STEPHEN KREWSON: Ni hana. Mtu ni kazi yake, ingawa. CONNOR HARRIS: Sawa. Euterpea hana Music XML pato kazi bado. Kama unataka wazo la mwisho wa mradi, labda kuwasiliana na guys kwamba Stephen anajua, na wangeweza kutumia msaada wako. STEPHEN KREWSON: Ningependa hiyo. CONNOR HARRIS: Pia, kimsingi, Lugha kila programu hiyo ni yenye thamani ya chumvi zake tayari ina maktaba XML, hivyo unaweza kubadilisha wote ndani ya muziki wako katika baadhi kitu kwamba maktaba XML unaweza kuandika nje ambayo itahitaji wachache mabadiliko ya mfumo wako wa ndani kwa chochote muziki vitu wewe unataka kuandika kuliko kuandika moja kwa moja katika LillyPond ingekuwa. Basi tu magazeti ya nje kwa XML na maktaba XML katika lugha yako, ambayo itakuwa kuhakikisha kwamba ni syntactically sahihi na kila kitu, na kisha kubadilisha kwa LillyPond. Hivyo teknolojia unaweza kutaka kuangalia ndani kama wewe ni kufanya kitu kama hii. [Inaudible], mwingine auxilarry teknolojia. Hii ni kimsingi Tech Kazi au Tech Studio kwa LillyPond. Hivyo ni inatoa msaada na syntax, na templates kwa mbalimbali ya kawaida mchanganyiko wa vyombo. Ni inaruhusu mgawanyiko screen viewing hivyo unaweza kuwa na kanuni yako katika dirisha moja na PDF katika dirisha lingine na click kwenye maeneo katika PDF Rukia husika matangazo katika chanzo code yako. Hii ni muhimu zaidi kama wewe ni kweli kuandika LillyPond faili mwenyewe kuliko kama wewe ni kuzalisha nao programmatically. Lakini tena, ni kitu muhimu kwa kuwa. Kubwa. Resources-- mwingine mimi itabidi tu kwenda kwa njia hii kwa haraka sana. LillyPond manuals-- LillyPond ina nyaraka bora katika tovuti yake. Wana mafunzo. Wana syntax kumbukumbu. Wana mamia ya vijisehemu kwa mambo mbalimbali ndogo yo kuhitaji kufanya ili kuonyesha uwezo mbalimbali. Kama unataka kutumia lugha scripting au kufanya kina zaidi customizations, basi kuna internals rejea wakati huo URL. Kama unataka kutumia Music XML, kuna kwamba URL, musicxml.com/tutorial. Na kisha kama unahitaji kujifunza mpango kwa sababu kwa kweli unataka kutumia vifaa vya scripting katika LillyPond, basi kuna [inaudible] aitwaye Muundo Ufafanuzi Mipango ya kompyuta, ambayo si tu pili kubwa CS vitabu vya kiada milele written-- kupata mimi baadaye kama unataka kujua nini nadhani kubwa is-- moja lakini ni vizuri sana pia kuanzishwa kwa lugha sahihi. Huwezi haja zaidi ya kwanza sehemu chache. Na hiyo ni yake. Maswali yoyote? STUDENT: wapi ninaweza kushusha Frere yako yanayotokana Jacques hivyo siwezi kuiweka kwenye iPod wangu? STEPHEN KREWSON: Naam, unaweza kuandika nje kwa baadhi ya faili wav katika Euterpea. Na una kanuni. Ni juu ya GitHub. Kufanya tofauti yako mwenyewe ya Frere Jacques na CS50 mzinga akili. Itakuwa kubwa. CONNOR HARRIS: Mtu mwingine? STEPHEN KREWSON: Tunahitaji bora bass ngoma, pia. Ni kweli mbaya. MWANAFUNZI: Euterpea ina si tu upande utungaji, lakini signal-- STEPHEN KREWSON: Ndiyo. Kwa kweli, kazi mimi alifanya katika Euterpea wakati mimi alichukua Haya kuna kuhitimu kozi katika Yale kwamba anatumia it-- ilikuwa juu ya awali sauti. Hivyo kuna kweli nzuri njia kwa kutumia mishale na baadhi ya nukuu tuliona ya kutunga pamoja kazi signal. Hasa, bass kwa zaidi mmoja wao ni rahisi tu sine wimbi. Lakini kama wewe kuanza kutunga wale katika weird njia ya programu, unaweza kupata mambo sauti madhara, kama cascades weird. Unaweza kuunda gritty sana sauti na mengi ya modulering. Nilifanya mradi wa punjepunje awali, ambayo ni mahali fulani katika kati FM na sampuli. Wewe kuchukua kidogo sana, sampuli kidogo, na kisha kuchanganya yao na aina fulani ya moduleta na kujenga sauti tajiri. Sisi pia alifanya modeling kimwili, hivyo kujaribu kufikiria juu ya fizikia na psychoacoustics ya kitu kama tarumbeta na kufikiri kuhusu njia sauti ni bouncing off kengele ya tarumbeta na acoustics ya chumba na modeling kuwa na oscillators msingi. CONNOR HARRIS: Asante sana. Shukrani kwa kuja. Na mimi nina daima tayari kuchukua maswali na email-- connorharris@college.harvard.edu. STEPHEN KREWSON: Naam. stephen.krewson@yale.edu. Baridi.