1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: Hi. 3 00:00:05,930 --> 00:00:06,820 Sem Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Sem CS50 CA na Harvardu. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Jaz sem Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Sem TF za CS50 na univerzi Yale. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: In bomo govorili o nekaterih tehnologij, ki jih lahko 8 00:00:15,790 --> 00:00:18,880 želeli uporabiti, če ste zainteresirani pri tem končni projekt, ali res 9 00:00:18,880 --> 00:00:20,920 karkoli z glasbo. 10 00:00:20,920 --> 00:00:24,400 Bomo osredotočili na prvem a programski jezik imenuje Haskell. 11 00:00:24,400 --> 00:00:26,280 To je funkcionalna jezik, tako da je paradigma 12 00:00:26,280 --> 00:00:29,620 je zelo drugačen od C ali PHP ali drugih nujnih jeziki 13 00:00:29,620 --> 00:00:33,450 ki ste jih že uporabili, in še posebej o knjižnici napisana v Haskell 14 00:00:33,450 --> 00:00:40,240 imenovano Euterpea, ki lahko pomaga ljudem s pisanjem glasbe funkcionalno, 15 00:00:40,240 --> 00:00:40,780 v bistvu. 16 00:00:40,780 --> 00:00:43,400 In Stephen vas bo vodil skozi odličen primer tega. 17 00:00:43,400 --> 00:00:46,423 >> Po tem, vam bom predstavil nekaj, kar se imenuje LillyPond, ki 18 00:00:46,423 --> 00:00:48,370 je tehnologija za stave glasbe. 19 00:00:48,370 --> 00:00:50,830 To je nekako tako kot LaTeX za glasbo, če kdo od vas 20 00:00:50,830 --> 00:00:57,530 so uporabili LaTeX za matematiko razrede ali drugi razredi P nastavite ali kaj imate. 21 00:00:57,530 --> 00:01:00,440 In zato ti bom dal, še enkrat, nekaj preprostih primerov, ki 22 00:01:00,440 --> 00:01:03,640 in točko ste v splošnem Smer nekaterih boljših virov. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: V Poleg tega smo mislili 24 00:01:04,319 --> 00:01:06,720 bi bilo kul, da ustanovi malo namigov 25 00:01:06,720 --> 00:01:10,780 proti plinovoda med -Euterpea ustvarila MIDI datotek 26 00:01:10,780 --> 00:01:13,910 v LillyPond, zato nudimo nekaj navodil o skripte 27 00:01:13,910 --> 00:01:16,310 za to, da so opremljena z LillyPond 28 00:01:16,310 --> 00:01:19,160 samo, da ostane odprto kodo in dobili plinovoda dogaja. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Again, moramo poudariti, 30 00:01:20,910 --> 00:01:23,100 ti dve tehnologiji, ki jih nimajo, da jih uporabljajo skupaj. 31 00:01:23,100 --> 00:01:25,370 Oni niso namenjeni za delo skupaj, čeprav to počnejo zelo lepo. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Right. 33 00:01:26,362 --> 00:01:30,116 In popolnoma brezplačno. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Torej priznanja, samo prebral to. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: Pravilno opozoriti. 36 00:01:33,406 --> 00:01:36,360 Hvala za te ljudi. 37 00:01:36,360 --> 00:01:39,180 To bom ostajal na le za trenutek. 38 00:01:39,180 --> 00:01:41,560 Postopek namestitve je malce zapleteno. 39 00:01:41,560 --> 00:01:45,420 Imamo mi preberete na GitHub da si lahko ogledate. 40 00:01:45,420 --> 00:01:47,840 Samo email mi če imate kakršnakoli vprašanja. 41 00:01:47,840 --> 00:01:52,829 Ampak bomo teči to pod predpostavko, da to deluje za vsakogar. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: In če ne morete dobili LillyPond za delo, no big deal. 43 00:01:55,620 --> 00:02:00,139 Ni živo kompilacija, ki bodo vključeni, vsaj na mojem koncu. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell in LillyPond morala oba imeti monterji. 45 00:02:02,930 --> 00:02:08,497 Euterpea se prenese kot paket, tako naprej in tako naprej. 46 00:02:08,497 --> 00:02:10,080 Torej, govorimo o računalniško glasbo. 47 00:02:10,080 --> 00:02:12,990 In to je samo Zelo pogled 50.000 metrov. 48 00:02:12,990 --> 00:02:15,700 Obstaja nekaj različnih vidikov njega. 49 00:02:15,700 --> 00:02:18,120 In to je hrapava in je dogaja, da zakriva nekaj podrobnosti. 50 00:02:18,120 --> 00:02:22,090 Vendar bi lahko razmišljamo o nečem kot algoritmično kompozicijo, 51 00:02:22,090 --> 00:02:24,920 uporabo algoritmov, z uporabo kode za generiranje 52 00:02:24,920 --> 00:02:30,280 nekatere vrste of-- morda self-podobno Zaporedje bankovcev, ali morda opombe 53 00:02:30,280 --> 00:02:33,330 pod neko prisilo. 54 00:02:33,330 --> 00:02:35,350 In potem tisti, bi bilo izvaja ali razlaga 55 00:02:35,350 --> 00:02:38,390 z analognimi instrumenti ali kaj podobnega. 56 00:02:38,390 --> 00:02:42,010 Toda sestavek bil storiti algoritmom. 57 00:02:42,010 --> 00:02:45,120 >> Seveda pa morda površina računalniško glasbo ali digitalne glasbe 58 00:02:45,120 --> 00:02:48,870 smo bolj seznanjeni z je digitalna zvočna sinteza ali digitalnega vzorčenja 59 00:02:48,870 --> 00:02:51,160 in digitalni zapis. 60 00:02:51,160 --> 00:02:55,650 Veliko digitalnih instrumentov poteka preko digitalnega vzorčenja. 61 00:02:55,650 --> 00:03:00,110 V resnici, bomo z eno od tistih v v obliki trdnega knjižnice črke kasneje. 62 00:03:00,110 --> 00:03:02,850 >> Ampak tam je tudi nekaj, kar se imenuje digitalna sinteza, ki je prišel ven 63 00:03:02,850 --> 00:03:08,650 V poznih 70-ih in v 80-ih s Yamaha in John Chowning na Stanfordu 64 00:03:08,650 --> 00:03:11,990 početje sintezo FM ali Frekvenca sinteza Modulacija, 65 00:03:11,990 --> 00:03:15,100 kjer boste imeli prevoznika signal in modulacije signala 66 00:03:15,100 --> 00:03:18,270 tako v avdio spektra. 67 00:03:18,270 --> 00:03:22,570 Toda kaj bomo osredotočili na Danes je nekaj, kar se imenuje MIDI, 68 00:03:22,570 --> 00:03:25,040 in seveda algoritmična sestavek. 69 00:03:25,040 --> 00:03:30,940 >> Ne bomo, da instrumenti, vendar smo namesto dogaja, da nekaj glasbe, 70 00:03:30,940 --> 00:03:33,940 in nato, da se razlaga z nekaterimi instrumenti, ki 71 00:03:33,940 --> 00:03:38,300 so conformant na standardna splošno MIDI. 72 00:03:38,300 --> 00:03:40,830 Torej, kaj je MIDI? 73 00:03:40,830 --> 00:03:45,550 Jaz ne bom se preveč globoko v njej, vendar MIDI je protokol za prenos podatkov. 74 00:03:45,550 --> 00:03:49,250 To je neke vrste vodnik po Različna podjetja in industrijo 75 00:03:49,250 --> 00:03:52,250 za organizacijo zvoki ali popravke. 76 00:03:52,250 --> 00:03:54,170 Tako da bomo videli, da tam je standard MIDI 77 00:03:54,170 --> 00:03:57,500 za vse različne tolkala na zvoki in priporočila MIDI 78 00:03:57,500 --> 00:04:01,360 za vse različne vrste iz sintetični ali različne vrste vseh instrumenta 79 00:04:01,360 --> 00:04:03,650 skupine v orkestru, pravijo. 80 00:04:03,650 --> 00:04:08,916 >> Vi ste verjetno seznanjeni z 0 preko 127 MIDI sporočila. 81 00:04:08,916 --> 00:04:12,920 MIDI signal je običajno en bit označuje 82 00:04:12,920 --> 00:04:16,130 ali je to podatki, ali Status paketni, in potem je tukaj še 83 00:04:16,130 --> 00:04:18,589 sedem bitov signala. 84 00:04:18,589 --> 00:04:21,430 In ti lahko nadzorujejo vse od prostornine 85 00:04:21,430 --> 00:04:25,330 ukrepu ali tlaka na posamezne tipke 86 00:04:25,330 --> 00:04:29,400 če ste se opravlja z MIDI krmilnik ter seveda 87 00:04:29,400 --> 00:04:31,250 opombe. 88 00:04:31,250 --> 00:04:33,450 In seveda, MIDI ima bilo zelo koristno, 89 00:04:33,450 --> 00:04:37,550 ker je to način, da se žice skupaj ali Daisy chain 90 00:04:37,550 --> 00:04:41,570 kup MIDI strojne naprave. 91 00:04:41,570 --> 00:04:44,050 Imam sedem ali osem nazaj v moji hiši. 92 00:04:44,050 --> 00:04:46,610 To postane zelo zapleteno, ampak to je res močna. 93 00:04:46,610 --> 00:04:47,460 In to je res star. 94 00:04:47,460 --> 00:04:51,117 To je od zgodnjih 80-ih, in to je res lepo in majhen. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Ja. 96 00:04:51,950 --> 00:04:54,230 Vse classic Nintendo bi videoigre verjetno 97 00:04:54,230 --> 00:04:56,088 imajo MIDI datoteke za glasbo, na primer. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Tukaj je Primer splošne MIDI, 100 00:05:01,740 --> 00:05:06,520 prikazuje MIDI kot neke vrste po splošnem predpisu. 101 00:05:06,520 --> 00:05:13,280 In mislim, da smo lahko zamislite od Razlika med specifikaciji 102 00:05:13,280 --> 00:05:17,830 da bi bilo treba nekaj podobnega ta instrument zvoki in dejanski 103 00:05:17,830 --> 00:05:21,740 Uresničitev teh instrumentov sliši v dobrem pisavi ali posebno MIDI 104 00:05:21,740 --> 00:05:25,740 sintetizator kot razlika med Mogoče typeface--, ki pravi, 105 00:05:25,740 --> 00:05:30,350 V splošnem je to oblikovanje to predvsem način, da predstavljajo 106 00:05:30,350 --> 00:05:35,907 characters-- ter posebno pisavo ki ima posebno velikost in timbre, 107 00:05:35,907 --> 00:05:37,240 in tam je realizacija the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Mogoče boljša primerjava bi 109 00:05:39,156 --> 00:05:43,430 biti standard Unicode says-- daje število za vsak znak, in res 110 00:05:43,430 --> 00:05:46,830 vsak jezik na svetu, ali velika množica skript jezika 111 00:05:46,830 --> 00:05:51,310 v svetu, nato pa so to opravljene v nekaj grafični 112 00:05:51,310 --> 00:05:53,710 različne pakete pisav. 113 00:05:53,710 --> 00:05:56,630 In seveda, si lahko zamislite MIDI kot Unicode zvoka. 114 00:05:56,630 --> 00:06:03,250 In to je samo seznam of-- velikem toku dogodkov in instrumentov in drugih malenkosti, 115 00:06:03,250 --> 00:06:06,090 in moraš imeti ločen Program, kot pisave, 116 00:06:06,090 --> 00:06:08,537 nuditi, da v nekaj, kar je slišen. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Torej, zakaj Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell je funkcionalno programiranje jezik, zelo napreden, 120 00:06:19,110 --> 00:06:22,770 zelo različen od C, zelo razlikuje od PHP. 121 00:06:22,770 --> 00:06:28,120 In bomo videli, da tam je enostavnost sestave funkcije v Haskell 122 00:06:28,120 --> 00:06:37,640 ki nam bo omogočilo, da vetrič skozi sestavljanje ali tipkanje up, prepisovanje, 123 00:06:37,640 --> 00:06:42,160 nekaj podobnega frère Jacques, ta preprosta pesem, ki 124 00:06:42,160 --> 00:06:46,815 ima veliko dela v njej, da so self-podobna ali ponavljanje. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Torej bo to nekaj motivacija zakaj 127 00:06:53,250 --> 00:06:59,400 smo s pomočjo Haskell, v kateri funkcije razreda državljani prve. 128 00:06:59,400 --> 00:07:01,120 >> In sem želela razširiti to malo. 129 00:07:01,120 --> 00:07:08,800 To je malo težko notate frère Jacquesa v Haskell. 130 00:07:08,800 --> 00:07:12,100 Toda kaj, če smo želeli dodati dela bobna z njim? 131 00:07:12,100 --> 00:07:17,320 Kaj pa, če smo želeli, da bi poskušali narediti nekaj podobnega Roland 808 ali 909 bobnu 132 00:07:17,320 --> 00:07:20,970 stroj, kjer imate približno 16 različnih korakov? 133 00:07:20,970 --> 00:07:24,590 Navadno so ti misli kot 16. not. 134 00:07:24,590 --> 00:07:28,640 In lahko nadzorujete globalno tempo, in lahko izločiti 135 00:07:28,640 --> 00:07:34,620 kup različnih tolkal delov za bas boben, A klap, različne zanke, 136 00:07:34,620 --> 00:07:37,540 odprti in zaprti visoki klobuki na te vrste kanalov, 137 00:07:37,540 --> 00:07:41,600 in potem si lahko EQ ali prilagodijo svoj obseg. 138 00:07:41,600 --> 00:07:45,290 >> In bomo videli lepo pot v Haskell predstavljanja ta korak 139 00:07:45,290 --> 00:07:48,810 sekvencer z vsemi različne kul stvari v Haskell 140 00:07:48,810 --> 00:07:53,100 lahko storimo z ustvarjanjem Seznami in filtriranje več seznamov, 141 00:07:53,100 --> 00:07:56,060 kartiranje več seznamov, kartiranje Funkcije več seznamov. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 In hitro opravičilo. 144 00:08:00,760 --> 00:08:05,300 To je zelo površna in preveč hitra skica 145 00:08:05,300 --> 00:08:07,620 nekaterih vidikih od Haskell in Euterpea, 146 00:08:07,620 --> 00:08:11,760 ki je specifična domena vgrajeni jezik pisno 147 00:08:11,760 --> 00:08:14,970 v Haskell glasbenih tipov. 148 00:08:14,970 --> 00:08:17,350 Torej, prosim, preverite kodo na spletu. 149 00:08:17,350 --> 00:08:22,404 Razvneti GHCI, ki je Glasgow Haskell Compiler prevajalec. 150 00:08:22,404 --> 00:08:24,320 In bom delal nekaj to v malo 151 00:08:24,320 --> 00:08:25,880 tako da boste lahko videli, kako je to storjeno. 152 00:08:25,880 --> 00:08:31,021 >> In to vam omogoča, da naložite z the-- sintaksa je debelo črevo in nato 153 00:08:31,021 --> 00:08:31,520 ukaz. 154 00:08:31,520 --> 00:08:33,510 Lahko naložite datoteke. 155 00:08:33,510 --> 00:08:36,840 Lahko uporabite brskanje na teh datotek da vidite vse funkcije, ki jih 156 00:08:36,840 --> 00:08:39,169 obstajajo v posameznem modulu. 157 00:08:39,169 --> 00:08:43,850 In potem, kot bomo videli, vrste in tipa razredi so tako pomembna v Haskell, 158 00:08:43,850 --> 00:08:48,850 tako da lahko vedno check-- posebej če delate v novem DSCL 159 00:08:48,850 --> 00:08:51,600 kot je ta, kaj je vrsta glasbe? 160 00:08:51,600 --> 00:08:55,114 Vem, da o tem, kako številčna vrste dela v Haskell, 161 00:08:55,114 --> 00:08:56,530 ampak jaz ne vem veliko o glasbi. 162 00:08:56,530 --> 00:09:01,280 Ampak lahko raziskujejo, kako oni definirana z uporabo te t ali tipa ukaza 163 00:09:01,280 --> 00:09:04,577 in potem kliče na določenem Funkcija ali podatkovni objekt. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Ja. 165 00:09:05,410 --> 00:09:09,820 Če ste mislili, C in Jek je hardass o vrstah, 166 00:09:09,820 --> 00:09:11,230 nimate pojma o Haskell. 167 00:09:11,230 --> 00:09:14,230 Dobra stvar Haskell je, da če lahko dobite kodo za sestavljanje 168 00:09:14,230 --> 00:09:16,790 in če pregledih tipa Haskell, je verjetno prav, 169 00:09:16,790 --> 00:09:18,675 ker sistem tip je tako stroga. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Ja. 171 00:09:20,090 --> 00:09:21,980 Torej, jaz samo želim iti through-- in znova, 172 00:09:21,980 --> 00:09:27,160 To se ne počne to justice-- nekaj značilnosti Haskell, da se vsaj 173 00:09:27,160 --> 00:09:31,780 njegove creators-- in je bila ustvarjena V poznih 1980-ih s kupom ljudi, 174 00:09:31,780 --> 00:09:34,610 odbor za približno 20 people-- mislil bili pomembni. 175 00:09:34,610 --> 00:09:36,850 In prva stvar, ki jih navedeni v papirju, ki 176 00:09:36,850 --> 00:09:41,890 opisano geneze Haskell V prvih 20 let ali tako 177 00:09:41,890 --> 00:09:43,390 je, da je len. 178 00:09:43,390 --> 00:09:44,990 Torej, kaj to pomeni? 179 00:09:44,990 --> 00:09:49,860 >> No, to pomeni, ko imamo nekakšno izražanja, ga moramo ovrednotiti. 180 00:09:49,860 --> 00:09:54,390 In Haskell počne to v razpisu ki jih potrebujejo tako ali ne-strogo. 181 00:09:54,390 --> 00:09:57,250 To je, če imamo kup komponente našega izražanja, 182 00:09:57,250 --> 00:10:00,660 smo poskušali odložiti oceno teh podkomponente 183 00:10:00,660 --> 00:10:05,300 dokler absolutno zadnjega minute-- da je, dokler smo jih dejansko potrebujejo. 184 00:10:05,300 --> 00:10:08,480 >> Torej, to means-- ki je res kul, še posebej, 185 00:10:08,480 --> 00:10:13,200 če razmišljate o abstrakciji glasbenega korak sekvencer. 186 00:10:13,200 --> 00:10:16,740 Zavijemo ga na, in začnete teče korak sequence-- 187 00:10:16,740 --> 00:10:20,010 Če ste kdaj delali z bobnom machine-- in da gre samo za večno. 188 00:10:20,010 --> 00:10:24,650 Tako da bi bilo res lepo, če bi bi lahko posnemali, da je v Haskell. 189 00:10:24,650 --> 00:10:31,040 In bomo lahko to storite z neskončno vrednosti, zlasti neskončnih seznamov. 190 00:10:31,040 --> 00:10:35,860 To je zelo enostavno, da vnesete neskončen seznam v Haskell. 191 00:10:35,860 --> 00:10:39,230 Lahko samo uporabo sintakse navzdol tukaj, kjer lahko vidite od 1 do 3, 192 00:10:39,230 --> 00:10:42,440 odstranite 3 1 dot dot, in da je neskončen seznam 193 00:10:42,440 --> 00:10:46,960 vseh naravnih števil z razširitvijo na kolikor si lahko predstavljate. 194 00:10:46,960 --> 00:10:49,925 >> Rad bi uvesti Koncept gub takoj. 195 00:10:49,925 --> 00:10:51,800 In še enkrat, namen za ta seminar ni 196 00:10:51,800 --> 00:10:55,770 da spoznajo gub v Haskell ali višje funkcije naročilo. 197 00:10:55,770 --> 00:10:59,640 Ampak jaz samo želim, da se predstavim dajo točno občutek, kako čudno 198 00:10:59,640 --> 00:11:03,700 Haskell je in kako močna je. 199 00:11:03,700 --> 00:11:08,000 In predvsem, gremo na be-- ko bomo naše različne drum deli, 200 00:11:08,000 --> 00:11:12,790 bomo se manipulira sezname številke, ki jih dvokrilna na drug drugega. 201 00:11:12,790 --> 00:11:17,290 In za to, da bomo uporabljali zemljevide in gub. 202 00:11:17,290 --> 00:11:21,770 >> Tam je prav asociativna krat, kar je ta pravica 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 In sintaksa za krat, daš krat 205 00:11:29,170 --> 00:11:34,680 Z bazo vrednost, potem pa operation-- V tem primeru dodajanjem ali odvzemanjem. 206 00:11:34,680 --> 00:11:36,280 Pokazal sem obeh primerih. 207 00:11:36,280 --> 00:11:41,760 In potem je tukaj še akumulator, ki nabira preko celotnega seznama 208 00:11:41,760 --> 00:11:46,330 uporabi tega operaterja plus ali minus, nato pa ga kopičijo. 209 00:11:46,330 --> 00:11:52,680 Torej bo to the--, če je bil imenovan z zložljivimi r plus 0, začenši z 0, 210 00:11:52,680 --> 00:11:54,720 mi bi potem sešteje vse številke v tem seznamu. 211 00:11:54,720 --> 00:11:57,134 In da je seznam od 1 do 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Torej, da bi ji dal še eno Tako krat r traja tri argumente. 213 00:12:00,050 --> 00:12:02,540 Tam je funkcija sama traja dva argumenta, 214 00:12:02,540 --> 00:12:05,400 potem je vrednost starter, in tam je seznam vrednot. 215 00:12:05,400 --> 00:12:08,570 In kaj morate storiti, je vzameš starter vrednost, prva vrednost, 216 00:12:08,570 --> 00:12:09,850 jih postaviti v funkcijo. 217 00:12:09,850 --> 00:12:11,607 Kaj dobiš ven, Vzemi, da krma, ki 218 00:12:11,607 --> 00:12:13,940 v odvisnosti od druga vrednost, kaj dobiš ven, 219 00:12:13,940 --> 00:12:16,690 sprejeti, da se krma da v Funkcija tretje vrednosti. 220 00:12:16,690 --> 00:12:18,740 In potem, če greš dol vsa ta seznam na ta način, 221 00:12:18,740 --> 00:12:22,970 boš dobil na koncu nekateri singularna vrednost, ki je 222 00:12:22,970 --> 00:12:25,720 istega tipa, kaj se je začela ven z in istega tipa 223 00:12:25,720 --> 00:12:29,147 kot stvari na seznamu in nato to je posledica vračanja kratno R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Torej, še zlasti, to so višje funkcije naročilo, 225 00:12:31,980 --> 00:12:34,460 ker oni ob drugo Funkcija kot enega od argumentov. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Ja. 227 00:12:34,770 --> 00:12:37,820 Če ste uporabljali določena druga languages-- Vem R [neslišno] 228 00:12:37,820 --> 00:12:41,510 jezik ima ta, ki se imenuje Zmanjšajte. 229 00:12:41,510 --> 00:12:45,460 Morda imate podobne funkcije v drugih jezikih, tako imenovano 230 00:12:45,460 --> 00:12:48,160 različni stvari. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: In kaj je lepo o kratno R 232 00:12:50,680 --> 00:12:53,880 v tem primeru je, da zgib R lahko delajo z neskončnimi seznami. 233 00:12:53,880 --> 00:12:59,490 Torej, v tem dnu, to P5 se ustvarjajo zapiske, ki 234 00:12:59,490 --> 00:13:03,120 vklopljena v koraku sekvencerja za nekateri del bobna, peti del bobna, 235 00:13:03,120 --> 00:13:05,480 in morda je conga boben ali kaj podobnega. 236 00:13:05,480 --> 00:13:09,719 In to je namerno Nor način pisanja tega 237 00:13:09,719 --> 00:13:11,510 ampak to je zabavno, ker to kaže veliko 238 00:13:11,510 --> 00:13:14,460 stvari o Haskell in Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Torej krat R te colon-- debelega črevesa je le operater, ki potisne stvari 240 00:13:20,650 --> 00:13:25,700 skupaj na list-- pozval prazna Seznam, ki je le prazne konzole. 241 00:13:25,700 --> 00:13:28,250 In kličem, da o tem neskončnem seznamu. 242 00:13:28,250 --> 00:13:31,570 To je pravzaprav dva seznama seštevati tukaj. 243 00:13:31,570 --> 00:13:37,150 Seznam 1 vejica 6 dot pika 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Torej Haskell-- v samo nekaj znakov, ki jih 245 00:13:39,750 --> 00:13:42,420 lahko ustvarjajo cele zaporedje števil 246 00:13:42,420 --> 00:13:46,240 da so pet številk narazen raztezanje naprej v neskončnost. 247 00:13:46,240 --> 00:13:49,860 In moramo dodati, da, da to krajše malo list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21--, samo da ti pokažem kako lahko združite sezname. 249 00:13:54,370 --> 00:13:55,790 >> In potem sem se zloži na sebi. 250 00:13:55,790 --> 00:14:01,510 In to konča kot le nekakšen Operacija identiteta, vendar je neskončno. 251 00:14:01,510 --> 00:14:06,070 In krat R lahko storite, da se zaradi nje leno vrednoti, kot je navedeno zgoraj. 252 00:14:06,070 --> 00:14:10,582 Če imamo 1 in 2 in 3, smo lahko Samo oklepati off celoten preostanek njega. 253 00:14:10,582 --> 00:14:12,290 Da ne bo delo za minus ali plus, vendar 254 00:14:12,290 --> 00:14:17,760 si bo prizadevala za to debelega črevesa identiteta delovanje na seznamu. 255 00:14:17,760 --> 00:14:24,620 >> Torej, kako praktično uporabiti, da če smo imajo neskončno dolg seznam stvari? 256 00:14:24,620 --> 00:14:26,500 No, Haskell zagotavlja Veliko functions-- 257 00:14:26,500 --> 00:14:29,450 in so videti bolj v ti v svoj time-- kot traja 258 00:14:29,450 --> 00:14:32,200 ki pravi, OK, mi smo ustvarjajo to neskončno seznam, 259 00:14:32,200 --> 00:14:35,950 vendar smo le, da bo sprejeti nekatere število nje In v tem case-- 260 00:14:35,950 --> 00:14:38,410 bomo to videli kasneje v Naša boben stroj code-- 261 00:14:38,410 --> 00:14:43,740 GM je le nekakšen globalni spremenljivka za število korakov 262 00:14:43,740 --> 00:14:44,610 v sekvencerja. 263 00:14:44,610 --> 00:14:47,630 Na strojih roll-in I ti so pokazali, da je običajno 16, 264 00:14:47,630 --> 00:14:51,475 ampak sem ga izvajajo z 32. 265 00:14:51,475 --> 00:14:54,470 To sploh ni pomembno. 266 00:14:54,470 --> 00:15:00,230 >> Haskell je tako čista, tako da ima močan statični tipkanje da Connor namiguje. 267 00:15:00,230 --> 00:15:03,220 Torej funkcije Matematični v sense-- 268 00:15:03,220 --> 00:15:06,600 oni so bolj matematična da oni zajamčena 269 00:15:06,600 --> 00:15:11,530 da ne dostopa ali spremeniti kakršnokoli spremenljivka ali opravljati vhod ali izhod. 270 00:15:11,530 --> 00:15:14,420 Torej, če imate funkcijo, je deterministična. 271 00:15:14,420 --> 00:15:17,400 To bo vedno vrnil enak vrednost v stanju programa 272 00:15:17,400 --> 00:15:19,310 ali ostala enaka. 273 00:15:19,310 --> 00:15:22,940 Obstajajo seveda unarna izjeme za to, ampak to je izven našega dosega. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Ja. 275 00:15:23,900 --> 00:15:26,946 Kaj to pomeni, čeprav je tam so nekateri pomembni [neslišno] 276 00:15:26,946 --> 00:15:27,820 Posledice tega. 277 00:15:27,820 --> 00:15:30,940 Ena je, da je zelo enostaven za paralelizirajo programe Haskell. 278 00:15:30,940 --> 00:15:32,773 Ker, če imate, pravijo, funkcijo, ki 279 00:15:32,773 --> 00:15:36,064 potrebuje za delovanje na milijon vrednotah, če ste vedeli, da bo funkcija vedno 280 00:15:36,064 --> 00:15:39,280 dati ven enako vrednost, če hraniš v določenem value-- 281 00:15:39,280 --> 00:15:43,055 če ste [neslišno] f 1, f 2, nato f 3 ali whatnot-- f od 1 282 00:15:43,055 --> 00:15:45,180 se ne dogaja, da napišete v datoteko ali pa kaj 283 00:15:45,180 --> 00:15:46,850 ki bo spremenila vrednost f2. 284 00:15:46,850 --> 00:15:50,220 Lahko samo razdeliti to funkcijo k milijon različnih strojev ali milijon 285 00:15:50,220 --> 00:15:54,720 različne teme, ali karkoli, dobili vse odgovore nazaj, 286 00:15:54,720 --> 00:15:56,900 dobili vse vrednosti vračanja nazaj, in potem to je to. 287 00:15:56,900 --> 00:15:59,780 Torej, zelo enostavno paralelizirajo stvari. 288 00:15:59,780 --> 00:16:03,140 >> Slaba stran je, da je vhod in izhod posebej 289 00:16:03,140 --> 00:16:05,720 vklopil v sistem tipa v zelo zapletene načine. 290 00:16:05,720 --> 00:16:09,010 Mi ne bo šel v to prav zdaj, ampak jaz vam svetujemo, da pogled na nekatere vire 291 00:16:09,010 --> 00:16:11,175 na spletu, če želite izvedeti več o tem. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Torej tip classes-- in to 294 00:16:16,550 --> 00:16:21,610 was-- razredi tipov so izumili za reševanje 295 00:16:21,610 --> 00:16:24,160 problem operaterja preobremenitve. 296 00:16:24,160 --> 00:16:27,590 Tako smo želeli imeti enakost med različnimi vrstami stvari. 297 00:16:27,590 --> 00:16:31,040 Seveda, lahko razmišljamo of-- enakost med številčne vrste 298 00:16:31,040 --> 00:16:34,720 je zelo enostavno, da razmišljajo o tem, vendar Kaj pa enakost med seznamih? 299 00:16:34,720 --> 00:16:37,610 Kaj pa enakost med drevesne podatkovne noga strukture? 300 00:16:37,610 --> 00:16:43,130 In to sploh mogoče Haskell zaradi razredov tipa. 301 00:16:43,130 --> 00:16:48,000 >> Torej, če si določite neko podatkovno type-- in tukaj, to so glasbeni parcele. 302 00:16:48,000 --> 00:16:50,960 Mi smo končno dobili do neke računalniške glasbe. 303 00:16:50,960 --> 00:16:57,420 Torej imamo C, C oster, in tako naprej in tako naprej. 304 00:16:57,420 --> 00:17:01,080 Spadajo v kup različni razredi tipa. 305 00:17:01,080 --> 00:17:03,510 EQ-- pripadajo razredu tipa EQ. 306 00:17:03,510 --> 00:17:06,780 To pomeni, da podpirajo Operacije enakosti. 307 00:17:06,780 --> 00:17:12,650 Tako da lahko oceni, ali enega Zaporedje glasbenih gradnikov 308 00:17:12,650 --> 00:17:15,400 je enaka kot druga. 309 00:17:15,400 --> 00:17:17,280 >> Pripadajo vrstilnega razredu. 310 00:17:17,280 --> 00:17:19,479 To pomeni, da tam je naročanje na njih. 311 00:17:19,479 --> 00:17:27,670 D pride po C. C ostra prihaja po C, kot dobro. 312 00:17:27,670 --> 00:17:29,840 Pripadajo k razredu kažejo, kar pomeni, da lahko 313 00:17:29,840 --> 00:17:33,000 se natisne na konzoli ali terminala. 314 00:17:33,000 --> 00:17:36,090 Spadajo k Razred naštel, ki 315 00:17:36,090 --> 00:17:39,770 pomeni, da čeprav to so znaki, 316 00:17:39,770 --> 00:17:45,340 imajo na katerem temelji numerični zastopanje začne pri 0 317 00:17:45,340 --> 00:17:48,960 in tekoč off skozi vendar veliko stvari, ki so tukaj, 20 ali tako, 318 00:17:48,960 --> 00:17:51,770 ali 30 ali 40, morda. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: In ko imamo vrsto podatkov 320 00:17:54,259 --> 00:17:57,050 da derives-- s to ključno besedo "deriving--" določen razred tipa, 321 00:17:57,050 --> 00:18:01,160 to pomeni, da bo prevajalnik poskušali zgraditi nekaj samodejno. 322 00:18:01,160 --> 00:18:05,120 Torej, morda boste želeli opredeliti kakovost različno. 323 00:18:05,120 --> 00:18:09,450 Boste želeli opredeliti C oster kot enaka D ploska, npr. 324 00:18:09,450 --> 00:18:11,560 S to gradnjo tukaj, jaz ne mislim, C oster 325 00:18:11,560 --> 00:18:14,940 in D ravnim bo enaka, saj prevajalnik bo samodejno 326 00:18:14,940 --> 00:18:19,670 pravijo, vsak drugačen možno vrednost se razlikuje od vsakega drugega. 327 00:18:19,670 --> 00:18:22,930 >> Torej je možno, da preglasi privzete izvedb 328 00:18:22,930 --> 00:18:25,730 teh vrst razredov. 329 00:18:25,730 --> 00:18:28,640 Še enkrat, poglej na referenco, če želite izvedeti več o tem. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: In tukaj, v resnici, to bom 332 00:18:33,600 --> 00:18:36,930 koristno, ko smo kodo kasneje. 333 00:18:36,930 --> 00:18:42,150 Vidimo nekateri operaterji Vplivajo za zaporedno sestavka, 334 00:18:42,150 --> 00:18:46,570 vzporedno sestavek, in tako naprej, ti plusi in enake znake 335 00:18:46,570 --> 00:18:48,620 obdan s podpičji. 336 00:18:48,620 --> 00:18:53,330 To pomeni, da lahko igramo ti različni glasbeni primitivnih eno za drugo. 337 00:18:53,330 --> 00:18:54,590 To je zaporedna sestava. 338 00:18:54,590 --> 00:18:57,170 >> Ali jih lahko igrajo v vzporedno hkrati. 339 00:18:57,170 --> 00:19:05,100 Torej imam lahko glasbeno vrednost, in potem je to enako in dvopičja, 340 00:19:05,100 --> 00:19:09,669 Vplivajo vzporedno operaterja sestavo, in jih igrajo, kot neke vrste tetive. 341 00:19:09,669 --> 00:19:11,460 In bomo uporabili to, ko smo se združujejo 342 00:19:11,460 --> 00:19:15,080 naš del bobna z našimi malo Frere Jacques pesem 343 00:19:15,080 --> 00:19:19,460 odigrati ti dve sekvence glasbeni vrednosti hkrati. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying is-- Curry je bil nazadnje ime za Haskell Curry, ki je 346 00:19:29,250 --> 00:19:31,850 Haskell slika se imenuje po njem. 347 00:19:31,850 --> 00:19:34,330 In to nam tudi omogoča, lepo, elegance, ko smo 348 00:19:34,330 --> 00:19:36,880 pisanje vseh teh različnih funkcije ali filtri, da smo 349 00:19:36,880 --> 00:19:39,330 bo kartiranje preko naših seznamih. 350 00:19:39,330 --> 00:19:42,810 Funkcije dveh arguments-- f x in y-- 351 00:19:42,810 --> 00:19:46,630 se lahko predstavi kot f x uporablja za y. 352 00:19:46,630 --> 00:19:49,800 Tako da je funkcija en argument, da se vrne 353 00:19:49,800 --> 00:19:51,240 druga funkcija enega argumenta. 354 00:19:51,240 --> 00:19:56,962 Torej to pomeni, da lahko preslikati funkcija f x nad seznamom y-jev. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Želite dati zgled za to? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Ja. 357 00:19:59,836 --> 00:20:05,390 Imam primer tukaj iz nekatere stvari, ki jih bo vpisoval. 358 00:20:05,390 --> 00:20:10,500 Torej ponovitev 2-- dobro, ponovitev bo 359 00:20:10,500 --> 00:20:13,040 ena vrednost, ki je, koliko krat, da posnema nekaj, 360 00:20:13,040 --> 00:20:16,690 in potem bo trajalo value-- navadno seznam ali kaj podobnega. 361 00:20:16,690 --> 00:20:23,450 Torej, tukaj, smo kartiranje ponovitev 2 nad drugo seznamu. 362 00:20:23,450 --> 00:20:27,440 >> Torej, če imamo karto ponovitev 2, če želimo posnemati 2 uporablja 363 00:20:27,440 --> 00:20:31,890 na prvi element tega list-- in to so seznami glasbene phrases-- 364 00:20:31,890 --> 00:20:37,650 bo ustvarila dva "si sleeping--" tako spiš, spiš. 365 00:20:37,650 --> 00:20:40,040 Torej, zdaj imamo dva. 366 00:20:40,040 --> 00:20:42,570 Ampak posnetek traja dva argumenti, ampak zato, ker smo 367 00:20:42,570 --> 00:20:47,100 currying in nato kartiranje, moremo predstavljati posnemati 2 368 00:20:47,100 --> 00:20:52,310 kot je bilo ko se je vrnil kot funkcija ena argument-- samo posnemajo dvakrat. 369 00:20:52,310 --> 00:20:57,010 In potem smo se uporablja, da je vsak element tega seznama stavkov. 370 00:20:57,010 --> 00:21:01,900 >> In concat je Haskell Operacija za uravnavanjem seznam. 371 00:21:01,900 --> 00:21:04,400 Ker ponovitev 2 volje pripravo seznama seznamov. 372 00:21:04,400 --> 00:21:06,660 In to je ta vmesna oblika tukaj. 373 00:21:06,660 --> 00:21:10,365 In tako potem bomo lahko concat ali ravnimi da dvakrat. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: Enostavnejši Primer strojenje, 375 00:21:12,240 --> 00:21:15,323 Če želite like-- predstavljate f je le Funkcija množenje, ki traja dve 376 00:21:15,323 --> 00:21:16,840 argumenti in se vrne v svoj proizvod. 377 00:21:16,840 --> 00:21:19,320 Torej, če imate F 4 5, to je 20. 378 00:21:19,320 --> 00:21:22,670 Ampak si lahko zamislite, da je to also-- imate funkcijo F 4 379 00:21:22,670 --> 00:21:25,560 da je argument in vrne Štirikrat to argument-- samo 380 00:21:25,560 --> 00:21:27,870 delna aplikacija, ki samo en argument 4. 381 00:21:27,870 --> 00:21:31,182 In če krma f od 4 5, ki vam bo dala 20. 382 00:21:31,182 --> 00:21:32,890 In to je preprostejša Primer strojenje. 383 00:21:32,890 --> 00:21:34,473 To je običajno eden izmed učbenikov narave. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda izrazi ali anonimni funkcije 386 00:21:42,110 --> 00:21:47,330 so še Haskell znak. 387 00:21:47,330 --> 00:21:51,242 Torej, če moramo Ščepati malo funkcija življenje ponovitev, 388 00:21:51,242 --> 00:21:52,950 ampak pravijo, da je ni v standard knjižnica, 389 00:21:52,950 --> 00:21:56,150 lahko uporabite sintakso podobno naslednjemu. 390 00:21:56,150 --> 00:21:58,730 In bomo vetrič čez to. 391 00:21:58,730 --> 00:22:02,160 Ena stvar, ki jo boste videli veliko v boben stroj smo klice 392 00:22:02,160 --> 00:22:05,790 na nekaj imenovano filter, ki je tako kot prej, 393 00:22:05,790 --> 00:22:08,185 je preslikava odvisnosti nad seznamom, ampak to je 394 00:22:08,185 --> 00:22:10,260 kartiranje logične funkcije. 395 00:22:10,260 --> 00:22:13,390 >> Torej imamo tukaj primer od brezhibna anonimno 396 00:22:13,390 --> 00:22:19,150 opredeljena Boolova funkcija, ki samo traja par vrednosti. 397 00:22:19,150 --> 00:22:22,990 To ni strogo gledano anonimni funkcija. 398 00:22:22,990 --> 00:22:25,850 Ampak to je definirati da je sintaksa za jedrnatosti 399 00:22:25,850 --> 00:22:28,007 in to samo traja x modul N- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Ja. 401 00:22:28,840 --> 00:22:31,330 Torej f je funkcija dva argumenta n in p 402 00:22:31,330 --> 00:22:35,440 da vrne funkcijo, ki je sama funkcija enega argumenta, in sicer x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: I zgoraj omenjeni operaterji Vplivajo. 405 00:22:40,690 --> 00:22:42,642 Kaj so operaterji Vplivajo? 406 00:22:42,642 --> 00:22:45,710 No, operaterji Vplivajo so običajen način predstavljajo operacije, 407 00:22:45,710 --> 00:22:49,910 pravijo, v mathematics-- 2 plus 2 namesto operaterja plus 408 00:22:49,910 --> 00:22:51,202 in potem dva argumenta 2 in 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: To se imenuje reverse polish zapis, ki je 410 00:22:53,701 --> 00:22:55,330 izraz, dvomim, da kdo od vas bi vedel. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Right. 412 00:22:56,288 --> 00:22:58,290 Povratne nohte ali predpono zapis. 413 00:22:58,290 --> 00:23:01,412 Ampak Haskell se odločili, da uporabite operaterjev Vplivajo. 414 00:23:01,412 --> 00:23:03,120 Torej, to so nekateri tisti v meri, ki 415 00:23:03,120 --> 00:23:07,770 definirani za Euterpea DSCL v Haskell. 416 00:23:07,770 --> 00:23:10,730 Torej je bilo to zaporedno sestava. 417 00:23:10,730 --> 00:23:16,340 To je bila vzporedna sestavek, in to je med krčenjem paralelno kompozicijo. 418 00:23:16,340 --> 00:23:18,710 In bomo potrebovali, da z našo boben stroj, 419 00:23:18,710 --> 00:23:22,640 saj bomo uporabili zadnji operater v tej mali zapis tam 420 00:23:22,640 --> 00:23:26,330 igrati boben stroj skupaj z našo Frere Jacques pesem. 421 00:23:26,330 --> 00:23:28,650 In naša boben stroj bo neskončno. 422 00:23:28,650 --> 00:23:30,920 To je samo igra večno. 423 00:23:30,920 --> 00:23:32,692 Toda Frere Jacques pesem ni. 424 00:23:32,692 --> 00:23:33,510 Saj ni tako dolgo. 425 00:23:33,510 --> 00:23:36,610 To je le nekaj barov. 426 00:23:36,610 --> 00:23:43,030 Zato smo morali prenehati bobna stroj kot Takoj, ko pride krajši glasbeni vrednost 427 00:23:43,030 --> 00:23:43,700 do konca. 428 00:23:43,700 --> 00:23:46,980 In da vdelane operater je super koristno s tem. 429 00:23:46,980 --> 00:23:50,090 >> In Vplivajo zapis všeč to je nekako lepo, 430 00:23:50,090 --> 00:23:57,095 ker je rekel, da imajo funkcijo kot Citat, ki daje celi delitev 431 00:23:57,095 --> 00:24:01,010 x zaradi nečesa else-- Žal mi je, da bi moralo biti a in b. 432 00:24:01,010 --> 00:24:04,740 Lahko bi jo napišite kot citat b. 433 00:24:04,740 --> 00:24:09,670 Torej, če ste put-- element še en primer tega. 434 00:24:09,670 --> 00:24:14,730 x element na nek seznam, če si dal je v Backticks, ga lahko uporabite. 435 00:24:14,730 --> 00:24:20,400 Čeprav to ni simbol kot plus ali minus ali časih, 436 00:24:20,400 --> 00:24:24,630 lahko uporabite ime funkcija, kot je ta v Backticks 437 00:24:24,630 --> 00:24:27,045 kot upravljavec Vplivajo, kar je precej kul. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Tudi to je vse samo skladenjski sladkor, res. 439 00:24:29,670 --> 00:24:32,310 To ne vpliva na bistvo jezika. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Tako vidimo tukaj za zadnji stavek našega Frere Jacques pesem, 441 00:24:37,440 --> 00:24:45,740 Igral sem nekaj malo akordov ali tretjini uporabljajo vzporedno kompozicijo 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 To je še en način rekel nekaj o tem, kaj smo pravkar rekel. 445 00:24:54,950 --> 00:24:59,986 Torej lahko zemljevid funkcije en argument več seznamov. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Again, reference za Haskell-- uvodnih učbenikov 447 00:25:02,860 --> 00:25:04,680 bo imel vse to v njej. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Torej, tukaj je precej Ključ linija koraku sekvencerja 449 00:25:07,790 --> 00:25:12,820 bomo vzeli pogled na uporabo seznam razumevanje. 450 00:25:12,820 --> 00:25:17,810 In vidimo tukaj, je, da je element v fiksni operater v hrbtu narekovajih. 451 00:25:17,810 --> 00:25:23,030 Torej, če je x element seznama x-ih, potem bomo vpokličejo Perc funkcij. 452 00:25:23,030 --> 00:25:25,100 Torej Perc je samo funkcija tolkala. 453 00:25:25,100 --> 00:25:30,200 To traja nekaj vrednosti p, ki je del omejene niza vse 454 00:25:30,200 --> 00:25:35,310 različna tolkala zvoki da smo videli v prejšnjem diapozitivu, 455 00:25:35,310 --> 00:25:38,840 in potem daje da Trajanje četrt note. 456 00:25:38,840 --> 00:25:43,190 Ostalo pa ji daje QNR in QNR je le četrtina opomba počitek. 457 00:25:43,190 --> 00:25:44,970 >> Torej, to je vzpostavitev nekaj lepega. 458 00:25:44,970 --> 00:25:52,110 Imamo seznam elementov, in Bomo zanka preko nekega seznama iz ene 459 00:25:52,110 --> 00:25:54,540 do max vrednosti našega korak sekvencer. 460 00:25:54,540 --> 00:25:58,290 In ko smo že pri določenem i v da je seznam enega do max vrednosti, 461 00:25:58,290 --> 00:26:02,970 če je, da sem član tega set ustvaril v tej funkciji, 462 00:26:02,970 --> 00:26:06,040 dobro, potem pa ga obrnite v tolkala noto. 463 00:26:06,040 --> 00:26:10,960 Sicer pa smo pravkar igrajo počitek, ki se pravi, smo samo molči. 464 00:26:10,960 --> 00:26:16,050 In lahko vidimo tukaj, da se v ta seznam razumevanje sintakse, 465 00:26:16,050 --> 00:26:20,030 x je poseljena s tem seznam zgrajeno eno 466 00:26:20,030 --> 00:26:22,462 s svetovnim velikosti sekvencerja. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Ja. 468 00:26:23,295 --> 00:26:26,340 Osnovna sintaksa za Seznam spoznanjih je 469 00:26:26,340 --> 00:26:30,810 nosilec, vrednost vključuje nekatere spremenljivke, bar, 470 00:26:30,810 --> 00:26:34,260 možne vrednosti spremenljivk sami, zaprt nosilec. 471 00:26:34,260 --> 00:26:38,545 In če ste naredili določene graditelja zapis v kakršnikoli matematike razreda, 472 00:26:38,545 --> 00:26:45,999 ste morda nastavljena 2n kot da je n ali n v zv. 473 00:26:45,999 --> 00:26:48,290 Podobno thing-- tem zapisu je mišljeno, da napeljuje 474 00:26:48,290 --> 00:26:49,630 te matematično notacijo. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: In lahko uporabljajo več predikate 476 00:26:51,880 --> 00:26:56,250 in več filtri v seznamu razumevanje, ki je zelo lepo. 477 00:26:56,250 --> 00:27:01,800 Algebraic types-- smo ne bo tukaj ostajal dolgo. 478 00:27:01,800 --> 00:27:04,840 Tam ni dobra ideja v Haskell ali dobra, očitno pojem 479 00:27:04,840 --> 00:27:10,720 kako sprejeti, recimo, privzeto parameter za funkcijo ali kaj podobnega. 480 00:27:10,720 --> 00:27:13,370 V Python, je to precej enostavno. 481 00:27:13,370 --> 00:27:18,460 Lahko samo rečem z enako na deklaracija funkcije, 482 00:27:18,460 --> 00:27:21,420 privzeta vrednost Primer none je na voljo. 483 00:27:21,420 --> 00:27:27,010 >> V Haskell, bi si morda uporabite morda morda tip, 484 00:27:27,010 --> 00:27:32,190 ki bo bodisi nič ali njena vrednost tipa samo. 485 00:27:32,190 --> 00:27:38,630 Tako smo izkoristiti to v boben stroja da nam omogočajo, da izbirni volumen 486 00:27:38,630 --> 00:27:40,730 parametri za vsakega od delov bobna. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Tako, da nam daje pot ob EQ ali njena prostornina na določen kanal. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: V drugi Haskell primeri, 490 00:27:56,440 --> 00:28:00,450 lahko vidite mogoče uporabiti za funkcije, da bi propadel. 491 00:28:00,450 --> 00:28:03,470 To je skupna ena. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: In lahko dobavi neke vrste sporočilo o napaki kot privzeto. 493 00:28:07,010 --> 00:28:11,020 In to je še posebej priročno, če delaš I / O v Haskell. 494 00:28:11,020 --> 00:28:12,044 Da je mogoče trike. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: ali za Podoben primer, mislim, 496 00:28:13,960 --> 00:28:17,460 od odvisnosti, ki vključuje delitev parametra, ki so lahko 0. 497 00:28:17,460 --> 00:28:20,020 In to funkcijo lahko vrnitev morda karkoli. 498 00:28:20,020 --> 00:28:22,802 Torej, če ne obstaja delitev z 0, se bo vrnil šele karkoli. 499 00:28:22,802 --> 00:28:25,010 In če obstaja delitev, ki jih 0, vrne nič 500 00:28:25,010 --> 00:28:26,910 kot način za signaliziranje napako. 501 00:28:26,910 --> 00:28:30,330 Ker je ena od posledic Haskell je zelo stroga tipkanje 502 00:28:30,330 --> 00:28:34,100 je, da ni real-- Izjeme so nerodni, v bistvu, 503 00:28:34,100 --> 00:28:36,160 obravnavanje napak je nerodno. 504 00:28:36,160 --> 00:28:39,440 In to je eden zelo pogost način to počne. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Torej, zdaj smo dobili drugemu um-upogibni stvar 506 00:28:42,990 --> 00:28:49,160 o Haskell, ki je vzorec ujemanje in funkcijske opredelitve. 507 00:28:49,160 --> 00:28:53,390 Sem ti pokazal v zadnjem diapozitiva Izjava o zaporedjem faz 508 00:28:53,390 --> 00:28:58,170 Funkcija, ki je vzel morda vrednost, nato int, nato seznam ints, 509 00:28:58,170 --> 00:29:03,850 nato vrne zaporedje glasbene vrednote tam označi 510 00:29:03,850 --> 00:29:05,375 s tako poškodbo in volumen. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Torej ti trije argumenti so lahko Vzorec ujema na naslednji način. 513 00:29:11,820 --> 00:29:16,660 In smo vedno želeli biti prepričani, da narediti osnovni primer ali izstopa primer prvi. 514 00:29:16,660 --> 00:29:19,690 In ti podčrtaj se samo mogoče razlagati 515 00:29:19,690 --> 00:29:22,340 pomeni nobene vrednosti, ki je tam. 516 00:29:22,340 --> 00:29:26,580 Torej, če smo dobili poziv, naj okrepijo zaporedje z določeno vrednostjo, kakšno drugo vrednost, 517 00:29:26,580 --> 00:29:32,210 in potem je prazen seznam, kaj želimo Za vrnitev je le tišina, počitek 0. 518 00:29:32,210 --> 00:29:35,110 >> In namesto tega čemer je prazna seznam ali 0, 519 00:29:35,110 --> 00:29:38,150 to je ostalo 0, ker smo ki se ukvarjajo z vrsto glasbe, 520 00:29:38,150 --> 00:29:43,230 in prazni seznam glasbe Tip je le ostali brez trajanja. 521 00:29:43,230 --> 00:29:45,680 To ni glasba. 522 00:29:45,680 --> 00:29:51,460 In potem bomo videli, če bomo dobili korak zaporedje s proti trditev prostornine, 523 00:29:51,460 --> 00:29:57,290 p za previdnosti instrumenta Argument, nato pa seznam x-ih. 524 00:29:57,290 --> 00:29:58,360 >> Potem smo narediti nekaj stvari. 525 00:29:58,360 --> 00:30:01,290 Predvsem pa uporablja ta seznam razumevanje, 526 00:30:01,290 --> 00:30:05,700 in mi opravljanje nekaterih Operacije na morda vrednosti 527 00:30:05,700 --> 00:30:10,050 da se spremeni v numerične vrednosti, tako da da bi se lahko nato našteti in rabljeno 528 00:30:10,050 --> 00:30:12,300 Za izbiro instrumenta. 529 00:30:12,300 --> 00:30:16,730 Tudi to je malo bit namerno inconcise 530 00:30:16,730 --> 00:30:20,580 samo, da pokažejo vse čudne stvari lahko storite v Haskell kot vi 531 00:30:20,580 --> 00:30:23,170 poglej na njej o svojem času. 532 00:30:23,170 --> 00:30:23,802 >> V redu. 533 00:30:23,802 --> 00:30:26,010 Torej smo končno dobili na to, kar smo si zastavili, da ne, 534 00:30:26,010 --> 00:30:28,820 ki je narediti nekaj računalniško glasbo. 535 00:30:28,820 --> 00:30:32,250 Torej bomo poskušali narediti Frere Jacques pesem. 536 00:30:32,250 --> 00:30:35,220 Torej obstaja koliko besedne zveze v frère Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Four. 539 00:30:39,680 --> 00:30:40,460 Great. 540 00:30:40,460 --> 00:30:42,490 In tisto, kar je lepo, je, da oni vse ponovi 541 00:30:42,490 --> 00:30:46,990 enako količino roki, ki je dva. 542 00:30:46,990 --> 00:30:50,730 >> Torej imamo štiri stavke vsak ponovili dvakrat. 543 00:30:50,730 --> 00:30:53,590 In zlasti oni v krogu. 544 00:30:53,590 --> 00:30:55,340 In obstaja veliko, veliko načinov za izvajanje 545 00:30:55,340 --> 00:30:57,520 okrogla, da bi bilo zabavno delati. 546 00:30:57,520 --> 00:31:00,260 Sem jo izvajati na zelo preprost način tu, 547 00:31:00,260 --> 00:31:05,760 ki je samo za construct-- linijo funkcija je seznam glasbenih vrednot 548 00:31:05,760 --> 00:31:10,390 in jo spremeni v zaporedno sestavo z uporabo te sekvenčni sestavo 549 00:31:10,390 --> 00:31:13,000 operater. 550 00:31:13,000 --> 00:31:19,540 >> In potem sem se odloži različne dele tako, ki se začnejo s počitek. 551 00:31:19,540 --> 00:31:22,770 Torej začnem s preostalim dveh ukrepov, in nato preostanek štirih ukrepov, 552 00:31:22,770 --> 00:31:26,160 in nato preostanek šest Ukrepi, nato okrogla 553 00:31:26,160 --> 00:31:32,290 Deluje, kot vsi vemo, to pesem. 554 00:31:32,290 --> 00:31:37,180 Vidimo dve pripisi ali modifikacije glasbenih vrednot 555 00:31:37,180 --> 00:31:43,150 ki so vsebovane v tem zaporednega Razporeditev glasbenih elementov. 556 00:31:43,150 --> 00:31:44,810 Imamo volumen dodati. 557 00:31:44,810 --> 00:31:48,960 To je funkcija, da zabeležijo glasba z določenim volumnom. 558 00:31:48,960 --> 00:31:51,320 To je dober primer signala zapored MIDI 559 00:31:51,320 --> 00:31:57,510 od 0 do 127, sedem bitov informacije, ki se lahko prenaša. 560 00:31:57,510 --> 00:32:00,650 >> In then-- smo videli zelo na kratko, ampak splošno MIDI 561 00:32:00,650 --> 00:32:02,310 Seznam vseh različnih instrumentov. 562 00:32:02,310 --> 00:32:04,450 In tam ni cel kup njih. 563 00:32:04,450 --> 00:32:11,230 Če uporabljate digitalni avdio delovne postaje, kot Ableton Live, ali Pro Tools, 564 00:32:11,230 --> 00:32:17,560 tam je neverjetno širši razpon sintetizatorjev in VST instrumentov. 565 00:32:17,560 --> 00:32:21,510 Ampak samo standard MIDI ima nekaj ali nekaj deset. 566 00:32:21,510 --> 00:32:22,799 In nekateri od njih so smešno. 567 00:32:22,799 --> 00:32:25,840 Mislil sem, da bi bilo zabavno, če bi igral instrument instrument MIDI 568 00:32:25,840 --> 00:32:30,550 helikopter, nato pa Naslednja pot skozi krogu, 569 00:32:30,550 --> 00:32:37,980 smo naredili pad sintetični, in potem to corny svinec synth kvadratni val, 570 00:32:37,980 --> 00:32:44,240 in nato govorni izcedek, ki so malo nejasno na mojo slabo MIDI 571 00:32:44,240 --> 00:32:46,410 sintetizator, vendar pa v redu. 572 00:32:46,410 --> 00:32:50,030 >> In potem vidimo to ponovitev in v skladnji od Haskell, 573 00:32:50,030 --> 00:32:54,030 in potem igramo vsi ti deli skupaj 574 00:32:54,030 --> 00:32:56,265 z vzporednim operaterja sestavek. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 In smo lahko verjetno pokazal nekaj od tega. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Tukaj je koda. 579 00:33:08,340 --> 00:33:14,960 In si lahko ogledate v C, da bi bilo Veliko grla kliringa in nastavitve 580 00:33:14,960 --> 00:33:19,760 koda miza pred vami bi lahko glasbo, kot je ta. 581 00:33:19,760 --> 00:33:22,080 Ali katero koli drugo programsko jezik, bi vam verjetno 582 00:33:22,080 --> 00:33:27,210 morali za interakcijo z neke vrste knjižnico ali API in nastavite vse gor, 583 00:33:27,210 --> 00:33:28,725 in potem boš moral pospraviti. 584 00:33:28,725 --> 00:33:33,810 Ampak tukaj v Haskell je, mislim, enkrat boste dobili visi za to, neverjetno 585 00:33:33,810 --> 00:33:35,770 berljiva in zelo izrazit. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Tako da je izvajanje od frère Jacques. 588 00:33:43,240 --> 00:33:43,740 V redu. 589 00:33:43,740 --> 00:33:47,557 Sedaj želimo dodati tolkala, in to je malo umazani. 590 00:33:47,557 --> 00:33:49,015 Tako da je lahko pogled na diapozitive. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Tako da je velika ideja je, da bi kup seznamov ali delov. 593 00:34:00,540 --> 00:34:04,140 Na teh roll-avtomatov, obstaja so tipično okoli morda osem 594 00:34:04,140 --> 00:34:08,670 10 ritma ali udarnih delov. 595 00:34:08,670 --> 00:34:10,159 In nato uporabite kup tehnik. 596 00:34:10,159 --> 00:34:14,889 In smo se pogovarjali o these-- uporabo kratnih, filtri, lambda funkcije, 597 00:34:14,889 --> 00:34:19,429 preslikan več seznamov, ki ustvarjajo vrednosti v nekem območju 1 do r, r 16, 598 00:34:19,429 --> 00:34:20,699 ali 32 korakov v sekvencer. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> In potem, če je vrednost v tem seznamu kot smo teče skozi sekvencer, 601 00:34:29,920 --> 00:34:34,190 ki teče skozi njo znova in več, se je izkazalo na to opombo, 602 00:34:34,190 --> 00:34:36,060 ter da vzorec postane sprožil. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Tu so vse različne čudne načine za Sem prišel gor, da ustvarjajo zapiske. 605 00:34:47,110 --> 00:34:48,940 Poskusi na svojem pol zneska. 606 00:34:48,940 --> 00:34:50,360 To bo sliši kul. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Čas dopušča, bomo šli skozi to. 609 00:34:54,690 --> 00:34:59,200 Ampak za zdaj, mislim, moramo demo, kar imamo. 610 00:34:59,200 --> 00:35:01,380 Upajmo, da to gre v redu. 611 00:35:01,380 --> 00:35:02,670 >> Torej, to je GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 In bomo naložite datoteko Imam imenovane song.lhs, 614 00:35:09,121 --> 00:35:10,620 ki je datoteka sem ti pokazal. 615 00:35:10,620 --> 00:35:11,470 OK super. 616 00:35:11,470 --> 00:35:15,010 Kot je dejal Connor prej, je zbrati, s tipom se preveri, 617 00:35:15,010 --> 00:35:18,380 tako da ne morem dihati veliko lažje. 618 00:35:18,380 --> 00:35:20,010 To se ne bo razstrelil na mene. 619 00:35:20,010 --> 00:35:22,720 >> Nisem rad bi vam pokazal nekaj koristnega. 620 00:35:22,720 --> 00:35:25,900 Lahko vidite, da je modul naložen imenuje 50. 621 00:35:25,900 --> 00:35:28,240 Brskate lahko ta modul. 622 00:35:28,240 --> 00:35:32,092 In to je tako lepo o doing-- morda kaj 623 00:35:32,092 --> 00:35:34,550 delaš v je Haskell ne imenovan za razvoj programske opreme, 624 00:35:34,550 --> 00:35:36,980 vendar pa lahko naredite veliko zabavne stvari na svoje. 625 00:35:36,980 --> 00:35:42,410 In potek dela je res lepo, kot je v primerjavi z veliko drugih jezikov, 626 00:35:42,410 --> 00:35:45,872 ker si lahko ogledate v res berljiv način, kaj se dogaja. 627 00:35:45,872 --> 00:35:47,830 Tako vidimo, da imamo Vse te fraze, ki 628 00:35:47,830 --> 00:35:53,760 so seznami glasbenih parcel, nato pa smo zgraditi ti gor v nekaj večjega, 629 00:35:53,760 --> 00:35:55,220 ki je glasbeni pesem. 630 00:35:55,220 --> 00:35:58,450 To je glasbena enota. 631 00:35:58,450 --> 00:36:05,545 In potem to lahko igrajo vse z play funkcijo imenovano glasbo. 632 00:36:05,545 --> 00:36:09,040 Vidite lahko, da sem dol. 633 00:36:09,040 --> 00:36:11,310 Ki je samo igra. 634 00:36:11,310 --> 00:36:15,040 >> Moral bi say-- nisem govoril o to znak za dolar, ki je povsod. 635 00:36:15,040 --> 00:36:17,980 Znak za dolar je še Vplivajo operater. 636 00:36:17,980 --> 00:36:22,500 Vendar ima najnižjo prednost za vsak gospodarski subjekt, ki učinkovito 637 00:36:22,500 --> 00:36:24,960 pomeni, da je vse, kar je na leva za znak za dolar 638 00:36:24,960 --> 00:36:28,460 in pravica znak za dolar, bomo dobili oceniti pred njim. 639 00:36:28,460 --> 00:36:31,430 Torej, to je nekako kot druga način dodajanja oklepajev. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: To je v bistvu Funkcija sestavek. 642 00:36:36,220 --> 00:36:40,026 In zagotavlja, da ne boste have-- če moraš naloge, bodisi s strani ali Vplivajo 643 00:36:40,026 --> 00:36:42,900 subjekti na obeh straneh, da ne bodo povezujejo preko njega in daš 644 00:36:42,900 --> 00:36:46,030 nepričakovane rezultate. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Tako smo can-- uporabi, da lahko rečemo. 646 00:36:49,790 --> 00:36:51,415 Najprej bomo igrati brez bobnov. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Da je helikopter, MIDI helikopter. 649 00:37:03,170 --> 00:37:05,495 >> [Predvaja glasba] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Tam je kvadratni val. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Glas izcedek. 654 00:37:25,490 --> 00:37:27,630 In lahko res divje s tem. 655 00:37:27,630 --> 00:37:30,872 Pobral sem precej enostavna, ker sem vedel, da ne bi smel odgriznejo 656 00:37:30,872 --> 00:37:31,830 več kot sem lahko žveči. 657 00:37:31,830 --> 00:37:36,460 Samo da je zelo preprosta prikazati glavne ideje. 658 00:37:36,460 --> 00:37:39,952 Ampak potem sem bil všeč, smo moram dodati nekaj bobnov na to. 659 00:37:39,952 --> 00:37:41,910 Samo zato, ker gre za malo nepredirna, 660 00:37:41,910 --> 00:37:45,790 in nisem uporabite Ime delov bobna, 661 00:37:45,790 --> 00:37:49,490 I preslikan them--, ker oni del tega naštevanja razreda, 662 00:37:49,490 --> 00:37:51,500 Sem jih preslikajo v ints. 663 00:37:51,500 --> 00:37:53,120 Ena je kot bas boben. 664 00:37:53,120 --> 00:37:54,370 Je nič, kot tudi. 665 00:37:54,370 --> 00:37:56,000 Sedem je visok klobuk. 666 00:37:56,000 --> 00:38:00,920 In dol, tukaj, kjer se Funkcije dobil malo bolj naključno, 667 00:38:00,920 --> 00:38:02,100 ti so kot Conga bobnih. 668 00:38:02,100 --> 00:38:08,360 >> Torej, če mislite about-- morda zabaven način za izvajanje boben stroj 669 00:38:08,360 --> 00:38:12,830 je uporaba zelo urejeno vzorci na vaš bas boben. 670 00:38:12,830 --> 00:38:17,640 Tako na primer, na filtriranje nad Seznam z vsem, kar daje nazaj 671 00:38:17,640 --> 00:38:20,590 A 1, ko je to izvedel modul 04. 672 00:38:20,590 --> 00:38:27,190 Tako sem dobil 1, 5, 9, 13, 17-- tako da to je prvi utrip vsakega ukrepa. 673 00:38:27,190 --> 00:38:32,860 >> In potem je to isto stvar premaknilo v dveh korakih. 674 00:38:32,860 --> 00:38:33,850 Torej, to je Nekonvencionalan. 675 00:38:33,850 --> 00:38:37,480 Torej to ne bi bilo nekaj podobnega visoki klobuk. 676 00:38:37,480 --> 00:38:39,640 In tukaj potem spet dol, to je malo naključno, 677 00:38:39,640 --> 00:38:41,080 ker delava Conga boben. 678 00:38:41,080 --> 00:38:44,180 In imam nekaj MARACAS dol, preveč. 679 00:38:44,180 --> 00:38:50,280 >> Tako sem lahko pokličete play boben stroj, vendar pa bi šel na večno, 680 00:38:50,280 --> 00:38:53,700 in bi bilo začeti oprijemalne gor ves spomin v mojem sistemu. 681 00:38:53,700 --> 00:38:57,090 Torej bom poklical to funkcijo predvajanje glasbe, ki je, kot bomo videli, 682 00:38:57,090 --> 00:39:02,020 uporabite oklesti paralelno kompozicijo da igrajo naši mali Frere Jacques pesem 683 00:39:02,020 --> 00:39:04,200 skupaj s to čudno boben stroja. 684 00:39:04,200 --> 00:39:06,190 Torej, kaj si zdaj. 685 00:39:06,190 --> 00:39:10,920 In prosim ne izboljša na mojem razporeditev vseh delov bobna. 686 00:39:10,920 --> 00:39:13,375 Ni moja posebnost, vendar sem imeli veliko zabave počne. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Predvaja glasba] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Torej seveda, to je vse malo, ne bit tako zabavno 691 00:39:56,980 --> 00:40:01,100 če ga ne moremo spremeniti k rezultatom tako da morda je 692 00:40:01,100 --> 00:40:04,650 lahko razlaga s človeško izvajalca. 693 00:40:04,650 --> 00:40:06,535 Zato sem ga ne bodo izvajali tukaj. 694 00:40:06,535 --> 00:40:07,910 Sem že ustvarjenih datotek. 695 00:40:07,910 --> 00:40:10,280 Vidite lahko, da obstaja dot LilyPond file-- in to 696 00:40:10,280 --> 00:40:14,500 bo moj segue prenesejo Connor-- in datoteke dot MIDI, 697 00:40:14,500 --> 00:40:18,610 in datoteko dot PDF, ki je kaj LilyPond bo na koncu ustvarijo. 698 00:40:18,610 --> 00:40:23,770 >> Toda to so tiste skripte, in bom samo jih vodijo z njihovimi možnostmi za pomoč. 699 00:40:23,770 --> 00:40:28,090 Če dobiš to in teče s Euterpea, lahko ustvarite MIDI datoteko. 700 00:40:28,090 --> 00:40:31,160 In nato iz MIDI datoteke s tem programom MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 lahko ustvarite Lily Ribnik datoteke, nato pa 702 00:40:34,930 --> 00:40:37,974 lahko ustvarite PDF partiture. 703 00:40:37,974 --> 00:40:39,390 In moramo sprejeti pogled na to. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Torej Connor bo verjetno pokazal ste, kako zabeležijo to bolje, 706 00:40:55,140 --> 00:41:02,570 ampak to je Frere Jacques kot ki sem jih ustvarila v Euterpea. 707 00:41:02,570 --> 00:41:07,300 To je samo v C. Naj so pogruntal , kaj je kramp je dejansko. 708 00:41:07,300 --> 00:41:11,090 Ampak, da je cevovod za kako to narediš s tem. 709 00:41:11,090 --> 00:41:12,950 Spregovorimo več o LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Pa poglejmo. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Si omenil izvedeli ste Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Oh ja. 714 00:41:22,460 --> 00:41:23,480 Oglejte si Več o tem vam Haskell. 715 00:41:23,480 --> 00:41:24,410 To je v virih. 716 00:41:24,410 --> 00:41:26,830 To je, kako sem začel učenja, in to je super. 717 00:41:26,830 --> 00:41:27,580 Ni neumna učenje. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Torej, to je na spletu. 719 00:41:28,829 --> 00:41:34,760 Torej fant z imenom [neslišno] learnyouahaskell.com, brez presledkov. 720 00:41:34,760 --> 00:41:37,065 Slovnica je bolan. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: To je ilustrirana, preveč. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Torej, kaj je LilyPond? 723 00:41:39,440 --> 00:41:42,480 To je deklarativno programiranje jezik za glasbeni stavljenje. 724 00:41:42,480 --> 00:41:45,480 Torej declarative-- lahko razmišljati o stvareh, kot so HTML, 725 00:41:45,480 --> 00:41:50,900 kjer nisi saying-- HTML ne pove, kako spletni brskalniki smeli 726 00:41:50,900 --> 00:41:52,180 napravijo strani, korak za korakom. 727 00:41:52,180 --> 00:41:54,096 To je samo to rekel je tekstovni opis 728 00:41:54,096 --> 00:41:56,100 o tem, kaj želite, da se stran izgledal. 729 00:41:56,100 --> 00:41:59,310 >> In potem je tudi program da pripravlja ta jezik, 730 00:41:59,310 --> 00:42:02,300 ali pa preberite in pozneje dejansko does stavljenje za vas, 731 00:42:02,300 --> 00:42:05,570 in ga izpljune ti čudovito je videti rezultati PDF. 732 00:42:05,570 --> 00:42:08,250 Dobite lahko tudi PNG format ali karkoli. 733 00:42:08,250 --> 00:42:10,300 Dober način, da razmišljajo za to po analogiji 734 00:42:10,300 --> 00:42:16,620 je, da je LaTeX nekaj podobnega LillyPond, ampak samo navadne stavljenje. 735 00:42:16,620 --> 00:42:20,360 Torej, namesto of-- to ni WYSIWYG, What You See 736 00:42:20,360 --> 00:42:22,960 Kaj dobiš, kot so, recimo Finale je, ali Sibelius, 737 00:42:22,960 --> 00:42:27,430 ali Microsoft Word, kjer lahko vnesete v realnem času in osnutki stvari v realnem času 738 00:42:27,430 --> 00:42:31,340 in videti spremembe v trenutku. 739 00:42:31,340 --> 00:42:32,140 >> Temelji besedilo. 740 00:42:32,140 --> 00:42:35,290 Moraš zbrati Vaš rezultati, ki uporabljajo poseben program 741 00:42:35,290 --> 00:42:37,090 in ven PDF kasneje. 742 00:42:37,090 --> 00:42:43,320 To je nekoliko manj primeren za uporabo, če ste 743 00:42:43,320 --> 00:42:46,520 skuša neposredno pisati v rezultat in si 744 00:42:46,520 --> 00:42:48,620 poskuša sestaviti na računalniku. 745 00:42:48,620 --> 00:42:50,830 Ampak obstaja veliko prednosti za to. 746 00:42:50,830 --> 00:42:56,110 Ena, zgleda veliko lepše, ker LillyPond lahko dejansko 747 00:42:56,110 --> 00:42:58,210 vzeti čas, da naredite postavitev odločitve pravilno, 748 00:42:58,210 --> 00:43:02,380 za razliko od Sibelius ali Finale, ki imajo da bo ogrožena algoritme tako 749 00:43:02,380 --> 00:43:05,020 da lahko prikaz stvari v realnem času. 750 00:43:05,020 --> 00:43:07,660 >> Torej, zakaj je LilyPond-- računalniška grafika je težko. 751 00:43:07,660 --> 00:43:10,535 Če delaš karkoli z glasbo in želite napisati ven rezultate, 752 00:43:10,535 --> 00:43:13,900 nočeš pisati ven vse, kar sami 753 00:43:13,900 --> 00:43:19,040 začenši s tem, kako pripraviti štabi in kako pripraviti pisemski papir. 754 00:43:19,040 --> 00:43:21,020 To je zelo težko. To je bilo storjeno pred. 755 00:43:21,020 --> 00:43:22,170 Ti si v redu. 756 00:43:22,170 --> 00:43:26,200 >> Če želite uporabiti Finale ali Sibelius, zapisov za te stvari 757 00:43:26,200 --> 00:43:30,180 so zelo zapleteni, in ne morete res jih uporabite programsko. 758 00:43:30,180 --> 00:43:35,020 Lahko odpirajo Sibelius z Finale in pojdite na File, Export as PDF sami, 759 00:43:35,020 --> 00:43:37,600 Ampak ne moreš zares klic, da iz scenarija. 760 00:43:37,600 --> 00:43:40,440 LillyPond, lahko pokličete od teh scenarijev. 761 00:43:40,440 --> 00:43:44,397 Lahko bi enostavno Ponovil LillyPond LaTeX. 762 00:43:44,397 --> 00:43:47,230 Ne bom imel toliko časa, da gredo v teh tehnologij prav zdaj, 763 00:43:47,230 --> 00:43:48,321 vendar pa obstaja. 764 00:43:48,321 --> 00:43:50,070 Če želite iskati v LillyPond knjigo, 765 00:43:50,070 --> 00:43:53,760 to je program, ki prihaja z Vaše LillyPond distribucija, 766 00:43:53,760 --> 00:43:57,030 in to je za ponavljanjem LillyPond fragmenti v LaTeX 767 00:43:57,030 --> 00:44:00,340 če hočeš narediti nekaj kot velik muzikologije dokument 768 00:44:00,340 --> 00:44:02,289 s primeri, npr. 769 00:44:02,289 --> 00:44:04,580 In to je dobro znanje za življenje, če delaš karkoli 770 00:44:04,580 --> 00:44:05,770 z glasbo, ne samo CS50. 771 00:44:05,770 --> 00:44:09,320 Uporabil sem LillyPond za vse mojih sestave projektov 772 00:44:09,320 --> 00:44:11,880 saj sem bil v bistvu višji v srednji šoli. 773 00:44:11,880 --> 00:44:13,455 >> Torej, tukaj je nekaj preprostih primerov. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 To je v bistvu predstavnik raven zahtevnosti 776 00:44:21,060 --> 00:44:23,481 da večina ljudi bi lice so poskušali 777 00:44:23,481 --> 00:44:24,980 uporabiti LilyPond za enostavne projekte. 778 00:44:24,980 --> 00:44:29,519 Ta prva je začetek na korala uvod, ki ga Bach. 779 00:44:29,519 --> 00:44:31,810 To spodaj je ena odlomek iz enega od mojih lastnih del, 780 00:44:31,810 --> 00:44:34,650 in to je samo tam, da pokažejo vi stvari, kot so [neslišno] 781 00:44:34,650 --> 00:44:38,550 dajanje več vrstic v isti Osebje, kako lirski undersetting deluje. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Lyric podloge so stvar, ki je zelo enostaven za uporabo LilyPond za zborovsko glasbo. 784 00:44:46,110 --> 00:44:48,814 >> In tako potem je tukaj še nekaj več zapletene primere tukaj. 785 00:44:48,814 --> 00:44:50,980 Vse to so storili v LilyPond in oni so izvedljivi. 786 00:44:50,980 --> 00:44:55,280 Ta prvi odlomek iz [Neslišno] do [neslišno]. 787 00:44:55,280 --> 00:44:58,860 In to [neslišno] iz kos za solo bas 788 00:44:58,860 --> 00:45:03,550 flavta s [neslišno] ki je longtime-- ki 789 00:45:03,550 --> 00:45:07,101 je bil dolgoletni član od glasbeni oddelek tukaj, mislim. 790 00:45:07,101 --> 00:45:08,600 Nisem prepričan, če je šel off. 791 00:45:08,600 --> 00:45:12,410 Vendar pa je bil svetovalec na Harvardu Skladatelji Društvo za dolgo časa. 792 00:45:12,410 --> 00:45:13,530 Čudovit človek. 793 00:45:13,530 --> 00:45:16,920 In piše glasbo, ki ima zelo zapleten zapis da LillyPond 794 00:45:16,920 --> 00:45:20,500 lahko kljub temu ravnati zelo lepo. 795 00:45:20,500 --> 00:45:26,030 >> Torej, samo da vam občutek, kaj Zmogljivosti Ta stvar je are-- tako 796 00:45:26,030 --> 00:45:28,960 Notranjost LillyPond so zelo zapleteni. 797 00:45:28,960 --> 00:45:31,060 In ga lahko uporabite za dolgo časa, vključno z 798 00:45:31,060 --> 00:45:32,520 za nekatere precej zapletena stvari, ne da bi zares 799 00:45:32,520 --> 00:45:34,060 da bi vedeli veliko o njih. 800 00:45:34,060 --> 00:45:38,720 Ampak osnovna ideja je, da na najnižja raven, da se atomi LillyPonds 801 00:45:38,720 --> 00:45:39,970 sta pojasnila. 802 00:45:39,970 --> 00:45:42,761 Pojasnila, vsebujejo kontekst imenovane glasove. 803 00:45:42,761 --> 00:45:44,510 Torej glasovnega kontekstu v bistvu ustreza 804 00:45:44,510 --> 00:45:47,410 na eno linijo polifonije. 805 00:45:47,410 --> 00:45:49,410 In potem se lahko kontekst biti vseboval hierarhično 806 00:45:49,410 --> 00:45:53,590 v višjih tiste ravni, ki predstavljajo štabi na rezultat 807 00:45:53,590 --> 00:45:56,750 ali večje skupine, kot so klavir štabi ali zbor štabi, 808 00:45:56,750 --> 00:45:58,990 in nato ob Celo partituro kontekstih. 809 00:45:58,990 --> 00:46:02,260 In lahko dejansko zajemajo več rezultati v knjigi. 810 00:46:02,260 --> 00:46:05,770 >> In vsak kontekst ima Število priloženih graverjev. 811 00:46:05,770 --> 00:46:08,340 Če pogledaš skozi vsebina kontekstu 812 00:46:08,340 --> 00:46:14,410 in natisniti določen znak ali določen razred simbolov kot je potrebno. 813 00:46:14,410 --> 00:46:17,840 Torej za vsako glasovno kontekstu, tam je [neslišno] opombe 814 00:46:17,840 --> 00:46:24,270 graver, da je v bistvu funkcija ali predmet, ki piše vso beležko 815 00:46:24,270 --> 00:46:26,290 glave na pravih delih strani. 816 00:46:26,290 --> 00:46:29,510 Potem pa je razcepljena graver, ki piše ven shiz na osebje. 817 00:46:29,510 --> 00:46:31,517 Potem je tu še metronom Oznaka graver, da 818 00:46:31,517 --> 00:46:33,100 piše iz metronom znamk v rezultat. 819 00:46:33,100 --> 00:46:36,410 In vsi ti prilegajo precej tudi v hierarhiji. 820 00:46:36,410 --> 00:46:39,500 In to je zelo, zelo, zelo prilagodljiv, kar morate 821 00:46:39,500 --> 00:46:42,880 če želite, da se stvari, kot je ta. 822 00:46:42,880 --> 00:46:45,730 >> Torej vsi konteksti imajo Veliko različnih atributov 823 00:46:45,730 --> 00:46:52,410 da lahko spremenite za vse od razmika za različne pisave 824 00:46:52,410 --> 00:46:54,942 Izbor za velikosti stvari. 825 00:46:54,942 --> 00:46:56,900 Če želite narediti še bolj zapletene stvari, 826 00:46:56,900 --> 00:46:59,210 tam je vgrajeni skriptni jezik. 827 00:46:59,210 --> 00:47:01,820 Uporabljajo shemo, ki je narečje LISP. 828 00:47:01,820 --> 00:47:04,960 To verjetno ne kaj pomeni. 829 00:47:04,960 --> 00:47:06,900 Ampak v bistvu, shema drugo funkcionalno 830 00:47:06,900 --> 00:47:09,500 programski jezik, bolj ali manj. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: The tie-in. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Ja. 833 00:47:12,690 --> 00:47:15,390 To je dobra tie-in, mislim. 834 00:47:15,390 --> 00:47:20,150 In je uporabljena kot učnim jezikom, pravzaprav, dol množično Ave. Na MIT. 835 00:47:20,150 --> 00:47:26,590 In to je zelo priročen za LillyPond zaradi različnih tehničnih razlogov. 836 00:47:26,590 --> 00:47:30,317 >> In tako, če želite, da enostavno poteg odvisne od pogojnih, 837 00:47:30,317 --> 00:47:32,900 za example-- tam je gotovo Stanje rezultatom, ki je spoznal, 838 00:47:32,900 --> 00:47:36,495 da spremembe na postavitev ali whatnot-- nato 839 00:47:36,495 --> 00:47:37,620 ti objekti so tam. 840 00:47:37,620 --> 00:47:38,667 Oni so zapleteni. 841 00:47:38,667 --> 00:47:40,250 Torej, tukaj je zelo preprost primer kode. 842 00:47:40,250 --> 00:47:43,810 To je pet vrstic. 843 00:47:43,810 --> 00:47:46,120 V bistvu, sem opredeljuje dva štabi. 844 00:47:46,120 --> 00:47:46,904 To je v 3/4. 845 00:47:46,904 --> 00:47:48,695 Prvi osebje ima pritrjen tempo znamka, 846 00:47:48,695 --> 00:47:51,110 ampak da se dejansko dogaja iti na celotno število točk, 847 00:47:51,110 --> 00:47:54,960 ker tempo znamkah so na ravni rezultata. 848 00:47:54,960 --> 00:47:59,044 Graver Metronom znamka je pritrjena na semaforju kontekst. 849 00:47:59,044 --> 00:48:01,460 Obstajajo različni ključi, ker je [neslišno] graver 850 00:48:01,460 --> 00:48:02,710 je priložen štabi. 851 00:48:02,710 --> 00:48:04,441 Lahko dejansko storiti, je. 852 00:48:04,441 --> 00:48:06,190 Vzorec sem napisal je pravzaprav v C-duru, 853 00:48:06,190 --> 00:48:07,990 ampak to je samo zato, da dokazati, da lahko imajo 854 00:48:07,990 --> 00:48:09,570 različni ključi v različnih štabi. 855 00:48:09,570 --> 00:48:15,710 In osnovna sintaksa je pišete Upoštevajte imena z E, F, G, karkoli. 856 00:48:15,710 --> 00:48:18,910 Če želite storiti predznakov, ste pripona ali ES. 857 00:48:18,910 --> 00:48:22,640 To je iz nizozemščini muzikološki konvencij. 858 00:48:22,640 --> 00:48:28,290 >> In narediti oktavo preskoke, boste morali uporabiti ti ustrezno oznake, vejico ali opuščaj. 859 00:48:28,290 --> 00:48:30,580 Relativno pomeni le karkoli imate noto, 860 00:48:30,580 --> 00:48:34,080 se bo samodejno plaec v oktavo najbližje prejšnjega. 861 00:48:34,080 --> 00:48:37,624 In če želite skočiti več kot fifth-- pravijo petino ali more-- 862 00:48:37,624 --> 00:48:39,165 potem boste morali uporabiti [neslišno]. 863 00:48:39,165 --> 00:48:42,580 Sicer pa, ti ne bi bilo treba določite oktavo vsakega posameznega lista. 864 00:48:42,580 --> 00:48:46,130 >> In relativna C, prime, in C, ki ste jo pravkar določite srednji C 865 00:48:46,130 --> 00:48:48,630 in osnova C, še posebej prvih pojasnila. 866 00:48:48,630 --> 00:48:55,020 Potem imate te štabi, ki organizirajo ta dva glasova ali vzorci glasbe, 867 00:48:55,020 --> 00:48:56,730 in imaš rezultat. 868 00:48:56,730 --> 00:48:58,440 In da je videti takole. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Če želite, da bo čas do kopirati to vzorec LillyPond 871 00:49:05,380 --> 00:49:07,530 koda na prejšnji potisnite navzdol tukaj, in ti 872 00:49:07,530 --> 00:49:09,030 Lahko pišete za LillyPond sami. 873 00:49:09,030 --> 00:49:11,280 Vem, da imamo nekaj da je videti veliko, kot je ta. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Torej, obstaja še en tehnologija imenuje Music XML nogah 876 00:49:19,610 --> 00:49:22,030 s povsem različnimi ljudmi. 877 00:49:22,030 --> 00:49:28,150 XML je besedilnih podatkov structure-- I Ne bi rekel podatki structure-- reči 878 00:49:28,150 --> 00:49:29,580 Metafora map nekako. 879 00:49:29,580 --> 00:49:33,800 In to je zasnovan tako, da imajo hierarhičnih podatkov zelo dobro. 880 00:49:33,800 --> 00:49:37,050 HTML, na primer, je vrsta XML. 881 00:49:37,050 --> 00:49:41,090 In lahko povem, XML, ker so imeli vsi kotni nosilci in kot je 882 00:49:41,090 --> 00:49:44,700 Nosilec poševnica znamke ki kažejo podatkovnih polj. 883 00:49:44,700 --> 00:49:47,390 >> Nimam kodo Primer iz Music XML. 884 00:49:47,390 --> 00:49:50,450 Najdete ga sami. 885 00:49:50,450 --> 00:49:53,735 V bistvu je razlog, boste morda želeli uporabljati XML kot vmesni fazi 886 00:49:53,735 --> 00:49:55,980 je, najprej, da je formata za izmenjavo 887 00:49:55,980 --> 00:50:02,301 za v bistvu every-- jaz ne bi rekel vsak, vendar veliko različnih rezultatom 888 00:50:02,301 --> 00:50:02,800 pisatelji. 889 00:50:02,800 --> 00:50:04,966 Torej, če ste napisali v glasbo XML, ne samo, da lahko LillyPond 890 00:50:04,966 --> 00:50:08,080 brati s pomočjo tega Pomožni Program se imenuje Music XML LY, 891 00:50:08,080 --> 00:50:11,360 ampak tudi lahko Finale prebrati je lahko Sibelius prebrati. 892 00:50:11,360 --> 00:50:14,770 Odvisno od tega, kako je vaš notranji predmeta Hierarhija dela za zastopanje glasbe, 893 00:50:14,770 --> 00:50:18,820 bi bilo morda lažje pisati ven Glasbo XML kot da LillyPond 894 00:50:18,820 --> 00:50:22,410 in samo zanašajo na Glasbeni XML da LY narediti konverzijo. 895 00:50:22,410 --> 00:50:24,282 >> Ne verjamem, da [neslišno] ima Music XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: To pa ne. 897 00:50:25,490 --> 00:50:26,340 Nekdo se dela na tem, čeprav. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea nima Glasba XML izhod funkcija še ni. 900 00:50:31,040 --> 00:50:35,340 Če želite zaključno projektno idejo, mogoče priti v stik s fanti 901 00:50:35,340 --> 00:50:38,620 da Stephen ve, in ki jih lahko uporabite vašo pomoč. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Rad bi, da je. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Prav tako, v bistvu, vsakih programskih jezikov 904 00:50:43,450 --> 00:50:46,610 da je vredno njegovo sol že ima knjižnico XML, 905 00:50:46,610 --> 00:50:51,030 tako da lahko interno pretvorite vse svojo glasbo v neki objekt 906 00:50:51,030 --> 00:50:54,120 da lahko knjižnica XML pisati , da bi bilo potrebno manj 907 00:50:54,120 --> 00:50:57,470 spremembe v vašem notranjo strukturo za kar vas glasba objekti 908 00:50:57,470 --> 00:51:00,310 želite napisati kot je pisanje neposredno v LillyPond bi. 909 00:51:00,310 --> 00:51:04,380 Potem pa ga natisnite z XML s knjižnice XML v vašem jeziku, 910 00:51:04,380 --> 00:51:07,260 ki bo zagotavljal, da je sintaktično pravilna in vse, 911 00:51:07,260 --> 00:51:08,720 in ga nato pretvoriti v LillyPond. 912 00:51:08,720 --> 00:51:11,060 Torej tehnologija, boste morda želeli poglej v če delaš nekaj 913 00:51:11,060 --> 00:51:11,650 Všečkaj to. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Neslišno], drugo auxilarry tehnologija. 916 00:51:16,370 --> 00:51:21,700 To je v bistvu Tech Works ali Tech Studio za LillyPond. 917 00:51:21,700 --> 00:51:25,380 Tako da nudi pomoč pri sintakso, s predlogami 918 00:51:25,380 --> 00:51:28,770 za različne skupne kombinacije instrumentov. 919 00:51:28,770 --> 00:51:32,780 Omogoča ogled na razdeljenem zaslonu tako lahko imate kodo v enem oknu 920 00:51:32,780 --> 00:51:37,350 in PDF v drugem oknu in kliknite na mestih v PDF 921 00:51:37,350 --> 00:51:40,650 za skok na ustrezni pike v izvorni kodi. 922 00:51:40,650 --> 00:51:45,330 To je bolj uporabno, če ste dejansko pisanje LillyPond sami datotek 923 00:51:45,330 --> 00:51:47,400 razen če ste generiranje jim načrtno. 924 00:51:47,400 --> 00:51:51,230 Ampak še enkrat, to je nekaj koristno imeti. 925 00:51:51,230 --> 00:51:51,970 >> Great. 926 00:51:51,970 --> 00:51:55,860 Drug resources-- bom iti skozi to zelo hitro. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond ima odlično dokumentacijo, na svoji spletni strani. 928 00:52:01,270 --> 00:52:02,270 Imajo tutorial. 929 00:52:02,270 --> 00:52:03,478 Imajo sklic skladenjski. 930 00:52:03,478 --> 00:52:07,010 Imajo na stotine odrezke raznih majhnih stvareh 931 00:52:07,010 --> 00:52:09,930 yo bi morali storiti, da dokaže različne sposobnosti. 932 00:52:09,930 --> 00:52:12,250 Če želite uporabljati skriptni jezik 933 00:52:12,250 --> 00:52:14,740 ali bolj obsežna prilagoditve, potem je 934 00:52:14,740 --> 00:52:16,730 notranji reference na tem URL. 935 00:52:16,730 --> 00:52:21,950 Če želite uporabiti Music XML, tam je da URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> In potem, če boste morali naučiti shemo ker si dejansko želite uporabiti 937 00:52:27,960 --> 00:52:30,960 skriptni objektov v LillyPond, potem je [neslišno] imenuje 938 00:52:30,960 --> 00:52:32,918 Strukturiran Razlaga računalniških programov, 939 00:52:32,918 --> 00:52:35,820 ki ni samo drugi Največji CS učbenik kdaj written-- 940 00:52:35,820 --> 00:52:39,770 me našli potem, če hočeš vedeti kar mislim, da je največji eno is-- 941 00:52:39,770 --> 00:52:43,580 ampak to je tudi zelo dobra uvod v jezik pravilno. 942 00:52:43,580 --> 00:52:46,630 Ne boste potrebovali več kot prvih nekaj odsekov. 943 00:52:46,630 --> 00:52:47,827 >> In to je to. 944 00:52:47,827 --> 00:52:48,410 Kakšno vprašanje? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> ŠTUDENT: Kje lahko prenesete Vaše ustvarila Frere Jacques 947 00:52:57,972 --> 00:53:01,050 da jo bom lahko dal na svoj iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: No, lahko pišete ven, da nekaj WAV v Euterpea. 949 00:53:07,574 --> 00:53:08,490 In imaš kodo. 950 00:53:08,490 --> 00:53:10,000 To je na GitHub. 951 00:53:10,000 --> 00:53:15,590 Naredite svoj različic Frere Jacques jih CS50 panjski mislih. 952 00:53:15,590 --> 00:53:17,095 To bi bilo super. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Še kdo? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Potrebujemo boljši bas boben, preveč. 955 00:53:20,261 --> 00:53:21,935 To je res slabo. 956 00:53:21,935 --> 00:53:26,565 >> ŠTUDENT: Euterpea nima le stranska sestavek, vendar signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Da. 958 00:53:27,440 --> 00:53:30,100 Dejstvo je, delo I storil v Euterpea, ko sem 959 00:53:30,100 --> 00:53:33,450 je this-- obstaja Študij arhitekture na univerzi Yale, ki 960 00:53:33,450 --> 00:53:35,900 uporablja it-- bil na zvočne sinteze. 961 00:53:35,900 --> 00:53:39,810 Torej je res lep način, z uporabo puščic 962 00:53:39,810 --> 00:53:46,150 in nekatere notacije smo videli od sestavljanje skupaj signalne funkcije. 963 00:53:46,150 --> 00:53:50,610 Še posebej, bas za najbolj med njimi je samo preprost sinusni. 964 00:53:50,610 --> 00:53:54,240 Ampak, če začnete skladanje tistih, v čudnih programskih načinov, 965 00:53:54,240 --> 00:54:00,010 lahko dobite norega zvoka učinki, kot so čudne kaskade. 966 00:54:00,010 --> 00:54:04,640 Lahko ustvarite zelo kašaste Sliši se z veliko modulacije. 967 00:54:04,640 --> 00:54:07,730 >> Jaz sem projekt na medzrnsko sinteza, ki je 968 00:54:07,730 --> 00:54:12,290 nekje med FM in vzorčenje. 969 00:54:12,290 --> 00:54:15,230 Vzameš zelo majhna, malo vzorcev in nato 970 00:54:15,230 --> 00:54:20,440 jih kombinira z neke vrste modulator in zgraditi bogatejši zvok. 971 00:54:20,440 --> 00:54:24,900 Naredili smo tudi fizično modeliranje, zato poskušam razmišljati o fiziki 972 00:54:24,900 --> 00:54:29,410 in psihoakustika za nekaj podobnega trobenta, in razmišljam o tem, kako 973 00:54:29,410 --> 00:54:32,320 Zvok se odbija zvonec za trobento 974 00:54:32,320 --> 00:54:35,200 in akustika prostor in modeliranje 975 00:54:35,200 --> 00:54:40,195 da z osnovnimi oscilatorjev. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Najlepša hvala. 978 00:54:48,940 --> 00:54:50,140 Hvala za prihod. 979 00:54:50,140 --> 00:54:52,400 In jaz sem vedno pripravljen vzemite vprašanja 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: Ja. 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