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 Rwy'n Connor Harris. 4 00:00:06,820 --> 00:00:09,729 Rwy'n CA CS50 yn Harvard. 5 00:00:09,729 --> 00:00:11,270 STEPHEN KREWSON: Rwy'n Stephen Krewson. 6 00:00:11,270 --> 00:00:12,582 Rwy'n TF ar gyfer CS50 yn Iâl. 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: Ac rydym yn mynd i siarad am rai technolegau sydd gallech chi 8 00:00:15,790 --> 00:00:18,880 eisiau ei ddefnyddio os oes gennych ddiddordeb mewn gwneud prosiect terfynol neu 'n sylweddol 9 00:00:18,880 --> 00:00:20,920 unrhyw beth sydd â cherddoriaeth. 10 00:00:20,920 --> 00:00:24,400 Rydym yn mynd i fod yn canolbwyntio ar sail y cyntaf iaith raglennu a elwir yn Haskell. 11 00:00:24,400 --> 00:00:26,280 Mae'n swyddogaethol iaith, felly mae'r patrwm 12 00:00:26,280 --> 00:00:29,620 yn wahanol iawn i C neu PHP neu ieithoedd hanfodol eraill 13 00:00:29,620 --> 00:00:33,450 eich bod wedi ei ddefnyddio yn barod, ac yn enwedig ar llyfrgell ysgrifennwyd yn Haskell 14 00:00:33,450 --> 00:00:40,240 Gelwir Euterpea, sy'n gallu helpu pobl gydag ysgrifennu cerddoriaeth swyddogaethol, 15 00:00:40,240 --> 00:00:40,780 yn y bôn. 16 00:00:40,780 --> 00:00:43,400 A bydd Stephen yn cerdded i chi drwy enghraifft wych o hynny. 17 00:00:43,400 --> 00:00:46,423 >> Ar ôl hyn, 'n annhymerus' yn eich cyflwyno i rywbeth o'r enw LillyPond, a oedd yn 18 00:00:46,423 --> 00:00:48,370 yn dechnoleg ar gyfer cerddoriaeth cysodi. 19 00:00:48,370 --> 00:00:50,830 Mae'n fath o fel LaTeX ar gyfer cerddoriaeth os unrhyw un ohonoch 20 00:00:50,830 --> 00:00:57,530 wedi defnyddio LaTeX ar gyfer dosbarthiadau mathemateg neu dosbarthiadau P set arall neu beth sydd gennych. 21 00:00:57,530 --> 00:01:00,440 Ac felly byddaf yn rhoi i chi, unwaith eto, rhai enghreifftiau syml o hynny 22 00:01:00,440 --> 00:01:03,640 ac yn pwyntio chi yn y gyffredinol cyfeiriad rhai adnoddau yn well. 23 00:01:03,640 --> 00:01:04,319 >> STEPHEN KREWSON: Yn Hefyd, rydym yn meddwl ei 24 00:01:04,319 --> 00:01:06,720 byddai'n cŵl i sefydlu ychydig o awgrymiadau 25 00:01:06,720 --> 00:01:10,780 tuag biblinell rhwng A gynhyrchir gan Euterpea ffeiliau MIDI 26 00:01:10,780 --> 00:01:13,910 yn LillyPond, felly rydym yn darparu rhywfaint o gyfarwyddyd ar sgriptiau 27 00:01:13,910 --> 00:01:16,310 i wneud hynny sy'n cael eu darparu gyda LillyPond 28 00:01:16,310 --> 00:01:19,160 dim ond i'w chadw ffynhonnell agored a chael biblinell yn mynd. 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: Unwaith eto, dylem bwysleisio, 30 00:01:20,910 --> 00:01:23,100 y ddau technolegau, yr ydych Nid oes rhaid eu defnyddio gyda'i gilydd. 31 00:01:23,100 --> 00:01:25,370 Nid ydynt yn cynllunio i weithio gyda'i gilydd, er eu bod yn gwneud iawn 'n glws. 32 00:01:25,370 --> 00:01:26,362 >> STEPHEN KREWSON: Iawn. 33 00:01:26,362 --> 00:01:30,116 Ac yn hollol rhad ac am ddim. 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: Felly cydnabyddiaethau, newydd ddarllen hynny. 35 00:01:32,240 --> 00:01:33,406 Nododd y bo'n briodol: STEPHEN KREWSON. 36 00:01:33,406 --> 00:01:36,360 Diolch i Folks hynny. 37 00:01:36,360 --> 00:01:39,180 Mae hyn yn 'n annhymerus' lechu ar ddim ond am eiliad. 38 00:01:39,180 --> 00:01:41,560 Mae'r broses gosod yn ychydig yn anodd. 39 00:01:41,560 --> 00:01:45,420 Rydym wedi yn fy ddarllen ar y GitHub y gallwch fwrw golwg ar. 40 00:01:45,420 --> 00:01:47,840 Dim ond e-bost ataf os oes gennych unrhyw gwestiynau. 41 00:01:47,840 --> 00:01:52,829 Ond byddwn yn rhedeg hwn o dan y rhagdybiaeth fod hyn yn gweithio i bawb. 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: Ac os nad ydych yn gallu cael LillyPond i weithio, dim llawer mawr. 43 00:01:55,620 --> 00:02:00,139 Does dim casgliad byw sy'n yn cymryd rhan, o leiaf ar fy mhen. 44 00:02:00,139 --> 00:02:02,930 STEPHEN KREWSON: Haskell a Dylai LillyPond ddau wedi osodwyr. 45 00:02:02,930 --> 00:02:08,497 Euterpea ei lawrlwytho fel pecyn, yn y blaen ac yn y blaen. 46 00:02:08,497 --> 00:02:10,080 Felly, rydym yn sôn am gerddoriaeth cyfrifiadurol. 47 00:02:10,080 --> 00:02:12,990 Ac mae hyn yn unig yw golygfa 50,000 troedfedd iawn. 48 00:02:12,990 --> 00:02:15,700 Mae ychydig o agweddau gwahanol ohono. 49 00:02:15,700 --> 00:02:18,120 Ac mae hyn yn arw ac yn mynd i guddio rhywfaint o fanylion. 50 00:02:18,120 --> 00:02:22,090 Ond gallem feddwl am rywbeth fel cyfansoddiad algorithmig, 51 00:02:22,090 --> 00:02:24,920 ddefnyddio algorithmau, gan ddefnyddio cod, i gynhyrchu 52 00:02:24,920 --> 00:02:30,280 rhyw fath o- efallai hunan-debyg dilyniant o nodau, neu efallai nodiadau 53 00:02:30,280 --> 00:02:33,330 o dan rai gyfyngiad. 54 00:02:33,330 --> 00:02:35,350 Ac yna gallai'r rheiny fod yn perfformio neu eu dehongli 55 00:02:35,350 --> 00:02:38,390 gydag offerynnau analog neu unrhyw beth fel 'na. 56 00:02:38,390 --> 00:02:42,010 Ond mae'r cyfansoddiad yn wneud algorithmically. 57 00:02:42,010 --> 00:02:45,120 >> Ond wrth gwrs, efallai arwynebedd cerddoriaeth cyfrifiadur neu gerddoriaeth ddigidol 58 00:02:45,120 --> 00:02:48,870 rydym yn fwy cyfarwydd â hi yw ddigidol synthesis sain neu samplu ddigidol 59 00:02:48,870 --> 00:02:51,160 a recordio digidol. 60 00:02:51,160 --> 00:02:55,650 Mae llawer o offerynnau digidol wneud drwy samplu digidol. 61 00:02:55,650 --> 00:03:00,110 Yn wir, byddwn yn defnyddio un o'r rhai mewn ar ffurf llyfrgell ffont gadarn yn ddiweddarach. 62 00:03:00,110 --> 00:03:02,850 >> Ond mae hefyd yn rhywbeth a elwir synthesis digidol a ddaeth allan 63 00:03:02,850 --> 00:03:08,650 o'r 70au ac i mewn i'r '80au hwyr gyda Yamaha a John Chowning yn Stanford 64 00:03:08,650 --> 00:03:11,990 gwneud synthesis FM neu Synthesis Modiwleiddio Amlder, 65 00:03:11,990 --> 00:03:15,100 lle'r oedd gennych gludydd signal a signal modulating 66 00:03:15,100 --> 00:03:18,270 yn y sbectrwm sain. 67 00:03:18,270 --> 00:03:22,570 Ond yr hyn rydym yn canolbwyntio ar heddiw yn rhywbeth o'r enw MIDI, 68 00:03:22,570 --> 00:03:25,040 ac wrth gwrs, cyfansoddiad algorithmig. 69 00:03:25,040 --> 00:03:30,940 >> Nid ydym yn mynd i wneud offerynnau, ond rydym yn lle hynny yn mynd i wneud rhai gerddoriaeth, 70 00:03:30,940 --> 00:03:33,940 ac yna bydd yn cael ei ddehongli gan rai offerynnau sy'n 71 00:03:33,940 --> 00:03:38,300 yn conformant i'r safon gyffredinol MIDI. 72 00:03:38,300 --> 00:03:40,830 Felly beth MIDI? 73 00:03:40,830 --> 00:03:45,550 Dydw i ddim yn mynd i mynd yn rhy ddwfn i mewn iddo, ond protocol trosglwyddo data Midi yw. 74 00:03:45,550 --> 00:03:49,250 Mae'n rhyw fath o ganllaw ar draws cwmnïau gwahanol a diwydiannau 75 00:03:49,250 --> 00:03:52,250 ar gyfer trefnu seiniau neu glytiau. 76 00:03:52,250 --> 00:03:54,170 Felly, byddwn yn gweld bod mae 'na safon MIDI 77 00:03:54,170 --> 00:03:57,500 ar gyfer yr holl offerynnau taro gwahanol synau ac argymhellion MIDI 78 00:03:57,500 --> 00:04:01,360 ar gyfer yr holl wahanol fathau o synth neu gwahanol fathau o holl offeryn 79 00:04:01,360 --> 00:04:03,650 grwpiau mewn cerddorfa, ddweud. 80 00:04:03,650 --> 00:04:08,916 >> Mae'n debyg eich bod yn gyfarwydd â 0 trwy 127 negeseuon MIDI. 81 00:04:08,916 --> 00:04:12,920 Mae signal MIDI yn nodweddiadol un bit sy'n dangos 82 00:04:12,920 --> 00:04:16,130 boed yn ddata neu paced statws, ac yna mae 83 00:04:16,130 --> 00:04:18,589 saith darnau o signal. 84 00:04:18,589 --> 00:04:21,430 A gall y rhain rheoli popeth o gyfrol 85 00:04:21,430 --> 00:04:25,330 at y camau neu bwysau ar allwedd arbennig 86 00:04:25,330 --> 00:04:29,400 os ydych yn perfformio gyda MIDI rheolwr yn ogystal â, wrth gwrs, 87 00:04:29,400 --> 00:04:31,250 nodiadau. 88 00:04:31,250 --> 00:04:33,450 Ac wrth gwrs, mae gan MIDI bod yn hynod o ddefnyddiol, 89 00:04:33,450 --> 00:04:37,550 oherwydd ei fod yn ffordd o wifren gyda'i gilydd neu gadwyn llygad y dydd 90 00:04:37,550 --> 00:04:41,570 criw o ddyfeisiau caledwedd MIDI. 91 00:04:41,570 --> 00:04:44,050 Mae gen i saith neu wyth yn ôl ar fy nhŷ. 92 00:04:44,050 --> 00:04:46,610 Mae'n mynd yn gymhleth mewn gwirionedd, ond mae'n wirioneddol bwerus. 93 00:04:46,610 --> 00:04:47,460 Ac mae'n wir yn hen. 94 00:04:47,460 --> 00:04:51,117 Mae'n o'r 80au cynnar ', a 'i' 'n sylweddol' n glws a bach. 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: Yeah. 96 00:04:51,950 --> 00:04:54,230 Mae pob un o'r Nintendo clasurol Byddai gemau fideo yn ôl pob tebyg 97 00:04:54,230 --> 00:04:56,088 rhaid i ffeiliau MIDI ar gyfer cerddoriaeth, er enghraifft. 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHEN KREWSON: Dyma enghraifft o MIDI cyffredinol, 100 00:05:01,740 --> 00:05:06,520 yn dangos MIDI fel rhyw fath protocol cyffredinol. 101 00:05:06,520 --> 00:05:13,280 Ac yr wyf yn meddwl y gallwn ni feddwl am y gwahaniaeth rhwng y fanyleb 102 00:05:13,280 --> 00:05:17,830 y dylid cael rhywbeth fel offeryn hyn yn swnio'n a'r gwir 103 00:05:17,830 --> 00:05:21,740 gwireddu offerynnau hynny seiniau mewn ffont sain neu MIDI penodol 104 00:05:21,740 --> 00:05:25,740 syntheseisydd fel y gwahaniaeth rhwng efallai typeface-- sy'n dweud, 105 00:05:25,740 --> 00:05:30,350 yn gyffredinol, mae hyn yn y dyluniad y ffordd arbennig i gynrychioli 106 00:05:30,350 --> 00:05:35,907 characters-- a ffont arbennig sydd â maint ac ansawdd penodol, 107 00:05:35,907 --> 00:05:37,240 ac mae gwireddu the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: Efallai Byddai gwell cymhariaeth 109 00:05:39,156 --> 00:05:43,430 fod y safon Unicode says-- mae'n rhoi rhif i bob cymeriad, ac yn wir 110 00:05:43,430 --> 00:05:46,830 pob iaith yn y byd, neu set helaeth o sgriptiau o iaith 111 00:05:46,830 --> 00:05:51,310 yn y byd, ac yna dyna'r rendro i mewn i rywbeth graffigol 112 00:05:51,310 --> 00:05:53,710 gan amryw o becynnau ffont. 113 00:05:53,710 --> 00:05:56,630 Ac yn amlwg, gallwch chi feddwl am MIDI fel Unicode o sain. 114 00:05:56,630 --> 00:06:03,250 Ac mae'n dim ond rhestr o- nant mawr o ddigwyddiadau ac offerynnau a whatnot, 115 00:06:03,250 --> 00:06:06,090 ac mae'n rhaid i chi gael ar wahân rhaglen, fel ffurfdeip, 116 00:06:06,090 --> 00:06:08,537 i rendro hynny i rhywbeth sy'n glywadwy. 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHEN KREWSON: Felly pam Haskell? 119 00:06:13,780 --> 00:06:19,110 Haskell yn rhaglennu swyddogaethol iaith, ddatblygedig iawn, 120 00:06:19,110 --> 00:06:22,770 wahanol iawn i C, wahanol iawn i PHP. 121 00:06:22,770 --> 00:06:28,120 Ac rydym yn mynd i weld bod 'an rhwyddineb cyfansoddiad swyddogaeth yn Haskell 122 00:06:28,120 --> 00:06:37,640 a fydd yn ein galluogi i awel drwy cyfansoddi neu deipio i fyny, trawsgrifio, 123 00:06:37,640 --> 00:06:42,160 rhywbeth fel Frere Jacques, y gân syml y 124 00:06:42,160 --> 00:06:46,815 Mae gan lawer o rannau ynddi sy'n yn hunan-tebyg neu ailadrodd. 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 Felly bydd hyn yn rhai o y cymhelliant dros pam 127 00:06:53,250 --> 00:06:59,400 rydym yn defnyddio Haskell, lle swyddogaethau yn ddinasyddion dosbarth cyntaf. 128 00:06:59,400 --> 00:07:01,120 >> Ac yr wyf yn awyddus i ymestyn mae hyn ychydig bach. 129 00:07:01,120 --> 00:07:08,800 Mae'n ychydig bach yn hawdd i'w nodiannu Frere Jacques yn Haskell. 130 00:07:08,800 --> 00:07:12,100 Ond beth os ydym yn awyddus i ychwanegu ran drwm iddo? 131 00:07:12,100 --> 00:07:17,320 Beth os ydym yn awyddus i geisio gwneud rhywbeth fel Roland 808 neu 909 drwm 132 00:07:17,320 --> 00:07:20,970 peiriant lle mae gennych tua 16 cam wahanol? 133 00:07:20,970 --> 00:07:24,590 Fel arfer mae'r rhain yn meddwl o nodiadau fel y 16eg. 134 00:07:24,590 --> 00:07:28,640 A gallwch reoli'r byd-eang tempo, a gallwch ddewis 135 00:07:28,640 --> 00:07:34,620 criw o wahanol rannau offerynnau taro o drwm bas, clap, gwahanol maglau, 136 00:07:34,620 --> 00:07:37,540 hetiau uchel agored a chaeedig ar y math yma o sianeli, 137 00:07:37,540 --> 00:07:41,600 ac yna gallwch EQ neu addasu eu cyfaint. 138 00:07:41,600 --> 00:07:45,290 >> A byddwn yn gweld ffordd braf yn Haskell o gynrychioli cam hwn 139 00:07:45,290 --> 00:07:48,810 dilyniannwr gyda'r holl amryw o bethau cŵl yn Haskell 140 00:07:48,810 --> 00:07:53,100 gallwn ei wneud gyda cynhyrchu rhestrau a hidlo dros rhestrau, 141 00:07:53,100 --> 00:07:56,060 mapio dros restrau, mapio swyddogaethau dros rhestrau. 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 Ac ymddiheuriad gyflym. 144 00:08:00,760 --> 00:08:05,300 Mae hwn yn frysiog iawn a braslun rhy gyflym 145 00:08:05,300 --> 00:08:07,620 o rai o'r agweddau o Haskell a Euterpea, 146 00:08:07,620 --> 00:08:11,760 sydd yn benodol i barth ysgrifenedig iaith gwreiddio 147 00:08:11,760 --> 00:08:14,970 yn Haskell ar gyfer mathau cerddorol. 148 00:08:14,970 --> 00:08:17,350 Felly, os gwelwch yn dda peidiwch edrych ar y cod lein. 149 00:08:17,350 --> 00:08:22,404 Tân i fyny GHCI, sef y Glasgow Haskell Crynhoydd Dehonglydd. 150 00:08:22,404 --> 00:08:24,320 A byddaf yn gwneud rhywfaint o hyn mewn ychydig 151 00:08:24,320 --> 00:08:25,880 fel y gallwch weld sut y mae'n ei wneud. 152 00:08:25,880 --> 00:08:31,021 >> Ac mae hyn yn caniatáu i chi lwytho gyda the-- y gystrawen yn colon ac yna 153 00:08:31,021 --> 00:08:31,520 y gorchymyn. 154 00:08:31,520 --> 00:08:33,510 Gallwch lwytho mewn ffeiliau. 155 00:08:33,510 --> 00:08:36,840 Gallwch ddefnyddio bori ar y rhai ffeiliau i weld yr holl swyddogaethau y 156 00:08:36,840 --> 00:08:39,169 yn bodoli mewn modiwl penodol. 157 00:08:39,169 --> 00:08:43,850 Ac yna gan y byddwn yn gweld, mathau a math dosbarthiadau mor bwysig yn Haskell, 158 00:08:43,850 --> 00:08:48,850 er mwyn i chi bob amser yn check-- arbennig os ydych yn gweithio mewn DSCL newydd 159 00:08:48,850 --> 00:08:51,600 fel hyn, yr hyn yn fath gerddoriaeth? 160 00:08:51,600 --> 00:08:55,114 Yr wyf yn gwybod am y modd rhifol mathau gweithio yn Haskell, 161 00:08:55,114 --> 00:08:56,530 ond nid wyf yn gwybod llawer am gerddoriaeth. 162 00:08:56,530 --> 00:09:01,280 Ond gallwch edrych ar y ffordd y maent yn ddiffinio gan ddefnyddio t neu math hwn gorchymyn 163 00:09:01,280 --> 00:09:04,577 ac yna galw o ran manylyn swyddogaeth neu wrthrych data. 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: Yeah. 165 00:09:05,410 --> 00:09:09,820 Os ydych yn meddwl C a chlang Roedd hardass am fathau, 166 00:09:09,820 --> 00:09:11,230 nid oes gennych unrhyw syniad am Haskell. 167 00:09:11,230 --> 00:09:14,230 Y peth da am Haskell yw bod os gallwch gael eich cod i lunio 168 00:09:14,230 --> 00:09:16,790 ac os gwiriadau math Haskell, mae'n debyg iawn, 169 00:09:16,790 --> 00:09:18,675 oherwydd bod y system math mor llym. 170 00:09:18,675 --> 00:09:20,090 >> STEPHEN KREWSON: Yeah. 171 00:09:20,090 --> 00:09:21,980 Felly, Fi jyst eisiau mynd through-- ar ôl tro, 172 00:09:21,980 --> 00:09:27,160 nid yw hyn yn ei wneud justice-- rhai o'r nodweddion Haskell bod, o leiaf 173 00:09:27,160 --> 00:09:31,780 at ei creators-- a iddi gael ei chreu ar ddiwedd y 1980au gan griw o bobl, 174 00:09:31,780 --> 00:09:34,610 pwyllgor o tua 20 people-- meddwl oedd yn bwysig. 175 00:09:34,610 --> 00:09:36,850 A'r peth cyntaf y byddant yn rhestru mewn papur sy'n 176 00:09:36,850 --> 00:09:41,890 Disgrifiodd y genesis o Haskell dros yr 20 mlynedd cyntaf neu felly 177 00:09:41,890 --> 00:09:43,390 oedd ei fod yn ddiog. 178 00:09:43,390 --> 00:09:44,990 Felly beth mae hyn yn ei olygu? 179 00:09:44,990 --> 00:09:49,860 >> Wel, mae'n golygu pan fyddwn yn cael rhyw fath o fynegiant, mae angen i ni werthuso. 180 00:09:49,860 --> 00:09:54,390 Ac mae Haskell yn gwneud hyn mewn galwad gan angen ffordd neu'r ffordd nad yw'n llym. 181 00:09:54,390 --> 00:09:57,250 Hynny yw, os oes gennym griw o cydrannau o'n mynegiant, 182 00:09:57,250 --> 00:10:00,660 rydym yn ceisio oedi'r gwerthusiad o subcomponents rhai 183 00:10:00,660 --> 00:10:05,300 nes bod y minute-- olaf absoliwt hynny yw nes i ni mewn gwirionedd yn eu hangen. 184 00:10:05,300 --> 00:10:08,480 >> Felly yw-- hwn sydd yn 'n sylweddol oera, yn enwedig 185 00:10:08,480 --> 00:10:13,200 os ydym yn meddwl am y tyniad o dilyniannwr gam cerddorol. 186 00:10:13,200 --> 00:10:16,740 Rydych droi ymlaen, ac i chi ddechrau rhedeg sequence-- gam 187 00:10:16,740 --> 00:10:20,010 os ydych chi erioed wedi gweithio gydag drwm machine-- a 'i jyst yn mynd am byth. 188 00:10:20,010 --> 00:10:24,650 Felly byddai'n neis iawn os byddwn yn Gallai efelychu hynny mewn Haskell. 189 00:10:24,650 --> 00:10:31,040 A gallwn wneud hynny gyda ddiddiwedd gwerthoedd, yn rhestri anfeidraidd penodol. 190 00:10:31,040 --> 00:10:35,860 Mae'n hawdd iawn i deipio i Rhestr anfeidrol yn Haskell. 191 00:10:35,860 --> 00:10:39,230 Gallech jyst arfer 'r gystrawen i lawr yma, lle gwelwch 1 trwy 3, 192 00:10:39,230 --> 00:10:42,440 cael gwared ar y 3 1 dot dot, a hynny yn rhestr ddiddiwedd 193 00:10:42,440 --> 00:10:46,960 yr holl rifau naturiol yn ymestyn ar cyn belled ag y gallwch ddychmygu. 194 00:10:46,960 --> 00:10:49,925 >> Rwyf am gyflwyno cysyniad o plygiadau ar unwaith. 195 00:10:49,925 --> 00:10:51,800 Ac eto, mae'r pwrpas o beidio seminar hwn yw 196 00:10:51,800 --> 00:10:55,770 i ddysgu am plygion yn Haskell neu swyddogaethau uwch. 197 00:10:55,770 --> 00:10:59,640 Ond yr wyf am ei gyflwyno i rhoi ymdeimlad cywir o ba mor rhyfedd 198 00:10:59,640 --> 00:11:03,700 Haskell a pha mor bwerus y mae. 199 00:11:03,700 --> 00:11:08,000 Ac yn benodol, rydyn ni'n mynd i be-- pan fyddwn yn gwneud ein rhannau drwm gwahanol, 200 00:11:08,000 --> 00:11:12,790 rydym yn mynd i fod yn trin rhestrau o rhifau, eu plygu ar ei gilydd. 201 00:11:12,790 --> 00:11:17,290 Ac i wneud hynny, yr ydym chi helpu yn defnyddio mapiau a plygiadau. 202 00:11:17,290 --> 00:11:21,770 >> Mae 'na cysylltiadol cywir plygu, sydd yn yr un yma yn iawn 203 00:11:21,770 --> 00:11:26,990 Yma-- 1 llai'r swm, 2 llai'r swm, 3 llai 0. 204 00:11:26,990 --> 00:11:29,170 Ac mae'r cystrawen ar gyfer blygu, byddwch yn rhoi gwaith yn fwy 205 00:11:29,170 --> 00:11:34,680 gwerth sylfaenol ac yna operation-- yn yr achos hwn, adio neu dynnu. 206 00:11:34,680 --> 00:11:36,280 Rydw i wedi dangos y ddau achos. 207 00:11:36,280 --> 00:11:41,760 Ac yna mae 'na cronadur sy'n yn cronni dros y rhestr gyfan, 208 00:11:41,760 --> 00:11:46,330 gwneud cais bod gweithredwr plws neu minws, ac yna casglu iddo. 209 00:11:46,330 --> 00:11:52,680 Felly bydd hyn yn the-- petai'n cael ei alw gyda plygu r a mwy o 0, gan ddechrau gyda 0, 210 00:11:52,680 --> 00:11:54,720 byddem wedyn yn crynhoi pob y rhifau yn y rhestr honno. 211 00:11:54,720 --> 00:11:57,134 A dyna rhestr 1-3. 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: Felly, i roi un arall ffordd, plygu r cymryd tair dadleuon. 213 00:12:00,050 --> 00:12:02,540 Mae swyddogaeth sy'n ei hun yn cymryd dwy ddadl, 214 00:12:02,540 --> 00:12:05,400 Yna mae 'na gwerth cychwynnol, ac mae 'na restr o werthoedd. 215 00:12:05,400 --> 00:12:08,570 A beth ydych yn ei wneud yw eich bod yn cymryd gwerth cychwynnol, gwerth cyntaf, 216 00:12:08,570 --> 00:12:09,850 eu rhoi i mewn i'r swyddogaeth. 217 00:12:09,850 --> 00:12:11,607 Beth ydych chi'n ei gael allan, cymryd hynny, bwyd anifeiliaid sy'n 218 00:12:11,607 --> 00:12:13,940 i mewn i swyddogaeth y ail gwerth, yr hyn a gewch allan, 219 00:12:13,940 --> 00:12:16,690 cymryd hynny, yn bwydo hynny i mewn i'r swyddogaeth y trydydd werth. 220 00:12:16,690 --> 00:12:18,740 Ac yna os byddwch yn mynd i lawr y rhestr gyfan y modd hwn, 221 00:12:18,740 --> 00:12:22,970 rydych yn mynd i gael yn y pen draw rhywfaint o werth unigol sy'n 222 00:12:22,970 --> 00:12:25,720 o'r un math o beth i chi ddechrau allan gyda ac o'r un math 223 00:12:25,720 --> 00:12:29,147 fel y mae pethau yn y rhestr, ac yna dyna'r canlyniad dychwelyd R. plyg 224 00:12:29,147 --> 00:12:31,980 STEPHEN KREWSON: Felly, yn benodol, mae'r rhain yn swyddogaethau o radd uwch, 225 00:12:31,980 --> 00:12:34,460 oherwydd eu bod yn cymryd un arall swyddogaeth fel un o'r dadleuon. 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: Yeah. 227 00:12:34,770 --> 00:12:37,820 Os ydych chi wedi defnyddio rhai eraill languages-- wyf yn gwybod R, [Anghlywadwy] 228 00:12:37,820 --> 00:12:41,510 iaith wedi hyn, a elwir Lleihau. 229 00:12:41,510 --> 00:12:45,460 Efallai eich bod wedi swyddogaethau tebyg mewn ieithoedd eraill, dim ond enw 230 00:12:45,460 --> 00:12:48,160 pethau gwahanol. 231 00:12:48,160 --> 00:12:50,680 >> STEPHEN KREWSON: A beth sy'n neis am blygu R 232 00:12:50,680 --> 00:12:53,880 yn yr achos hwn yw bod gwaith yn fwy Gall R weithio gyda rhestrau ddiddiwedd. 233 00:12:53,880 --> 00:12:59,490 Felly, yn y gwaelod hwn, P5 hon yn cynhyrchu y nodiadau a 234 00:12:59,490 --> 00:13:03,120 yn cael eu troi ymlaen yn y dilyniannwr gam ar gyfer rhyw ran drwm, y bumed ran drwm, 235 00:13:03,120 --> 00:13:05,480 ac efallai ei fod yn conga drwm neu rywbeth. 236 00:13:05,480 --> 00:13:09,719 Ac mae hyn yn fwriadol ffordd aflem o ysgrifennu hwn, 237 00:13:09,719 --> 00:13:11,510 ond mae'n hwyl, oherwydd mae'n dangos llawer 238 00:13:11,510 --> 00:13:14,460 o bethau am Haskell a Euterpea. 239 00:13:14,460 --> 00:13:20,650 >> Felly blygu R o hyn colon colon-- yw dim ond gweithredydd sy'n gwthio pethau 240 00:13:20,650 --> 00:13:25,700 gyda'i gilydd ar list-- elwir ar gwag rhestr, sydd ychydig y cromfachau gwag. 241 00:13:25,700 --> 00:13:28,250 A dwi'n galw bod ar y rhestr anfeidrol. 242 00:13:28,250 --> 00:13:31,570 Mae hyn mewn gwirionedd dwy restr at ei gilydd i lawr fan hyn. 243 00:13:31,570 --> 00:13:37,150 Mae'r rhestr 1 atalnod 6 dot dot yn 1, 6, 11, 16. 244 00:13:37,150 --> 00:13:39,750 Felly Haskell-- mewn dim ond ychydig o gymeriadau, chi 245 00:13:39,750 --> 00:13:42,420 Gall gynhyrchu'r cyfan dilyniant o rifau 246 00:13:42,420 --> 00:13:46,240 sydd yn bum rhifau ar wahân ymestyn ymlaen i anfeidredd. 247 00:13:46,240 --> 00:13:49,860 Ac yr wyf yn prepend i hynny fach hon list-- fyrrach 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- dim ond i ddangos i chi sut y gallwch concatenate rhestrau. 249 00:13:54,370 --> 00:13:55,790 >> Ac yna yr wyf wedi plygu ar ei hun. 250 00:13:55,790 --> 00:14:01,510 Ac mae hyn yn dod i ben i fyny dim ond bod rhyw fath o llawdriniaeth hunaniaeth, ond mae'n ddiddiwedd. 251 00:14:01,510 --> 00:14:06,070 A phlygu'r Gall R wneud hynny, gan ei fod yn lazily yn gwerthuso, fel yn yr uchod. 252 00:14:06,070 --> 00:14:10,582 Os oes gennym 1 a 2 a 3, y gallwn jyst braced oddi ar weddill cyfan ohono. 253 00:14:10,582 --> 00:14:12,290 Ni fydd yn gweithio i minws neu mwy, ond mae'n 254 00:14:12,290 --> 00:14:17,760 Bydd yn gweithio i colon hwn gweithrediad hunaniaeth ar y rhestr. 255 00:14:17,760 --> 00:14:24,620 >> Felly sut rydym yn defnyddio yn ymarferol os ydym gael rhestr anfeidrol hir o bethau? 256 00:14:24,620 --> 00:14:26,500 Wel, Haskell yn darparu llawer o functions-- 257 00:14:26,500 --> 00:14:29,450 ac yn edrych yn fwy i mewn i hyn eich adeg-- hunain megis cymryd 258 00:14:29,450 --> 00:14:32,200 sy'n dweud, OK, rydym yn cynhyrchu y rhestr anfeidrol, 259 00:14:32,200 --> 00:14:35,950 ond rydym yn jyst yn mynd i gymryd peth nifer ohono Ac yn achos-- hwn 260 00:14:35,950 --> 00:14:38,410 byddwn yn gweld hyn yn ddiweddarach yn ein code-- peiriant drwm 261 00:14:38,410 --> 00:14:43,740 GM yn unig yw rhyw fath o fyd-eang amrywiol ar gyfer y nifer o gamau 262 00:14:43,740 --> 00:14:44,610 yn y dilyniannwr. 263 00:14:44,610 --> 00:14:47,630 Ar y peiriannau rholio-yn I Dangosodd chi, mae hynny'n nodweddiadol 16, 264 00:14:47,630 --> 00:14:51,475 ond yr wyf wedi rhoi ar waith gyda 32. 265 00:14:51,475 --> 00:14:54,470 Nid oes llawer o bwys. 266 00:14:54,470 --> 00:15:00,230 >> Haskell hefyd yn bur, felly mae wedi gryf teipio statig sy'n Connor cyfeiriwyd ato. 267 00:15:00,230 --> 00:15:03,220 Felly swyddogaethau mathemategol yn y sense-- 268 00:15:03,220 --> 00:15:06,600 eu bod yn fwy mathemategol eu bod yn gwarantu 269 00:15:06,600 --> 00:15:11,530 i beidio cael mynediad na newid unrhyw fath o amrywiol neu berfformio mewnbwn neu allbwn. 270 00:15:11,530 --> 00:15:14,420 Felly, os oes gennych swyddogaeth, 'i' benderfynedig. 271 00:15:14,420 --> 00:15:17,400 Bydd bob amser yn dychwelyd yr un fath gwerth yn y cyflwr y rhaglen 272 00:15:17,400 --> 00:15:19,310 neu aros yr un fath. 273 00:15:19,310 --> 00:15:22,940 Mae yna, wrth gwrs, eithriadau monadic at hyn, ond mae hynny'n tu hwnt i'n gwmpas. 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: Yeah. 275 00:15:23,900 --> 00:15:26,946 Beth mae hyn yn ei olygu, fodd bynnag, yw bod rai pwysig [Anghlywadwy] 276 00:15:26,946 --> 00:15:27,820 canlyniadau hyn. 277 00:15:27,820 --> 00:15:30,940 Un yw ei fod yn hawdd iawn parallelize rhaglenni Haskell. 278 00:15:30,940 --> 00:15:32,773 Oherwydd os oes gennych, yn dweud, yn swyddogaeth i'r 279 00:15:32,773 --> 00:15:36,064 Mae angen gweithredu ar filiwn o werthoedd, os eich bod yn gwybod bod y swyddogaeth fydd bob amser 280 00:15:36,064 --> 00:15:39,280 rhoi un gwerth os rydych yn bwydo ar value-- benodol 281 00:15:39,280 --> 00:15:43,055 os ydych yn [Anghlywadwy] f o 1, f o 2, yna f o 3 neu whatnot-- f o 1 282 00:15:43,055 --> 00:15:45,180 Nid yw mynd i ysgrifennu allan i ffeil neu wneud rhywbeth 283 00:15:45,180 --> 00:15:46,850 a fydd yn newid y gwerth F2. 284 00:15:46,850 --> 00:15:50,220 Alli jyst gwahanu swyddogaeth hon i miliwn beiriannau gwahanol neu i filiwn 285 00:15:50,220 --> 00:15:54,720 gwahanol edafedd neu beth bynnag, cael yr holl ymatebion yn ôl, 286 00:15:54,720 --> 00:15:56,900 cael yr holl werthoedd dychwelyd yn ôl, ac yna dyna ni. 287 00:15:56,900 --> 00:15:59,780 Felly hawdd iawn i'w parallelize pethau. 288 00:15:59,780 --> 00:16:03,140 >> Yr anfantais yw bod mewnbwn ac allbwn yn enwedig 289 00:16:03,140 --> 00:16:05,720 ffitio i mewn i'r system math mewn ffyrdd cymhleth iawn. 290 00:16:05,720 --> 00:16:09,010 Ni fyddwn yn mynd i mewn i hynny ar hyn o bryd, ond yr wyf yn eich annog i edrych ar rai adnoddau 291 00:16:09,010 --> 00:16:11,175 ar-lein os ydych am ddysgu am hynny. 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHEN KREWSON: Felly teipiwch classes-- ac mae hyn 294 00:16:16,550 --> 00:16:21,610 dosbarthiadau was-- o fathau eu dyfeisio i ddatrys 295 00:16:21,610 --> 00:16:24,160 problem o gorlwytho gweithredwr. 296 00:16:24,160 --> 00:16:27,590 Felly, rydym yn awyddus i gael cydraddoldeb rhwng gwahanol fathau o bethau. 297 00:16:27,590 --> 00:16:31,040 Wrth gwrs, gallem feddwl o- cydraddoldeb rhwng mathau rhifol 298 00:16:31,040 --> 00:16:34,720 yn hawdd iawn i feddwl am, ond beth am gydraddoldeb rhwng y rhestrau? 299 00:16:34,720 --> 00:16:37,610 Beth am gydraddoldeb rhwng strwythurau data goes goeden? 300 00:16:37,610 --> 00:16:43,130 Ac mae hyn i gyd yn bosibl mewn Haskell oherwydd y dosbarthiadau fath. 301 00:16:43,130 --> 00:16:48,000 >> Felly, os ydych yn diffinio type-- data penodol ac yma, mae'r rhain yn lleiniau cerddorol. 302 00:16:48,000 --> 00:16:50,960 Rydym yn cael yn olaf ar gerddoriaeth cyfrifiadur. 303 00:16:50,960 --> 00:16:57,420 Felly, rydym wedi C, C miniog, ac yn y blaen ac yn y blaen. 304 00:16:57,420 --> 00:17:01,080 Maent yn perthyn i griw o gwahanol ddosbarthiadau math. 305 00:17:01,080 --> 00:17:03,510 EQ-- maent yn perthyn i'r dosbarth math EQ. 306 00:17:03,510 --> 00:17:06,780 Mae hynny'n golygu eu bod yn cefnogi gweithrediadau cydraddoldeb. 307 00:17:06,780 --> 00:17:12,650 Felly, gallwch werthuso a yw un dilyniant o primitives cerddorol 308 00:17:12,650 --> 00:17:15,400 yr un fath ag un gwahanol. 309 00:17:15,400 --> 00:17:17,280 >> Maent yn perthyn i'r dosbarth trefnolyn. 310 00:17:17,280 --> 00:17:19,479 Mae hynny'n golygu mae 'na archebu i'r rhain. 311 00:17:19,479 --> 00:17:27,670 D yn dod ar ôl C. C miniog dod ar ôl C hefyd. 312 00:17:27,670 --> 00:17:29,840 Maent yn perthyn i'r dosbarth dangos, sy'n golygu eu bod yn gallu 313 00:17:29,840 --> 00:17:33,000 yn cael ei argraffu at gonsol neu derfynell. 314 00:17:33,000 --> 00:17:36,090 Maent yn perthyn i'r wedi'u rhifo y dosbarth, a oedd yn 315 00:17:36,090 --> 00:17:39,770 yn golygu bod hyd yn oed er mae'r rhain yn gymeriadau, 316 00:17:39,770 --> 00:17:45,340 ganddynt rhifol sylfaenol cynrychiolaeth gan ddechrau ar 0 317 00:17:45,340 --> 00:17:48,960 ac yn mynd i ffwrdd drwy fodd bynnag llawer o bethau yma, 20 neu hynny, 318 00:17:48,960 --> 00:17:51,770 neu 30 neu 40, efallai. 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: A phan mae gennym y math data 320 00:17:54,259 --> 00:17:57,050 hynny derives-- â'r gair allweddol Dosbarth fath penodol "deriving--", 321 00:17:57,050 --> 00:18:01,160 mae'n golygu y bydd y casglwr yn ceisio i adeiladu rhywbeth yn awtomatig. 322 00:18:01,160 --> 00:18:05,120 Felly efallai y byddwch eisiau diffinio ansawdd yn wahanol. 323 00:18:05,120 --> 00:18:09,450 Youll 'angen i ddiffinio C miniog yn gyfartal i fflat D, er enghraifft. 324 00:18:09,450 --> 00:18:11,560 Gyda hyn adeiladu yma, nid wyf yn credu C miniog 325 00:18:11,560 --> 00:18:14,940 a bydd y fflat D yn gyfartal, oherwydd y casglwr bydd yn awtomatig 326 00:18:14,940 --> 00:18:19,670 dweud pob gwerth posibl gwahanol yn wahanol i bob eraill. 327 00:18:19,670 --> 00:18:22,930 >> Felly, mae'n bosibl i droi'r fantol y gweithrediadau rhagosodedig 328 00:18:22,930 --> 00:18:25,730 o'r mathau hyn o ddosbarthiadau. 329 00:18:25,730 --> 00:18:28,640 Unwaith eto, yn edrych ar y cyfeirnod os ydych am ddysgu am hynny. 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHEN KREWSON: A yma, mewn gwirionedd, bydd hyn 332 00:18:33,600 --> 00:18:36,930 yn ddefnyddiol i pan fyddwn yn cod yn nes ymlaen. 333 00:18:36,930 --> 00:18:42,150 Rydym yn gweld rhai o'r gweithredwyr infix ar gyfer cyfansoddiad dilyniannol, 334 00:18:42,150 --> 00:18:46,570 cyfansoddiad cyfochrog, ac yn y blaen allan, pwyntiau cadarnhaol hyn ac arwyddion cyfartal 335 00:18:46,570 --> 00:18:48,620 hamgylchynu gan colon. 336 00:18:48,620 --> 00:18:53,330 Mae hynny'n golygu y gallwn chwarae gwahanol hyn primitives cerddorol un ar ôl y llall. 337 00:18:53,330 --> 00:18:54,590 Dyna cyfansoddiad dilyniannol. 338 00:18:54,590 --> 00:18:57,170 >> Neu gallwn eu chwarae mewn yn gyfochrog ar yr un pryd. 339 00:18:57,170 --> 00:19:05,100 Felly yr wyf yn gallu cael gwerth cerddorol, ac yna mae hyn yn gyfwerth a colon, 340 00:19:05,100 --> 00:19:09,669 infix gweithredwr cyfansoddiad cyfochrog, ac yn eu chwarae fel rhyw fath o gord. 341 00:19:09,669 --> 00:19:11,460 Ac rydym yn mynd i ddefnyddio pan fydd hyn rydym yn cyfuno 342 00:19:11,460 --> 00:19:15,080 ein ddrwm rhan gyda'n ychydig iawn o gân Frere Jacques 343 00:19:15,080 --> 00:19:19,460 i chwarae y ddau dilyniannau o gwerthoedd cerddorol ar yr un pryd. 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> Currying Cyri yw-- ddiwethaf enwi o Haskell Curry, pwy 346 00:19:29,250 --> 00:19:31,850 y ddelwedd Haskell ei enwi ar ôl. 347 00:19:31,850 --> 00:19:34,330 Ac mae hyn yn ein galluogi i ceinder braf pan rydym yn 348 00:19:34,330 --> 00:19:36,880 ysgrifennu hyn i gyd yn wahanol swyddogaethau neu hidlwyr ein bod 349 00:19:36,880 --> 00:19:39,330 mynd i fod mapio dros ein rhestrau. 350 00:19:39,330 --> 00:19:42,810 Swyddogaeth o ddau arguments-- f x ac y-- 351 00:19:42,810 --> 00:19:46,630 Gellir cael eu cynrychioli fel f x cymhwyso at y. 352 00:19:46,630 --> 00:19:49,800 Felly mae'n un o swyddogaethau un ddadl bod dychwelyd 353 00:19:49,800 --> 00:19:51,240 Swyddogaeth arall o un ddadl. 354 00:19:51,240 --> 00:19:56,962 Felly, mae hyn yn golygu y gallwn fapio ffwythiant f x dros restr o y o. 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: Eisiau i rhoi enghraifft o hyn? 356 00:19:58,920 --> 00:19:59,836 STEPHEN KREWSON: Yeah. 357 00:19:59,836 --> 00:20:05,390 Mae gennyf enghraifft yma o rhai o'r pethau y byddwn yn ysgrifennu. 358 00:20:05,390 --> 00:20:10,500 Felly ailadrodd 2-- yn dda, ailadrodd yn cymryd 359 00:20:10,500 --> 00:20:13,040 un gwerth, a dyna faint o weithiau i ailadrodd rhywbeth, 360 00:20:13,040 --> 00:20:16,690 ac yna bydd yn cymryd value-- Fel arfer, rhestr neu rywbeth. 361 00:20:16,690 --> 00:20:23,450 Felly dyma, rydym yn mapio ailadrodd 2 dros rhestr arall. 362 00:20:23,450 --> 00:20:27,440 >> Felly, os ydym yn ailadrodd mapio 2, os ydym yn ailadrodd 2 yn gymwys 363 00:20:27,440 --> 00:20:31,890 i'r elfen gyntaf list-- hwn a mae'r rhain yn rhestrau o phrases-- cerddorol 364 00:20:31,890 --> 00:20:37,650 Bydd yn cynhyrchu dau o "chi sleeping--" felly a ydych yn cysgu, a ydych yn cysgu. 365 00:20:37,650 --> 00:20:40,040 Felly nawr mae gennym ddau. 366 00:20:40,040 --> 00:20:42,570 Ond mae dyblygu yn cymryd dau dadleuon, ond oherwydd ein bod yn 367 00:20:42,570 --> 00:20:47,100 currying ac yna mapio, gallwn gynrychioli dyblygu 2 368 00:20:47,100 --> 00:20:52,310 fel un sydd wedi'i ddychwelwyd fel swyddogaeth o un argument-- dim ond ailadrodd ddwywaith. 369 00:20:52,310 --> 00:20:57,010 Ac yna rydym yn gwneud cais bod i bob elfen o rhestr hon o ymadroddion. 370 00:20:57,010 --> 00:21:01,900 >> Ac concat yn Haskell gweithredu am ddymchwel restr. 371 00:21:01,900 --> 00:21:04,400 Oherwydd bod dyblygu 2 ewyllys gynhyrchu rhestr o restrau. 372 00:21:04,400 --> 00:21:06,660 Ac mae hyn yn y ffurflen canolradd yma. 373 00:21:06,660 --> 00:21:10,365 Ac felly yna gallwn concat neu gwastatáu hynny allan ddwywaith. 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: A symlach enghraifft o currying, 375 00:21:12,240 --> 00:21:15,323 os byddech yn like-- ddychmygu f yn unig yw swyddogaeth lluosi sy'n cymryd dau 376 00:21:15,323 --> 00:21:16,840 dadleuon a ffurflenni eu cynnyrch. 377 00:21:16,840 --> 00:21:19,320 Felly, os oes gennych f 4 5, 'i' 20. 378 00:21:19,320 --> 00:21:22,670 Ond gallwch feddwl am hyn fel also-- gennych ffwythiant f 4 379 00:21:22,670 --> 00:21:25,560 sy'n cymryd dadl a ffurflenni bedair gwaith hwn argument-- unig 380 00:21:25,560 --> 00:21:27,870 Cais rhannol sy'n un ddadl yn unig 4. 381 00:21:27,870 --> 00:21:31,182 Ac os ydych yn bwydo f o 4 5, a fydd yn rhoi i chi 20. 382 00:21:31,182 --> 00:21:32,890 A dyna yn symlach enghraifft o currying. 383 00:21:32,890 --> 00:21:34,473 Fel arfer mae'n un o'r rhai gwerslyfr. 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHEN KREWSON: Lambda ymadroddion neu swyddogaethau dienw 386 00:21:42,110 --> 00:21:47,330 yn nod amgen Haskell arall. 387 00:21:47,330 --> 00:21:51,242 Felly, os bydd angen i chwip i fyny ychydig iawn o ailadrodd bywyd swyddogaeth, 388 00:21:51,242 --> 00:21:52,950 ond dweud nad yw'n mewn y llyfrgell safonol, 389 00:21:52,950 --> 00:21:56,150 gallwn ddefnyddio cystrawen yn debyg i'r canlynol. 390 00:21:56,150 --> 00:21:58,730 A byddwn yn awel dros hyn. 391 00:21:58,730 --> 00:22:02,160 Un peth y byddwch yn gweld llawer o yn y peiriant drwm yn ein bod yn gwneud galwadau 392 00:22:02,160 --> 00:22:05,790 i rywbeth o'r enw hidlo, sydd, fel o'r blaen, 393 00:22:05,790 --> 00:22:08,185 yn mapio swyddogaeth dros rhestr, ond mae'n 394 00:22:08,185 --> 00:22:10,260 mapio swyddogaeth Boole. 395 00:22:10,260 --> 00:22:13,390 >> Felly gennym yma yn enghraifft o yn ddienw 396 00:22:13,390 --> 00:22:19,150 swyddogaeth Boole diffiniedig sy'n dim ond yn cymryd gwerthoedd cwpl. 397 00:22:19,150 --> 00:22:22,990 Nid yw hyn yn fanwl gywir swyddogaeth dienw. 398 00:22:22,990 --> 00:22:25,850 Ond mae'n diffinio gyda bod cystrawen ar gyfer crynoder, 399 00:22:25,850 --> 00:22:28,007 ac mae hyn yn cymryd dim ond x modiwl n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: Yeah. 401 00:22:28,840 --> 00:22:31,330 Felly f yn ffwythiant dwy ddadl n ac p 402 00:22:31,330 --> 00:22:35,440 sy'n dychwelyd swyddogaeth sy'n ei hun un o swyddogaethau un ddadl, sef x. 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHEN KREWSON: I gweithredwyr infix grybwyllwyd. 405 00:22:40,690 --> 00:22:42,642 Beth yw weithredwyr infix? 406 00:22:42,642 --> 00:22:45,710 Wel, gweithredwyr infix yw'r ffordd arferol ydym yn eu cynrychioli gweithrediadau, 407 00:22:45,710 --> 00:22:49,910 yn dweud, yn mathematics-- 2 a 2 lle'r gweithredwr plws 408 00:22:49,910 --> 00:22:51,202 ac yna dwy ddadl 2 a 2. 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: Mae'n cael ei alw cefn nodiant sglein, sef 410 00:22:53,701 --> 00:22:55,330 tymor yr wyf yn amau ​​y byddai unrhyw un ohonoch yn gwybod. 411 00:22:55,330 --> 00:22:56,288 >> STEPHEN KREWSON: Iawn. 412 00:22:56,288 --> 00:22:58,290 Reverse nodiant polish neu rhagddodiad. 413 00:22:58,290 --> 00:23:01,412 Ond penderfynodd Haskell i defnyddio gweithredwyr infix. 414 00:23:01,412 --> 00:23:03,120 Felly dyma rai o'r y rhai sy'n arfer 415 00:23:03,120 --> 00:23:07,770 yn cael eu diffinio ar gyfer y Euterpea DSCL yn Haskell. 416 00:23:07,770 --> 00:23:10,730 Felly roedd hyn yn cyfansoddiad dilyniannol. 417 00:23:10,730 --> 00:23:16,340 Roedd hwn cyfansoddiad cyfochrog, ac mae hyn Roedd truncating cyfansoddiad cyfochrog. 418 00:23:16,340 --> 00:23:18,710 A bydd angen i ni fod gyda'n peiriant drwm, 419 00:23:18,710 --> 00:23:22,640 oherwydd byddwn yn defnyddio'r ddiwethaf gweithredydd yn y tuple bach yno 420 00:23:22,640 --> 00:23:26,330 i chwarae'r peiriant drwm ar hyd gyda'n cân Frere Jacques. 421 00:23:26,330 --> 00:23:28,650 Ac mae ein peiriant drwm yn mynd i fod yn ddiddiwedd. 422 00:23:28,650 --> 00:23:30,920 'I jyst yn chwarae am byth. 423 00:23:30,920 --> 00:23:32,692 Ond nid y gân Frere Jacques yw. 424 00:23:32,692 --> 00:23:33,510 Dyw hi ddim yn bod hir. 425 00:23:33,510 --> 00:23:36,610 Mae'n dim ond ychydig o fariau. 426 00:23:36,610 --> 00:23:43,030 Felly mae angen i atal y peiriant drwm fel gynted ag y bydd gwerth cerddorol byrrach yn dod 427 00:23:43,030 --> 00:23:43,700 i ben. 428 00:23:43,700 --> 00:23:46,980 A bod gweithredwr infixed yn super defnyddiol gyda hynny. 429 00:23:46,980 --> 00:23:50,090 >> Ac infix nodiant fel mae hyn yn fath o 'n glws, 430 00:23:50,090 --> 00:23:57,095 gan fod yn dweud bod gennych swyddogaeth tebyg dyfyniad, sy'n rhoi yr is-adran cyfanrif 431 00:23:57,095 --> 00:24:01,010 o x gan rywbeth else-- ddrwg gennym, dylai hynny fod yn a b. 432 00:24:01,010 --> 00:24:04,740 Gallech ysgrifennu fel dyfyniad o b. 433 00:24:04,740 --> 00:24:09,670 Felly, os ydych elfen put-- yw enghraifft arall o hyn. 434 00:24:09,670 --> 00:24:14,730 x elfen mewn rhyw rhestr, os ydych yn rhoi yn Backticks, gallwch ei ddefnyddio. 435 00:24:14,730 --> 00:24:20,400 Hyd yn oed er nad yw'n symbol fel plws neu finws neu amserau, 436 00:24:20,400 --> 00:24:24,630 gallwch ddefnyddio enw swyddogaeth fel 'na yn Backticks 437 00:24:24,630 --> 00:24:27,045 fel gweithredwr infix, sydd yn eithaf oer. 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: Unwaith eto, mae hyn yn pob siwgr yn unig cystrawennol, mewn gwirionedd. 439 00:24:29,670 --> 00:24:32,310 Nid yw'n effeithio ar y craidd o iaith. 440 00:24:32,310 --> 00:24:37,440 >> STEPHEN KREWSON: Felly gwelwn yma am yr ymadrodd olaf ein cân Frere Jacques, 441 00:24:37,440 --> 00:24:45,740 Yr wyf yn chwarae rhai cordiau ychydig neu ran o dair sy'n defnyddio'r cyfansoddiad cyfochrog 442 00:24:45,740 --> 00:24:46,240 gweithredwr. 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 Mae hon yn ffordd arall o ddweud rhai o'r hyn yr ydym ni newydd ei ddweud. 445 00:24:54,950 --> 00:24:59,986 Felly rydych yn gallu map swyddogaethau o un ddadl dros rhestrau. 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: Unwaith eto, mae cyfeiriadau ar gyfer gwerslyfrau rhagarweiniol Haskell-- 447 00:25:02,860 --> 00:25:04,680 Bydd yn rhaid i hyn i gyd ynddo. 448 00:25:04,680 --> 00:25:07,790 >> STEPHEN KREWSON: Felly dyma 'n bert llinell allweddol y dilyniannwr cam 449 00:25:07,790 --> 00:25:12,820 byddwn yn edrych ar ddefnyddio mae dealltwriaeth y rhestr. 450 00:25:12,820 --> 00:25:17,810 Ac rydym yn gweld yma yw bod yr elfen mewn gweithredwr sefydlog mewn dyfynodau cefn. 451 00:25:17,810 --> 00:25:23,030 Felly os x yn elfen o y rhestr o x, yna byddwn yn alw i fyny swyddogaethau perc. 452 00:25:23,030 --> 00:25:25,100 Felly, dim ond swyddogaeth offerynnau taro perc yn. 453 00:25:25,100 --> 00:25:30,200 Mae'n cymryd rhywfaint o werth p sy'n rhan o'r set ffinio pob 454 00:25:30,200 --> 00:25:35,310 y gwahanol synau taro bod y gwelsom yn sleid blaenorol, 455 00:25:35,310 --> 00:25:38,840 ac yna mae'n rhoi bod hyd nodyn chwarter. 456 00:25:38,840 --> 00:25:43,190 Arall mae'n rhoi QNR iddo, a QNR yn unig yw gorffwys nodyn chwarter. 457 00:25:43,190 --> 00:25:44,970 >> Felly mae hyn yn adeiladu rhywbeth neis. 458 00:25:44,970 --> 00:25:52,110 Mae gennym restr o elfennau, a byddwn yn ddolen dros ryw rhestr o un 459 00:25:52,110 --> 00:25:54,540 at werth max ein dilyniannwr cam. 460 00:25:54,540 --> 00:25:58,290 A phan fyddwn ni'n ar ff penodol mewn bod rhestr o un i'r gwerth max, 461 00:25:58,290 --> 00:26:02,970 os bod fi yn aelod o hyn set creu yn y swyddogaeth hon, 462 00:26:02,970 --> 00:26:06,040 yn dda, yna rydym yn ei droi i mewn nodyn taro. 463 00:26:06,040 --> 00:26:10,960 Fel arall, rydym yn unig yn chwarae gorffwys, a oedd yn yw dweud, rydym yn unig aros yn dawel. 464 00:26:10,960 --> 00:26:16,050 A gallwn weld yma, mewn rhestr hon cystrawen a deall, 465 00:26:16,050 --> 00:26:20,030 x yn cael ei phoblogi gan hyn Rhestr adeiladwyd un 466 00:26:20,030 --> 00:26:22,462 i faint byd-eang y dilyniannwr. 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: Yeah. 468 00:26:23,295 --> 00:26:26,340 Mae cystrawen sylfaenol ar gyfer comprehensions rhestr hon yn 469 00:26:26,340 --> 00:26:30,810 braced, gwerth cynnwys rhai newidynnau, bar, 470 00:26:30,810 --> 00:26:34,260 Gwerthoedd posib o'r newidynnau eu hunain, ar gau braced. 471 00:26:34,260 --> 00:26:38,545 Ac os ydych chi wedi gwneud gosod nodiant adeiladwr mewn unrhyw fath o ddosbarth mathemateg, 472 00:26:38,545 --> 00:26:45,999 efallai y byddwch wedi gosod y fath 2n hynny n mewn neu n yn z. 473 00:26:45,999 --> 00:26:48,290 Tebyg thing-- nodiant hwn i fod i fod yn awgrymog 474 00:26:48,290 --> 00:26:49,630 o hynny nodiant mathemategol. 475 00:26:49,630 --> 00:26:51,880 STEPHEN KREWSON: A gallwch berthnasol predicates lluosog 476 00:26:51,880 --> 00:26:56,250 a hidlwyr lluosog mewn rhestr deall, sy'n eithaf 'n glws. 477 00:26:56,250 --> 00:27:01,800 Algebraidd rydym types-- Ni fydd linger hir yma. 478 00:27:01,800 --> 00:27:04,840 Does dim syniad da mewn Haskell neu syniad da, yn amlwg 479 00:27:04,840 --> 00:27:10,720 o sut i gymryd, dyweder, diofyn paramedr i swyddogaeth neu rywbeth. 480 00:27:10,720 --> 00:27:13,370 Yn Python, mae hyn yn eithaf hawdd. 481 00:27:13,370 --> 00:27:18,460 Alli jyst ddweud yn hafal ar y datganiad y swyddogaeth, 482 00:27:18,460 --> 00:27:21,420 gwerth diofyn yn nid oes yr un achos yn cael ei gyflenwi. 483 00:27:21,420 --> 00:27:27,010 >> Yn Haskell, gallech efallai Defnyddiwch efallai y efallai deipio, 484 00:27:27,010 --> 00:27:32,190 sy'n cymryd naill ai ddim byd neu werth o fath yn unig. 485 00:27:32,190 --> 00:27:38,630 Felly, rydym yn manteisio ar hyn yn y peiriant drwm i'n galluogi i roi cyfaint dewisol 486 00:27:38,630 --> 00:27:40,730 paramedrau i bob un o'r rhannau drwm. 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 Felly mae hynny'n rhoi ffordd o gael EQ ni neu gyfrol ar sianel benodol. 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: Yn enghreifftiau Haskell eraill, 490 00:27:56,440 --> 00:28:00,450 efallai y byddwch yn gweld yn cael ei ddefnyddio efallai ar gyfer swyddogaethau a allai methu. 491 00:28:00,450 --> 00:28:03,470 Mae hwn yn un cyffredin. 492 00:28:03,470 --> 00:28:07,010 >> STEPHEN KREWSON: A gallwch gyflenwi rhyw fath o neges gwall fel diofyn. 493 00:28:07,010 --> 00:28:11,020 A dyna yn arbennig o ddefnyddiol pan rydych chi'n ei wneud y I / O yn Haskell. 494 00:28:11,020 --> 00:28:12,044 Gall hynny fod driciau. 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: Neu am Enghraifft debyg, yn meddwl 496 00:28:13,960 --> 00:28:17,460 swyddogaeth sy'n cynnwys is-adran o paramedr a allai fod yn 0. 497 00:28:17,460 --> 00:28:20,020 A gallai swyddogaeth honno dychwelyd efallai beth bynnag. 498 00:28:20,020 --> 00:28:22,802 Felly, os nad oes rhaniad 0, bydd yn dychwelyd yn union beth bynnag. 499 00:28:22,802 --> 00:28:25,010 Ac os oes is-adran gan 0, bydd yn dychwelyd dim byd 500 00:28:25,010 --> 00:28:26,910 fel ffordd o ddangos y camgymeriad. 501 00:28:26,910 --> 00:28:30,330 Oherwydd bod un canlyniad Teipio llym iawn Haskell yn 502 00:28:30,330 --> 00:28:34,100 yw nad oes dim real-- eithriadau yw lletchwith, yn y bôn, 503 00:28:34,100 --> 00:28:36,160 trin gwall yn lletchwith. 504 00:28:36,160 --> 00:28:39,440 Ac mae hyn yn un iawn ffordd gyffredin o wneud hynny. 505 00:28:39,440 --> 00:28:42,990 >> STEPHEN KREWSON: Felly nawr rydym yn cael i beth arall meddwl-blygu 506 00:28:42,990 --> 00:28:49,160 am Haskell, sef patrwm paru a swyddogaeth diffiniadau. 507 00:28:49,160 --> 00:28:53,390 Wyf yn dangos i chi yn y sleid olaf y datganiad o'r dilyniant cam 508 00:28:53,390 --> 00:28:58,170 swyddogaeth, a gymerodd efallai gwerth, yna int, yna restr o ints, 509 00:28:58,170 --> 00:29:03,850 Yna, yn dychwelyd dilyniant o Gwerthoedd cerddoriaeth anodedig yno 510 00:29:03,850 --> 00:29:05,375 gyda traw a chyfaint. 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> Felly gall y rhai tri dadleuon yn patrwm cyfateb yn y modd canlynol. 513 00:29:11,820 --> 00:29:16,660 Ac rydym bob amser yn awyddus i fod yn sicr o gwneud achos sylfaenol neu achos allanfa gyntaf. 514 00:29:16,660 --> 00:29:19,690 Ac tanlinellau hyn gall dim ond eu dehongli 515 00:29:19,690 --> 00:29:22,340 i olygu unrhyw werth sy'n yno. 516 00:29:22,340 --> 00:29:26,580 Felly, os ydym yn cael galwad i gamu dilyniant gyda rhywfaint o werth, rhywfaint o werth arall, 517 00:29:26,580 --> 00:29:32,210 ac yna trefnir y rhestr yn wag, yr hyn yr ydym ei eisiau i ddychwelyd yw tawelwch yn unig, gorffwys 0. 518 00:29:32,210 --> 00:29:35,110 >> Ac yn lle hynny sef rhestr wag neu 0, 519 00:29:35,110 --> 00:29:38,150 ei fod yn gorffwys 0, oherwydd ein bod yn delio â'r math cerddoriaeth, 520 00:29:38,150 --> 00:29:43,230 a'r rhestr wag o'r gerddoriaeth math yn unig yw gweddill o ddim hyd. 521 00:29:43,230 --> 00:29:45,680 Nid yw'n gerddoriaeth. 522 00:29:45,680 --> 00:29:51,460 Ac yna rydym yn gweld os ydym yn cael cam trefnu gyda v ar gyfer dadl gyfrol, 523 00:29:51,460 --> 00:29:57,290 p ar gyfer yr offeryn rhagofal ddadl, ac yna rhestr o x yn. 524 00:29:57,290 --> 00:29:58,360 >> Yna, rydym yn ei wneud rhai pethau. 525 00:29:58,360 --> 00:30:01,290 Yn benodol, rydym yn gwneud cais Rhestr deall hyn, 526 00:30:01,290 --> 00:30:05,700 ac yr ydym yn perfformio rhai gweithrediadau ar werth efallai 527 00:30:05,700 --> 00:30:10,050 i droi i mewn i werth rhifol fel bod gellid ei wedyn restrir a'u defnyddio 528 00:30:10,050 --> 00:30:12,300 i ddewis offeryn. 529 00:30:12,300 --> 00:30:16,730 Unwaith eto, mae hyn yn ychydig yn bit yn fwriadol inconcise 530 00:30:16,730 --> 00:30:20,580 dim ond er mwyn dangos yr holl bethau rhyfedd gallwch ei wneud yn Haskell wrth i chi 531 00:30:20,580 --> 00:30:23,170 yn edrych ar ar eich amser eich hun. 532 00:30:23,170 --> 00:30:23,802 >> Iawn. 533 00:30:23,802 --> 00:30:26,010 Felly rydym yn diwedd yn cael i gwneud yr hyn yr ydym yn bwriadu ei wneud, 534 00:30:26,010 --> 00:30:28,820 sydd yn gwneud rhywfaint o gerddoriaeth cyfrifiadur. 535 00:30:28,820 --> 00:30:32,250 Felly rydym yn mynd i geisio yn gwneud y gân Frere Jacques. 536 00:30:32,250 --> 00:30:35,220 Felly mae yna sawl ymadroddion yn Frere Jacques? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 Pedwar. 539 00:30:39,680 --> 00:30:40,460 Great. 540 00:30:40,460 --> 00:30:42,490 A beth braf yw bod maen nhw i gyd dro ar ôl tro 541 00:30:42,490 --> 00:30:46,990 yr un faint o weithiau, sef dau. 542 00:30:46,990 --> 00:30:50,730 >> Felly mae gennym bedwar ymadroddion pob ailadrodd ddwy waith. 543 00:30:50,730 --> 00:30:53,590 Ac yn arbennig, eu bod mewn rownd. 544 00:30:53,590 --> 00:30:55,340 Ac mae yna lawer, llawer o ffyrdd i weithredu 545 00:30:55,340 --> 00:30:57,520 rownd a allai fod yn hwyl i'w wneud. 546 00:30:57,520 --> 00:31:00,260 Rydw i wedi gwneud hynny mewn 'n bert ffordd syml yma, 547 00:31:00,260 --> 00:31:05,760 sy'n cael ei dim ond i construct-- y llinell swyddogaeth yn cymryd rhestr o werthoedd cerddoriaeth 548 00:31:05,760 --> 00:31:10,390 ac yn troi i mewn i gyfansoddiad dilyniannol drwy gymhwyso y cyfansoddiad dilyniannol 549 00:31:10,390 --> 00:31:13,000 gweithredwr. 550 00:31:13,000 --> 00:31:19,540 >> Ac yna yr wyf yn oedi'r gwahanol rannau trwy eu gwneud yn dechrau gyda gweddill. 551 00:31:19,540 --> 00:31:22,770 Felly, byddaf yn dechrau gyda gweddill ddau fesur, ac yna gweddill y pedwar mesur, 552 00:31:22,770 --> 00:31:26,160 ac yna gweddill y chwech mesurau, ac yna y rownd 553 00:31:26,160 --> 00:31:32,290 gweithio, fel yr ydym i gyd yn gwybod y gân. 554 00:31:32,290 --> 00:31:37,180 Rydym yn gweld dau anodiadau neu addasiadau o werthoedd cerddoriaeth 555 00:31:37,180 --> 00:31:43,150 sy'n cael eu cynnwys yn ddilyniannol hon trefniant o elfennau cerddoriaeth. 556 00:31:43,150 --> 00:31:44,810 Mae gennym cyfaint ychwanegu. 557 00:31:44,810 --> 00:31:48,960 Mae hon yn swyddogaeth i anodi cerddoriaeth gyda chyfaint penodol. 558 00:31:48,960 --> 00:31:51,320 Mae hon yn enghraifft dda o redeg signal MIDI 559 00:31:51,320 --> 00:31:57,510 0-127, y saith darnau o gwybodaeth y gellir eu cyflawni. 560 00:31:57,510 --> 00:32:00,650 >> A then-- gwelsom ei iawn yn fyr, ond mae'r MIDI cyffredinol 561 00:32:00,650 --> 00:32:02,310 rhestr o'r holl wahanol offerynnau. 562 00:32:02,310 --> 00:32:04,450 Ac nid oes llawer gyfan o ohonynt. 563 00:32:04,450 --> 00:32:11,230 Os ydych yn defnyddio gweithfan sain ddigidol, fel Ableton Live neu Pro Tools, 564 00:32:11,230 --> 00:32:17,560 mae 'na amrediad anhygoel o ehangach o syntheseisyddion ac offerynnau VST. 565 00:32:17,560 --> 00:32:21,510 Ond mae safon MIDI yn unig Mae gan ychydig, neu sawl dwsin. 566 00:32:21,510 --> 00:32:22,799 Ac mae rhai ohonynt yn ddoniol. 567 00:32:22,799 --> 00:32:25,840 Roeddwn i'n meddwl y byddai'n hwyl os byddwn yn ei chwarae yr offeryn yr offeryn MIDI 568 00:32:25,840 --> 00:32:30,550 hofrennydd, ac yna'r ffordd nesaf drwy'r cylch, 569 00:32:30,550 --> 00:32:37,980 gwnaethom synth pad, ac yna o arwain corny hwn synth tonnau sgwâr, 570 00:32:37,980 --> 00:32:44,240 ac yna lleisio ooze, sydd yn ychydig bach aneglur ar fy MIDI drwg 571 00:32:44,240 --> 00:32:46,410 syntheseisydd, ond maent yn OK. 572 00:32:46,410 --> 00:32:50,030 >> Ac yna rydym yn gweld osod hwn ac mewn cystrawen o Haskell, 573 00:32:50,030 --> 00:32:54,030 ac yna rydym yn chwarae bob rhan hyn at ei gilydd 574 00:32:54,030 --> 00:32:56,265 gyda'r gweithredwr chyfansoddiad cyfochrog. 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 A gallem yn ôl pob tebyg yn dangos rhywfaint o hyn. 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 Dyma y cod. 579 00:33:08,340 --> 00:33:14,960 A gallwch weld yn C, yna byddwn yn llawer o clirio gwddf a gosod 580 00:33:14,960 --> 00:33:19,760 y cod bwrdd cyn i chi Gallai greu cerddoriaeth fel hyn. 581 00:33:19,760 --> 00:33:22,080 Neu unrhyw rhaglenni eraill iaith, byddech yn ôl pob tebyg 582 00:33:22,080 --> 00:33:27,210 rhaid i ryngweithio gyda rhyw fath o llyfrgell neu API a gosod popeth i fyny, 583 00:33:27,210 --> 00:33:28,725 ac yna byddai'n rhaid i chi lanhau. 584 00:33:28,725 --> 00:33:33,810 Ond yma yn Haskell yw, yr wyf yn meddwl, unwaith byddwch yn cael y hongian ohono, anhygoel 585 00:33:33,810 --> 00:33:35,770 ddarllenadwy ac yn llawn mynegiant iawn. 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 Felly mae gweithredu o Frere Jacques. 588 00:33:43,240 --> 00:33:43,740 Iawn. 589 00:33:43,740 --> 00:33:47,557 Nawr rydym am i ychwanegu offerynnau taro, ac mae hyn yn ychydig Messier ychydig. 590 00:33:47,557 --> 00:33:49,015 Felly, gadewch i ni edrych ar y sleidiau. 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 Felly, y syniad mawr yw gwneud criw o restrau neu rannau. 593 00:34:00,540 --> 00:34:04,140 Ar beiriannau rholio-yn y rhai, mae yna Roedd yn nodweddiadol am efallai wyth 594 00:34:04,140 --> 00:34:08,670 i 10 rhythm neu offerynnau taro rhannau. 595 00:34:08,670 --> 00:34:10,159 Ac yna defnyddio criw o dechnegau. 596 00:34:10,159 --> 00:34:14,889 Ac rydym wedi siarad am these-- ddefnyddio corlannau, hidlwyr, swyddogaethau lamda, 597 00:34:14,889 --> 00:34:19,429 mapio dros rhestri i gynhyrchu gwerthoedd mewn rhyw ystod 1 i r, r yn 16, 598 00:34:19,429 --> 00:34:20,699 neu 32 cam yn y dilyniannwr. 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> Ac yna os oes gwerth yn y rhestr gan ein bod yn rhedeg drwy'r dilyniannwr, 601 00:34:29,920 --> 00:34:34,190 rhedeg drwyddi drosodd a drosodd, mae'n troi ar y nodyn hwnnw, 602 00:34:34,190 --> 00:34:36,060 a sampl sy'n cael ei sbarduno. 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 Dyma holl wahanol ffyrdd rhyfedd Fe ddes i fyny gyda i gynhyrchu nodiadau. 605 00:34:47,110 --> 00:34:48,940 Rhowch gynnig arni ar eich swm lled eich hun. 606 00:34:48,940 --> 00:34:50,360 Bydd yn swnio'n cŵl. 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 Amser yn caniatáu, byddwn yn mynd drwy hyn. 609 00:34:54,690 --> 00:34:59,200 Ond am ar hyn o bryd, yr wyf yn dyfalu dylem demo hyn sydd gennym. 610 00:34:59,200 --> 00:35:01,380 Gobeithio hyn yn mynd OK. 611 00:35:01,380 --> 00:35:02,670 >> Felly mae hyn yn GHCI. 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 A byddwn yn llwytho ffeil Mae gen i enw song.lhs, 614 00:35:09,121 --> 00:35:10,620 sef y ffeil Fi jyst yn dangos i chi. 615 00:35:10,620 --> 00:35:11,470 OK, mawr. 616 00:35:11,470 --> 00:35:15,010 Fel y dywedodd Connor yn gynharach, mae'n llunio, mae'n r math gwirio, 617 00:35:15,010 --> 00:35:18,380 fel y gallaf anadlu yn llawer haws. 618 00:35:18,380 --> 00:35:20,010 Nid yw'n mynd i chwythu i fyny ar mi. 619 00:35:20,010 --> 00:35:22,720 >> I ddim am ddangos rhywbeth defnyddiol i chi. 620 00:35:22,720 --> 00:35:25,900 Gallwch weld bod modiwl lwytho o'r enw 50. 621 00:35:25,900 --> 00:35:28,240 Gallwch bori y modiwl. 622 00:35:28,240 --> 00:35:32,092 Ac mae hyn yn mor neis am doing-- efallai beth 623 00:35:32,092 --> 00:35:34,550 rydych chi'n ei wneud yn peidio Haskell yw Gelwir datblygu meddalwedd, 624 00:35:34,550 --> 00:35:36,980 ond gallwch wneud llawer o stwff hwyliog ar eich pen eich hun. 625 00:35:36,980 --> 00:35:42,410 Ac y llif gwaith yn neis iawn fel o gymharu â llawer o ieithoedd eraill, 626 00:35:42,410 --> 00:35:45,872 oherwydd gallwch weld mewn gwirionedd ffordd ddarllenadwy beth sy'n digwydd. 627 00:35:45,872 --> 00:35:47,830 Felly rydym yn gweld bod gennym yr holl ymadroddion hyn, sy'n 628 00:35:47,830 --> 00:35:53,760 yn rhestrau o gaeau cerddoriaeth, ac yna rydym yn adeiladu'r rhain i fyny i rywbeth mwy o faint, 629 00:35:53,760 --> 00:35:55,220 sydd yn gân cerddoriaeth. 630 00:35:55,220 --> 00:35:58,450 Mae'n uned gerddorol. 631 00:35:58,450 --> 00:36:05,545 Ac yna gallwn chwarae hyn i gyd â swyddogaeth o'r enw gerddoriaeth chwarae. 632 00:36:05,545 --> 00:36:09,040 Gallwch weld bod i lawr yma. 633 00:36:09,040 --> 00:36:11,310 Pa yn unig chwarae. 634 00:36:11,310 --> 00:36:15,040 >> Dylwn say-- doeddwn i ddim yn siarad am yr arwydd doler sy'n mhob man. 635 00:36:15,040 --> 00:36:17,980 Arwydd doler yn weithredwr infix arall. 636 00:36:17,980 --> 00:36:22,500 Ond mae wedi y flaenoriaeth isaf unrhyw weithredydd, a oedd yn effeithiol 637 00:36:22,500 --> 00:36:24,960 yn golygu bod popeth ar i'r chwith o'r arwydd doler 638 00:36:24,960 --> 00:36:28,460 ac ar y dde o'r arwydd doler, rydym yn mynd i gael eu gwerthuso ger ei fron. 639 00:36:28,460 --> 00:36:31,430 Felly mae'n fath o fel arall ffordd o ychwanegu parenthesis. 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: Mae'n bôn cyfansoddiad swyddogaeth. 642 00:36:36,220 --> 00:36:40,026 Ac mae'n sicrhau nad ydych yn have-- os mae gennych swyddogaethau naill ochr neu'r infix 643 00:36:40,026 --> 00:36:42,900 gweithredwyr ar y naill ochr, ni fyddant gysylltu ar ei draws ac yn rhoi i chi 644 00:36:42,900 --> 00:36:46,030 canlyniadau annisgwyl. 645 00:36:46,030 --> 00:36:49,790 >> STEPHEN KREWSON: Felly, rydym can-- gan ddefnyddio hynny, gallwn alw. 646 00:36:49,790 --> 00:36:51,415 Yn gyntaf, byddwn yn ei chwarae heb y drymiau. 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 Dyna yr hofrennydd, yr hofrennydd MIDI. 649 00:37:03,170 --> 00:37:05,495 >> [CHWARAE CERDDORIAETH] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 Mae y don sgwâr. 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 Mae'r ooze llais. 654 00:37:25,490 --> 00:37:27,630 A gallwch chi wir yn mynd yn wyllt gyda hyn. 655 00:37:27,630 --> 00:37:30,872 Yr wyf yn codi yn un eithaf syml, am fy mod yn gwybod na ddylwn brathu i ffwrdd 656 00:37:30,872 --> 00:37:31,830 mwy nag y gallwn i cnoi. 657 00:37:31,830 --> 00:37:36,460 Dim ond yn cadw ei eithaf syml i ddangos y prif syniadau. 658 00:37:36,460 --> 00:37:39,952 Ond yna Roeddwn yn hoffi, rydym wedi rhaid i ychwanegu ychydig o drymiau at hyn. 659 00:37:39,952 --> 00:37:41,910 Dim ond gan fod hwn yn ychydig bach anhreiddiadwy, 660 00:37:41,910 --> 00:37:45,790 a doeddwn i ddim yn defnyddio'r enwi o'r rhannau drwm, 661 00:37:45,790 --> 00:37:49,490 Rwyf mapiwyd them-- am eu bod yn rhan yn y dosbarth hwnnw wedi'u rhifo, 662 00:37:49,490 --> 00:37:51,500 Yr wyf yn eu mapio i ints. 663 00:37:51,500 --> 00:37:53,120 Mae un yn fel drwm bas. 664 00:37:53,120 --> 00:37:54,370 Zero yn ogystal. 665 00:37:54,370 --> 00:37:56,000 Saith yn het uchel. 666 00:37:56,000 --> 00:38:00,920 Ac i lawr yn fan hyn lle mae'r swyddogaethau yn cael ychydig yn fwy ar hap, 667 00:38:00,920 --> 00:38:02,100 mae'r rhain yn debyg drymiau conga. 668 00:38:02,100 --> 00:38:08,360 >> Felly, os ydych yn meddwl about-- efallai ffordd hwyliog i weithredu peiriant drwm 669 00:38:08,360 --> 00:38:12,830 yw defnyddio drefnus iawn patrymau ar eich drwm bas. 670 00:38:12,830 --> 00:38:17,640 Felly, er enghraifft, ar ffiltro dros y rhestr gyda phopeth sy'n rhoi nôl 671 00:38:17,640 --> 00:38:20,590 o 1 pan mae wedi cymryd modiwl 04. 672 00:38:20,590 --> 00:38:27,190 Felly, yr wyf yn cael 1, 5, 9, 13, 17-- felly mae hyn yw curiad cyntaf o bob mesur. 673 00:38:27,190 --> 00:38:32,860 >> Ac yna mae hyn yr un fath beth symud dros dau gam. 674 00:38:32,860 --> 00:38:33,850 Felly dyna yr offbeat. 675 00:38:33,850 --> 00:38:37,480 Felly byddai hyn yn rhywbeth fel het uchel. 676 00:38:37,480 --> 00:38:39,640 Ac yna eto, i lawr yma, 'i' ychydig ar hap, 677 00:38:39,640 --> 00:38:41,080 oherwydd ein bod yn gwneud drymiau conga. 678 00:38:41,080 --> 00:38:44,180 Ac mae gennyf rai maracas i lawr yma, hefyd. 679 00:38:44,180 --> 00:38:50,280 >> Er mwyn imi alw peiriant drwm chwarae, ond byddai'n mynd ymlaen am byth, 680 00:38:50,280 --> 00:38:53,700 a gallai fod yn dechrau crafangio i fyny yr holl atgof yn fy system. 681 00:38:53,700 --> 00:38:57,090 Felly byddaf yn galw swyddogaeth hon chwarae cerddoriaeth, sydd, fel y byddwn yn gweld, 682 00:38:57,090 --> 00:39:02,020 defnyddiwch y cyfansoddiad cyfochrog truncating i chwarae ein cân bach Frere Jacques 683 00:39:02,020 --> 00:39:04,200 ynghyd â hyn pheiriant drwm 'n annaearol. 684 00:39:04,200 --> 00:39:06,190 Felly, gadewch i ni edrych. 685 00:39:06,190 --> 00:39:10,920 Ac os gwelwch yn dda yn gwella ar fy trefniant o holl rannau drwm. 686 00:39:10,920 --> 00:39:13,375 Nid yw fy arbenigedd, ond yr wyf yn wedi cael llawer o hwyl wrth wneud hynny. 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [CHWARAE CERDDORIAETH] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> Felly, wrth gwrs, mae hyn i gyd ychydig Nid yw mor hwyl 691 00:39:56,980 --> 00:40:01,100 os na allwn drosi at sgôr felly efallai ei 692 00:40:01,100 --> 00:40:04,650 gellid eu dehongli gan berfformiwr dynol. 693 00:40:04,650 --> 00:40:06,535 Felly, ni fyddaf yn rhedeg yma. 694 00:40:06,535 --> 00:40:07,910 Rwyf eisoes wedi cynhyrchu y ffeiliau. 695 00:40:07,910 --> 00:40:10,280 Gallwch weld bod yna dot LilyPond file-- ac mae hyn yn 696 00:40:10,280 --> 00:40:14,500 fydd fy segue drosodd i Connor-- a ffeil dot MIDI, 697 00:40:14,500 --> 00:40:18,610 a ffeil dot PDF, sef yr hyn Bydd LilyPond yn y pen draw yn cynhyrchu. 698 00:40:18,610 --> 00:40:23,770 >> Ond mae'r rhain yn sgriptiau hynny, a byddaf dim ond eu rhedeg gyda chymorth eu hopsiynau. 699 00:40:23,770 --> 00:40:28,090 Os ydych yn cael y rhain yn weithredol â Euterpea, gallwch greu ffeil MIDI. 700 00:40:28,090 --> 00:40:31,160 Ac yna o'r ffeil MIDI gyda'r rhaglen hon MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 gallwch greu Lily Ffeil pwll, ac yna rydych 702 00:40:34,930 --> 00:40:37,974 Gall creu PDF o'r sgôr. 703 00:40:37,974 --> 00:40:39,390 A dylem gymryd golwg ar hyn. 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 Felly bydd Connor yn ôl pob tebyg yn dangos chi sut i anodi hyn yn well, 706 00:40:55,140 --> 00:41:02,570 ond mae hyn yn Frere Jacques fel a gynhyrchir gan mi yn Euterpea. 707 00:41:02,570 --> 00:41:07,300 Mae'n jyst yn C. Rwyf dylai fod wedi cyfrifedig yr hyn y mae'r darnia 'i' mewn gwirionedd yn. 708 00:41:07,300 --> 00:41:11,090 Ond dyna y gweill ar gyfer sut yr ydych yn gwneud hynny â hynny. 709 00:41:11,090 --> 00:41:12,950 Gadewch i ni siarad mwy am LilyPond. 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK Gadewch i ni weld. 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 Wnaethoch chi sôn Dysgwch Chi Haskell? 713 00:41:21,419 --> 00:41:22,460 STEPHEN KREWSON: O ie. 714 00:41:22,460 --> 00:41:23,480 Edrychwch ar Dysgwch Chi Haskell. 715 00:41:23,480 --> 00:41:24,410 Mae yn yr adnoddau. 716 00:41:24,410 --> 00:41:26,830 Dyna sut yr wyf yn dechrau dysgu, ac mae'n wych. 717 00:41:26,830 --> 00:41:27,580 Dysgu Ddim yn fud. 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: Felly mae'n ar-lein. 719 00:41:28,829 --> 00:41:34,760 Felly a guy a enwir [Anghlywadwy] learnyouahaskell.com, dim mannau. 720 00:41:34,760 --> 00:41:37,065 Gramadeg yn sâl. 721 00:41:37,065 --> 00:41:38,690 STEPHEN KREWSON: Mae'n darluniadol, hefyd. 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: Felly beth yw LilyPond? 723 00:41:39,440 --> 00:41:42,480 Mae'n rhaglennu declarative iaith ar gyfer cysodi cerddoriaeth. 724 00:41:42,480 --> 00:41:45,480 Felly declarative-- gallwch meddwl am bethau fel HTML, 725 00:41:45,480 --> 00:41:50,900 lle nad ydych yn saying-- HTML nid yw'n dweud sut y dylai porwyr gwe 726 00:41:50,900 --> 00:41:52,180 rendro tudalennau gam wrth gam. 727 00:41:52,180 --> 00:41:54,096 Dim ond ei fod yn dweud hyn yn ddisgrifiad testunol 728 00:41:54,096 --> 00:41:56,100 o'r hyn yr ydych am i'r dudalen i edrych fel. 729 00:41:56,100 --> 00:41:59,310 >> Ac yna mae hefyd yn rhaglen sy'n llunio iaith hon, 730 00:41:59,310 --> 00:42:02,300 neu ei fod yn darllen ei mewn ac yna mewn gwirionedd mae'r cysodi ar eich rhan, 731 00:42:02,300 --> 00:42:05,570 ac mae'n poeri allan y rhain hyfryd yn edrych sgoriau PDF. 732 00:42:05,570 --> 00:42:08,250 Gallwch hefyd gael fformat PNG neu beth bynnag. 733 00:42:08,250 --> 00:42:10,300 Ffordd dda i feddwl o hyn yw trwy gydweddiad 734 00:42:10,300 --> 00:42:16,620 yw bod LaTeX yn fath o fel LillyPond, ond am ychydig cysodi cyffredin. 735 00:42:16,620 --> 00:42:20,360 Felly, yn lle o- nid yw'n WYSIWYG, Beth chi'n ei weld 736 00:42:20,360 --> 00:42:22,960 A yw hyn a gewch, fel, yn dweud Finale, neu Sibelius, 737 00:42:22,960 --> 00:42:27,430 neu Microsoft Word, lle gallwch deipio i mewn amser real a drafft pethau mewn amser real 738 00:42:27,430 --> 00:42:31,340 ac yn gweld newidiadau ar unwaith. 739 00:42:31,340 --> 00:42:32,140 >> Mae wedi ei seilio testun. 740 00:42:32,140 --> 00:42:35,290 Mae'n rhaid i chi lunio eich sgorau ddefnyddio rhaglen ar wahân 741 00:42:35,290 --> 00:42:37,090 ac ewch allan ffeiliau PDF yn ddiweddarach. 742 00:42:37,090 --> 00:42:43,320 Mae hwn yn dipyn llai gyfleus i'w defnyddio os ydych yn 743 00:42:43,320 --> 00:42:46,520 ceisio ysgrifennu yn uniongyrchol i mewn sgôr ac rydych yn 744 00:42:46,520 --> 00:42:48,620 ceisio cyfansoddi ar y cyfrifiadur. 745 00:42:48,620 --> 00:42:50,830 Ond mae yna lawer o fanteision ar ei gyfer. 746 00:42:50,830 --> 00:42:56,110 Un, mae'n edrych yn llawer brafiach, oherwydd gall LillyPond mewn gwirionedd 747 00:42:56,110 --> 00:42:58,210 cymryd yr amser i wneud penderfyniadau cynllun yn iawn, 748 00:42:58,210 --> 00:43:02,380 yn wahanol i Sibelius neu Finale, sydd wedi i wneud algorithmau cyfaddawdu felly 749 00:43:02,380 --> 00:43:05,020 eu bod yn gallu arddangos pethau mewn amser real. 750 00:43:05,020 --> 00:43:07,660 >> Felly pam mae LilyPond-- graffeg cyfrifiadurol yn galed. 751 00:43:07,660 --> 00:43:10,535 Os ydych yn gwneud unrhyw beth gyda cherddoriaeth a'ch bod am i ysgrifennu allan sgorau, 752 00:43:10,535 --> 00:43:13,900 nad ydych am i ysgrifennu allan bopeth gan eich hun 753 00:43:13,900 --> 00:43:19,040 gan ddechrau gyda sut i dynnu staff a sut i dynnu llyfrau nodiadau. 754 00:43:19,040 --> 00:43:21,020 Mae'n anodd iawn. Mae wedi ei wneud o'r blaen. 755 00:43:21,020 --> 00:43:22,170 Eich bod yn iawn. 756 00:43:22,170 --> 00:43:26,200 >> Os ydych am ddefnyddio Finale neu Sibelius, y fformatau ffeil ar gyfer y pethau hynny 757 00:43:26,200 --> 00:43:30,180 yn gymhleth iawn, ac ni allwch 'n sylweddol yn eu defnyddio programmatically. 758 00:43:30,180 --> 00:43:35,020 Gallwch agor Sibelius gyda Finale ac yn mynd i File, Allforio fel PDF eich hun, 759 00:43:35,020 --> 00:43:37,600 ond ni allwch mewn gwirionedd yn galw hynny o sgript. 760 00:43:37,600 --> 00:43:40,440 LillyPond, gallwch ffonio o sgriptiau hynny. 761 00:43:40,440 --> 00:43:44,397 Gallech yn hawdd ailadrodd LillyPond gyda LaTeX. 762 00:43:44,397 --> 00:43:47,230 Ni fydd gennyf bod llawer o amser i fynd i mewn i technolegau hyn ar hyn o bryd, 763 00:43:47,230 --> 00:43:48,321 ond maent yn bodoli. 764 00:43:48,321 --> 00:43:50,070 Os ydych chi eisiau edrych mewn llyfr LillyPond, 765 00:43:50,070 --> 00:43:53,760 ei fod yn rhaglen sy'n dod gyda eich dosbarthiad LillyPond, 766 00:43:53,760 --> 00:43:57,030 a 'i' i ailadrodd Darnau LillyPond i mewn i LaTeX 767 00:43:57,030 --> 00:44:00,340 os ydych chi am wneud rhywbeth fel dogfen cerddoleg mawr 768 00:44:00,340 --> 00:44:02,289 gydag enghreifftiau, er enghraifft. 769 00:44:02,289 --> 00:44:04,580 Ac mae'n sgil da ar gyfer bywyd os ydych yn gwneud unrhyw beth 770 00:44:04,580 --> 00:44:05,770 gyda cherddoriaeth, nid dim ond CS50. 771 00:44:05,770 --> 00:44:09,320 Rwyf wedi defnyddio LillyPond ar gyfer yr holl fy prosiectau cyfansoddi 772 00:44:09,320 --> 00:44:11,880 ers i mi fod yn y bôn yn uwch yn yr ysgol uwchradd. 773 00:44:11,880 --> 00:44:13,455 >> Felly dyma rai enghreifftiau syml. 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 Mae hyn yn cynrychioli y bôn o lefel o anhawster 776 00:44:21,060 --> 00:44:23,481 bod y rhan fwyaf o bobl y byddai wynebu'r peth yr oeddent yn ceisio'i 777 00:44:23,481 --> 00:44:24,980 i ddefnyddio LilyPond ar gyfer prosiectau syml. 778 00:44:24,980 --> 00:44:29,519 Mae'r un cyntaf yn y dechrau i rhagarweiniad corâl gan Bach. 779 00:44:29,519 --> 00:44:31,810 Mae hyn yn un gwaelod yn dyfyniad o un o fy gwaith eu hunain, 780 00:44:31,810 --> 00:44:34,650 ac mai dim ond yno i ddangos chi pethau fel [Anghlywadwy] 781 00:44:34,650 --> 00:44:38,550 rhoi llinellau lluosog yn yr un staff, pa mor delynegol undersetting gweithio. 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 Underlays telynegol yn beth sy'n iawn hawdd i'w defnyddio LilyPond ar gyfer cerddoriaeth gorawl. 784 00:44:46,110 --> 00:44:48,814 >> Ac felly yna mae rhai yn fwy enghreifftiau cymhleth yma. 785 00:44:48,814 --> 00:44:50,980 Mae'r rhain i gyd yn cael eu gwneud mewn LilyPond ac maent yn ddichonadwy. 786 00:44:50,980 --> 00:44:55,280 Mae'r dyfyniad cyntaf yn dod o [Anghlywadwy] gan [Anghlywadwy]. 787 00:44:55,280 --> 00:44:58,860 Ac mae hyn [Anghlywadwy] o darn ar gyfer unawd bas 788 00:44:58,860 --> 00:45:03,550 ffliwt gan [Anghlywadwy], sy'n longtime-- sy'n 789 00:45:03,550 --> 00:45:07,101 Roedd yn aelod longtime o'r adran gerddoriaeth yma, yr wyf yn meddwl. 790 00:45:07,101 --> 00:45:08,600 Dydw i ddim yn siwr ble mae'n mynd i ffwrdd i. 791 00:45:08,600 --> 00:45:12,410 Ond yr oedd y cynghorydd y Harvard Cymdeithas Cyfansoddwyr am amser hir. 792 00:45:12,410 --> 00:45:13,530 Dyn gwych. 793 00:45:13,530 --> 00:45:16,920 Ac mae'n ysgrifennu rhywfaint o gerddoriaeth sydd wedi iawn nodiant gymhleth sy'n LillyPond 794 00:45:16,920 --> 00:45:20,500 serch hynny yn gallu ymdrin iawn 'n glws. 795 00:45:20,500 --> 00:45:26,030 >> Felly, dim ond i roi ymdeimlad o chi beth galluoedd y peth hyn yn yw-- felly 796 00:45:26,030 --> 00:45:28,960 y mewnolion o LillyPond yn gymhleth iawn. 797 00:45:28,960 --> 00:45:31,060 A gallwch ei ddefnyddio ar gyfer amser hir, gan gynnwys 798 00:45:31,060 --> 00:45:32,520 ar gyfer rhai 'n bert gymhleth pethau, heb wir 799 00:45:32,520 --> 00:45:34,060 gorfod gwybod llawer am iddynt. 800 00:45:34,060 --> 00:45:38,720 Ond mae'r syniad sylfaenol yw y ar y lefel isaf, mae'r atomau o LillyPonds 801 00:45:38,720 --> 00:45:39,970 yn y nodiadau. 802 00:45:39,970 --> 00:45:42,761 Mae'r nodiadau yn cynnwys cyd-destun o'r enw lleisiau. 803 00:45:42,761 --> 00:45:44,510 Felly y cyd-destun llais bôn cyfateb 804 00:45:44,510 --> 00:45:47,410 i un llinell o polyffoni. 805 00:45:47,410 --> 00:45:49,410 Ac yna gall fod yn gyd-destun cynnwys hierarchaidd 806 00:45:49,410 --> 00:45:53,590 mewn rhai lefel uwch sy'n yn cynrychioli staff ar y sgôr 807 00:45:53,590 --> 00:45:56,750 neu grwpiau mwy fel staff piano neu staff côr, 808 00:45:56,750 --> 00:45:58,990 ac yna yn y pen draw cyd-destunau sgôr cyfan. 809 00:45:58,990 --> 00:46:02,260 A gallwch gwmpasu mewn gwirionedd lluosog sgorau mewn llyfr. 810 00:46:02,260 --> 00:46:05,770 >> A phob cyd-destun yn cael nifer y engrafwyr ynghlwm. 811 00:46:05,770 --> 00:46:08,340 Os ydych yn edrych trwy'r gynnwys y cyd-destun 812 00:46:08,340 --> 00:46:14,410 ac argraffu symbol penodol neu ddosbarth penodol o symbolau yn ôl yr angen. 813 00:46:14,410 --> 00:46:17,840 Felly, i bob cyd-destun llais, mae [Anghlywadwy] Nodiadau 814 00:46:17,840 --> 00:46:24,270 ysgythrwr sydd yn y bôn yn swyddogaeth neu gwrthrych sy'n ysgrifennu allan yr holl nodyn 815 00:46:24,270 --> 00:46:26,290 pennau ar y rhannau cywir o'r dudalen. 816 00:46:26,290 --> 00:46:29,510 Yna mae 'na ysgythrwr hollt, a oedd yn ysgrifennu allan holltau ar y staff. 817 00:46:29,510 --> 00:46:31,517 Yna mae metronome marc ysgythrwr sy'n 818 00:46:31,517 --> 00:46:33,100 ysgrifennu allan marciau metronom at sgôr. 819 00:46:33,100 --> 00:46:36,410 Ac mae'r rhain i gyd yn cyd-fynd 'n bert ymhell i mewn i'r hierarchaeth. 820 00:46:36,410 --> 00:46:39,500 Ac mae'n iawn, iawn, iawn customizable, a oedd ei angen arnoch 821 00:46:39,500 --> 00:46:42,880 os ydych chi am gael pethau fel 'na. 822 00:46:42,880 --> 00:46:45,730 >> Felly yr holl gyd-destunau yn cael llawer o nodweddion gwahanol 823 00:46:45,730 --> 00:46:52,410 eich bod yn gallu addasu ar gyfer popeth o'r gofod i wahanol ffont 824 00:46:52,410 --> 00:46:54,942 Detholiad i feintiau o bethau. 825 00:46:54,942 --> 00:46:56,900 Os ydych am wneud hyd yn oed pethau'n fwy cymhleth, 826 00:46:56,900 --> 00:46:59,210 mae 'na iaith sgriptio wreiddio. 827 00:46:59,210 --> 00:47:01,820 Maent yn defnyddio cynllun, a yn dafodiaith o Lisp. 828 00:47:01,820 --> 00:47:04,960 Mae'r rhain yn debyg nad yn ei wneud golygu unrhyw beth i chi. 829 00:47:04,960 --> 00:47:06,900 Ond yn y bôn, cynllun swyddogaethol arall 830 00:47:06,900 --> 00:47:09,500 iaith raglennu, fwy neu lai. 831 00:47:09,500 --> 00:47:10,800 >> STEPHEN KREWSON: Y clymu i mewn. 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: Yeah. 833 00:47:12,690 --> 00:47:15,390 Mae'n tei-mewn da, mae'n debyg. 834 00:47:15,390 --> 00:47:20,150 Ac mae'n cael ei ddefnyddio fel iaith addysgu, mewn gwirionedd, i lawr Offeren Ave. Yn MIT. 835 00:47:20,150 --> 00:47:26,590 Ac mae'n handi iawn ar gyfer LillyPond am wahanol resymau technegol. 836 00:47:26,590 --> 00:47:30,317 >> Ac felly os ydych am wneud yn syml tweaks ddibynnol ar conditionals, 837 00:47:30,317 --> 00:47:32,900 am example-- mae rhai cyflwr sgôr sy'n cael ei bodloni, 838 00:47:32,900 --> 00:47:36,495 gwneud newidiadau i'r cynllun neu whatnot-- yna 839 00:47:36,495 --> 00:47:37,620 cyfleusterau hynny yno. 840 00:47:37,620 --> 00:47:38,667 Maent yn gymhleth. 841 00:47:38,667 --> 00:47:40,250 Felly dyma sampl cod eithaf syml. 842 00:47:40,250 --> 00:47:43,810 Mae'n bum llinell. 843 00:47:43,810 --> 00:47:46,120 Yn y bôn, dw i'n diffinio dau o staff. 844 00:47:46,120 --> 00:47:46,904 Mae yn 3/4. 845 00:47:46,904 --> 00:47:48,695 Roedd y staff cyntaf yn cael ynghlwm marc tempo, 846 00:47:48,695 --> 00:47:51,110 ond sy'n mynd mewn gwirionedd i fynd ymlaen i'r sgôr cyfan, 847 00:47:51,110 --> 00:47:54,960 oherwydd bod marciau tempo ar y lefel sgôr. 848 00:47:54,960 --> 00:47:59,044 Mae'r ysgythrwr marc metronome ynghlwm i sgorio cyd-destun. 849 00:47:59,044 --> 00:48:01,460 Mae gwahanol allweddi, oherwydd bod y [Anghlywadwy] ysgythrwr 850 00:48:01,460 --> 00:48:02,710 Atodir y staff. 851 00:48:02,710 --> 00:48:04,441 Alli 'n weithredol wneud yw. 852 00:48:04,441 --> 00:48:06,190 Roedd y sampl Ysgrifennais yn mewn gwirionedd yn C fwyaf, 853 00:48:06,190 --> 00:48:07,990 ond mae'r un i arddangos y gallwch gael 854 00:48:07,990 --> 00:48:09,570 gwahanol allweddi mewn gwahanol o staff. 855 00:48:09,570 --> 00:48:15,710 Ac mae'r gystrawen sylfaenol yw i ysgrifennu yn nodi enwau â E, F, G, beth bynnag. 856 00:48:15,710 --> 00:48:18,910 Os ydych am wneud hapnodau, chi-ddodiad IS neu ES. 857 00:48:18,910 --> 00:48:22,640 Mae hyn yn dod o Iseldiroedd confensiynau musicological. 858 00:48:22,640 --> 00:48:28,290 >> Ac i wneud neidiau wythfed, rhaid i chi ddefnyddio mae'r rhain ticiwch marciau, coma neu collnod. 859 00:48:28,290 --> 00:48:30,580 Mae'r berthynas yn unig yn golygu beth bynnag yr ydych gael nodyn, 860 00:48:30,580 --> 00:48:34,080 bydd yn cael ei plaec yn awtomatig yn y wythfed agosaf at yr un blaenorol. 861 00:48:34,080 --> 00:48:37,624 Ac os ydych chi am i neidio mwy na a fifth-- dweud pumed neu more-- 862 00:48:37,624 --> 00:48:39,165 yna rhaid i chi ddefnyddio'r [Anghlywadwy]. 863 00:48:39,165 --> 00:48:42,580 Ond fel arall, nid oes rhaid i chi pennu'r wythfed o bob un nodyn. 864 00:48:42,580 --> 00:48:46,130 >> Ac yn gymharol C, cysefin, a C, 'ch jyst yn nodi canol C 865 00:48:46,130 --> 00:48:48,630 a sylfaen C, nodiadau arbennig yn gyntaf. 866 00:48:48,630 --> 00:48:55,020 Yna mae gennych staff hyn sy'n trefnu y ddau lleisiau neu samplau o gerddoriaeth, 867 00:48:55,020 --> 00:48:56,730 a bod gennych sgôr. 868 00:48:56,730 --> 00:48:58,440 A bod yn edrych fel hyn. 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> Os ydych am gymryd yr amser i copïo sampl hwnnw o LillyPond 871 00:49:05,380 --> 00:49:07,530 cod ar y blaenorol llithro i lawr yma, ac yr ydych 872 00:49:07,530 --> 00:49:09,030 Gall ysgrifennu am LillyPond eich hun. 873 00:49:09,030 --> 00:49:11,280 Yr wyf yn gwybod ein bod wedi cael rhywbeth sy'n edrych yn llawer fel hyn. 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 Felly mae technoleg arall Gelwir XML Cerddoriaeth a gynhelir 876 00:49:19,610 --> 00:49:22,030 gan hollol wahanol bobl. 877 00:49:22,030 --> 00:49:28,150 XML yn testunol data structure-- wyf Ni ddylai ddweud structure-- data dweud 878 00:49:28,150 --> 00:49:29,580 math map trosiad o. 879 00:49:29,580 --> 00:49:33,800 Ac mae'n cynllunio i ddal data hierarchaidd yn dda iawn. 880 00:49:33,800 --> 00:49:37,050 HTML, er enghraifft, yn fath o XML. 881 00:49:37,050 --> 00:49:41,090 A allwch chi ddweud XML am eu bod yn roedd gan y holl cromfachau ongl a ongl 882 00:49:41,090 --> 00:49:44,700 marciau slaes braced bod meysydd sioe data. 883 00:49:44,700 --> 00:49:47,390 >> Nid oes gennyf cod enghraifft o Gerddoriaeth XML. 884 00:49:47,390 --> 00:49:50,450 Gallwch ddod o hyd eich hun. 885 00:49:50,450 --> 00:49:53,735 Yn y bôn, y rheswm efallai y byddwch am i ddefnyddio XML fel y cam canolradd 886 00:49:53,735 --> 00:49:55,980 yw, yn gyntaf oll, mae'n fformat cyfnewidfa 887 00:49:55,980 --> 00:50:02,301 am y bôn every-- na ddylwn ddweud pob, ond mae llawer o sgôr gwahanol 888 00:50:02,301 --> 00:50:02,800 awduron. 889 00:50:02,800 --> 00:50:04,966 Felly, os byddwch yn ysgrifennu mewn Cerddoriaeth XML, nid yn unig y gall LillyPond 890 00:50:04,966 --> 00:50:08,080 ei ddarllen gyda chymorth auxilary hwn rhaglen o'r enw XML Cerddoriaeth i LY, 891 00:50:08,080 --> 00:50:11,360 ond gall hefyd Finale ddarllen hynny, gall Sibelius ddarllen. 892 00:50:11,360 --> 00:50:14,770 Yn dibynnu ar sut y mae eich gwrthrych mewnol hierarchaeth yn gweithio i gynrychioli cerddoriaeth, 893 00:50:14,770 --> 00:50:18,820 efallai y byddai'n haws i ysgrifennu allan i XML Cerddoriaeth nag i LillyPond 894 00:50:18,820 --> 00:50:22,410 a dim ond yn dibynnu ar XML Cerddoriaeth i LY i wneud y trawsnewid. 895 00:50:22,410 --> 00:50:24,282 >> Nid wyf yn credu [Anghlywadwy] Mae XML Cerddoriaeth. 896 00:50:24,282 --> 00:50:25,490 STEPHEN KREWSON: Nid Mae'n gwneud. 897 00:50:25,490 --> 00:50:26,340 Mae rhywun yn gweithio arno, er. 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK. 899 00:50:27,090 --> 00:50:31,040 Nid oes gan Euterpea a Swyddogaeth allbwn XML Music eto. 900 00:50:31,040 --> 00:50:35,340 Os ydych am gael syniad prosiect terfynol, efallai i chi gysylltu â guys 901 00:50:35,340 --> 00:50:38,620 bod Stephen yn gwybod, ac gallent ddefnyddio eich cymorth. 902 00:50:38,620 --> 00:50:40,992 >> STEPHEN KREWSON: Byddwn wrth fy modd bod. 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: Hefyd, yn y bôn, pob rhaglennu ieithoedd 904 00:50:43,450 --> 00:50:46,610 sy'n werth ei halen Mae gan lyfrgell XML yn barod, 905 00:50:46,610 --> 00:50:51,030 er mwyn i chi yn fewnol drosi i gyd eich cerddoriaeth i mewn i ryw wrthrych 906 00:50:51,030 --> 00:50:54,120 y gall y llyfrgell XML ysgrifennu allan y byddai angen llai o 907 00:50:54,120 --> 00:50:57,470 newidiadau i'ch strwythur mewnol am ba bynnag cerddoriaeth gwrthrychau chi 908 00:50:57,470 --> 00:51:00,310 am ysgrifennu nag ysgrifennu ei yn uniongyrchol yn LillyPond byddai. 909 00:51:00,310 --> 00:51:04,380 Yna, dim ond ei hargraffu gyda XML gyda llyfrgelloedd XML yn eich iaith, 910 00:51:04,380 --> 00:51:07,260 a fydd yn gwarantu ei fod yn syntactically gywir a phopeth, 911 00:51:07,260 --> 00:51:08,720 ac yna ei newid i'r LillyPond. 912 00:51:08,720 --> 00:51:11,060 Felly technoleg efallai y byddwch am edrych i mewn os ydych yn gwneud rhywbeth 913 00:51:11,060 --> 00:51:11,650 fel hyn. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [Anghlywadwy], un arall technoleg auxilarry. 916 00:51:16,370 --> 00:51:21,700 Mae hyn yn y bôn Gwaith Tech neu Tech Studio i LillyPond. 917 00:51:21,700 --> 00:51:25,380 Felly mae'n cynnig help gyda cystrawen, gyda thempledi 918 00:51:25,380 --> 00:51:28,770 ar gyfer gwahanol cyffredin cyfuniadau o offerynnau. 919 00:51:28,770 --> 00:51:32,780 Mae'n caniatáu sgrîn hollt gwylio hynny gallwch gael eich cod mewn un ffenestr 920 00:51:32,780 --> 00:51:37,350 a PDF mewn ffenestr arall ac cliciwch ar leoedd yn y PDF 921 00:51:37,350 --> 00:51:40,650 i neidio i'r perthnasol mannau yn eich cod ffynhonnell. 922 00:51:40,650 --> 00:51:45,330 Mae hyn yn fwy defnyddiol os ydych mewn gwirionedd ysgrifennu LillyPond ffeiliau eich hun 923 00:51:45,330 --> 00:51:47,400 nag os ydych yn cynhyrchu nhw programmatically. 924 00:51:47,400 --> 00:51:51,230 Ond unwaith eto, 'i' rhywbeth ddefnyddiol cael. 925 00:51:51,230 --> 00:51:51,970 >> Great. 926 00:51:51,970 --> 00:51:55,860 Resources-- arall 'n annhymerus' jyst fynd drwy hyn yn gyflym iawn. 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond wedi dogfennaeth ragorol ar ei wefan. 928 00:52:01,270 --> 00:52:02,270 Mae ganddynt tiwtorial. 929 00:52:02,270 --> 00:52:03,478 Mae ganddynt cyfeirnod cystrawen. 930 00:52:03,478 --> 00:52:07,010 Maent wedi cannoedd o bytiau ar gyfer gwahanol bethau bach 931 00:52:07,010 --> 00:52:09,930 Efallai y bydd angen yo ei wneud i ddangos galluoedd amrywiol. 932 00:52:09,930 --> 00:52:12,250 Os ydych am ddefnyddio yr iaith sgriptio 933 00:52:12,250 --> 00:52:14,740 neu wneud helaethach customizations, yna mae 934 00:52:14,740 --> 00:52:16,730 mewnolion cyfeirio at y URL. 935 00:52:16,730 --> 00:52:21,950 Os ydych am ddefnyddio XML Cerddoriaeth, mae ' hynny URL, musicxml.com/tutorial. 936 00:52:21,950 --> 00:52:27,960 >> Ac yna os bydd angen cynllun i ddysgu oherwydd eich bod mewn gwirionedd am ei ddefnyddio 937 00:52:27,960 --> 00:52:30,960 cyfleusterau sgriptio yng LillyPond, Yna mae 'na [Anghlywadwy] a elwir yn 938 00:52:30,960 --> 00:52:32,918 Dehongli Strwythuredig Rhaglenni Cyfrifiadur, 939 00:52:32,918 --> 00:52:35,820 sydd nid yn unig yr ail gwerslyfr CS mwyaf erioed written-- 940 00:52:35,820 --> 00:52:39,770 dod o hyd i mi wedyn os ydych eisiau gwybod yr hyn yr wyf yn credu bod y un yw-- mwyaf 941 00:52:39,770 --> 00:52:43,580 ond mae hefyd yn dda iawn Cyflwyniad i'r iaith priodol. 942 00:52:43,580 --> 00:52:46,630 Ni fydd angen i chi fwy nag yr ychydig adran gyntaf. 943 00:52:46,630 --> 00:52:47,827 >> A dyna ni. 944 00:52:47,827 --> 00:52:48,410 Unrhyw gwestiynau? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> MYFYRIWR: Ble alla i lwytho i lawr eich gynhyrchir Frere Jacques 947 00:52:57,972 --> 00:53:01,050 fel y gallaf roi ar fy iPod? 948 00:53:01,050 --> 00:53:07,574 >> STEPHEN KREWSON: Wel, gallwch ysgrifennu allan i ryw ffeil wav yn Euterpea. 949 00:53:07,574 --> 00:53:08,490 Ac mae gennych yr cod. 950 00:53:08,490 --> 00:53:10,000 Mae'n ar GitHub. 951 00:53:10,000 --> 00:53:15,590 Gwnewch eich hun o amrywiadau Frere Jacques gan feddwl cwch gwenyn CS50. 952 00:53:15,590 --> 00:53:17,095 Byddai'n wych. 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: Unrhyw un arall? 954 00:53:18,220 --> 00:53:20,261 STEPHEN KREWSON: Mae angen drwm bas yn well, hefyd. 955 00:53:20,261 --> 00:53:21,935 Mae'n wirioneddol ddrwg. 956 00:53:21,935 --> 00:53:26,565 >> MYFYRIWR: Euterpea nid yn unig wedi yr ochr cyfansoddiad, ond signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHEN KREWSON: Ydw. 958 00:53:27,440 --> 00:53:30,100 Yn wir, mae'r gwaith yr wyf yn gwnaeth yn Euterpea pan fyddaf yn 959 00:53:30,100 --> 00:53:33,450 Cymerodd this-- mae 'na cwrs yn graddio yn Iâl sy'n 960 00:53:33,450 --> 00:53:35,900 defnyddio iddo-- oedd ar synthesis gadarn. 961 00:53:35,900 --> 00:53:39,810 Felly mae 'na' n sylweddol ffordd braf ddefnyddio saethau 962 00:53:39,810 --> 00:53:46,150 a rhai o'r nodiant a welsom o cyfansoddi ynghyd swyddogaethau signal. 963 00:53:46,150 --> 00:53:50,610 Yn benodol, mae'r bas gyfer y rhan fwyaf ohonynt yn unig yw ton sin syml. 964 00:53:50,610 --> 00:53:54,240 Ond os byddwch yn dechrau cyfansoddi rhai mewn ffyrdd rhaglennol 'n annaearol, 965 00:53:54,240 --> 00:54:00,010 gallwch gael sain crazy effeithiau, megis rhaeadrau 'n annaearol. 966 00:54:00,010 --> 00:54:04,640 Gallwch greu gritty iawn swnio gyda llawer o fodiwleiddio. 967 00:54:04,640 --> 00:54:07,730 >> Fe wnes prosiect ar gronynnog synthesis, sef 968 00:54:07,730 --> 00:54:12,290 rhywle yn y canol FM a samplo. 969 00:54:12,290 --> 00:54:15,230 Byddwch yn cymryd fach iawn, samplau bach, ac yna 970 00:54:15,230 --> 00:54:20,440 yn eu cyfuno â rhyw fath o modulator a cronni sain cyfoethocach. 971 00:54:20,440 --> 00:54:24,900 Rydym hefyd yn gwneud modelu ffisegol, felly ceisio meddwl am y ffiseg 972 00:54:24,900 --> 00:54:29,410 a psychoacoustics o rhywbeth fel utgorn, a meddwl am y ffordd 973 00:54:29,410 --> 00:54:32,320 y sain yn bownsio oddi ar y gloch yr utgorn 974 00:54:32,320 --> 00:54:35,200 ac acwsteg yr ystafell a modelu 975 00:54:35,200 --> 00:54:40,195 hynny gyda'r oscillators sylfaenol. 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: Diolch cymaint. 978 00:54:48,940 --> 00:54:50,140 Diolch am ddod. 979 00:54:50,140 --> 00:54:52,400 A dwi'n bob amser yn barod i cymryd cwestiynau gan 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: Yeah. 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