1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR Харис: Здраво. 3 00:00:05,930 --> 00:00:06,820 Јас сум Конор Харис. 4 00:00:06,820 --> 00:00:09,729 Јас сум CS50 ЦУ на Харвард. 5 00:00:09,729 --> 00:00:11,270 СТЕФАН KREWSON: Јас сум Стефан Krewson. 6 00:00:11,270 --> 00:00:12,582 Јас сум ТФ за CS50 на Јеил. 7 00:00:12,582 --> 00:00:15,790 CONNOR Харис: И ние ќе треба да се зборува за некои технологии кои можеби 8 00:00:15,790 --> 00:00:18,880 сакате да го користите, ако сте заинтересирани правејќи го финалниот проект или навистина 9 00:00:18,880 --> 00:00:20,920 нешто со музика. 10 00:00:20,920 --> 00:00:24,400 Ние ќе треба да се фокусира на прво програмски јазик наречен Хаскел. 11 00:00:24,400 --> 00:00:26,280 Тоа е функционален јазик, па на парадигмата 12 00:00:26,280 --> 00:00:29,620 е многу различен од C или PHP или други императив јазици 13 00:00:29,620 --> 00:00:33,450 кога сте веќе во употреба, а особено на библиотека напишани во Хаскел 14 00:00:33,450 --> 00:00:40,240 наречен Euterpea, која може да им помогне на луѓето со пишување на музика функционално, 15 00:00:40,240 --> 00:00:40,780 основа. 16 00:00:40,780 --> 00:00:43,400 И Стефан ќе ви прошетка преку одличен пример за тоа. 17 00:00:43,400 --> 00:00:46,423 >> По ова, јас ќе те запознаам со нешто што се нарекува LillyPond, која 18 00:00:46,423 --> 00:00:48,370 е технологија за наборен музика. 19 00:00:48,370 --> 00:00:50,830 Тоа е вид на како LaTeX за музика ако некој од вас 20 00:00:50,830 --> 00:00:57,530 Го употребив LaTeX за математика класи или останатите Р сет класи или она што го имате. 21 00:00:57,530 --> 00:01:00,440 И така јас ќе ви даде, пак, некои едноставни примери за тоа 22 00:01:00,440 --> 00:01:03,640 и да ви точка во општа насока на некои подобри ресурси. 23 00:01:03,640 --> 00:01:04,319 >> СТЕФАН KREWSON: Во Покрај тоа, ние го мислев 24 00:01:04,319 --> 00:01:06,720 би било кул да се постави малку совети 25 00:01:06,720 --> 00:01:10,780 кон гасоводот меѓу Euterpea генерирани MIDI датотеки 26 00:01:10,780 --> 00:01:13,910 во LillyPond, па ние се обезбеди некои настава на скрипти 27 00:01:13,910 --> 00:01:16,310 да го направите тоа, кои се обезбедени со LillyPond 28 00:01:16,310 --> 00:01:19,160 само за да се задржи отворен код и да се добие гасоводот оди. 29 00:01:19,160 --> 00:01:20,910 CONNOR Харис: Повторно, треба да се истакне, 30 00:01:20,910 --> 00:01:23,100 овие две технологии, ќе не треба да ги користите заедно. 31 00:01:23,100 --> 00:01:25,370 Тие не се дизајнирани да работат заедно, иако тоа го прават многу убаво. 32 00:01:25,370 --> 00:01:26,362 >> СТЕФАН KREWSON: Добро. 33 00:01:26,362 --> 00:01:30,116 И потполно бесплатно. 34 00:01:30,116 --> 00:01:32,240 CONNOR Харис: Значи признанија, само да читате тоа. 35 00:01:32,240 --> 00:01:33,406 СТЕФАН KREWSON: испочитувана. 36 00:01:33,406 --> 00:01:36,360 Благодарение на овие луѓе. 37 00:01:36,360 --> 00:01:39,180 Ова ќе лебдеат само за момент. 38 00:01:39,180 --> 00:01:41,560 На процесот на инсталација е малку незгодно. 39 00:01:41,560 --> 00:01:45,420 Имаме ме читаат на GitHub дека можете да ги погледне. 40 00:01:45,420 --> 00:01:47,840 Само ми е-мејл ако имате било какви прашања. 41 00:01:47,840 --> 00:01:52,829 Но, ние ќе го стартувате овој под претпоставка дека ова е работа за секого. 42 00:01:52,829 --> 00:01:55,620 CONNOR Харис: И ако не може да добијат LillyPond на работа, нема ништо страшно. 43 00:01:55,620 --> 00:02:00,139 Нема живо компилација која ќе бидат вклучени, барем на мојот крај. 44 00:02:00,139 --> 00:02:02,930 СТЕФАН KREWSON: Хаскел и LillyPond треба и двете имаат монтери. 45 00:02:02,930 --> 00:02:08,497 Euterpea е симнат како пакет, така натаму и така натаму. 46 00:02:08,497 --> 00:02:10,080 Значи зборуваме за компјутер музика. 47 00:02:10,080 --> 00:02:12,990 И ова е само еден многу Поглед 50.000 нога. 48 00:02:12,990 --> 00:02:15,700 Има неколку различни аспекти од него. 49 00:02:15,700 --> 00:02:18,120 И ова е груба и е случува да се прикријат некои детали. 50 00:02:18,120 --> 00:02:22,090 Но би можеле да се мисли на нешто како алгоритамски состав, 51 00:02:22,090 --> 00:02:24,920 користење на алгоритми, користење на кодот, за да генерирате 52 00:02:24,920 --> 00:02:30,280 некои од типот of-- можеби слична на себе Редоследот на белешки, или можеби белешки 53 00:02:30,280 --> 00:02:33,330 под некои ограничувања. 54 00:02:33,330 --> 00:02:35,350 А потоа тие би можеле да бидат извршени или толкува 55 00:02:35,350 --> 00:02:38,390 со аналогни инструменти или нешто слично. 56 00:02:38,390 --> 00:02:42,010 Но составот беше направено алгоритамски. 57 00:02:42,010 --> 00:02:45,120 >> Но, се разбира, можеби и од областа на компјутерски музика или дигитална музика 58 00:02:45,120 --> 00:02:48,870 ние сме повеќе запознаени со е дигитален звучна синтеза или дигитален земање мостри 59 00:02:48,870 --> 00:02:51,160 и дигитален запис. 60 00:02:51,160 --> 00:02:55,650 Многу дигитални инструменти се направи преку дигитални земање мостри. 61 00:02:55,650 --> 00:03:00,110 Всушност, ние ќе бидеме со користење на еден од оние во форма на звук библиотека фонтот подоцна. 62 00:03:00,110 --> 00:03:02,850 >> Но, постои и нешто што се нарекува дигиталниот синтисајзер што излезе 63 00:03:02,850 --> 00:03:08,650 од крајот на 70-тите и во 80-те со Јамаха и Џон Chowning на Стенфорд 64 00:03:08,650 --> 00:03:11,990 прави ФМ синтеза или Синтеза фреквенција модулација, 65 00:03:11,990 --> 00:03:15,100 каде што имаше носач сигнал и модулирање на сигналот 66 00:03:15,100 --> 00:03:18,270 и во аудио спектар. 67 00:03:18,270 --> 00:03:22,570 Но, она што ние сме фокусирани на денес е нешто што се нарекува MIDI, 68 00:03:22,570 --> 00:03:25,040 и, се разбира, алгоритамски состав. 69 00:03:25,040 --> 00:03:30,940 >> Ние нема да се направи инструменти, но ние сме наместо случува да се направи некои музика, 70 00:03:30,940 --> 00:03:33,940 и тогаш тоа ќе се толкува од страна на некои инструменти кои 71 00:03:33,940 --> 00:03:38,300 се сообразни на генерален MIDI стандард. 72 00:03:38,300 --> 00:03:40,830 Значи она што е MIDI? 73 00:03:40,830 --> 00:03:45,550 Јас не одам за да се добие премногу длабоко во неа, но MIDI е протокол за пренос на податоци. 74 00:03:45,550 --> 00:03:49,250 Тоа е еден вид на водич низ различни компании и индустрии 75 00:03:49,250 --> 00:03:52,250 за организирање на звуци или закрпи. 76 00:03:52,250 --> 00:03:54,170 Па ќе видиме дека има еден стандард MIDI 77 00:03:54,170 --> 00:03:57,500 за сите различни ударни звуци и препораки MIDI 78 00:03:57,500 --> 00:04:01,360 за сите на различни видови на синтисајзер или различни видови на сите инструмент 79 00:04:01,360 --> 00:04:03,650 групи во оркестар, велат. 80 00:04:03,650 --> 00:04:08,916 >> Сигурно сте запознаени со Од 0 до 127 MIDI пораки. 81 00:04:08,916 --> 00:04:12,920 А MIDI сигнал е типично еден бит укажува 82 00:04:12,920 --> 00:04:16,130 без разлика дали е на податоци или статус пакет, а потоа има 83 00:04:16,130 --> 00:04:18,589 седум парчиња на сигнал. 84 00:04:18,589 --> 00:04:21,430 И овие може да се контролира сè, од волуменот 85 00:04:21,430 --> 00:04:25,330 на дејството или притисок на одредена клуч 86 00:04:25,330 --> 00:04:29,400 ако сте вршење со MIDI контролор, како и, се разбира, 87 00:04:29,400 --> 00:04:31,250 белешки. 88 00:04:31,250 --> 00:04:33,450 И, се разбира, има MIDI исклучително корисна, 89 00:04:33,450 --> 00:04:37,550 затоа што тоа е еден начин да се жица заедно или паричка синџир 90 00:04:37,550 --> 00:04:41,570 еден куп на MIDI хардверски уреди. 91 00:04:41,570 --> 00:04:44,050 Имам седум или осум назад во мојата куќа. 92 00:04:44,050 --> 00:04:46,610 Станува навистина комплицирано, но тоа е навистина моќна. 93 00:04:46,610 --> 00:04:47,460 И тоа е навистина стара. 94 00:04:47,460 --> 00:04:51,117 Тоа е од почетокот на 80-те, и Тоа е навистина убаво и мали. 95 00:04:51,117 --> 00:04:51,950 CONNOR Харис: Да. 96 00:04:51,950 --> 00:04:54,230 Сите класичен Нинтендо видео игри најверојатно ќе го 97 00:04:54,230 --> 00:04:56,088 имаат MIDI датотеки за музика, на пример. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> СТЕФАН KREWSON: Еве еден пример за општите MIDI, 100 00:05:01,740 --> 00:05:06,520 MIDI покажува како еден вид од општ протокол. 101 00:05:06,520 --> 00:05:13,280 И мислам дека ние може да се мисли на Разликата меѓу спецификација 102 00:05:13,280 --> 00:05:17,830 дека треба да има нешто како овие инструменти звучи и вистинскиот 103 00:05:17,830 --> 00:05:21,740 Реализацијата на овие инструменти се огласува во солидно фонт или посебен MIDI 104 00:05:21,740 --> 00:05:25,740 синтисајзер, како да бидат разликата помеѓу можеби typeface-- кој вели: 105 00:05:25,740 --> 00:05:30,350 Во принцип, ова е дизајнот на овој конкретен начин да се претставуваат 106 00:05:30,350 --> 00:05:35,907 characters-- и одреден фонт што има специфична големината и бојата на звукот, 107 00:05:35,907 --> 00:05:37,240 и таму е реализација на the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR Харис: Можеби подобра споредба би 109 00:05:39,156 --> 00:05:43,430 биде стандард Уникод says-- го дава голем број на секој карактер, и навистина 110 00:05:43,430 --> 00:05:46,830 на сите јазици во светот, или огромен сет на скрипти на јазикот 111 00:05:46,830 --> 00:05:51,310 во светот, а потоа тие се изречена во нешто графички 112 00:05:51,310 --> 00:05:53,710 од страна на разни пакети фонт. 113 00:05:53,710 --> 00:05:56,630 И очигледно, што може да замислите MIDI како Уникод на звукот. 114 00:05:56,630 --> 00:06:03,250 И тоа е само листа of-- голем прилив на настани и инструменти и какво ли не, 115 00:06:03,250 --> 00:06:06,090 и што треба да се има посебен програма, како фонт, 116 00:06:06,090 --> 00:06:08,537 за да го направи тоа во нешто што е разбирлив. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> СТЕФАН KREWSON: Па зошто Хаскел? 119 00:06:13,780 --> 00:06:19,110 Хаскел е функционално програмирање јазик, многу напредни, 120 00:06:19,110 --> 00:06:22,770 многу различни од С, многу различни од PHP. 121 00:06:22,770 --> 00:06:28,120 И ние ќе треба да се види дека има една леснотија на функцијата состав во Хаскел 122 00:06:28,120 --> 00:06:37,640 што ќе ни овозможи да бриз преку составувате или пишување до, транскрипција, 123 00:06:37,640 --> 00:06:42,160 нешто како Frere Жак, оваа едноставна песна 124 00:06:42,160 --> 00:06:46,815 има многу делови во него кои сами се слични или повторување. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Па ова ќе биде дел од мотивација за тоа зошто 127 00:06:53,250 --> 00:06:59,400 ние сме со користење Хаскел, во која функции се граѓани од прва класа. 128 00:06:59,400 --> 00:07:01,120 >> И сакав да се прошири ова малку. 129 00:07:01,120 --> 00:07:08,800 Тоа е малку лесно да се notate Frere Жак во Хаскел. 130 00:07:08,800 --> 00:07:12,100 Но, што ако сакавме да додадете тапан дел за да го? 131 00:07:12,100 --> 00:07:17,320 Што ако сакаме да се обидат да се направи нешто како Ролан 808 или 909 тапан 132 00:07:17,320 --> 00:07:20,970 машина каде што треба околу 16 различни чекори? 133 00:07:20,970 --> 00:07:24,590 Обично овие се смета како 16-ти белешки. 134 00:07:24,590 --> 00:07:28,640 И можете да ги контролирате на глобалната темпо, и можете да го одберам 135 00:07:28,640 --> 00:07:34,620 еден куп на различни ударни делови на бас тапан, трипер, различни примки, 136 00:07:34,620 --> 00:07:37,540 отворен и затворен висок капи на овие вид на канали, 137 00:07:37,540 --> 00:07:41,600 а потоа можете да EQ или приспособат нивниот обем. 138 00:07:41,600 --> 00:07:45,290 >> И ќе видиме еден убав начин во Хаскел на претставување на овој чекор 139 00:07:45,290 --> 00:07:48,810 sequencer со сите разни кул работи во Хаскел 140 00:07:48,810 --> 00:07:53,100 можеме да направиме со генерирање листи и филтрирање над листи, 141 00:07:53,100 --> 00:07:56,060 мапирање над листи, мапирање функции над листи. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 И брзо извинување. 144 00:08:00,760 --> 00:08:05,300 Ова е многу површно и премногу брзо скица 145 00:08:05,300 --> 00:08:07,620 на некои од аспектите на Хаскел и Euterpea, 146 00:08:07,620 --> 00:08:11,760 кој е домен-специфични вградени јазикот напишани 147 00:08:11,760 --> 00:08:14,970 во Хаскел за музички типови. 148 00:08:14,970 --> 00:08:17,350 Затоа ве молам проверете го кодот онлајн. 149 00:08:17,350 --> 00:08:22,404 Оган до GHCI, кој е во Глазгов Хаскел компајлерот преведувач. 150 00:08:22,404 --> 00:08:24,320 И јас ќе се прави на некои на овој во малку 151 00:08:24,320 --> 00:08:25,880 па можете да видите како се прави тоа. 152 00:08:25,880 --> 00:08:31,021 >> И ова ви овозможува да се вчита во со the-- синтаксата е на дебелото црево, а потоа 153 00:08:31,021 --> 00:08:31,520 команда. 154 00:08:31,520 --> 00:08:33,510 Може да се вчита во датотеки. 155 00:08:33,510 --> 00:08:36,840 Можете да го користите да пребарувате на оние датотеки за да ја видите сите функции кои 156 00:08:36,840 --> 00:08:39,169 постојат во одреден модул. 157 00:08:39,169 --> 00:08:43,850 А потоа како што ќе видиме, видови и видот класи се толку важни во Хаскел, 158 00:08:43,850 --> 00:08:48,850 па секогаш можете да check-- особено ако си работат на нов DSCL 159 00:08:48,850 --> 00:08:51,600 како овој, што е еден вид на музика? 160 00:08:51,600 --> 00:08:55,114 Знам за начинот нумерички видови работа во Хаскел, 161 00:08:55,114 --> 00:08:56,530 но јас не знам многу за музиката. 162 00:08:56,530 --> 00:09:01,280 Но, можете да се истражуваат начин тие се дефиниран со користење на овој тип на T или команда 163 00:09:01,280 --> 00:09:04,577 а потоа се повикува во определен функција или објект за податоци. 164 00:09:04,577 --> 00:09:05,410 CONNOR Харис: Да. 165 00:09:05,410 --> 00:09:09,820 Ако мислеше Ц и ѕвекот беше hardass за видовите, 166 00:09:09,820 --> 00:09:11,230 вие немате идеја за Хаскел. 167 00:09:11,230 --> 00:09:14,230 Добрата работа во врска Хаскел е дека дали можете да добиете вашиот код за компајлирање 168 00:09:14,230 --> 00:09:16,790 и ако проверки тип Хаскел, тоа е веројатно е во право, 169 00:09:16,790 --> 00:09:18,675 затоа што системот на типот е толку строг. 170 00:09:18,675 --> 00:09:20,090 >> СТЕФАН KREWSON: Да. 171 00:09:20,090 --> 00:09:21,980 Па јас само сакам да одам through-- и повторно, 172 00:09:21,980 --> 00:09:27,160 ова не е тоа тоа justice-- неколку од карактеристиките на Хаскел дека, барем 173 00:09:27,160 --> 00:09:31,780 на своите creators-- и тоа беше создаден во доцните 1980-ти од страна на еден куп на луѓе, 174 00:09:31,780 --> 00:09:34,610 комисија од околу 20 people-- мислевме дека биле важни. 175 00:09:34,610 --> 00:09:36,850 И првото нешто што тие наведени во документ кој 176 00:09:36,850 --> 00:09:41,890 опишани генезата на Хаскел во текот на првите 20 години или така 177 00:09:41,890 --> 00:09:43,390 беше тоа што беше мрзелив. 178 00:09:43,390 --> 00:09:44,990 Па што значи тоа? 179 00:09:44,990 --> 00:09:49,860 >> Па, тоа значи кога имаме некој вид на изразување, ние треба да го оцени. 180 00:09:49,860 --> 00:09:54,390 И Хаскел прави на повик од страна на потребата начин или не-строги начин. 181 00:09:54,390 --> 00:09:57,250 Тоа е, ако имаме еден куп на компоненти на нашите изразување, 182 00:09:57,250 --> 00:10:00,660 ние се обидуваме да го одложи евалуација на оние поткомпоненти 183 00:10:00,660 --> 00:10:05,300 до апсолутната последно minute-- односно додека не ние всушност им треба. 184 00:10:05,300 --> 00:10:08,480 >> Па ова means-- која е навистина кул, особено 185 00:10:08,480 --> 00:10:13,200 ако ние сме размислување за апстракција на музички чекор sequencer. 186 00:10:13,200 --> 00:10:16,740 Ви вклучете го, и ќе почнете водење на чекор sequence-- 187 00:10:16,740 --> 00:10:20,010 ако некогаш работел со барабан machine-- и тоа само оди засекогаш. 188 00:10:20,010 --> 00:10:24,650 Па тоа ќе биде навистина убаво кога би би можеле да се емулира дека во Хаскел. 189 00:10:24,650 --> 00:10:31,040 И ние може да го направи тоа со бесконечна вредности, особено бесконечна листи. 190 00:10:31,040 --> 00:10:35,860 Тоа е многу лесно да напишеш една бескрајна листа во Хаскел. 191 00:10:35,860 --> 00:10:39,230 Вие само може да се користи на синтаксата надолу тука, каде што ќе видите од 1 до 3, 192 00:10:39,230 --> 00:10:42,440 отстранување на 3 1 точка точка, а дека е бесконечна листа 193 00:10:42,440 --> 00:10:46,960 на сите природни броеви проширување колку што можете да замислите. 194 00:10:46,960 --> 00:10:49,925 >> Сакам да се воведе Концептот на наборите веднаш. 195 00:10:49,925 --> 00:10:51,800 И повторно, со цел на овој семинар е 196 00:10:51,800 --> 00:10:55,770 да се запознаат со набори во Хаскел или повисоки функции ред. 197 00:10:55,770 --> 00:10:59,640 Но, јас само сакам да го запознаам даде точна чувство за тоа колку чудно 198 00:10:59,640 --> 00:11:03,700 Хаскел е и колку е моќна. 199 00:11:03,700 --> 00:11:08,000 А особено, ние ќе треба да be-- кога тоа го правиме нашите различни тапан делови, 200 00:11:08,000 --> 00:11:12,790 ние ќе треба да се манипулира со списоци на броеви, виткање ги кон едни со други. 201 00:11:12,790 --> 00:11:17,290 И да го стори тоа, ние ќе да биде со користење на мапи и набори. 202 00:11:17,290 --> 00:11:21,770 >> Има право асоцијативна свитка, што е и оваа во право 203 00:11:21,770 --> 00:11:26,990 here-- 1 минус количината, 2 минус количината, 3 минус 0. 204 00:11:26,990 --> 00:11:29,170 И синтакса за пати, да ви даде пати 205 00:11:29,170 --> 00:11:34,680 база на вредност, а потоа една operation-- во овој случај, додавање или одземање. 206 00:11:34,680 --> 00:11:36,280 Сум ги прикажувал двата случаи. 207 00:11:36,280 --> 00:11:41,760 А тука е и акумулаторот кој се акумулира во текот на целата листа, 208 00:11:41,760 --> 00:11:46,330 примена на тој оператор плус или минус, а потоа се акумулира. 209 00:11:46,330 --> 00:11:52,680 Па ова ќе биде the-- ако тоа се викаше со фалта r плус од 0, почнувајќи со 0, 210 00:11:52,680 --> 00:11:54,720 тогаш ние ќе ги сумира сите броеви во таа листа. 211 00:11:54,720 --> 00:11:57,134 И тоа е листа од 1 до 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR Харис: Значи да го стави на друг Патем, пати r прифаќа три аргументи. 213 00:12:00,050 --> 00:12:02,540 Има функција која се зема два аргументи, 214 00:12:02,540 --> 00:12:05,400 тогаш има вредност стартер, и има листа на вредности. 215 00:12:05,400 --> 00:12:08,570 И што можете да направите е да се земе стартер вредност, првата вредност, 216 00:12:08,570 --> 00:12:09,850 ги стави во функција. 217 00:12:09,850 --> 00:12:11,607 Што сакаш да се излезе, се земе дека, храна која 218 00:12:11,607 --> 00:12:13,940 во функција на Вториот вредност, што ќе излезеш, 219 00:12:13,940 --> 00:12:16,690 се земе дека, што се хранат во функција на третата вредност. 220 00:12:16,690 --> 00:12:18,740 А потоа, ако одат надолу Целата оваа листа на овој начин, 221 00:12:18,740 --> 00:12:22,970 си оди за да се добие на крајот некои единствена вредност, тоа е 222 00:12:22,970 --> 00:12:25,720 од ист вид на она што го започна надвор со и од ист вид 223 00:12:25,720 --> 00:12:29,147 како што работите во списокот, а потоа тоа е резултат на враќањето на пати Р. 224 00:12:29,147 --> 00:12:31,980 СТЕФАН KREWSON: Значи, особено, овие се повисоки функции, со цел, 225 00:12:31,980 --> 00:12:34,460 бидејќи тие се земајќи друг функционираат како еден од аргументите. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR Харис: Да. 227 00:12:34,770 --> 00:12:37,820 Ако сте користеле одредени други languages-- Знам Р [Беззвучен] 228 00:12:37,820 --> 00:12:41,510 јазик има ова, наречен намали. 229 00:12:41,510 --> 00:12:45,460 Може да имаат слични функции на други јазици, само се нарекува 230 00:12:45,460 --> 00:12:48,160 различни нешта. 231 00:12:48,160 --> 00:12:50,680 >> СТЕФАН KREWSON: А Што е убаво за Р пати 232 00:12:50,680 --> 00:12:53,880 во овој случај е тоа што пати Д може да работи со бесконечни списоци. 233 00:12:53,880 --> 00:12:59,490 Така што во овој дното, ова П5 е генерирање на белешки кои 234 00:12:59,490 --> 00:13:03,120 се вклучени во чекор sequencer за некои тапан дел, петтиот барабан дел, 235 00:13:03,120 --> 00:13:05,480 а можеби и тоа е конга тапан или нешто. 236 00:13:05,480 --> 00:13:09,719 И ова е намерно тап начин на пишување на оваа, 237 00:13:09,719 --> 00:13:11,510 но тоа е забавно, бидејќи тоа покажува многу 238 00:13:11,510 --> 00:13:14,460 работи во врска Хаскел и Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Толку пати R на овој colon-- дебелото црево е обичен оператор дека турка работите 240 00:13:20,650 --> 00:13:25,700 заедно на list-- повика на празен листа, што е само празни загради. 241 00:13:25,700 --> 00:13:28,250 И јас го повикувам дека на оваа бескрајна листа. 242 00:13:28,250 --> 00:13:31,570 Ова е всушност двете листи собираат овде долу. 243 00:13:31,570 --> 00:13:37,150 Листата запирка 1 точка 6 точка е 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Па Haskell-- во само неколку карактери, можете 245 00:13:39,750 --> 00:13:42,420 може да генерира целиот секвенца на броеви 246 00:13:42,420 --> 00:13:46,240 кои се пет броеви, освен се протега до бесконечност. 247 00:13:46,240 --> 00:13:49,860 И јас Вметни на онаа ова малку пократок list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- само за да ви покаже како може да concatenate листи. 249 00:13:54,370 --> 00:13:55,790 >> И тогаш сум повлечен за себе. 250 00:13:55,790 --> 00:14:01,510 И овој завршува само да биде еден вид на операција идентитет, но тоа е бесконечна. 251 00:14:01,510 --> 00:14:06,070 И преклопете Д може да го направи тоа, затоа што мрзеливо се оценува, како и претходниот. 252 00:14:06,070 --> 00:14:10,582 Ако имаме 1 и 2 и 3, можеме да само заградата го целиот остатокот од неа. 253 00:14:10,582 --> 00:14:12,290 Дека нема да работат за минус или плус, но тоа 254 00:14:12,290 --> 00:14:17,760 ќе работат за оваа дебелото црево операција идентитетот на листата. 255 00:14:17,760 --> 00:14:24,620 >> Па, како да ги употребат практично дека ако ние имаат бескрајно долга листа на работи? 256 00:14:24,620 --> 00:14:26,500 Па, Хаскел обезбедува многу functions-- 257 00:14:26,500 --> 00:14:29,450 и да бараат повеќе во овие во свој time-- како што ги 258 00:14:29,450 --> 00:14:32,200 во која се вели, во ред, ние сме генерирање на оваа бескрајна листа, 259 00:14:32,200 --> 00:14:35,950 но ние сме само ќе биде потребно извесно број на ИТ и во овој case-- 260 00:14:35,950 --> 00:14:38,410 ќе видиме подоцна, во ова нашите тапан машина code-- 261 00:14:38,410 --> 00:14:43,740 ГМ е само некој вид на глобална променлива за бројот на чекори 262 00:14:43,740 --> 00:14:44,610 во sequencer. 263 00:14:44,610 --> 00:14:47,630 На машини напомна во I ви покажа, тоа е обично 16, 264 00:14:47,630 --> 00:14:51,475 но јас го спроведува со 32. 265 00:14:51,475 --> 00:14:54,470 Тоа навистина не е важно. 266 00:14:54,470 --> 00:15:00,230 >> Хаскел е исто така чиста, така што има силна статички пишување дека Конор алудира. 267 00:15:00,230 --> 00:15:03,220 Па функции се математички во sense-- 268 00:15:03,220 --> 00:15:06,600 тие се повеќе математички дека тие се загарантирани 269 00:15:06,600 --> 00:15:11,530 да нема пристап или да го промените било кој вид на променлива или вршење влез или излез. 270 00:15:11,530 --> 00:15:14,420 Значи, ако имате некоја функција, тоа е детерминистички. 271 00:15:14,420 --> 00:15:17,400 Тоа секогаш ќе се врати на истиот вредност во состојбата на програмата 272 00:15:17,400 --> 00:15:19,310 или остануваат исти. 273 00:15:19,310 --> 00:15:22,940 Постојат, се разбира, monadic исклучоци на ова, но тоа е надвор од рамките на нашите надлежности. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR Харис: Да. 275 00:15:23,900 --> 00:15:26,946 Што значи тоа, сепак, е таму неколку важни [Беззвучен] 276 00:15:26,946 --> 00:15:27,820 Последиците од ова. 277 00:15:27,820 --> 00:15:30,940 Една од нив е дека тоа е многу лесно да се parallelize Хаскел програми. 278 00:15:30,940 --> 00:15:32,773 Затоа што ако имаш, велат, функција на која 279 00:15:32,773 --> 00:15:36,064 треба да работат на еден милион вредности, ако знаете дека функцијата ќе секогаш 280 00:15:36,064 --> 00:15:39,280 даде од иста вредност, ако ќе се хранат во одреден value-- 281 00:15:39,280 --> 00:15:43,055 ако сте [Беззвучен] ѓ од 1, ѓ на 2, тогаш f од 3 или whatnot-- f од 1 282 00:15:43,055 --> 00:15:45,180 не се случува да се напише во датотека или да направи нешто 283 00:15:45,180 --> 00:15:46,850 дека ќе ја промени вредноста на F2. 284 00:15:46,850 --> 00:15:50,220 Вие само може да се подели на оваа функција на милиони различни машини или еден милион 285 00:15:50,220 --> 00:15:54,720 различни теми или што и да, ги добиете сите одговори назад, 286 00:15:54,720 --> 00:15:56,900 ги добиете сите вредности на враќање назад, а потоа тоа е тоа. 287 00:15:56,900 --> 00:15:59,780 Така многу лесно да се parallelize работи. 288 00:15:59,780 --> 00:16:03,140 >> Во надолна линија е дека влез и излез особено 289 00:16:03,140 --> 00:16:05,720 вклопат во системот тип во многу комплицирана начини. 290 00:16:05,720 --> 00:16:09,010 Ние не би навлегувал во тоа токму сега, но јас Ги охрабрувам да се погледне во некои ресурси 291 00:16:09,010 --> 00:16:11,175 онлајн, ако сакате да дознаете повеќе за тоа. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> СТЕФАН KREWSON: Значи напишете classes-- и ова 294 00:16:16,550 --> 00:16:21,610 was-- класи на видови биле измислени за да се реши 295 00:16:21,610 --> 00:16:24,160 проблем на оператор преоптоварување. 296 00:16:24,160 --> 00:16:27,590 Па сакавме да има еднаквост помеѓу различните видови на нештата. 297 00:16:27,590 --> 00:16:31,040 Се разбира, ние може да се размислува of-- еднаквост меѓу нумерички видови 298 00:16:31,040 --> 00:16:34,720 Многу е лесно да се размислува за, но она што за еднаквост меѓу листи? 299 00:16:34,720 --> 00:16:37,610 Она што за еднаквост меѓу дрво структури нога податоци? 300 00:16:37,610 --> 00:16:43,130 И сево ова е можно во Хаскел поради видот класи. 301 00:16:43,130 --> 00:16:48,000 >> Значи, ако ви се дефинира одреден type-- податоци и овде, овие се музички терени. 302 00:16:48,000 --> 00:16:50,960 Ние сме конечно добивање некои компјутерски музика. 303 00:16:50,960 --> 00:16:57,420 Значи ние треба C, C остар, и така натаму и така натаму. 304 00:16:57,420 --> 00:17:01,080 Тие припаѓаат на еден куп на различни класи тип. 305 00:17:01,080 --> 00:17:03,510 EQ-- тие припаѓаат на класата на видот должини. 306 00:17:03,510 --> 00:17:06,780 Тоа значи дека тие го поддржуваат операции еднаквост. 307 00:17:06,780 --> 00:17:12,650 За да може да се оцени дали една Редоследот на музички примитивците 308 00:17:12,650 --> 00:17:15,400 е иста како и еден поинаков. 309 00:17:15,400 --> 00:17:17,280 >> Тие припаѓаат на редниот класа. 310 00:17:17,280 --> 00:17:19,479 Тоа значи дека таму е нарачување на овие. 311 00:17:19,479 --> 00:17:27,670 Д доаѓа по В. С остри доаѓа откако Ц, како и. 312 00:17:27,670 --> 00:17:29,840 Тие припаѓаат на класата покаже, што значи дека тие можат да 313 00:17:29,840 --> 00:17:33,000 да се отпечатат на конзола или терминал. 314 00:17:33,000 --> 00:17:36,090 Тие припаѓаат на класа набројани, кои 315 00:17:36,090 --> 00:17:39,770 значи дека иако тоа се ликови, 316 00:17:39,770 --> 00:17:45,340 тие имаат основните нумерички застапеност со почеток во 0 317 00:17:45,340 --> 00:17:48,960 и си заминуваат преку сепак многу работи се тука, 20 или така, 318 00:17:48,960 --> 00:17:51,770 или 30 или 40, можеби. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR Харис: И кога имаме тип на податок 320 00:17:54,259 --> 00:17:57,050 derives-- дека со овој клучен збор "deriving--" одредена класа тип, 321 00:17:57,050 --> 00:18:01,160 тоа значи дека на компајлерот ќе се обиде да се изгради нешто автоматски. 322 00:18:01,160 --> 00:18:05,120 Па можеби ќе сакате да го се дефинира квалитетот поинаку. 323 00:18:05,120 --> 00:18:09,450 Ќе сакате да се дефинира С остри како што е еднаква на D рамен, на пример. 324 00:18:09,450 --> 00:18:11,560 Со овој градежен тука, јас не мислам дека С остри 325 00:18:11,560 --> 00:18:14,940 и Д рамен ќе бидат еднакви, бидејќи компајлерот автоматски ќе 326 00:18:14,940 --> 00:18:19,670 велат дека секој различен можна вредност се разликува од секоја друга. 327 00:18:19,670 --> 00:18:22,930 >> Па можно е да се замени имплементации стандардно 328 00:18:22,930 --> 00:18:25,730 на овие видови на класи. 329 00:18:25,730 --> 00:18:28,640 Повторно, погледнете во референтната ако што сакате да дознаете за тоа. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 СТЕФАН KREWSON: А тука, всушност, ова ќе 332 00:18:33,600 --> 00:18:36,930 да бидат од корист за кога ќе се кодира подоцна. 333 00:18:36,930 --> 00:18:42,150 Можеме да видиме некои од операторите на инфикс за секвенцијален состав, 334 00:18:42,150 --> 00:18:46,570 паралелно состав, и така натаму, овие предности и еднакви знаци 335 00:18:46,570 --> 00:18:48,620 опкружен со две точки. 336 00:18:48,620 --> 00:18:53,330 Тоа значи дека ние може да игра овие различни музички примитивците еден по друг. 337 00:18:53,330 --> 00:18:54,590 Тоа е секвенцијален состав. 338 00:18:54,590 --> 00:18:57,170 >> Или можеме да ги играат во паралелно во исто време. 339 00:18:57,170 --> 00:19:05,100 За да можам да има музичка вредност, и тогаш ова е еднакво и запирки, 340 00:19:05,100 --> 00:19:09,669 инфикс паралелно оператор состав, и да ги играат како еден вид на акорд. 341 00:19:09,669 --> 00:19:11,460 И ние ќе треба да се користи кога ние се комбинираат 342 00:19:11,460 --> 00:19:15,080 нашите тапан дел со нашите малку Frere Жак песна 343 00:19:15,080 --> 00:19:19,460 да играат овие две секвенци музички вредности во исто време. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying is-- Кари последен назив на Хаскел Кари, кој 346 00:19:29,250 --> 00:19:31,850 сликата Хаскел е именуван по. 347 00:19:31,850 --> 00:19:34,330 И ова ни овозможува убаво елеганција кога сме 348 00:19:34,330 --> 00:19:36,880 пишување на сите овие различни функции или филтри, дека ние сме 349 00:19:36,880 --> 00:19:39,330 ќе биде мапирање над нашите листи. 350 00:19:39,330 --> 00:19:42,810 А функција од две arguments-- ѓ на x и y-- 351 00:19:42,810 --> 00:19:46,630 може да се претстави како f на x се применува на y. 352 00:19:46,630 --> 00:19:49,800 Така, тоа е во функција на еден аргумент кој се враќа 353 00:19:49,800 --> 00:19:51,240 Друга функција на еден аргумент. 354 00:19:51,240 --> 00:19:56,962 Па тоа значи дека ние може да карта на функцијата f на x над Листа на y е. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Сакате да даде пример на ова? 356 00:19:58,920 --> 00:19:59,836 СТЕФАН KREWSON: Да. 357 00:19:59,836 --> 00:20:05,390 Јас имам еден пример од тука од некои од работите што ќе пишуваме. 358 00:20:05,390 --> 00:20:10,500 Па реплицираат 2-- добро, реплицираат ќе потрае 359 00:20:10,500 --> 00:20:13,040 една вредност, која е колку Времето да се реплицираат нешто, 360 00:20:13,040 --> 00:20:16,690 и тогаш тоа ќе биде потребно value-- обично листа или нешто. 361 00:20:16,690 --> 00:20:23,450 Па еве, ние сме мапирање реплицираат 2 во однос на друг список. 362 00:20:23,450 --> 00:20:27,440 >> Значи, ако ние мапираат реплицираат 2, ако се реплицираат 2 се применуваат 363 00:20:27,440 --> 00:20:31,890 на првиот елемент на овој list-- и овие се листи на музички phrases-- 364 00:20:31,890 --> 00:20:37,650 ќе произведува две на "вие sleeping--" па спиете, ви се спие. 365 00:20:37,650 --> 00:20:40,040 Така, сега имаме два. 366 00:20:40,040 --> 00:20:42,570 Но реплицираат потребни двајца аргументи, но бидејќи ние сме 367 00:20:42,570 --> 00:20:47,100 currying а потоа и мапирање, ние може да претставува реплицираат 2 368 00:20:47,100 --> 00:20:52,310 како да е врати како функција на еден argument-- реплицира само двапати. 369 00:20:52,310 --> 00:20:57,010 А потоа ние сме примена на тоа на секое елемент на оваа листа на фрази. 370 00:20:57,010 --> 00:21:01,900 >> И concat е Хаскел операција за изедначување листа. 371 00:21:01,900 --> 00:21:04,400 Бидејќи реплицираат 2 волја произведуваат листа на листи. 372 00:21:04,400 --> 00:21:06,660 И ова е ова средно форма овде. 373 00:21:06,660 --> 00:21:10,365 И така, тогаш можеме да CONCAT или израмните дека од двапати. 374 00:21:10,365 --> 00:21:12,240 CONNOR Харис: Поедноставна пример за currying, 375 00:21:12,240 --> 00:21:15,323 ако сакате like-- замисли ѓ е само множење функција која се потребни двајца 376 00:21:15,323 --> 00:21:16,840 аргументи и се враќа на нивните производи. 377 00:21:16,840 --> 00:21:19,320 Значи, ако имате ѓ 4 5, тоа е 20. 378 00:21:19,320 --> 00:21:22,670 Но, можете да мислам на тоа како also-- имаш функцијата f 4 379 00:21:22,670 --> 00:21:25,560 кој што се расправа и се враќа четири пати оваа argument-- само 380 00:21:25,560 --> 00:21:27,870 делумна апликација која само еден аргумент 4. 381 00:21:27,870 --> 00:21:31,182 И ако се хранат ѓ од 4 5, која ќе ви даде 20. 382 00:21:31,182 --> 00:21:32,890 А тоа е поедноставно пример за currying. 383 00:21:32,890 --> 00:21:34,473 Тоа е обично една од оние учебник. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> СТЕФАН KREWSON: Ламбда изрази или анонимни функции 386 00:21:42,110 --> 00:21:47,330 се друг Хаскел белег. 387 00:21:47,330 --> 00:21:51,242 Значи, ако ние треба да разбивам функција малку живот реплицира, 388 00:21:51,242 --> 00:21:52,950 но велат дека тоа не е во стандардната библиотека, 389 00:21:52,950 --> 00:21:56,150 може да се користат синтаксата слични на следниве. 390 00:21:56,150 --> 00:21:58,730 И ние ќе здив над ова. 391 00:21:58,730 --> 00:22:02,160 Едно нешто што ќе видите многу во тапан машина е ние сме прави повици 392 00:22:02,160 --> 00:22:05,790 до нешто што се нарекува филтер, кој како и досега, 393 00:22:05,790 --> 00:22:08,185 е мапирање на функција над листа, но тоа е 394 00:22:08,185 --> 00:22:10,260 мапирање на Булова функција. 395 00:22:10,260 --> 00:22:13,390 >> Значи имаме тука за пример на една анонимно 396 00:22:13,390 --> 00:22:19,150 дефинирани Булова функција што само трае неколку вредности. 397 00:22:19,150 --> 00:22:22,990 Ова не е строго говорејќи анонимен функција. 398 00:22:22,990 --> 00:22:25,850 Но, тоа е се дефинира со дека синтаксата за краткост, 399 00:22:25,850 --> 00:22:28,007 и тоа само ги зема х модул n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR Харис: Да. 401 00:22:28,840 --> 00:22:31,330 Па f е функција од два аргументи n и p 402 00:22:31,330 --> 00:22:35,440 кој се враќа функција која сама по себе е функција од еден аргумент, имено x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 СТЕФАН KREWSON: јас споменатите оператори инфикс. 405 00:22:40,690 --> 00:22:42,642 Кои се инфикс оператори? 406 00:22:42,642 --> 00:22:45,710 Па, инфикс оператори се нормален начин ние ги претставуваме операции, 407 00:22:45,710 --> 00:22:49,910 велат, во mathematics-- 2 плус 2 наместо преку операциониот плус 408 00:22:49,910 --> 00:22:51,202 а потоа два аргументи 2 и 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Тоа се вика обратна Полски нотација, што е 410 00:22:53,701 --> 00:22:55,330 термин јас се сомневам некој од вас да го знам. 411 00:22:55,330 --> 00:22:56,288 >> СТЕФАН KREWSON: Добро. 412 00:22:56,288 --> 00:22:58,290 Обратна лак или префиксот нотација. 413 00:22:58,290 --> 00:23:01,412 Но Хаскел одлучи да користете инфикс оператори. 414 00:23:01,412 --> 00:23:03,120 Значи овие се некои од обичајот оние кои 415 00:23:03,120 --> 00:23:07,770 се дефинирани за Euterpea DSCL во Хаскел. 416 00:23:07,770 --> 00:23:10,730 Така што ова е секвенцијален состав. 417 00:23:10,730 --> 00:23:16,340 Ова беше паралелна состав, и тоа беше truncating паралелно состав. 418 00:23:16,340 --> 00:23:18,710 А ние ќе треба тоа со нашите тапан машина, 419 00:23:18,710 --> 00:23:22,640 бидејќи ние ќе користат последните оператор во таа мала торка таму 420 00:23:22,640 --> 00:23:26,330 да се игра тапан машина заедно со нашите Frere Жак песна. 421 00:23:26,330 --> 00:23:28,650 И нашите тапан машина е ќе биде бесконечна. 422 00:23:28,650 --> 00:23:30,920 Тоа само игра засекогаш. 423 00:23:30,920 --> 00:23:32,692 Но Frere Жак песна не е. 424 00:23:32,692 --> 00:23:33,510 Тоа не е толку долго. 425 00:23:33,510 --> 00:23:36,610 Тоа е само неколку барови. 426 00:23:36,610 --> 00:23:43,030 Значи ние треба да се запре тапан машина како Штом пократок музички вредност доаѓа 427 00:23:43,030 --> 00:23:43,700 до крајот. 428 00:23:43,700 --> 00:23:46,980 И дека infixed оператор е супер корисни со тоа. 429 00:23:46,980 --> 00:23:50,090 >> И инфикс нотација како ова е вид на убаво, 430 00:23:50,090 --> 00:23:57,095 затоа што велат дека имаат функција како понуда, која им дава на поделеноста на цел број 431 00:23:57,095 --> 00:24:01,010 на x од нешто else-- За жал, тоа треба да биде и b. 432 00:24:01,010 --> 00:24:04,740 Вие би можеле да го пишувам како еден цитат од б. 433 00:24:04,740 --> 00:24:09,670 Значи, ако сте put-- елемент е уште еден пример за тоа. 434 00:24:09,670 --> 00:24:14,730 x елемент во некоја листа, ако се стави тоа во коси наводници, можете да го користите. 435 00:24:14,730 --> 00:24:20,400 Иако тоа не е симбол како плус или минус или времиња, 436 00:24:20,400 --> 00:24:24,630 можете да го користите името на функција, како што во коси наводници 437 00:24:24,630 --> 00:24:27,045 како оператор инфикс, што е прилично кул. 438 00:24:27,045 --> 00:24:29,670 CONNOR Харис: Повторно, ова е сите само синтаксички шеќер, навистина. 439 00:24:29,670 --> 00:24:32,310 Тоа не влијае на јадрото на јазикот. 440 00:24:32,310 --> 00:24:37,440 >> СТЕФАН KREWSON: Па ќе видиме тука за да ги последната реченица од нашите Frere Жак песна, 441 00:24:37,440 --> 00:24:45,740 Играв некои малку акорди или третини користат паралелна состав 442 00:24:45,740 --> 00:24:46,240 оператор. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Ова е уште еден начин да се каже некои од она што ние само се кажува. 445 00:24:54,950 --> 00:24:59,986 Па можете да карта функции на една расправија околу листи. 446 00:24:59,986 --> 00:25:02,860 CONNOR Харис: Повторно, референци за Haskell-- воведната учебници 447 00:25:02,860 --> 00:25:04,680 ќе ги имаат сите на овој во неа. 448 00:25:04,680 --> 00:25:07,790 >> СТЕФАН KREWSON: Па тука е прилично клучна линија на чекор sequencer 449 00:25:07,790 --> 00:25:12,820 ние ќе ги разгледаме во користење список со разбирање. 450 00:25:12,820 --> 00:25:17,810 И гледаме овде е тој елемент во фиксниот оператор за назад цитати. 451 00:25:17,810 --> 00:25:23,030 Значи, ако x е елемент од листата на Х, тогаш ние ќе ги повикате ПЕРК функции. 452 00:25:23,030 --> 00:25:25,100 Па ПЕРК е само функција перкусии. 453 00:25:25,100 --> 00:25:30,200 Таа ги зема некои вредност стр тоа е дел од граничи множество на сите 454 00:25:30,200 --> 00:25:35,310 тие звуци ударни што сме го виделе во претходниот слајд, 455 00:25:35,310 --> 00:25:38,840 и тогаш тоа го прави на тој Времетраењето на една четвртина нота. 456 00:25:38,840 --> 00:25:43,190 На друго место, тоа дава QNR и QNR е само една четвртина нота одмор. 457 00:25:43,190 --> 00:25:44,970 >> Значи ова е градење нешто убаво. 458 00:25:44,970 --> 00:25:52,110 Имаме листа на елементи, и ние ќе јамка околу некои листа од еден 459 00:25:52,110 --> 00:25:54,540 до максимум вредноста на нашите чекор sequencer. 460 00:25:54,540 --> 00:25:58,290 И кога сме во одредена i во таа листа од една до вредноста максимум, 461 00:25:58,290 --> 00:26:02,970 ако тоа ми е член на оваа сет создадени во оваа функција, 462 00:26:02,970 --> 00:26:06,040 добро, тогаш ние го вклучите во ударни белешка. 463 00:26:06,040 --> 00:26:10,960 Инаку, ние само игра одмор, кој е да се каже, ние само молчи. 464 00:26:10,960 --> 00:26:16,050 И може да се види дека овде во оваа листа разбирање синтакса, 465 00:26:16,050 --> 00:26:20,030 x е населен со ова листа изграден еден 466 00:26:20,030 --> 00:26:22,462 на глобалната големината на sequencer. 467 00:26:22,462 --> 00:26:23,295 CONNOR Харис: Да. 468 00:26:23,295 --> 00:26:26,340 Основната синтакса за листа comprehensions е 469 00:26:26,340 --> 00:26:30,810 заградата, вредност се вклучени некои променливи, бар, 470 00:26:30,810 --> 00:26:34,260 можни вредности на променливи себе, затворена заграда. 471 00:26:34,260 --> 00:26:38,545 И ако сте го направиле во собата градител нотација во било кој вид на математиката класа, 472 00:26:38,545 --> 00:26:45,999 може да се постави како 2n тоа, што n е во или n е во z. 473 00:26:45,999 --> 00:26:48,290 Слични thing-- оваа нотација е замислена да биде сугестивна 474 00:26:48,290 --> 00:26:49,630 на таа математичка нотација. 475 00:26:49,630 --> 00:26:51,880 СТЕФАН KREWSON: И може да се примени многубројни предикати 476 00:26:51,880 --> 00:26:56,250 и повеќе филтри во списокот разбирање, што е многу убаво. 477 00:26:56,250 --> 00:27:01,800 Алгебарски types-- ние нема да траат долго тука. 478 00:27:01,800 --> 00:27:04,840 Таму не е добра идеја во Хаскел или добар, очигледно поимот 479 00:27:04,840 --> 00:27:10,720 за тоа како да се, да речеме, стандардно параметар за функција или нешто. 480 00:27:10,720 --> 00:27:13,370 Во Python, ова е прилично лесно. 481 00:27:13,370 --> 00:27:18,460 Вие само може да се каже со еднаква на декларацијата на функцијата, 482 00:27:18,460 --> 00:27:21,420 стандардна вредност во случај ниту се доставени. 483 00:27:21,420 --> 00:27:27,010 >> Во Хаскел, вие би можеле да можеби користете можеби можеби пишувате, 484 00:27:27,010 --> 00:27:32,190 која ги зема или ништо или вредност од типот само. 485 00:27:32,190 --> 00:27:38,630 За да можеме да го искористат овој во тапан машина за да ни овозможи да се даде опционални волумен 486 00:27:38,630 --> 00:27:40,730 параметри, за да секој од деловите барабан. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Така што ни дава начин на постоење на EQ или обемот на одреден канал. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR Харис: Во други примери Хаскел, 490 00:27:56,440 --> 00:28:00,450 може да се види, можеби се користи за функции кои би можеле да пропаднат. 491 00:28:00,450 --> 00:28:03,470 Ова е честа еден. 492 00:28:03,470 --> 00:28:07,010 >> СТЕФАН KREWSON: И вие може да снабдување некој вид на порака за грешка како стандардни. 493 00:28:07,010 --> 00:28:11,020 И тоа е особено корисна кога што го правиш на I / O во Хаскел. 494 00:28:11,020 --> 00:28:12,044 Кои можат да бидат трикови. 495 00:28:12,044 --> 00:28:13,960 CONNOR Харис: Или за сличен пример, мислам 496 00:28:13,960 --> 00:28:17,460 на функција која вклучува поделба на параметарот што може да биде 0. 497 00:28:17,460 --> 00:28:20,020 И таа функција би можел врати можеби сеедно. 498 00:28:20,020 --> 00:28:22,802 Значи, ако не постои поделба од 0, таа ќе се врати само сеедно. 499 00:28:22,802 --> 00:28:25,010 И ако постои поделба по 0, ќе се врати ништо 500 00:28:25,010 --> 00:28:26,910 како начин на сигнализација за грешка. 501 00:28:26,910 --> 00:28:30,330 Затоа што една од последиците на Многу строги пишување Хаскел е 502 00:28:30,330 --> 00:28:34,100 е дека нема real-- Исклучок се незгодни, во основа, 503 00:28:34,100 --> 00:28:36,160 грешка ракување е непријатно. 504 00:28:36,160 --> 00:28:39,440 И ова е еден многу Најчесто се тоа го правам. 505 00:28:39,440 --> 00:28:42,990 >> СТЕФАН KREWSON: Па сега ние се Друга работа е да се ум-свиткување 506 00:28:42,990 --> 00:28:49,160 за Haskell, што е шемата на појавување и функција дефиниции. 507 00:28:49,160 --> 00:28:53,390 Што ти го покажав во последниот слајд Декларацијата од секвенцата на чекор 508 00:28:53,390 --> 00:28:58,170 функција, која зеде можеби вредност, тогаш int, тогаш листа на ints, 509 00:28:58,170 --> 00:29:03,850 потоа се враќа низа од музика вредности има коментари 510 00:29:03,850 --> 00:29:05,375 со двете теренот и волумен. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Па овие три аргументи може да бидат модел се исти на следниот начин. 513 00:29:11,820 --> 00:29:16,660 И секогаш сакаме да бидете сигурни дека да направи база случај или случај излез прво. 514 00:29:16,660 --> 00:29:19,690 И овие долни само може да се толкува 515 00:29:19,690 --> 00:29:22,340 значи секоја вредност, која е таму. 516 00:29:22,340 --> 00:29:26,580 Па ако добие повик да се повлече низа со некоја вредност, некои други вредност, 517 00:29:26,580 --> 00:29:32,210 а потоа и на празна листа, она што сакаме да се врати е само тишина, одмор 0. 518 00:29:32,210 --> 00:29:35,110 >> И наместо тоа биде празна листа или 0, 519 00:29:35,110 --> 00:29:38,150 тоа е остатокот 0, бидејќи ние сме кои се занимаваат со типот на музика, 520 00:29:38,150 --> 00:29:43,230 и празните листа на музиката тип е само останатите нема рок на траење. 521 00:29:43,230 --> 00:29:45,680 Тоа не е музика. 522 00:29:45,680 --> 00:29:51,460 А потоа можеме да видиме дали можеме да чекор низа со v за аргумент обем, 523 00:29:51,460 --> 00:29:57,290 p за претпазливост инструмент аргумент, а потоа листа на x е. 524 00:29:57,290 --> 00:29:58,360 >> Тогаш можеме да направи некои работи. 525 00:29:58,360 --> 00:30:01,290 Конкретно, ние се применуваат оваа листа со разбирање, 526 00:30:01,290 --> 00:30:05,700 и изведување на некои операции на можеби вредност 527 00:30:05,700 --> 00:30:10,050 да ја претвори во нумеричка вредност, така што тогаш тоа би можело да се набројат и да се користи 528 00:30:10,050 --> 00:30:12,300 за да го изберете со инструменти. 529 00:30:12,300 --> 00:30:16,730 Повторно, ова е малку малку намерно inconcise 530 00:30:16,730 --> 00:30:20,580 само за да се прикажат сите чудни работи можете да го направите во Хаскел како што 531 00:30:20,580 --> 00:30:23,170 да ги разгледаме во тоа на свој пат. 532 00:30:23,170 --> 00:30:23,802 >> Во ред. 533 00:30:23,802 --> 00:30:26,010 Па ние сме конечно да дојдеме до го направи она што е утврдено да се направи, 534 00:30:26,010 --> 00:30:28,820 која е да се направи некои компјутерски музика. 535 00:30:28,820 --> 00:30:32,250 Па ние ќе да се обиде да направи Frere Жак песна. 536 00:30:32,250 --> 00:30:35,220 Па така постојат колку фрази во Frere Жак? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Четири. 539 00:30:39,680 --> 00:30:40,460 Одлично. 540 00:30:40,460 --> 00:30:42,490 И, што е убаво е тоа што сите тие се повтори 541 00:30:42,490 --> 00:30:46,990 иста количина на време, што е за два. 542 00:30:46,990 --> 00:30:50,730 >> Па ние имаме четири фрази секој се повторува два пати. 543 00:30:50,730 --> 00:30:53,590 А особено, тие се во круг. 544 00:30:53,590 --> 00:30:55,340 И ги има многу, многу начини да се имплементира 545 00:30:55,340 --> 00:30:57,520 тркалезна дека може да биде забавно да се направи. 546 00:30:57,520 --> 00:31:00,260 Сум го направи во прилично едноставен начин да се овде, 547 00:31:00,260 --> 00:31:05,760 кој е само за да construct-- линијата функција се листа на музички вредности 548 00:31:05,760 --> 00:31:10,390 и ја претвора во секвенцијален состав со примена на тој секвенцијален состав 549 00:31:10,390 --> 00:31:13,000 оператор. 550 00:31:13,000 --> 00:31:19,540 >> И јас тогаш го одложи различни делови со тоа што тие почнуваат со останатите. 551 00:31:19,540 --> 00:31:22,770 Па јас се започне со остатокот од двете мерки, а потоа и остатокот од четири мерки, 552 00:31:22,770 --> 00:31:26,160 а потоа и остатокот од шест мерки, а потоа и на круг 553 00:31:26,160 --> 00:31:32,290 работи, како што сите знаеме оваа песна. 554 00:31:32,290 --> 00:31:37,180 Гледаме две прибелешки или модификации на музички вредности 555 00:31:37,180 --> 00:31:43,150 кои се содржани во овој секвенцијален уредување на музички елементи. 556 00:31:43,150 --> 00:31:44,810 Имаме обем додаток. 557 00:31:44,810 --> 00:31:48,960 Ова е во функција да annotate музика со одреден волумен. 558 00:31:48,960 --> 00:31:51,320 Ова е добар пример на сигнал за трчање MIDI 559 00:31:51,320 --> 00:31:57,510 0-127, на седум делови од информации кои може да се врши. 560 00:31:57,510 --> 00:32:00,650 >> Then-- и тоа го видовме многу накратко, но општата MIDI 561 00:32:00,650 --> 00:32:02,310 листа на сите различни инструменти. 562 00:32:02,310 --> 00:32:04,450 И таму не е многу скапо на нив. 563 00:32:04,450 --> 00:32:11,230 Ако користите дигитален аудио работна станица, како Ableton Live или Pro Tools, 564 00:32:11,230 --> 00:32:17,560 таму е неверојатно поширок спектар на синтисајзери и VST инструменти. 565 00:32:17,560 --> 00:32:21,510 Но само на стандардната MIDI има неколку, или неколку десетици. 566 00:32:21,510 --> 00:32:22,799 А некои од нив се смешни. 567 00:32:22,799 --> 00:32:25,840 Мислев дека ќе биде забавно ако игравме инструментот инструментот MIDI 568 00:32:25,840 --> 00:32:30,550 хеликоптер, а потоа и на Следниот пат низ круг, 569 00:32:30,550 --> 00:32:37,980 ние го сторивме рампа синтисајзер, а потоа и на оваа старомоден олово квадратен бран синтисајзер, 570 00:32:37,980 --> 00:32:44,240 а потоа го искажат тињата, кои се малку нејасен на мојата лоша MIDI 571 00:32:44,240 --> 00:32:46,410 синтетизатор, но тие се во ред. 572 00:32:46,410 --> 00:32:50,030 >> И тогаш ќе го видиме ова ајде и во синтаксата од Хаскел, 573 00:32:50,030 --> 00:32:54,030 и тогаш ние навистина свириме сите овие делови заедно 574 00:32:54,030 --> 00:32:56,265 со паралелни оператор состав. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 И веројатно би можеле да се покажат некои од ова. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Еве го кодот. 579 00:33:08,340 --> 00:33:14,960 И можете да ги видите во C, дека ќе има еден многу грлото расчистување и поставување 580 00:33:14,960 --> 00:33:19,760 кодот на табелата пред да може да се направи музика како оваа. 581 00:33:19,760 --> 00:33:22,080 Или било која друга програмирање јазик, ќе веројатно 582 00:33:22,080 --> 00:33:27,210 мора да комуницирате со некој вид на библиотека или API и поставени се нагоре, 583 00:33:27,210 --> 00:33:28,725 и тогаш ќе треба да се исчисти. 584 00:33:28,725 --> 00:33:33,810 Но, тука во Хаскел е, мислам, еднаш ќе го добиете висат од него, неверојатно 585 00:33:33,810 --> 00:33:35,770 може да се чита и многу експресивен. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Па таму е имплементацијата на Frere Жак. 588 00:33:43,240 --> 00:33:43,740 Во ред. 589 00:33:43,740 --> 00:33:47,557 Сега сакаме да го додадете ударни инструменти, и ова е малку Messier. 590 00:33:47,557 --> 00:33:49,015 Па ајде да ги разгледаме во слајдови. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Толку голема идеја е да се направи еден куп на листи или делови. 593 00:34:00,540 --> 00:34:04,140 На оние напомна во машини, таму беа типично за можеби осум 594 00:34:04,140 --> 00:34:08,670 до 10 ритам или ударни делови. 595 00:34:08,670 --> 00:34:10,159 А потоа користете еден куп на техники. 596 00:34:10,159 --> 00:34:14,889 И ние разговаравме за these-- користење набори, филтри, Ламбда функции, 597 00:34:14,889 --> 00:34:19,429 одбележан над листи за генерирање на вредности во некои опсег од 1 до R, R е 16, 598 00:34:19,429 --> 00:34:20,699 или 32 чекори во sequencer. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> А потоа ако има вредност во таа листа што ние сме се протега низ sequencer, 601 00:34:29,920 --> 00:34:34,190 поминува низ него во текот и повеќе, тој се вклучува тој белешка, 602 00:34:34,190 --> 00:34:36,060 и на тој примерок добива активира. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Тука се и сите различни чудни начини Дојдов до со да се генерираат белешки. 605 00:34:47,110 --> 00:34:48,940 Пробајте го ова на вашиот сопствен полу сума. 606 00:34:48,940 --> 00:34:50,360 Тоа ќе звучи кул. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Времето дозволува, ние ќе одиме преку ова. 609 00:34:54,690 --> 00:34:59,200 Но за сега, претпоставувам ние треба да демо она што го имаме. 610 00:34:59,200 --> 00:35:01,380 Да се ​​надеваме дека ова оди во ОК. 611 00:35:01,380 --> 00:35:02,670 >> Значи ова е GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 И ние ќе ја вчитате датотеката Ги повикав song.lhs, 614 00:35:09,121 --> 00:35:10,620 кој е на датотеката Јас само што го покажа. 615 00:35:10,620 --> 00:35:11,470 Ред, одлично. 616 00:35:11,470 --> 00:35:15,010 Како Конор реков порано, тоа состави, ја напишете проверив, 617 00:35:15,010 --> 00:35:18,380 за да можам да дишат многу полесно. 618 00:35:18,380 --> 00:35:20,010 Тоа не се случува да се кренат на мене. 619 00:35:20,010 --> 00:35:22,720 >> Јас сакав да ти покажам нешто корисно. 620 00:35:22,720 --> 00:35:25,900 Може да се види дека модул вчитан повика 50. 621 00:35:25,900 --> 00:35:28,240 Можете да пребарувате на тој модул. 622 00:35:28,240 --> 00:35:32,092 И тоа е толку убаво во врска со она што можеби doing-- 623 00:35:32,092 --> 00:35:34,550 што го правиш не е во Хаскел повика на развој на софтвер, 624 00:35:34,550 --> 00:35:36,980 но може да се направи многу на забавни работи на своја. 625 00:35:36,980 --> 00:35:42,410 И работниот процес е навистина убаво, како во споредба со многу други јазици, 626 00:35:42,410 --> 00:35:45,872 затоа што може да се види во една навистина читлив начин што се случува. 627 00:35:45,872 --> 00:35:47,830 Така можеме да видиме дека имаме сите овие фрази, кои 628 00:35:47,830 --> 00:35:53,760 се листи на музички терени, а потоа ние изградба на овие во нешто поголема, 629 00:35:53,760 --> 00:35:55,220 што е музика песна. 630 00:35:55,220 --> 00:35:58,450 Тоа е музички единица. 631 00:35:58,450 --> 00:36:05,545 И тогаш може да се игра оваа сите со функција наречена свири. 632 00:36:05,545 --> 00:36:09,040 Можете да видите дека овде долу. 633 00:36:09,040 --> 00:36:11,310 Што е само игра. 634 00:36:11,310 --> 00:36:15,040 >> Јас треба say-- јас не зборувам за овој знак за долар што е насекаде. 635 00:36:15,040 --> 00:36:17,980 Знак за долар е друг оператор инфикс. 636 00:36:17,980 --> 00:36:22,500 Но, тоа има најмал приоритет на кој било оператор, кој ефикасно 637 00:36:22,500 --> 00:36:24,960 значи дека се што е на лево на знакот за долар 638 00:36:24,960 --> 00:36:28,460 и правото на знакот за долар, ние ќе треба да се оценува пред него. 639 00:36:28,460 --> 00:36:31,430 Така, тоа е вид на како друг начин на додавање на заграда. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR Харис: Тоа е во основа функција состав. 642 00:36:36,220 --> 00:36:40,026 И гарантира дека немате have-- ако имаш функции двете страни или инфикс 643 00:36:40,026 --> 00:36:42,900 оператори на двете страни, тие нема да поврзуваме низ него и да ви даде 644 00:36:42,900 --> 00:36:46,030 неочекувани резултати. 645 00:36:46,030 --> 00:36:49,790 >> СТЕФАН KREWSON: Па ние can-- користење на тоа, ние може да се јавам. 646 00:36:49,790 --> 00:36:51,415 Прво, ние ќе го игра без тапани. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Тоа е од хеликоптерската несреќа, хеликоптер MIDI. 649 00:37:03,170 --> 00:37:05,495 >> [Музички] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Има на квадратен бран. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Тињата на гласот. 654 00:37:25,490 --> 00:37:27,630 И навистина може да одат дивите со оваа. 655 00:37:27,630 --> 00:37:30,872 Јас зедов прилично едноставна, зашто знаев дека не треба да отхапвам 656 00:37:30,872 --> 00:37:31,830 повеќе отколку што може да џвака. 657 00:37:31,830 --> 00:37:36,460 Само да го задржи прилично едноставна да се покаже главните идеи. 658 00:37:36,460 --> 00:37:39,952 Но, тогаш јас бев како, ние сме мора да се додадат некои тапани на ова. 659 00:37:39,952 --> 00:37:41,910 Само затоа што ова е малку непробоен, 660 00:37:41,910 --> 00:37:45,790 и јас не го користат назив на делови тапан, 661 00:37:45,790 --> 00:37:49,490 Јас одбележан them-- затоа што тие се дел од таа попишува класа, 662 00:37:49,490 --> 00:37:51,500 Јас ги одбележан ints. 663 00:37:51,500 --> 00:37:53,120 Е како бас тапан. 664 00:37:53,120 --> 00:37:54,370 Нула, како и. 665 00:37:54,370 --> 00:37:56,000 Седум е висока капа. 666 00:37:56,000 --> 00:38:00,920 И надолу во оваа земја каде функции се добие малку повеќе случаен избор, 667 00:38:00,920 --> 00:38:02,100 овие се како конга тапани. 668 00:38:02,100 --> 00:38:08,360 >> Значи, ако мислите about-- можеби забавен начин да се спроведе тапан машина 669 00:38:08,360 --> 00:38:12,830 е да се користи многу уреден шеми на вашиот бас тапан. 670 00:38:12,830 --> 00:38:17,640 Така на пример, за филтрирање на интернет во текот на список со се она што дава назад 671 00:38:17,640 --> 00:38:20,590 1 кога е донесена модул 04. 672 00:38:20,590 --> 00:38:27,190 Па јас се добие 1, 5, 9, 13, така што ова 17-- е првиот ритамот на секоја мерка. 673 00:38:27,190 --> 00:38:32,860 >> А потоа и оваа е иста нешто се префрли во текот на два чекори. 674 00:38:32,860 --> 00:38:33,850 Значи тоа е Оригинален. 675 00:38:33,850 --> 00:38:37,480 Па ова ќе биде нешто како голема капа. 676 00:38:37,480 --> 00:38:39,640 А потоа повторно, овде долу, тоа е малку случаен избор, 677 00:38:39,640 --> 00:38:41,080 бидејќи ние сме прави конга тапани. 678 00:38:41,080 --> 00:38:44,180 И имам некои maracas долу тука, исто така. 679 00:38:44,180 --> 00:38:50,280 >> За да можам да се јавам игра тапан машина, но тоа ќе трае вечно, 680 00:38:50,280 --> 00:38:53,700 и тоа би можело да почне грабање нагоре сите меморија во мојот систем. 681 00:38:53,700 --> 00:38:57,090 Па јас ќе се јавите на оваа функција свирам музика, која како што ќе видиме, 682 00:38:57,090 --> 00:39:02,020 користете truncating паралелно состав да се игра на нашата мала Frere Жак песна 683 00:39:02,020 --> 00:39:04,200 заедно со овој чуден тапан машина. 684 00:39:04,200 --> 00:39:06,190 Па ајде да ги разгледаме. 685 00:39:06,190 --> 00:39:10,920 И немојте да се подобри на мојот уредување на сите делови на тапанот. 686 00:39:10,920 --> 00:39:13,375 Не моја специјалност, но јас имаше многу забава го прави тоа. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Музички] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Па се разбира, ова е за сите малку не како забава 691 00:39:56,980 --> 00:40:01,100 ако не можеме да го претворите на резултатот, можеби тоа 692 00:40:01,100 --> 00:40:04,650 може да се толкува од страна на човекот изведувач. 693 00:40:04,650 --> 00:40:06,535 Па не ќе го работи тука. 694 00:40:06,535 --> 00:40:07,910 Јас веќе се генерирани датотеки. 695 00:40:07,910 --> 00:40:10,280 Може да се види дека има дот LilyPond file-- и ова 696 00:40:10,280 --> 00:40:14,500 ќе ми биде segue во текот на Connor-- и датотека точка MIDI, 697 00:40:14,500 --> 00:40:18,610 и точка на PDF датотека, што е она што LilyPond крајот ќе произведуваат. 698 00:40:18,610 --> 00:40:23,770 >> Но овие се оние скрипти, а јас ќе само да ги извршувате со нивна помош опции. 699 00:40:23,770 --> 00:40:28,090 Ако ви се овие и трча со Euterpea, може да генерира датотека MIDI. 700 00:40:28,090 --> 00:40:31,160 А потоа и од MIDI датотеки со оваа програма MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 можете да генерирате Лили Датотека езерцето, а потоа ќе 702 00:40:34,930 --> 00:40:37,974 можат да генерираат PDF на резултатот. 703 00:40:37,974 --> 00:40:39,390 И ние треба да ги разгледаме во тоа. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Конор па веројатно ќе се покаже како да annotate ова подобро, 706 00:40:55,140 --> 00:41:02,570 но ова е Frere Жак како генерирани од мене во Euterpea. 707 00:41:02,570 --> 00:41:07,300 Тоа е само во C. јас треба да имаат сфатиле дознаете што тоа е всушност се пробие во. 708 00:41:07,300 --> 00:41:11,090 Но, тоа е цевководот за како да направите тоа со тоа. 709 00:41:11,090 --> 00:41:12,950 Ајде да зборуваме повеќе за LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: Добро ајде да видиме. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Дали ќе се спомене Научете Вие Хаскел? 713 00:41:21,419 --> 00:41:22,460 СТЕФАН KREWSON: О, да. 714 00:41:22,460 --> 00:41:23,480 Проверете Научете Вие Хаскел. 715 00:41:23,480 --> 00:41:24,410 Тоа е во ресурси. 716 00:41:24,410 --> 00:41:26,830 Тоа е како јас го започна учење, и тоа е одлично. 717 00:41:26,830 --> 00:41:27,580 Не неми учење. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Значи тоа е онлајн. 719 00:41:28,829 --> 00:41:34,760 Па еден човек со име [Беззвучен] learnyouahaskell.com, без празни места. 720 00:41:34,760 --> 00:41:37,065 Граматика е болен. 721 00:41:37,065 --> 00:41:38,690 СТЕФАН KREWSON: Тоа е илустрирано, исто така. 722 00:41:38,690 --> 00:41:39,440 CONNOR Харис: Значи она што е LilyPond? 723 00:41:39,440 --> 00:41:42,480 Тоа е декларативно програмирање јазикот за музика за средување. 724 00:41:42,480 --> 00:41:45,480 Па declarative-- можеш мислам на нештата како HTML, 725 00:41:45,480 --> 00:41:50,900 каде што не си saying-- HTML не кажува како треба веб прелистувачи 726 00:41:50,900 --> 00:41:52,180 направат страници чекор по чекор. 727 00:41:52,180 --> 00:41:54,096 Тоа е само велејќи дека ова е опис текстуалната 728 00:41:54,096 --> 00:41:56,100 на она што го сакате страницата да изгледа. 729 00:41:56,100 --> 00:41:59,310 >> И тогаш тоа е исто така програма кој ги собира на овој јазик, 730 00:41:59,310 --> 00:42:02,300 или го прочита неговото и тогаш всушност не на наборен за вас, 731 00:42:02,300 --> 00:42:05,570 и тоа плука овие прекрасен потрага PDF оценки. 732 00:42:05,570 --> 00:42:08,250 Исто така можете да добиете PNG формат или whatever. 733 00:42:08,250 --> 00:42:10,300 А добар начин да се мисли за тоа е по аналогија 734 00:42:10,300 --> 00:42:16,620 е дека LaTeX е вид на како LillyPond, но за само обични средување. 735 00:42:16,620 --> 00:42:20,360 Така, наместо of-- тоа не е WYSIWYG, Она што го гледате 736 00:42:20,360 --> 00:42:22,960 Е она што го добивате, како, да речеме Финалето е, или Сибелиус, 737 00:42:22,960 --> 00:42:27,430 или Microsoft Word, каде што можете да напишете во реално време и нацрт работи во реално време 738 00:42:27,430 --> 00:42:31,340 и да видат промени моментално. 739 00:42:31,340 --> 00:42:32,140 >> Таа се заснова на текст. 740 00:42:32,140 --> 00:42:35,290 Ќе мора да го компајлирате вашиот резултати со помош на посебна програма 741 00:42:35,290 --> 00:42:37,090 и да се извлече на PDF датотеки подоцна. 742 00:42:37,090 --> 00:42:43,320 Ова е малку помалку лесен за користење, ако сте 743 00:42:43,320 --> 00:42:46,520 се обидувам да пишувам директно во резултатот и сте 744 00:42:46,520 --> 00:42:48,620 обидувајќи се да компонира на компјутерот. 745 00:42:48,620 --> 00:42:50,830 Но, постојат многу на предности за тоа. 746 00:42:50,830 --> 00:42:56,110 Еден, тоа не изгледа многу поубаво, бидејќи LillyPond всушност може 747 00:42:56,110 --> 00:42:58,210 одвојте време за да се направи распоред на одлуки што треба, 748 00:42:58,210 --> 00:43:02,380 за разлика од Сибелиус или Финале, кои имаат да се направи компромитирана алгоритми така 749 00:43:02,380 --> 00:43:05,020 дека тие може да се прикаже работи во реално време. 750 00:43:05,020 --> 00:43:07,660 >> Значи, зошто е LilyPond-- компјутерска графика е тешко. 751 00:43:07,660 --> 00:43:10,535 Ако правиш нешто со музика и ако сакате да се напише резултати, 752 00:43:10,535 --> 00:43:13,900 вие не сакате да се напише од сè од себе 753 00:43:13,900 --> 00:43:19,040 почнувајќи со тоа како да се подготви штабови и како да се привлече тефтери. 754 00:43:19,040 --> 00:43:21,020 Тоа е многу тешко. Тоа е направено порано. 755 00:43:21,020 --> 00:43:22,170 Ти си во ред. 756 00:43:22,170 --> 00:43:26,200 >> Ако сакате да го користите или Финале Сибелиус, формати на датотеки за тие работи 757 00:43:26,200 --> 00:43:30,180 се многу комплицирани, и не можете да навистина ги користат програмски. 758 00:43:30,180 --> 00:43:35,020 Можете да се отворат со Сибелиус Финале и одете на датотеката, извоз како PDF себе, 759 00:43:35,020 --> 00:43:37,600 но ти навистина не може јавам дека од сценариото. 760 00:43:37,600 --> 00:43:40,440 LillyPond, можете да се јавите од оние скрипти. 761 00:43:40,440 --> 00:43:44,397 Можете лесно може да iterate LillyPond со латекс. 762 00:43:44,397 --> 00:43:47,230 Јас нема да има многу време да се оди во овие технологии во моментов, 763 00:43:47,230 --> 00:43:48,321 но постојат. 764 00:43:48,321 --> 00:43:50,070 Ако сакате да се погледне во книга LillyPond, 765 00:43:50,070 --> 00:43:53,760 Тоа е програма која доаѓа со вашата дистрибуција LillyPond, 766 00:43:53,760 --> 00:43:57,030 и тоа е за процесирањето LillyPond одломки во LaTeX 767 00:43:57,030 --> 00:44:00,340 ако сакате да се направи нешто како голема музикологија документот 768 00:44:00,340 --> 00:44:02,289 со примери, на пример. 769 00:44:02,289 --> 00:44:04,580 И тоа е добра вештина за животот, ако правиш нешто 770 00:44:04,580 --> 00:44:05,770 со музика, а не само CS50. 771 00:44:05,770 --> 00:44:09,320 Јас сум користел LillyPond за сите на мојата композиција проекти 772 00:44:09,320 --> 00:44:11,880 бидејќи јас бев во основа високи во средно училиште. 773 00:44:11,880 --> 00:44:13,455 >> Значи тука се и некои едноставни примери. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 Ова е во основа претставник на ниво на тежина 776 00:44:21,060 --> 00:44:23,481 дека повеќето луѓе би се соочиме со тоа, тие се обидуваа 777 00:44:23,481 --> 00:44:24,980 да се користи LilyPond за едноставни проекти. 778 00:44:24,980 --> 00:44:29,519 Ова Првиот е на почетокот на коралски прелудиум од Бах. 779 00:44:29,519 --> 00:44:31,810 Оваа дното еден е извадок од една од моите дела, 780 00:44:31,810 --> 00:44:34,650 и тоа е само таму да се покаже вие работите како [Беззвучен] 781 00:44:34,650 --> 00:44:38,550 ставање повеќе линии во истата персонал, како лирски undersetting работи. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Лирски подлоги се нешто што е многу лесен за користење LilyPond за хорска музика. 784 00:44:46,110 --> 00:44:48,814 >> И така, тогаш има некои повеќе комплицирано примери овде. 785 00:44:48,814 --> 00:44:50,980 Сите овие се направи во LilyPond и тие се остварливи. 786 00:44:50,980 --> 00:44:55,280 Ова е извадок од првата [Беззвучен] од [Беззвучен]. 787 00:44:55,280 --> 00:44:58,860 И ова [Беззвучен] од парче за соло бас 788 00:44:58,860 --> 00:45:03,550 флејта од [Беззвучен], кој е кој longtime-- 789 00:45:03,550 --> 00:45:07,101 беше долгогодишен член на музика оддел тука, мислам. 790 00:45:07,101 --> 00:45:08,600 Не сум сигурен каде тој нема да се исклучи. 791 00:45:08,600 --> 00:45:12,410 Но, тој беше советник на Харвард Композитори Здружение за долго време. 792 00:45:12,410 --> 00:45:13,530 Прекрасен човек. 793 00:45:13,530 --> 00:45:16,920 И тој пишува некоја музика која има многу комплицирано нотација која LillyPond 794 00:45:16,920 --> 00:45:20,500 сепак може да се справи многу убаво. 795 00:45:20,500 --> 00:45:26,030 >> Па само да ви даде чувство за тоа што способности оваа работа е толку are-- 796 00:45:26,030 --> 00:45:28,960 internals на LillyPond се многу комплицирани. 797 00:45:28,960 --> 00:45:31,060 И можете да го користите за долго време, вклучувајќи ги и 798 00:45:31,060 --> 00:45:32,520 за некои прилично комплициран работите, без да 799 00:45:32,520 --> 00:45:34,060 морале да знаат многу за нив. 800 00:45:34,060 --> 00:45:38,720 Но основната идеја е дека на најниско ниво, атомите на LillyPonds 801 00:45:38,720 --> 00:45:39,970 се забележува. 802 00:45:39,970 --> 00:45:42,761 Забелешките содржат контекст наречен гласови. 803 00:45:42,761 --> 00:45:44,510 Па контекст гласот во основа се совпаѓа 804 00:45:44,510 --> 00:45:47,410 до една линија на полифонија. 805 00:45:47,410 --> 00:45:49,410 А потоа контекст може да биде содржани хиерархиски 806 00:45:49,410 --> 00:45:53,590 во високото ниво на оние кои претставуваат штабови на резултат 807 00:45:53,590 --> 00:45:56,750 или поголеми групации како пијано штабови или хор штабови, 808 00:45:56,750 --> 00:45:58,990 а потоа на крајот целиот резултат контексти. 809 00:45:58,990 --> 00:46:02,260 И всушност може да се опфати повеќе бодови во една книга. 810 00:46:02,260 --> 00:46:05,770 >> И секој контекст има број на прикачени резбари. 811 00:46:05,770 --> 00:46:08,340 Ако се погледне во текот на содржината на контекстот 812 00:46:08,340 --> 00:46:14,410 и печатење на одреден симбол или одредена класа на симболи, како што е потребно. 813 00:46:14,410 --> 00:46:17,840 Така да секој глас контекст, таму е [Беззвучен] белешки 814 00:46:17,840 --> 00:46:24,270 гравер дека е во основа на функција или објект кој пишува од сите белешки 815 00:46:24,270 --> 00:46:26,290 шефовите на десниот дел од една страница. 816 00:46:26,290 --> 00:46:29,510 Потоа, тука е една пукнатина гравер, која пишува надвор пукнатините на вработените. 817 00:46:29,510 --> 00:46:31,517 Потоа, тука е метроном марка гравер дека 818 00:46:31,517 --> 00:46:33,100 пишува надвор метроном ознаки во резултатот. 819 00:46:33,100 --> 00:46:36,410 И сите тие се вклопуваат убаво и во хиерархијата. 820 00:46:36,410 --> 00:46:39,500 И тоа е многу, многу, многу индивидуализира, која треба 821 00:46:39,500 --> 00:46:42,880 ако сакате да се работи како што. 822 00:46:42,880 --> 00:46:45,730 >> Па сите контексти имаат број на различни атрибути 823 00:46:45,730 --> 00:46:52,410 што може да ја менувате за сè од празно место за разни фонтот 824 00:46:52,410 --> 00:46:54,942 избор на големини на нештата. 825 00:46:54,942 --> 00:46:56,900 Ако сакате да се направи дури и покомплицирани работи, 826 00:46:56,900 --> 00:46:59,210 има вграден јазик за скриптирање. 827 00:46:59,210 --> 00:47:01,820 Тие ја користат шемата, која е дијалект на Lisp. 828 00:47:01,820 --> 00:47:04,960 Тие, веројатно, не значи ништо за вас. 829 00:47:04,960 --> 00:47:06,900 Но во основа, шема друга функционална 830 00:47:06,900 --> 00:47:09,500 програмски јазик, повеќе или помалку. 831 00:47:09,500 --> 00:47:10,800 >> СТЕФАН KREWSON: На тај-во. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR Харис: Да. 833 00:47:12,690 --> 00:47:15,390 Тоа е добра тај-во, претпоставувам. 834 00:47:15,390 --> 00:47:20,150 И се користи како јазик на наставата, всушност, долу Маса Ave. На МИТ. 835 00:47:20,150 --> 00:47:26,590 И тоа е многу корисна за LillyPond за разни технички причини. 836 00:47:26,590 --> 00:47:30,317 >> И така, ако сакате да се направи едноставна измени зависни conditionals, 837 00:47:30,317 --> 00:47:32,900 за example-- има одредени состојба на резултат кој се сретнале, 838 00:47:32,900 --> 00:47:36,495 да направи измени на распоред или whatnot-- потоа 839 00:47:36,495 --> 00:47:37,620 овие објекти се таму. 840 00:47:37,620 --> 00:47:38,667 Тие се комплицирани. 841 00:47:38,667 --> 00:47:40,250 Значи тука е прилично едноставна кодот примерок. 842 00:47:40,250 --> 00:47:43,810 Тоа е пет линии. 843 00:47:43,810 --> 00:47:46,120 Во суштина, јас сум во дефинирање на две штабови. 844 00:47:46,120 --> 00:47:46,904 Тоа е во 3/4. 845 00:47:46,904 --> 00:47:48,695 Првиот кадар има спроведен темпо марка, 846 00:47:48,695 --> 00:47:51,110 но тоа е, всушност, ќе да одат за да на целиот рејтинг, 847 00:47:51,110 --> 00:47:54,960 поради темпото марки се на ниво на резултат. 848 00:47:54,960 --> 00:47:59,044 Гравер метроном марка е спроведен за гол контекст. 849 00:47:59,044 --> 00:48:01,460 Постојат различни клучеви, бидејќи [Беззвучен] гравер 850 00:48:01,460 --> 00:48:02,710 е спроведен штабови. 851 00:48:02,710 --> 00:48:04,441 Ти всушност може да направите е. 852 00:48:04,441 --> 00:48:06,190 Примерокот напишав е всушност, во C големи, 853 00:48:06,190 --> 00:48:07,990 но тоа е само за да демонстрираат ќе може да има 854 00:48:07,990 --> 00:48:09,570 различни клучеви во различни штабови. 855 00:48:09,570 --> 00:48:15,710 А основната синтакса е ти пишувам запишете ги имињата со E, F, G, сеедно. 856 00:48:15,710 --> 00:48:18,910 Ако сакате да се направи алтерации, ви наставка е или Шпанија. 857 00:48:18,910 --> 00:48:22,640 Ова е од холандските musicological конвенции. 858 00:48:22,640 --> 00:48:28,290 >> И да се направи октава скокови, ќе мора да се користи овие штиклирање, запирка или апостроф. 859 00:48:28,290 --> 00:48:30,580 Релативната само значи тоа што имате забелешка, 860 00:48:30,580 --> 00:48:34,080 тој автоматски ќе биде plaec во октава најблиску до претходниот. 861 00:48:34,080 --> 00:48:37,624 И ако сакате да скокаат над на fifth-- кажам една петтина или more-- 862 00:48:37,624 --> 00:48:39,165 тогаш ќе мора да го користат [Беззвучен]. 863 00:48:39,165 --> 00:48:42,580 Но во спротивно, да не мора да се наведете октава на кој секоја нота. 864 00:48:42,580 --> 00:48:46,130 >> И релативна Ц, премиери, и Ц, само наведете средно Ц 865 00:48:46,130 --> 00:48:48,630 и база Ц, особено првата белешки. 866 00:48:48,630 --> 00:48:55,020 Тогаш ќе мора овие штабови кои организираат овие два гласа или примероци на музиката, 867 00:48:55,020 --> 00:48:56,730 и имаш оценка. 868 00:48:56,730 --> 00:48:58,440 И тоа изгледа вака. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Ако сакате да се земе време да се копија од тоа примерок од LillyPond 871 00:49:05,380 --> 00:49:07,530 кодот на претходната слајд надолу тука, а ти 872 00:49:07,530 --> 00:49:09,030 може да го напише за LillyPond себе. 873 00:49:09,030 --> 00:49:11,280 Знам дека имам нешто дека многу личи на ова. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Значи има уште една технологија наречен Музика XML одржува 876 00:49:19,610 --> 00:49:22,030 со сосема различни луѓе. 877 00:49:22,030 --> 00:49:28,150 XML е текстуалните податоци structure-- јас не треба да се каже на податоци structure-- кажеме 878 00:49:28,150 --> 00:49:29,580 метафора мапа вид. 879 00:49:29,580 --> 00:49:33,800 И тоа е дизајниран да се одржи хиерархиска податоци многу добро. 880 00:49:33,800 --> 00:49:37,050 HTML, на пример, е еден вид на XML. 881 00:49:37,050 --> 00:49:41,090 И може да се каже, бидејќи тие на XML имаше сите загради агол и агол 882 00:49:41,090 --> 00:49:44,700 Држач за коса црта марки кои полиња покажуваат податоците. 883 00:49:44,700 --> 00:49:47,390 >> Јас не имаат кодекс пример од музиката на XML. 884 00:49:47,390 --> 00:49:50,450 Можете да го најдете. 885 00:49:50,450 --> 00:49:53,735 Во суштина, причина можеби ќе сакате за употреба на XML како преодна фаза 886 00:49:53,735 --> 00:49:55,980 е, прв од сите, тоа е формат на размена 887 00:49:55,980 --> 00:50:02,301 за основа every-- јас не треба да се каже секој, но голем број на различни резултат 888 00:50:02,301 --> 00:50:02,800 писатели. 889 00:50:02,800 --> 00:50:04,966 Па ако напишете во Музика XML, не само што може LillyPond 890 00:50:04,966 --> 00:50:08,080 ја чита со помош на оваа помошна програма наречена Музика XML да LY, 891 00:50:08,080 --> 00:50:11,360 но исто така може да се прочита Финале тоа, Сибелиус да го прочиташ. 892 00:50:11,360 --> 00:50:14,770 Во зависност од тоа како вашата внатрешна објект хиерархија работи за претставување на музиката, 893 00:50:14,770 --> 00:50:18,820 тоа може да биде полесно да се напише Музика за XML, отколку да LillyPond 894 00:50:18,820 --> 00:50:22,410 и само се потпираат на XML Музика да LY да се направи на конверзија. 895 00:50:22,410 --> 00:50:24,282 >> Јас не мислам дека [Беззвучен] има Музика XML. 896 00:50:24,282 --> 00:50:25,490 СТЕФАН KREWSON: Тоа не го прави тоа. 897 00:50:25,490 --> 00:50:26,340 Некој работи на тоа, иако. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR Харис: Во ред. 899 00:50:27,090 --> 00:50:31,040 Euterpea нема Функција музика XML излез уште. 900 00:50:31,040 --> 00:50:35,340 Ако сакате конечна идеја на проектот, можеби и да стапат во контакт со момци 901 00:50:35,340 --> 00:50:38,620 Стефан го знае, а тие може да се користи вашата помош. 902 00:50:38,620 --> 00:50:40,992 >> СТЕФАН KREWSON: Јас не би сакал тоа. 903 00:50:40,992 --> 00:50:43,450 CONNOR Харис: Исто така, во основа, секој програмски јазици 904 00:50:43,450 --> 00:50:46,610 тоа е во вредност од неговата сол веќе има XML библиотека, 905 00:50:46,610 --> 00:50:51,030 за да можете да ги конвертирате сите внатрешно на вашата музика во некој објект 906 00:50:51,030 --> 00:50:54,120 дека на XML библиотека може да се напише дека ќе бара помалку 907 00:50:54,120 --> 00:50:57,470 измени на вашата внатрешна структура за што и музиката што се противи 908 00:50:57,470 --> 00:51:00,310 сакате да се напише, отколку што пишувате директно во LillyPond би. 909 00:51:00,310 --> 00:51:04,380 Потоа само да го испечатите со XML со на XML библиотеки на вашиот јазик, 910 00:51:04,380 --> 00:51:07,260 кој ќе гарантира дека тоа е синтаксички исправни и над сè, 911 00:51:07,260 --> 00:51:08,720 а потоа и да го претворите во LillyPond. 912 00:51:08,720 --> 00:51:11,060 Па технологија можеби ќе сакате да погледне во ако правиш нешто 913 00:51:11,060 --> 00:51:11,650 како ова. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Беззвучен], уште auxilarry технологија. 916 00:51:16,370 --> 00:51:21,700 Ова е во основа Техника Автор е на книгите или Техника Студио за LillyPond. 917 00:51:21,700 --> 00:51:25,380 Така што нуди помош со синтакса, со шаблони 918 00:51:25,380 --> 00:51:28,770 за различни заеднички комбинации на инструменти. 919 00:51:28,770 --> 00:51:32,780 Таа им овозможува на Сплит екран гледање така може да има вашиот код во еден прозорец 920 00:51:32,780 --> 00:51:37,350 и PDF во друг прозорец и кликнете на места во PDF 921 00:51:37,350 --> 00:51:40,650 за да скокнат до релевантни точки во вашиот изворен код. 922 00:51:40,650 --> 00:51:45,330 Ова е повеќе корисно ако сте, всушност, пишување LillyPond себе датотеки 923 00:51:45,330 --> 00:51:47,400 отколку ако сте генерирање ги програмски. 924 00:51:47,400 --> 00:51:51,230 Но, повторно, тоа е нешто корисно да се имаат. 925 00:51:51,230 --> 00:51:51,970 >> Одлично. 926 00:51:51,970 --> 00:51:55,860 Друг resources-- јас само ќе одат преку овој многу брзо. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond има одлична документација на својата веб страница. 928 00:52:01,270 --> 00:52:02,270 Тие имаат упатство. 929 00:52:02,270 --> 00:52:03,478 Тие имаат референца синтакса. 930 00:52:03,478 --> 00:52:07,010 Тие имаат стотици снипети за разни мали нешта 931 00:52:07,010 --> 00:52:09,930 Ио би можеле да треба да направите за да се демонстрира различни способности. 932 00:52:09,930 --> 00:52:12,250 Ако сакате да ја користите јазик за скриптирање 933 00:52:12,250 --> 00:52:14,740 или да направи посеопфатна персонализации, потоа има 934 00:52:14,740 --> 00:52:16,730 internals референца на оваа адреса. 935 00:52:16,730 --> 00:52:21,950 Ако сакате да го користите Музичкиот XML, има дека URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> А потоа, ако ви треба за да дознаете шема затоа што всушност сакате да ја користите 937 00:52:27,960 --> 00:52:30,960 објектите скриптирање во LillyPond, тогаш има [Беззвучен] наречен 938 00:52:30,960 --> 00:52:32,918 Структурирани толкување на компјутерски програми, 939 00:52:32,918 --> 00:52:35,820 која не е само вториот Најголемата CS учебник некогаш written-- 940 00:52:35,820 --> 00:52:39,770 Ме најдете потоа, ако сакате да знаете она што мислам дека најголем еден is-- 941 00:52:39,770 --> 00:52:43,580 но тоа е исто така многу добар вовед во јазикот правилно. 942 00:52:43,580 --> 00:52:46,630 Нема да Ви треба повеќе од првите неколку секции. 943 00:52:46,630 --> 00:52:47,827 >> И тоа е тоа. 944 00:52:47,827 --> 00:52:48,410 Некакви прашања? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> СТУДЕНТСКИ: Каде можам да го симнете Вашиот генерирана Frere Жак 947 00:52:57,972 --> 00:53:01,050 да можам да го ставам на мојот iPod? 948 00:53:01,050 --> 00:53:07,574 >> СТЕФАН KREWSON: Па, можете да напишете до некои WAV фајлови во Euterpea. 949 00:53:07,574 --> 00:53:08,490 И имаш код. 950 00:53:08,490 --> 00:53:10,000 Тоа е на GitHub. 951 00:53:10,000 --> 00:53:15,590 Направете свој варијации на Frere Жак страна CS50 кошница умот. 952 00:53:15,590 --> 00:53:17,095 Тоа би било одлично. 953 00:53:17,095 --> 00:53:18,220 CONNOR Харис: Некој друг? 954 00:53:18,220 --> 00:53:20,261 СТЕФАН KREWSON: Ни треба подобар бас тапан, исто така. 955 00:53:20,261 --> 00:53:21,935 Тоа е навистина лошо. 956 00:53:21,935 --> 00:53:26,565 >> Студент: Euterpea не само што страна на составот, но signal-- 957 00:53:26,565 --> 00:53:27,440 СТЕФАН KREWSON: Да. 958 00:53:27,440 --> 00:53:30,100 Всушност, работата јас правеше во Euterpea кога јас 959 00:53:30,100 --> 00:53:33,450 зеде this-- постои постдипломски курс во Јеил, кој 960 00:53:33,450 --> 00:53:35,900 користи it-- беше на звучна синтеза. 961 00:53:35,900 --> 00:53:39,810 Па таму е навистина убав начин со користење на стрелките 962 00:53:39,810 --> 00:53:46,150 а некои од нотација видовме на компонирањето заедно сигнал функции. 963 00:53:46,150 --> 00:53:50,610 Поточно, на бас за повеќето од нив е само едноставна синус бран. 964 00:53:50,610 --> 00:53:54,240 Но, ако почнете компонирањето оние во чудни програмски начини, 965 00:53:54,240 --> 00:54:00,010 можете да добиете луд звук ефекти, како чудно каскади. 966 00:54:00,010 --> 00:54:04,640 Можете да се создаде многу интересен се огласува со многу модулација. 967 00:54:04,640 --> 00:54:07,730 >> Јас не од проектот на гранули синтеза, што е 968 00:54:07,730 --> 00:54:12,290 некаде помеѓу ФМ и земање мостри. 969 00:54:12,290 --> 00:54:15,230 Ве однесе многу мал, малку примероци, а потоа 970 00:54:15,230 --> 00:54:20,440 да ги комбинирате со некој вид на модулатор и да се изгради до побогат звук. 971 00:54:20,440 --> 00:54:24,900 Ние, исто така, направи физичко моделирање, па обидувајќи се да се размислува за физика 972 00:54:24,900 --> 00:54:29,410 и psychoacoustics на нешто како труба, размислува за начинот на кој 973 00:54:29,410 --> 00:54:32,320 звукот се бие надвор ѕвончето на труба 974 00:54:32,320 --> 00:54:35,200 и акустиката на собата и моделирање 975 00:54:35,200 --> 00:54:40,195 дека со основните осцилатори. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR Харис: Благодарение толку многу. 978 00:54:48,940 --> 00:54:50,140 Ви благодариме за кои доаѓаат. 979 00:54:50,140 --> 00:54:52,400 И јас сум секогаш подготвени да одговараше на прашања од страна email-- 980 00:54:52,400 --> 00:54:55,020 connorharris@college.harvard.edu. 981 00:54:55,020 --> 00:54:57,020 >> СТЕФАН KREWSON: Да. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Кул. 984 00:55:00,360 --> 00:55:01,667