1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 Конар Харыс: Прывітанне. 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 Я TF для CS50 ў Ельскім універсітэце. 7 00:00:12,582 --> 00:00:15,790 Конар Харыс: І мы будзем казаць аб некаторых тэхналогіях, якія вы, магчыма, 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 Мы збіраемся канцэнтравацца на першым а Мова праграмавання Haskell называецца. 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 што вы выкарыстоўвалі ўжо, і асабліва ў бібліятэцы, напісанай у Haskell 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 выкарыстоўвалі латекс для матэматычных класаў або іншыя Р набор класаў ці што там у вас. 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 Конар Харыс: Зноў жа, варта падкрэсліць ,, 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 Конар Харыс: Так пацверджання, толькі што прачытаў, што. 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 Конар Харыс: А калі вы не можаце атрымаць LillyPond ня працаваць, не страшна. 43 00:01:55,620 --> 00:02:00,139 Там няма жывой зборнік, што будзе ўдзельнічаць, па меншай меры, з майго боку. 44 00:02:00,139 --> 00:02:02,930 Стыў KREWSON: Haskell і 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 І гэта ўсяго толькі вельмі выгляд 50000 футаў. 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-х з Yamaha і Джон Chowning ў Стэнфардзе 64 00:03:08,650 --> 00:03:11,990 робіць сінтэз FM або Сінтэз частоты мадуляцыі, 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 з'яўляюцца сумяшчальную да General 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 Конар Харыс: Так. 96 00:04:51,950 --> 00:04:54,230 Ўсе класічныя Nintendo відэа гульні, верагодна, будзе 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 >> Конар Харыс: Можа быць, лепш бы параўнанне 109 00:05:39,156 --> 00:05:43,430 быць стандарт Unicode 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-як Unicode гуку. 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: Дык чаму Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell з'яўляецца функцыянальнае праграмаванне мова, вельмі прасунутыя, 120 00:06:19,110 --> 00:06:22,770 вельмі адрозніваецца ад C, вельмі адрозніваецца ад PHP. 121 00:06:22,770 --> 00:06:28,120 І мы збіраемся, каб убачыць, што ёсць больш прастата кампазіцыі функцый у Haskell 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 мы выкарыстоўваем Haskell, у якім Функцыі з'яўляюцца грамадзянамі першага класа. 128 00:06:59,400 --> 00:07:01,120 >> І я хацеў, каб пашырыць гэта няшмат. 129 00:07:01,120 --> 00:07:08,800 Гэта крыху лёгка нотамі FRERE Жака ў Haskell. 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 >> І мы ўбачым добры спосаб у Haskell прадстаўлення на гэты крок 139 00:07:45,290 --> 00:07:48,810 секвенсор з усімі розныя класныя рэчы ў Haskell 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 некаторыя з аспектаў з Haskell і Euterpea, 146 00:08:07,620 --> 00:08:11,760 што прадметна-арыентаваны убудаваны мова напісана 147 00:08:11,760 --> 00:08:14,970 у Haskell для музычных тыпаў. 148 00:08:14,970 --> 00:08:17,350 Таму, калі ласка, праверыць код у Інтэрнэце. 149 00:08:17,350 --> 00:08:22,404 Запусціце GHCI, што Глазга Haskell Compiler Перакладчык. 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 І тое, як мы ўбачым, тыпы і тып класы настолькі важныя ў Haskell, 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 Я ведаю, пра шлях лікавы тыпы працуюць у Haskell, 161 00:08:55,114 --> 00:08:56,530 але я не ведаю шмат пра музыку. 162 00:08:56,530 --> 00:09:01,280 Але вы можаце вывучыць, як яны вызначаецца з дапамогай гэтага тыпу або т каманду 163 00:09:01,280 --> 00:09:04,577 і затым выклікаць у прыватнасці функцыя або аб'ект дадзеных. 164 00:09:04,577 --> 00:09:05,410 Конар Харыс: Так. 165 00:09:05,410 --> 00:09:09,820 Калі вы думалі, C і Clang быў hardass пра тыпы, 166 00:09:09,820 --> 00:09:11,230 Вы паняцця не маеце пра Haskell. 167 00:09:11,230 --> 00:09:14,230 Добрая рэч аб Haskell з'яўляецца тое, што калі вы можаце атрымаць код для кампіляцыі 168 00:09:14,230 --> 00:09:16,790 і калі чэкі тыпу Haskell, гэта, напэўна, правільна, 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-- некалькі асаблівасці Haskell, што, па меншай меры, 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 апісаў генезіс Haskell на працягу першых 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 І Haskell робіць гэта ў выкліку па неабходнасці так ці нястрогі чынам. 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 >> Такім чынам, гэта азначае: што сапраўды выдатна, асабліва 185 00:10:08,480 --> 00:10:13,200 калі мы думаем пра абстракцыі музычнага пакрокавы секвенсор. 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 Таму было б вельмі добра, калі мы можа эмуляваць, што ў Haskell. 189 00:10:24,650 --> 00:10:31,040 І мы можам зрабіць гэта з бясконцым значэння, у прыватнасці бясконцых спісаў. 190 00:10:31,040 --> 00:10:35,860 Гэта вельмі лёгка увядзіце бясконцы спіс у Haskell. 191 00:10:35,860 --> 00:10:39,230 Вы маглі б проста выкарыстоўваць сінтаксіс ўніз тут, дзе вы бачыце з 1 па 3, 192 00:10:39,230 --> 00:10:42,440 выдаліць сакавіка 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 каб даведацца пра зморшчын у Haskell ці вышэйшыя функцыі парадку. 197 00:10:55,770 --> 00:10:59,640 Але я проста хачу, каб увесці яго ў даць дакладную пачуццё, як дзіўна 198 00:10:59,640 --> 00:11:03,700 Haskell і як магутны гэта. 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--, калі ён быў выкліканы з кратным г плюс 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 Конар Харыс: Так, кажучы іншымі спосаб, раз г прымае тры аргументу. 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 як рэчы ў спісе, а затым гэта вяртанне вынік кратнага R. 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 >> Конар Харыс: Так. 227 00:12:34,770 --> 00:12:37,820 Калі вы выкарыстоўвалі некаторыя іншыя languages-- Я ведаю, R, [неразборліва] 228 00:12:37,820 --> 00:12:41,510 мова мае гэта, называецца Reduce. 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: І тое, што прыемна пра кратным R 232 00:12:50,680 --> 00:12:53,880 у дадзеным выпадку з'яўляецца тое, што зморшчына R можа працаваць з бясконцымі спісамі. 233 00:12:53,880 --> 00:12:59,490 Так што ў гэтым дні, у гэтым P5 генеруе ноты, 234 00:12:59,490 --> 00:13:03,120 ўключаны ў пакрокавы секвенсор для некаторыя ўдарных, пяты барабан частка, 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 рэчаў, аб Haskell і 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-- каб паказаць вам, як вы можаце аб'яднаць спісы. 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 І раз R можа гэта зрабіць, таму што гэта ляніва ацэньвае, як у апісаным вышэй. 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 Ну, Haskell забяспечвае шмат 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 у секвенсор. 263 00:14:44,610 --> 00:14:47,630 На машынах з рулоннай ў Я паказаў вам, што гэта, як правіла, 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 >> Haskell таксама чыста, таму яна мае моцнае статычная тыпізацыя, што Конар згадваў. 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 Ёсць, вядома, выключэнні монадические на гэта, але гэта выходзіць за рамкі нашай. 274 00:15:22,940 --> 00:15:23,900 >> Конар Харыс: Так. 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 Адным з іх з'яўляецца, што гэта вельмі лёгка распараллелить праграмы на Haskell. 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 ці F whatnot-- з 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 Так вельмі лёгка распараллелить рэчы. 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 І ўсё гэта магчыма ў Haskell з класаў тыпу. 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 Такім чынам, мы маем З, дыез, і гэтак далей, і гэтак далей. 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 D прыходзіць пасля С.-дыез прыходзіць пасля C, а таксама. 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 >> Конар Харыс: А калі у нас ёсць тып дадзеных 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 Вы хочаце, каб вызначыць дыез роўным рэ-бемоль, напрыклад. 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 >> Карринг is-- Кары было ў мінулым найменне Haskell Curry, які 346 00:19:29,250 --> 00:19:31,850 малюнак Haskell названы ў гонар. 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-- е х і y-- 351 00:19:42,810 --> 00:19:46,630 можа быць прадстаўлена ў выглядзе е х прымяняцца у. 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 х над спісам значэнняў у. 355 00:19:56,962 --> 00:19:58,920 Конар Харыс: Хочаце Прывядзём прыклад гэтага? 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 вырабы, а затым адлюстраванне, мы можам прадставіць копировщика 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 з'яўляецца Haskell праца для выраўноўвання спіс. 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 Конар Харыс: Прасцейшы Прыклад карирования 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 Так што, калі ў вас ёсць F 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 І гэта прасцей, Прыклад вырабы. 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 яшчэ адзін прыкмета Haskell. 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 Конар Харыс: Так. 401 00:22:28,840 --> 00:22:31,330 Так е з'яўляецца функцыяй два аргументу п р і 402 00:22:31,330 --> 00:22:35,440 што вяртае функцыю, якая сама функцыя аднаго аргументу, а менавіта х. 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 Конар Харыс: Гэта называецца зваротнай польскай натацыі, якая з'яўляецца 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 Але Haskell вырашыў выкарыстоўваць аператары инфиксные. 414 00:23:01,412 --> 00:23:03,120 Дык вось некаторыя з прыстасаваныя тыя, якія 415 00:23:03,120 --> 00:23:07,770 вызначаюцца для Euterpea DSCL ў Haskell. 416 00:23:07,770 --> 00:23:10,730 Так што гэта было паслядоўная кампазіцыя. 417 00:23:10,730 --> 00:23:16,340 Гэта было паралельна кампазіцыі, і гэта быў ўсячэння паралельнай кампазіцыі. 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 І, што аператар инфиксальный супер карысна з гэтым. 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 х нешта else-- прабачце, што павінна быць, і б. 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 х элемент некаторага спісу, калі вы паклалі ён у зваротныя двукоссі, вы можаце выкарыстоўваць яго. 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 Конар Харыс: Зноў жа, гэта Усё проста сінтаксічны цукар, на самай справе. 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 Конар Харыс: Зноў, спасылкі для Haskell-- ўступных падручнікаў 447 00:25:02,860 --> 00:25:04,680 будуць мець усё гэта ў ім. 448 00:25:04,680 --> 00:25:07,790 >> Стыў KREWSON: Дык вось даволі Ключавым напрамкам у пакрокавы секвенсор 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 Такім чынам, калі х з'яўляецца элементам спісу х гадоў, то мы будзем называць сябе функцыі Проц. 452 00:25:23,030 --> 00:25:25,100 Так PERC гэта проста функцыя перкусіі. 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 у максімальнае значэнне нашай пакрокавы секвенсор. 460 00:25:54,540 --> 00:25:58,290 І калі мы ў прыватнасці, я ў што спіс ад аднаго да максімальнага значэння, 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 х населены гэта Спіс пабудаваны адзін 466 00:26:20,030 --> 00:26:22,462 ў глабальнай памеру секвенсор. 467 00:26:22,462 --> 00:26:23,295 Конар Харыс: Так. 468 00:26:23,295 --> 00:26:26,340 Асноўны сінтаксіс для спісачная з'яўляецца 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 што п ў і н г у. 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 Там не вельмі добрая ідэя ў Haskell ці добры, відавочна, паняцце 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 >> У Haskell, вы маглі б, можа быць, выкарыстоўваць, можа быць, можа быць, увядзіце, 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 Так што дае нам спосаб мець эквалайзер або аб'ём на пэўным канале. 489 00:27:54,680 --> 00:27:56,440 >> Конар Харыс: У іншыя прыклады ў Haskell, 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 ў Haskell. 494 00:28:11,020 --> 00:28:12,044 Гэта можа быць трукі. 495 00:28:12,044 --> 00:28:13,960 Конар Харыс: Ці для Аналагічны прыклад, думаю, 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 Таму што адным з наступстваў Вельмі жорсткая тыпізацыя ў Haskell 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, то спіс цэлых лікаў, 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 р для засцярогі інструмента Аргумент, а затым спіс х гадоў. 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 Зноў жа, гэта крыху трохі свядома недакладнай 530 00:30:16,730 --> 00:30:20,580 проста каб паказаць усе дзіўныя рэчы вы можаце зрабіць у Haskell, як вы 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 Гэтая функцыя, каб каментаваць музыка з пэўнай аб'ёму. 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 >> І тады мы бачым, гэты Хай і ў сінтаксісе з Haskell, 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 Але тут, у Haskell, я думаю, што, як толькі вы атрымаеце павесіць яго, неверагодна 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 Цяпер мы хочам, каб дадаць ударныя, і гэта крыху брудней. 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 да г, г 16, 598 00:34:19,429 --> 00:34:20,699 або 32 крокаў у секвенсор. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> І потым, калі ёсць значэнне ў гэтым спісе як мы бяжым праз секвенсор, 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 вы робіце ў Haskell ня называецца распрацоўка праграмнага забеспячэння, 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 >> Конар Харыс: Гэта ў асноўным кампазіцыя функцый. 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 Гэта верталёт, міді верталёт. 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 Я адлюстровываюцца іх цэлых лікаў. 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 І ў мяне ёсць некаторыя маракасы сюды, таксама. 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 выкарыстоўваць ўсячэнне паралельнай кампазіцыі гуляць наш маленькі 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 Так Конар, верагодна, пакажуць Вы, як каментаваць гэта лепш, 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 >> Конар Харыс: ОК Давайце паглядзім. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Хіба вы згадваеце Даведайцеся ў вас Haskell? 713 00:41:21,419 --> 00:41:22,460 Стыў KREWSON: О, так. 714 00:41:22,460 --> 00:41:23,480 Праверце навучыць вас Haskell. 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 >> Конар Харыс: Так што гэта ў Інтэрнэце. 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 Конар Харыс: Так што 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 ці нешта. 733 00:42:08,250 --> 00:42:10,300 Добры спосаб думаць гэта па аналогіі 734 00:42:10,300 --> 00:42:16,620 з'яўляецца тое, што латэкс накшталт 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 у адрозненне ад Сібеліуса або Finale, якія маюць зрабіць узламаных алгарытмаў так 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 >> Калі вы хочаце выкарыстоўваць Finale або Sibelius, фарматы файлаў для тых рэчаў, 757 00:43:26,200 --> 00:43:30,180 вельмі складаныя, і вы не можаце рэальна выкарыстоўваць іх праграмна. 758 00:43:30,180 --> 00:43:35,020 Вы можаце адкрыць Сібеліуса з Finale і перайдзіце ў меню Файл, Экспарт у 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 Вы можаце лёгка перабіраць 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 вантробы 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 >> Конар Харыс: Так. 833 00:47:12,690 --> 00:47:15,390 Гэта добры гальштук-ць, я мяркую. 834 00:47:15,390 --> 00:47:20,150 І ён выкарыстоўваецца ў якасці мовы выкладання, на самай справе, ўніз Масачусэтс-авеню У Масачусецкім тэхналагічным інстытуце. 835 00:47:20,150 --> 00:47:26,590 І гэта вельмі зручна для LillyPond па розных тэхнічных прычынах. 836 00:47:26,590 --> 00:47:30,317 >> І таму, калі вы хочаце, каб проста хітрасці, якія залежаць ад умоўных, 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 Ўзор я напісаў гэта на самай справе ў мажор, 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 Калі вы хочаце зрабіць выпадковасці, Вы суфікс або ES. 857 00:48:18,910 --> 00:48:22,640 Гэта ад галандцаў МУЗЫКАЗНАЎЧАЕ канвенцый. 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 >> І адносна З, прэм'ер і З, вы проста паказаць сярэдні C 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 чытаць з дапамогай гэтага дапаможная Праграма называецца Music 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 >> Я не думаю, што [неразборліва] мае Music 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 >> Конар Харыс: ОК. 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 Конар Харыс: Акрамя таго, у асноўным, кожныя мовы праграмавання 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 Гэта ў асноўным Tech Працы або Тэхналогія Студыя 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 ўнутраныя спасылкі на гэтым URL. 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 так што я магу паставіць яго на айпода? 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 Конар Харыс: Хто-небудзь яшчэ? 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 дзесьці паміж FM і адбору пробаў. 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 і психоакустика нешта накшталт труба, і думаць пра тое, як 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 Конар Харыс: дзякуй. 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