1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Bok. 3 00:00:05,930 --> 00:00:06,820 Ja sam Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Ja sam CS50 CA na Harvardu. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Ja sam Stjepan Krewson. 6 00:00:11,270 --> 00:00:12,582 Ja sam TF za CS50 na Yaleu. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: I mi ćemo razgovarati o nekim tehnologijama koje možda 8 00:00:15,790 --> 00:00:18,880 želite koristiti, ako ste zainteresirani na taj konačni projekt ili stvarno 9 00:00:18,880 --> 00:00:20,920 ništa s glazbom. 10 00:00:20,920 --> 00:00:24,400 Mi ćemo se usredotočiti na prvom a programski jezik zove Haskell. 11 00:00:24,400 --> 00:00:26,280 To je funkcionalni jezik, pa je paradigma 12 00:00:26,280 --> 00:00:29,620 vrlo različit od C ili PHP ili drugim imperativ jezici 13 00:00:29,620 --> 00:00:33,450 koje ste koristili već, a posebno na knjižnica napisan u Haskell 14 00:00:33,450 --> 00:00:40,240 zove Euterpea, koji može pomoći ljudima s pisanjem glazbe funkcionalno, 15 00:00:40,240 --> 00:00:40,780 u osnovi. 16 00:00:40,780 --> 00:00:43,400 Stephen će vas provesti izvrsnog primjer toga. 17 00:00:43,400 --> 00:00:46,423 >> Nakon toga, ja ću vam predstaviti nešto što se zove LillyPond, koji 18 00:00:46,423 --> 00:00:48,370 je tehnologija za slaganje sloga glazbe. 19 00:00:48,370 --> 00:00:50,830 To je vrsta kao LaTeX za glazbu, ako bilo koji od vas 20 00:00:50,830 --> 00:00:57,530 koriste LaTeX za matematike klase ili ostali P set klasa ili što si. 21 00:00:57,530 --> 00:01:00,440 I tako ću ti dati, opet, neke jednostavne primjere koje 22 00:01:00,440 --> 00:01:03,640 te vas uputiti u opće Smjer nekih boljih resursa. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: U Uz to, mislili smo 24 00:01:04,319 --> 00:01:06,720 bilo bi super da postavite malo savjeta 25 00:01:06,720 --> 00:01:10,780 prema cjevovoda između Euterpea generirani MIDI datoteke 26 00:01:10,780 --> 00:01:13,910 u LillyPond, tako pružamo neki naputak o skripti 27 00:01:13,910 --> 00:01:16,310 za to da su opremljen LillyPond 28 00:01:16,310 --> 00:01:19,160 samo da bi ga open source i dobiti plinovod ide. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Opet, Treba naglasiti, 30 00:01:20,910 --> 00:01:23,100 ove dvije tehnologije, što ne morate ih koristiti zajedno. 31 00:01:23,100 --> 00:01:25,370 Nisu dizajniran za rad zajedno, iako su to vrlo lijepo. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Tako je. 33 00:01:26,362 --> 00:01:30,116 I potpuno besplatno. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Pa priznanja, samo pročitao da. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: Propisno navedeno. 36 00:01:33,406 --> 00:01:36,360 Zahvaljujući tim ljudima. 37 00:01:36,360 --> 00:01:39,180 Ovo ću zadržati na samo na trenutak. 38 00:01:39,180 --> 00:01:41,560 Proces instalacije je malo zeznuto. 39 00:01:41,560 --> 00:01:45,420 Imamo mi pročitati na GitHub koje možete pogledati. 40 00:01:45,420 --> 00:01:47,840 Samo mi e-mail ako imate bilo kakvih pitanja. 41 00:01:47,840 --> 00:01:52,829 No, mi ćemo pokrenuti ovo pod pretpostavkom kako je to raditi za svakoga. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: A ako ne možeš dobili LillyPond na posao, nije velika stvar. 43 00:01:55,620 --> 00:02:00,139 Nema Kompilacija koja će biti uključeni, barem na mom kraju. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell i LillyPond trebali oboje imaju instalatere. 45 00:02:02,930 --> 00:02:08,497 Euterpea je skinuti kao Paket, tako dalje i tako dalje. 46 00:02:08,497 --> 00:02:10,080 Dakle, govorimo o računalnoj glazbi. 47 00:02:10,080 --> 00:02:12,990 A to je samo Vrlo pogled 50.000-noga. 48 00:02:12,990 --> 00:02:15,700 Postoji nekoliko različitih aspekata njega. 49 00:02:15,700 --> 00:02:18,120 I ovo je gruba i će zasjeniti neke pojedinosti. 50 00:02:18,120 --> 00:02:22,090 Ali smo mogli smisliti nešto kao i algoritamskog sastava, 51 00:02:22,090 --> 00:02:24,920 pomoću algoritama, pomoću koda, generirati 52 00:02:24,920 --> 00:02:30,280 neki tip of-- možda self-sličan slijed nota, ili možda bilješke 53 00:02:30,280 --> 00:02:33,330 pod nekim pritiskom. 54 00:02:33,330 --> 00:02:35,350 A onda one mogu biti obavlja i tumačiti 55 00:02:35,350 --> 00:02:38,390 s analognim instrumentima ili bilo što slično. 56 00:02:38,390 --> 00:02:42,010 Ali pripravak je učinio algoritamski. 57 00:02:42,010 --> 00:02:45,120 >> Ali, naravno, možda područje računalo glazba ili digitalne glazbe 58 00:02:45,120 --> 00:02:48,870 mi smo više upoznati s je digitalna Zvuk sinteza ili digitalni uzorkovanja 59 00:02:48,870 --> 00:02:51,160 i digitalno snimanje. 60 00:02:51,160 --> 00:02:55,650 Puno digitalnih instrumenata obaviti putem digitalnog uzorkovanja. 61 00:02:55,650 --> 00:03:00,110 U stvari, mi ćemo se pomoću jednog od onih u oblik zvuka fonta knjižnici kasnije. 62 00:03:00,110 --> 00:03:02,850 >> No, tu je i nešto što se zove digitalna sinteza koja je izašla 63 00:03:02,850 --> 00:03:08,650 od kasnih 70-ih i 80-ih godina u s Yamaha i John Chowning na Stanfordu 64 00:03:08,650 --> 00:03:11,990 radiš FM sintezu ili Frekvencijska modulacija sinteza, 65 00:03:11,990 --> 00:03:15,100 gdje je imao karijeru signal i modulirajući signal 66 00:03:15,100 --> 00:03:18,270 kako u audio spektru. 67 00:03:18,270 --> 00:03:22,570 No, ono što smo usredotočeni na danas je nešto što se zove MIDI, 68 00:03:22,570 --> 00:03:25,040 i naravno, algoritamski sastava. 69 00:03:25,040 --> 00:03:30,940 >> Nećemo napraviti instrumenata, ali mi umjesto da ide napraviti neku glazbu, 70 00:03:30,940 --> 00:03:33,940 a onda će se tumačiti neke instrumente koji 71 00:03:33,940 --> 00:03:38,300 su conformant na Općenito MIDI standard. 72 00:03:38,300 --> 00:03:40,830 Dakle, što je MIDI? 73 00:03:40,830 --> 00:03:45,550 Neću da se previše duboko u nju, ali MIDI protokol za prijenos podataka. 74 00:03:45,550 --> 00:03:49,250 To je neka vrsta vodiča kroz različite tvrtke i industrije 75 00:03:49,250 --> 00:03:52,250 za organizaciju zvukove ili zakrpe. 76 00:03:52,250 --> 00:03:54,170 Tako ćemo vidjeti da tu je standardni MIDI 77 00:03:54,170 --> 00:03:57,500 za sve različite udaraljke zvukove i MIDI preporuke 78 00:03:57,500 --> 00:04:01,360 za sve različite vrste ili synth različiti tipovi sve isprave 79 00:04:01,360 --> 00:04:03,650 skupine u orkestru, kažu. 80 00:04:03,650 --> 00:04:08,916 >> Vjerojatno ste upoznati s 0 putem 127 MIDI poruke. 81 00:04:08,916 --> 00:04:12,920 MIDI signal je obično jedan malo što ukazuje 82 00:04:12,920 --> 00:04:16,130 da li je podatke ili Status paketa, a onda je 83 00:04:16,130 --> 00:04:18,589 sedam bitova signala. 84 00:04:18,589 --> 00:04:21,430 A to se može kontrolirati sve od volumena 85 00:04:21,430 --> 00:04:25,330 djelovanju ili pritiska na određenom ključu 86 00:04:25,330 --> 00:04:29,400 ako ste obavljanje s MIDI Regulator kao, naravno, 87 00:04:29,400 --> 00:04:31,250 bilješke. 88 00:04:31,250 --> 00:04:33,450 I naravno, MIDI ima bio iznimno koristan, 89 00:04:33,450 --> 00:04:37,550 jer je to način da se žice zajedno ili lančano 90 00:04:37,550 --> 00:04:41,570 hrpa MIDI hardverskih uređaja. 91 00:04:41,570 --> 00:04:44,050 Imam sedam ili osam leđa u mojoj kući. 92 00:04:44,050 --> 00:04:46,610 To stvarno dobiva komplicirano, ali to je stvarno moćan. 93 00:04:46,610 --> 00:04:47,460 I to je zapravo stara. 94 00:04:47,460 --> 00:04:51,117 To je od ranih 80-ih, i to je stvarno lijepo i male. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Da. 96 00:04:51,950 --> 00:04:54,230 Sve klasična Nintendo video igre bi vjerojatno 97 00:04:54,230 --> 00:04:56,088 ima MIDI datoteke za glazbu, na primjer. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Evo primjer opće MIDI, 100 00:05:01,740 --> 00:05:06,520 pokazujući MIDI kao svojevrsni opće protokola. 101 00:05:06,520 --> 00:05:13,280 I mislim da možemo misliti na Razlika između specifikaciji 102 00:05:13,280 --> 00:05:17,830 da ne bi trebalo biti nešto poput zvuči ovih instrumenata i stvarni 103 00:05:17,830 --> 00:05:21,740 Ostvarenje tih instrumenata zvuči u zdravom font ili određenom MIDI 104 00:05:21,740 --> 00:05:25,740 sintisajzer kao razlika između možda je typeface-- koji kaže, 105 00:05:25,740 --> 00:05:30,350 u cjelini, ovo je dizajn ovaj način predstavlja 106 00:05:30,350 --> 00:05:35,907 characters-- i određeni font koji ima određenu veličinu i boju, 107 00:05:35,907 --> 00:05:37,240 a tu je realizacija the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Možda Bolje bi usporedbu 109 00:05:39,156 --> 00:05:43,430 biti Unicode standardni says-- daje broj na svaki znak, i stvarno 110 00:05:43,430 --> 00:05:46,830 svaki jezik na svijetu, ili velika skup skripti jezika 111 00:05:46,830 --> 00:05:51,310 u svijetu, a onda su to donio u nešto grafički 112 00:05:51,310 --> 00:05:53,710 raznim font paketa. 113 00:05:53,710 --> 00:05:56,630 I očito, možete misliti MIDI kao Unicode zvuka. 114 00:05:56,630 --> 00:06:03,250 A to je samo popis of-- velikom strujom događaja i instrumenata i sitnica, 115 00:06:03,250 --> 00:06:06,090 i morate imati zasebni Program, kao pisma, 116 00:06:06,090 --> 00:06:08,537 kako bi se taj u nešto što je goste. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Pa zašto Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell je funkcionalna programiranje jezik, vrlo napredna, 120 00:06:19,110 --> 00:06:22,770 jako razlikuju od C, vrlo različit od PHP. 121 00:06:22,770 --> 00:06:28,120 A mi ćemo vidjeti da postoji jednostavnost sastava funkcije u Haskell 122 00:06:28,120 --> 00:06:37,640 koji će nam omogućiti da povjetarac kroz skladanje ili pisanja, prepisivanje, 123 00:06:37,640 --> 00:06:42,160 nešto poput Frère Jacques, ovaj jednostavan pjesma koja 124 00:06:42,160 --> 00:06:46,815 ima puno dijelova u to da su self-slične ili ponavljanje. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Dakle, to će biti neki od motivacija zašto 127 00:06:53,250 --> 00:06:59,400 mi smo pomoću Haskell, u kojem funkcije su prve klase građana. 128 00:06:59,400 --> 00:07:01,120 >> I ja sam htjela proširiti ovo malo. 129 00:07:01,120 --> 00:07:08,800 To je malo lako notate Frère Jacques u Haskell. 130 00:07:08,800 --> 00:07:12,100 Ali što ako smo htjeli dodati dio bubnja na njega? 131 00:07:12,100 --> 00:07:17,320 Što ako smo htjeli pokušati učiniti nešto poput Roland 808 ili 909 bubnju 132 00:07:17,320 --> 00:07:20,970 Stroj kojoj morate oko 16 različitih koraka? 133 00:07:20,970 --> 00:07:24,590 Obično su misli kao 16. bilješke. 134 00:07:24,590 --> 00:07:28,640 I vi možete kontrolirati globalni tempo, a možete izabrati 135 00:07:28,640 --> 00:07:34,620 hrpa različitih udaraljki dijelova bas bubnja, A pljesak, različite zamke, 136 00:07:34,620 --> 00:07:37,540 otvorene i zatvorene visoke kape na tih vrsta kanala, 137 00:07:37,540 --> 00:07:41,600 a onda možete EQ ili prilagoditi svoj volumen. 138 00:07:41,600 --> 00:07:45,290 >> I mi ćemo vidjeti lijep način u Haskell zastupanja ovaj korak 139 00:07:45,290 --> 00:07:48,810 sekvencer sa svim razne cool stvari u Haskell 140 00:07:48,810 --> 00:07:53,100 možemo učiniti s generiranjem liste i filtriranje preko popisa, 141 00:07:53,100 --> 00:07:56,060 mapiranje preko liste, mapiranje Funkcije preko popisa. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 I brzo ispriku. 144 00:08:00,760 --> 00:08:05,300 Ovo je vrlo površan i pretjerano brzo skica 145 00:08:05,300 --> 00:08:07,620 nekih aspekata od Haskell i Euterpea, 146 00:08:07,620 --> 00:08:11,760 što je domena specifična ugrađeni jezik napisano 147 00:08:11,760 --> 00:08:14,970 u Haskell za glazbene vrste. 148 00:08:14,970 --> 00:08:17,350 Dakle, molimo Vas da provjerite kod on-line. 149 00:08:17,350 --> 00:08:22,404 Ložiti GHCI, što je Glasgow Haskell prevodilac prevoditelj. 150 00:08:22,404 --> 00:08:24,320 I ja ću biti događaj neki to u malo 151 00:08:24,320 --> 00:08:25,880 tako da možete vidjeti kako se to radi. 152 00:08:25,880 --> 00:08:31,021 >> I to vam omogućuje da učitati u s the-- sintaksa je debelo crijevo, a zatim 153 00:08:31,021 --> 00:08:31,520 naredba. 154 00:08:31,520 --> 00:08:33,510 Možete učitati datoteke. 155 00:08:33,510 --> 00:08:36,840 Možete koristiti pregledavanje tih datoteka vidjeti sve funkcije koje 156 00:08:36,840 --> 00:08:39,169 postojati u određenom modulu. 157 00:08:39,169 --> 00:08:43,850 A onda, kao što ćemo vidjeti, vrsta i tip klase su toliko važni u Haskell, 158 00:08:43,850 --> 00:08:48,850 tako da uvijek možete check-- posebno ako radite u novom DSCL 159 00:08:48,850 --> 00:08:51,600 ovako, ono što je glazba tipa? 160 00:08:51,600 --> 00:08:55,114 Znam o načinu brojčani Vrste raditi u Haskell, 161 00:08:55,114 --> 00:08:56,530 ali ja ne znam puno o glazbi. 162 00:08:56,530 --> 00:09:01,280 Ali možete istražiti način na koji su oni definirani pomoću ovog t ili upišite command 163 00:09:01,280 --> 00:09:04,577 a zatim pozivom na određeni Funkcija ili objekt podataka. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Da. 165 00:09:05,410 --> 00:09:09,820 Ako ste mislili C i zveket Bio hardass o vrstama, 166 00:09:09,820 --> 00:09:11,230 nemate pojma o Haskell. 167 00:09:11,230 --> 00:09:14,230 Dobra stvar o Haskell je da ako mogu dobiti svoj kod za prikupljanje 168 00:09:14,230 --> 00:09:16,790 a ako tipa Haskell provjere, to je vjerojatno u pravu, 169 00:09:16,790 --> 00:09:18,675 jer je tip sustava je tako stroga. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Da. 171 00:09:20,090 --> 00:09:21,980 Dakle, ja samo želim otići through-- i opet, 172 00:09:21,980 --> 00:09:27,160 to ne radi da justice-- nekoliko značajke Haskell, barem 173 00:09:27,160 --> 00:09:31,780 svoje creators-- a nastao u kasnim 1980-ih je hrpa ljudi, 174 00:09:31,780 --> 00:09:34,610 odbor 20 people-- mislili su važni. 175 00:09:34,610 --> 00:09:36,850 I prva stvar koju navedene u članku koji 176 00:09:36,850 --> 00:09:41,890 opisao genezu Haskell tijekom prvih 20 godina ili na taj način 177 00:09:41,890 --> 00:09:43,390 je da je lijen. 178 00:09:43,390 --> 00:09:44,990 Dakle, što to znači? 179 00:09:44,990 --> 00:09:49,860 >> Pa, to znači da kad imamo neku izražavanja, moramo ga ocijeniti. 180 00:09:49,860 --> 00:09:54,390 I Haskell to radi u pozivu po potrebi putu ili ne-strogom način. 181 00:09:54,390 --> 00:09:57,250 To jest, ako imamo hrpu komponente našeg izražavanja, 182 00:09:57,250 --> 00:10:00,660 pokušavamo odgoditi procjenu tih potkomponenta 183 00:10:00,660 --> 00:10:05,300 do apsolutne zadnjeg minute-- to je sve što im zapravo treba. 184 00:10:05,300 --> 00:10:08,480 >> Dakle, ovo što je means-- stvarno cool, pogotovo 185 00:10:08,480 --> 00:10:13,200 ako smo razmišljati o apstrakciji glazbenog korak sekvencer. 186 00:10:13,200 --> 00:10:16,740 Možete ga uključite, a vi početi trčanje korak sequence-- 187 00:10:16,740 --> 00:10:20,010 Ako ste ikada radili s bubnjem machine-- i to samo ide zauvijek. 188 00:10:20,010 --> 00:10:24,650 Dakle, to bi bilo jako lijepo, ako mi mogao natjecati da u Haskell. 189 00:10:24,650 --> 00:10:31,040 I mi to možemo učiniti s beskonačnim vrijednosti, posebno beskonačnim popisima. 190 00:10:31,040 --> 00:10:35,860 To je vrlo lako za upisivanje beskonačan popis u Haskell. 191 00:10:35,860 --> 00:10:39,230 Vi samo mogao koristiti sintaksu dolje ovdje, gdje možete vidjeti 1 do 3, 192 00:10:39,230 --> 00:10:42,440 uklonite 3 1 točka točku i koji je beskonačan popis 193 00:10:42,440 --> 00:10:46,960 Od svih prirodnih brojeva proširenje na koliko možete zamisliti. 194 00:10:46,960 --> 00:10:49,925 >> Želim uvesti Koncept nabora odmah. 195 00:10:49,925 --> 00:10:51,800 I opet, svrha ovog seminara nije 196 00:10:51,800 --> 00:10:55,770 naučiti o naborima u Haskell ili funkcije višeg reda. 197 00:10:55,770 --> 00:10:59,640 Ali ja samo želim da ga predstavimo dati točan osjećaj kako čudno 198 00:10:59,640 --> 00:11:03,700 Haskell i koliko je moćan je. 199 00:11:03,700 --> 00:11:08,000 A posebno ćemo be-- kada radimo naše različite bubanj dijelovi, 200 00:11:08,000 --> 00:11:12,790 ćemo se manipulira popise brojevi, sklopivi ih jedan na drugi. 201 00:11:12,790 --> 00:11:17,290 A za to, mi ćemo se pomoću karte i nabora. 202 00:11:17,290 --> 00:11:21,770 >> Postoji pravo asocijativni fold, što je ovaj jedan pravu 203 00:11:21,770 --> 00:11:26,990 here-- 1 minus količina, 2 minus količina, 3 minus 0. 204 00:11:26,990 --> 00:11:29,170 A sintaksa za puta, što daju puta 205 00:11:29,170 --> 00:11:34,680 baza vrijednost i zatim operation-- U tom slučaju, dodatak ili oduzimanje. 206 00:11:34,680 --> 00:11:36,280 Ja sam prikazana oba slučaja. 207 00:11:36,280 --> 00:11:41,760 A onda tu je akumulator koji akumulira tijekom cijelog popisa, 208 00:11:41,760 --> 00:11:46,330 Primjenom tog operatora plus minus, a zatim ga gomilaju. 209 00:11:46,330 --> 00:11:52,680 Dakle, to će biti the-- ako je zvao sa strukom r plus od 0, počevši od 0, 210 00:11:52,680 --> 00:11:54,720 mi bi onda sumirati sve brojevi u tom popisu. 211 00:11:54,720 --> 00:11:57,134 I to je popis od 1 do 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Pa da ga drugi Tako puta R traje tri argumente. 213 00:12:00,050 --> 00:12:02,540 Postoji funkcija Sam traje dva argumenta, 214 00:12:02,540 --> 00:12:05,400 onda je starter vrijednost, a tu je popis vrijednosti. 215 00:12:05,400 --> 00:12:08,570 A što ti se uzeti starter vrijednost, prva vrijednost, 216 00:12:08,570 --> 00:12:09,850 stavite ih u funkciju. 217 00:12:09,850 --> 00:12:11,607 Što ste dobili, uzeti, hranu koja 218 00:12:11,607 --> 00:12:13,940 u funkciju Druga vrijednost, ono što ste dobili, 219 00:12:13,940 --> 00:12:16,690 uzeti, hraniti toga u Funkcija treće vrijednosti. 220 00:12:16,690 --> 00:12:18,740 A onda, ako idete dolje Cijeli ovaj popis na ovaj način, 221 00:12:18,740 --> 00:12:22,970 ti si idući u dobiti na kraju Neki jednini vrijednost koja je 222 00:12:22,970 --> 00:12:25,720 istog tipa što ste započeli s i istog tipa 223 00:12:25,720 --> 00:12:29,147 kao stvari s popisa, a zatim to je povratak rezultat fold R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Tako posebno, to su veće funkcije reda, 225 00:12:31,980 --> 00:12:34,460 jer oni su uzimajući drugi Funkcija kao jedan od argumenata. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Da. 227 00:12:34,770 --> 00:12:37,820 Ako ste koristili određeni drugi languages-- znam R, [nečujan] 228 00:12:37,820 --> 00:12:41,510 jezik ima to, zove smanjiti. 229 00:12:41,510 --> 00:12:45,460 Možda ste slične funkcije u drugim jezicima, jednostavno zove 230 00:12:45,460 --> 00:12:48,160 različite stvari. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: I što je lijepo o fold R 232 00:12:50,680 --> 00:12:53,880 u ovom slučaju je to puta R može raditi s beskonačnim popisima. 233 00:12:53,880 --> 00:12:59,490 Dakle, u ovom dnu, ovaj P5 generira note koje 234 00:12:59,490 --> 00:13:03,120 su uključena u koraku sekvencer za neki bubanj dio, peti dio bubanj, 235 00:13:03,120 --> 00:13:05,480 a možda je to Conga bubanj ili nešto. 236 00:13:05,480 --> 00:13:09,719 A to je namjerno tupo način pisanja ovog, 237 00:13:09,719 --> 00:13:11,510 ali to je zabavno, jer to pokazuje puno 238 00:13:11,510 --> 00:13:14,460 stvari o Haskell i Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Tako fold R ovog colon-- kolona je Samo operator koji gura stvari 240 00:13:20,650 --> 00:13:25,700 zajedno na list-- pozvao prazna Popis, koji je samo prazne zagrade. 241 00:13:25,700 --> 00:13:28,250 I Zovem da na ovom beskrajnom popisu. 242 00:13:28,250 --> 00:13:31,570 To je zapravo dvije liste zbrojiti ovdje. 243 00:13:31,570 --> 00:13:37,150 Popis 1 zarezom 6 točaka točka je 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Tako Haskell-- u samo nekoliko znakova, te 245 00:13:39,750 --> 00:13:42,420 može generirati cijelu slijed brojeva 246 00:13:42,420 --> 00:13:46,240 da pet brojeva osim proteže na u beskonačnost. 247 00:13:46,240 --> 00:13:49,860 I ja prepend na to to kraći malo list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- samo da vam pokazati kako možete spojite liste. 249 00:13:54,370 --> 00:13:55,790 >> A onda sam presavijeni na sebi. 250 00:13:55,790 --> 00:14:01,510 A ovo završi samo kao neka vrsta Operacija identitet, ali to je beskonačan. 251 00:14:01,510 --> 00:14:06,070 I preklopite R može učiniti, jer je to lijeno ocjenjuje, kao gore. 252 00:14:06,070 --> 00:14:10,582 Ako imamo 1 i 2 i 3, možemo Samo omeđi isključivanje cijeli ostatak. 253 00:14:10,582 --> 00:14:12,290 To neće raditi za minus ili plus, ali to 254 00:14:12,290 --> 00:14:17,760 će raditi za ovaj kolona Operacija identiteta na popisu. 255 00:14:17,760 --> 00:14:24,620 >> Pa kako ćemo praktično koristiti da ako ima beskrajno dug popis stvari? 256 00:14:24,620 --> 00:14:26,500 Pa, Haskell pruža puno functions-- 257 00:14:26,500 --> 00:14:29,450 i tražiti više u te u vlastiti time-- kao što poduzeti 258 00:14:29,450 --> 00:14:32,200 koji kaže: U redu, mi smo generiranje ovu beskonačnu listu, 259 00:14:32,200 --> 00:14:35,950 ali mi samo uzeti neke Broj njega I u ovom case-- 260 00:14:35,950 --> 00:14:38,410 ćemo vidjeti kasnije u naš bubanj stroj code-- 261 00:14:38,410 --> 00:14:43,740 GM je samo neka vrsta globalnog varijabla za broj koraka 262 00:14:43,740 --> 00:14:44,610 u sekvencer. 263 00:14:44,610 --> 00:14:47,630 Na roll-u strojevima sam pokazali vas, to je obično 16, 264 00:14:47,630 --> 00:14:51,475 ali sam ga provodi sa 32. 265 00:14:51,475 --> 00:14:54,470 To zapravo ne smeta. 266 00:14:54,470 --> 00:15:00,230 >> Haskell je i čista, tako da ima jake statički tipkanje Connor aludirao. 267 00:15:00,230 --> 00:15:03,220 Tako su funkcije Matematički u sense-- 268 00:15:03,220 --> 00:15:06,600 oni su više matematički da oni zajamčena 269 00:15:06,600 --> 00:15:11,530 ne pristupiti ili promijeniti bilo koje vrste promjenjiva ili izvođenje ulaz ili izlaz. 270 00:15:11,530 --> 00:15:14,420 Dakle, ako imate funkciju, to je deterministička. 271 00:15:14,420 --> 00:15:17,400 Uvijek će se vratiti isto vrijednost u stanju programa 272 00:15:17,400 --> 00:15:19,310 ili ostati isti. 273 00:15:19,310 --> 00:15:22,940 Postoje, naravno, iznimke mantrom na to, ali to je izvan našeg dosega. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Da. 275 00:15:23,900 --> 00:15:26,946 Što to znači, iako je tu nekoliko važnih [nečujan] 276 00:15:26,946 --> 00:15:27,820 Posljedice toga. 277 00:15:27,820 --> 00:15:30,940 Jedan od njih je da je vrlo lako parallelize Haskell programe. 278 00:15:30,940 --> 00:15:32,773 Jer ako imate, kažu, funkciju koja 279 00:15:32,773 --> 00:15:36,064 treba raditi na milijun vrijednosti, ako Znate li da je funkcija će uvijek 280 00:15:36,064 --> 00:15:39,280 dati istu vrijednost ako hranite na određenoj value-- 281 00:15:39,280 --> 00:15:43,055 ako ste [nečujan] F 1, F 2, onda f 3 ili whatnot-- f od 1 282 00:15:43,055 --> 00:15:45,180 se neće ispisati u datoteku ili učiniti nešto 283 00:15:45,180 --> 00:15:46,850 koji će izmijeniti vrijednost f2. 284 00:15:46,850 --> 00:15:50,220 Vi samo možete podijeliti ovu funkciju do milijun različitih strojevi ili milijun 285 00:15:50,220 --> 00:15:54,720 različite teme ili bilo što, dobiti sve odgovore unatrag, 286 00:15:54,720 --> 00:15:56,900 dobiti sve vrijednosti povratak natrag, a onda to je to. 287 00:15:56,900 --> 00:15:59,780 Dakle, vrlo lako parallelize stvari. 288 00:15:59,780 --> 00:16:03,140 >> The downside je da unos i izlaz osobito 289 00:16:03,140 --> 00:16:05,720 uklapaju u tip sustava u vrlo komplicirane načine. 290 00:16:05,720 --> 00:16:09,010 Nećemo ulaziti u to upravo sada, ali ja potičemo vas da pogledate neke resurse 291 00:16:09,010 --> 00:16:11,175 online, ako želite saznati više o tome. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Pa upišite classes-- i to 294 00:16:16,550 --> 00:16:21,610 was-- klase tipa su izmislili riješiti 295 00:16:21,610 --> 00:16:24,160 problem operatera preopterećenja. 296 00:16:24,160 --> 00:16:27,590 Tako smo željeli imati jednakost između različitih vrsta stvari. 297 00:16:27,590 --> 00:16:31,040 Naravno, mogli bismo razmišljati of-- jednakost između numeričkih tipova 298 00:16:31,040 --> 00:16:34,720 vrlo je lako razmišljati o, ali što o ravnopravnosti liste? 299 00:16:34,720 --> 00:16:37,610 Što o ravnopravnosti stablo podataka noga strukture? 300 00:16:37,610 --> 00:16:43,130 I to je sve moguće u Haskell zbog tipa nastave. 301 00:16:43,130 --> 00:16:48,000 >> Dakle, ako ste definirali određene podatke type-- i ovdje, to su glazbene parcela. 302 00:16:48,000 --> 00:16:50,960 Mi napokon dobivamo do neke računalne glazbe. 303 00:16:50,960 --> 00:16:57,420 Tako imamo C, C oštra, i tako dalje i tako dalje. 304 00:16:57,420 --> 00:17:01,080 Oni pripadaju hrpa različite klase tipa. 305 00:17:01,080 --> 00:17:03,510 EQ-- pripadaju tipa EQ klasi. 306 00:17:03,510 --> 00:17:06,780 To znači da oni podržavaju Poslovanje jednakosti. 307 00:17:06,780 --> 00:17:12,650 Na taj način možete procijeniti je li jedan slijed glazbenih primitivaca 308 00:17:12,650 --> 00:17:15,400 isti kao drugu. 309 00:17:15,400 --> 00:17:17,280 >> Oni pripadaju rednim klasi. 310 00:17:17,280 --> 00:17:19,479 To znači da postoji naručivanja na njih. 311 00:17:19,479 --> 00:17:27,670 D dolazi nakon oštre C C dolazi nakon C, kao dobro. 312 00:17:27,670 --> 00:17:29,840 Pripadaju klasi pokazati, što znači da oni mogu 313 00:17:29,840 --> 00:17:33,000 biti tiskan na konzolu ili terminala. 314 00:17:33,000 --> 00:17:36,090 Oni pripadaju Klasa nabrojane, koji 315 00:17:36,090 --> 00:17:39,770 znači da, iako to su likovi, 316 00:17:39,770 --> 00:17:45,340 imaju temeljne numeričku zastupljenost početkom u 0 317 00:17:45,340 --> 00:17:48,960 i otišao kroz međutim mnoge stvari ovdje, 20 ili tako, 318 00:17:48,960 --> 00:17:51,770 ili 30 ili 40, možda. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: A kada imamo tip podataka 320 00:17:54,259 --> 00:17:57,050 da derives-- s tom ključnom riječi "deriving--" određena vrsta klase, 321 00:17:57,050 --> 00:18:01,160 to znači da je prevodilac će pokušati konstruirati nešto automatski. 322 00:18:01,160 --> 00:18:05,120 Dakle, možda ćete želite definirati kvalitetu drugačije. 323 00:18:05,120 --> 00:18:09,450 Vi ćete želite definirati C oštar kao jednako D ravna, npr. 324 00:18:09,450 --> 00:18:11,560 Ovom konstrukcijom ovdje ne mislim C sharp 325 00:18:11,560 --> 00:18:14,940 i D stan će biti jednak, jer prevodilac će automatski 326 00:18:14,940 --> 00:18:19,670 kažu svaku drugu moguću vrijednost se razlikuje od svakog drugog. 327 00:18:19,670 --> 00:18:22,930 >> Dakle, moguće je nadjačati zadani implementacije 328 00:18:22,930 --> 00:18:25,730 ove vrste nastave. 329 00:18:25,730 --> 00:18:28,640 Opet, pogledajte reference ako Želite li saznati više o tome. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: I Ovdje, zapravo, to će 332 00:18:33,600 --> 00:18:36,930 biti od pomoći kad smo kodirati kasnije. 333 00:18:36,930 --> 00:18:42,150 Vidimo neke od utjerati operatora za uzastopnu sastava, 334 00:18:42,150 --> 00:18:46,570 Sastav paralelno, tako dalje, ti plusa i jednake znakove 335 00:18:46,570 --> 00:18:48,620 okružen kolona. 336 00:18:48,620 --> 00:18:53,330 To znači da možemo igrati ove različite glazbeni primitivci jednu za drugom. 337 00:18:53,330 --> 00:18:54,590 To je sekvencijalni sastav. 338 00:18:54,590 --> 00:18:57,170 >> Ili ih možemo igrati u paralelno istovremeno. 339 00:18:57,170 --> 00:19:05,100 Dakle, ja mogu imati glazbenu vrijednost, i onda to jednako i dvotočke, 340 00:19:05,100 --> 00:19:09,669 utjerati paralelni operator sastav, i igrati ih kao neku vrstu akorda. 341 00:19:09,669 --> 00:19:11,460 A mi ćemo koristiti ovo kad kombiniramo 342 00:19:11,460 --> 00:19:15,080 naš bubanj dio s našim Malo Frere Jacques pjesma 343 00:19:15,080 --> 00:19:19,460 igrati ove dvije sekvence glazbene vrijednosti u isto vrijeme. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying is-- Curry je zadnji put naziv Haskell Curry, koji je 346 00:19:29,250 --> 00:19:31,850 Haskell slika je nazvana. 347 00:19:31,850 --> 00:19:34,330 I to omogućuje nam Lijepo eleganciju kad smo 348 00:19:34,330 --> 00:19:36,880 pisanje svih tih različitih funkcije ili filteri koji smo 349 00:19:36,880 --> 00:19:39,330 će biti mapiranje nad našim listama. 350 00:19:39,330 --> 00:19:42,810 Funkcija dva arguments-- f X i y-- 351 00:19:42,810 --> 00:19:46,630 može se prikazati kao f x primijeniti na y. 352 00:19:46,630 --> 00:19:49,800 Dakle, to je funkcija jedan argument da se vraća 353 00:19:49,800 --> 00:19:51,240 jedna funkcija jednog argumenta. 354 00:19:51,240 --> 00:19:56,962 Dakle, to znači da možemo mapirati Funkcija f x preko popisa y a. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Želite li dati primjer za to? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Da. 357 00:19:59,836 --> 00:20:05,390 Imam primjer ovdje iz neke stvari ćemo pisati. 358 00:20:05,390 --> 00:20:10,500 Dakle, odgovor 2-- dobro, odgovor će se 359 00:20:10,500 --> 00:20:13,040 jedna vrijednost, a to je koliko je puta ponoviti nešto, 360 00:20:13,040 --> 00:20:16,690 a onda će se value-- Obično popis ili nešto. 361 00:20:16,690 --> 00:20:23,450 Dakle ovdje smo mapiranje replicirati 2 nad drugom popisu. 362 00:20:23,450 --> 00:20:27,440 >> Dakle, ako smo mapirati replicirati 2, ako mi replicirati 2 prijaviti 363 00:20:27,440 --> 00:20:31,890 na prvi element ovog list-- i To su popisi glazbene phrases-- 364 00:20:31,890 --> 00:20:37,650 će proizvoditi dva "vi sleeping--" tako da ste spavali, jeste li spavali. 365 00:20:37,650 --> 00:20:40,040 Dakle, sada imamo dva. 366 00:20:40,040 --> 00:20:42,570 Ali repliciraju traje dvije argumenti, nego zato što smo 367 00:20:42,570 --> 00:20:47,100 currying a onda mapiranje, možemo predstavljati replicira 2 368 00:20:47,100 --> 00:20:52,310 kao što je vraćeno u funkciji jedan argument-- samo replicira dvaput. 369 00:20:52,310 --> 00:20:57,010 A onda smo se prijavljujete da je svaki element ovog popisa fraza. 370 00:20:57,010 --> 00:21:01,900 >> I concat je Haskell Rad za ravnanje popis. 371 00:21:01,900 --> 00:21:04,400 Budući da repliciraju 2 volje proizvesti popis listama. 372 00:21:04,400 --> 00:21:06,660 I to je to prijelazni oblik ovdje. 373 00:21:06,660 --> 00:21:10,365 I tako onda možemo concat ili poravnati da se dva puta. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Jednostavniji Primjer currying, 375 00:21:12,240 --> 00:21:15,323 ako bih volimo-članovima zamisliti f je samo množenja funkcija koja traje dva 376 00:21:15,323 --> 00:21:16,840 argumente i vraća njihov proizvod. 377 00:21:16,840 --> 00:21:19,320 Dakle, ako imate F 4 5, to je 20. 378 00:21:19,320 --> 00:21:22,670 Ali možete misliti o tome kako je also-- imate funkcija f 4 379 00:21:22,670 --> 00:21:25,560 koji traje argument i vraća četiri puta ovaj argument-- jednostavno 380 00:21:25,560 --> 00:21:27,870 djelomična aplikacija koja samo jedan argument 4. 381 00:21:27,870 --> 00:21:31,182 A ako hraniti f od 4 5, koji će vam dati 20. 382 00:21:31,182 --> 00:21:32,890 I to je jednostavnije Primjer currying. 383 00:21:32,890 --> 00:21:34,473 To je obično jedan od onih udžbenika. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda izrazi ili anonimni funkcije 386 00:21:42,110 --> 00:21:47,330 su još Haskell znak. 387 00:21:47,330 --> 00:21:51,242 Dakle, ako moramo bič gore Malo funkcija život repliciraju, 388 00:21:51,242 --> 00:21:52,950 ali kažu da nije u standardni knjižnica, 389 00:21:52,950 --> 00:21:56,150 možemo koristiti sintaksu sličan sljedećem. 390 00:21:56,150 --> 00:21:58,730 A mi ćemo povjetarac preko toga. 391 00:21:58,730 --> 00:22:02,160 Jedna stvar koju ćete vidjeti puno u bubanj stroj smo pozive 392 00:22:02,160 --> 00:22:05,790 na nešto što se zove filter, koji je kao i prije, 393 00:22:05,790 --> 00:22:08,185 je mapiranje funkciju preko popisa, ali to je 394 00:22:08,185 --> 00:22:10,260 mapiranje i Boolean funkcije. 395 00:22:10,260 --> 00:22:13,390 >> Dakle, ovdje imamo primjer se od anonimno 396 00:22:13,390 --> 00:22:19,150 definirati Booleova funkcija koja traje samo par vrijednosti. 397 00:22:19,150 --> 00:22:22,990 Ovo nije strogo govoreći anonimni funkcija. 398 00:22:22,990 --> 00:22:25,850 Ali to je definirati s da sintaksa za sažetosti, 399 00:22:25,850 --> 00:22:28,007 i to traje samo x modul n- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Da. 401 00:22:28,840 --> 00:22:31,330 F pa je funkcija dva argumenta n i p 402 00:22:31,330 --> 00:22:35,440 koji vraća funkciju koja je sama funkcija jednog argumenta, odnosno x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: ja navedeni utjerati operatora. 405 00:22:40,690 --> 00:22:42,642 Što su utjerati operateri? 406 00:22:42,642 --> 00:22:45,710 Pa, utjerati operateri su normalan način zastupamo poslovanje, 407 00:22:45,710 --> 00:22:49,910 kažu, u mathematics-- 2 plus 2 umjesto operatora plus 408 00:22:49,910 --> 00:22:51,202 a zatim dva argumenta 2 i 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: To se zove obrnuti poljski zapis, što je 410 00:22:53,701 --> 00:22:55,330 pojam Sumnjam itko od vas će znati. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Tako je. 412 00:22:56,288 --> 00:22:58,290 Obrnut poljski ili prefiks zapis. 413 00:22:58,290 --> 00:23:01,412 Ali Haskell odlučio koristiti utjerati operatore. 414 00:23:01,412 --> 00:23:03,120 Dakle, to su neke od prilagođene one koje 415 00:23:03,120 --> 00:23:07,770 su definirani za Euterpea DSCL u Haskell. 416 00:23:07,770 --> 00:23:10,730 Dakle, to je sekvencijalni sastav. 417 00:23:10,730 --> 00:23:16,340 To je paralelno sastav, a to je skraćivanjem paralelno sastav. 418 00:23:16,340 --> 00:23:18,710 I mi ćemo morati da s našim bubanj stroja, 419 00:23:18,710 --> 00:23:22,640 jer ćemo koristiti zadnji operator u tom malom torka tamo 420 00:23:22,640 --> 00:23:26,330 igrati bubanj stroj zajedno s našim Frere Jacques pjesme. 421 00:23:26,330 --> 00:23:28,650 I naš bubanj stroj će biti beskonačan. 422 00:23:28,650 --> 00:23:30,920 To je samo igra zauvijek. 423 00:23:30,920 --> 00:23:32,692 Ali Frere Jacques pjesma nije. 424 00:23:32,692 --> 00:23:33,510 Nije to dugo. 425 00:23:33,510 --> 00:23:36,610 To je samo nekoliko barova. 426 00:23:36,610 --> 00:23:43,030 Dakle, moramo zaustaviti bubanj stroj kao Čim je kraća glazbena vrijednost dolazi 427 00:23:43,030 --> 00:23:43,700 do kraja. 428 00:23:43,700 --> 00:23:46,980 I to infixed operater je super korisno s tim. 429 00:23:46,980 --> 00:23:50,090 >> I utjerati zapisa kao to je vrsta lijepo, 430 00:23:50,090 --> 00:23:57,095 jer kažu da imate funkciju kao citat, koji daje podjelu cijeli broj 431 00:23:57,095 --> 00:24:01,010 x nečim else-- Nažalost, to bi trebao biti i b. 432 00:24:01,010 --> 00:24:04,740 Ti bi mogao napisati kao citat od b. 433 00:24:04,740 --> 00:24:09,670 Dakle, ako ste put-- element još jedan primjer toga. 434 00:24:09,670 --> 00:24:14,730 x element u nekom popisu, ako ste stavili je u Backticks, možete ga koristiti. 435 00:24:14,730 --> 00:24:20,400 Iako to nije simbol kao plus ili minus ili puta, 436 00:24:20,400 --> 00:24:24,630 možete koristiti naziv je funkcija kao što je to u Backticks 437 00:24:24,630 --> 00:24:27,045 kao utjerati operatora, što je prilično cool. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Opet, ovo je svi samo sintaktička šećer, stvarno. 439 00:24:29,670 --> 00:24:32,310 To ne utječe na jezgru jeziku. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Tako vidimo ovdje za Posljednji izraz našeg Frere Jacques pjesme, 441 00:24:37,440 --> 00:24:45,740 Igrao sam neke malo akorde ili trećine pomoću paralelnog sastav 442 00:24:45,740 --> 00:24:46,240 operater. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Ovo je još jedan način da se kaže neke onoga što smo upravo govorili. 445 00:24:54,950 --> 00:24:59,986 Tako možete map funkcije jednog argumenta nad listama. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Opet, reference za Haskell-- uvodnih udžbenika 447 00:25:02,860 --> 00:25:04,680 će imati sve to u njoj. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: pa ovdje je prilično Ključni redak korak sekvencer 449 00:25:07,790 --> 00:25:12,820 ćemo pogledati pomoću popis razumijevanja. 450 00:25:12,820 --> 00:25:17,810 I ovdje vidimo je taj element u fiksnom operateru u leđa citati. 451 00:25:17,810 --> 00:25:23,030 Dakle, ako je x element popisa x-a, onda ćemo nazvati Perc funkcije. 452 00:25:23,030 --> 00:25:25,100 Dakle perc je samo funkcija udaraljke. 453 00:25:25,100 --> 00:25:30,200 Potrebno je neko vrijednosti p koji je dio omeđen skup svih 454 00:25:30,200 --> 00:25:35,310 različite udaraljke zvukovi kako smo vidjeli u prethodnom slajdu, 455 00:25:35,310 --> 00:25:38,840 a onda daje da trajanje četvrtinka. 456 00:25:38,840 --> 00:25:43,190 Inače to mu daje QNR i QNR je samo četvrtina napomena ostali. 457 00:25:43,190 --> 00:25:44,970 >> Dakle, ovo je izgradnju nešto lijepo. 458 00:25:44,970 --> 00:25:52,110 Imamo popis elemenata, te mi ćemo petlje preko neke liste od jedne 459 00:25:52,110 --> 00:25:54,540 do max vrijednosti našeg koraka sekvencer. 460 00:25:54,540 --> 00:25:58,290 A kad smo već kod određenog I u taj popis od jednog do max vrijednosti, 461 00:25:58,290 --> 00:26:02,970 ako to i je član ove Skup je stvorio u ovoj funkciji, 462 00:26:02,970 --> 00:26:06,040 dobro, onda smo ga uključili u udaraljke bilješku. 463 00:26:06,040 --> 00:26:10,960 Inače, upravo smo igrati ostatak koji Naime, mi samo šutjeti. 464 00:26:10,960 --> 00:26:16,050 I možemo vidjeti da se ovdje u ovaj popis razumijevanje sintakse, 465 00:26:16,050 --> 00:26:20,030 X je naseljeno ovo Popis izgrađeno jedno 466 00:26:20,030 --> 00:26:22,462 na globalnu veličinu sekvencer. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Da. 468 00:26:23,295 --> 00:26:26,340 Osnovna sintaksa za Popis spoznaja je 469 00:26:26,340 --> 00:26:30,810 nosač, vrijednost uključuje neke varijable, bar, 470 00:26:30,810 --> 00:26:34,260 Moguće vrijednosti varijabli sami, zatvorena zagrada. 471 00:26:34,260 --> 00:26:38,545 A ako ste učinili postavljanje graditelj zapis u bilo kakve matematike klase, 472 00:26:38,545 --> 00:26:45,999 možda ste postavili 2n kao da n ili n je z. 473 00:26:45,999 --> 00:26:48,290 Slično stvar-- ovom načinu je značilo da se sugestivni 474 00:26:48,290 --> 00:26:49,630 te matematičke notacije. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: A što možete vrijede više predikate 476 00:26:51,880 --> 00:26:56,250 i više filtri popisu razumijevanje, što je prilično lijepo. 477 00:26:56,250 --> 00:27:01,800 Algebarski types-- smo neće oklijevati dugo ovdje. 478 00:27:01,800 --> 00:27:04,840 Nema dobra ideja u Haskell ili dobar, očito pojam 479 00:27:04,840 --> 00:27:10,720 kako bi se, recimo, zadani parametar u funkciji ili nešto. 480 00:27:10,720 --> 00:27:13,370 U Python, to je vrlo jednostavno. 481 00:27:13,370 --> 00:27:18,460 Vi samo mogu reći s jednako na izjava o funkciji, 482 00:27:18,460 --> 00:27:21,420 zadana vrijednost Slučaj nitko dobivate. 483 00:27:21,420 --> 00:27:27,010 >> U Haskell, što bi možda koristite možda možda upisati, 484 00:27:27,010 --> 00:27:32,190 koja traje ili ništa ili vrijednost tipa samo. 485 00:27:32,190 --> 00:27:38,630 Tako smo to iskoristili u bubanj stroja kako bi se omogućilo nam dati dodatni volumen 486 00:27:38,630 --> 00:27:40,730 Parametri za svaki od bubnja dijelova. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Tako da nam daje način ima EQ ili volumen na određenom kanalu. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: U drugi Haskell primjeri, 490 00:27:56,440 --> 00:28:00,450 možete vidjeti možda koristi za Funkcije koje bi mogle uspjeti. 491 00:28:00,450 --> 00:28:03,470 To je zajednički. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: A možete dostaviti neka vrsta poruka o pogrešci kao zadani. 493 00:28:07,010 --> 00:28:11,020 A to je osobito zgodan kada radite na I / O u Haskell. 494 00:28:11,020 --> 00:28:12,044 To može biti trikove. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: ili za Sličan primjer, mislim 496 00:28:13,960 --> 00:28:17,460 od funkcija koja uključuje podjelu od parametara koji bi mogli biti 0. 497 00:28:17,460 --> 00:28:20,020 I to je funkcija mogla povratak možda god. 498 00:28:20,020 --> 00:28:22,802 Dakle, ako ne postoji podjela po 0, ona će se vratiti samo ono. 499 00:28:22,802 --> 00:28:25,010 A ako postoji podjela po 0, da će se vratiti ništa 500 00:28:25,010 --> 00:28:26,910 kao način signaliziranja pogreške. 501 00:28:26,910 --> 00:28:30,330 Zbog jedne posljedica Haskellov je vrlo strogi tipkanje 502 00:28:30,330 --> 00:28:34,100 je da nema real-- Izuzetak su nespretno, u osnovi, 503 00:28:34,100 --> 00:28:36,160 rukovanje pogreškama je nezgodno. 504 00:28:36,160 --> 00:28:39,440 A to je jedan vrlo čest način to radi. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Tako sada smo dobili na drugi um-savijanje stvar 506 00:28:42,990 --> 00:28:49,160 o Haskell, koji je uzorak Usklađivanje i definicije funkcija. 507 00:28:49,160 --> 00:28:53,390 Ja vam pokazali u zadnjem gurnite izjava koraka slijeda 508 00:28:53,390 --> 00:28:58,170 funkcija, što je uzeo možda vrijednosti, onda int, a zatim popis Ints, 509 00:28:58,170 --> 00:29:03,850 zatim vraća slijed glazbene vrijednosti postoji obilježeni 510 00:29:03,850 --> 00:29:05,375 s obje teren i volumena. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Dakle, ta tri argumenti mogu biti uzorak odgovara na sljedeći način. 513 00:29:11,820 --> 00:29:16,660 A mi uvijek želimo biti sigurni da napraviti bazu slučaj ili izlaz slučaj prvi. 514 00:29:16,660 --> 00:29:19,690 I ove podvlake može samo tumačiti 515 00:29:19,690 --> 00:29:22,340 znači bilo koju vrijednost koja je tamo. 516 00:29:22,340 --> 00:29:26,580 Dakle, ako smo dobili poziv na korak slijed s nekim vrijednosti, neke druge vrijednosti, 517 00:29:26,580 --> 00:29:32,210 a zatim prazan list, ono što želimo Za povratak je samo tišina, odmoriti 0. 518 00:29:32,210 --> 00:29:35,110 >> I umjesto da se biti prazan popis ili 0, 519 00:29:35,110 --> 00:29:38,150 to je ostatak 0, jer smo bave vrsti glazbe, 520 00:29:38,150 --> 00:29:43,230 i prazna popis glazbe Tip je samo ostatak bez trajanja. 521 00:29:43,230 --> 00:29:45,680 To nije glazba. 522 00:29:45,680 --> 00:29:51,460 A onda ćemo vidjeti da li ćemo dobiti korak slijed sa v za volumen argument, 523 00:29:51,460 --> 00:29:57,290 p za opreza instrumenta Argument, a zatim popis x-ih. 524 00:29:57,290 --> 00:29:58,360 >> Onda smo napraviti neke stvari. 525 00:29:58,360 --> 00:30:01,290 Konkretno, primjenjujemo ovaj popis razumijevanje, 526 00:30:01,290 --> 00:30:05,700 i izvodimo neke Poslovanje na možda vrijednosti 527 00:30:05,700 --> 00:30:10,050 da se to pretvorilo u brojčane vrijednosti, tako da to bi mogao biti onda nabrojani i koristi 528 00:30:10,050 --> 00:30:12,300 za odabir instrumenta. 529 00:30:12,300 --> 00:30:16,730 Opet, ovo je malo malo namjerno inconcise 530 00:30:16,730 --> 00:30:20,580 samo pokazati sve čudne stvari možete učiniti u Haskell kao ti 531 00:30:20,580 --> 00:30:23,170 pogledajte to u svoje slobodno vrijeme. 532 00:30:23,170 --> 00:30:23,802 >> U redu. 533 00:30:23,802 --> 00:30:26,010 Tako smo napokon dobivanje učiniti ono što smo to učiniti, 534 00:30:26,010 --> 00:30:28,820 što je napraviti neki računalni glazbu. 535 00:30:28,820 --> 00:30:32,250 Tako ćemo pokušati napraviti Frere Jacques pjesmu. 536 00:30:32,250 --> 00:30:35,220 Dakle, postoje koliko fraze u Frère Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Četiri. 539 00:30:39,680 --> 00:30:40,460 Veliki. 540 00:30:40,460 --> 00:30:42,490 A što je lijepo je da svi oni ponavljaju 541 00:30:42,490 --> 00:30:46,990 ista količina vremena, što je dva. 542 00:30:46,990 --> 00:30:50,730 >> Dakle, imamo četiri fraze svaka dva puta ponavlja. 543 00:30:50,730 --> 00:30:53,590 A posebno, oni su u krugu. 544 00:30:53,590 --> 00:30:55,340 A tu su i mnogi, mnogo načina za provedbu 545 00:30:55,340 --> 00:30:57,520 okrugli da bi moglo biti zabavno raditi. 546 00:30:57,520 --> 00:31:00,260 Ja sam to učinio u prilično jednostavan način ovdje, 547 00:31:00,260 --> 00:31:05,760 koji je samo construct-- liniju Funkcija traje popis glazbenih vrijednosti 548 00:31:05,760 --> 00:31:10,390 i pretvara ga u sekvencijalnom sastav primjenom tog sekvencijalni sastav 549 00:31:10,390 --> 00:31:13,000 operater. 550 00:31:13,000 --> 00:31:19,540 >> A onda sam odgoditi različite dijelove čineći ih početi s ostatkom. 551 00:31:19,540 --> 00:31:22,770 Tako sam početi s ostatkom dvije mjere, a zatim ostatak četiri mjere, 552 00:31:22,770 --> 00:31:26,160 a zatim ostatak šest mjere, a zatim okrugli 553 00:31:26,160 --> 00:31:32,290 radi, kao što svi znamo ovu pjesmu. 554 00:31:32,290 --> 00:31:37,180 Vidimo dvije primjedbe ili modifikacije glazbenih vrijednosti 555 00:31:37,180 --> 00:31:43,150 koje su sadržane u ovom sekvencijalne raspored glazbenih elemenata. 556 00:31:43,150 --> 00:31:44,810 Imamo volumen dodati. 557 00:31:44,810 --> 00:31:48,960 Ova je funkcija za obilježavanje Glazba s određenom volumenu. 558 00:31:48,960 --> 00:31:51,320 Ovo je dobar primjer od signala trčanje MIDI 559 00:31:51,320 --> 00:31:57,510 od 0 do 127, sedam bitova Informacije koje se mogu provesti. 560 00:31:57,510 --> 00:32:00,650 >> I then-- smo to vidjeli vrlo kratko, ali opći MIDI 561 00:32:00,650 --> 00:32:02,310 Popis svih različitih instrumenata. 562 00:32:02,310 --> 00:32:04,450 A nema ih puno od njih. 563 00:32:04,450 --> 00:32:11,230 Ako koristite digitalni audio radne stanice, kao Ableton žive ili Pro Tools, 564 00:32:11,230 --> 00:32:17,560 postoji nevjerojatno širi raspon od sintisajzer i VST instrumenata. 565 00:32:17,560 --> 00:32:21,510 No, MIDI standardni jedini ima nekoliko ili nekoliko desetaka. 566 00:32:21,510 --> 00:32:22,799 A neki od njih su smiješne. 567 00:32:22,799 --> 00:32:25,840 Mislio sam da će biti zabavno, ako smo igrali instrument MIDI instrumenata 568 00:32:25,840 --> 00:32:30,550 helikopter, a onda Sljedeći put kroz krug, 569 00:32:30,550 --> 00:32:37,980 smo jastučić synth, a potom to otrcano glavni trg val synth, 570 00:32:37,980 --> 00:32:44,240 a onda glas mulj, koji su malo nejasna na mom lošem MIDI 571 00:32:44,240 --> 00:32:46,410 sintisajzer, ali su u redu. 572 00:32:46,410 --> 00:32:50,030 >> A onda ćemo vidjeti ovaj let i sintaksi od Haskell, 573 00:32:50,030 --> 00:32:54,030 a onda igramo svi ti dijelovi zajedno 574 00:32:54,030 --> 00:32:56,265 s operatorom paralelnom sastava. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 I vjerojatno mogao pokazati neke od ovoga. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Evo kod. 579 00:33:08,340 --> 00:33:14,960 A možete vidjeti u C, tu bi se Puno čišćenje grla i postavljanje 580 00:33:14,960 --> 00:33:19,760 stol broj pred vama mogao napraviti glazbu kao što je ovaj. 581 00:33:19,760 --> 00:33:22,080 Ili bilo koji drugi programski jezik, vjerojatno bih 582 00:33:22,080 --> 00:33:27,210 moraju komunicirati s nekakvim Knjižnica i API i postaviti sve gore, 583 00:33:27,210 --> 00:33:28,725 i onda bih morati počistiti. 584 00:33:28,725 --> 00:33:33,810 Ali ovdje u Haskell, mislim, jednom kada dobijete dokučiti ga, nevjerojatno 585 00:33:33,810 --> 00:33:35,770 čitljiv i vrlo izražajan. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Tako da je provedba od Frère Jacques. 588 00:33:43,240 --> 00:33:43,740 U redu. 589 00:33:43,740 --> 00:33:47,557 Sada želimo dodati udaraljke, i to je malo Messier. 590 00:33:47,557 --> 00:33:49,015 Tako ćemo pogledati slajdova. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Tako je velika ideja je napraviti hrpa popisa ili dijelova. 593 00:34:00,540 --> 00:34:04,140 Na tim pristupom strojeva, postoji su obično o možda osam 594 00:34:04,140 --> 00:34:08,670 10 ritma ili udaraljke dijelova. 595 00:34:08,670 --> 00:34:10,159 A onda koristite hrpu tehnika. 596 00:34:10,159 --> 00:34:14,889 A mi smo razgovarali o these-- korištenja nabori, filteri, lambda funkcije, 597 00:34:14,889 --> 00:34:19,429 mapirati preko popisa za generiranje vrijednosti u nekom opsegu od 1 do R, R je 16, 598 00:34:19,429 --> 00:34:20,699 ili 32 koraka u sekvencer. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> A onda, ako postoji vrijednost u tom popisu kao što smo trčanje kroz sekvencer, 601 00:34:29,920 --> 00:34:34,190 trčanje kroz nju više i više, ispada na toj bilješci, 602 00:34:34,190 --> 00:34:36,060 i da uzorak dobiva pokreću. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Ovdje su svi različiti načini čudne Došao sam do generirati bilješke. 605 00:34:47,110 --> 00:34:48,940 Probajte ga na svoju polu iznos. 606 00:34:48,940 --> 00:34:50,360 To će zvučati kul. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Ukoliko vrijeme dozvoli, mi ćemo proći kroz ovo. 609 00:34:54,690 --> 00:34:59,200 No, za sada, valjda trebamo demo ono što imamo. 610 00:34:59,200 --> 00:35:01,380 Nadajmo se da to ide u redu. 611 00:35:01,380 --> 00:35:02,670 >> Dakle, to je GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 A mi ćemo učitati datoteku Nazvao sam song.lhs, 614 00:35:09,121 --> 00:35:10,620 što je datoteka samo sam ti pokazao. 615 00:35:10,620 --> 00:35:11,470 OK super. 616 00:35:11,470 --> 00:35:15,010 Kao što je Connor rekao ranije, to sastaviti, upišite ga provjeriti, 617 00:35:15,010 --> 00:35:18,380 tako da mogu disati mnogo lakše. 618 00:35:18,380 --> 00:35:20,010 To neće raznijeti na mene. 619 00:35:20,010 --> 00:35:22,720 >> Ja želim da vam pokazati nešto korisno. 620 00:35:22,720 --> 00:35:25,900 Možete vidjeti da je modul učitan pozvao 50. 621 00:35:25,900 --> 00:35:28,240 Možete pregledavati taj modul. 622 00:35:28,240 --> 00:35:32,092 A to je tako lijepo o doing-- možda ono 623 00:35:32,092 --> 00:35:34,550 radite u Haskell nije zove razvoj softvera, 624 00:35:34,550 --> 00:35:36,980 ali možete učiniti puno zabavne stvari na svoju vlastitu. 625 00:35:36,980 --> 00:35:42,410 A tijek rada je jako lijepo, kao u odnosu na puno drugih jezika, 626 00:35:42,410 --> 00:35:45,872 jer možete vidjeti u stvarno čitljiv način što se događa. 627 00:35:45,872 --> 00:35:47,830 Dakle, vidimo da imamo Svi ovi izrazi, koji se 628 00:35:47,830 --> 00:35:53,760 su popisi glazbenih parcela, a potom smo izgraditi ovih gore u nešto veće, 629 00:35:53,760 --> 00:35:55,220 što je glazba pjesma. 630 00:35:55,220 --> 00:35:58,450 To je glazbena cjelina. 631 00:35:58,450 --> 00:36:05,545 A onda možemo igrati sve ovo s funkcijskom zove reprodukciju glazbe. 632 00:36:05,545 --> 00:36:09,040 Možete vidjeti da je ovdje. 633 00:36:09,040 --> 00:36:11,310 Koji je samo igra. 634 00:36:11,310 --> 00:36:15,040 >> Trebao say-- nisam govoriti o ovo dolar znak da je svugdje. 635 00:36:15,040 --> 00:36:17,980 Dolar znak je još utjerati operater. 636 00:36:17,980 --> 00:36:22,500 Ali to ima najnižu prednost bilo operatora, koji učinkovito 637 00:36:22,500 --> 00:36:24,960 znači da je sve na lijevo od znaka dolara 638 00:36:24,960 --> 00:36:28,460 i pravo na znak za dolar, ćemo dobiti ocjenjuju pred njim. 639 00:36:28,460 --> 00:36:31,430 Dakle, to je vrsta kao druga način dodavanja zagrade. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: To je u osnovi Sastav funkcija. 642 00:36:36,220 --> 00:36:40,026 I to osigurava da ne have-- ako imate funkcionira s obje strane ili utjerati 643 00:36:40,026 --> 00:36:42,900 operatori na obje strane, oni neće povezati preko njega i dati vam 644 00:36:42,900 --> 00:36:46,030 neočekivane rezultate. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Tako smo can-- pomoću koje možemo nazvati. 646 00:36:49,790 --> 00:36:51,415 Prvo, mi ćemo igrati bez bubnjeva. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 To je helikopter, MIDI helikopter. 649 00:37:03,170 --> 00:37:05,495 >> [Glazbom] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Tu je kvadratni val. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Glas mulj. 654 00:37:25,490 --> 00:37:27,630 A ti stvarno može idu divlje s tim. 655 00:37:27,630 --> 00:37:30,872 Uzela sam prilično jednostavna, jer sam znao da ne bih trebao odgristi 656 00:37:30,872 --> 00:37:31,830 više nego što sam mogao žvakati. 657 00:37:31,830 --> 00:37:36,460 Samo ga zadržati vrlo jednostavna prikazati glavne ideje. 658 00:37:36,460 --> 00:37:39,952 Ali onda sam bio kao, mi smo dobio dodati neke bubnjeve na ovo. 659 00:37:39,952 --> 00:37:41,910 Samo zato što je to malo neprobojna, 660 00:37:41,910 --> 00:37:45,790 i nisam koristiti Naziv bubanj dijelova, 661 00:37:45,790 --> 00:37:49,490 Ja mapirani them-- jer oni dio tog popisanoj klase, 662 00:37:49,490 --> 00:37:51,500 Ja ih mapirati Ints. 663 00:37:51,500 --> 00:37:53,120 Jedan je kao bas bubanj. 664 00:37:53,120 --> 00:37:54,370 Nula je kao dobro. 665 00:37:54,370 --> 00:37:56,000 Sedam je visoki šešir. 666 00:37:56,000 --> 00:38:00,920 A dolje u ovdje gdje Funkcije dobiti malo više slučajna, 667 00:38:00,920 --> 00:38:02,100 oni su poput Conga bubnjevima. 668 00:38:02,100 --> 00:38:08,360 >> Dakle, ako mislite about-- možda zabavan način provesti bubanj stroj 669 00:38:08,360 --> 00:38:12,830 je koristiti vrlo uredan uzorci na vašem bas bubanj. 670 00:38:12,830 --> 00:38:17,640 Tako na primjer, na filtriranje preko Popis sa svime što daje natrag 671 00:38:17,640 --> 00:38:20,590 A 1 kada je snimljen modul 04. 672 00:38:20,590 --> 00:38:27,190 Tako sam se 1, 5, 9, 13, tako da je ovo 17-- je prvi beat svake mjere. 673 00:38:27,190 --> 00:38:32,860 >> A onda je to isto stvar prebacio preko dva koraka. 674 00:38:32,860 --> 00:38:33,850 Dakle, to je nekonvencionalan. 675 00:38:33,850 --> 00:38:37,480 Dakle, to bi bilo nešto kao visoki šešir. 676 00:38:37,480 --> 00:38:39,640 I ovdje opet, dolje, to je malo slučajan, 677 00:38:39,640 --> 00:38:41,080 jer radimo Conga bubnjeve. 678 00:38:41,080 --> 00:38:44,180 I ja imam neke maracas ovdje, previše. 679 00:38:44,180 --> 00:38:50,280 >> Tako sam mogao nazvati igrati bubanj stroja, ali to će ići na zauvijek, 680 00:38:50,280 --> 00:38:53,700 i to bi moglo početi grabbing se sve memorije u mom sustavu. 681 00:38:53,700 --> 00:38:57,090 Dakle, ja ću nazvati ovu funkciju slušati glazbu, koja kao što ćemo vidjeti, 682 00:38:57,090 --> 00:39:02,020 koristiti oduzimanja paralelni sastav igrati naš mali Frere Jacques pjesmu 683 00:39:02,020 --> 00:39:04,200 uz ovaj čudan bubanj stroja. 684 00:39:04,200 --> 00:39:06,190 Tako ćemo pogledati. 685 00:39:06,190 --> 00:39:10,920 I nemojte poboljšati na mom Raspored svih dijelova bubnja. 686 00:39:10,920 --> 00:39:13,375 Nije moja specijalnost, ali sam imali puno zabave radi. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Glazbom] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Pa naravno, to je sve malo ne kao zabavu 691 00:39:56,980 --> 00:40:01,100 ako ne možemo ga pretvoriti na rezultat pa možda ga 692 00:40:01,100 --> 00:40:04,650 može se tumačiti po ljudsko izvođača. 693 00:40:04,650 --> 00:40:06,535 Pa neću ga pokrenuti ovdje. 694 00:40:06,535 --> 00:40:07,910 Već sam generira datoteke. 695 00:40:07,910 --> 00:40:10,280 Možete vidjeti da postoji dot LilyPond file-- i to 696 00:40:10,280 --> 00:40:14,500 će biti moj segue preko Connor-- i točka MIDI datoteke, 697 00:40:14,500 --> 00:40:18,610 i točka PDF datoteke, što je ono LilyPond će u konačnici generirati. 698 00:40:18,610 --> 00:40:23,770 >> No, to su one skripte, i ja ću samo ih izvoditi uz njihovu pomoć opcijama. 699 00:40:23,770 --> 00:40:28,090 Ako se to gore i trčanje sa Euterpea, možete generirati MIDI datoteke. 700 00:40:28,090 --> 00:40:31,160 I onda iz MIDI datoteke s ovim MIDI 2LY programa, 701 00:40:31,160 --> 00:40:34,930 možete generirati Lily Ribnjak datoteke, a zatim vam 702 00:40:34,930 --> 00:40:37,974 može generirati PDF s rezultatom. 703 00:40:37,974 --> 00:40:39,390 I mi bi trebali pogledati ovaj. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Dakle Connor će vjerojatno pokazati vam kako prokomentirati ovo bolje, 706 00:40:55,140 --> 00:41:02,570 ali to je Frere Jacques kao generira mi Euterpea. 707 00:41:02,570 --> 00:41:07,300 To je samo u C. trebala sam shvatio u čemu je hack to je zapravo u. 708 00:41:07,300 --> 00:41:11,090 Ali to je cjevovod za Kako ste to učiniti s tim. 709 00:41:11,090 --> 00:41:12,950 Razgovarajmo više o LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Da vidimo. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Jeste li spomenuti Saznajte You Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: O da. 714 00:41:22,460 --> 00:41:23,480 Provjerite Saznajte vam Haskell. 715 00:41:23,480 --> 00:41:24,410 To je u resursima. 716 00:41:24,410 --> 00:41:26,830 Tako sam počeo učenje, i to je super. 717 00:41:26,830 --> 00:41:27,580 Ne glupa učenja. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Pa to je on-line. 719 00:41:28,829 --> 00:41:34,760 Dakle, čovjek po imenu [nečujan] learnyouahaskell.com, bez razmaka. 720 00:41:34,760 --> 00:41:37,065 Gramatika je bolestan. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: To je ilustrirano, previše. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Pa što je LilyPond? 723 00:41:39,440 --> 00:41:42,480 To je deklarativno programiranje jezik za glazbu slaganje sloga. 724 00:41:42,480 --> 00:41:45,480 Dakle declarative-- možete mislim stvari kao što su HTML, 725 00:41:45,480 --> 00:41:50,900 gdje niste saying-- HTML ne kažem kako web-preglednici trebaju 726 00:41:50,900 --> 00:41:52,180 uzvratiti stranice korak po korak. 727 00:41:52,180 --> 00:41:54,096 To samo govori to je tekstualni opis 728 00:41:54,096 --> 00:41:56,100 o tome što želite stranica izgledati. 729 00:41:56,100 --> 00:41:59,310 >> A onda je i program koji prikuplja ovaj jezik, 730 00:41:59,310 --> 00:42:02,300 ili čitati svoje u te stvari radi Type za vas, 731 00:42:02,300 --> 00:42:05,570 i to ispljune to prekrasna potrazi PDF rezultate. 732 00:42:05,570 --> 00:42:08,250 Također možete dobiti PNG formatu ili bilo što drugo. 733 00:42:08,250 --> 00:42:10,300 Dobar način da mislite to je analogno 734 00:42:10,300 --> 00:42:16,620 je da LaTeX je vrsta kao LillyPond, ali za samo obični slaganje sloga. 735 00:42:16,620 --> 00:42:20,360 Dakle, umjesto of-- nije WYSIWYG, ono što vidite 736 00:42:20,360 --> 00:42:22,960 Je ono što dobivate, kao što su, recimo Finale je, ili Sibelius, 737 00:42:22,960 --> 00:42:27,430 ili Microsoft Word, gdje možete upisati realnom vremenu i nacrti stvari u realnom vremenu 738 00:42:27,430 --> 00:42:31,340 i vidjeti promjene odmah. 739 00:42:31,340 --> 00:42:32,140 >> To je tekst temelji. 740 00:42:32,140 --> 00:42:35,290 Morate sastaviti svoj rezultati koriste poseban program 741 00:42:35,290 --> 00:42:37,090 i izaći PDF kasnije. 742 00:42:37,090 --> 00:42:43,320 To je nešto manje prikladan za upotrebu, ako ste 743 00:42:43,320 --> 00:42:46,520 pokušava pisati izravno u rezultat, a vi ste 744 00:42:46,520 --> 00:42:48,620 pokušava sastaviti na računalu. 745 00:42:48,620 --> 00:42:50,830 No, postoji mnogo prednosti za to. 746 00:42:50,830 --> 00:42:56,110 Jedan, to ne izgleda puno ljepše, jer LillyPond mogu zapravo 747 00:42:56,110 --> 00:42:58,210 uzeti vremena za napraviti izgleda odluke ispravno, 748 00:42:58,210 --> 00:43:02,380 za razliku od Sibelius ili Finale, koje su kako bi ugrožena algoritme tako 749 00:43:02,380 --> 00:43:05,020 da oni mogu prikazati stvari u realnom vremenu. 750 00:43:05,020 --> 00:43:07,660 >> Pa zašto je LilyPond-- računalna grafika je teško. 751 00:43:07,660 --> 00:43:10,535 Ako radite ništa s glazbom i želite napisati rezultate, 752 00:43:10,535 --> 00:43:13,900 ne želite pisati iz svega po sebi 753 00:43:13,900 --> 00:43:19,040 počevši kako se izvući osoblje i kako se izvući bilježnicama. 754 00:43:19,040 --> 00:43:21,020 To je vrlo teško. To je učinjeno prije. 755 00:43:21,020 --> 00:43:22,170 Ti si u redu. 756 00:43:22,170 --> 00:43:26,200 >> Ako želite koristiti Finale ili Sibelius, formati datoteka za te stvari 757 00:43:26,200 --> 00:43:30,180 su vrlo komplicirano, a vi ne možete stvarno ih koristiti programski. 758 00:43:30,180 --> 00:43:35,020 Možete otvoriti Sibelius s Finale i idite na File, Izvoz kao PDF sebe, 759 00:43:35,020 --> 00:43:37,600 ali stvarno ne mogu nazvati iz skripte. 760 00:43:37,600 --> 00:43:40,440 LillyPond, možete nazvati iz tih skripti. 761 00:43:40,440 --> 00:43:44,397 Možete lako mogao ponoviti LillyPond s LaTeX. 762 00:43:44,397 --> 00:43:47,230 Neću imati toliko vremena za odlazak u ove tehnologije upravo sada, 763 00:43:47,230 --> 00:43:48,321 ali oni postoje. 764 00:43:48,321 --> 00:43:50,070 Ako želite pogledati u LillyPond knjigu, 765 00:43:50,070 --> 00:43:53,760 to je program koji dolazi s Vaša LillyPond distribucije, 766 00:43:53,760 --> 00:43:57,030 i to je za iterating LillyPond fragmenti u LaTeX 767 00:43:57,030 --> 00:44:00,340 ako želite nešto učiniti kao velika muzikologije dokumenta 768 00:44:00,340 --> 00:44:02,289 s primjerima, za primjer. 769 00:44:02,289 --> 00:44:04,580 I to je dobra vještina za život ako radite ništa 770 00:44:04,580 --> 00:44:05,770 uz glazbu, a ne samo CS50. 771 00:44:05,770 --> 00:44:09,320 Ja sam se LillyPond za sve moji sastav projekata 772 00:44:09,320 --> 00:44:11,880 jer sam bio u osnovi viši u srednjoj školi. 773 00:44:11,880 --> 00:44:13,455 >> Dakle ovdje su neke jednostavne primjere. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 To je u osnovi predstavnik razine težine 776 00:44:21,060 --> 00:44:23,481 da većina ljudi bi lice to su pokušavali 777 00:44:23,481 --> 00:44:24,980 koristiti LilyPond za jednostavne projekte. 778 00:44:24,980 --> 00:44:29,519 Ovaj prvi je početak na koralne predigre Bacha. 779 00:44:29,519 --> 00:44:31,810 Ovo dno je jedan izvadak iz jednog od mojih radova, 780 00:44:31,810 --> 00:44:34,650 i to je samo tamo pokazati ti stvari poput [nečujan] 781 00:44:34,650 --> 00:44:38,550 stavljajući više redaka u isto Osoblje, kako lirska undersetting radi. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Lirski podloge su stvar koja je vrlo jednostavan za korištenje LilyPond za zborske glazbe. 784 00:44:46,110 --> 00:44:48,814 >> I tako onda postoji nešto više komplicirane primjere ovdje. 785 00:44:48,814 --> 00:44:50,980 Sve su to učinili u LilyPond i oni izvedivo. 786 00:44:50,980 --> 00:44:55,280 Ovaj prvi je izvadak iz [Nečujan] od [nečujan]. 787 00:44:55,280 --> 00:44:58,860 I to [nečujan] iz komad za solo bas 788 00:44:58,860 --> 00:45:03,550 fruli [nečujan] tko je tko longtime-- 789 00:45:03,550 --> 00:45:07,101 Bio je dugogodišnji član glazbeni odjel ovdje, mislim. 790 00:45:07,101 --> 00:45:08,600 Nisam siguran kamo je otišao off. 791 00:45:08,600 --> 00:45:12,410 Ali on je bio savjetnik u Harvardu Skladatelji Udruga za dugo vremena. 792 00:45:12,410 --> 00:45:13,530 Divan čovjek. 793 00:45:13,530 --> 00:45:16,920 I on piše glazbu koja ima vrlo komplicirano zapis koji LillyPond 794 00:45:16,920 --> 00:45:20,500 može ipak nositi vrlo lijepo. 795 00:45:20,500 --> 00:45:26,030 >> Dakle, samo kako bi vam dati osjećaj za ono što Ova stvar je sposobnosti are-- tako 796 00:45:26,030 --> 00:45:28,960 Unutarnje LillyPond vrlo komplicirano. 797 00:45:28,960 --> 00:45:31,060 A možete ga koristiti za dugo vremena, uključujući 798 00:45:31,060 --> 00:45:32,520 za neke prilično komplicirano stvari, bez stvarno 799 00:45:32,520 --> 00:45:34,060 da znaju puno o njima. 800 00:45:34,060 --> 00:45:38,720 No, osnovna ideja je da se na najniža razina, atomi LillyPonds 801 00:45:38,720 --> 00:45:39,970 su bilješke. 802 00:45:39,970 --> 00:45:42,761 Bilješke sadrže kontekst nazivaju glasovi. 803 00:45:42,761 --> 00:45:44,510 Dakle glasovnog kontekstu zapravo odgovara 804 00:45:44,510 --> 00:45:47,410 na jednu liniju višeglasja. 805 00:45:47,410 --> 00:45:49,410 A onda kontekst može biti sadržana hijerarhijski 806 00:45:49,410 --> 00:45:53,590 u višim razinama onih koji predstavlja osoblje na rezultat 807 00:45:53,590 --> 00:45:56,750 ili veće grupacije poput klavir osoblje ili osoblje, zbor 808 00:45:56,750 --> 00:45:58,990 i onda na kraju cijeli score kontekstima. 809 00:45:58,990 --> 00:46:02,260 I što zapravo može obuhvatiti više rezultate u knjizi. 810 00:46:02,260 --> 00:46:05,770 >> I svaki kontekst ima Broj priloženih gravera. 811 00:46:05,770 --> 00:46:08,340 Ako pogledate kroz Sadržaj kontekstu 812 00:46:08,340 --> 00:46:14,410 i ispisati određeni simbol ili određena klasa simbole potrebno. 813 00:46:14,410 --> 00:46:17,840 Tako da svaki glas kontekstu, postoji [nečujan] bilješke 814 00:46:17,840 --> 00:46:24,270 gravera da je u osnovi funkcija ili objekt koji ispisuje sve bilješke 815 00:46:24,270 --> 00:46:26,290 glave na pravim dijelovima stranice. 816 00:46:26,290 --> 00:46:29,510 Zatim tu je rascjep gravera, koji piše se clefts na osoblje. 817 00:46:29,510 --> 00:46:31,517 Zatim tu je metronom Oznaka gravera da 818 00:46:31,517 --> 00:46:33,100 piše se Metronome maraka u rezultat. 819 00:46:33,100 --> 00:46:36,410 I sve to stane lijepa dobro u hijerarhiji. 820 00:46:36,410 --> 00:46:39,500 I to je vrlo, vrlo, vrlo prilagodljiv, što vam je potrebno 821 00:46:39,500 --> 00:46:42,880 Ako želite da se stvari kao što je to. 822 00:46:42,880 --> 00:46:45,730 >> Dakle, svi konteksti imaju mnogo različitih atributa 823 00:46:45,730 --> 00:46:52,410 koje možete mijenjati za sve od razmaka na razne fonta 824 00:46:52,410 --> 00:46:54,942 Izbor za veličine stvari. 825 00:46:54,942 --> 00:46:56,900 Ako želite učiniti još složeniji stvari, 826 00:46:56,900 --> 00:46:59,210 postoji Ugrađeni skriptni jezik. 827 00:46:59,210 --> 00:47:01,820 Oni koriste shemu, koja je dijalekt LISP. 828 00:47:01,820 --> 00:47:04,960 To vjerojatno ne znači ništa za vas. 829 00:47:04,960 --> 00:47:06,900 No u osnovi, shema drugu funkcionalnu 830 00:47:06,900 --> 00:47:09,500 programski jezik, više ili manje. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: Kravata-u. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Da. 833 00:47:12,690 --> 00:47:15,390 To je dobar kravata-u, pretpostavljam. 834 00:47:15,390 --> 00:47:20,150 I to se koristi kao nastavnog jezika, Zapravo, dolje Mass Ave. Na MIT-u. 835 00:47:20,150 --> 00:47:26,590 I to je vrlo zgodan za LillyPond raznih tehničkih razloga. 836 00:47:26,590 --> 00:47:30,317 >> I tako, ako želite napraviti jednostavan Friziranje ovise o uvjetne, 837 00:47:30,317 --> 00:47:32,900 za example-- postoji određena Stanje rezultatom koji je susreo, 838 00:47:32,900 --> 00:47:36,495 napraviti preinake na Izgled ili whatnot-- onda 839 00:47:36,495 --> 00:47:37,620 Ti objekti su tu. 840 00:47:37,620 --> 00:47:38,667 Oni komplicirano. 841 00:47:38,667 --> 00:47:40,250 Dakle, ovdje je prilično jednostavan uzorak koda. 842 00:47:40,250 --> 00:47:43,810 To je pet redaka. 843 00:47:43,810 --> 00:47:46,120 Uglavnom, ja sam definiranja dva štapa. 844 00:47:46,120 --> 00:47:46,904 To je u 3/4. 845 00:47:46,904 --> 00:47:48,695 Prva osoblje ima vezani tempo oznaka, 846 00:47:48,695 --> 00:47:51,110 ali to je zapravo događa ići na cijelom rezultat, 847 00:47:51,110 --> 00:47:54,960 jer tempo maraka su na razini rezultata. 848 00:47:54,960 --> 00:47:59,044 Metronom oznaka gravera nalazi se u privitku rezultat kontekst. 849 00:47:59,044 --> 00:48:01,460 Postoje različiti ključevi, jer [nečujan] gravera 850 00:48:01,460 --> 00:48:02,710 pričvršćen na osoblje. 851 00:48:02,710 --> 00:48:04,441 Vi zapravo možete učiniti je. 852 00:48:04,441 --> 00:48:06,190 Uzorak sam napisao je zapravo u C-duru, 853 00:48:06,190 --> 00:48:07,990 ali to je samo pokazuju možete imati 854 00:48:07,990 --> 00:48:09,570 različite tipke u različitim štabova. 855 00:48:09,570 --> 00:48:15,710 A osnovna sintaksa je pišete Napomena imena s E, F, G, bilo što. 856 00:48:15,710 --> 00:48:18,910 Ako želite učiniti slučajnosti, što sufiks je ili ES. 857 00:48:18,910 --> 00:48:22,640 To je od Dutch muzikološko konvencije. 858 00:48:22,640 --> 00:48:28,290 >> I učiniti oktava skokovi, morate koristiti ovi kliknite Marks, zarez ili apostrof. 859 00:48:28,290 --> 00:48:30,580 Relativna samo znači sve što imate na znanje, 860 00:48:30,580 --> 00:48:34,080 automatski će se plaec u Octave najbliži prethodni. 861 00:48:34,080 --> 00:48:37,624 A ako želite skočiti više od fifth-- kažu peti ili more-- 862 00:48:37,624 --> 00:48:39,165 onda morate koristiti [nečujan]. 863 00:48:39,165 --> 00:48:42,580 Ali inače, ne morate se odrediti oktavu svakog pojedinog bilješku. 864 00:48:42,580 --> 00:48:46,130 >> I relativna C, premijera i C, što samo navesti srednji C 865 00:48:46,130 --> 00:48:48,630 i baza C, pogotovo prve note. 866 00:48:48,630 --> 00:48:55,020 Onda imate ove osoblje koje organiziraju ta dva glasa ili uzoraka glazbe, 867 00:48:55,020 --> 00:48:56,730 i imate rezultat. 868 00:48:56,730 --> 00:48:58,440 A to izgleda ovako. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Ako želite uzeti vremena da kopirati taj uzorak LillyPond 871 00:49:05,380 --> 00:49:07,530 broj u odnosu na prethodnu slajd ovdje, a vi 872 00:49:07,530 --> 00:49:09,030 može pisati za LillyPond sami. 873 00:49:09,030 --> 00:49:11,280 Znam da smo dobili nešto koji izgleda puno kao što je ovaj. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Dakle, postoji još jedna tehnologija zove Glazba XML nogama 876 00:49:19,610 --> 00:49:22,030 strane potpuno različite osobe. 877 00:49:22,030 --> 00:49:28,150 XML je tekstualne podatke structure-- sam Ne treba reći podaci structure-- reći 878 00:49:28,150 --> 00:49:29,580 Metafora karta vrsta. 879 00:49:29,580 --> 00:49:33,800 I to je dizajniran za držanje hijerarhijskih podataka vrlo dobro. 880 00:49:33,800 --> 00:49:37,050 HTML, na primjer, je vrsta XML. 881 00:49:37,050 --> 00:49:41,090 I vi možete reći XML jer imao sve kutne zagrade i kut 882 00:49:41,090 --> 00:49:44,700 Nosač SLASH oznake koji pokazuju polja podataka. 883 00:49:44,700 --> 00:49:47,390 >> Nemam kod primjer iz Music XML. 884 00:49:47,390 --> 00:49:50,450 Možete ga naći. 885 00:49:50,450 --> 00:49:53,735 Uglavnom, razlog možda želite koristiti kao XML međufazi 886 00:49:53,735 --> 00:49:55,980 je, prije svega, to je format za razmjenu 887 00:49:55,980 --> 00:50:02,301 za u osnovi every-- nisam trebao reći svaki, ali puno drugačiji rezultat 888 00:50:02,301 --> 00:50:02,800 pisci. 889 00:50:02,800 --> 00:50:04,966 Dakle, ako ste napisali u Glazba XML, ne samo da može LillyPond 890 00:50:04,966 --> 00:50:08,080 čitajte ga uz pomoć ovog auxilary Program pod nazivom Music XML LY, 891 00:50:08,080 --> 00:50:11,360 ali Finale možete pročitati je, Sibelius može pročitati. 892 00:50:11,360 --> 00:50:14,770 Ovisno o tome kako vaše unutarnje objekt hijerarhija radi za zastupanje glazbe, 893 00:50:14,770 --> 00:50:18,820 to bi moglo biti lakše za napisati u Music XML nego da LillyPond 894 00:50:18,820 --> 00:50:22,410 i samo osloniti na Muzičkoj XML da LY napraviti konverziju. 895 00:50:22,410 --> 00:50:24,282 >> Ne mislim da [nečujan] ima Glazba XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: To ne. 897 00:50:25,490 --> 00:50:26,340 Netko se radi na tome, ipak. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: U redu. 899 00:50:27,090 --> 00:50:31,040 Euterpea ne imati Glazba XML funkcija još. 900 00:50:31,040 --> 00:50:35,340 Ako želite konačnu projektnu ideju, možda doći u dodir s dečkima 901 00:50:35,340 --> 00:50:38,620 da Stephen zna, i oni mogu koristiti Vašu pomoć. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Volio bih to. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Također, u osnovi, svaki programski jezici 904 00:50:43,450 --> 00:50:46,610 to je vrijedan njegove soli već XML knjižnica, 905 00:50:46,610 --> 00:50:51,030 tako da interno možete pretvoriti sve svoju glazbu na nekom objektu 906 00:50:51,030 --> 00:50:54,120 da XML knjižnica može pisati da će zahtijevati manje 907 00:50:54,120 --> 00:50:57,470 promjene na vašem unutarnjem ustrojstvu za sve što vas glazba objekata 908 00:50:57,470 --> 00:51:00,310 želite napisati od pisanja izravno LillyPond bi. 909 00:51:00,310 --> 00:51:04,380 Zatim samo ga ispisati s XML s XML knjižnice u svom jeziku, 910 00:51:04,380 --> 00:51:07,260 koji će jamčiti da je sintaktički ispravan i sve, 911 00:51:07,260 --> 00:51:08,720 a zatim ga pretvoriti u LillyPond. 912 00:51:08,720 --> 00:51:11,060 Dakle, tehnologija možda želite gledati u ako radite nešto 913 00:51:11,060 --> 00:51:11,650 kao ovo. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Nečujan], jedna auxilarry tehnologija. 916 00:51:16,370 --> 00:51:21,700 To je u osnovi Tech radova ili Tech Studio za LillyPond. 917 00:51:21,700 --> 00:51:25,380 Dakle, nudi pomoć za sintaksa, s predlošcima 918 00:51:25,380 --> 00:51:28,770 za razne uobičajene kombinacije instrumenata. 919 00:51:28,770 --> 00:51:32,780 To vam omogućuje gledanje tako podijeljenog ekrana možete imati svoj kod u jednom prozoru 920 00:51:32,780 --> 00:51:37,350 i PDF u drugom prozoru i kliknite na mjestima u PDF 921 00:51:37,350 --> 00:51:40,650 skočiti na relevantne mjesta u izvornom kodu. 922 00:51:40,650 --> 00:51:45,330 To je više koristan ako ste stvarno Pisanje LillyPond datoteke sebe 923 00:51:45,330 --> 00:51:47,400 nego ako ste generiranja ih programski. 924 00:51:47,400 --> 00:51:51,230 Ali opet, to je nešto korisno imati. 925 00:51:51,230 --> 00:51:51,970 >> Veliki. 926 00:51:51,970 --> 00:51:55,860 Još resources-- ću samo proći kroz to vrlo brzo. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond ima izvrsna dokumentacija na svojim internetskim stranicama. 928 00:52:01,270 --> 00:52:02,270 Imaju tutorial. 929 00:52:02,270 --> 00:52:03,478 Oni imaju referencu sintakse. 930 00:52:03,478 --> 00:52:07,010 Imaju stotine isječaka za razne male stvari 931 00:52:07,010 --> 00:52:09,930 yo možda morati učiniti pokazati razne mogućnosti. 932 00:52:09,930 --> 00:52:12,250 Ako želite koristiti skriptni jezik 933 00:52:12,250 --> 00:52:14,740 ili napraviti opsežniji prilagodbe, onda postoji 934 00:52:14,740 --> 00:52:16,730 unutarnji referenca na taj URL. 935 00:52:16,730 --> 00:52:21,950 Ako želite koristiti Music XML, postoji taj URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> I onda, ako morate naučiti shemu jer zapravo želite koristiti 937 00:52:27,960 --> 00:52:30,960 skriptirani objekata u LillyPond, tada postoji [nečujan] naziva 938 00:52:30,960 --> 00:52:32,918 Strukturirani Tumačenje računalnih programa, 939 00:52:32,918 --> 00:52:35,820 koji nije samo drugi Najveći CS udžbenik ikad written-- 940 00:52:35,820 --> 00:52:39,770 nađi mi nakon toga, ako želite znati ono što mislim da je najveća jedan is-- 941 00:52:39,770 --> 00:52:43,580 ali to je također vrlo dobar Uvod u jezik pravilno. 942 00:52:43,580 --> 00:52:46,630 Nećete trebati više od prvih nekoliko sekcija. 943 00:52:46,630 --> 00:52:47,827 >> I to je to. 944 00:52:47,827 --> 00:52:48,410 Ima li pitanja? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> UČENIK: Gdje mogu skinuti Vaša generira Frere Jacques 947 00:52:57,972 --> 00:53:01,050 tako da ja mogu staviti na moj iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Pa, možete napisati na neki WAV datoteku u Euterpea. 949 00:53:07,574 --> 00:53:08,490 A imate kod. 950 00:53:08,490 --> 00:53:10,000 To je na GitHub. 951 00:53:10,000 --> 00:53:15,590 Napravite vlastite varijacije Frere Jacques strane CS50 košnici uma. 952 00:53:15,590 --> 00:53:17,095 Bilo bi sjajno. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Još netko? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Moramo bolji bas bubanj, previše. 955 00:53:20,261 --> 00:53:21,935 To je stvarno loše. 956 00:53:21,935 --> 00:53:26,565 >> UČENIK: Euterpea ne samo strana sastav, ali signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Da. 958 00:53:27,440 --> 00:53:30,100 U stvari, rad sam učinio u Euterpea kada sam 959 00:53:30,100 --> 00:53:33,450 uzeo this-- postoji Diplomski studij na Yaleu koji 960 00:53:33,450 --> 00:53:35,900 koristi it-- bio na zvučne sinteze. 961 00:53:35,900 --> 00:53:39,810 Dakle, tu je stvarno lijep način pomoću strelica 962 00:53:39,810 --> 00:53:46,150 a neki od zapisa koji smo vidjeli od skladanja zajedno funkcije signala. 963 00:53:46,150 --> 00:53:50,610 Konkretno, bas za većinu od njih je samo jednostavna sinusni val. 964 00:53:50,610 --> 00:53:54,240 Ali ako počnete skladanja onima u čudnim programske načine, 965 00:53:54,240 --> 00:54:00,010 možete dobiti ludi zvuk učinci, poput čudnih kaskadama. 966 00:54:00,010 --> 00:54:04,640 Možete stvoriti vrlo odlučan zvuči s puno modulacije. 967 00:54:04,640 --> 00:54:07,730 >> Ja sam projekt granulirane sinteza, koja je 968 00:54:07,730 --> 00:54:12,290 negdje između FM i uzorkovanja. 969 00:54:12,290 --> 00:54:15,230 Vi se vrlo mala, mali uzorci, a zatim 970 00:54:15,230 --> 00:54:20,440 ih kombinirati s nekom vrstom modulator i izgraditi bogatiji zvuk. 971 00:54:20,440 --> 00:54:24,900 Također smo radili fizički modeliranje, pa pokušavajući razmišljati o fizici 972 00:54:24,900 --> 00:54:29,410 i psihoakustika nešto poput trublje i razmišljati o načinu na 973 00:54:29,410 --> 00:54:32,320 zvuk je odskakanje zvono trube 974 00:54:32,320 --> 00:54:35,200 i akustika soba i modeliranje 975 00:54:35,200 --> 00:54:40,195 koji s osnovnim oscilatora. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Hvala puno. 978 00:54:48,940 --> 00:54:50,140 Hvala što ste došli. 979 00:54:50,140 --> 00:54:52,400 A ja sam uvijek spreman uzeti pitanja po Email 980 00:54:52,400 --> 00:54:55,020 connorharris@college.harvard.edu. 981 00:54:55,020 --> 00:54:57,020 >> STEPHEN KREWSON: Da. stephen.krewson@yale.edu. 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 Cool. 984 00:55:00,360 --> 00:55:01,667