1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN: Živjo, vsi. 3 00:00:07,170 --> 00:00:08,640 Dobrodošli v našem seminarju. 4 00:00:08,640 --> 00:00:10,009 Moje ime je Sam. 5 00:00:10,009 --> 00:00:11,050 HUGH Zabriskie: Jaz sem Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM GREEN: In bomo danes govorili o JavaScript in Web Audio API. 7 00:00:17,420 --> 00:00:21,180 Samo začeti, to je prikaz naše agende za seminar. 8 00:00:21,180 --> 00:00:25,350 Bomo najprej govorili o zakaj bi morali biti zainteresirani za splet 9 00:00:25,350 --> 00:00:30,130 Audio API, zakaj je JavaScript jezik, ki ga potrebujejo za to, 10 00:00:30,130 --> 00:00:32,619 in potem govori o JavaScriptu tako essentials-- podobno, 11 00:00:32,619 --> 00:00:34,800 sprehod skozi nekatere osnove jezika, 12 00:00:34,800 --> 00:00:37,290 in potem govoriti o audio API na visoki ravni. 13 00:00:37,290 --> 00:00:41,140 Nato se bo Hugh govoriti o nekaterih o fazah avdio produkcije 14 00:00:41,140 --> 00:00:45,509 in nato demo to super sekvencer Projekt je zgradil in vam prikazal kodo. 15 00:00:45,509 --> 00:00:48,050 In potem bomo imeli časa za Vprašanja na koncu za ljudi 16 00:00:48,050 --> 00:00:49,593 ki so tukaj živeli. 17 00:00:49,593 --> 00:00:50,540 >> HUGH Zabriskie: Cool. 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN: Cool. 19 00:00:50,990 --> 00:00:51,383 >> HUGH Zabriskie: Cool. 20 00:00:51,383 --> 00:00:52,170 Bom nazaj gor. 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN: Torej, prvi stvari prvi. 22 00:00:54,960 --> 00:00:57,840 Torej, eden od velikih stvari o Web Audio API 23 00:00:57,840 --> 00:01:00,480 je, da ni nobenega set up potrebna. 24 00:01:00,480 --> 00:01:04,230 Na voljo je vgrajen v večina sodobnih brskalnikov, 25 00:01:04,230 --> 00:01:08,630 vključno Chrome, EDGE, v celoti kup others-- vseh tistih 26 00:01:08,630 --> 00:01:12,650 da velike porcije ljudje uporabljajo danes. 27 00:01:12,650 --> 00:01:14,807 Tako da ni ustanovljen, poleg ravno 28 00:01:14,807 --> 00:01:16,890 spletni strežnik gre za da bi začeli delati 29 00:01:16,890 --> 00:01:18,420 na projektu, kar je super. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Priporočamo precej močno, da se boste 32 00:01:24,190 --> 00:01:26,530 uporabo Chrome za Izdelava spletnih JavaScript, 33 00:01:26,530 --> 00:01:30,260 samo zato, ker njeno razvijalca orodja so res močna. 34 00:01:30,260 --> 00:01:33,220 Kot primer, kaj mislimo z besedami odpirajo vaš JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- če greš v Chrome in pogledaš na katero koli spletno stran, 36 00:01:38,600 --> 00:01:43,897 in ste levi klik Preglej element, in nato 37 00:01:43,897 --> 00:01:46,730 greš v to malo drop-down tukaj in kliknete na konzolo, 38 00:01:46,730 --> 00:01:50,660 boste videli, kaj odpira izgleda Veliko kot ukazno vrstico, ki vas 39 00:01:50,660 --> 00:01:53,720 lahko vidite na vašem Mac ali na ID. 40 00:01:53,720 --> 00:01:59,260 In ravno tako kot, da smo lahko tip ukaze, kot Bistra, 41 00:01:59,260 --> 00:02:01,350 in drugi ukazi, kot je ta. 42 00:02:01,350 --> 00:02:04,267 Mi lahko ustvarite spremenljivke, kot bomo videli kasneje v JavaScript. 43 00:02:04,267 --> 00:02:07,100 In tako vse, kar lahko storimo v JavaScript lahko naredimo s konzolo, 44 00:02:07,100 --> 00:02:11,430 in to je super priročen način, da začnite igrati okrog z API 45 00:02:11,430 --> 00:02:15,760 in dobili udobno z JavaScript pravico off kij. 46 00:02:15,760 --> 00:02:18,290 Ni potrebno set up, ki je res lepo. 47 00:02:18,290 --> 00:02:18,790 Cool. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Awesome. 50 00:02:22,880 --> 00:02:24,780 >> Torej, samo še ena stvar dodati. 51 00:02:24,780 --> 00:02:27,780 Če imate kakršne koli questions-- obstajajo mnogi med vami, ki ne živi tukaj, 52 00:02:27,780 --> 00:02:31,232 vas prosimo, da us-- te email so naši e-poštni naslovi. 53 00:02:31,232 --> 00:02:33,190 Če imate vprašanja nočete, da nas vprašati, 54 00:02:33,190 --> 00:02:36,160 kot so, oh imam napako v moji kodi, ali kaj 55 00:02:36,160 --> 00:02:39,270 da je malo bolj specifičen, Mogoče ga najprej vprašaš. 56 00:02:39,270 --> 00:02:42,340 Obstaja veliko veliko virov o Web Audio API tam. 57 00:02:42,340 --> 00:02:44,089 To je res dobro dokumentirani in to je pa 58 00:02:44,089 --> 00:02:47,194 s tono ljudi v uporablja industrija, in ljudje, ki so pravkar 59 00:02:47,194 --> 00:02:48,610 gradnjo zabavne stvari za sebe. 60 00:02:48,610 --> 00:02:51,306 Torej ne bi smelo biti veliko virov tam. 61 00:02:51,306 --> 00:02:53,040 Awesome. 62 00:02:53,040 --> 00:02:56,100 >> Cool, zakaj Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Ta diagram je malo o evoluciji poti 64 00:02:59,840 --> 00:03:04,100 Zvok na spletu, je zrasel v daljšem časovnem obdobju. 65 00:03:04,100 --> 00:03:13,080 Bgsound je kot prvotni HTML tag da Internet Explorer uporablja za podporo. 66 00:03:13,080 --> 00:03:16,790 To je dovoljeno samo za precej osnovne zvoke, funkcionalnost ni bila zelo močna, 67 00:03:16,790 --> 00:03:19,380 in vam ne bi mogel storiti zapletena zaporedja, 68 00:03:19,380 --> 00:03:21,890 ali nadzor, ko zvok začel in se ustavil zelo robustno. 69 00:03:21,890 --> 00:03:23,930 Torej, to ni bil posebno dobro razvita. 70 00:03:23,930 --> 00:03:27,470 Nato pa po tem, Flash prišel along-- ki 71 00:03:27,470 --> 00:03:31,712 Prepričan sem, da so fantje vsi poznajo z Flash-- morda ne kako deluje, 72 00:03:31,712 --> 00:03:32,920 vendar ste zagotovo videli. 73 00:03:32,920 --> 00:03:35,586 Moraš posodobite svoj Flash Plug-in, vse te vrste stvari, 74 00:03:35,586 --> 00:03:40,110 in da je zagotovo razširil nabor funkcionalnosti, ki so bile na voljo. 75 00:03:40,110 --> 00:03:45,370 Toda zaradi česar uporabnik namesti plug-in je vsekakor 76 00:03:45,370 --> 00:03:48,480 pomanjkljivost, da vključno s Flash v svoji vlogi, kajne? 77 00:03:48,480 --> 00:03:52,410 Ker potem ste odvisni od Uporabnik dogaja in iskanje Ta plug-in, 78 00:03:52,410 --> 00:03:54,660 in se verjetno obrnil off s tem dodatnim korakom 79 00:03:54,660 --> 00:03:56,640 so morali uporabiti svoj app. 80 00:03:56,640 --> 00:04:01,270 In potem lahko obstaja posodobitev da bom prekinil vaše celotno aplikacijo, 81 00:04:01,270 --> 00:04:03,880 in se konča pa nočna mora za razvijalce, preveč. 82 00:04:03,880 --> 00:04:06,230 Tako da je barikada. 83 00:04:06,230 --> 00:04:10,480 >> In potem, ko da je prišla skupaj, HTML audio tag, ki 84 00:04:10,480 --> 00:04:16,579 je funkcija bolj moderno HTML-- ki vsekakor dovoljena za veliko več stvari, 85 00:04:16,579 --> 00:04:20,050 ampak tudi stvari, ki jih lahko storite tam je bilo malce omejena samo 86 00:04:20,050 --> 00:04:22,730 kot posledica stvari da HTML je sposoben. 87 00:04:22,730 --> 00:04:26,060 Torej, ko je JavaScript API, Web Audio API, 88 00:04:26,060 --> 00:04:29,290 postal standardni vaditi na različnih brskalnikih, 89 00:04:29,290 --> 00:04:32,490 da je res razširila nabor priložnosti za razvijalce 90 00:04:32,490 --> 00:04:36,590 da bo res dobil v stavbi kul stvari za splet. 91 00:04:36,590 --> 00:04:39,220 Dolgo časa je imel bili res robustna orodja 92 00:04:39,220 --> 00:04:44,360 za avtohtone avdio aplikacije, like-- vsakdo ve, GarageBand, 93 00:04:44,360 --> 00:04:48,360 in potem seveda obstaja več profesionalni avdio mešalne aplikacije, 94 00:04:48,360 --> 00:04:49,640 in da je vrsta stvari. 95 00:04:49,640 --> 00:04:52,690 Vendar ni bilo res dober Cloud-- ne 96 00:04:52,690 --> 00:04:55,811 Cloud, ja, mislim, Cloud-- spletna platforma 97 00:04:55,811 --> 00:04:58,310 ki bi omogočilo razvijalcem gradnjo aplikacij za ljudi 98 00:04:58,310 --> 00:05:00,570 narediti audio mešanje. 99 00:05:00,570 --> 00:05:03,960 In ko vam bo pokazal kasneje, Web Audio API 100 00:05:03,960 --> 00:05:07,470 omogoča res močna stvari, da se zgodi zelo preprosto, 101 00:05:07,470 --> 00:05:09,597 kar je precej kul. 102 00:05:09,597 --> 00:05:12,680 Tako, da je navodila o tem, zakaj vas bi morali gledati preostanek seminarja, 103 00:05:12,680 --> 00:05:14,350 v bistvu. 104 00:05:14,350 --> 00:05:17,880 >> In zdaj, bom govoril o nekateri JavaScript-- samo osnovni elementi 105 00:05:17,880 --> 00:05:20,240 jezika, tako da smo lahko na isti strani 106 00:05:20,240 --> 00:05:22,470 Ko govorimo o API malo kasneje. 107 00:05:22,470 --> 00:05:23,260 Cool. 108 00:05:23,260 --> 00:05:26,192 >> Torej, to je povzetek. 109 00:05:26,192 --> 00:05:27,150 Pozabila sem, da je tukaj. 110 00:05:27,150 --> 00:05:27,510 Ja. 111 00:05:27,510 --> 00:05:27,870 >> HUGH Zabriskie: Še dva diapozitive tukaj. 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN: To je povzetek nekaterih omejitev 113 00:05:30,245 --> 00:05:35,220 drugih zavezujočih, starih metod. 114 00:05:35,220 --> 00:05:37,828 In potem sedaj, imamo te stvari. 115 00:05:37,828 --> 00:05:40,011 Cool. 116 00:05:40,011 --> 00:05:40,510 Awesome. 117 00:05:40,510 --> 00:05:43,200 >> Torej, JavaScript essentials. 118 00:05:43,200 --> 00:05:47,230 Prvi stvari prvi, tam je precej pomembna razlika 119 00:05:47,230 --> 00:05:49,940 v JavaScript versus je z jezik kot C, v načinu 120 00:05:49,940 --> 00:05:52,050 da so spremenljivke ustvarili. 121 00:05:52,050 --> 00:05:55,634 Torej, v C, smo navajeni, da da tip naše spremenljivke, kajne? 122 00:05:55,634 --> 00:05:57,800 In ne mislim vrsto podobnega jih vnesete, mislim tip 123 00:05:57,800 --> 00:06:01,900 kot jim dodelite type-- pomen podobno, int, plovec, char. 124 00:06:01,900 --> 00:06:05,210 V C, smo bili res uporabljena za ob ustvariti spremenljivko 125 00:06:05,210 --> 00:06:09,690 nato pa se držijo tega tipa za ves čas, da bomo uporabili to spremenljivko. 126 00:06:09,690 --> 00:06:13,990 In da ni nujno slabše, ampak to je verjetno težje uporabiti. 127 00:06:13,990 --> 00:06:16,190 Ena od kul funkcije o je JavaScript 128 00:06:16,190 --> 00:06:19,740 da so spremenljivke, kar se imenuje "dinamično vnesli", ki 129 00:06:19,740 --> 00:06:22,500 pomeni, da sem lahko ustvarite spremenljivka s to sintakso, 130 00:06:22,500 --> 00:06:25,800 varX enaka 5, npr. 131 00:06:25,800 --> 00:06:27,790 Da prvotno ustvari celo variable-- 132 00:06:27,790 --> 00:06:29,870 desno pod hood somewhere-- vendar sem 133 00:06:29,870 --> 00:06:33,040 morejo spremeniti te spremenljivke sklicevati na vrvico 134 00:06:33,040 --> 00:06:35,820 brez da bi počel kaj takega ustvariti novo spremenljivko. 135 00:06:35,820 --> 00:06:37,880 Mi ni treba skrbeti o vrsti spreminja. 136 00:06:37,880 --> 00:06:45,440 JavaScript ve, da tip je spremenilo in da se zgodi dinamično. 137 00:06:45,440 --> 00:06:48,510 >> Torej, obstajajo prednosti in slabosti za da, 138 00:06:48,510 --> 00:06:51,250 kot kdorkoli, ki je delal v JavaScript za nekaj časa morda poznate. 139 00:06:51,250 --> 00:06:53,600 So časi, ko boste morda po nesreči 140 00:06:53,600 --> 00:06:57,720 spremenite vrsto spremenljivke in ne obvladam tipa spreminjanje, 141 00:06:57,720 --> 00:07:01,120 in potem vaš JavaScript lahko crash-- ali izjema 142 00:07:01,120 --> 00:07:06,070 se vrgli, ker boš imel Napačna vrsta, ko ste pričakovali eno vrsto. 143 00:07:06,070 --> 00:07:07,040 Cool. 144 00:07:07,040 --> 00:07:11,470 >> Torej, scoping-- ki je všeč, če smo spomnite prvih tednih v teku, 145 00:07:11,470 --> 00:07:15,420 nanaša na kako vidno spremenljivko je in v kakšnem območju kode. 146 00:07:15,420 --> 00:07:18,400 Vse to je zelo podoben na način, da izgleda v C. 147 00:07:18,400 --> 00:07:24,755 Torej so spremenljivke scoped splošno v zavitih oklepajih znotraj funkcije, 148 00:07:24,755 --> 00:07:27,005 in potem so tudi globalno scoped spremenljivke, ki 149 00:07:27,005 --> 00:07:29,171 are-- če pišete spremenljivko izven funkcije 150 00:07:29,171 --> 00:07:31,790 da bo viden v celotnem besedilu. 151 00:07:31,790 --> 00:07:35,840 >> Ena razlika med JavaScript in C zlasti 152 00:07:35,840 --> 00:07:40,280 je, da če bo razglasila globalno spremenljivka kjerkoli v tekstovno datoteko 153 00:07:40,280 --> 00:07:43,324 je vidna v vsakem funkciji v tem besedilno datoteko. 154 00:07:43,324 --> 00:07:44,240 To je res, kajne? 155 00:07:44,240 --> 00:07:46,330 >> HUGH Zabriskie: Yep. 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN: Tako da je tudi malo bitno funky v primerjavi s C, 157 00:07:49,120 --> 00:07:52,660 kjer smo vedno imeli, da so naši spremenljivi opredelitve zgoraj navedenih krajih 158 00:07:52,660 --> 00:07:53,770 so bili uporabljeni. 159 00:07:53,770 --> 00:07:57,957 To ni pravilo, da se izvrši več, tako, malo drugačen. 160 00:07:57,957 --> 00:08:00,540 In spet samo še poudaril, globalni primerjavi lokalni variables-- 161 00:08:00,540 --> 00:08:03,457 zelo podobna C Lahko bi imeli dve spremenljivki z enakim imenom, 162 00:08:03,457 --> 00:08:06,540 in imajo eno od njihovih imen se senco lokalni spremenljivke, če eden od njiju 163 00:08:06,540 --> 00:08:07,546 je globalna. 164 00:08:07,546 --> 00:08:09,420 Torej, podobne vrste težave, ki jih nekateri od vas 165 00:08:09,420 --> 00:08:11,920 morda naletite na nekaterih vašega problema postavlja doslej. 166 00:08:11,920 --> 00:08:14,450 Kul, tako da je spremenljivk. 167 00:08:14,450 --> 00:08:20,310 >> Nadzor pretoka, kar pomeni, kot so, če-else-- logično stuff-- in zanke. 168 00:08:20,310 --> 00:08:24,510 Torej, da začnete z, to je tisto, če-ostalo Izjave izgledal v JavaScript. 169 00:08:24,510 --> 00:08:29,750 Umestitev različnih stvari na progah ni pomembna. 170 00:08:29,750 --> 00:08:34,409 To je le ena od konvencij Za pot smo strukturo kode. 171 00:08:34,409 --> 00:08:38,634 Tako kot v C, imamo "če", izjavo oklepaj. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 To ni tisto, kar sem hotel storiti. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Spet sem to storil. 176 00:08:45,550 --> 00:08:46,841 >> HUGH Zabriskie: Poskus, da zaprete? 177 00:08:46,841 --> 00:08:49,770 SAM GREEN: Ne, jaz sem samo poskušam za povečavo. 178 00:08:49,770 --> 00:08:50,660 Ni važno. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Torej, imamo "če" izjavo in imamo stanje znotraj njega 181 00:08:59,370 --> 00:09:03,130 ki ocenjuje, da resnična ali neresnična, in da ugotovi, ali ne 182 00:09:03,130 --> 00:09:04,510 smo vstopili v ta blok kode. 183 00:09:04,510 --> 00:09:09,860 In prav tako, imamo drugega, če je, in drugega, tako kot smo navajeni v C. 184 00:09:09,860 --> 00:09:14,010 >> Prav tako bi morali biti zelo udobna pravico off kij z zankami, 185 00:09:14,010 --> 00:09:16,440 ker so tudi pogled zelo podobna C izgleda. 186 00:09:16,440 --> 00:09:19,600 Vendar pa boste spet opazili, da smo imajo namesto int initializations, 187 00:09:19,600 --> 00:09:22,570 imamo var initializations. 188 00:09:22,570 --> 00:09:24,650 In mislim, da imate biti previdni, da 189 00:09:24,650 --> 00:09:28,460 prepričani, da ne boste spremenili vrednost I, od notr v niz, 190 00:09:28,460 --> 00:09:31,780 na primer, ker to se dogaja, da povzroči čudno obnašanje morda ne 191 00:09:31,780 --> 00:09:32,280 pričakujejo. 192 00:09:32,280 --> 00:09:35,750 Ampak to je treba videti precej znana, kot tudi. 193 00:09:35,750 --> 00:09:39,460 >> Torej, to je, če se stvari začnejo dobili malo nor v JavaScript 194 00:09:39,460 --> 00:09:44,920 za nekoga, ki se bo od A ozadje C. Obstajajo funkcije 195 00:09:44,920 --> 00:09:48,070 v JavaScript, in tam je en način razglasiti za funkcijo, ki izgleda 196 00:09:48,070 --> 00:09:50,361 nekako podobno kot C, in potem je tukaj še eden, ki 197 00:09:50,361 --> 00:09:52,450 izgleda nekako drugačna. 198 00:09:52,450 --> 00:09:54,930 >> Prva različica, ki lahko vidimo tukaj, 199 00:09:54,930 --> 00:09:59,260 je nekako C-podobno, kadar pravimo, da je to funkcijo, 200 00:09:59,260 --> 00:10:01,490 izročiti to ime, daj število argumentov, 201 00:10:01,490 --> 00:10:05,150 in nato vsebina funkcije Vstopimo temi zavitimi oklepaji. 202 00:10:05,150 --> 00:10:08,850 Bomo videli zgled Argumenti v samo sekundo. 203 00:10:08,850 --> 00:10:13,420 >> Ker je v naslednji vrstici, vidimo, oh, tukaj je spremenljivka imenuje "myFunction" 204 00:10:13,420 --> 00:10:17,546 in smo ga enako za to generična thing-- function-- da 205 00:10:17,546 --> 00:10:19,170 ne zdi, da imajo vse, kar se dogaja. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Razlog, da je drugačen kot je C, ki JavaScript 208 00:10:26,080 --> 00:10:30,040 je tisto, kar se imenuje funkcionalen jezik ali ima funkcionalne elemente, kar pomeni, 209 00:10:30,040 --> 00:10:33,510 da so funkcije dejansko vrednote. 210 00:10:33,510 --> 00:10:39,520 In to pomeni, da bomo lahko nastavite spremenljivka za enako funkcijo 211 00:10:39,520 --> 00:10:43,210 in nato premakniti to funkcijo okoli, ga prenese kot argument, 212 00:10:43,210 --> 00:10:46,550 storiti vse vrste stvari kot da je s funkcije. 213 00:10:46,550 --> 00:10:49,682 >> Ena druga stvar, da note-- Funkcije so napisani 214 00:10:49,682 --> 00:10:51,140 z določenim številom argumentov. 215 00:10:51,140 --> 00:10:54,056 Bomo videli primer funkcije z argumentom o naslednji diapozitiv. 216 00:10:54,056 --> 00:10:56,720 Ampak JavaScript ne bo kričati na vas, če boste poskušali 217 00:10:56,720 --> 00:10:59,330 Za uporabo funkcije z napačno število argumentov. 218 00:10:59,330 --> 00:11:05,310 To bom po svojih najboljših močeh, da bi storiti, kar pomeni, da če se boste peljali, 219 00:11:05,310 --> 00:11:09,410 pokličete funkcijo, ki pričakuje trditev brez argumentov, vse, kar 220 00:11:09,410 --> 00:11:13,990 se bo zgodilo, se bomo po najboljših močeh poskusiti in izvršiti to kodo, 221 00:11:13,990 --> 00:11:16,541 in če na koncu vodi v izjemo ali napake, 222 00:11:16,541 --> 00:11:19,790 da bom vrgel to izjemo in samo vztrajati going--, ki je le eden od načinov, 223 00:11:19,790 --> 00:11:21,070 da JavaScript deluje. 224 00:11:21,070 --> 00:11:21,781 Ja. 225 00:11:21,781 --> 00:11:24,207 >> OBČINSTVO: Kaj se zgodi, če tam je preveč argumentov? 226 00:11:24,207 --> 00:11:26,040 SAM GREEN: Torej Vprašanje je, kaj se zgodi 227 00:11:26,040 --> 00:11:27,380 Če obstaja preveč argumentov? 228 00:11:27,380 --> 00:11:29,171 In odgovor je, da JavaScript bo samo 229 00:11:29,171 --> 00:11:32,120 prezreti tiste, ki so potem tistih, ki ga pričakuje. 230 00:11:32,120 --> 00:11:36,420 To bomo poskušali izvesti funkcijo klic, kot če bi bila le prva dva. 231 00:11:36,420 --> 00:11:37,075 Prav? 232 00:11:37,075 --> 00:11:37,700 >> HUGH Zabriskie: To je res, ja. 233 00:11:37,700 --> 00:11:39,449 Podobno, če obstaja premalo argumentov, 234 00:11:39,449 --> 00:11:42,640 je le nekako daje null za vse argumentov, da nima vrednosti 235 00:11:42,640 --> 00:11:43,660 za. 236 00:11:43,660 --> 00:11:45,810 >> SAM GREEN: kar lahko dejansko prav, če vas 237 00:11:45,810 --> 00:11:49,060 želite napisati funkcijo, ki traja spremenljive argumente številko. 238 00:11:49,060 --> 00:11:55,830 Lahko nastavite privzete vrednosti v opredelitev funkcije, 239 00:11:55,830 --> 00:11:59,060 in lahko prezreti dejstva, da vložek ni tam. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Torej, želim govoriti malo Več o tem zadnjem bullet 242 00:12:04,000 --> 00:12:05,541 Točka, ki je funkcije vrednosti. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 To je primer, da je malo um-piha 245 00:12:11,010 --> 00:12:14,880 Če ste pravkar prebrali, in ne mislim o tem, kaj se dogaja za sekundo. 246 00:12:14,880 --> 00:12:17,910 Torej, kaj je pogled le na Prva vrstica tukaj. 247 00:12:17,910 --> 00:12:24,360 Imamo to spremenljivo, F1, da smo rekli, je funkcija, ki počne to stvar. 248 00:12:24,360 --> 00:12:28,535 In vsebino funkcije so console.log ("zdravo"). 249 00:12:28,535 --> 00:12:32,220 Si lahko zamislite console.log kot JavaScript ekvivalent printf. 250 00:12:32,220 --> 00:12:35,510 Torej, kaj se bo zgodilo, je, če smo zaženete to kodo v naš brskalnik, 251 00:12:35,510 --> 00:12:37,530 to bo izpisal niz. 252 00:12:37,530 --> 00:12:39,342 Jaz lahko dokaže, da. 253 00:12:39,342 --> 00:12:42,300 OBČINSTVO: Z dnevnik, čeprav, ne da pomeni, da je se nekje zapiše? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN: Ja. 255 00:12:42,550 --> 00:12:44,216 Torej, ti bom pokazal, kaj se bo zgodilo. 256 00:12:44,216 --> 00:12:48,085 Torej, vprašanje je, kaj log pomeni? 257 00:12:48,085 --> 00:12:51,262 >> HUGH Zabriskie: Torej console.log je kot printf za C. 258 00:12:51,262 --> 00:12:52,970 SAM GREEN: Torej console.log je kot printf, 259 00:12:52,970 --> 00:12:59,240 tako da, če imam to console.log ("zdravo"), in pravim, da je niz "zdravo" 260 00:12:59,240 --> 00:13:00,730 dobi natisne na konzolo. 261 00:13:00,730 --> 00:13:03,340 To je konzola. 262 00:13:03,340 --> 00:13:05,930 To je tako kot printf, kjer se natisne na standardni ven. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 In bomo videli v minuto, ampak to je dejansko 265 00:13:11,230 --> 00:13:16,529 sklicujoč se na konzoli objekta, in kliče metodo o tem predmetu. 266 00:13:16,529 --> 00:13:18,320 To bo bolj smiselno na minuto, ko smo 267 00:13:18,320 --> 00:13:20,660 dobili govoriš predmeti v JavaScript, 268 00:13:20,660 --> 00:13:22,509 vendar sem mislil, da bi samo omenil, da. 269 00:13:22,509 --> 00:13:24,300 HUGH Zabriskie: Smo uporablja v C, right-- 270 00:13:24,300 --> 00:13:27,580 smo ponavadi napisati velik program, V glavnem, da storiti ničesar. 271 00:13:27,580 --> 00:13:30,700 Toda kaj je kul v JavaScript je vi imajo tovrstne tolmača, ki 272 00:13:30,700 --> 00:13:33,620 poteka v realnem času, tako da traja le po vrsticah, 273 00:13:33,620 --> 00:13:35,320 lahko samo razlaga, da na kraju samem. 274 00:13:35,320 --> 00:13:37,403 In to beleži Stvari, ki jih izvajajo pred, 275 00:13:37,403 --> 00:13:41,620 zato je zelo uporabno orodje za uporabite console.log ali konzolo, 276 00:13:41,620 --> 00:13:46,870 na splošno, za samo igranje okrog z JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM GREEN: Torej gredo nazaj na to example-- drugo vrstico kode 278 00:13:51,420 --> 00:13:55,320 tukaj je precej um-boggling v moji glavi. 279 00:13:55,320 --> 00:13:59,790 Prvič, ko sem to prebral, je bilo všeč, kaj se dogaja? 280 00:13:59,790 --> 00:14:04,580 Torej, kaj se dogaja, je to Izjava funkcija pravi, 281 00:14:04,580 --> 00:14:10,170 Imam funkcijo imenovano f2 da je pričakoval en argument, f, 282 00:14:10,170 --> 00:14:12,990 nato pa poziva, da Funkcija, f, ki 283 00:14:12,990 --> 00:14:17,652 je bil sprejet na to kot argument brez sama argumentov. 284 00:14:17,652 --> 00:14:19,110 Torej, da bi bila nejasna. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Če bomo to razumeli kot f2 traja f1 kot argument, nato pa notranjost f2, 287 00:14:28,400 --> 00:14:31,190 f dobi called-- kar pomeni, da to vrstico kode, 288 00:14:31,190 --> 00:14:34,192 Po teh dveh vrstic Koda, rezultati v "zdravo" 289 00:14:34,192 --> 00:14:35,400 se natisne na konzolo. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Dejstvo, da lahko prenese Funkcije okoli kot vrednosti 292 00:14:44,910 --> 00:14:47,870 konča pa eden izmed najbolj zmogljive funkcije JavaScript 293 00:14:47,870 --> 00:14:49,700 kot programskega jezika. 294 00:14:49,700 --> 00:14:52,782 Zunaj vse super stvari, ki jih lahko storite, 295 00:14:52,782 --> 00:14:54,990 Samo kot pokazatelj jezik glede načina 296 00:14:54,990 --> 00:14:58,400 da naredi stvari enostavno programiranje in omogoča 297 00:14:58,400 --> 00:15:01,060 za stvari, ki niso posebej primerna za splet, 298 00:15:01,060 --> 00:15:04,500 funkcijski programski in funkcionalni programski vidiki JavaScript 299 00:15:04,500 --> 00:15:07,130 je eden izmed najbolj močnih konceptov, ki 300 00:15:07,130 --> 00:15:11,030 obstaja v JavaScript--, če mene vprašaš. 301 00:15:11,030 --> 00:15:11,960 Cool. 302 00:15:11,960 --> 00:15:13,534 >> Torej, naslednja stvar. 303 00:15:13,534 --> 00:15:16,450 Poleg tega, da funkcionalna obstajajo tudi elementi JavaScript 304 00:15:16,450 --> 00:15:20,510 ki so predmet usmerjen, ki je ena izmed zelo 305 00:15:20,510 --> 00:15:23,800 priljubljena buzz besede v računalništvu. 306 00:15:23,800 --> 00:15:27,040 Objektno programiranje je zelo priljubljena stvar. 307 00:15:27,040 --> 00:15:34,210 JavaScript je različica, da kjer verjamem, vsaka vrednost je tudi 308 00:15:34,210 --> 00:15:41,475 objekt, kar pomeni, da je vsak predmet Zavitki skupaj nekaj več vrednosti. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Torej, za vrednote, ki so preproste, kot je celo število, kot varX enaka 5, 311 00:15:49,750 --> 00:15:52,250 da je cilj le ovije to eno vrednost. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Vendar pa smo lahko tudi zamisliti situacijo where-- lahko razmišljamo o razmerah v C 314 00:15:59,036 --> 00:16:00,910 kjer smo želeli storiti nekaj z konstruktov, 315 00:16:00,910 --> 00:16:03,285 na primer, da se ovije več Vrednosti skupaj in naredi 316 00:16:03,285 --> 00:16:05,870 res enostavno prenesti stvari okoli. 317 00:16:05,870 --> 00:16:09,270 To je, ko je objekt v JavaScriptu. 318 00:16:09,270 --> 00:16:12,340 >> Pomembno je, da se spomnimo ko rečem, da predmeti zavit 319 00:16:12,340 --> 00:16:15,330 nekatere število vrednosti skupaj da so tudi funkcije 320 00:16:15,330 --> 00:16:21,506 vrednosti, kar pomeni, da funkcije lahko tudi notranjost JavaScript objekta. 321 00:16:21,506 --> 00:16:26,910 In razlog, da je pomembno je, da je, medtem ko smo pogosto 322 00:16:26,910 --> 00:16:30,290 pomislite kliče metodo na objektu, ki je 323 00:16:30,290 --> 00:16:35,200 o ljudski izraz iz drugega priljubljena objektno usmerjenih jezikov, 324 00:16:35,200 --> 00:16:39,330 eden od razlik v tem, da vse, kar je metoda v JavaScript 325 00:16:39,330 --> 00:16:47,270 je vrednost shranjena v notranjosti objekta ki opravlja neko action-- možnosti 326 00:16:47,270 --> 00:16:51,850 uporabo drugih vrednot, ki so v notranjosti navedenega objekta, vendar ni nujno. 327 00:16:51,850 --> 00:16:56,930 Torej si lahko predstavljate situacijo, sem Verjetno v malo nor način, 328 00:16:56,930 --> 00:17:02,990 kje ste poklicali metodo enega ugovarjajo na drug predmet, na primer. 329 00:17:02,990 --> 00:17:06,010 Torej, to je malo funky na ta način. 330 00:17:06,010 --> 00:17:09,369 >> In lahko spremenite tudi metode ki so povezane s predmetom 331 00:17:09,369 --> 00:17:13,740 z dodeljevanjem ta metoda A Nova funkcija, ki je prav 332 00:17:13,740 --> 00:17:18,250 precej razlikuje od drugih objektno usmerjenih jezikov, v katerih 333 00:17:18,250 --> 00:17:21,410 enkrat izjavljamo predmeta in jo sprožajo, 334 00:17:21,410 --> 00:17:25,839 ne moremo spremeniti metode, ki so povezana s tem predmetom več. 335 00:17:25,839 --> 00:17:28,680 Tako da je precej drugačna. 336 00:17:28,680 --> 00:17:29,570 Cool. 337 00:17:29,570 --> 00:17:34,010 >> Torej, tukaj je primer, prvič, predmeta v akciji. 338 00:17:34,010 --> 00:17:36,390 To je tisto, kar se imenuje generično predmet, ki 339 00:17:36,390 --> 00:17:39,460 pomeni, da nima kateremkoli Zlasti ime, nima razred, 340 00:17:39,460 --> 00:17:42,190 to je samo nekaj vrstic vrednot. 341 00:17:42,190 --> 00:17:49,790 In način, kako je videti je, da smo imeli ta zunanji par zavitih oklepajih tukaj 342 00:17:49,790 --> 00:17:57,950 ki kažejo, da je JavaScript in pravijo, to je predmet. 343 00:17:57,950 --> 00:18:02,130 Vrednosti znotraj njega sta vsak vrednosti znotraj 344 00:18:02,130 --> 00:18:04,590 objekta, ki naj bi zaviti skupaj. 345 00:18:04,590 --> 00:18:09,180 In znotraj tega predmeta, potem smo imeli parov ključev vrednostjo, 346 00:18:09,180 --> 00:18:13,880 kjer je ključni sklicuje na ime vrednosti znotraj objekta, 347 00:18:13,880 --> 00:18:16,790 in drugi side-- nasproti here-- na debelem črevesu 348 00:18:16,790 --> 00:18:19,850 je dejanska vrednost da je treba shraniti. 349 00:18:19,850 --> 00:18:26,210 >> Torej vidite tukaj, da imamo Ključ imenuje fn z vrednostjo Sam, 350 00:18:26,210 --> 00:18:29,430 sledi vejica, rekoč na naslednji vstop. 351 00:18:29,430 --> 00:18:33,560 Potem ključni imenuje ln, z vrednostjo zelena, 352 00:18:33,560 --> 00:18:35,840 sledi vejica, sledi "print" 353 00:18:35,840 --> 00:18:43,209 ki se dogaja, da imajo vrednost funkcije da se bo za to vrstico kode. 354 00:18:43,209 --> 00:18:45,500 Oglejmo korak nazaj in razpakirati, kaj se dogaja tukaj. 355 00:18:45,500 --> 00:18:47,280 Torej, to je malce zapleteno, in smo videli nekaj novega 356 00:18:47,280 --> 00:18:48,071 prvič. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 Za "to" ključna beseda je nova stvar smo videli tu, in kaj to počne 359 00:18:55,065 --> 00:19:00,540 je, da se nanaša na tok ugovarja v obsegu, kajne? 360 00:19:00,540 --> 00:19:03,990 Torej, ko smo rekli, to opozarja vso pot nazaj 361 00:19:03,990 --> 00:19:08,140 s tem celotno object-- ko delamo this.fn, 362 00:19:08,140 --> 00:19:11,990 bomo iti vso pot nazaj za ta objekt, pojdite na vrednosti fn 363 00:19:11,990 --> 00:19:16,471 in dobili Sam, ga potegnite vso pot nazaj, ga držijo tukaj, in potem naprej. 364 00:19:16,471 --> 00:19:19,838 >> OBČINSTVO: Torej s pridobivanjem, je da narediti zaradi parametra 365 00:19:19,838 --> 00:19:20,621 opredelitev? 366 00:19:20,621 --> 00:19:23,870 SAM GREEN: Tako je bilo vprašanje, ali je Preiskovalna narejeno zaradi parametra 367 00:19:23,870 --> 00:19:24,727 opredelitev? 368 00:19:24,727 --> 00:19:25,435 Ja, absolutno. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Kaj se bo zgodilo, tukaj je, to pika pravi za JavaScript, 371 00:19:32,470 --> 00:19:39,990 OK, sem že nekaj vrednosti iz tega predmeta od sebe. 372 00:19:39,990 --> 00:19:46,375 In potem bom pa poglej za vpis imenuje fn, in če ga najde, 373 00:19:46,375 --> 00:19:48,470 da bomo vrnili, da value-- tako, da je sam. 374 00:19:48,470 --> 00:19:51,540 Ampak lahko sem tudi jaz tipkal nekaj, kar ni bilo definirano tukaj, 375 00:19:51,540 --> 00:19:54,090 in potem bi šele vrnitev undefined-- ki 376 00:19:54,090 --> 00:19:58,250 je stvar, ki se lahko JavaScript storiti, kar lahko koristi, 377 00:19:58,250 --> 00:20:03,190 ampak to je also-- če bi slovnične napake, to lahko povzroči čudne napake. 378 00:20:03,190 --> 00:20:05,617 Tako da bom poskusil najti karkoli je povedal, da bi našli 379 00:20:05,617 --> 00:20:07,700 in da ne bo pritožujejo, če ga ne najdejo. 380 00:20:07,700 --> 00:20:11,390 To bom samo rekel, nisem ga našli, in potem naprej. 381 00:20:11,390 --> 00:20:17,581 Torej bi bilo undefined, plus prazno, plus priimek. 382 00:20:17,581 --> 00:20:18,080 Ja. 383 00:20:18,080 --> 00:20:21,070 In potem lahko vidimo, da če bomo bi potem lahko šel dol in access-- 384 00:20:21,070 --> 00:20:25,450 in pravimo tf.print () z oklepaji. 385 00:20:25,450 --> 00:20:30,000 To se dogaja, da pokličete to print funkcija brez argumentov, kajne? 386 00:20:30,000 --> 00:20:34,490 Ampak, če smo pravkar rekel tf.print () podpičje, brez oklepajev, 387 00:20:34,490 --> 00:20:37,480 vse, kar bi storil je vleči ven funkcijo od vrednosti, 388 00:20:37,480 --> 00:20:40,609 vendar dejansko ni poklical. 389 00:20:40,609 --> 00:20:41,162 Cool. 390 00:20:41,162 --> 00:20:42,870 HUGH Zabriskie: Če naredimo objekt? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: Seveda, kaj je to. 392 00:20:44,161 --> 00:20:48,750 Tako da sem lahko to premikanje Primer na konzolo. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Lahko si predstavljamo, da imam predmet. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Torej, to je preprost objekt. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 To je objekt, ki vsebuje dve Vrednosti z dvema ključema, dva ključna vrednota 399 00:21:11,050 --> 00:21:12,710 parov. 400 00:21:12,710 --> 00:21:21,850 Tako sem lahko nato dostopate vrednost, shranjeno znotraj tega objekta, ki ga delaš x.x1, 401 00:21:21,850 --> 00:21:23,400 na primer, in dobim 1 nazaj. 402 00:21:23,400 --> 00:21:29,590 Prav tako x.x2, dobil to vrednost nazaj. 403 00:21:29,590 --> 00:21:33,330 >> In zdaj res kul stvar je, da sem lahko dejansko dodate nekaj tega objekta 404 00:21:33,330 --> 00:21:34,316 po tem, ko sem ga ustvaril. 405 00:21:34,316 --> 00:21:36,315 Torej si lahko predstavljate, Dovolite reči imam funkcijo. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> HUGH Zabriskie: You storiti Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN: Oh, to je nadležno. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Kaj ga ni všeč? 411 00:22:04,324 --> 00:22:04,824 Oh. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Gremo. 414 00:22:08,691 --> 00:22:09,190 Cool. 415 00:22:09,190 --> 00:22:12,840 >> Torej sem pravkar ustvaril ta funkcija, f, ki 416 00:22:12,840 --> 00:22:17,590 se dogaja, da gredo na tok objekt in tiskanje this.x1. 417 00:22:17,590 --> 00:22:20,330 Torej, če sem poklical f jih sama po sebi, nič ne dogaja 418 00:22:20,330 --> 00:22:26,970 da se zgodi, prav, ker ni x1 polje v objektu je sklicujoč se na. 419 00:22:26,970 --> 00:22:39,710 Ampak, če rečem, x.f = f, potem pa sem pokličite x.f (), bom dobil nazaj 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Ta funkcija f je zdaj povezana s predmetom x, 422 00:22:46,530 --> 00:22:51,800 ki ima ključno imenuje x1 povezana z vrednostjo 1, 423 00:22:51,800 --> 00:22:54,570 tako da, ko pravimo this.x1, da je boš našel kaj je iskal 424 00:22:54,570 --> 00:22:56,450 in biti sposoben natisniti vrednost ven. 425 00:22:56,450 --> 00:22:58,700 Torej, to je samo en primer od vrste norih stvari 426 00:22:58,700 --> 00:23:01,190 lahko naredite s predmeti v JavaScriptu. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Tako da verzija je bila generično različico, pomen 429 00:23:07,560 --> 00:23:13,780 da smo ustvarili objekt z uporabo tega oklepaju notation-- pas za zapis, 430 00:23:13,780 --> 00:23:16,880 rather-- in da je priročno, če hočemo samo 431 00:23:16,880 --> 00:23:21,440 en primerek določenega predmeta, vendar Kaj pa, če želimo imeti več kot eno 432 00:23:21,440 --> 00:23:22,210 iste vrste? 433 00:23:22,210 --> 00:23:24,440 In odgovor na to Vprašanje je, ali obstajajo stvari 434 00:23:24,440 --> 00:23:26,760 imenuje razrede v JavaScriptu, kot dobro. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Mi lahko ustvarite funkcijo, ki naredi neko inicializacijo 437 00:23:36,420 --> 00:23:41,690 za tujek, in bi lahko rekli, kot so, 438 00:23:41,690 --> 00:23:44,550 moj class-- tako ime od object-- večkratno uporabo 439 00:23:44,550 --> 00:23:47,100 enako funkcijo, ki jo vzpostavlja. 440 00:23:47,100 --> 00:23:52,280 Torej, kaj bi to bilo enakovredno da ustvarja objekt, ki 441 00:23:52,280 --> 00:23:55,930 bi samo rad, kodrasti naramnicami, str, debelega črevesa, 442 00:23:55,930 --> 00:23:59,630 To je niz, podpičje, kodrasti brace. 443 00:23:59,630 --> 00:24:01,880 To bi bilo generično Objekt smo inicializacijo 444 00:24:01,880 --> 00:24:06,380 z eno razliko, da so na Naslednje vrstice smo ustvarili prototip, ki 445 00:24:06,380 --> 00:24:11,190 pomeni, da je privzeti ključ, ki bomo dodali na naš objekt, ki 446 00:24:11,190 --> 00:24:13,970 ima vrednost naštete tukaj. 447 00:24:13,970 --> 00:24:20,570 Kar pomeni, da, ko sem ustvariti novo primerek tega MyClass objekta, 448 00:24:20,570 --> 00:24:27,440 to se dogaja, da so vnaprej zgrajena znotraj je vrednost, imenovano str in druga vrednost 449 00:24:27,440 --> 00:24:32,418 imenovano myPrint, ki je bo funkcija. 450 00:24:32,418 --> 00:24:32,918 Awesome. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Great. 453 00:24:37,990 --> 00:24:40,710 Torej je zadnja stvar, da povedati o JavaScriptu 454 00:24:40,710 --> 00:24:46,430 je, da je res koristno za kaj Imenujejo se asinhrone operacije. 455 00:24:46,430 --> 00:24:52,500 Asinhroni način je, da smo more čakati na neki operaciji 456 00:24:52,500 --> 00:24:57,870 dokončati preden gremo , a korak naprej, medtem ko čakamo 457 00:24:57,870 --> 00:24:59,690 in nato nekaj zgodilo kasneje. 458 00:24:59,690 --> 00:25:03,480 In kaj mislim s tem je, da moremo predstavljati situacijo, v kateri 459 00:25:03,480 --> 00:25:06,850 pošljete zahtevek nekateri spletni strežnik nekje, 460 00:25:06,850 --> 00:25:09,670 in to se dogaja, da vam pošljemo nazaj nekateri velik kos podatkov, kajne? 461 00:25:09,670 --> 00:25:13,320 In si lahko počaka v Medtem da se to zgodi, 462 00:25:13,320 --> 00:25:15,200 in nič ne bi bilo dogaja v tistem času. 463 00:25:15,200 --> 00:25:18,110 Ampak to ni velik design, kajne? 464 00:25:18,110 --> 00:25:20,214 Vi ne želite, da je spletna stran, da zamrzne. 465 00:25:20,214 --> 00:25:22,380 Kaj pa, če uporabnik želi kliknite na spustnem meniju? 466 00:25:22,380 --> 00:25:24,870 To ni veliko načrtovanja vzorec. 467 00:25:24,870 --> 00:25:29,290 Namesto, v bistvu kaj JavaScript ne se pravi, 468 00:25:29,290 --> 00:25:31,870 OK, naredi to operacijo asinhrono. 469 00:25:31,870 --> 00:25:36,520 Torej podobno, čakati v ozadju, in potem, ko se operacija opravljeno, 470 00:25:36,520 --> 00:25:39,420 pokličite povratni klic function-- poklicati neko funkcijo, 471 00:25:39,420 --> 00:25:43,800 se nekateri action-- signalizirati, da je Delovanje smo čakali do konca 472 00:25:43,800 --> 00:25:45,520 konec je. 473 00:25:45,520 --> 00:25:51,240 In razlog, da je super močna je, lahko storimo nekaj, mimo argument, 474 00:25:51,240 --> 00:25:54,440 nekaj narediti, in potem čakati za nekaj, kar se bo zgodilo. 475 00:25:54,440 --> 00:25:58,970 Potem, ko te nekaj dokonča, lahko rečemo povratni klic. 476 00:25:58,970 --> 00:26:03,300 To je zelo priročen, saj omogoča storimo stvari z Web Audio API, 477 00:26:03,300 --> 00:26:07,490 na primer, kot obremenitvijo audio datotek iz oddaljenega strežnika 478 00:26:07,490 --> 00:26:11,660 ne da bi morali počakati na Celotna avdio datoteke, ki se naložijo, 479 00:26:11,660 --> 00:26:14,440 kar bi bilo zares slabo uporabniško izkušnjo. 480 00:26:14,440 --> 00:26:17,080 Cool. 481 00:26:17,080 --> 00:26:19,460 >> Zadnji par je seznanjen o debugging, saj je to 482 00:26:19,460 --> 00:26:23,682 je stvar, ki jo boš moral narediti kot del svojega projekta, zagotovljena. 483 00:26:23,682 --> 00:26:25,140 Omenil sem konzolo JavaScript. 484 00:26:25,140 --> 00:26:27,550 To je super uporabna funkcija vseh modernih brskalnikih, 485 00:26:27,550 --> 00:26:30,300 In res vas spodbujajo, da se udobno uporabo konzolo, 486 00:26:30,300 --> 00:26:33,660 če želite, da bi dobili dober JavaScript. 487 00:26:33,660 --> 00:26:36,320 To je super priročno za debugging, vendar je tudi 488 00:26:36,320 --> 00:26:39,440 res uporabno za kipec kako uporabljati API. 489 00:26:39,440 --> 00:26:41,950 To omogoča zelo enostavno eksperimentiranje 490 00:26:41,950 --> 00:26:45,910 ne da vnesti nekatere kodo, nato pa ga prevesti. 491 00:26:45,910 --> 00:26:47,500 Vam ni treba storiti vse te korake. 492 00:26:47,500 --> 00:26:49,619 Lahko samo napišete del kode v liniji, 493 00:26:49,619 --> 00:26:52,410 in nato dobili takojšnjo povratno informacijo o ali je ta vrstica kode ali ne 494 00:26:52,410 --> 00:26:55,230 worked-- zelo priročen. 495 00:26:55,230 --> 00:26:59,760 >> In tudi, samo ena tehnična note-- JavaScript konzola je primer 496 00:26:59,760 --> 00:27:05,680 iz REPL--, tako da je R-E-P-L, repl, ki stoji za branje, oceniti, 497 00:27:05,680 --> 00:27:06,180 print zanka. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Ti boš, da tip nekaj stvari v, bom prebral, kar ste vnesli, 500 00:27:12,120 --> 00:27:17,280 da bomo ovrednotiti, in ga bomo natisniti izhod, potem pa bom spet začel. 501 00:27:17,280 --> 00:27:22,056 To vam omogoča, da hitro iti v krogi ponavljanjem, ki je res kul. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Mislim, da resnično Last note-- to je dejansko zadnje note, ja. 504 00:27:28,930 --> 00:27:30,780 Kako dejansko uporabljajo JavaScript? 505 00:27:30,780 --> 00:27:34,040 Torej, najprej, lahko uvažamo je s pomočjo skript oznako 506 00:27:34,040 --> 00:27:39,500 na vrhu ali na dnu HTML file-- kjerkoli znotraj HTML datoteke, 507 00:27:39,500 --> 00:27:40,440 res. 508 00:27:40,440 --> 00:27:47,390 In v scenarij tag, obstajajo dva sub-načini uvoz JavaScript. 509 00:27:47,390 --> 00:27:51,370 Prvi je s imajo ločena datoteka JavaScript 510 00:27:51,370 --> 00:27:58,010 da uvažamo v celoti, ali jih ima območje kode podobnega pisavi 511 00:27:58,010 --> 00:28:00,290 za začetek, in nato poševnica nazaj skript konča. 512 00:28:00,290 --> 00:28:02,620 In potem smo samo napisati JavaScript notranjosti datoteko HTML. 513 00:28:02,620 --> 00:28:03,790 To sta dva načina. 514 00:28:03,790 --> 00:28:05,165 Ne morete ga imajo znotraj HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 OBČINSTVO: Je eden boljši od drugih? 517 00:28:08,126 --> 00:28:10,542 SAM GREEN: Vprašanje je bilo, je eden boljši od drugega. 518 00:28:10,542 --> 00:28:18,306 Tako, da, kot kodiranje slog praksi in tudi to je kot prakse oblikovanja. 519 00:28:18,306 --> 00:28:20,180 Obstajata dva razloga Zato bi bilo bolje. 520 00:28:20,180 --> 00:28:23,934 Prvi je, da naredi svojo kodo Veliko bolj berljiva, če vse vaše HTML 521 00:28:23,934 --> 00:28:27,100 je na enem mestu, vse vaše CSS je v drugo mesto, vse vaše JavaScript 522 00:28:27,100 --> 00:28:28,420 je na tretjem mestu. 523 00:28:28,420 --> 00:28:28,920 Prav? 524 00:28:28,920 --> 00:28:32,370 Mislim, da bi morali že govorili o tem v sections-- kot CSS-- kaj 525 00:28:32,370 --> 00:28:35,220 da is-- in gre pogosto v drugo datoteko. 526 00:28:35,220 --> 00:28:37,090 Torej, podobno kot vrsta koncepta tukaj. 527 00:28:37,090 --> 00:28:42,410 Lahko si predstavljate, da JavaScript bi se lahko ponovno uporabi na več kot eno 528 00:28:42,410 --> 00:28:47,350 HTML stran, ali morda Zelo veliko HTML strani, 529 00:28:47,350 --> 00:28:49,340 in ima ta JavaScript refactored v eno 530 00:28:49,340 --> 00:28:51,950 datoteke, ki jih lahko uvozite v več kot enem mestu 531 00:28:51,950 --> 00:28:54,570 omogoča oznaka biti Tako več vzdrževati. 532 00:28:54,570 --> 00:28:57,930 Lahko si predstavljate, izdelavo ene spremenite v JavaScriptu 533 00:28:57,930 --> 00:29:00,070 in da bi to spremenili v 100 različnih datotek. 534 00:29:00,070 --> 00:29:04,070 In namesto da bi lahko samo to spremeniti v enem, ki je veliko bolj močna. 535 00:29:04,070 --> 00:29:05,420 Sem odgovor na vaše vprašanje? 536 00:29:05,420 --> 00:29:07,950 Cool. 537 00:29:07,950 --> 00:29:10,830 >> Prav tako lahko vnesete v konzolo, kot smo že omenili. 538 00:29:10,830 --> 00:29:15,070 In še enkrat, še zadnjič note-- Web Audio je zgrajena v, 539 00:29:15,070 --> 00:29:16,978 vam ni treba naložiti ničesar. 540 00:29:16,978 --> 00:29:17,478 Cool. 541 00:29:17,478 --> 00:29:20,519 Ali obstajajo vprašanja, ali imate dodatna vprašanja o JavaScriptu, 542 00:29:20,519 --> 00:29:21,930 preden gremo naprej? 543 00:29:21,930 --> 00:29:24,286 >> OBČINSTVO: [neslišno] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN: V redu, v redu. 545 00:29:25,410 --> 00:29:27,200 Torej sedaj se dogaja, da govorimo o API. 546 00:29:27,200 --> 00:29:28,490 >> HUGH Zabriskie: Cool. 547 00:29:28,490 --> 00:29:28,990 Hvala, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: Seveda. 549 00:29:30,184 --> 00:29:32,600 HUGH Zabriskie: Awesome, tako bomo korak naprej od JavaScript. 550 00:29:32,600 --> 00:29:35,350 Tako smo se pogovarjali o nekaterih Bistvo JavaScript, 551 00:29:35,350 --> 00:29:41,105 in to so spremenljivke, funkcije, predmeti, deluje kot spremenljivke, 552 00:29:41,105 --> 00:29:41,980 asinhroni nakladanje. 553 00:29:41,980 --> 00:29:46,100 To so vse stvari, ki jih boste glej, kot ga uporabljate po spletu Audio. 554 00:29:46,100 --> 00:29:49,230 Torej smo le, da bo govoril o najprej na visoki ravni. 555 00:29:49,230 --> 00:29:52,120 >> To je API, tako da je nekaj ki je vgrajen, kot je dejal Sam, 556 00:29:52,120 --> 00:29:57,010 desno v JavaScriptu ki jih uporabljate v konzoli. 557 00:29:57,010 --> 00:30:01,020 In to je pravzaprav enako kot C ++ koda da je res vgrajen v Chrome 558 00:30:01,020 --> 00:30:04,470 in Firefox, in vseh teh brskalnikov. 559 00:30:04,470 --> 00:30:07,060 Torej glavno idejo s spleta Audio je, da imate 560 00:30:07,060 --> 00:30:09,440 ta vrsta cevovoda avdio, kajne? 561 00:30:09,440 --> 00:30:13,670 Torej vaše avdio podatki pride v neki obliki. 562 00:30:13,670 --> 00:30:16,690 >> Obstaja vrsta tri glavne forms-- imate oscilator, ki 563 00:30:16,690 --> 00:30:21,340 ustvarja sinusni kosinus val, bomo videli, kako to deluje. 564 00:30:21,340 --> 00:30:23,890 Drug zelo pogost, Seveda je MP3. 565 00:30:23,890 --> 00:30:25,810 Mogoče začnete z pesem, in potem si 566 00:30:25,810 --> 00:30:28,320 želeli narediti nekaj filtriranje na to in izhod 567 00:30:28,320 --> 00:30:30,605 that--, da bi lahko bili možni vir. 568 00:30:30,605 --> 00:30:32,480 In potem je res kul eden je mikrofon. 569 00:30:32,480 --> 00:30:37,230 Torej, lahko uporabite nekaj zelo osnovni klici v JavaScriptu 570 00:30:37,230 --> 00:30:39,440 da bi dobili dostop do mikrofon, in tako, če 571 00:30:39,440 --> 00:30:42,870 želel, da bi aplikacijo kot detektor smole, 572 00:30:42,870 --> 00:30:45,290 na primer, da je v tvoj glas in številke od 573 00:30:45,290 --> 00:30:47,740 pitch-- zelo enostaven način za to. 574 00:30:47,740 --> 00:30:50,730 Lahko samo nekako prebral v, ugotoviti pogostost, 575 00:30:50,730 --> 00:30:52,250 in nato izhodna številka. 576 00:30:52,250 --> 00:30:56,080 Tako da bomo videli, kako to deluje, kot dobro. 577 00:30:56,080 --> 00:30:59,430 >> Destinacija je v bistvu kjer je avdio podatki izhod. 578 00:30:59,430 --> 00:31:02,890 Tako na splošno, da je kot Vaš prenosni zvočniki. 579 00:31:02,890 --> 00:31:05,610 Druge možnosti so kot ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 bomo prišli do vozlišč v Sistemu second-- ampak v bistvu, 581 00:31:07,990 --> 00:31:11,939 bodisi ste dajanje zvok ven prek računalnika prek zvočnikov, 582 00:31:11,939 --> 00:31:14,730 ali ste nekako evidentiranje, zato ste ga shranite kot audio podatkov. 583 00:31:14,730 --> 00:31:18,980 Mogoče, če nekdo ustvari glasba v vašem app in potem 584 00:31:18,980 --> 00:31:22,410 želite posneti, da je in morda všeč izvoziti v SoundCloud, za example-- 585 00:31:22,410 --> 00:31:25,281 da bi bil eden od načinov, da to storim. 586 00:31:25,281 --> 00:31:27,030 Vse zabavno stvari, ki bomo govorili o tem, 587 00:31:27,030 --> 00:31:29,950 zgodi med tema dvema točkama, kjer smo naložili v glasbi 588 00:31:29,950 --> 00:31:31,410 in nato oddajati. 589 00:31:31,410 --> 00:31:36,660 >> Tako da bom govoril o petih faze audio proizvodnje v sekundi. 590 00:31:36,660 --> 00:31:38,950 Imamo to stvar, imenovano AudioContext, ki 591 00:31:38,950 --> 00:31:41,580 je to malo ovoj vidimo tukaj. 592 00:31:41,580 --> 00:31:49,980 V bistvu, kaj AudioContext is-- če smo pojdi na JavaScript konzolo prav zdaj, 593 00:31:49,980 --> 00:31:52,740 bomo lahko ustvarili eno zdaj. 594 00:31:52,740 --> 00:31:54,040 Samo primer repl, kajne? 595 00:31:54,040 --> 00:31:57,880 Mi berete, ocenjevanje in tiska. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext je globalno stanje. 597 00:32:00,260 --> 00:32:05,500 To je struct, je predmet tukaj, in ga ohranja informacije 598 00:32:05,500 --> 00:32:09,960 o stvareh, ki se dogaja Na zaslonu povezane z zvokom. 599 00:32:09,960 --> 00:32:15,220 En primer je sedanji čas. 600 00:32:15,220 --> 00:32:18,910 To vam pove številko sekundah, zelo natančno, 601 00:32:18,910 --> 00:32:20,890 ker na spletni strani naložen. 602 00:32:20,890 --> 00:32:24,110 Torej je to res uporabno malo premoženja, ki ga lahko uporabite. 603 00:32:24,110 --> 00:32:27,898 To je prebral only-- mislim, da dejansko lahko poskusite nastaviti vrednost. 604 00:32:27,898 --> 00:32:29,856 To bom, da si jo nastavite, in potem, če ga natisnete 605 00:32:29,856 --> 00:32:31,439 again-- to ni dejansko precej dela. 606 00:32:31,439 --> 00:32:34,472 Torej so tam samo za branje lastnosti v JavaScript. 607 00:32:34,472 --> 00:32:36,430 To je res uporabno, če ste nekako sinhronizacijo 608 00:32:36,430 --> 00:32:38,610 veliko različnih informacij, ko ste 609 00:32:38,610 --> 00:32:41,280 vrsta igranje različnih zvokov. 610 00:32:41,280 --> 00:32:43,630 >> Še en zelo uporaben, je destinacija kontekst. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Definitivno, če ste zainteresirani, se poskuša to na svojo konzolo pravice 613 00:32:49,670 --> 00:32:50,980 zdaj. 614 00:32:50,980 --> 00:32:53,150 Torej je to AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 V bistvu, kaj to pove, je, če je toplota dogaja? 616 00:32:56,480 --> 00:32:59,590 Torej obstajata dve realne možnosti tukaj. 617 00:32:59,590 --> 00:33:01,940 Običajno je privzeta je le zvočnike, 618 00:33:01,940 --> 00:33:05,150 tako AudioDestinationNode v bistvu samo pravi 619 00:33:05,150 --> 00:33:09,240 obstaja nič izhodi za zvok prihaja, pošlje na zvočnik. 620 00:33:09,240 --> 00:33:12,050 Torej na splošno, ne boste igrati s tem. 621 00:33:12,050 --> 00:33:15,720 Če ste zainteresirani za dejansko uporabo ScriptProcessorNode za snemanje, 622 00:33:15,720 --> 00:33:16,990 Vsekakor me je ustrelil email pozneje, ker je to 623 00:33:16,990 --> 00:33:18,330 malo bolj zapletena. 624 00:33:18,330 --> 00:33:21,590 Ampak na splošno, da si nekako prikazovanje zvok v neki obliki. 625 00:33:21,590 --> 00:33:24,347 Tako kul, bomo skoči nazaj. 626 00:33:24,347 --> 00:33:25,180 OBČINSTVO: Žal mi je. 627 00:33:25,180 --> 00:33:26,054 HUGH Zabriskie: Ja. 628 00:33:26,054 --> 00:33:28,770 OBČINSTVO: Vem, da si rekel, da govori da vas kasneje o snemanju. 629 00:33:28,770 --> 00:33:31,550 Lahko vmesnik, ki s Pro Tools? 630 00:33:31,550 --> 00:33:33,120 >> HUGH Zabriskie: S Pro Tools? 631 00:33:33,120 --> 00:33:35,260 Pa poglejmo. 632 00:33:35,260 --> 00:33:37,220 Jaz ne mislim tako. 633 00:33:37,220 --> 00:33:41,670 Tako bo med stranko, ki je JavaScript 634 00:33:41,670 --> 00:33:44,310 konzole, in vaša dejanska z računalnikom, je na splošno 635 00:33:44,310 --> 00:33:46,490 nekaj, kar je nekako off omejitev, če vas 636 00:33:46,490 --> 00:33:52,320 bo nekako z naravo the-- to je neke vrste oblikovanja stvar, 637 00:33:52,320 --> 00:33:57,770 ampak ste poskušali obdržati brskalnik ločeno od uporabnikovega dejanskega računalniku. 638 00:33:57,770 --> 00:34:02,310 Na splošno, je edina stvar, ki ste sposobni Dostop je mikrofon ali kamero. 639 00:34:02,310 --> 00:34:04,730 Niste mogli, I Ne verjamem, uporabite Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Vendar, če ste ustvarili steza v Pro Tools, 641 00:34:07,480 --> 00:34:12,710 izvažajo, da lahko naložite, da tukaj, jo filtriramo, na primer, 642 00:34:12,710 --> 00:34:16,820 proces, in zapiše, da v Audio Destination-- ali no-- krogla 643 00:34:16,820 --> 00:34:17,870 Procesor Node. 644 00:34:17,870 --> 00:34:20,730 In potem od tam, bi si izvoz, da SoundCloud, vas 645 00:34:20,730 --> 00:34:25,320 lahko ga pošljete v e-pošti, ali karkoli vam je všeč od tam. 646 00:34:25,320 --> 00:34:31,159 >> Vendar pa obstaja vrsta rahlim pregrade med ustvarjanja glasbe na vašem računalniku 647 00:34:31,159 --> 00:34:33,050 in ustvarjajo glasbo na spletu. 648 00:34:33,050 --> 00:34:37,940 >> SAM GREEN: In to je ni značilno za to API. 649 00:34:37,940 --> 00:34:44,060 To je varnostna funkcija Chrome in Mislim, da vsak drug sodoben brskalnik. 650 00:34:44,060 --> 00:34:45,860 Brskalnik je samostojen. 651 00:34:45,860 --> 00:34:50,980 Tako na primer spletna stran ne more uporabljajo JavaScript, da vklopite zvok 652 00:34:50,980 --> 00:34:54,190 na podlagi vaših zvočnikov, na primer. 653 00:34:54,190 --> 00:34:58,120 Ali je vaš računalnik ne more izklopiti. 654 00:34:58,120 --> 00:35:01,530 In ni vmesne točke med tema dvema stvarema, desno, 655 00:35:01,530 --> 00:35:05,960 tako ali imate popolna abstrakcija, 656 00:35:05,960 --> 00:35:10,050 ali pa odpirajo varnostna pomanjkljivost najemnin 657 00:35:10,050 --> 00:35:14,440 programer s slabimi nameni narediti karkoli hočejo s prenosnim računalnikom. 658 00:35:14,440 --> 00:35:18,104 In to je, zakaj je Chrome je samostojen. 659 00:35:18,104 --> 00:35:19,310 >> HUGH Zabriskie: Ja. 660 00:35:19,310 --> 00:35:20,840 Ali to smiselno? 661 00:35:20,840 --> 00:35:21,369 Kul, kul. 662 00:35:21,369 --> 00:35:23,160 Sem bil le, da bo prikazana ena. 663 00:35:23,160 --> 00:35:25,118 To je precej, kot kolikor boste dobili, v smislu 664 00:35:25,118 --> 00:35:26,950 dostopanja uporabnikov računalnik. 665 00:35:26,950 --> 00:35:30,180 Če imate tipkovnico USB priključen na električno omrežje, lahko uporabite nekaj, kar se imenuje Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, ki je ne bomo res govorimo o tukaj, 667 00:35:32,180 --> 00:35:36,330 ampak to je še en API, ki je vgrajen v vsaj Chrome-- spet 668 00:35:36,330 --> 00:35:41,570 To je razlog, zakaj imamo radi Chrome-- Mislim, Firefox ali Safari, 669 00:35:41,570 --> 00:35:44,300 To je lahka stvar google-- različni brskalniki imajo 670 00:35:44,300 --> 00:35:46,917 drugačna podpora za katere API-ji so izvajale. 671 00:35:46,917 --> 00:35:49,875 Ampak, če boste želeli, da priključite tipkovnico in delo z te informacije, 672 00:35:49,875 --> 00:35:52,850 nekako poslati tipkovnico podatki prenesejo v računalnik 673 00:35:52,850 --> 00:35:57,620 in nato uporabite, da na spletu, ta API je, če bi se dela, da je. 674 00:35:57,620 --> 00:35:58,150 >> Cool. 675 00:35:58,150 --> 00:35:58,710 V REDU. 676 00:35:58,710 --> 00:36:01,320 Torej, hitro se gibljejo na tukaj. 677 00:36:01,320 --> 00:36:03,310 Kako nam gre na čas? 678 00:36:03,310 --> 00:36:04,210 >> SPEAKER 1: O 15. 679 00:36:04,210 --> 00:36:05,543 >> HUGH Zabriskie: 15 minut zapustil? 680 00:36:05,543 --> 00:36:06,160 OK kul. 681 00:36:06,160 --> 00:36:08,170 Torej bomo poviševanje tukaj. 682 00:36:08,170 --> 00:36:13,500 >> Torej v bistvu, glavna točka razmišljam o tem kot cevovoda 683 00:36:13,500 --> 00:36:16,430 je, da vsak korak v cevovodu je serija avdio vozlišč. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Naš vir, recimo, je oscilator. 686 00:36:20,950 --> 00:36:23,380 Moramo ustvariti oscilator vozlišče. 687 00:36:23,380 --> 00:36:25,690 In to je le nekako z malo function-- 688 00:36:25,690 --> 00:36:30,460 in oni so vsi temelji iz avdio konteksta tukaj. 689 00:36:30,460 --> 00:36:32,885 >> OBČINSTVO: Ko je dejal, oscilator, ali to pomeni, 690 00:36:32,885 --> 00:36:37,250 To je pravzaprav dobesedno gredo iz dva različna pola in nazaj? 691 00:36:37,250 --> 00:36:41,170 >> HUGH Zabriskie: Ne, to je kot digitalni prikaz. 692 00:36:41,170 --> 00:36:42,740 To je dejansko izvajal v C ++. 693 00:36:42,740 --> 00:36:46,460 Jaz pravzaprav ne vem, očala o tem, kako je to dejansko izvajajo, 694 00:36:46,460 --> 00:36:48,500 vse to pa deluje kot binarnih podatkov. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Pravzaprav, ja. 697 00:36:52,370 --> 00:36:53,950 Da bi rekel, sem lahko pravzaprav, če vas zanima, 698 00:36:53,950 --> 00:36:56,533 Jaz bi vam poslali nekaj več informacije o tem, kako valov 699 00:36:56,533 --> 00:37:00,181 se hranijo z digitalno obliko. 700 00:37:00,181 --> 00:37:00,680 OK kul. 701 00:37:00,680 --> 00:37:03,120 >> Torej smo generiranje ton podobnega sine val ali kaj podobnega, da je mogoče 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Ustvarjamo oscilator. 704 00:37:05,830 --> 00:37:09,180 Če želimo, da nastavite glasnost, smo priključiti ničesar na GainNode, 705 00:37:09,180 --> 00:37:12,500 kar lahko storimo z .creategain. 706 00:37:12,500 --> 00:37:14,250 Ki določa glasnost. 707 00:37:14,250 --> 00:37:17,820 Lahko prenese, da na kateri koli na drugi options-- dobro, 708 00:37:17,820 --> 00:37:20,300 tako avdio buffer vir vozlišče, kjer boste morda 709 00:37:20,300 --> 00:37:23,660 shranjevanje MP3, ki ste ga naložili v. 710 00:37:23,660 --> 00:37:27,670 >> Biquad filter za filtriranje če hočeš, da sprejmejo vse osnove iz 711 00:37:27,670 --> 00:37:29,630 za pesem, ali kaj podobnega. 712 00:37:29,630 --> 00:37:32,450 Bog ne daj, da želite, da sprejmejo baza iz pesmi. 713 00:37:32,450 --> 00:37:36,980 In AudioDestination vozlišče je, še enkrat, kot, kjer je naš zaključek. 714 00:37:36,980 --> 00:37:39,980 Če ste kdaj zanima, vse različne možne opcije so, 715 00:37:39,980 --> 00:37:45,190 pojdite na zavihek in pustite auto-popolna, pridi gor. 716 00:37:45,190 --> 00:37:48,690 In če vam ustvarili, boste videli vse različne stvari, ki jih lahko ustvarite. 717 00:37:48,690 --> 00:37:50,398 Lahko ustvarite dinamiko procesorji script, 718 00:37:50,398 --> 00:37:52,940 Sploh ne vem, kaj to je za mešanje kanal združitev 719 00:37:52,940 --> 00:37:55,930 in kanal drobilci, in vse to. 720 00:37:55,930 --> 00:37:56,430 Cool. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Torej, to je samo Primer cevovoda. 723 00:38:01,390 --> 00:38:03,580 Torej imamo tri vire, ki prihajajo v. 724 00:38:03,580 --> 00:38:06,830 Mogoče so to oblike valov, Morda so to MP3. 725 00:38:06,830 --> 00:38:08,740 Ena se dogaja prek filter, eden je 726 00:38:08,740 --> 00:38:12,404 pridobivanje izkrivljena drugo ena je slikanje panorame levo in desno. 727 00:38:12,404 --> 00:38:15,320 To lahko storite vse vrste stvari in vsi so se zmeša vsem skupaj, 728 00:38:15,320 --> 00:38:18,880 in potem ven prihaja zvok na koncu, kot destinacijo. 729 00:38:18,880 --> 00:38:22,720 To je primer, kaj več zapletena Web Audio koda izgleda. 730 00:38:22,720 --> 00:38:26,720 Ste ustvarili vse te različni predmeti desno here-- 731 00:38:26,720 --> 00:38:27,706 Nisem prepričan o tem. 732 00:38:27,706 --> 00:38:29,120 Ne, ne povečate. 733 00:38:29,120 --> 00:38:29,620 V REDU. 734 00:38:29,620 --> 00:38:31,257 >> SAM GREEN: Saj Control, Scroll-Up. 735 00:38:31,257 --> 00:38:32,590 HUGH Zabriskie: Control Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM GREEN: Ne, ne. 737 00:38:33,000 --> 00:38:33,500 Control-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> HUGH Zabriskie: Oh, Control, Pomaknite? 740 00:38:38,140 --> 00:38:38,780 Oh, gotcha. 741 00:38:38,780 --> 00:38:41,480 Ja. 742 00:38:41,480 --> 00:38:42,240 Wow, nope, nope. 743 00:38:42,240 --> 00:38:42,740 V REDU. 744 00:38:42,740 --> 00:38:46,090 Tega ne bom storil. 745 00:38:46,090 --> 00:38:48,300 >> Torej, ja, v tem prvem oddelek tukaj, vidiš 746 00:38:48,300 --> 00:38:52,720 smo ustvarili vse te različne vozlišča iz konteksta. 747 00:38:52,720 --> 00:38:54,980 Mi smo jih samo piecing skupaj v drugem delu 748 00:38:54,980 --> 00:38:56,980 s to funkcijo, imenovano Connect. 749 00:38:56,980 --> 00:38:58,830 To je res ključna Funkcija Web Audio. 750 00:38:58,830 --> 00:39:01,930 To samo pomeni, da ko ste storili kaj z zvokom v enem vozlišču, 751 00:39:01,930 --> 00:39:03,705 jih prenesti na naslednje vozlišče. 752 00:39:03,705 --> 00:39:05,830 Torej imamo vir, jo poveže z analizatorjem, 753 00:39:05,830 --> 00:39:09,140 analizator nekaj počne z njo, gre za izkrivljanje, in tako naprej, 754 00:39:09,140 --> 00:39:12,725 in v okolici na dnu tukaj. 755 00:39:12,725 --> 00:39:13,225 Cool. 756 00:39:13,225 --> 00:39:14,640 OK, tako da bomo še naprej premika naprej. 757 00:39:14,640 --> 00:39:17,180 >> Spet pipeline--, ti so najpogostejši cevovodi, 758 00:39:17,180 --> 00:39:21,300 zato govorimo o vseh teh stvareh popačenje, slikanje panorame, vse te stvari. 759 00:39:21,300 --> 00:39:24,280 Če ste res zanima pri uporabi stvari Pro Tools, 760 00:39:24,280 --> 00:39:25,820 tistih, ki vas verjetno zanima. 761 00:39:25,820 --> 00:39:27,740 Če ne, pa si samo želite predvajati zvok, 762 00:39:27,740 --> 00:39:29,990 ali pa si samo želim, da nastavite glasnost zvoka. 763 00:39:29,990 --> 00:39:35,270 Tisti, sta dva najpogostejša vrsta cevovodov v avdio produkcijo. 764 00:39:35,270 --> 00:39:38,640 >> Again, načine, ga lahko vzamete v kot oscillator-- Torej, kaj je 765 00:39:38,640 --> 00:39:42,460 narediti demo tega tukaj. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Tako bomo ustvarili preprost audio kontekst tukaj, 768 00:39:52,225 --> 00:39:54,350 in iz tega bomo ustvariti našo oscilator. 769 00:39:54,350 --> 00:39:58,620 Torej, to je, še enkrat, mi smo samo dogaja, da pokličete Ustvari oscilator. 770 00:39:58,620 --> 00:40:07,030 Bomo nastavite frekvenco na da, 440 Hertz, najljubša vsakogar. 771 00:40:07,030 --> 00:40:13,290 Potem smo se povezati, da v okolici Point-- ki je zvočnik, tako 772 00:40:13,290 --> 00:40:15,750 destinacija kontekst. 773 00:40:15,750 --> 00:40:21,400 Končno smo pravkar rekel, da začnete nič sekund od zdaj, in ne bomo se sliši? 774 00:40:21,400 --> 00:40:22,400 >> [RINGING] 775 00:40:22,400 --> 00:40:24,980 >> HUGH Zabriskie: Tukaj gremo. 776 00:40:24,980 --> 00:40:25,940 To je samo sinusni. 777 00:40:25,940 --> 00:40:26,440 OK kul. 778 00:40:26,440 --> 00:40:28,274 In potem bomo ustavili to. 779 00:40:28,274 --> 00:40:30,520 >> OBČINSTVO: Kje si da povratne informacije prihajajo iz? 780 00:40:30,520 --> 00:40:31,250 >> HUGH Zabriskie: Povratne informacije? 781 00:40:31,250 --> 00:40:32,458 Oh, verjetno naši mikrofoni. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Torej, ja, to je, kako si to naredil. 784 00:40:35,470 --> 00:40:37,261 In dejansko, če bi imel vodi to tekmovanje v teku, vam 785 00:40:37,261 --> 00:40:39,540 lahko imajo frekvenco vrednost, saj je tekmovanje v teku, 786 00:40:39,540 --> 00:40:43,320 tako da je zabavno igrati okoli. 787 00:40:43,320 --> 00:40:44,930 Cool. 788 00:40:44,930 --> 00:40:46,600 To je vedno lepo eno predstaviti. 789 00:40:46,600 --> 00:40:48,792 >> SAM GREEN: ne Nismo misliti, da sva? 790 00:40:48,792 --> 00:40:50,500 HUGH Zabriskie: Ja, to je grdo ena. 791 00:40:50,500 --> 00:40:53,249 Torej, buffer loading-- bom kažeta Primer da na samem koncu. 792 00:40:53,249 --> 00:40:55,090 To je nakladanje MP3. 793 00:40:55,090 --> 00:40:58,880 In mikrofon, da uporabite samo funkcijo imenuje Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 da zahteva dostop do uporabnikov mikrofon za te informacije. 795 00:41:03,240 --> 00:41:05,610 >> Tukaj je filtriranje, bom samo premikajo od tega. 796 00:41:05,610 --> 00:41:08,600 To je precej visoki ravni, ampak filtri samo vam omogočajo, da 797 00:41:08,600 --> 00:41:16,154 >> [Piskajoči] 798 00:41:16,154 --> 00:41:18,320 Filtriranje vam omogoča tudi ustvariti stvari, kot so roza 799 00:41:18,320 --> 00:41:20,050 hrup, rjava hrup, beli šum. 800 00:41:20,050 --> 00:41:24,330 Če želite ustvariti čisto hrup, ki nekateri ljudje radi za nered okrog s, 801 00:41:24,330 --> 00:41:27,490 lahko uporabite spletno Audio filtriranje, da to storim. 802 00:41:27,490 --> 00:41:30,039 >> Audio Panning-- tako predstavljate če pišete igro 803 00:41:30,039 --> 00:41:32,330 in želite, da se zvok zvok, kot je to, ki prihajajo, kot so, 804 00:41:32,330 --> 00:41:36,090 streljanje po zaslonu, boste Lahko uporabite slikanje panorame audio 805 00:41:36,090 --> 00:41:39,770 ustvariti takšno stožca, ki like-- je precej MATHY, 806 00:41:39,770 --> 00:41:41,850 ampak to je dejansko res kul, če si dobil to delo, 807 00:41:41,850 --> 00:41:44,500 in tam je nekaj dobrega vaje na njem lahko vam poslali. 808 00:41:44,500 --> 00:41:46,400 V bistvu, lahko vrste za ustvarjanje zvoka 809 00:41:46,400 --> 00:41:50,480 nečesa dogaja jih v 3D način. 810 00:41:50,480 --> 00:41:57,350 In če imate DJ interes, lahko začetek mešanje in prečkati bledenje pesmi. 811 00:41:57,350 --> 00:42:01,260 >> To je samo nekaj zelo osnovna koda, v bistvu, kaj sem storil prej. 812 00:42:01,260 --> 00:42:06,140 Ta določa prostornine oscilator, zato smo ustvarili našo oscilator 813 00:42:06,140 --> 00:42:07,380 ki ustvarja valovno. 814 00:42:07,380 --> 00:42:09,940 Mi ustvarjamo našo GainNode, Svoje frekvenco, 815 00:42:09,940 --> 00:42:14,170 in nato povežite oscilator na GainNode, ki je potem v bistvu spreminja 816 00:42:14,170 --> 00:42:16,760 koliko signala pustimo skozi. 817 00:42:16,760 --> 00:42:20,467 Ampak res, to je digitalni stvar, tako da je bolj just-- ja. 818 00:42:20,467 --> 00:42:23,550 To ni tisto, kar se dejansko dogaja, ampak to je tisto, kar se dogaja v resničnem življenju 819 00:42:23,550 --> 00:42:24,393 z dobičkom. 820 00:42:24,393 --> 00:42:27,258 >> OBČINSTVO: --quantization parametra volumna? 821 00:42:27,258 --> 00:42:28,174 HUGH Zabriskie: Oprostite? 822 00:42:28,174 --> 00:42:30,360 OBČINSTVO: ali je kvantizirane obseg parameter? 823 00:42:30,360 --> 00:42:31,840 HUGH Zabriskie: Ja. 824 00:42:31,840 --> 00:42:34,620 In to je ena stvar, ki sem res pomanjkljivo v moji vednosti, 825 00:42:34,620 --> 00:42:38,010 kako dobiček deluje na digitalnem ravni. 826 00:42:38,010 --> 00:42:40,140 Vem, da z dejanskim signale, to je v bistvu 827 00:42:40,140 --> 00:42:45,120 nadzoruje, koliko ste ojačanje signala. 828 00:42:45,120 --> 00:42:47,017 Torej, ja. 829 00:42:47,017 --> 00:42:50,100 Jaz vam bomo poslali več informacij o da, ker sem radoveden dejansko 830 00:42:50,100 --> 00:42:51,099 vedeti več o tem. 831 00:42:51,099 --> 00:42:54,090 Ampak v bistvu parametri so, eden je fold-- 832 00:42:54,090 --> 00:42:59,690 glasnejši signal-- in nič ni signala, ali pa ne boste slišali nobenega zvoka. 833 00:42:59,690 --> 00:43:03,150 Bomo preskočili demo časa za to, ker to je v bistvu tisto, kar sem storil prej. 834 00:43:03,150 --> 00:43:07,630 In spet je Context.Destination je audio destinacija vozlišče. 835 00:43:07,630 --> 00:43:08,360 Super, OK. 836 00:43:08,360 --> 00:43:10,470 >> Torej bom to hitro dva demos. 837 00:43:10,470 --> 00:43:11,760 Kako nam gre na čas? 838 00:43:11,760 --> 00:43:12,640 >> SPEAKER 1: približno 10 minut. 839 00:43:12,640 --> 00:43:13,130 >> HUGH Zabriskie: 10 minut? 840 00:43:13,130 --> 00:43:13,630 Super! 841 00:43:13,630 --> 00:43:14,320 Awesome. 842 00:43:14,320 --> 00:43:19,010 >> Torej prva grem ne, to se imenuje My Favorite Song. 843 00:43:19,010 --> 00:43:22,410 Torej, to je le malo HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Bomo imeli dva gumba na strani igrajo svojo najljubšo pesem 845 00:43:25,510 --> 00:43:29,192 in ustaviti mojo najljubšo pesem. 846 00:43:29,192 --> 00:43:30,180 Jaz bom to spremenila. 847 00:43:30,180 --> 00:43:32,110 >> OBČINSTVO: Pokrijte mikrofon. 848 00:43:32,110 --> 00:43:33,430 >> HUGH Zabriskie: Ja. 849 00:43:33,430 --> 00:43:36,300 In sem naložen tukaj skripta, ki basically-- 850 00:43:36,300 --> 00:43:38,520 in to je res uporabno za polnjenje MP3, 851 00:43:38,520 --> 00:43:41,820 tako da je to samo naredi nalagate datoteke MP3 način hitreje. 852 00:43:41,820 --> 00:43:44,180 To je v bistvu samo ovoj. 853 00:43:44,180 --> 00:43:48,737 Samo naredi postopek vložite v MP3 veliko hitreje, 854 00:43:48,737 --> 00:43:51,570 drugače boste uporabljali zahtevo HTTP, nekako kot tisto, kar smo počeli 855 00:43:51,570 --> 00:43:53,950 o trenutnem kosu, določenem s strežnikom. 856 00:43:53,950 --> 00:43:55,950 To je res grda, si Ne želim, da to storite. 857 00:43:55,950 --> 00:44:04,110 >> Torej ta tip, Boris MSP zagotovilo, napisal res koristno malo orodje, imenovano BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Vse, kar morate storiti, je preprosto to, da prenese kontekst, si ga list-- mimo 859 00:44:08,780 --> 00:44:11,327 ali, ja, je seznam v JavaScript? 860 00:44:11,327 --> 00:44:12,160 SAM GREEN: Matrika. 861 00:44:12,160 --> 00:44:14,201 HUGH Zabriskie: Oh, to je matrika, da je prav. 862 00:44:14,201 --> 00:44:18,660 To je niz poti različnim datotek. 863 00:44:18,660 --> 00:44:21,990 In potem si to funkcijo prenese. 864 00:44:21,990 --> 00:44:25,530 Gre za povratni smo govorili o z asinhronim nakladanja. 865 00:44:25,530 --> 00:44:28,720 Ki se bo imenoval enkrat datotek naloženo. 866 00:44:28,720 --> 00:44:33,780 In da je funkcija, ki se sproži ob datoteka je naložen je kot obodu 867 00:44:33,780 --> 00:44:35,840 paleto naloženimi blažilcev. 868 00:44:35,840 --> 00:44:37,990 Tako da se pojavi tukaj. 869 00:44:37,990 --> 00:44:41,180 V bistvu, BufferList je bo ena value-- 870 00:44:41,180 --> 00:44:46,380 ali pa se dogaja, da se niz Dolžina on, ki je v njem v indeksu 871 00:44:46,380 --> 00:44:51,320 nič celotno naloženo datoteko MP3. 872 00:44:51,320 --> 00:44:53,320 Torej, kaj storim, ko sem končal nakladanje je, da sem preprosto 873 00:44:53,320 --> 00:44:57,430 ustvariti vir blažilnika, ki je avdio buffer vir vozlišče. 874 00:44:57,430 --> 00:45:03,410 Naslednji korak je, da sem naložiti v source.buffer kot polno obremenjenega pufra 875 00:45:03,410 --> 00:45:06,740 Iz BufferList-- to je veliko buffers-- 876 00:45:06,740 --> 00:45:10,255 in potem se povežete ta zvok buffer na destinacijo. 877 00:45:10,255 --> 00:45:12,380 Torej, kaj se dogaja, da storijo je samo preprosto rečeno MP3 878 00:45:12,380 --> 00:45:15,260 naravnost do izhoda, in ga takoj začeti 879 00:45:15,260 --> 00:45:18,010 ob dobili ta poziv. 880 00:45:18,010 --> 00:45:21,660 >> Kul, tako da je videti to zgodilo v akciji. 881 00:45:21,660 --> 00:45:24,490 Moj [neslišno] tukaj, pa poglejmo. 882 00:45:24,490 --> 00:45:26,430 Tako da sem le, da bo začetek osnovno strežnik. 883 00:45:26,430 --> 00:45:28,660 To je nekaj, kar kar morate storiti, če ste 884 00:45:28,660 --> 00:45:32,490 vlaganje prošenj za nalaganje datotek. 885 00:45:32,490 --> 00:45:34,140 Jaz bom za začetek osnovno strežnik. 886 00:45:34,140 --> 00:45:38,200 To je v bistvu celoten PSET zdaj v eni vrstici, 887 00:45:38,200 --> 00:45:43,930 ampak to je šele začenja strežnik na vratih 80/80. 888 00:45:43,930 --> 00:45:47,300 Torej, gremo tukaj, smo gre za nalaganje 80/80, 889 00:45:47,300 --> 00:45:49,110 smo šli do mojih najljubših pesmi. 890 00:45:49,110 --> 00:45:51,660 Torej, če sem udaril "Play my najljubša pesem "prav zdaj, 891 00:45:51,660 --> 00:45:53,964 to se dogaja, da naložite my najljubša pesem in igrajo it-- 892 00:45:53,964 --> 00:45:55,880 [MUSIC - The Eagles, "LIFE v hitro  LANE "] 893 00:45:55,880 --> 00:46:00,490 --which zgodi, da se "Življenje v Fast Lane ", ki ga The Eagles. 894 00:46:00,490 --> 00:46:06,346 Zdaj, lahko sem udaril "Stop my najljubša pesem "in ga Replay. 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - The Eagles, "LIFE v hitro  LANE "] 896 00:46:09,160 --> 00:46:18,340 >> In če sem šel čez potolažiti, ker Včasih sem globalno spremenljivko tukaj 897 00:46:18,340 --> 00:46:23,390 slediti te vrednosti, je dejansko bo sedaj priznana v konzoli. 898 00:46:23,390 --> 00:46:25,160 Torej je auto-ustvari za mene. 899 00:46:25,160 --> 00:46:29,991 Torej, to je tisto, kar je igral prav zdaj, in sem lahko preprosto pokličete source.stop () 900 00:46:29,991 --> 00:46:30,490 na to. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 No, veš kaj? 903 00:46:35,860 --> 00:46:39,760 Samo, da so slišali vi to song-- boste morda prepoznali to pesem. 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - RICK Astley, "NIKOLI boš dal  YOU UP "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - The Eagles, "LIFE v hitro  LANE "] 907 00:46:44,215 --> 00:46:46,195 Mi smo zdaj vsi Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, super, premika naprej. 909 00:46:50,155 --> 00:46:51,160 Cool. 910 00:46:51,160 --> 00:46:54,554 Torej je to v bistvu primer kako si lahko naložite MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - The Eagles, "LIFE v hitro  LANE "] 912 00:46:56,470 --> 00:46:59,590 --and jo igrajo, in ustaviti in ga zaženite. 913 00:46:59,590 --> 00:47:03,008 Lahko bi naredili veliko več [neslišno] 914 00:47:03,008 --> 00:47:07,570 >> Zadnja bom storiti, je, Jaz ti bom pokazal [neslišno]. 915 00:47:07,570 --> 00:47:18,070 >> [Predvaja glasba] 916 00:47:18,070 --> 00:47:21,800 >> To je podobno, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Mislim, če se prav spomnim, Naletel sem na nekaj vprašanj, s .m4a, 918 00:47:26,450 --> 00:47:27,721 vendar nisem prepričan o tem. 919 00:47:27,721 --> 00:47:28,470 Mislim mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MUSIC - RICK Astley, "NIKOLI boš dal  YOU UP "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK super. 924 00:47:36,500 --> 00:47:37,625 Ne bi smel reči. 925 00:47:37,625 --> 00:47:40,570 Kakorkoli že, zdravo. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Torej imamo odprto. 928 00:47:45,490 --> 00:47:52,320 Torej, zdaj vse kar sem naredil je, da sem v bistvu ustvaril osnovno sintakso za ustvarjanje glasbe. 929 00:47:52,320 --> 00:47:57,610 Torej, če naredim nekaj podobnega, dodajte G4 1. 2, kaj to pomeni, je to, 930 00:47:57,610 --> 00:48:00,950 dodate opombo klavir, G4, ki je četrta G 931 00:48:00,950 --> 00:48:02,680 up na klavir od spodaj. 932 00:48:02,680 --> 00:48:05,930 Torej, to je nekako MIDI govorijo, tako za tiste, ki so glasbo, ki temelji, 933 00:48:05,930 --> 00:48:07,860 to je samo MIDI opombe. 934 00:48:07,860 --> 00:48:10,090 >> OBČINSTVO: To je G na Bližnjem C, kajne? 935 00:48:10,090 --> 00:48:11,840 >> HUGH Zabriskie: To je G nad Bližnjem C, da je prav. 936 00:48:11,840 --> 00:48:12,470 >> OBČINSTVO: Nad Bližnji C. 937 00:48:12,470 --> 00:48:13,345 >> HUGH Zabriskie: Ja. 938 00:48:13,345 --> 00:48:14,340 Pravzaprav, ja. 939 00:48:14,340 --> 00:48:16,131 Mislim, dejansko sem naredil je eden [neslišno] 940 00:48:16,131 --> 00:48:18,860 tako da to lahko oktavo nad tem. 941 00:48:18,860 --> 00:48:20,070 Torej, poglejmo. 942 00:48:20,070 --> 00:48:21,152 Če sem udaril Play-- 943 00:48:21,152 --> 00:48:22,110 [Ponavljajočih se PIANO OPOMBA] 944 00:48:22,110 --> 00:48:23,200 --we're dogaja, da slišim to. 945 00:48:23,200 --> 00:48:25,700 Ideja je, da deluje tako kot bi v ukazni vrstici, 946 00:48:25,700 --> 00:48:27,510 tako da, če bom šel gor in dol na moji tipkovnici, ki jih 947 00:48:27,510 --> 00:48:31,550 Lahko se vrnete na prejšnji Ukazi, ki je zelo koristen. 948 00:48:31,550 --> 00:48:35,136 In spodaj je moj seznam skladb, ki so vse deluje na zanko. 949 00:48:35,136 --> 00:48:38,260 >> OBČINSTVO: Ti so ob predpostavki, da 88-ključ tipkovnico na to, kajne? 950 00:48:38,260 --> 00:48:41,051 >> HUGH Zabriskie: Vprašanje je bilo, sem ob predpostavki 88-ključ tipkovnico, 951 00:48:41,051 --> 00:48:41,990 in ja, jaz sem. 952 00:48:41,990 --> 00:48:45,030 Kaj sem storil je, da sem v bistvu je 88 vzorcev 953 00:48:45,030 --> 00:48:46,970 klavirja, enega za vsako noto. 954 00:48:46,970 --> 00:48:49,180 In tako vsakič, ko Zaslišali seznanjen od zdaj naprej, 955 00:48:49,180 --> 00:48:57,550 da je dejansko zanka, ki izgleda like-- to je pridobivanje igral na zanko, 956 00:48:57,550 --> 00:49:00,120 tako da za vsako noto, ta teče. 957 00:49:00,120 --> 00:49:02,860 Kaj se zgodi, je, da sem Ponovno ustvariti varovalo, 958 00:49:02,860 --> 00:49:06,010 Sem ustvariti dobiček vozlišče za nastavitev glasnosti. 959 00:49:06,010 --> 00:49:08,240 To samo res zapleten način rekel I 960 00:49:08,240 --> 00:49:10,550 shranite buffer v source.buffer. 961 00:49:10,550 --> 00:49:13,160 Dal sem, da dobiček, I ga priključite na dobiček, 962 00:49:13,160 --> 00:49:15,576 Ostanek je povezan z izhod, potem pa sem jo igral. 963 00:49:15,576 --> 00:49:20,735 Tako, da je vrsta postopka sprejemanja v viru pufra. 964 00:49:20,735 --> 00:49:24,820 >> OBČINSTVO: Ali ste dejansko lahko da suh zvok in da je mokro [neslišno]? 965 00:49:24,820 --> 00:49:26,260 >> HUGH Zabriskie: Lahko, ja. 966 00:49:26,260 --> 00:49:29,260 Tam je re-glagol, tam je zamuda, popačenje. 967 00:49:29,260 --> 00:49:33,260 Lahko v bistvu dal ničesar v med v tem sendviču of-- dobro, 968 00:49:33,260 --> 00:49:37,660 Plinovod je bolje metafora, vendar pa lahko dodate karkoli v tem. 969 00:49:37,660 --> 00:49:38,200 Cool. 970 00:49:38,200 --> 00:49:40,280 >> Torej bom končal demo tu, da vam občutek 971 00:49:40,280 --> 00:49:46,390 da samo odklon kolikokrat si lahko zaženete to funkcijo naenkrat. 972 00:49:46,390 --> 00:49:49,280 Torej bom to odstraniti. 973 00:49:49,280 --> 00:49:59,110 Bom ustvariti generator that-- v bistvu tisto does-- to je res 974 00:49:59,110 --> 00:50:04,220 vrsta zapletenih syntax-- vendar je gre za ustvarjanje zapiskov na letenje, 975 00:50:04,220 --> 00:50:06,601 in šele začeli igrati njih, saj jih ovrednoti. 976 00:50:06,601 --> 00:50:07,392 [Interposing PIANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Tako smo lahko le, da malo glasbe tukaj. 979 00:50:12,817 --> 00:50:13,608 [Interposing PIANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Torej, kaj je ta ukaz ne, na primer, je 982 00:50:41,470 --> 00:50:46,910 je potrebno te tri zapiske za klavir, nato pa jih postavlja na B3. 983 00:50:46,910 --> 00:50:48,660 Ta sintaksa bi lahko dal malo več smisla 984 00:50:48,660 --> 00:50:50,590 za tiste, ki imajo glasba v ozadju tukaj. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Lahko dodam kick boben. 987 00:50:56,551 --> 00:50:57,050 Lahko-- 988 00:50:57,050 --> 00:50:58,048 >> [Interposing INSTRUMENTS] 989 00:50:58,048 --> 00:50:59,256 >> --just igral s tem. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Torej lahko make-- 992 00:51:13,474 --> 00:51:14,515 [Interposing INSTRUMENTS] 993 00:51:14,515 --> 00:51:15,513 Da ena je malo bolj siten. 994 00:51:15,513 --> 00:51:16,554 [Interposing INSTRUMENTS] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Tako da naključno dodaja suho činele na vsaki 16. note, s 16% 997 00:51:30,981 --> 00:51:31,481 [Neslišno]. 998 00:51:31,481 --> 00:51:32,522 >> [Interposing INSTRUMENTS] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Ja, tako je način to works-- je vedno na 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Interposing INSTRUMENTS] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Ja, tako v štirih četrtletjih, in 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Interposing INSTRUMENTS] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Torej v povprečju, boste dobili 60% ogledov 16. pojasnilih. 1008 00:52:33,780 --> 00:52:35,990 >> Kakorkoli že, to je bila le nekako pokazati off 1009 00:52:35,990 --> 00:52:39,780 nekatere stvari, ki jih lahko graditi z Web Audio API. 1010 00:52:39,780 --> 00:52:43,840 To je res močna, to je res hiter, in lahko naredite veliko kul stvari 1011 00:52:43,840 --> 00:52:44,340 z njo. 1012 00:52:44,340 --> 00:52:51,260 Torej še enkrat, vsa vprašanja, ki jih imajo, email myself-- Hugh-- ali Sam, 1013 00:52:51,260 --> 00:52:55,869 in pošteno, Google ima tono dobrih virov. 1014 00:52:55,869 --> 00:52:56,660 Vsa zadnja vprašanja? 1015 00:52:56,660 --> 00:52:57,970 Ja. 1016 00:52:57,970 --> 00:53:00,790 >> OBČINSTVO: Torej lahko dostopate vgrajeni mikrofon. 1017 00:53:00,790 --> 00:53:03,089 Kaj pa, če si želel uporabiti boljši mikrofon? 1018 00:53:03,089 --> 00:53:05,380 HUGH Zabriskie: Če boste želeli uporabiti boljši mikrofon? 1019 00:53:05,380 --> 00:53:11,320 Torej tudi to je del abstrakcija med Chrome 1020 00:53:11,320 --> 00:53:12,950 in ostali računalniku. 1021 00:53:12,950 --> 00:53:18,950 Razen, če je na voljo prek API, kot so Web MIDI API, 1022 00:53:18,950 --> 00:53:22,030 ti bi verjetno našli nekaj hacks, ampak na splošno ne kot izvedljivo. 1023 00:53:22,030 --> 00:53:25,300 >> SAM GREEN: Lahko also-- vse Chrome ve 1024 00:53:25,300 --> 00:53:28,820 je, kaj je tvoj privzeti mikrofon je, in to dostopov,. 1025 00:53:28,820 --> 00:53:33,410 Torej, če si imel mikrofon si lahko nastavljen kot računalnika privzeti mikrofon, 1026 00:53:33,410 --> 00:53:35,990 da bi lahko do nje dostopate na ta način in bi verjetno delovalo. 1027 00:53:35,990 --> 00:53:37,490 HUGH Zabriskie: To je dobra točka. 1028 00:53:37,490 --> 00:53:39,656 Še nikoli nisem poskusil, ampak boste morda lahko na vrsto 1029 00:53:39,656 --> 00:53:45,700 of-- če preusmerite vhodni zvočnik, boste morda lahko storili, da ja. 1030 00:53:45,700 --> 00:53:48,360 >> Vsa zadnja vprašanja? 1031 00:53:48,360 --> 00:53:49,340 Cool. 1032 00:53:49,340 --> 00:53:51,680 No hvala fantje toliko za gledanje. 1033 00:53:51,680 --> 00:53:52,199 Jaz sem Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM GREEN: Sem Sam. 1035 00:53:52,990 --> 00:53:55,410 HUGH Zabriskie: In to je CS50. 1036 00:53:55,410 --> 00:53:56,767