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 Es esmu Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Es esmu CS50 CA Hārvardas. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: es esmu Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Es esmu TF par CS50 at Yale. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: Un mēs runāsim par kādu tehnoloģijas, kas jums varētu 8 00:00:15,790 --> 00:00:18,880 vēlaties izmantot, ja jūs interesē darot galīgo projektu, vai tiešām 9 00:00:18,880 --> 00:00:20,920 kaut kas ar mūziku. 10 00:00:20,920 --> 00:00:24,400 Mēs ejam, lai būtu pievēršoties vispirms programmēšanas valoda sauc Haskell. 11 00:00:24,400 --> 00:00:26,280 Tā ir funkcionāla valoda, tāpēc paradigma 12 00:00:26,280 --> 00:00:29,620 ir ļoti atšķirīga no C vai PHP vai citām sevišķi valodas 13 00:00:29,620 --> 00:00:33,450 ka jūs esat jau izmanto, un jo īpaši uz bibliotēku rakstīta Haskell 14 00:00:33,450 --> 00:00:40,240 sauc Euterpea, kas var palīdzēt cilvēkiem ar rakstot mūziku funkcionāli, 15 00:00:40,240 --> 00:00:40,780 būtībā. 16 00:00:40,780 --> 00:00:43,400 Un Stephen būs staigāt jums caur lielisks piemērs, ka. 17 00:00:43,400 --> 00:00:46,423 >> Pēc tam, es jūs iepazīstināt ar kaut ko sauc LillyPond, kas 18 00:00:46,423 --> 00:00:48,370 ir tehnoloģija salikums mūziku. 19 00:00:48,370 --> 00:00:50,830 Tas ir veida, piemēram, LaTeX mūzikai, ja kāds no jums 20 00:00:50,830 --> 00:00:57,530 ir izmantoti LaTeX par matemātikas klasēs vai pārējie P komplekts klases vai ko jūs esat. 21 00:00:57,530 --> 00:01:00,440 Un tāpēc es došu jums, atkal, daži vienkārši piemēri, kas 22 00:01:00,440 --> 00:01:03,640 un norādīt Jums vispārējā virziens kādu labāku resursu. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: In Turklāt, mēs domājām to 24 00:01:04,319 --> 00:01:06,720 būtu forši izveidot mazliet mājieni 25 00:01:06,720 --> 00:01:10,780 uz cauruļvadu starp Euterpea radīto MIDI failus 26 00:01:10,780 --> 00:01:13,910 in LillyPond, tāpēc mēs piedāvājam daži instrukcija par skripti 27 00:01:13,910 --> 00:01:16,310 to darīt, kas ir nodrošināti ar LillyPond 28 00:01:16,310 --> 00:01:19,160 tikai, lai saglabātu to open source un iegūt cauruļvadu iet. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Atkal, mums vajadzētu uzsvērt, 30 00:01:20,910 --> 00:01:23,100 šīs divas tehnoloģijas, jūs nav tās izmantot kopā. 31 00:01:23,100 --> 00:01:25,370 Viņi nav paredzēta darbam kopā, lai gan tie ir ļoti labi. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Right. 33 00:01:26,362 --> 00:01:30,116 Un pilnīgi bez maksas. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: So pateicības, tikko izlasīju, ka. 35 00:01:32,240 --> 00:01:33,406 STEPHEN KREWSON: Pienācīgi atzīmēts. 36 00:01:33,406 --> 00:01:36,360 Pateicoties šiem ļaudīm. 37 00:01:36,360 --> 00:01:39,180 To es ņemšu ievelkas tikai uz brīdi. 38 00:01:39,180 --> 00:01:41,560 Instalācijas process ir mazliet viltīgs. 39 00:01:41,560 --> 00:01:45,420 Mums ir izlasījis mani uz GitHub ka jūs varat to apskatīt. 40 00:01:45,420 --> 00:01:47,840 Tikai e-pastu man, ja jums ir kādi jautājumi. 41 00:01:47,840 --> 00:01:52,829 Bet mēs rādīsim šo saskaņā ar pieņēmumu ka tas strādā visiem. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: Un, ja jūs nevarat nokļūt LillyPond uz darbu, nav liels darījumu. 43 00:01:55,620 --> 00:02:00,139 Nav live kompilācija ka tiks iesaistīts, vismaz manā galā. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell un LillyPond vajadzētu gan ir uzstādītājiem. 45 00:02:02,930 --> 00:02:08,497 Euterpea tiek lejupielādēts kā paketi, tā tālāk un tā tālāk. 46 00:02:08,497 --> 00:02:10,080 Tātad mēs runājam par datora mūziku. 47 00:02:10,080 --> 00:02:12,990 Un tas ir tikai ļoti 50.000 pēdu skats. 48 00:02:12,990 --> 00:02:15,700 Tur ir daži dažādi aspekti no tā. 49 00:02:15,700 --> 00:02:18,120 Un tas ir raupja un ir gatavojas aizēnot kādu detaļu. 50 00:02:18,120 --> 00:02:22,090 Bet mēs varētu domāt par kaut ko tāpat algoritmiskās kompozīcijas, 51 00:02:22,090 --> 00:02:24,920 izmantojot algoritmus, izmantojot kodu, lai radītu 52 00:02:24,920 --> 00:02:30,280 kaut kāda veida of-- varbūt self-līdzīgs secība piezīmes, vai varbūt piezīmes 53 00:02:30,280 --> 00:02:33,330 ar dažiem ierobežojumiem. 54 00:02:33,330 --> 00:02:35,350 Un tad tie varētu būt veic vai interpretēts 55 00:02:35,350 --> 00:02:38,390 ar analogo instrumentiem vai kaut kā tā. 56 00:02:38,390 --> 00:02:42,010 Bet sastāvs bija darīts algoritmiski. 57 00:02:42,010 --> 00:02:45,120 >> Bet, protams, varbūt platība dators mūzika vai digitālās mūzikas 58 00:02:45,120 --> 00:02:48,870 mēs esam vairāk pazīstami ar ir digitālais skaņas sintēze vai digitālais izlases 59 00:02:48,870 --> 00:02:51,160 un digitālās ierakstu. 60 00:02:51,160 --> 00:02:55,650 Vairāki digitālo instrumentu partijas ir darīts, izmantojot digitālo paraugus. 61 00:02:55,650 --> 00:03:00,110 Patiesībā, mēs būsim, izmantojot vienu no tiem, forma skaņas fontu bibliotēku vēlāk. 62 00:03:00,110 --> 00:03:02,850 >> Bet tur ir arī kaut kas ko sauc Digitālā sintēze, kas iznāca 63 00:03:02,850 --> 00:03:08,650 par vēlu '70s un uz' 80s ar Yamaha un John Chowning Stenfordas 64 00:03:08,650 --> 00:03:11,990 darot FM sintēze vai Frekvences modulācija sintēze, 65 00:03:11,990 --> 00:03:15,100 kur jums bija pārvadātājs signālu un Modulējošais signāls 66 00:03:15,100 --> 00:03:18,270 gan audio spektrā. 67 00:03:18,270 --> 00:03:22,570 Bet tas, ko mēs esam vērsti uz šodien ir kaut kas ko sauc MIDI, 68 00:03:22,570 --> 00:03:25,040 un, protams, algoritmiskā kompozīcija. 69 00:03:25,040 --> 00:03:30,940 >> Mēs nebrauksim, lai padarītu instrumentus, bet mēs tā vietā gatavojas veikt kādu mūziku, 70 00:03:30,940 --> 00:03:33,940 un tad, ka saņems interpretēts daži instrumenti, kas 71 00:03:33,940 --> 00:03:38,300 ir conformant uz Kopumā MIDI standarts. 72 00:03:38,300 --> 00:03:40,830 Tātad, kas ir MIDI? 73 00:03:40,830 --> 00:03:45,550 Es neesmu gatavojas saņemt pārāk dziļi tajā, bet MIDI ir datu pārraides protokols. 74 00:03:45,550 --> 00:03:49,250 Tā ir sava veida ceļvedi pāri dažādi uzņēmumi un nozares 75 00:03:49,250 --> 00:03:52,250 organizēšanai skaņas vai plāksteri. 76 00:03:52,250 --> 00:03:54,170 Tātad mēs redzam, ka tur ir MIDI standarts 77 00:03:54,170 --> 00:03:57,500 par visu dažādām sitaminstrumentiem skaņas un MIDI ieteikumi 78 00:03:57,500 --> 00:04:01,360 visiem dažādu veidu synth vai dažāda veida visu instrumenta 79 00:04:01,360 --> 00:04:03,650 grupas orķestri, saka. 80 00:04:03,650 --> 00:04:08,916 >> Jūs, iespējams, iepazinies ar 0 līdz 127 MIDI ziņas. 81 00:04:08,916 --> 00:04:12,920 MIDI signāls parasti viens bits norādot 82 00:04:12,920 --> 00:04:16,130 vai tas ir datu vai statuss pakešu, un tad tur ir 83 00:04:16,130 --> 00:04:18,589 septiņi biti signāla. 84 00:04:18,589 --> 00:04:21,430 Un tie var kontrolēt viss no tilpuma 85 00:04:21,430 --> 00:04:25,330 uz darbības vai spiediens uz īpašu atslēgu 86 00:04:25,330 --> 00:04:29,400 ja jūs, kas veic ar MIDI kontrolieris, kā arī, protams, 87 00:04:29,400 --> 00:04:31,250 piezīmes. 88 00:04:31,250 --> 00:04:33,450 Un, protams, ir MIDI bijusi ļoti noderīga, 89 00:04:33,450 --> 00:04:37,550 jo tas ir veids, kā vadu kopā vai ziedlapķēde 90 00:04:37,550 --> 00:04:41,570 ķekars MIDI aparatūras ierīcēm. 91 00:04:41,570 --> 00:04:44,050 Man ir septiņi vai astoņi atpakaļ pie manas mājas. 92 00:04:44,050 --> 00:04:46,610 Tas kļūst patiešām sarežģīta, bet tas ir patiešām spēcīgs. 93 00:04:46,610 --> 00:04:47,460 Un tas ir patiešām vecs. 94 00:04:47,460 --> 00:04:51,117 Tas ir no sākumā '80s, un tas ir patiešām jauki un mazi. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Jā. 96 00:04:51,950 --> 00:04:54,230 Visas klasiskās Nintendo video spēles, iespējams, 97 00:04:54,230 --> 00:04:56,088 ir MIDI failus mūziku, piemēram. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Lūk piemērs vispārējās MIDI, 100 00:05:01,740 --> 00:05:06,520 parādot MIDI kā sava veida vispārējās protokolu. 101 00:05:06,520 --> 00:05:13,280 Un es domāju, ka mēs varam domāt par Starpība starp specifikācijas 102 00:05:13,280 --> 00:05:17,830 ka vajadzētu būt kaut kas līdzīgs šie instrumentu skaņas un faktisko 103 00:05:17,830 --> 00:05:21,740 realizācija šo instrumentu skaņas ar skaņu fontu vai konkrētu MIDI 104 00:05:21,740 --> 00:05:25,740 sintezators kā starpība starp varbūt typeface-- kas saka, 105 00:05:25,740 --> 00:05:30,350 vispār, tas ir konstrukcija šis konkrētais veids, kā pārstāvēt 106 00:05:30,350 --> 00:05:35,907 characters-- un īpašu fontu kas ir īpaša izmēra un tembrs, 107 00:05:35,907 --> 00:05:37,240 un tur ir realizācija the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Varbūt labāk būtu salīdzinājums 109 00:05:39,156 --> 00:05:43,430 būt Unicode standarts says-- tas dod vairāki katram raksturs, un patiešām 110 00:05:43,430 --> 00:05:46,830 katrs valoda pasaulē, vai plašs kopums skriptu valodas 111 00:05:46,830 --> 00:05:51,310 pasaulē, un pēc tam tie ir padarīti par kaut ko grafiskā 112 00:05:51,310 --> 00:05:53,710 dažādi fontu paketes. 113 00:05:53,710 --> 00:05:56,630 Un, protams, jūs varat iedomāties MIDI kā Unicode skaņas. 114 00:05:56,630 --> 00:06:03,250 Un tas ir tikai saraksts of-- lielā straumē Pasākumu un instrumentu un plauktiņš, 115 00:06:03,250 --> 00:06:06,090 un jums ir atsevišķa programmas, piemēram, burtveidolu, 116 00:06:06,090 --> 00:06:08,537 padarīt kas stājas kaut kas ir dzirdamas. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Tad kāpēc Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell ir funkcionāla programmēšana valoda, ļoti attīstītas, 120 00:06:19,110 --> 00:06:22,770 ļoti atšķirīgs no C, ļoti atšķiras no PHP. 121 00:06:22,770 --> 00:06:28,120 Un mēs ejam, lai redzētu, ka tur ir Vienkārša funkciju sastāvu Haskell 122 00:06:28,120 --> 00:06:37,640 kas ļaus mums brīze, izmantojot komponēšanu vai rakstīt uz augšu, pārrakstot, 123 00:06:37,640 --> 00:06:42,160 kaut kas līdzīgs FRERE Jacques, Tas vienkārši dziesma, kas 124 00:06:42,160 --> 00:06:46,815 ir daudz daļu tajā, ka ir self-līdzīgas vai atkārtojas. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Tātad tas būs daži motivācija, kāpēc 127 00:06:53,250 --> 00:06:59,400 mēs esam izmantojot Haskell, kurā funkcijas ir pirmās šķiras pilsoņiem. 128 00:06:59,400 --> 00:07:01,120 >> Un es gribēju, lai paplašinātu Tas mazliet. 129 00:07:01,120 --> 00:07:08,800 Tas ir mazliet viegli notate FRERE Jacques in Haskell. 130 00:07:08,800 --> 00:07:12,100 Bet ko tad, ja mēs vēlējāmies pievienot bungu daļu, lai to? 131 00:07:12,100 --> 00:07:17,320 Ko darīt, ja mēs vēlējāmies, lai mēģinātu padarīt kaut kas līdzīgs Roland 808 vai 909 bungas 132 00:07:17,320 --> 00:07:20,970 mašīna, kur jums ir aptuveni 16 dažādi pasākumi? 133 00:07:20,970 --> 00:07:24,590 Parasti tie ir uzlūkot kā 16 piezīmes. 134 00:07:24,590 --> 00:07:28,640 Un jūs varat kontrolēt globālās tempo, un jūs varat izlasīt 135 00:07:28,640 --> 00:07:34,620 ķekars dažādu sitamie daļām no basa bungas, kokvilna, dažādi lamatas, 136 00:07:34,620 --> 00:07:37,540 atvēršanas un aizvēršanas augstās cepures uz šiem kanāliem veida, 137 00:07:37,540 --> 00:07:41,600 un tad jūs varat EQ vai pielāgot to apjomu. 138 00:07:41,600 --> 00:07:45,290 >> Un mēs redzēsim skaistu ceļu Haskell pārstāvēt šo soli 139 00:07:45,290 --> 00:07:48,810 sequencer ar visiem dažādas atdzist lietas Haskell 140 00:07:48,810 --> 00:07:53,100 mēs varam darīt ar radot saraksti un filtrēšana nekā sarakstiem, 141 00:07:53,100 --> 00:07:56,060 kartēšana pa sarakstiem, kartēšana funkcijām, sarakstos. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 Un ātri atvainošanos. 144 00:08:00,760 --> 00:08:05,300 Tas ir ļoti virspusējas un pārāk ātri skice 145 00:08:05,300 --> 00:08:07,620 daži no aspektiem no Haskell un Euterpea, 146 00:08:07,620 --> 00:08:11,760 kas ir Domēnspecifiskās iegultās valoda rakstisks 147 00:08:11,760 --> 00:08:14,970 in Haskell par mūzikas veidiem. 148 00:08:14,970 --> 00:08:17,350 Tāpēc, lūdzu, pārbaudiet kodu tiešsaistē. 149 00:08:17,350 --> 00:08:22,404 Uguns GHCI, kas ir Glāzgova Haskell Compiler Tulks. 150 00:08:22,404 --> 00:08:24,320 Un es būs darīt dažas Tas ir mazliet 151 00:08:24,320 --> 00:08:25,880 lai jūs varētu redzēt, kā tas ir darīts. 152 00:08:25,880 --> 00:08:31,021 >> Un tas ļauj ielādēt ar the-- sintakse ir resnās zarnas un tad 153 00:08:31,021 --> 00:08:31,520 komanda. 154 00:08:31,520 --> 00:08:33,510 Jūs varat ielādēt failus. 155 00:08:33,510 --> 00:08:36,840 Jūs varat izmantot pārlūkot uz šiem failiem lai redzētu visas funkcijas, kas 156 00:08:36,840 --> 00:08:39,169 pastāvēt konkrētā modulī. 157 00:08:39,169 --> 00:08:43,850 Un tad, kā mēs redzēsim, veidi un veids klases ir tik svarīgi Haskell, 158 00:08:43,850 --> 00:08:48,850 lai jūs vienmēr varat check-- īpaši ja jūs strādājat ar jaunu DSCL 159 00:08:48,850 --> 00:08:51,600 piemēram, tas, kāda ir mūzikas veids? 160 00:08:51,600 --> 00:08:55,114 Es zinu par to, kā Numeric veidi strādā Haskell, 161 00:08:55,114 --> 00:08:56,530 bet es nezinu daudz par mūziku. 162 00:08:56,530 --> 00:09:01,280 Bet jūs varat izpētīt, kā viņi ir noteikts, izmantojot šo t vai tipa komandu 163 00:09:01,280 --> 00:09:04,577 un pēc tam aicinot konkrēts funkcija vai datu objekts. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Jā. 165 00:09:05,410 --> 00:09:09,820 Ja jūs domāja, C un šķindēt bija hardass par veidiem, 166 00:09:09,820 --> 00:09:11,230 Jums nav ne jausmas par Haskell. 167 00:09:11,230 --> 00:09:14,230 Laba lieta par Haskell ir tas, ka ja jūs varat saņemt savu kodu, lai apkopotu 168 00:09:14,230 --> 00:09:16,790 un ja Haskell tipa pārbaudēm, tas ir iespējams, ir taisnība, 169 00:09:16,790 --> 00:09:18,675 jo tipa sistēma ir tik stingra. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Jā. 171 00:09:20,090 --> 00:09:21,980 Tāpēc es vienkārši gribu iet through-- un atkal, 172 00:09:21,980 --> 00:09:27,160 tas nedara tā justice-- daži iezīmes Haskell ka, vismaz 173 00:09:27,160 --> 00:09:31,780 tā creators-- un tā tika izveidota 1980. gadu beigās ar ķekars cilvēku, 174 00:09:31,780 --> 00:09:34,610 komiteja no aptuveni 20 people-- domāja, bija svarīgi. 175 00:09:34,610 --> 00:09:36,850 Un pirmais, ko viņi uzskaitīti papīra, kas 176 00:09:36,850 --> 00:09:41,890 aprakstīja ģenēzi Haskell pirmajos 20 gados, vai arī tā 177 00:09:41,890 --> 00:09:43,390 bija, ka tā bija slinks. 178 00:09:43,390 --> 00:09:44,990 Tātad, ko tas nozīmē? 179 00:09:44,990 --> 00:09:49,860 >> Nu, tas nozīmē, kad mums ir sava veida izpausmes, mums ir nepieciešams, lai novērtētu to. 180 00:09:49,860 --> 00:09:54,390 Un Haskell dara ar zvanu ar nepieciešamību veidā vai bez stingri veidā. 181 00:09:54,390 --> 00:09:57,250 Tas ir, ja mums ir ķekars sastāvdaļas mūsu izpausmes, 182 00:09:57,250 --> 00:10:00,660 mēs cenšamies, lai aizkavētu novērtējumu Šo apakškategorijās 183 00:10:00,660 --> 00:10:05,300 līdz absolūtam pēdējā minute-- tas ir līdz brīdim, kad mēs tiešām ir nepieciešams tos. 184 00:10:05,300 --> 00:10:08,480 >> Tātad šis means-- kas ir tiešām foršs, jo īpaši 185 00:10:08,480 --> 00:10:13,200 ja mēs domājat par ieguves muzikāla solis sequencer. 186 00:10:13,200 --> 00:10:16,740 Jūs to ieslēgtu, un jūs sākat darbojas solis sequence-- 187 00:10:16,740 --> 00:10:20,010 Ja jūs kādreiz strādājis ar bungām machine-- un tas tikai iet uz visiem laikiem. 188 00:10:20,010 --> 00:10:24,650 Tātad, tas būtu patiešām jauki, ja mēs varētu sacensties ka Haskell. 189 00:10:24,650 --> 00:10:31,040 Un mēs varam darīt to ar bezgalīgu vērtībām, jo ​​īpaši bezgalīgs sarakstos. 190 00:10:31,040 --> 00:10:35,860 Tas ir ļoti viegli, lai ievadītu bezgalīgs saraksts Haskell. 191 00:10:35,860 --> 00:10:39,230 Jūs varētu vienkārši izmantot sintakse leju Šeit, kur jūs redzat no 1 līdz 3, 192 00:10:39,230 --> 00:10:42,440 noņemt 3 1 dot dot, un ka ir bezgalīgs saraksts 193 00:10:42,440 --> 00:10:46,960 Visu dabas numuriem pagarinot par cik jūs varat iedomāties. 194 00:10:46,960 --> 00:10:49,925 >> Es gribu ieviest jēdziens krokas uzreiz. 195 00:10:49,925 --> 00:10:51,800 Un atkal, mērķis Šī semināra nav 196 00:10:51,800 --> 00:10:55,770 lai uzzinātu par krokām Haskell vai augstākas pakāpes funkcijas. 197 00:10:55,770 --> 00:10:59,640 Bet es tikai gribu, lai ieviestu to sniedz precīzu sajūtu cik dīvaini 198 00:10:59,640 --> 00:11:03,700 Haskell ir un cik spēcīgs tas ir. 199 00:11:03,700 --> 00:11:08,000 Un jo īpaši, mēs ejam, lai be-- kad mēs mūsu dažādas bungas daļas, 200 00:11:08,000 --> 00:11:12,790 mēs spēsim tikt manipulējot sarakstus numuri, locīšanas tos uz otru. 201 00:11:12,790 --> 00:11:17,290 Un, lai to izdarītu, mēs būt izmantojot kartes un krokām. 202 00:11:17,290 --> 00:11:21,770 >> Tur ir tiesības asociatīvais reizes, kas ir šī viena tiesības 203 00:11:21,770 --> 00:11:26,990 here-- 1 mīnus daudzums, 2 mīnus daudzums, 3 mīnus 0. 204 00:11:26,990 --> 00:11:29,170 Un sintakse priekšlikums fold, jūs piešķirat reizes 205 00:11:29,170 --> 00:11:34,680 bāzes vērtība un tad operation-- Šajā gadījumā saskaitīšanas vai atņemšanas. 206 00:11:34,680 --> 00:11:36,280 Esmu parādīts abos gadījumos. 207 00:11:36,280 --> 00:11:41,760 Un tad tur ir akumulators, kas uzkrājas visā sarakstā, 208 00:11:41,760 --> 00:11:46,330 piemērojot šo operatora plus vai mīnus, un pēc tam uzkrājot to. 209 00:11:46,330 --> 00:11:52,680 Tātad tas būs the-- ja tā sauca ar reizes R plus 0, sākot ar 0, 210 00:11:52,680 --> 00:11:54,720 mēs tad summa visu skaitļi šajā sarakstā. 211 00:11:54,720 --> 00:11:57,134 Un tas ir saraksts, no 1 līdz 3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Tātad, lai to otru veids, fold r aizņem trīs argumentus. 213 00:12:00,050 --> 00:12:02,540 Tur ir funkcija, kas pati aizņem divus argumentus, 214 00:12:02,540 --> 00:12:05,400 tad tur ir starteris vērtību, un tur ir saraksts ar vērtībām. 215 00:12:05,400 --> 00:12:08,570 Un ko jūs darāt, ir jūs lietojat starteris vērtību, pirmkārt vērtība, 216 00:12:08,570 --> 00:12:09,850 nodot tos funkciju. 217 00:12:09,850 --> 00:12:11,607 Ko jūs saņemsiet out, pieņemt, ka, barību, kas 218 00:12:11,607 --> 00:12:13,940 uz funkcija no otrkārt vērtība, ko jūs izkļūt, 219 00:12:13,940 --> 00:12:16,690 pieņemt, ka, barības kas stājas funkcija no trešās vērtības. 220 00:12:16,690 --> 00:12:18,740 Un tad, ja jums iet uz leju Tas viss saraksts šādā veidā, 221 00:12:18,740 --> 00:12:22,970 jūs gatavojas saņemt beidzot daži vienskaitlī vērtība, kas ir 222 00:12:22,970 --> 00:12:25,720 tāda paša veida, ko jūs sākās ārā ar un no tā paša tipa 223 00:12:25,720 --> 00:12:29,147 kā lietām sarakstā un pēc tam tas ir atgriešanās rezultāts reizes R. 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Tātad, jo īpaši, tie ir augstāki funkcijas, 225 00:12:31,980 --> 00:12:34,460 jo viņi lieto citu funkcija kā vienu no argumentus. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Jā. 227 00:12:34,770 --> 00:12:37,820 Ja jūs esat izmantojis dažu citu languages-- Es zinu, R, [nedzirdama] 228 00:12:37,820 --> 00:12:41,510 valoda ir tas, ko sauc samazināt. 229 00:12:41,510 --> 00:12:45,460 Jums varētu būt līdzīgas funkcijas citās valodās, vienkārši sauc 230 00:12:45,460 --> 00:12:48,160 dažādas lietas. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: And kas ir jauka par kārtīgu R 232 00:12:50,680 --> 00:12:53,880 šajā gadījumā ir tas, ka fold R var strādāt ar bezgalīgu sarakstiem. 233 00:12:53,880 --> 00:12:59,490 Tātad šajā apakšdaļā, šī P5 ir radīt uzdevumus, kurus 234 00:12:59,490 --> 00:13:03,120 tiek ieslēgts solis sequencer daži bungas daļa, piektā daļa bungas, 235 00:13:03,120 --> 00:13:05,480 un varbūt tas ir Conga bungas vai kaut ko. 236 00:13:05,480 --> 00:13:09,719 Un tas ir apzināti stulbs veids, kā rakstot šo, 237 00:13:09,719 --> 00:13:11,510 bet tas ir jautri, jo tas parāda daudz 238 00:13:11,510 --> 00:13:14,460 no lietas par Haskell un Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Tātad reizes R Šīs colon-- resnās ir tikai uzņēmējs, kas nospiež lietas 240 00:13:20,650 --> 00:13:25,700 kopā ar list-- sauc par tukšu saraksts, kas ir tikai tukšas iekavās. 241 00:13:25,700 --> 00:13:28,250 Un es esmu aicinot ka par šo bezgalīgo sarakstā. 242 00:13:28,250 --> 00:13:31,570 Tas ir tiešām divi saraksti saskaitot kopā uz leju šeit. 243 00:13:31,570 --> 00:13:37,150 Sarakstā 1 komats 6 dot dot ir 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Tik Haskell-- tikai dažas rakstzīmes, jums 245 00:13:39,750 --> 00:13:42,420 var radīt visu vielas secība numuriem 246 00:13:42,420 --> 00:13:46,240 ka ir pieci skaitļi intervālu stiepjas tālāk uz bezgalību. 247 00:13:46,240 --> 00:13:49,860 Un es prepend to, ka Tas īsāks maz list-- 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- tikai, lai parādītu jums kā jūs varat saķēdēt sarakstus. 249 00:13:54,370 --> 00:13:55,790 >> Un tad es esmu salocīta uz sevi. 250 00:13:55,790 --> 00:14:01,510 Un tas beidzas tikai to sava veida identitāte operācija, bet tas ir bezgalīgs. 251 00:14:01,510 --> 00:14:06,070 Un kārtīgi R var darīt, jo tas laiski izvērtē, kā iepriekš. 252 00:14:06,070 --> 00:14:10,582 Ja mums ir 1 un 2 un 3, mēs varam vienkārši stiprinājuma pie visu pārējo tā. 253 00:14:10,582 --> 00:14:12,290 Tas nestrādās plus vai mīnus, bet tas 254 00:14:12,290 --> 00:14:17,760 strādās šajā kolu identitāte darbību sarakstā. 255 00:14:17,760 --> 00:14:24,620 >> Tātad, kā mēs praktiski izmantot, ka, ja mēs ir bezgala garš saraksts ar lietām? 256 00:14:24,620 --> 00:14:26,500 Nu, Haskell sniedz daudz functions-- 257 00:14:26,500 --> 00:14:29,450 un izskatās vairāk par šos savu LAIKU_ piemēram, veikt 258 00:14:29,450 --> 00:14:32,200 kas saka, OK, mēs esam radot šo bezgalīgo sarakstu, 259 00:14:32,200 --> 00:14:35,950 bet mēs esam tikai gatavojas veikt kādu skaits no tā, un šajā case-- 260 00:14:35,950 --> 00:14:38,410 mēs redzēsim šo vēlāk Mūsu bungu mašīna code-- 261 00:14:38,410 --> 00:14:43,740 GM ir tikai sava veida pasaules mainīgais pakāpju skaitu, kas 262 00:14:43,740 --> 00:14:44,610 šajā sequencer. 263 00:14:44,610 --> 00:14:47,630 Par roll-in mašīnām I parādīja jums, tas ir parasti 16, 264 00:14:47,630 --> 00:14:51,475 bet man ir īstenojušas to ar 32. 265 00:14:51,475 --> 00:14:54,470 Tas nav īsti jautājums. 266 00:14:54,470 --> 00:15:00,230 >> Haskell ir arī tīrs, tāpēc tas ir spēcīgs statisks rakstīt, ka Connor pieminēja. 267 00:15:00,230 --> 00:15:03,220 Tātad funkcijas matemātisko In sense-- 268 00:15:03,220 --> 00:15:06,600 viņi vairāk matemātiskās ka viņi garantēti 269 00:15:06,600 --> 00:15:11,530 to nevar piekļūt vai mainīt jebkādu mainīgs vai veikt ieeju vai izeju. 270 00:15:11,530 --> 00:15:14,420 Tātad, ja jums ir funkcija, tas ir determinēti. 271 00:15:14,420 --> 00:15:17,400 Tā vienmēr atgriežas pats vērtība stāvoklī programmas 272 00:15:17,400 --> 00:15:19,310 vai nemainās. 273 00:15:19,310 --> 00:15:22,940 Ir, protams, izņēmumi monadic uz šo, bet tas ir ārpus mūsu darbības jomu. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Jā. 275 00:15:23,900 --> 00:15:26,946 Ko tas nozīmē, lai gan, ir tur ir daži svarīgi [nedzirdama] 276 00:15:26,946 --> 00:15:27,820 sekas. 277 00:15:27,820 --> 00:15:30,940 Viens ir tas, ka tas ir ļoti viegli parallelize Haskell programmas. 278 00:15:30,940 --> 00:15:32,773 Jo, ja jums ir, teikt, funkcija, kas 279 00:15:32,773 --> 00:15:36,064 vajag darboties miljons vērtībām, ja jūs zināt, ka funkcija būs vienmēr 280 00:15:36,064 --> 00:15:39,280 dot tādu pašu vērtību, ja jūs barību noteiktā value-- 281 00:15:39,280 --> 00:15:43,055 ja tu esi no 1 [nedzirdama] f, f 2, tad f no 3 vai whatnot-- f no 1 282 00:15:43,055 --> 00:15:45,180 nav gatavojas rakstīt out uz failu vai kaut ko darīt 283 00:15:45,180 --> 00:15:46,850 kas mainīt vērtību f2. 284 00:15:46,850 --> 00:15:50,220 Jūs varat sadalīt šo funkciju miljonus dažādu mašīnas miljons 285 00:15:50,220 --> 00:15:54,720 dažādi diegi vai neatkarīgi, iegūt visu atbildes atpakaļ, 286 00:15:54,720 --> 00:15:56,900 saņemt visus atgriešanās vērtības atpakaļ, un tad tas arī viss. 287 00:15:56,900 --> 00:15:59,780 Tik ļoti viegli parallelize lietas. 288 00:15:59,780 --> 00:16:03,140 >> Negatīvie ir tas, ka ieejas un izejas, jo īpaši 289 00:16:03,140 --> 00:16:05,720 iederas tipa sistēmas ļoti sarežģītos veidos. 290 00:16:05,720 --> 00:16:09,010 Mēs ne iedziļināties, ka tieši tagad, bet es aicinam jūs apskatīt dažas resursu 291 00:16:09,010 --> 00:16:11,175 tiešsaistē, ja jūs vēlaties, lai uzzinātu par to. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: So ierakstiet classes-- un tas 294 00:16:16,550 --> 00:16:21,610 was-- klases veidu tika izgudrots, lai atrisinātu 295 00:16:21,610 --> 00:16:24,160 problēma operatora pārslodzes. 296 00:16:24,160 --> 00:16:27,590 Tāpēc mēs vēlējāmies, lai būtu vienlīdzība starp dažāda veida lietām. 297 00:16:27,590 --> 00:16:31,040 Protams, mēs varētu domāt of-- vienlīdzība starp skaitlisko veidiem 298 00:16:31,040 --> 00:16:34,720 ir ļoti viegli domāt par, bet Kas par vienlīdzību starp sarakstiem? 299 00:16:34,720 --> 00:16:37,610 Kas par līdztiesību koka kāja datu struktūras? 300 00:16:37,610 --> 00:16:43,130 Un tas ir viss iespējams Haskell jo tipa klasēs. 301 00:16:43,130 --> 00:16:48,000 >> Tātad, ja jūs definētu noteiktu datu type-- un šeit, tie ir mūzikas laukumi. 302 00:16:48,000 --> 00:16:50,960 Mēs esam beidzot kļūst zināmā datora mūziku. 303 00:16:50,960 --> 00:16:57,420 Tāpēc mums ir C, C asu, un tā tālāk, un tā tālāk. 304 00:16:57,420 --> 00:17:01,080 Tie pieder pie ķekars dažāda veida nodarbības. 305 00:17:01,080 --> 00:17:03,510 EQ-- tie pieder pie EQ tipa klasi. 306 00:17:03,510 --> 00:17:06,780 Tas nozīmē, ka viņi atbalsta līdztiesības operācijas. 307 00:17:06,780 --> 00:17:12,650 Tātad jūs varat novērtēt, vai viens secība mūzikas primitīvas 308 00:17:12,650 --> 00:17:15,400 ir tāds pats kā cits. 309 00:17:15,400 --> 00:17:17,280 >> Viņi pieder pie kārtas klasē. 310 00:17:17,280 --> 00:17:19,479 Tas nozīmē, tur ir pasūtīšana uz tiem. 311 00:17:19,479 --> 00:17:27,670 D nāk pēc C. C asas nāk pēc C, kā arī. 312 00:17:27,670 --> 00:17:29,840 Tie pieder klasei parādīt, kas nozīmē, ka tie var 313 00:17:29,840 --> 00:17:33,000 uzdrukā uz konsole vai terminālī. 314 00:17:33,000 --> 00:17:36,090 Viņi pieder pie klase uzskaitīti, kas 315 00:17:36,090 --> 00:17:39,770 nozīmē, ka, pat ja tie ir simboli, 316 00:17:39,770 --> 00:17:45,340 tie ir pamatā skaitlisku pārstāvība sākot 0 317 00:17:45,340 --> 00:17:48,960 un iet off tomēr cauri daudzas lietas ir šeit, 20, vai arī tā, 318 00:17:48,960 --> 00:17:51,770 vai 30 vai 40, varbūt. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: Un kad mums ir datu tipu 320 00:17:54,259 --> 00:17:57,050 ka derives-- ar šo atslēgvārdu "deriving--" noteikta veida klase, 321 00:17:57,050 --> 00:18:01,160 tas nozīmē, ka kompilators centīsies būvēt kaut ko automātiski. 322 00:18:01,160 --> 00:18:05,120 Tātad, varbūt jūs vēlaties noteikt kvalitāti atšķirīgi. 323 00:18:05,120 --> 00:18:09,450 Jūs vēlaties, lai definētu C asu kā vienāds ar D plakana, piemēram. 324 00:18:09,450 --> 00:18:11,560 Ar šo būvniecību šeit, es nedomāju, ka C asa 325 00:18:11,560 --> 00:18:14,940 un D dzīvoklis būs vienāda, jo kompilators automātiski 326 00:18:14,940 --> 00:18:19,670 teikt katru citu iespējamo vērtību atšķiras no katru otro. 327 00:18:19,670 --> 00:18:22,930 >> Tātad tas ir iespējams ignorēt noklusējuma implementāciju 328 00:18:22,930 --> 00:18:25,730 Šo nodarbību veidiem. 329 00:18:25,730 --> 00:18:28,640 Atkal, apskatīt atskaites, ja jūs vēlaties, lai uzzinātu par to. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: And šeit, patiesībā, tas ņemšu 332 00:18:33,600 --> 00:18:36,930 būt noderīgi, ja mēs kodu vēlāk. 333 00:18:36,930 --> 00:18:42,150 Mēs redzam dažas no infikss operatoru secīgai sastāvu, 334 00:18:42,150 --> 00:18:46,570 paralēli kompozīcija, un tā tālāk, šie plusi un vienādas pazīmes 335 00:18:46,570 --> 00:18:48,620 ieskauj kolonnas. 336 00:18:48,620 --> 00:18:53,330 Tas nozīmē, ka mēs varam spēlēt šīs dažādās mūzikas primitīvi viens pēc otra. 337 00:18:53,330 --> 00:18:54,590 Tas ir secīga sastāvs. 338 00:18:54,590 --> 00:18:57,170 >> Vai arī mēs varam spēlēt tos paralēli tajā pašā laikā. 339 00:18:57,170 --> 00:19:05,100 Lai es varētu būt mūzikas vērtība, un tad tas ir vienāds un kolonnas, 340 00:19:05,100 --> 00:19:09,669 infikss paralēli sastāvu operators, un atskaņot tos kā sava veida akordu. 341 00:19:09,669 --> 00:19:11,460 Un mēs ejam, lai izmantotu Tas kad mēs apvienojam 342 00:19:11,460 --> 00:19:15,080 Mūsu bungas daļa ar mūsu maz Frere Jacques dziesma 343 00:19:15,080 --> 00:19:19,460 spēlēt šīs divas sekvences mūzikas vērtības, tajā pašā laikā. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying is-- Curry pēdējo reizi Nosaukums Haskell Karija, kurš 346 00:19:29,250 --> 00:19:31,850 Haskell attēls tiek nosaukta. 347 00:19:31,850 --> 00:19:34,330 Un tas ļauj mums jauki, elegance, kad mēs esam 348 00:19:34,330 --> 00:19:36,880 rakstiski Visi šie dažādie funkcijas vai filtri, ka mēs esam 349 00:19:36,880 --> 00:19:39,330 būs kartēšanu pār mūsu sarakstos. 350 00:19:39,330 --> 00:19:42,810 Funkcija no diviem arguments-- f X un y-- 351 00:19:42,810 --> 00:19:46,630 var tikt attēlots kā f x piemērots y. 352 00:19:46,630 --> 00:19:49,800 Tātad, tas ir atkarīgs no viens arguments, kas atgriež 353 00:19:49,800 --> 00:19:51,240 cita funkcija vienu argumentu. 354 00:19:51,240 --> 00:19:56,962 Tātad tas nozīmē, ka mēs varam karte funkcija f X pār saraksta y s. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Vēlaties, lai sniegt piemēru citiem? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Jā. 357 00:19:59,836 --> 00:20:05,390 Man ir piemērs tepat no dažas no lietām, mēs rakstīsim. 358 00:20:05,390 --> 00:20:10,500 Tātad atkārtot 2-- labi, atkārtot ņems 359 00:20:10,500 --> 00:20:13,040 viena vērtība, kas ir, cik daudz reizes atkārtot kaut ko, 360 00:20:13,040 --> 00:20:16,690 un tad tas prasīs value-- parasti saraksts vai kaut ko. 361 00:20:16,690 --> 00:20:23,450 Tātad šeit, mēs esam kartēšana atkārtot 2 pār citu sarakstu. 362 00:20:23,450 --> 00:20:27,440 >> Tātad, ja mēs karte atkārtot 2, ja mēs atkārtot 2 piemērot 363 00:20:27,440 --> 00:20:31,890 uz šīs list-- pirmā elementa un tie saraksti mūzikas phrases-- 364 00:20:31,890 --> 00:20:37,650 ražos divi "tu sleeping--" Tātad jūs guļ, jūs miega. 365 00:20:37,650 --> 00:20:40,040 Tāpēc tagad mums ir divi. 366 00:20:40,040 --> 00:20:42,570 Bet kopija aizņem divas argumenti, bet tāpēc, ka mēs esam 367 00:20:42,570 --> 00:20:47,100 currying un tad kartēšana, mēs varam pārstāvēt atkārtot 2 368 00:20:47,100 --> 00:20:52,310 tādu, kas atpakaļ, kā funkcija no viens argument-- tikai atdarināt divreiz. 369 00:20:52,310 --> 00:20:57,010 Un tad mēs esam piemērojot ka katram Šā saraksta frāzes elements. 370 00:20:57,010 --> 00:21:01,900 >> Un concat ir Haskell operācija līdzināšanas sarakstu. 371 00:21:01,900 --> 00:21:04,400 Jo kopija 2 gribas sagatavot sarakstu sarakstus. 372 00:21:04,400 --> 00:21:06,660 Un tas ir tas starpprodukts šeit. 373 00:21:06,660 --> 00:21:10,365 Un tā tad mēs varam concat vai saplacināt kas divas reizes. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: vienkāršāks piemērs currying, 375 00:21:12,240 --> 00:21:15,323 ja jūs vēlaties like-- iedomāties f ir tikai reizināšanas funkcija, kas notiek divas 376 00:21:15,323 --> 00:21:16,840 argumenti un atgriež savu produktu. 377 00:21:16,840 --> 00:21:19,320 Tātad, ja jums ir F 4 5, tas ir 20. 378 00:21:19,320 --> 00:21:22,670 Bet jūs varat domāt par to kā also-- jums ir funkcija F 4 379 00:21:22,670 --> 00:21:25,560 kas ņem paskaidrojumi un atdevi četras reizes tas argument-- tikai 380 00:21:25,560 --> 00:21:27,870 daļēja pieteikumu, kas tikai viens arguments 4. 381 00:21:27,870 --> 00:21:31,182 Un, ja jūs barības f no 4 5, kas dos jums 20. 382 00:21:31,182 --> 00:21:32,890 Un tas ir vienkāršāk piemērs currying. 383 00:21:32,890 --> 00:21:34,473 Tas parasti ir viens no mācību grāmatu ones. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda izteiksmes vai anonīmi funkcijas 386 00:21:42,110 --> 00:21:47,330 Ir vēl viens Haskell pazīme. 387 00:21:47,330 --> 00:21:51,242 Tātad, ja mums ir nepieciešams, lai sakult līdz maz funkcija dzīve kopija, 388 00:21:51,242 --> 00:21:52,950 bet saka, tas nav standartnovirze bibliotēka, 389 00:21:52,950 --> 00:21:56,150 mēs varam izmantot sintakse līdzīgs uz šādiem jautājumiem. 390 00:21:56,150 --> 00:21:58,730 Un mēs brīze pār to. 391 00:21:58,730 --> 00:22:02,160 Viena lieta, jūs redzēsiet daudz In bungu mašīna mēs zvanu 392 00:22:02,160 --> 00:22:05,790 lai kaut ko sauc filtrē, kas tāpat kā līdz šim, 393 00:22:05,790 --> 00:22:08,185 ir kartēšana funkcijas pa sarakstu, bet tas ir 394 00:22:08,185 --> 00:22:10,260 kartēšana Būla funkcijas. 395 00:22:10,260 --> 00:22:13,390 >> Tāpēc mums ir šeit piemērs Of A anonīmi 396 00:22:13,390 --> 00:22:19,150 definēts Būla funkcija, kas tikai aizņem pāris vērtības. 397 00:22:19,150 --> 00:22:22,990 Tas nav strikti runājot anonīms funkcija. 398 00:22:22,990 --> 00:22:25,850 Bet tas ir definēt ar ka sintakse īsuma, 399 00:22:25,850 --> 00:22:28,007 un tas tikai aizņem x modulis N- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Jā. 401 00:22:28,840 --> 00:22:31,330 Tātad f ir funkcija divi argumenti n un p 402 00:22:31,330 --> 00:22:35,440 kas atgriež funkcija, kas ir sevi funkcija vienu argumentu, proti x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: I iepriekš minētie infikss operatori. 405 00:22:40,690 --> 00:22:42,642 Kādi ir infikss uzņēmēji? 406 00:22:42,642 --> 00:22:45,710 Nu, infikss uzņēmēji ir normāls veids, kā mēs pārstāvam operācijas, 407 00:22:45,710 --> 00:22:49,910 proti, mathematics-- 2 plus 2, nevis operatora plus 408 00:22:49,910 --> 00:22:51,202 un tad divi argumenti 2 un 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: To sauc Reverss poļu notācija, kas ir 410 00:22:53,701 --> 00:22:55,330 termins es šaubos kāds no jums varētu zināt. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Right. 412 00:22:56,288 --> 00:22:58,290 Reverss poļu vai prefiksu notācija. 413 00:22:58,290 --> 00:23:01,412 Bet Haskell nolēma izmantot infikss operatorus. 414 00:23:01,412 --> 00:23:03,120 Tātad šie ir daži no tad pasūtījuma tie, kas 415 00:23:03,120 --> 00:23:07,770 Ir paredzētas Euterpea DSCL in Haskell. 416 00:23:07,770 --> 00:23:10,730 Tātad tas bija kārtas sastāvs. 417 00:23:10,730 --> 00:23:16,340 Šī bija paralēli kompozīcija, un šis tika truncating paralēli kompozīciju. 418 00:23:16,340 --> 00:23:18,710 Un mums būs nepieciešams, ka ar mūsu bungu mašīna, 419 00:23:18,710 --> 00:23:22,640 jo mēs izmantosim pēdējais operators ka maz Tuple tur 420 00:23:22,640 --> 00:23:26,330 spēlēt bungu mašīnu gar ar mūsu Frere Jacques dziesmu. 421 00:23:26,330 --> 00:23:28,650 Un mūsu bungu mašīna ir būs bezgalīgs. 422 00:23:28,650 --> 00:23:30,920 Tas vienkārši spēlē uz visiem laikiem. 423 00:23:30,920 --> 00:23:32,692 Bet Frere Jacques dziesma nav. 424 00:23:32,692 --> 00:23:33,510 Tas nav tik garš. 425 00:23:33,510 --> 00:23:36,610 Tas ir tikai daži bāri. 426 00:23:36,610 --> 00:23:43,030 Tāpēc mums ir nepieciešams, lai apturētu bungu mašīna kā Tiklīdz īsāks muzikālā vērtība nāk 427 00:23:43,030 --> 00:23:43,700 uz beigām. 428 00:23:43,700 --> 00:23:46,980 Un tas infixed operators ir super noderīga ar to. 429 00:23:46,980 --> 00:23:50,090 >> Un Infikss notācija tāpat Tas ir sava veida jauki, 430 00:23:50,090 --> 00:23:57,095 jo teikt, jums ir funkcija, piemēram, citāts, kas dod veselu sadalījumu 431 00:23:57,095 --> 00:24:01,010 x kaut else-- žēl, ka ir jābūt a un b. 432 00:24:01,010 --> 00:24:04,740 Jūs varētu uzrakstīt to kā citātu no b. 433 00:24:04,740 --> 00:24:09,670 Tātad, ja jūs put-- elements ir vēl viens piemērs. 434 00:24:09,670 --> 00:24:14,730 x elements kādā sarakstā, ja jūs nodot tā in Backticks, jūs varat to izmantot. 435 00:24:14,730 --> 00:24:20,400 Pat ja tas nav simbols piemēram, plus vai mīnus vai laikos, 436 00:24:20,400 --> 00:24:24,630 Jūs varat izmantot nosaukumu funkcija, piemēram, ka Backticks 437 00:24:24,630 --> 00:24:27,045 kā infikss operators, kas ir diezgan vēss. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Atkal, tas ir visi vienkārši sintaktisko cukurs, tiešām. 439 00:24:29,670 --> 00:24:32,310 Tas neietekmē kodolu valodā. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Tātad mēs redzam šeit, lai Pēdējā frāze no mūsu Frere Jacques dziesmu, 441 00:24:37,440 --> 00:24:45,740 Es spēlēju daži maz akordi vai trešdaļas izmantojot paralēlo sastāvu 442 00:24:45,740 --> 00:24:46,240 operators. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Tas ir vēl viens veids, kā pateikt dažus par to, ko mēs esam tikko saka. 445 00:24:54,950 --> 00:24:59,986 Tātad jūs varat karti funkcijas Viena argumenta pār sarakstos. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Atkal, atsauces par Haskell-- ievada mācību grāmatām 447 00:25:02,860 --> 00:25:04,680 būs tas viss tajā. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Tātad šeit ir diezgan Galvenais līnija solis sequencer 449 00:25:07,790 --> 00:25:12,820 mēs ņemšu apskatīt, izmantojot saraksts izpratne. 450 00:25:12,820 --> 00:25:17,810 Un mēs redzam šeit, ka elements fiksētā operatora muguras pēdiņām. 451 00:25:17,810 --> 00:25:23,030 Tātad, ja x ir no saraksta elements x s, tad mēs izsaukt PERC funkcijas. 452 00:25:23,030 --> 00:25:25,100 Tātad Perc ir tikai perkusijas funkcija. 453 00:25:25,100 --> 00:25:30,200 Tas aizņem dažas vērtība p, kas ir daļa, ko ierobežo kopuma visi 454 00:25:30,200 --> 00:25:35,310 dažādi sitamie skaņas ka mēs redzējām iepriekšējā slaidā, 455 00:25:35,310 --> 00:25:38,840 un tad tas dod, ka ilgums ceturkšņa piezīmi. 456 00:25:38,840 --> 00:25:43,190 Else tas dod tai QNR, un QNR ir tikai ceturtā piezīme atpūtu. 457 00:25:43,190 --> 00:25:44,970 >> Tātad šis ir veidot kaut ko jauku. 458 00:25:44,970 --> 00:25:52,110 Mums ir saraksts ar elementiem, un Mēs cilpa pār kādu sarakstu no viena 459 00:25:52,110 --> 00:25:54,540 uz max vērtību mūsu solis sequencer. 460 00:25:54,540 --> 00:25:58,290 Un, kad mēs esam pie konkrētā i ka saraksts viens uz max vērtību, 461 00:25:58,290 --> 00:26:02,970 ja tas man ir biedrs šis komplekts izveidots šo funkciju, 462 00:26:02,970 --> 00:26:06,040 labi, tad mēs savukārt to par percussion piezīmi. 463 00:26:06,040 --> 00:26:10,960 Pretējā gadījumā mēs vienkārši spēlēt atpūtu, kas Proti, mēs vienkārši klusēt. 464 00:26:10,960 --> 00:26:16,050 Un mēs varam redzēt šeit, ka šis saraksts izpratne sintakse, 465 00:26:16,050 --> 00:26:20,030 x valda šis saraksts konstruēta viena 466 00:26:20,030 --> 00:26:22,462 uz globālo lielumu sequencer. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Jā. 468 00:26:23,295 --> 00:26:26,340 Pamata sintakse saraksts comprehensions ir 469 00:26:26,340 --> 00:26:30,810 kronšteins, vērtība iesaistot daži mainīgie, bārs, 470 00:26:30,810 --> 00:26:34,260 iespējamās vērtības mainīgajiem paši, slēgta kronšteinu. 471 00:26:34,260 --> 00:26:38,545 Un, ja jūs esat darījuši kas celtnieks notācija jebkura veida matemātikas klasē, 472 00:26:38,545 --> 00:26:45,999 Jums varētu būt noteikti 2n piemēram ka n ir vai n ir ar z. 473 00:26:45,999 --> 00:26:48,290 Līdzīgi thing-- Šajā apzīmējumā ir domāts, lai būtu ierosinošs 474 00:26:48,290 --> 00:26:49,630 Minētās matemātisko papildinājumiem. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: Un jūs varat izmato vairākas predikātu 476 00:26:51,880 --> 00:26:56,250 un vairākus filtrus sarakstā izpratne, kas ir diezgan jauki. 477 00:26:56,250 --> 00:27:01,800 Algebrisko types-- mums nebūs kavēties ilgi šeit. 478 00:27:01,800 --> 00:27:04,840 Tur nav labs jēdziens Haskell vai labs, skaidrs jēdziens 479 00:27:04,840 --> 00:27:10,720 par to, kā veikt, teiksim, noklusējuma parametrs līdz funkcijai vai kaut ko. 480 00:27:10,720 --> 00:27:13,370 Python, tas ir diezgan viegli. 481 00:27:13,370 --> 00:27:18,460 Jūs varat vienkārši pateikt ar vienāds par deklarācija funkcijas, 482 00:27:18,460 --> 00:27:21,420 noklusējuma vērtība lieta neviens nav piegādāta. 483 00:27:21,420 --> 00:27:27,010 >> In Haskell, jūs varētu varbūt izmantot varbūt varbūt rakstīt, 484 00:27:27,010 --> 00:27:32,190 kas notiek vai nu neko vai vērtība tipa tikai. 485 00:27:32,190 --> 00:27:38,630 Tātad mēs izmantot šo ar bungu mašīna lai ļautu mums, lai sniegtu papildu apjomu 486 00:27:38,630 --> 00:27:40,730 parametrus, lai katru no drum daļām. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Tā, ka dod mums ceļu, kam EQ vai apjoma par konkrētu kanālu. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: In citi Haskell piemēri, 490 00:27:56,440 --> 00:28:00,450 Jūs varētu redzēt varbūt izmantots funkcijas, kas varētu neizdoties. 491 00:28:00,450 --> 00:28:03,470 Tas ir kopīgs viens. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: Un jūs varat piegādāt dažas kļūdas ziņojuma veida kā noklusējuma. 493 00:28:07,010 --> 00:28:11,020 Un tas ir īpaši ērts, ja jūs darāt I / O Haskell. 494 00:28:11,020 --> 00:28:12,044 Kas var būt trikiem. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: vai par Līdzīgs piemērs, domāju, ka 496 00:28:13,960 --> 00:28:17,460 par funkciju, kas ietver sadalījumu no parametra, kas varētu būt 0. 497 00:28:17,460 --> 00:28:20,020 Un šī funkcija varētu atgriezties varbūt kāds. 498 00:28:20,020 --> 00:28:22,802 Tātad, ja tur nav dalījums pa 0, tas atgriezīsies tikai neatkarīgi. 499 00:28:22,802 --> 00:28:25,010 Un, ja ir sadalījums pa 0, tas atgriezīsies neko 500 00:28:25,010 --> 00:28:26,910 kā veids, signalizācijas kļūdu. 501 00:28:26,910 --> 00:28:30,330 Jo viens sekas Haskell ir ļoti stingra mašīnrakstīšanas 502 00:28:30,330 --> 00:28:34,100 ir tā, ka tur nav real-- Izņēmumi ir neērts, būtībā, 503 00:28:34,100 --> 00:28:36,160 kļūdu apstrādi ir neērts. 504 00:28:36,160 --> 00:28:39,440 Un tas ir viens ļoti kopīgs veids, kā darīt to. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Tāpēc tagad mēs citam prāta saliekuma lieta 506 00:28:42,990 --> 00:28:49,160 par Haskell, kas ir modelis saskaņošanas un funkciju definīcijas. 507 00:28:49,160 --> 00:28:53,390 Es parādīja jums pēdējā Bīdiet deklarācija solis secība 508 00:28:53,390 --> 00:28:58,170 funkcija, kas paņēma varbūt vērtību, tad int, tad saraksts ints, 509 00:28:58,170 --> 00:29:03,850 tad atgriež secība mūzikas vērtībām tur atzīmes 510 00:29:03,850 --> 00:29:05,375 gan ar piķi un apjoma. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Tātad šie trīs argumenti var būt modelis saskaņota šādā veidā. 513 00:29:11,820 --> 00:29:16,660 Un mēs vienmēr vēlamies būt pārliecināti, lai do bāzes lietu vai izceļošanas gadījumā vispirms. 514 00:29:16,660 --> 00:29:19,690 Un šie pasvītras var vienkārši tikt interpretēts 515 00:29:19,690 --> 00:29:22,340 nozīmē jebkuru vērtību, kas ir tur. 516 00:29:22,340 --> 00:29:26,580 Tātad, ja mēs iegūtu aicinājumu pastiprināt secību ar kādu vērtību, kāda cita vērtība, 517 00:29:26,580 --> 00:29:32,210 un tad tukša saraksts, ko mēs gribam atgriezt ir tikai klusums, atpūtas 0. 518 00:29:32,210 --> 00:29:35,110 >> Un tā vietā, lai ir tukša saraksts vai 0, 519 00:29:35,110 --> 00:29:38,150 tā ir atpūta 0, jo mēs esam nodarbojas ar mūzikas veidu, 520 00:29:38,150 --> 00:29:43,230 un tukšs saraksts no mūzikas tips ir tikai pārējā nav ilguma. 521 00:29:43,230 --> 00:29:45,680 Tas nav mūzika. 522 00:29:45,680 --> 00:29:51,460 Un tad mēs redzam, ja mēs iegūtu soli secība ar v skaļuma argumentu, 523 00:29:51,460 --> 00:29:57,290 p par piesardzības instrumentam arguments, un tad saraksts krustiņus. 524 00:29:57,290 --> 00:29:58,360 >> Tad mēs daži sīkumi. 525 00:29:58,360 --> 00:30:01,290 It īpaši, mēs piemērot šis saraksts izpratne, 526 00:30:01,290 --> 00:30:05,700 un mēs veiktu dažus operācijas ar varbūt vērtību 527 00:30:05,700 --> 00:30:10,050 to pārvērst skaitlisko vērtību tā, ka tas varētu būt tad uzskaitītas un izmantotas 528 00:30:10,050 --> 00:30:12,300 lai izvēlētos instrumentu. 529 00:30:12,300 --> 00:30:16,730 Atkal, tas ir maz bit apzināti inconcise 530 00:30:16,730 --> 00:30:20,580 tikai, lai parādītu visus dīvaini lietas jūs varat darīt, Haskell, kā jūs 531 00:30:20,580 --> 00:30:23,170 to apskatīt to par savu laiku. 532 00:30:23,170 --> 00:30:23,802 >> Viss kārtībā. 533 00:30:23,802 --> 00:30:26,010 Tātad mēs esam beidzot kļūst darīt to, ko mēs noteikti, lai darīt, 534 00:30:26,010 --> 00:30:28,820 kas ir veikt dažas datora mūziku. 535 00:30:28,820 --> 00:30:32,250 Tātad mēs ejam, lai mēģinātu padarīt Frere Žaks dziesmu. 536 00:30:32,250 --> 00:30:35,220 Tātad tur ir, cik daudz frāzes FRERE 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 Liels. 540 00:30:40,460 --> 00:30:42,490 Un, kas ir jauki, ir tas, ka viņi visi atkārtoja 541 00:30:42,490 --> 00:30:46,990 tikpat daudz reizes, kas ir divi. 542 00:30:46,990 --> 00:30:50,730 >> Tāpēc mums ir četras frāzes katrs atkārto divas reizes. 543 00:30:50,730 --> 00:30:53,590 Un jo īpaši, viņi tādā kārtā. 544 00:30:53,590 --> 00:30:55,340 Un tur ir daudz, daudzi veidi, lai īstenotu 545 00:30:55,340 --> 00:30:57,520 apaļas, kas varētu būt jautri darīt. 546 00:30:57,520 --> 00:31:00,260 Es esmu darījusi to tādā diezgan vienkāršs veids šeit, 547 00:31:00,260 --> 00:31:05,760 kas ir tikai construct-- līniju funkcija ņem sarakstu mūzikas vērtībām 548 00:31:05,760 --> 00:31:10,390 un pārvērš to secīgu sastāvā piemērojot šo secīgo sastāvs 549 00:31:10,390 --> 00:31:13,000 operators. 550 00:31:13,000 --> 00:31:19,540 >> Un tad es aizkavēt dažādās daļas padarot tos sākt ar atpūtu. 551 00:31:19,540 --> 00:31:22,770 Tāpēc es sāktu ar pārējo divu pasākumu, un tad pārējie četri pasākumiem, 552 00:31:22,770 --> 00:31:26,160 un tad pārējie seši pasākumus, un pēc tam kārta 553 00:31:26,160 --> 00:31:32,290 darbojas, kā mēs visi zinām, šo dziesmu. 554 00:31:32,290 --> 00:31:37,180 Mēs redzam divas anotācijas vai modifikācijas mūzikas vērtībām 555 00:31:37,180 --> 00:31:43,150 kas ir ietverti šajā secīgus izkārtojums mūzikas elementiem. 556 00:31:43,150 --> 00:31:44,810 Mums ir pievienotu apjomu. 557 00:31:44,810 --> 00:31:48,960 Šī ir funkcija, lai anotēt mūzika ar konkrētu tilpumu. 558 00:31:48,960 --> 00:31:51,320 Tas ir labs piemērs no MIDI signāla darbojas 559 00:31:51,320 --> 00:31:57,510 no 0 līdz 127, septiņas biti informācija, kas var veikt. 560 00:31:57,510 --> 00:32:00,650 >> Un then-- mēs redzējām, ka ir ļoti īsi, bet kopumā MIDI 561 00:32:00,650 --> 00:32:02,310 saraksts ar dažādiem instrumentiem. 562 00:32:02,310 --> 00:32:04,450 Un tur nav visai daudz no tiem. 563 00:32:04,450 --> 00:32:11,230 Ja jūs izmantojat digitālo audio darbstacijas, piemēram, Ableton Live vai Pro Tools, 564 00:32:11,230 --> 00:32:17,560 tur ir neticami plašāks klāsts no sintezatoriem un VST instrumentiem. 565 00:32:17,560 --> 00:32:21,510 Bet MIDI standarts vienīgais ir maz, vai arī vairāki desmiti. 566 00:32:21,510 --> 00:32:22,799 Un daži no tiem ir smieklīgi. 567 00:32:22,799 --> 00:32:25,840 Es domāju, ka būtu jautri, ja mēs spēlējām instruments MIDI instruments 568 00:32:25,840 --> 00:32:30,550 helikopters, un pēc tam Nākamais veids caur kārtā, 569 00:32:30,550 --> 00:32:37,980 mēs veicām spilventiņu synth, un tad, Tas ražīgs svina kvadrātveida vilnis synth, 570 00:32:37,980 --> 00:32:44,240 un pēc tam balss izdalījušos šķidrumu, kas ir Mazliet neskaidrs par manu sliktu MIDI 571 00:32:44,240 --> 00:32:46,410 sintezatoru, bet tie OK. 572 00:32:46,410 --> 00:32:50,030 >> Un tad mēs redzam šo let un sintaksi no Haskell, 573 00:32:50,030 --> 00:32:54,030 un tad mēs esam spēlē Visas šīs daļas kopā 574 00:32:54,030 --> 00:32:56,265 ar paralēlo sastāvu operators. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 Un mēs droši vien varētu parādīt dažus no šo. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Šeit ir kods. 579 00:33:08,340 --> 00:33:14,960 Un jūs varat redzēt C, ka gribētu būt no rīkles klīringa un iestatījumu daudz 580 00:33:14,960 --> 00:33:19,760 galds kods pirms jums varētu muzicēt, kā šis. 581 00:33:19,760 --> 00:33:22,080 Vai jebkuru citu programmēšanas valoda, jūs, iespējams, 582 00:33:22,080 --> 00:33:27,210 ir sadarboties ar kādu no veida bibliotēku vai API un noteikt viss uz augšu, 583 00:33:27,210 --> 00:33:28,725 un tad jūs ir sakopt. 584 00:33:28,725 --> 00:33:33,810 Bet šeit Haskell ir, es domāju, reiz jūs saņemsiet pakārt par to, neticami 585 00:33:33,810 --> 00:33:35,770 lasāma un ļoti izteiksmīga. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Tātad pastāv īstenošana no FRERE Jacques. 588 00:33:43,240 --> 00:33:43,740 Viss kārtībā. 589 00:33:43,740 --> 00:33:47,557 Tagad mēs vēlamies, lai pievienotu perkusijas, un tas ir mazliet Mesjē. 590 00:33:47,557 --> 00:33:49,015 Tātad, pieņemsim to apskatīt slaidiem. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Tik liels ideja ir padarīt ķekars sarakstos vai daļām. 593 00:34:00,540 --> 00:34:04,140 Ar šādu roll-in mašīnām, tur parasti bija aptuveni varbūt astoņi 594 00:34:04,140 --> 00:34:08,670 10 ritma vai sitamie daļām. 595 00:34:08,670 --> 00:34:10,159 Un pēc tam izmantot ķekars paņēmienus. 596 00:34:10,159 --> 00:34:14,889 Un mēs esam runājuši par these-- izmantojot locījumi, filtri, Lambda funkciju, 597 00:34:14,889 --> 00:34:19,429 samērot pār sarakstos, lai radītu vērtības kādā intervālā no 1 līdz r, r ir 16, 598 00:34:19,429 --> 00:34:20,699 vai 32 soļi sequencer. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> Un tad, ja tur ir vērtība šajā sarakstā jo mēs esam darbojas caur sequencer, 601 00:34:29,920 --> 00:34:34,190 darbojas caur to atkal un pāri, izrādās uz šo piezīmi, 602 00:34:34,190 --> 00:34:36,060 un ka paraugs tiek iedarbināts. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Šeit ir visi dažādi dīvaini veidi Man nāca klajā ar, lai radītu piezīmes. 605 00:34:47,110 --> 00:34:48,940 Izmēģiniet to savā daļēji summu. 606 00:34:48,940 --> 00:34:50,360 Tas būs skaņas atdzist. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Laiks atļauj, mēs iet caur šo. 609 00:34:54,690 --> 00:34:59,200 Bet tieši tagad, es domāju, mums ir demo, kas mums ir. 610 00:34:59,200 --> 00:35:01,380 Cerēsim, ka tas iet OK. 611 00:35:01,380 --> 00:35:02,670 >> Tātad šis ir GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 Un mēs ielādēt failu Man ir sauc song.lhs, 614 00:35:09,121 --> 00:35:10,620 kas ir fails es tikko parādīja tevi. 615 00:35:10,620 --> 00:35:11,470 Labi, lieliski. 616 00:35:11,470 --> 00:35:15,010 Kā Connor teicu iepriekš, tas apkopoti, tas tipa pārbaudīts, 617 00:35:15,010 --> 00:35:18,380 lai es varētu elpot daudz vieglāk. 618 00:35:18,380 --> 00:35:20,010 Tas nav gatavojas uzspridzināt par mani. 619 00:35:20,010 --> 00:35:22,720 >> Es tā gribu jums parādīt kaut ko noderīgu. 620 00:35:22,720 --> 00:35:25,900 Jūs varat redzēt, ka modulis piekrauts sauc 50. 621 00:35:25,900 --> 00:35:28,240 Jūs varat pārlūkot šo moduli. 622 00:35:28,240 --> 00:35:32,092 Un tas ir tik jauki par doing-- varbūt ko 623 00:35:32,092 --> 00:35:34,550 jūs darāt Haskell nav sauc programmatūras izstrāde, 624 00:35:34,550 --> 00:35:36,980 bet jūs varat darīt daudz fun stuff par savu. 625 00:35:36,980 --> 00:35:42,410 Un darbplūsma ir patiešām jauka kā salīdzinot ar daudz citās valodās, 626 00:35:42,410 --> 00:35:45,872 jo jūs varat redzēt patiešām lasāmā veidā, kas notiek. 627 00:35:45,872 --> 00:35:47,830 Tātad mēs redzam, ka mums ir Visas šīs frāzes, kas 628 00:35:47,830 --> 00:35:53,760 Ir saraksti mūzikas piķi, un tad mēs veidot tos augšup kaut ko lielāku, 629 00:35:53,760 --> 00:35:55,220 kas ir mūzikas dziesma. 630 00:35:55,220 --> 00:35:58,450 Tā ir muzikāla vienība. 631 00:35:58,450 --> 00:36:05,545 Un tad mēs varam spēlēt visu ar funkciju sauc spēlēt mūziku. 632 00:36:05,545 --> 00:36:09,040 Jūs varat redzēt, ka uz leju šeit. 633 00:36:09,040 --> 00:36:11,310 Kas ir tikai spēlēt. 634 00:36:11,310 --> 00:36:15,040 >> Es būtu say-- man nav runāt par Tas dolāra zīme, ka ir visur. 635 00:36:15,040 --> 00:36:17,980 Dollar apzīmējums ir vēl viens infiksa operators. 636 00:36:17,980 --> 00:36:22,500 Bet tas ir viszemākais prioritāte jebkura operatora, kas efektīvi 637 00:36:22,500 --> 00:36:24,960 nozīmē, ka viss par kreisi no dolāra zīmi 638 00:36:24,960 --> 00:36:28,460 un tiesības dolāra zīmi, mēs ejam, lai saņemtu jāizvērtē, pirms tā. 639 00:36:28,460 --> 00:36:31,430 Tātad, tas ir sava veida kā cits veids, kā pievienot iekavas. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: Tas būtībā funkcija sastāvs. 642 00:36:36,220 --> 00:36:40,026 Un tas nodrošina, ka jums nav have-- ja Jums ir funkcijas vai nu pusē vai infikss 643 00:36:40,026 --> 00:36:42,900 operatori abās pusēs, tie nav asociēt pāri un dot jums 644 00:36:42,900 --> 00:36:46,030 negaidīti rezultāti. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Tātad mēs can-- izmantojot, ka mēs varam zvanīt. 646 00:36:49,790 --> 00:36:51,415 Pirmkārt, mēs spēlēt to bez bungām. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Tas ir helikopters, MIDI helikopters. 649 00:37:03,170 --> 00:37:05,495 >> [Mūzikas atskaņošanai] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Tur kvadrātveida vilnis. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Balss tecēšana. 654 00:37:25,490 --> 00:37:27,630 Un jūs tiešām var iet savvaļas ar to. 655 00:37:27,630 --> 00:37:30,872 Es paņēmu diezgan vienkāršs, jo es zināju, ka man nevajadzētu nokost 656 00:37:30,872 --> 00:37:31,830 vairāk, nekā es varētu košļāt. 657 00:37:31,830 --> 00:37:36,460 Tikai glabāt to diezgan vienkārši parādīt galvenās idejas. 658 00:37:36,460 --> 00:37:39,952 Bet tad man bija, piemēram, mēs esam got pievienot dažas bungas šim. 659 00:37:39,952 --> 00:37:41,910 Tieši tāpēc, ka tas ir mazliet nesaprotama, 660 00:37:41,910 --> 00:37:45,790 un es neizmantoja Nosaukums cilindrs daļām, 661 00:37:45,790 --> 00:37:49,490 Es samērot them-- jo viņi daļa no šīs uzskaitījuma klasē, 662 00:37:49,490 --> 00:37:51,500 Es plānots tos ints. 663 00:37:51,500 --> 00:37:53,120 Viens no tiem ir, piemēram, basa bungas. 664 00:37:53,120 --> 00:37:54,370 Zero ir kā labi. 665 00:37:54,370 --> 00:37:56,000 Septiņi ir augsts cepure. 666 00:37:56,000 --> 00:38:00,920 Un noteikti šeit, kur funkcijas iegūt mazliet vairāk izlases, 667 00:38:00,920 --> 00:38:02,100 Tie ir, piemēram Conga bungas. 668 00:38:02,100 --> 00:38:08,360 >> Tātad, ja jūs domājat, ka about-- varbūt jautri veids, kā īstenot bungu mašīna 669 00:38:08,360 --> 00:38:12,830 ir izmantot ļoti sakārtotu modeļus savā basa bungas. 670 00:38:12,830 --> 00:38:17,640 Tā, piemēram, uz filtrēšanas pār saraksts ar visu, kas dod atpakaļ 671 00:38:17,640 --> 00:38:20,590 1, ja tas ir pieņemts modulis 04. 672 00:38:20,590 --> 00:38:27,190 Tāpēc man 1, 5, 9, 13, 17-- tāpēc šis ir pirmais pārspēt katra pasākuma. 673 00:38:27,190 --> 00:38:32,860 >> Un tad tas ir tas pats lieta pārvietoti vairāk nekā divos posmos. 674 00:38:32,860 --> 00:38:33,850 Tātad tas ir Netradicionālā. 675 00:38:33,850 --> 00:38:37,480 Tātad tas būtu kaut kā augstu cepuri. 676 00:38:37,480 --> 00:38:39,640 Un tad atkal, noteikti šeit, tas ir mazliet izlases, 677 00:38:39,640 --> 00:38:41,080 jo mēs darām Conga bungas. 678 00:38:41,080 --> 00:38:44,180 Un man ir daži marakasi uz leju šeit, too. 679 00:38:44,180 --> 00:38:50,280 >> Tāpēc es varētu aicināt spēlēt bungu mašīna, bet tas iet uz visiem laikiem, 680 00:38:50,280 --> 00:38:53,700 un tas varētu sākt satveršanas up viss atmiņas manā sistēmā. 681 00:38:53,700 --> 00:38:57,090 Tāpēc es saukšu šo funkciju atskaņot mūziku, kas, kā mēs redzēsim, 682 00:38:57,090 --> 00:39:02,020 izmantot truncating paralēli sastāvu spēlēt mūsu maz Frere Jacques dziesmu 683 00:39:02,020 --> 00:39:04,200 kopā ar šo dīvaini bungu mašīna. 684 00:39:04,200 --> 00:39:06,190 Tātad, pieņemsim to apskatīt. 685 00:39:06,190 --> 00:39:10,920 Un, lūdzu, uzlabot manu izkārtojums visu drum daļām. 686 00:39:10,920 --> 00:39:13,375 Nav mana specialitāte, bet es bija daudz jautrības darot to. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [Mūzikas atskaņošanai] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Tātad, protams, tas ir viss mazliet ne tik jautri 691 00:39:56,980 --> 00:40:01,100 ja mēs nevaram pārvērst to uz rezultātu varbūt to 692 00:40:01,100 --> 00:40:04,650 var interpretēt ar cilvēka izpildītājs. 693 00:40:04,650 --> 00:40:06,535 Tāpēc es ne palaist to šeit. 694 00:40:06,535 --> 00:40:07,910 Esmu jau radīts failus. 695 00:40:07,910 --> 00:40:10,280 Jūs varat redzēt, ka tur ir dot LilyPond file-- un tas 696 00:40:10,280 --> 00:40:14,500 būs mans segue pār Connor-- un dot MIDI failu, 697 00:40:14,500 --> 00:40:18,610 un dot PDF fails, kas ir tas, ko LilyPond galu galā radīt. 698 00:40:18,610 --> 00:40:23,770 >> Bet tie ir tie skripti, un es ņemšu vienkārši palaist tos ar viņu palīdzību iespējām. 699 00:40:23,770 --> 00:40:28,090 Ja jums šie izveidota un darbojas ar Euterpea, jūs varat radīt MIDI failu. 700 00:40:28,090 --> 00:40:31,160 Un tad no MIDI failu ar šo MIDI 2LY programmu, 701 00:40:31,160 --> 00:40:34,930 Jūs varat radīt Lily Dīķis failu, un tad jūs 702 00:40:34,930 --> 00:40:37,974 var radīt PDF no rezultātu. 703 00:40:37,974 --> 00:40:39,390 Un mums vajadzētu to apskatīt šo. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Tātad Connor, iespējams, parādīs jums, kā komentēt šo labāk, 706 00:40:55,140 --> 00:41:02,570 bet tas ir Frere Jacques kā ko rada mani Euterpea. 707 00:41:02,570 --> 00:41:07,300 Tas ir tikai C. es sapratu , kāda kapāt tas ir faktiski. 708 00:41:07,300 --> 00:41:11,090 Bet tas ir cauruļvads, lai kā jūs darīt ar to. 709 00:41:11,090 --> 00:41:12,950 Parunāsim vairāk par LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Paskatīsimies. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Vai jūs pieminēt Uzzināt You Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: Ak jā. 714 00:41:22,460 --> 00:41:23,480 Pārbaudiet Uzzināt Jūs Haskell. 715 00:41:23,480 --> 00:41:24,410 Tas ir resursiem. 716 00:41:24,410 --> 00:41:26,830 Tas ir, kā es sāku mācīšanās, un tas ir lieliski. 717 00:41:26,830 --> 00:41:27,580 Ne mēms mācīšanās. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Tātad tas ir tiešsaistē. 719 00:41:28,829 --> 00:41:34,760 Tātad puisis nosauca [nedzirdama] learnyouahaskell.com, bez atstarpēm. 720 00:41:34,760 --> 00:41:37,065 Gramatika ir slims. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: Tas ir Ilustrētās, too. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Tātad, kas ir LilyPond? 723 00:41:39,440 --> 00:41:42,480 Tas ir deklaratīvs programmēšana valoda mūzikas salikums. 724 00:41:42,480 --> 00:41:45,480 Tātad declarative-- jūs varat domā par lietām, piemēram, HTML, 725 00:41:45,480 --> 00:41:50,900 kur tu neesi saying-- HTML nav pateikt, cik interneta pārlūkiem būtu 726 00:41:50,900 --> 00:41:52,180 padara lapas soli pa solim. 727 00:41:52,180 --> 00:41:54,096 Tas ir vienkārši sakot ir teksta apraksts 728 00:41:54,096 --> 00:41:56,100 par to, ko jūs vēlaties, lapas izskatās. 729 00:41:56,100 --> 00:41:59,310 >> Un tad tas ir arī programma kas apkopo šo valodu, 730 00:41:59,310 --> 00:42:02,300 vai tas lasīt savu un tad faktiski dara salikums jums, 731 00:42:02,300 --> 00:42:05,570 un tas atklepo šiem brīnišķīgi meklē PDF rādītājus. 732 00:42:05,570 --> 00:42:08,250 Jūs varat arī saņemt PNG formātā vai neatkarīgi. 733 00:42:08,250 --> 00:42:10,300 Labs veids, kā domāt Tas ir pēc analoģijas 734 00:42:10,300 --> 00:42:16,620 ir tas, ka LaTeX ir veida, piemēram LillyPond, bet tikai parastā salikums. 735 00:42:16,620 --> 00:42:20,360 Tā vietā of-- tas nav WYSIWYG, ko jūs redzat 736 00:42:20,360 --> 00:42:22,960 Vai tas, kas jums, tāpat kā, teiksim Finale ir, vai Sibelius, 737 00:42:22,960 --> 00:42:27,430 vai Microsoft Word, kur jūs varat ierakstīt reālā laika un projektu lietas reālajā laikā 738 00:42:27,430 --> 00:42:31,340 un redzēt izmaiņas uzreiz. 739 00:42:31,340 --> 00:42:32,140 >> Tās pamatā ir teksts. 740 00:42:32,140 --> 00:42:35,290 Jums ir apkopot jūsu rādītāji, izmantojot atsevišķu programmu 741 00:42:35,290 --> 00:42:37,090 un izkļūt PDF vēlāk. 742 00:42:37,090 --> 00:42:43,320 Tas ir nedaudz mazāk ērts lietošanai, ja esat 743 00:42:43,320 --> 00:42:46,520 cenšos rakstīt tieši uz rezultātu, un jūs esat 744 00:42:46,520 --> 00:42:48,620 mēģinot komponēt uz datora. 745 00:42:48,620 --> 00:42:50,830 Bet ir daudz priekšrocības attiecībā uz to. 746 00:42:50,830 --> 00:42:56,110 Viens, tas izskatās daudz nicer, jo LillyPond faktiski var 747 00:42:56,110 --> 00:42:58,210 to laiku, lai darīt izkārtojums lēmumi pareizi, 748 00:42:58,210 --> 00:43:02,380 atšķirībā Sibeliusa vai Finale, kas ir padarīt apdraudēta algoritmus, lai 749 00:43:02,380 --> 00:43:05,020 ka tie var attēlot lietas reālajā laikā. 750 00:43:05,020 --> 00:43:07,660 >> Tātad, kāpēc ir LilyPond-- datorgrafika ir grūti. 751 00:43:07,660 --> 00:43:10,535 Ja jūs darāt kaut ko ar mūziku un jūs vēlaties rakstīt out punktus, 752 00:43:10,535 --> 00:43:13,900 Jūs nevēlaties, lai rakstītu ārā viss ar sevi 753 00:43:13,900 --> 00:43:19,040 sākot ar to, kā izdarīt štābu un kā to izdarīt bloknoti. 754 00:43:19,040 --> 00:43:21,020 Tas ir ļoti grūti. Tas darīts pirms tam. 755 00:43:21,020 --> 00:43:22,170 Jūs esat labi. 756 00:43:22,170 --> 00:43:26,200 >> Ja vēlaties izmantot Finale vai Sibelius, failu formāti šīm lietām 757 00:43:26,200 --> 00:43:30,180 ir ļoti sarežģīta, un jūs nevarat tiešām tos izmantot programmatiski. 758 00:43:30,180 --> 00:43:35,020 Jūs varat atvērt Sibelius ar Finale un doties uz File, Eksportēt kā PDF sevi, 759 00:43:35,020 --> 00:43:37,600 bet jūs nevarat patiešām zvanīt, ka no skriptu. 760 00:43:37,600 --> 00:43:40,440 LillyPond, jūs varat zvanīt No šiem skriptiem. 761 00:43:40,440 --> 00:43:44,397 Jūs varētu viegli atkārtot LillyPond ar lateksa. 762 00:43:44,397 --> 00:43:47,230 Man nebūs, ka daudz laika, lai dotos šajās tehnoloģijās tieši tagad, 763 00:43:47,230 --> 00:43:48,321 bet tie pastāv. 764 00:43:48,321 --> 00:43:50,070 Ja jūs vēlaties meklēt uz LillyPond grāmatā, 765 00:43:50,070 --> 00:43:53,760 Tā ir programma, kas nāk ar Jūsu LillyPond izplatīšana, 766 00:43:53,760 --> 00:43:57,030 un tas ir par atkārtojot LillyPond fragmenti lateksā 767 00:43:57,030 --> 00:44:00,340 Ja jūs vēlaties kaut ko darīt kā liels muzikoloģijā dokumentu 768 00:44:00,340 --> 00:44:02,289 ar piemēriem, piemēram. 769 00:44:02,289 --> 00:44:04,580 Un tas ir labs prasme dzīve, ja jūs darāt kaut ko 770 00:44:04,580 --> 00:44:05,770 ar mūziku, ne tikai CS50. 771 00:44:05,770 --> 00:44:09,320 Esmu izmantojis LillyPond visiem no maniem sastāva projektu 772 00:44:09,320 --> 00:44:11,880 jo man bija pamatā vecākais vidusskolā. 773 00:44:11,880 --> 00:44:13,455 >> Tātad, šeit ir daži vienkārši piemēri. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 Tas ir galvenokārt reprezentatīvs no grūtības pakāpes 776 00:44:21,060 --> 00:44:23,481 ka lielākā daļa cilvēku sejas tā viņi centās 777 00:44:23,481 --> 00:44:24,980 izmantot LilyPond vienkāršiem projektiem. 778 00:44:24,980 --> 00:44:29,519 Tas pirmais ir sākums uz korālis prelūdija ar Baha. 779 00:44:29,519 --> 00:44:31,810 Tas dibens viens ir izvilkums no viena no manām darbiem, 780 00:44:31,810 --> 00:44:34,650 un tas ir tikai tur, lai parādītu jums lietas, piemēram, [nedzirdama] 781 00:44:34,650 --> 00:44:38,550 liekot vairākas līnijas pats personāls, kā lirisks undersetting darbi. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Lyric segumi ir lieta, kas ir ļoti viegli lietot LilyPond par kora mūziku. 784 00:44:46,110 --> 00:44:48,814 >> Un tā tad tur ir dažas vairāk sarežģītu piemēri šeit. 785 00:44:48,814 --> 00:44:50,980 Visi šie ir darīts LilyPond un viņi iespējams. 786 00:44:50,980 --> 00:44:55,280 Šis pirmais fragments no [Dzirdams] līdz [nedzirdama]. 787 00:44:55,280 --> 00:44:58,860 Un tas [nedzirdama] no gabals solo bass 788 00:44:58,860 --> 00:45:03,550 flauta ar [nedzirdama] kurš ir kurš longtime-- 789 00:45:03,550 --> 00:45:07,101 bija ilggadējais loceklis, Mūzikas nodaļa šeit, es domāju. 790 00:45:07,101 --> 00:45:08,600 Es neesmu pārliecināts, kur viņš ir aizgājis off. 791 00:45:08,600 --> 00:45:12,410 Bet viņš bija konsultants no Harvard Komponisti Asociācija uz ilgu laiku. 792 00:45:12,410 --> 00:45:13,530 Wonderful cilvēks. 793 00:45:13,530 --> 00:45:16,920 Un viņš raksta kādu mūziku, kas ir ļoti sarežģīts notācija ka LillyPond 794 00:45:16,920 --> 00:45:20,500 tomēr var rīkoties ļoti labi. 795 00:45:20,500 --> 00:45:26,030 >> Tik vienkārši, lai dotu jums sajūtu par to, kas Šī lieta ir iespējas are-- tik 796 00:45:26,030 --> 00:45:28,960 iekšējās no LillyPond ir ļoti sarežģīti. 797 00:45:28,960 --> 00:45:31,060 Un jūs varat to izmantot, lai ilgu laiku, tai skaitā 798 00:45:31,060 --> 00:45:32,520 dažiem diezgan sarežģīti lietas, bez tiešām 799 00:45:32,520 --> 00:45:34,060 kam jāzina daudz par tiem. 800 00:45:34,060 --> 00:45:38,720 Bet pamatideja ir tāda, ka uz zemākais līmenis, atomi LillyPonds 801 00:45:38,720 --> 00:45:39,970 ir piezīmes. 802 00:45:39,970 --> 00:45:42,761 Šīs piezīmes ir iekļauts jauns konteksts sauc par balsis. 803 00:45:42,761 --> 00:45:44,510 Tātad balss kontekstā būtībā atbilst 804 00:45:44,510 --> 00:45:47,410 uz vienas līnijas daudzbalsības. 805 00:45:47,410 --> 00:45:49,410 Un tad konteksts var būt ietverti hierarhiski 806 00:45:49,410 --> 00:45:53,590 augstāka līmeņa uzņēmumiem, kas pārstāvēt štābu par rezultātu 807 00:45:53,590 --> 00:45:56,750 vai lielākas grupas, piemēram, klavieres personāls vai koris štābu, 808 00:45:56,750 --> 00:45:58,990 un tad beidzot Visa rādītājs kontekstos. 809 00:45:58,990 --> 00:46:02,260 Un jūs faktiski var ietvert vairāki rādītāji grāmatā. 810 00:46:02,260 --> 00:46:05,770 >> Un katrs konteksts has a skaits pievienoto gravieri. 811 00:46:05,770 --> 00:46:08,340 Ja jūs meklēt, izmantojot saturs kontekstā 812 00:46:08,340 --> 00:46:14,410 un izdrukāt noteiktu simbolu vai noteiktu klasi simboliem nepieciešams. 813 00:46:14,410 --> 00:46:17,840 Tātad katram balss kontekstā tur ir [nedzirdama] piezīmes 814 00:46:17,840 --> 00:46:24,270 graviera kas ir būtībā funkcija vai objekts, kas raksta no visu piezīmi 815 00:46:24,270 --> 00:46:26,290 galvas labajā pusē, daļām lapā. 816 00:46:26,290 --> 00:46:29,510 Tad tur ir plaisa graviera, kas raksta ārā šķeltņu uz darbiniekiem. 817 00:46:29,510 --> 00:46:31,517 Tad tur ir metronoms zīme graviera ka 818 00:46:31,517 --> 00:46:33,100 raksta ārā metronoms zīmes rezultātu. 819 00:46:33,100 --> 00:46:36,410 Un visi šie fit diezgan arī vērā hierarhijā. 820 00:46:36,410 --> 00:46:39,500 Un tas ir ļoti, ļoti, ļoti pielāgojamas, kas jums ir nepieciešams 821 00:46:39,500 --> 00:46:42,880 ja jūs vēlaties, lai iegūtu lietas, piemēram, ka. 822 00:46:42,880 --> 00:46:45,730 >> Tātad visi konteksti have a Dažādu atribūtiem daudz 823 00:46:45,730 --> 00:46:52,410 ka jūs varat mainīt visu, no atstatuma dažādiem fonts 824 00:46:52,410 --> 00:46:54,942 atlase uz izmēriem lietām. 825 00:46:54,942 --> 00:46:56,900 Ja jūs vēlaties darīt pat sarežģītāka lietas, 826 00:46:56,900 --> 00:46:59,210 tur ir iestrādāta skriptu valoda. 827 00:46:59,210 --> 00:47:01,820 Viņi izmanto shēmu, kas ir dialekts LISP. 828 00:47:01,820 --> 00:47:04,960 Tie, iespējams, nav nozīmē kaut ko jums. 829 00:47:04,960 --> 00:47:06,900 Bet būtībā, shēma cits funkcionāls 830 00:47:06,900 --> 00:47:09,500 programmēšanas valoda, vairāk vai mazāk. 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: Jā. 833 00:47:12,690 --> 00:47:15,390 Tā ir laba tie-in, man domāt. 834 00:47:15,390 --> 00:47:20,150 Un tas ir izmantots kā mācību valodu, tiešām, uz leju masu Ave. MIT. 835 00:47:20,150 --> 00:47:26,590 Un tas ir ļoti ērts, lai LillyPond dažādu tehnisku iemeslu dēļ. 836 00:47:26,590 --> 00:47:30,317 >> Un tā, ja jūs vēlaties, lai vienkārši tweaks atkarīgi conditionals, 837 00:47:30,317 --> 00:47:32,900 par example-- tur ir zināma nosacījums partitūru, kas ir izpildīti, 838 00:47:32,900 --> 00:47:36,495 veikt izmaiņas uz Pirmās izkārtojums vai whatnot-- tad 839 00:47:36,495 --> 00:47:37,620 šie objekti ir tur. 840 00:47:37,620 --> 00:47:38,667 Viņi sarežģīta. 841 00:47:38,667 --> 00:47:40,250 Tātad, šeit ir diezgan vienkāršs koda paraugs. 842 00:47:40,250 --> 00:47:43,810 Tas ir piecas līnijas. 843 00:47:43,810 --> 00:47:46,120 Būtībā, es esmu nosakot divus štābiem. 844 00:47:46,120 --> 00:47:46,904 Tas ir 3/4. 845 00:47:46,904 --> 00:47:48,695 Pirmais darbinieki ir pievienots tempo zīme, 846 00:47:48,695 --> 00:47:51,110 bet kas patiesībā notiek doties uz visu rezultātu, 847 00:47:51,110 --> 00:47:54,960 tāpēc tempo zīmēm ir uz neizšķirts. 848 00:47:54,960 --> 00:47:59,044 Metronoms zīme graviera ir pievienots vārtus kontekstu. 849 00:47:59,044 --> 00:48:01,460 Ir dažādi taustiņi, jo [nedzirdama] graviera 850 00:48:01,460 --> 00:48:02,710 tiek pievienoti štābiem. 851 00:48:02,710 --> 00:48:04,441 Jūs faktiski var darīt, ir. 852 00:48:04,441 --> 00:48:06,190 Paraugs es uzrakstīju ir faktiski mažorā, 853 00:48:06,190 --> 00:48:07,990 bet tas ir tikai, lai pierādītu, jūs varat būt 854 00:48:07,990 --> 00:48:09,570 dažādi taustiņi dažādās štābu. 855 00:48:09,570 --> 00:48:15,710 Un pamata sintakse ir jums rakstīt ņemiet vērā vārdus, E, F, G, neatkarīgi. 856 00:48:15,710 --> 00:48:18,910 Ja jūs vēlaties darīt accidentals, Jūs piedēklis vai ES. 857 00:48:18,910 --> 00:48:22,640 Tas ir no holandiešu musicological konvencijām. 858 00:48:22,640 --> 00:48:28,290 >> Un darīt oktāvu lēcieniem, jums ir izmantot šie ērču zīmes, komatu vai apostrofu. 859 00:48:28,290 --> 00:48:30,580 Relatīvais tikai nozīmē kāds jums ir piezīmi, 860 00:48:30,580 --> 00:48:34,080 tas automātiski tiks plaec In oktāvas vistuvāk iepriekšējo. 861 00:48:34,080 --> 00:48:37,624 Un, ja jūs vēlaties, lai pārietu vairāk nekā fifth-- teikt piekto vai more-- 862 00:48:37,624 --> 00:48:39,165 tad jums ir izmantot [nedzirdama]. 863 00:48:39,165 --> 00:48:42,580 Bet citādi, jums nav precizēt oktāvu par katru piezīmi. 864 00:48:42,580 --> 00:48:46,130 >> Un relatīvais C, prime, un C, jūs vienkārši norādīt vidējā C 865 00:48:46,130 --> 00:48:48,630 un bāzes C, sevišķi pirmās piezīmes. 866 00:48:48,630 --> 00:48:55,020 Tad jums ir šīs štābu, kas organizē šīs divas balsis vai paraugus mūziku, 867 00:48:55,020 --> 00:48:56,730 un jums ir rezultāts. 868 00:48:56,730 --> 00:48:58,440 Un tas izskatās šādi. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Ja jūs vēlaties, lai ņemtu laiku, lai kopēt, ka paraugu LillyPond 871 00:49:05,380 --> 00:49:07,530 kods uz iepriekšējā slaidu uz leju šeit, un jūs 872 00:49:07,530 --> 00:49:09,030 var rakstīt to LillyPond sevi. 873 00:49:09,030 --> 00:49:11,280 Es zinu, ka mēs esam ieguvuši kaut ko kas izskatās daudz, kā šis. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Tātad tur ir cita tehnoloģija sauc Music XML uzturēta 876 00:49:19,610 --> 00:49:22,030 ko pilnīgi dažādi cilvēki. 877 00:49:22,030 --> 00:49:28,150 XML ir teksta datus structure-- I nedrīkst teikt dati structure-- teikt 878 00:49:28,150 --> 00:49:29,580 metafora karte veida. 879 00:49:29,580 --> 00:49:33,800 Un tas ir konstruētas, lai noturētu hierarhiskās dati ļoti labi. 880 00:49:33,800 --> 00:49:37,050 HTML, piemēram, ir veids XML. 881 00:49:37,050 --> 00:49:41,090 Un jūs varat pateikt, XML, jo tie bija visas leņķa iekavas un leņķis 882 00:49:41,090 --> 00:49:44,700 kronšteins slīpsvītra zīmes ka šovs datu lauki. 883 00:49:44,700 --> 00:49:47,390 >> Man nav kodu Piemērs no mūzikas XML. 884 00:49:47,390 --> 00:49:50,450 Jūs varat atrast to pats. 885 00:49:50,450 --> 00:49:53,735 Būtībā, iemesls, jūs varētu vēlēties lietot XML kā starpstāvokļa 886 00:49:53,735 --> 00:49:55,980 ir, pirmkārt, tas ir savstarpējas apmaiņas formāts 887 00:49:55,980 --> 00:50:02,301 jo būtībā every-- es neteikšu katrs, bet daudz dažādu rezultātu 888 00:50:02,301 --> 00:50:02,800 rakstnieki. 889 00:50:02,800 --> 00:50:04,966 Tātad, ja jūs rakstīt Mūzika XML, ne tikai var LillyPond 890 00:50:04,966 --> 00:50:08,080 lasīt to ar palīdzību šo auxilary programmu, ko sauc Music XML LY, 891 00:50:08,080 --> 00:50:11,360 bet arī Finale var izlasīt tas, Sibelius var izlasīt. 892 00:50:11,360 --> 00:50:14,770 Atkarībā no jūsu iekšējā objekta hierarhija darbi pārstāv mūziku, 893 00:50:14,770 --> 00:50:18,820 tas varētu būt vieglāk rakstīt uz mūzikas XML nekā LillyPond 894 00:50:18,820 --> 00:50:22,410 un tikai paļauties uz Music XML to LY darīt konversiju. 895 00:50:22,410 --> 00:50:24,282 >> Es nedomāju, ka [dzirdams] ir mūzika XML. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: Tā nav. 897 00:50:25,490 --> 00:50:26,340 Kāds strādā pie tā, lai gan. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Euterpea nav Mūzikas XML izejas funkcija vēl. 900 00:50:31,040 --> 00:50:35,340 Ja vēlaties galīgo projekta ideju, varbūt sazināties ar puišiem 901 00:50:35,340 --> 00:50:38,620 ka Stephen zina, un viņi varētu izmantot jūsu palīdzību. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Es mīlu to. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Arī, būtībā, ik programmēšanas valodas 904 00:50:43,450 --> 00:50:46,610 ka ir vērts tās sāls jau ir XML bibliotēka, 905 00:50:46,610 --> 00:50:51,030 lai jūs varētu iekšēji pārvērst visu Jūsu mūziku kādu objektu 906 00:50:51,030 --> 00:50:54,120 ka XML bibliotēka var uzrakstīt , ka būtu nepieciešams mazāk 907 00:50:54,120 --> 00:50:57,470 Izmaiņas savu iekšējo struktūru kāda mūzika objektus, kurus 908 00:50:57,470 --> 00:51:00,310 gribu rakstīt par to rakstīt tieši LillyPond būtu. 909 00:51:00,310 --> 00:51:04,380 Tad vienkārši izdrukāt to ārā ar XML ar XML bibliotēkas jūsu valodā, 910 00:51:04,380 --> 00:51:07,260 kas garantēs, ka tas ir sintaktiski pareiza un viss, 911 00:51:07,260 --> 00:51:08,720 un tad konvertēt to uz LillyPond. 912 00:51:08,720 --> 00:51:11,060 Tātad tehnoloģija jūs varētu vēlēties, lai ieskatīties, ja jūs darāt kaut ko 913 00:51:11,060 --> 00:51:11,650 kā šis. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Dzirdams], cits auxilarry tehnoloģija. 916 00:51:16,370 --> 00:51:21,700 Tas ir galvenokārt Tech Works vai Tech Studio LillyPond. 917 00:51:21,700 --> 00:51:25,380 Tātad tas piedāvā palīdzību ar sintakse, ar veidnes 918 00:51:25,380 --> 00:51:28,770 par dažādiem kopējā kombinācijas instrumentu. 919 00:51:28,770 --> 00:51:32,780 Tas ļauj split ekrāna skatīšanās tik Jums var būt jūsu kodu vienā logā 920 00:51:32,780 --> 00:51:37,350 un PDF citā logā un noklikšķiniet uz vietām PDF 921 00:51:37,350 --> 00:51:40,650 lai pārietu uz attiecīgo plankumi jūsu avota kodu. 922 00:51:40,650 --> 00:51:45,330 Tas ir vairāk noderīgs, ja jūs patiešām rakstīšana LillyPond failus sevi 923 00:51:45,330 --> 00:51:47,400 nekā tad, ja jūs esat radot tos programmiski. 924 00:51:47,400 --> 00:51:51,230 Bet atkal, tas ir kaut kas noderīgi, lai būtu. 925 00:51:51,230 --> 00:51:51,970 >> Liels. 926 00:51:51,970 --> 00:51:55,860 Vēl resources-- Es ņemšu tikai iet caur šo ļoti ātri. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond ir lielisks dokumentāciju savā tīmekļa vietnē. 928 00:52:01,270 --> 00:52:02,270 Viņi ir apmācība. 929 00:52:02,270 --> 00:52:03,478 Viņi ir sintakses atsauces. 930 00:52:03,478 --> 00:52:07,010 Tie ir simtiem fragmentus dažādām mazām lietām 931 00:52:07,010 --> 00:52:09,930 yo var būt nepieciešams darīt, lai pierādītu dažādas iespējas. 932 00:52:09,930 --> 00:52:12,250 Ja vēlaties izmantot skriptu valoda 933 00:52:12,250 --> 00:52:14,740 vai padarīt plašāku pielāgojumi, tad tur ir 934 00:52:14,740 --> 00:52:16,730 iekšējās atsauces šajā URL. 935 00:52:16,730 --> 00:52:21,950 Ja vēlaties izmantot Music XML, tur ir ka URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> Un tad, ja jums ir nepieciešams, lai uzzinātu shēmu jo jūs tiešām vēlaties izmantot 937 00:52:27,960 --> 00:52:30,960 skriptu atvieglojumus LillyPond, tad tur ir [nedzirdama] aicināja 938 00:52:30,960 --> 00:52:32,918 Strukturētais Interpretācija datorprogrammu, 939 00:52:32,918 --> 00:52:35,820 kas ir ne tikai otrā lielākais CS mācību grāmata jebkad written-- 940 00:52:35,820 --> 00:52:39,770 atrast mani pēc tam, ja jūs vēlaties zināt tas, ko es domāju, ka vislielāko vienu is-- 941 00:52:39,770 --> 00:52:43,580 bet tas ir arī ļoti labs ievads valodas pareizas. 942 00:52:43,580 --> 00:52:46,630 Jums nav nepieciešams vairāk nekā pirmais pāris posmi. 943 00:52:46,630 --> 00:52:47,827 >> Un tas arī viss. 944 00:52:47,827 --> 00:52:48,410 Kādi jautājumi? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> STUDENT: Kur es varu lejupielādēt Jūsu radīts Frere Jacques 947 00:52:57,972 --> 00:53:01,050 lai es varētu nodot to uz manu iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Nu, jūs varat rakstīt out zināmā wav failu Euterpea. 949 00:53:07,574 --> 00:53:08,490 Un jums ir kodu. 950 00:53:08,490 --> 00:53:10,000 Tas ir par GitHub. 951 00:53:10,000 --> 00:53:15,590 Padariet savu variācijas Frere Jacques ar CS50 stropu prātā. 952 00:53:15,590 --> 00:53:17,095 Tas būtu lieliski. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Kāds cits? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Mums ir nepieciešams labāks bass bungas, too. 955 00:53:20,261 --> 00:53:21,935 Tas ir patiešām slikti. 956 00:53:21,935 --> 00:53:26,565 >> STUDENT: Euterpea ir ne tikai sastāvu pusē, bet signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Jā. 958 00:53:27,440 --> 00:53:30,100 Patiesībā darbs I darīja Euterpea kad es 959 00:53:30,100 --> 00:53:33,450 ņēma this-- tur ir absolvents kursu Yale ka 960 00:53:33,450 --> 00:53:35,900 izmanto it-- bija skaņas sintēzi. 961 00:53:35,900 --> 00:53:39,810 Tātad tur ir patiešām jauks veids, kā, izmantojot bultas 962 00:53:39,810 --> 00:53:46,150 un daži mēs redzējām no notācija komponēšanu kopā signālu funkcijas. 963 00:53:46,150 --> 00:53:50,610 Jo īpaši, bass visvairāk no tiem ir tikai vienkāršs sine wave. 964 00:53:50,610 --> 00:53:54,240 Bet, ja jūs sākat rakstīt tiem dīvaini programmatisko veidos, 965 00:53:54,240 --> 00:54:00,010 jūs varat saņemt traks skaņu efekti, piemēram, dīvaini kaskādēm. 966 00:54:00,010 --> 00:54:04,640 Jūs varat izveidot ļoti graudaini skaņas ar daudz modulācijas. 967 00:54:04,640 --> 00:54:07,730 >> I did projektu par granulu sintēze, kas ir 968 00:54:07,730 --> 00:54:12,290 kaut kur starp FM un paraugu ņemšanu. 969 00:54:12,290 --> 00:54:15,230 Tu ņem ļoti mazs, maz paraugi, un pēc tam 970 00:54:15,230 --> 00:54:20,440 kombinēt tos ar kaut kāda veida modulators un veidot bagātāku skaņu. 971 00:54:20,440 --> 00:54:24,900 Mēs arī fizisko modelēšana, tāpēc cenšas domāt par fiziku 972 00:54:24,900 --> 00:54:29,410 un psychoacoustics par kaut ko līdzīgu trompete, un domāt par to, kā 973 00:54:29,410 --> 00:54:32,320 skaņa ir veselīgs off zvans no trompete 974 00:54:32,320 --> 00:54:35,200 un akustikai telpu un modelēšana 975 00:54:35,200 --> 00:54:40,195 ka ar pamata oscilatoriem. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Paldies tik daudz. 978 00:54:48,940 --> 00:54:50,140 Paldies, ka atnācāt. 979 00:54:50,140 --> 00:54:52,400 Un es esmu vienmēr gatavs ņemt jautājumus ar 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: Jā. 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