CONNOR Харис: Здраво. Јас сум Конор Харис. Јас сум CS50 ЦУ на Харвард. СТЕФАН KREWSON: Јас сум Стефан Krewson. Јас сум ТФ за CS50 на Јеил. CONNOR Харис: И ние ќе треба да се зборува за некои технологии кои можеби сакате да го користите, ако сте заинтересирани правејќи го финалниот проект или навистина нешто со музика. Ние ќе треба да се фокусира на прво програмски јазик наречен Хаскел. Тоа е функционален јазик, па на парадигмата е многу различен од C или PHP или други императив јазици кога сте веќе во употреба, а особено на библиотека напишани во Хаскел наречен Euterpea, која може да им помогне на луѓето со пишување на музика функционално, основа. И Стефан ќе ви прошетка преку одличен пример за тоа. По ова, јас ќе те запознаам со нешто што се нарекува LillyPond, која е технологија за наборен музика. Тоа е вид на како LaTeX за музика ако некој од вас Го употребив LaTeX за математика класи или останатите Р сет класи или она што го имате. И така јас ќе ви даде, пак, некои едноставни примери за тоа и да ви точка во општа насока на некои подобри ресурси. СТЕФАН KREWSON: Во Покрај тоа, ние го мислев би било кул да се постави малку совети кон гасоводот меѓу Euterpea генерирани MIDI датотеки во LillyPond, па ние се обезбеди некои настава на скрипти да го направите тоа, кои се обезбедени со LillyPond само за да се задржи отворен код и да се добие гасоводот оди. CONNOR Харис: Повторно, треба да се истакне, овие две технологии, ќе не треба да ги користите заедно. Тие не се дизајнирани да работат заедно, иако тоа го прават многу убаво. СТЕФАН KREWSON: Добро. И потполно бесплатно. CONNOR Харис: Значи признанија, само да читате тоа. СТЕФАН KREWSON: испочитувана. Благодарение на овие луѓе. Ова ќе лебдеат само за момент. На процесот на инсталација е малку незгодно. Имаме ме читаат на GitHub дека можете да ги погледне. Само ми е-мејл ако имате било какви прашања. Но, ние ќе го стартувате овој под претпоставка дека ова е работа за секого. CONNOR Харис: И ако не може да добијат LillyPond на работа, нема ништо страшно. Нема живо компилација која ќе бидат вклучени, барем на мојот крај. СТЕФАН KREWSON: Хаскел и LillyPond треба и двете имаат монтери. Euterpea е симнат како пакет, така натаму и така натаму. Значи зборуваме за компјутер музика. И ова е само еден многу Поглед 50.000 нога. Има неколку различни аспекти од него. И ова е груба и е случува да се прикријат некои детали. Но би можеле да се мисли на нешто како алгоритамски состав, користење на алгоритми, користење на кодот, за да генерирате некои од типот of-- можеби слична на себе Редоследот на белешки, или можеби белешки под некои ограничувања. А потоа тие би можеле да бидат извршени или толкува со аналогни инструменти или нешто слично. Но составот беше направено алгоритамски. Но, се разбира, можеби и од областа на компјутерски музика или дигитална музика ние сме повеќе запознаени со е дигитален звучна синтеза или дигитален земање мостри и дигитален запис. Многу дигитални инструменти се направи преку дигитални земање мостри. Всушност, ние ќе бидеме со користење на еден од оние во форма на звук библиотека фонтот подоцна. Но, постои и нешто што се нарекува дигиталниот синтисајзер што излезе од крајот на 70-тите и во 80-те со Јамаха и Џон Chowning на Стенфорд прави ФМ синтеза или Синтеза фреквенција модулација, каде што имаше носач сигнал и модулирање на сигналот и во аудио спектар. Но, она што ние сме фокусирани на денес е нешто што се нарекува MIDI, и, се разбира, алгоритамски состав. Ние нема да се направи инструменти, но ние сме наместо случува да се направи некои музика, и тогаш тоа ќе се толкува од страна на некои инструменти кои се сообразни на генерален MIDI стандард. Значи она што е MIDI? Јас не одам за да се добие премногу длабоко во неа, но MIDI е протокол за пренос на податоци. Тоа е еден вид на водич низ различни компании и индустрии за организирање на звуци или закрпи. Па ќе видиме дека има еден стандард MIDI за сите различни ударни звуци и препораки MIDI за сите на различни видови на синтисајзер или различни видови на сите инструмент групи во оркестар, велат. Сигурно сте запознаени со Од 0 до 127 MIDI пораки. А MIDI сигнал е типично еден бит укажува без разлика дали е на податоци или статус пакет, а потоа има седум парчиња на сигнал. И овие може да се контролира сè, од волуменот на дејството или притисок на одредена клуч ако сте вршење со MIDI контролор, како и, се разбира, белешки. И, се разбира, има MIDI исклучително корисна, затоа што тоа е еден начин да се жица заедно или паричка синџир еден куп на MIDI хардверски уреди. Имам седум или осум назад во мојата куќа. Станува навистина комплицирано, но тоа е навистина моќна. И тоа е навистина стара. Тоа е од почетокот на 80-те, и Тоа е навистина убаво и мали. CONNOR Харис: Да. Сите класичен Нинтендо видео игри најверојатно ќе го имаат MIDI датотеки за музика, на пример. СТЕФАН KREWSON: Еве еден пример за општите MIDI, MIDI покажува како еден вид од општ протокол. И мислам дека ние може да се мисли на Разликата меѓу спецификација дека треба да има нешто како овие инструменти звучи и вистинскиот Реализацијата на овие инструменти се огласува во солидно фонт или посебен MIDI синтисајзер, како да бидат разликата помеѓу можеби typeface-- кој вели: Во принцип, ова е дизајнот на овој конкретен начин да се претставуваат characters-- и одреден фонт што има специфична големината и бојата на звукот, и таму е реализација на the-- CONNOR Харис: Можеби подобра споредба би биде стандард Уникод says-- го дава голем број на секој карактер, и навистина на сите јазици во светот, или огромен сет на скрипти на јазикот во светот, а потоа тие се изречена во нешто графички од страна на разни пакети фонт. И очигледно, што може да замислите MIDI како Уникод на звукот. И тоа е само листа of-- голем прилив на настани и инструменти и какво ли не, и што треба да се има посебен програма, како фонт, за да го направи тоа во нешто што е разбирлив. СТЕФАН KREWSON: Па зошто Хаскел? Хаскел е функционално програмирање јазик, многу напредни, многу различни од С, многу различни од PHP. И ние ќе треба да се види дека има една леснотија на функцијата состав во Хаскел што ќе ни овозможи да бриз преку составувате или пишување до, транскрипција, нешто како Frere Жак, оваа едноставна песна има многу делови во него кои сами се слични или повторување. Па ова ќе биде дел од мотивација за тоа зошто ние сме со користење Хаскел, во која функции се граѓани од прва класа. И сакав да се прошири ова малку. Тоа е малку лесно да се notate Frere Жак во Хаскел. Но, што ако сакавме да додадете тапан дел за да го? Што ако сакаме да се обидат да се направи нешто како Ролан 808 или 909 тапан машина каде што треба околу 16 различни чекори? Обично овие се смета како 16-ти белешки. И можете да ги контролирате на глобалната темпо, и можете да го одберам еден куп на различни ударни делови на бас тапан, трипер, различни примки, отворен и затворен висок капи на овие вид на канали, а потоа можете да EQ или приспособат нивниот обем. И ќе видиме еден убав начин во Хаскел на претставување на овој чекор sequencer со сите разни кул работи во Хаскел можеме да направиме со генерирање листи и филтрирање над листи, мапирање над листи, мапирање функции над листи. И брзо извинување. Ова е многу површно и премногу брзо скица на некои од аспектите на Хаскел и Euterpea, кој е домен-специфични вградени јазикот напишани во Хаскел за музички типови. Затоа ве молам проверете го кодот онлајн. Оган до GHCI, кој е во Глазгов Хаскел компајлерот преведувач. И јас ќе се прави на некои на овој во малку па можете да видите како се прави тоа. И ова ви овозможува да се вчита во со the-- синтаксата е на дебелото црево, а потоа команда. Може да се вчита во датотеки. Можете да го користите да пребарувате на оние датотеки за да ја видите сите функции кои постојат во одреден модул. А потоа како што ќе видиме, видови и видот класи се толку важни во Хаскел, па секогаш можете да check-- особено ако си работат на нов DSCL како овој, што е еден вид на музика? Знам за начинот нумерички видови работа во Хаскел, но јас не знам многу за музиката. Но, можете да се истражуваат начин тие се дефиниран со користење на овој тип на T или команда а потоа се повикува во определен функција или објект за податоци. CONNOR Харис: Да. Ако мислеше Ц и ѕвекот беше hardass за видовите, вие немате идеја за Хаскел. Добрата работа во врска Хаскел е дека дали можете да добиете вашиот код за компајлирање и ако проверки тип Хаскел, тоа е веројатно е во право, затоа што системот на типот е толку строг. СТЕФАН KREWSON: Да. Па јас само сакам да одам through-- и повторно, ова не е тоа тоа justice-- неколку од карактеристиките на Хаскел дека, барем на своите creators-- и тоа беше создаден во доцните 1980-ти од страна на еден куп на луѓе, комисија од околу 20 people-- мислевме дека биле важни. И првото нешто што тие наведени во документ кој опишани генезата на Хаскел во текот на првите 20 години или така беше тоа што беше мрзелив. Па што значи тоа? Па, тоа значи кога имаме некој вид на изразување, ние треба да го оцени. И Хаскел прави на повик од страна на потребата начин или не-строги начин. Тоа е, ако имаме еден куп на компоненти на нашите изразување, ние се обидуваме да го одложи евалуација на оние поткомпоненти до апсолутната последно minute-- односно додека не ние всушност им треба. Па ова means-- која е навистина кул, особено ако ние сме размислување за апстракција на музички чекор sequencer. Ви вклучете го, и ќе почнете водење на чекор sequence-- ако некогаш работел со барабан machine-- и тоа само оди засекогаш. Па тоа ќе биде навистина убаво кога би би можеле да се емулира дека во Хаскел. И ние може да го направи тоа со бесконечна вредности, особено бесконечна листи. Тоа е многу лесно да напишеш една бескрајна листа во Хаскел. Вие само може да се користи на синтаксата надолу тука, каде што ќе видите од 1 до 3, отстранување на 3 1 точка точка, а дека е бесконечна листа на сите природни броеви проширување колку што можете да замислите. Сакам да се воведе Концептот на наборите веднаш. И повторно, со цел на овој семинар е да се запознаат со набори во Хаскел или повисоки функции ред. Но, јас само сакам да го запознаам даде точна чувство за тоа колку чудно Хаскел е и колку е моќна. А особено, ние ќе треба да be-- кога тоа го правиме нашите различни тапан делови, ние ќе треба да се манипулира со списоци на броеви, виткање ги кон едни со други. И да го стори тоа, ние ќе да биде со користење на мапи и набори. Има право асоцијативна свитка, што е и оваа во право here-- 1 минус количината, 2 минус количината, 3 минус 0. И синтакса за пати, да ви даде пати база на вредност, а потоа една operation-- во овој случај, додавање или одземање. Сум ги прикажувал двата случаи. А тука е и акумулаторот кој се акумулира во текот на целата листа, примена на тој оператор плус или минус, а потоа се акумулира. Па ова ќе биде the-- ако тоа се викаше со фалта r плус од 0, почнувајќи со 0, тогаш ние ќе ги сумира сите броеви во таа листа. И тоа е листа од 1 до 3. CONNOR Харис: Значи да го стави на друг Патем, пати r прифаќа три аргументи. Има функција која се зема два аргументи, тогаш има вредност стартер, и има листа на вредности. И што можете да направите е да се земе стартер вредност, првата вредност, ги стави во функција. Што сакаш да се излезе, се земе дека, храна која во функција на Вториот вредност, што ќе излезеш, се земе дека, што се хранат во функција на третата вредност. А потоа, ако одат надолу Целата оваа листа на овој начин, си оди за да се добие на крајот некои единствена вредност, тоа е од ист вид на она што го започна надвор со и од ист вид како што работите во списокот, а потоа тоа е резултат на враќањето на пати Р. СТЕФАН KREWSON: Значи, особено, овие се повисоки функции, со цел, бидејќи тие се земајќи друг функционираат како еден од аргументите. CONNOR Харис: Да. Ако сте користеле одредени други languages-- Знам Р [Беззвучен] јазик има ова, наречен намали. Може да имаат слични функции на други јазици, само се нарекува различни нешта. СТЕФАН KREWSON: А Што е убаво за Р пати во овој случај е тоа што пати Д може да работи со бесконечни списоци. Така што во овој дното, ова П5 е генерирање на белешки кои се вклучени во чекор sequencer за некои тапан дел, петтиот барабан дел, а можеби и тоа е конга тапан или нешто. И ова е намерно тап начин на пишување на оваа, но тоа е забавно, бидејќи тоа покажува многу работи во врска Хаскел и Euterpea. Толку пати R на овој colon-- дебелото црево е обичен оператор дека турка работите заедно на list-- повика на празен листа, што е само празни загради. И јас го повикувам дека на оваа бескрајна листа. Ова е всушност двете листи собираат овде долу. Листата запирка 1 точка 6 точка е 1, 6, 11, 16. Па Haskell-- во само неколку карактери, можете може да генерира целиот секвенца на броеви кои се пет броеви, освен се протега до бесконечност. И јас Вметни на онаа ова малку пократок list-- 3, 8, 21-- само за да ви покаже како може да concatenate листи. И тогаш сум повлечен за себе. И овој завршува само да биде еден вид на операција идентитет, но тоа е бесконечна. И преклопете Д може да го направи тоа, затоа што мрзеливо се оценува, како и претходниот. Ако имаме 1 и 2 и 3, можеме да само заградата го целиот остатокот од неа. Дека нема да работат за минус или плус, но тоа ќе работат за оваа дебелото црево операција идентитетот на листата. Па, како да ги употребат практично дека ако ние имаат бескрајно долга листа на работи? Па, Хаскел обезбедува многу functions-- и да бараат повеќе во овие во свој time-- како што ги во која се вели, во ред, ние сме генерирање на оваа бескрајна листа, но ние сме само ќе биде потребно извесно број на ИТ и во овој case-- ќе видиме подоцна, во ова нашите тапан машина code-- ГМ е само некој вид на глобална променлива за бројот на чекори во sequencer. На машини напомна во I ви покажа, тоа е обично 16, но јас го спроведува со 32. Тоа навистина не е важно. Хаскел е исто така чиста, така што има силна статички пишување дека Конор алудира. Па функции се математички во sense-- тие се повеќе математички дека тие се загарантирани да нема пристап или да го промените било кој вид на променлива или вршење влез или излез. Значи, ако имате некоја функција, тоа е детерминистички. Тоа секогаш ќе се врати на истиот вредност во состојбата на програмата или остануваат исти. Постојат, се разбира, monadic исклучоци на ова, но тоа е надвор од рамките на нашите надлежности. CONNOR Харис: Да. Што значи тоа, сепак, е таму неколку важни [Беззвучен] Последиците од ова. Една од нив е дека тоа е многу лесно да се parallelize Хаскел програми. Затоа што ако имаш, велат, функција на која треба да работат на еден милион вредности, ако знаете дека функцијата ќе секогаш даде од иста вредност, ако ќе се хранат во одреден value-- ако сте [Беззвучен] ѓ од 1, ѓ на 2, тогаш f од 3 или whatnot-- f од 1 не се случува да се напише во датотека или да направи нешто дека ќе ја промени вредноста на F2. Вие само може да се подели на оваа функција на милиони различни машини или еден милион различни теми или што и да, ги добиете сите одговори назад, ги добиете сите вредности на враќање назад, а потоа тоа е тоа. Така многу лесно да се parallelize работи. Во надолна линија е дека влез и излез особено вклопат во системот тип во многу комплицирана начини. Ние не би навлегувал во тоа токму сега, но јас Ги охрабрувам да се погледне во некои ресурси онлајн, ако сакате да дознаете повеќе за тоа. СТЕФАН KREWSON: Значи напишете classes-- и ова was-- класи на видови биле измислени за да се реши проблем на оператор преоптоварување. Па сакавме да има еднаквост помеѓу различните видови на нештата. Се разбира, ние може да се размислува of-- еднаквост меѓу нумерички видови Многу е лесно да се размислува за, но она што за еднаквост меѓу листи? Она што за еднаквост меѓу дрво структури нога податоци? И сево ова е можно во Хаскел поради видот класи. Значи, ако ви се дефинира одреден type-- податоци и овде, овие се музички терени. Ние сме конечно добивање некои компјутерски музика. Значи ние треба C, C остар, и така натаму и така натаму. Тие припаѓаат на еден куп на различни класи тип. EQ-- тие припаѓаат на класата на видот должини. Тоа значи дека тие го поддржуваат операции еднаквост. За да може да се оцени дали една Редоследот на музички примитивците е иста како и еден поинаков. Тие припаѓаат на редниот класа. Тоа значи дека таму е нарачување на овие. Д доаѓа по В. С остри доаѓа откако Ц, како и. Тие припаѓаат на класата покаже, што значи дека тие можат да да се отпечатат на конзола или терминал. Тие припаѓаат на класа набројани, кои значи дека иако тоа се ликови, тие имаат основните нумерички застапеност со почеток во 0 и си заминуваат преку сепак многу работи се тука, 20 или така, или 30 или 40, можеби. CONNOR Харис: И кога имаме тип на податок derives-- дека со овој клучен збор "deriving--" одредена класа тип, тоа значи дека на компајлерот ќе се обиде да се изгради нешто автоматски. Па можеби ќе сакате да го се дефинира квалитетот поинаку. Ќе сакате да се дефинира С остри како што е еднаква на D рамен, на пример. Со овој градежен тука, јас не мислам дека С остри и Д рамен ќе бидат еднакви, бидејќи компајлерот автоматски ќе велат дека секој различен можна вредност се разликува од секоја друга. Па можно е да се замени имплементации стандардно на овие видови на класи. Повторно, погледнете во референтната ако што сакате да дознаете за тоа. СТЕФАН KREWSON: А тука, всушност, ова ќе да бидат од корист за кога ќе се кодира подоцна. Можеме да видиме некои од операторите на инфикс за секвенцијален состав, паралелно состав, и така натаму, овие предности и еднакви знаци опкружен со две точки. Тоа значи дека ние може да игра овие различни музички примитивците еден по друг. Тоа е секвенцијален состав. Или можеме да ги играат во паралелно во исто време. За да можам да има музичка вредност, и тогаш ова е еднакво и запирки, инфикс паралелно оператор состав, и да ги играат како еден вид на акорд. И ние ќе треба да се користи кога ние се комбинираат нашите тапан дел со нашите малку Frere Жак песна да играат овие две секвенци музички вредности во исто време. Currying is-- Кари последен назив на Хаскел Кари, кој сликата Хаскел е именуван по. И ова ни овозможува убаво елеганција кога сме пишување на сите овие различни функции или филтри, дека ние сме ќе биде мапирање над нашите листи. А функција од две arguments-- ѓ на x и y-- може да се претстави како f на x се применува на y. Така, тоа е во функција на еден аргумент кој се враќа Друга функција на еден аргумент. Па тоа значи дека ние може да карта на функцијата f на x над Листа на y е. CONNOR HARRIS: Сакате да даде пример на ова? СТЕФАН KREWSON: Да. Јас имам еден пример од тука од некои од работите што ќе пишуваме. Па реплицираат 2-- добро, реплицираат ќе потрае една вредност, која е колку Времето да се реплицираат нешто, и тогаш тоа ќе биде потребно value-- обично листа или нешто. Па еве, ние сме мапирање реплицираат 2 во однос на друг список. Значи, ако ние мапираат реплицираат 2, ако се реплицираат 2 се применуваат на првиот елемент на овој list-- и овие се листи на музички phrases-- ќе произведува две на "вие sleeping--" па спиете, ви се спие. Така, сега имаме два. Но реплицираат потребни двајца аргументи, но бидејќи ние сме currying а потоа и мапирање, ние може да претставува реплицираат 2 како да е врати како функција на еден argument-- реплицира само двапати. А потоа ние сме примена на тоа на секое елемент на оваа листа на фрази. И concat е Хаскел операција за изедначување листа. Бидејќи реплицираат 2 волја произведуваат листа на листи. И ова е ова средно форма овде. И така, тогаш можеме да CONCAT или израмните дека од двапати. CONNOR Харис: Поедноставна пример за currying, ако сакате like-- замисли ѓ е само множење функција која се потребни двајца аргументи и се враќа на нивните производи. Значи, ако имате ѓ 4 5, тоа е 20. Но, можете да мислам на тоа како also-- имаш функцијата f 4 кој што се расправа и се враќа четири пати оваа argument-- само делумна апликација која само еден аргумент 4. И ако се хранат ѓ од 4 5, која ќе ви даде 20. А тоа е поедноставно пример за currying. Тоа е обично една од оние учебник. СТЕФАН KREWSON: Ламбда изрази или анонимни функции се друг Хаскел белег. Значи, ако ние треба да разбивам функција малку живот реплицира, но велат дека тоа не е во стандардната библиотека, може да се користат синтаксата слични на следниве. И ние ќе здив над ова. Едно нешто што ќе видите многу во тапан машина е ние сме прави повици до нешто што се нарекува филтер, кој како и досега, е мапирање на функција над листа, но тоа е мапирање на Булова функција. Значи имаме тука за пример на една анонимно дефинирани Булова функција што само трае неколку вредности. Ова не е строго говорејќи анонимен функција. Но, тоа е се дефинира со дека синтаксата за краткост, и тоа само ги зема х модул n-- CONNOR Харис: Да. Па f е функција од два аргументи n и p кој се враќа функција која сама по себе е функција од еден аргумент, имено x. СТЕФАН KREWSON: јас споменатите оператори инфикс. Кои се инфикс оператори? Па, инфикс оператори се нормален начин ние ги претставуваме операции, велат, во mathematics-- 2 плус 2 наместо преку операциониот плус а потоа два аргументи 2 и 2. CONNOR HARRIS: Тоа се вика обратна Полски нотација, што е термин јас се сомневам некој од вас да го знам. СТЕФАН KREWSON: Добро. Обратна лак или префиксот нотација. Но Хаскел одлучи да користете инфикс оператори. Значи овие се некои од обичајот оние кои се дефинирани за Euterpea DSCL во Хаскел. Така што ова е секвенцијален состав. Ова беше паралелна состав, и тоа беше truncating паралелно состав. А ние ќе треба тоа со нашите тапан машина, бидејќи ние ќе користат последните оператор во таа мала торка таму да се игра тапан машина заедно со нашите Frere Жак песна. И нашите тапан машина е ќе биде бесконечна. Тоа само игра засекогаш. Но Frere Жак песна не е. Тоа не е толку долго. Тоа е само неколку барови. Значи ние треба да се запре тапан машина како Штом пократок музички вредност доаѓа до крајот. И дека infixed оператор е супер корисни со тоа. И инфикс нотација како ова е вид на убаво, затоа што велат дека имаат функција како понуда, која им дава на поделеноста на цел број на x од нешто else-- За жал, тоа треба да биде и b. Вие би можеле да го пишувам како еден цитат од б. Значи, ако сте put-- елемент е уште еден пример за тоа. x елемент во некоја листа, ако се стави тоа во коси наводници, можете да го користите. Иако тоа не е симбол како плус или минус или времиња, можете да го користите името на функција, како што во коси наводници како оператор инфикс, што е прилично кул. CONNOR Харис: Повторно, ова е сите само синтаксички шеќер, навистина. Тоа не влијае на јадрото на јазикот. СТЕФАН KREWSON: Па ќе видиме тука за да ги последната реченица од нашите Frere Жак песна, Играв некои малку акорди или третини користат паралелна состав оператор. Ова е уште еден начин да се каже некои од она што ние само се кажува. Па можете да карта функции на една расправија околу листи. CONNOR Харис: Повторно, референци за Haskell-- воведната учебници ќе ги имаат сите на овој во неа. СТЕФАН KREWSON: Па тука е прилично клучна линија на чекор sequencer ние ќе ги разгледаме во користење список со разбирање. И гледаме овде е тој елемент во фиксниот оператор за назад цитати. Значи, ако x е елемент од листата на Х, тогаш ние ќе ги повикате ПЕРК функции. Па ПЕРК е само функција перкусии. Таа ги зема некои вредност стр тоа е дел од граничи множество на сите тие звуци ударни што сме го виделе во претходниот слајд, и тогаш тоа го прави на тој Времетраењето на една четвртина нота. На друго место, тоа дава QNR и QNR е само една четвртина нота одмор. Значи ова е градење нешто убаво. Имаме листа на елементи, и ние ќе јамка околу некои листа од еден до максимум вредноста на нашите чекор sequencer. И кога сме во одредена i во таа листа од една до вредноста максимум, ако тоа ми е член на оваа сет создадени во оваа функција, добро, тогаш ние го вклучите во ударни белешка. Инаку, ние само игра одмор, кој е да се каже, ние само молчи. И може да се види дека овде во оваа листа разбирање синтакса, x е населен со ова листа изграден еден на глобалната големината на sequencer. CONNOR Харис: Да. Основната синтакса за листа comprehensions е заградата, вредност се вклучени некои променливи, бар, можни вредности на променливи себе, затворена заграда. И ако сте го направиле во собата градител нотација во било кој вид на математиката класа, може да се постави како 2n тоа, што n е во или n е во z. Слични thing-- оваа нотација е замислена да биде сугестивна на таа математичка нотација. СТЕФАН KREWSON: И може да се примени многубројни предикати и повеќе филтри во списокот разбирање, што е многу убаво. Алгебарски types-- ние нема да траат долго тука. Таму не е добра идеја во Хаскел или добар, очигледно поимот за тоа како да се, да речеме, стандардно параметар за функција или нешто. Во Python, ова е прилично лесно. Вие само може да се каже со еднаква на декларацијата на функцијата, стандардна вредност во случај ниту се доставени. Во Хаскел, вие би можеле да можеби користете можеби можеби пишувате, која ги зема или ништо или вредност од типот само. За да можеме да го искористат овој во тапан машина за да ни овозможи да се даде опционални волумен параметри, за да секој од деловите барабан. Така што ни дава начин на постоење на EQ или обемот на одреден канал. CONNOR Харис: Во други примери Хаскел, може да се види, можеби се користи за функции кои би можеле да пропаднат. Ова е честа еден. СТЕФАН KREWSON: И вие може да снабдување некој вид на порака за грешка како стандардни. И тоа е особено корисна кога што го правиш на I / O во Хаскел. Кои можат да бидат трикови. CONNOR Харис: Или за сличен пример, мислам на функција која вклучува поделба на параметарот што може да биде 0. И таа функција би можел врати можеби сеедно. Значи, ако не постои поделба од 0, таа ќе се врати само сеедно. И ако постои поделба по 0, ќе се врати ништо како начин на сигнализација за грешка. Затоа што една од последиците на Многу строги пишување Хаскел е е дека нема real-- Исклучок се незгодни, во основа, грешка ракување е непријатно. И ова е еден многу Најчесто се тоа го правам. СТЕФАН KREWSON: Па сега ние се Друга работа е да се ум-свиткување за Haskell, што е шемата на појавување и функција дефиниции. Што ти го покажав во последниот слајд Декларацијата од секвенцата на чекор функција, која зеде можеби вредност, тогаш int, тогаш листа на ints, потоа се враќа низа од музика вредности има коментари со двете теренот и волумен. Па овие три аргументи може да бидат модел се исти на следниот начин. И секогаш сакаме да бидете сигурни дека да направи база случај или случај излез прво. И овие долни само може да се толкува значи секоја вредност, која е таму. Па ако добие повик да се повлече низа со некоја вредност, некои други вредност, а потоа и на празна листа, она што сакаме да се врати е само тишина, одмор 0. И наместо тоа биде празна листа или 0, тоа е остатокот 0, бидејќи ние сме кои се занимаваат со типот на музика, и празните листа на музиката тип е само останатите нема рок на траење. Тоа не е музика. А потоа можеме да видиме дали можеме да чекор низа со v за аргумент обем, p за претпазливост инструмент аргумент, а потоа листа на x е. Тогаш можеме да направи некои работи. Конкретно, ние се применуваат оваа листа со разбирање, и изведување на некои операции на можеби вредност да ја претвори во нумеричка вредност, така што тогаш тоа би можело да се набројат и да се користи за да го изберете со инструменти. Повторно, ова е малку малку намерно inconcise само за да се прикажат сите чудни работи можете да го направите во Хаскел како што да ги разгледаме во тоа на свој пат. Во ред. Па ние сме конечно да дојдеме до го направи она што е утврдено да се направи, која е да се направи некои компјутерски музика. Па ние ќе да се обиде да направи Frere Жак песна. Па така постојат колку фрази во Frere Жак? Четири. Одлично. И, што е убаво е тоа што сите тие се повтори иста количина на време, што е за два. Па ние имаме четири фрази секој се повторува два пати. А особено, тие се во круг. И ги има многу, многу начини да се имплементира тркалезна дека може да биде забавно да се направи. Сум го направи во прилично едноставен начин да се овде, кој е само за да construct-- линијата функција се листа на музички вредности и ја претвора во секвенцијален состав со примена на тој секвенцијален состав оператор. И јас тогаш го одложи различни делови со тоа што тие почнуваат со останатите. Па јас се започне со остатокот од двете мерки, а потоа и остатокот од четири мерки, а потоа и остатокот од шест мерки, а потоа и на круг работи, како што сите знаеме оваа песна. Гледаме две прибелешки или модификации на музички вредности кои се содржани во овој секвенцијален уредување на музички елементи. Имаме обем додаток. Ова е во функција да annotate музика со одреден волумен. Ова е добар пример на сигнал за трчање MIDI 0-127, на седум делови од информации кои може да се врши. Then-- и тоа го видовме многу накратко, но општата MIDI листа на сите различни инструменти. И таму не е многу скапо на нив. Ако користите дигитален аудио работна станица, како Ableton Live или Pro Tools, таму е неверојатно поширок спектар на синтисајзери и VST инструменти. Но само на стандардната MIDI има неколку, или неколку десетици. А некои од нив се смешни. Мислев дека ќе биде забавно ако игравме инструментот инструментот MIDI хеликоптер, а потоа и на Следниот пат низ круг, ние го сторивме рампа синтисајзер, а потоа и на оваа старомоден олово квадратен бран синтисајзер, а потоа го искажат тињата, кои се малку нејасен на мојата лоша MIDI синтетизатор, но тие се во ред. И тогаш ќе го видиме ова ајде и во синтаксата од Хаскел, и тогаш ние навистина свириме сите овие делови заедно со паралелни оператор состав. И веројатно би можеле да се покажат некои од ова. Еве го кодот. И можете да ги видите во C, дека ќе има еден многу грлото расчистување и поставување кодот на табелата пред да може да се направи музика како оваа. Или било која друга програмирање јазик, ќе веројатно мора да комуницирате со некој вид на библиотека или API и поставени се нагоре, и тогаш ќе треба да се исчисти. Но, тука во Хаскел е, мислам, еднаш ќе го добиете висат од него, неверојатно може да се чита и многу експресивен. Па таму е имплементацијата на Frere Жак. Во ред. Сега сакаме да го додадете ударни инструменти, и ова е малку Messier. Па ајде да ги разгледаме во слајдови. Толку голема идеја е да се направи еден куп на листи или делови. На оние напомна во машини, таму беа типично за можеби осум до 10 ритам или ударни делови. А потоа користете еден куп на техники. И ние разговаравме за these-- користење набори, филтри, Ламбда функции, одбележан над листи за генерирање на вредности во некои опсег од 1 до R, R е 16, или 32 чекори во sequencer. А потоа ако има вредност во таа листа што ние сме се протега низ sequencer, поминува низ него во текот и повеќе, тој се вклучува тој белешка, и на тој примерок добива активира. Тука се и сите различни чудни начини Дојдов до со да се генерираат белешки. Пробајте го ова на вашиот сопствен полу сума. Тоа ќе звучи кул. Времето дозволува, ние ќе одиме преку ова. Но за сега, претпоставувам ние треба да демо она што го имаме. Да се ​​надеваме дека ова оди во ОК. Значи ова е GHCI. И ние ќе ја вчитате датотеката Ги повикав song.lhs, кој е на датотеката Јас само што го покажа. Ред, одлично. Како Конор реков порано, тоа состави, ја напишете проверив, за да можам да дишат многу полесно. Тоа не се случува да се кренат на мене. Јас сакав да ти покажам нешто корисно. Може да се види дека модул вчитан повика 50. Можете да пребарувате на тој модул. И тоа е толку убаво во врска со она што можеби doing-- што го правиш не е во Хаскел повика на развој на софтвер, но може да се направи многу на забавни работи на своја. И работниот процес е навистина убаво, како во споредба со многу други јазици, затоа што може да се види во една навистина читлив начин што се случува. Така можеме да видиме дека имаме сите овие фрази, кои се листи на музички терени, а потоа ние изградба на овие во нешто поголема, што е музика песна. Тоа е музички единица. И тогаш може да се игра оваа сите со функција наречена свири. Можете да видите дека овде долу. Што е само игра. Јас треба say-- јас не зборувам за овој знак за долар што е насекаде. Знак за долар е друг оператор инфикс. Но, тоа има најмал приоритет на кој било оператор, кој ефикасно значи дека се што е на лево на знакот за долар и правото на знакот за долар, ние ќе треба да се оценува пред него. Така, тоа е вид на како друг начин на додавање на заграда. CONNOR Харис: Тоа е во основа функција состав. И гарантира дека немате have-- ако имаш функции двете страни или инфикс оператори на двете страни, тие нема да поврзуваме низ него и да ви даде неочекувани резултати. СТЕФАН KREWSON: Па ние can-- користење на тоа, ние може да се јавам. Прво, ние ќе го игра без тапани. Тоа е од хеликоптерската несреќа, хеликоптер MIDI. [Музички] Има на квадратен бран. Тињата на гласот. И навистина може да одат дивите со оваа. Јас зедов прилично едноставна, зашто знаев дека не треба да отхапвам повеќе отколку што може да џвака. Само да го задржи прилично едноставна да се покаже главните идеи. Но, тогаш јас бев како, ние сме мора да се додадат некои тапани на ова. Само затоа што ова е малку непробоен, и јас не го користат назив на делови тапан, Јас одбележан them-- затоа што тие се дел од таа попишува класа, Јас ги одбележан ints. Е како бас тапан. Нула, како и. Седум е висока капа. И надолу во оваа земја каде функции се добие малку повеќе случаен избор, овие се како конга тапани. Значи, ако мислите about-- можеби забавен начин да се спроведе тапан машина е да се користи многу уреден шеми на вашиот бас тапан. Така на пример, за филтрирање на интернет во текот на список со се она што дава назад 1 кога е донесена модул 04. Па јас се добие 1, 5, 9, 13, така што ова 17-- е првиот ритамот на секоја мерка. А потоа и оваа е иста нешто се префрли во текот на два чекори. Значи тоа е Оригинален. Па ова ќе биде нешто како голема капа. А потоа повторно, овде долу, тоа е малку случаен избор, бидејќи ние сме прави конга тапани. И имам некои maracas долу тука, исто така. За да можам да се јавам игра тапан машина, но тоа ќе трае вечно, и тоа би можело да почне грабање нагоре сите меморија во мојот систем. Па јас ќе се јавите на оваа функција свирам музика, која како што ќе видиме, користете truncating паралелно состав да се игра на нашата мала Frere Жак песна заедно со овој чуден тапан машина. Па ајде да ги разгледаме. И немојте да се подобри на мојот уредување на сите делови на тапанот. Не моја специјалност, но јас имаше многу забава го прави тоа. [Музички] Па се разбира, ова е за сите малку не како забава ако не можеме да го претворите на резултатот, можеби тоа може да се толкува од страна на човекот изведувач. Па не ќе го работи тука. Јас веќе се генерирани датотеки. Може да се види дека има дот LilyPond file-- и ова ќе ми биде segue во текот на Connor-- и датотека точка MIDI, и точка на PDF датотека, што е она што LilyPond крајот ќе произведуваат. Но овие се оние скрипти, а јас ќе само да ги извршувате со нивна помош опции. Ако ви се овие и трча со Euterpea, може да генерира датотека MIDI. А потоа и од MIDI датотеки со оваа програма MIDI 2LY, можете да генерирате Лили Датотека езерцето, а потоа ќе можат да генерираат PDF на резултатот. И ние треба да ги разгледаме во тоа. Конор па веројатно ќе се покаже како да annotate ова подобро, но ова е Frere Жак како генерирани од мене во Euterpea. Тоа е само во C. јас треба да имаат сфатиле дознаете што тоа е всушност се пробие во. Но, тоа е цевководот за како да направите тоа со тоа. Ајде да зборуваме повеќе за LilyPond. CONNOR HARRIS: Добро ајде да видиме. Дали ќе се спомене Научете Вие Хаскел? СТЕФАН KREWSON: О, да. Проверете Научете Вие Хаскел. Тоа е во ресурси. Тоа е како јас го започна учење, и тоа е одлично. Не неми учење. CONNOR HARRIS: Значи тоа е онлајн. Па еден човек со име [Беззвучен] learnyouahaskell.com, без празни места. Граматика е болен. СТЕФАН KREWSON: Тоа е илустрирано, исто така. CONNOR Харис: Значи она што е LilyPond? Тоа е декларативно програмирање јазикот за музика за средување. Па declarative-- можеш мислам на нештата како HTML, каде што не си saying-- HTML не кажува како треба веб прелистувачи направат страници чекор по чекор. Тоа е само велејќи дека ова е опис текстуалната на она што го сакате страницата да изгледа. И тогаш тоа е исто така програма кој ги собира на овој јазик, или го прочита неговото и тогаш всушност не на наборен за вас, и тоа плука овие прекрасен потрага PDF оценки. Исто така можете да добиете PNG формат или whatever. А добар начин да се мисли за тоа е по аналогија е дека LaTeX е вид на како LillyPond, но за само обични средување. Така, наместо of-- тоа не е WYSIWYG, Она што го гледате Е она што го добивате, како, да речеме Финалето е, или Сибелиус, или Microsoft Word, каде што можете да напишете во реално време и нацрт работи во реално време и да видат промени моментално. Таа се заснова на текст. Ќе мора да го компајлирате вашиот резултати со помош на посебна програма и да се извлече на PDF датотеки подоцна. Ова е малку помалку лесен за користење, ако сте се обидувам да пишувам директно во резултатот и сте обидувајќи се да компонира на компјутерот. Но, постојат многу на предности за тоа. Еден, тоа не изгледа многу поубаво, бидејќи LillyPond всушност може одвојте време за да се направи распоред на одлуки што треба, за разлика од Сибелиус или Финале, кои имаат да се направи компромитирана алгоритми така дека тие може да се прикаже работи во реално време. Значи, зошто е LilyPond-- компјутерска графика е тешко. Ако правиш нешто со музика и ако сакате да се напише резултати, вие не сакате да се напише од сè од себе почнувајќи со тоа како да се подготви штабови и како да се привлече тефтери. Тоа е многу тешко. Тоа е направено порано. Ти си во ред. Ако сакате да го користите или Финале Сибелиус, формати на датотеки за тие работи се многу комплицирани, и не можете да навистина ги користат програмски. Можете да се отворат со Сибелиус Финале и одете на датотеката, извоз како PDF себе, но ти навистина не може јавам дека од сценариото. LillyPond, можете да се јавите од оние скрипти. Можете лесно може да iterate LillyPond со латекс. Јас нема да има многу време да се оди во овие технологии во моментов, но постојат. Ако сакате да се погледне во книга LillyPond, Тоа е програма која доаѓа со вашата дистрибуција LillyPond, и тоа е за процесирањето LillyPond одломки во LaTeX ако сакате да се направи нешто како голема музикологија документот со примери, на пример. И тоа е добра вештина за животот, ако правиш нешто со музика, а не само CS50. Јас сум користел LillyPond за сите на мојата композиција проекти бидејќи јас бев во основа високи во средно училиште. Значи тука се и некои едноставни примери. Ова е во основа претставник на ниво на тежина дека повеќето луѓе би се соочиме со тоа, тие се обидуваа да се користи LilyPond за едноставни проекти. Ова Првиот е на почетокот на коралски прелудиум од Бах. Оваа дното еден е извадок од една од моите дела, и тоа е само таму да се покаже вие работите како [Беззвучен] ставање повеќе линии во истата персонал, како лирски undersetting работи. Лирски подлоги се нешто што е многу лесен за користење LilyPond за хорска музика. И така, тогаш има некои повеќе комплицирано примери овде. Сите овие се направи во LilyPond и тие се остварливи. Ова е извадок од првата [Беззвучен] од [Беззвучен]. И ова [Беззвучен] од парче за соло бас флејта од [Беззвучен], кој е кој longtime-- беше долгогодишен член на музика оддел тука, мислам. Не сум сигурен каде тој нема да се исклучи. Но, тој беше советник на Харвард Композитори Здружение за долго време. Прекрасен човек. И тој пишува некоја музика која има многу комплицирано нотација која LillyPond сепак може да се справи многу убаво. Па само да ви даде чувство за тоа што способности оваа работа е толку are-- internals на LillyPond се многу комплицирани. И можете да го користите за долго време, вклучувајќи ги и за некои прилично комплициран работите, без да морале да знаат многу за нив. Но основната идеја е дека на најниско ниво, атомите на LillyPonds се забележува. Забелешките содржат контекст наречен гласови. Па контекст гласот во основа се совпаѓа до една линија на полифонија. А потоа контекст може да биде содржани хиерархиски во високото ниво на оние кои претставуваат штабови на резултат или поголеми групации како пијано штабови или хор штабови, а потоа на крајот целиот резултат контексти. И всушност може да се опфати повеќе бодови во една книга. И секој контекст има број на прикачени резбари. Ако се погледне во текот на содржината на контекстот и печатење на одреден симбол или одредена класа на симболи, како што е потребно. Така да секој глас контекст, таму е [Беззвучен] белешки гравер дека е во основа на функција или објект кој пишува од сите белешки шефовите на десниот дел од една страница. Потоа, тука е една пукнатина гравер, која пишува надвор пукнатините на вработените. Потоа, тука е метроном марка гравер дека пишува надвор метроном ознаки во резултатот. И сите тие се вклопуваат убаво и во хиерархијата. И тоа е многу, многу, многу индивидуализира, која треба ако сакате да се работи како што. Па сите контексти имаат број на различни атрибути што може да ја менувате за сè од празно место за разни фонтот избор на големини на нештата. Ако сакате да се направи дури и покомплицирани работи, има вграден јазик за скриптирање. Тие ја користат шемата, која е дијалект на Lisp. Тие, веројатно, не значи ништо за вас. Но во основа, шема друга функционална програмски јазик, повеќе или помалку. СТЕФАН KREWSON: На тај-во. CONNOR Харис: Да. Тоа е добра тај-во, претпоставувам. И се користи како јазик на наставата, всушност, долу Маса Ave. На МИТ. И тоа е многу корисна за LillyPond за разни технички причини. И така, ако сакате да се направи едноставна измени зависни conditionals, за example-- има одредени состојба на резултат кој се сретнале, да направи измени на распоред или whatnot-- потоа овие објекти се таму. Тие се комплицирани. Значи тука е прилично едноставна кодот примерок. Тоа е пет линии. Во суштина, јас сум во дефинирање на две штабови. Тоа е во 3/4. Првиот кадар има спроведен темпо марка, но тоа е, всушност, ќе да одат за да на целиот рејтинг, поради темпото марки се на ниво на резултат. Гравер метроном марка е спроведен за гол контекст. Постојат различни клучеви, бидејќи [Беззвучен] гравер е спроведен штабови. Ти всушност може да направите е. Примерокот напишав е всушност, во C големи, но тоа е само за да демонстрираат ќе може да има различни клучеви во различни штабови. А основната синтакса е ти пишувам запишете ги имињата со E, F, G, сеедно. Ако сакате да се направи алтерации, ви наставка е или Шпанија. Ова е од холандските musicological конвенции. И да се направи октава скокови, ќе мора да се користи овие штиклирање, запирка или апостроф. Релативната само значи тоа што имате забелешка, тој автоматски ќе биде plaec во октава најблиску до претходниот. И ако сакате да скокаат над на fifth-- кажам една петтина или more-- тогаш ќе мора да го користат [Беззвучен]. Но во спротивно, да не мора да се наведете октава на кој секоја нота. И релативна Ц, премиери, и Ц, само наведете средно Ц и база Ц, особено првата белешки. Тогаш ќе мора овие штабови кои организираат овие два гласа или примероци на музиката, и имаш оценка. И тоа изгледа вака. Ако сакате да се земе време да се копија од тоа примерок од LillyPond кодот на претходната слајд надолу тука, а ти може да го напише за LillyPond себе. Знам дека имам нешто дека многу личи на ова. Значи има уште една технологија наречен Музика XML одржува со сосема различни луѓе. XML е текстуалните податоци structure-- јас не треба да се каже на податоци structure-- кажеме метафора мапа вид. И тоа е дизајниран да се одржи хиерархиска податоци многу добро. HTML, на пример, е еден вид на XML. И може да се каже, бидејќи тие на XML имаше сите загради агол и агол Држач за коса црта марки кои полиња покажуваат податоците. Јас не имаат кодекс пример од музиката на XML. Можете да го најдете. Во суштина, причина можеби ќе сакате за употреба на XML како преодна фаза е, прв од сите, тоа е формат на размена за основа every-- јас не треба да се каже секој, но голем број на различни резултат писатели. Па ако напишете во Музика XML, не само што може LillyPond ја чита со помош на оваа помошна програма наречена Музика XML да LY, но исто така може да се прочита Финале тоа, Сибелиус да го прочиташ. Во зависност од тоа како вашата внатрешна објект хиерархија работи за претставување на музиката, тоа може да биде полесно да се напише Музика за XML, отколку да LillyPond и само се потпираат на XML Музика да LY да се направи на конверзија. Јас не мислам дека [Беззвучен] има Музика XML. СТЕФАН KREWSON: Тоа не го прави тоа. Некој работи на тоа, иако. CONNOR Харис: Во ред. Euterpea нема Функција музика XML излез уште. Ако сакате конечна идеја на проектот, можеби и да стапат во контакт со момци Стефан го знае, а тие може да се користи вашата помош. СТЕФАН KREWSON: Јас не би сакал тоа. CONNOR Харис: Исто така, во основа, секој програмски јазици тоа е во вредност од неговата сол веќе има XML библиотека, за да можете да ги конвертирате сите внатрешно на вашата музика во некој објект дека на XML библиотека може да се напише дека ќе бара помалку измени на вашата внатрешна структура за што и музиката што се противи сакате да се напише, отколку што пишувате директно во LillyPond би. Потоа само да го испечатите со XML со на XML библиотеки на вашиот јазик, кој ќе гарантира дека тоа е синтаксички исправни и над сè, а потоа и да го претворите во LillyPond. Па технологија можеби ќе сакате да погледне во ако правиш нешто како ова. [Беззвучен], уште auxilarry технологија. Ова е во основа Техника Автор е на книгите или Техника Студио за LillyPond. Така што нуди помош со синтакса, со шаблони за различни заеднички комбинации на инструменти. Таа им овозможува на Сплит екран гледање така може да има вашиот код во еден прозорец и PDF во друг прозорец и кликнете на места во PDF за да скокнат до релевантни точки во вашиот изворен код. Ова е повеќе корисно ако сте, всушност, пишување LillyPond себе датотеки отколку ако сте генерирање ги програмски. Но, повторно, тоа е нешто корисно да се имаат. Одлично. Друг resources-- јас само ќе одат преку овој многу брзо. LillyPond manuals-- LillyPond има одлична документација на својата веб страница. Тие имаат упатство. Тие имаат референца синтакса. Тие имаат стотици снипети за разни мали нешта Ио би можеле да треба да направите за да се демонстрира различни способности. Ако сакате да ја користите јазик за скриптирање или да направи посеопфатна персонализации, потоа има internals референца на оваа адреса. Ако сакате да го користите Музичкиот XML, има дека URL, musicxml.com/tutorial. А потоа, ако ви треба за да дознаете шема затоа што всушност сакате да ја користите објектите скриптирање во LillyPond, тогаш има [Беззвучен] наречен Структурирани толкување на компјутерски програми, која не е само вториот Најголемата CS учебник некогаш written-- Ме најдете потоа, ако сакате да знаете она што мислам дека најголем еден is-- но тоа е исто така многу добар вовед во јазикот правилно. Нема да Ви треба повеќе од првите неколку секции. И тоа е тоа. Некакви прашања? СТУДЕНТСКИ: Каде можам да го симнете Вашиот генерирана Frere Жак да можам да го ставам на мојот iPod? СТЕФАН KREWSON: Па, можете да напишете до некои WAV фајлови во Euterpea. И имаш код. Тоа е на GitHub. Направете свој варијации на Frere Жак страна CS50 кошница умот. Тоа би било одлично. CONNOR Харис: Некој друг? СТЕФАН KREWSON: Ни треба подобар бас тапан, исто така. Тоа е навистина лошо. Студент: Euterpea не само што страна на составот, но signal-- СТЕФАН KREWSON: Да. Всушност, работата јас правеше во Euterpea кога јас зеде this-- постои постдипломски курс во Јеил, кој користи it-- беше на звучна синтеза. Па таму е навистина убав начин со користење на стрелките а некои од нотација видовме на компонирањето заедно сигнал функции. Поточно, на бас за повеќето од нив е само едноставна синус бран. Но, ако почнете компонирањето оние во чудни програмски начини, можете да добиете луд звук ефекти, како чудно каскади. Можете да се создаде многу интересен се огласува со многу модулација. Јас не од проектот на гранули синтеза, што е некаде помеѓу ФМ и земање мостри. Ве однесе многу мал, малку примероци, а потоа да ги комбинирате со некој вид на модулатор и да се изгради до побогат звук. Ние, исто така, направи физичко моделирање, па обидувајќи се да се размислува за физика и psychoacoustics на нешто како труба, размислува за начинот на кој звукот се бие надвор ѕвончето на труба и акустиката на собата и моделирање дека со основните осцилатори. CONNOR Харис: Благодарение толку многу. Ви благодариме за кои доаѓаат. И јас сум секогаш подготвени да одговараше на прашања од страна email-- connorharris@college.harvard.edu. СТЕФАН KREWSON: Да. stephen.krewson@yale.edu. Кул.