1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM ZELENÁ: Ahoj, všetci. 3 00:00:07,170 --> 00:00:08,640 Vitajte na našom seminári. 4 00:00:08,640 --> 00:00:10,009 Volám sa Sam. 5 00:00:10,009 --> 00:00:11,050 Hugh Zabriskie: Som Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM ZELENÁ: A budeme dnes hovoriť o JavaScript a Web Audio API. 7 00:00:17,420 --> 00:00:21,180 Stačí vyraziť, to je náčrt nášho programu rokovania semináre. 8 00:00:21,180 --> 00:00:25,350 Chystáme sa začať tým, že hovorí o prečo by ste mali mať záujem na webe 9 00:00:25,350 --> 00:00:30,130 Audio API, prečo je to JavaScript jazyk, čo potrebujete pre to, 10 00:00:30,130 --> 00:00:32,619 a potom hovoriť o JavaScripte essentials-- tak podobne, 11 00:00:32,619 --> 00:00:34,800 vás prevedie niektoré základy jazyka, 12 00:00:34,800 --> 00:00:37,290 a potom hovoriť o audio API na vysokej úrovni. 13 00:00:37,290 --> 00:00:41,140 Potom, Hugh bude hovoriť o niektorých z fáz výrobe zvuku 14 00:00:41,140 --> 00:00:45,509 a potom demo túto hroznú triedič Projekt postavil a ukázať vám kód. 15 00:00:45,509 --> 00:00:48,050 A potom, budeme mať čas na otázky na konci pre ľudí 16 00:00:48,050 --> 00:00:49,593 ktorí tu žijú. 17 00:00:49,593 --> 00:00:50,540 >> Hugh Zabriskie: cool. 18 00:00:50,540 --> 00:00:50,990 >> SAM ZELENÁ: cool. 19 00:00:50,990 --> 00:00:51,383 >> Hugh Zabriskie: cool. 20 00:00:51,383 --> 00:00:52,170 Budem zálohovať. 21 00:00:52,170 --> 00:00:54,960 >> SAM ZELENÁ: Takže poporiadku. 22 00:00:54,960 --> 00:00:57,840 Takže jeden z veľkých vecí, o webové Audio API 23 00:00:57,840 --> 00:01:00,480 je to, že tam je vyžadovaný žiadny set up. 24 00:01:00,480 --> 00:01:04,230 Je dodávaný vstavaný do Väčšina moderných prehliadačov, 25 00:01:04,230 --> 00:01:08,630 vrátane Chrome, EDGE, celok banda others-- všetkých tých, 26 00:01:08,630 --> 00:01:12,650 že veľké časti ľudia používajú dnes. 27 00:01:12,650 --> 00:01:14,807 Takže nie je nastavený, Okrem len dostať 28 00:01:14,807 --> 00:01:16,890 webový server v chode, pre vás, aby ste mohli začať pracovať 29 00:01:16,890 --> 00:01:18,420 na vašom projekte, čo je skvelé. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Odporúčame pekný silno, že sa domnievate, 32 00:01:24,190 --> 00:01:26,530 Chrome pre použitie Vývoj JavaScript web, 33 00:01:26,530 --> 00:01:30,260 len preto, že jeho vývojárov Nástroje sú naozaj silné. 34 00:01:30,260 --> 00:01:33,220 Ako príklad len to, čo máme na mysli tým, že hovorí otvoriť svoj JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- ak idete do prehliadača Chrome a sa pozriete na akejkoľvek webovej stránky, 36 00:01:38,600 --> 00:01:43,897 a vy kliknite ľavým tlačidlom Skontrolujte prvok, a potom 37 00:01:43,897 --> 00:01:46,730 idete na tejto malej rozbaľovacieho tu a kliknete na konzole, 38 00:01:46,730 --> 00:01:50,660 uvidíte, čo otvára vyzerá veľa ako príkazového riadku, ktorý vám 39 00:01:50,660 --> 00:01:53,720 mohli vidieť na vašom počítači Mac, alebo na ID. 40 00:01:53,720 --> 00:01:59,260 A rovnako ako to, že môžeme Typ príkazy tu, rovnako ako Clear, 41 00:01:59,260 --> 00:02:01,350 a ďalšie príkazy podobne. 42 00:02:01,350 --> 00:02:04,267 Môžeme vytvoriť premenné, as uvidíme neskôr v JavaScripte. 43 00:02:04,267 --> 00:02:07,100 A tak niečo, čo môžeme robiť v JavaScript, môžeme robiť s konzolou, 44 00:02:07,100 --> 00:02:11,430 a to je super šikovný spôsob, ako začať hrať sa s API 45 00:02:11,430 --> 00:02:15,760 a sa pohodlne JavaScript hned bat. 46 00:02:15,760 --> 00:02:18,290 Nevyžaduje set up, čo je naozaj pekné. 47 00:02:18,290 --> 00:02:18,790 Super. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Úžasné. 50 00:02:22,880 --> 00:02:24,780 >> Takže len jedna vec pridať. 51 00:02:24,780 --> 00:02:27,780 Ak máte niektorý questions-- existujú mnohí z vás, ktorí nie sú tu žiť, 52 00:02:27,780 --> 00:02:31,232 neváhajte a napíšte us-- tieto sú naše e-mailové adresy. 53 00:02:31,232 --> 00:02:33,190 Ak máte otázky Nechcete sa nás opýtať, 54 00:02:33,190 --> 00:02:36,160 ako, oh som chybu v mojom kódu, alebo niečo 55 00:02:36,160 --> 00:02:39,270 to je trochu konkrétnejší, Možno, že ako prvý na Googlu ju. 56 00:02:39,270 --> 00:02:42,340 Existuje veľa skvelých zdrojov o webové audio API vonku. 57 00:02:42,340 --> 00:02:44,089 Je to naozaj dobre dokumentované a je to byť 58 00:02:44,089 --> 00:02:47,194 používaný tonu ľudí v priemysel, a ľudia, ktorí sú práve 59 00:02:47,194 --> 00:02:48,610 stavebné zábavné veci pre seba. 60 00:02:48,610 --> 00:02:51,306 Takže tam by mala byť veľa zdrojov tam vonku. 61 00:02:51,306 --> 00:02:53,040 Úžasné. 62 00:02:53,040 --> 00:02:56,100 >> Cool, tak prečo Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Toto schéma je trochu z vývoja na ceste 64 00:02:59,840 --> 00:03:04,100 zvuk na webe vzrástla v priebehu času. 65 00:03:04,100 --> 00:03:13,080 Bgsound bol ako pôvodná HTML tagu že Internet Explorer použitá na podporu. 66 00:03:13,080 --> 00:03:16,790 Je povolené len na docela základné zvuky, funkčnosť nebol veľmi robustný, 67 00:03:16,790 --> 00:03:19,380 a vy ste nemohli robiť komplikovaný sekvenovania, 68 00:03:19,380 --> 00:03:21,890 alebo určiť, kedy zvuk začal a zastavil veľmi robustne. 69 00:03:21,890 --> 00:03:23,930 Takže to nebol nijako zvlášť dobre vyvinuté. 70 00:03:23,930 --> 00:03:27,470 Potom po tom, Flash prišiel along--, ktoré, 71 00:03:27,470 --> 00:03:31,712 Som si istý, že vy ste všetci oboznámení s Flash-- možno nie, ako to funguje, 72 00:03:31,712 --> 00:03:32,920 ale vy ste určite videli. 73 00:03:32,920 --> 00:03:35,586 Musíš aktualizovať svoj Flash Plug-in, všetky také veci, 74 00:03:35,586 --> 00:03:40,110 a to iste rozšírila funkčnosti, ktorá bola k dispozícii. 75 00:03:40,110 --> 00:03:45,370 Ale aby používateľ nainštalovať plug-in je určite 76 00:03:45,370 --> 00:03:48,480 Nevýhodou, vrátane Flash v aplikácii, je to tak? 77 00:03:48,480 --> 00:03:52,410 Vzhľadom k tomu, potom ste závislí na Užívateľ ísť a nájsť tento plug-in, 78 00:03:52,410 --> 00:03:54,660 a pravdepodobne sa otočil off týmto krokom navyše 79 00:03:54,660 --> 00:03:56,640 majú brať použiť vašu aplikáciu. 80 00:03:56,640 --> 00:04:01,270 A potom tam mohol byť aktualizácia že zlomí celú vašu žiadosť, 81 00:04:01,270 --> 00:04:03,880 a nakoniec je to nočná mora pre vývojárov, taky. 82 00:04:03,880 --> 00:04:06,230 Takže to bola barikáda. 83 00:04:06,230 --> 00:04:10,480 >> A potom po ktorej prišiel, audio tag HTML, ktorý 84 00:04:10,480 --> 00:04:16,579 je funkcia, ktorá modernejším HTML-- iste počítal s oveľa viac vecí, 85 00:04:16,579 --> 00:04:20,050 ale aj veci, ktoré by ste mohli urobiť tam bola trochu obmedzená len 86 00:04:20,050 --> 00:04:22,730 v dôsledku vecí že HTML bol schopný. 87 00:04:22,730 --> 00:04:26,060 Takže keď JavaScript API, Web Audio API, 88 00:04:26,060 --> 00:04:29,290 stal štandardom praxe v rôznych prehliadačoch, 89 00:04:29,290 --> 00:04:32,490 že skutočne rozšírila sadu príležitostí pre vývojárov 90 00:04:32,490 --> 00:04:36,590 naozaj dostať do budovy cool veci pre web. 91 00:04:36,590 --> 00:04:39,220 Po dlhú dobu sa mal bolo naozaj robustné nástroje 92 00:04:39,220 --> 00:04:44,360 pre rodených audio aplikácie, jako-- každý vie GarageBand, 93 00:04:44,360 --> 00:04:48,360 a potom samozrejme existuje viac profesionálne audio miešanie aplikácií, 94 00:04:48,360 --> 00:04:49,640 a také veci. 95 00:04:49,640 --> 00:04:52,690 Ale tam nebol naozaj dobré Cloud-- nie 96 00:04:52,690 --> 00:04:55,811 Cloud, jo, myslím, že Cloud-- internetová platforma 97 00:04:55,811 --> 00:04:58,310 ktorý by umožnil vývojárom vytvárať aplikácie pre ľudí 98 00:04:58,310 --> 00:05:00,570 robiť audio miešania. 99 00:05:00,570 --> 00:05:03,960 A keď vám ukáže, neskôr, Web Audio API 100 00:05:03,960 --> 00:05:07,470 umožňuje naozaj silný veci sa stane naozaj jednoducho, 101 00:05:07,470 --> 00:05:09,597 čo je celkom v pohode. 102 00:05:09,597 --> 00:05:12,680 Tak to je pokyn, prečo ste by mal sledovať zvyšok semináre, 103 00:05:12,680 --> 00:05:14,350 v podstate. 104 00:05:14,350 --> 00:05:17,880 >> A teraz, budem hovoriť o Niektoré JavaScript-- len základné prvky 105 00:05:17,880 --> 00:05:20,240 jazyka, takže môžeme byť na rovnakej stránke 106 00:05:20,240 --> 00:05:22,470 keď hovoríme o API o niečo neskôr. 107 00:05:22,470 --> 00:05:23,260 Super. 108 00:05:23,260 --> 00:05:26,192 >> Takže, to je zhrnutie. 109 00:05:26,192 --> 00:05:27,150 Zabudol som, že to tu. 110 00:05:27,150 --> 00:05:27,510 Jo. 111 00:05:27,510 --> 00:05:27,870 >> Hugh Zabriskie: Je tu dve šmýkačky tu. 112 00:05:27,870 --> 00:05:30,245 >> SAM ZELENÁ: Jedná sa o súhrn niektorých obmedzení 113 00:05:30,245 --> 00:05:35,220 z ďalších záväzných, staré metódy. 114 00:05:35,220 --> 00:05:37,828 A potom teraz, máme tieto veci. 115 00:05:37,828 --> 00:05:40,011 Super. 116 00:05:40,011 --> 00:05:40,510 Úžasné. 117 00:05:40,510 --> 00:05:43,200 >> Takže, náležitosti JavaScript. 118 00:05:43,200 --> 00:05:47,230 Prvé vecí, prvé, je tu docela významný rozdiel 119 00:05:47,230 --> 00:05:49,940 v JavaScript proti v jazyk C, v spôsobe, akým 120 00:05:49,940 --> 00:05:52,050 že premenné sú vytvorené. 121 00:05:52,050 --> 00:05:55,634 Tak v C, sme zvyknutí mať zadajte svoje premenné, že jo? 122 00:05:55,634 --> 00:05:57,800 A nemám na mysli typ, ako je zadajte ich, mám na mysli typ 123 00:05:57,800 --> 00:06:01,900 ako priradiť im význam type-- ako, int, float, char. 124 00:06:01,900 --> 00:06:05,210 V jazyku C, sme boli naozaj použité na nutnosti vytvoriť premennú 125 00:06:05,210 --> 00:06:09,690 a potom držať sa, že typu pre Celý čas, ktorý budeme používať tejto premennej. 126 00:06:09,690 --> 00:06:13,990 A to nemusí byť nutne horšie, ale je to asi ťažšie na použitie. 127 00:06:13,990 --> 00:06:16,190 Jedným zo skvelých vlastností of JavaScript je 128 00:06:16,190 --> 00:06:19,740 že premenné sú, čo sa nazýva "dynamicky napísaný," ktorý 129 00:06:19,740 --> 00:06:22,500 Znamená to, že môžem vytvoriť premenná s touto syntaxou, 130 00:06:22,500 --> 00:06:25,800 varX sa rovná 5, napr. 131 00:06:25,800 --> 00:06:27,790 To pôvodne vytvára celé číslo proměnná-- 132 00:06:27,790 --> 00:06:29,870 priamo pod kapucňa somewhere-- ale ja 133 00:06:29,870 --> 00:06:33,040 môže zmeniť, že premenné odkazovať na reťazec 134 00:06:33,040 --> 00:06:35,820 bez robili niečo ako vytvorenie novej premennej. 135 00:06:35,820 --> 00:06:37,880 Nepotrebujem sa obávať o type striedanie. 136 00:06:37,880 --> 00:06:45,440 JavaScript vie, že typ je zmenili, a to stane dynamicky. 137 00:06:45,440 --> 00:06:48,510 >> Takže, existujú výhody a nevýhody, ktoré, 138 00:06:48,510 --> 00:06:51,250 ako každý, kto pracoval v JavaScript na chvíľu mohli poznať. 139 00:06:51,250 --> 00:06:53,600 Sú chvíle, kedy by ste mohli omylom 140 00:06:53,600 --> 00:06:57,720 zmeniť typ premennej a nespracováva tento typ výmenu, 141 00:06:57,720 --> 00:07:01,120 a potom sa vaše JavaScript môže crash-- alebo výnimku 142 00:07:01,120 --> 00:07:06,070 byť hodená, pretože budete mať zlý typ, ak očakávate, jeden druh. 143 00:07:06,070 --> 00:07:07,040 Super. 144 00:07:07,040 --> 00:07:11,470 >> Takže, scoping-- ktorý je ako, keby sme pamätať prvých týždňoch v kurze, 145 00:07:11,470 --> 00:07:15,420 odkazuje sa na ako viditeľné premenné je av akom časti kódu. 146 00:07:15,420 --> 00:07:18,400 To všetko vyzerá veľmi podobne sa, ako to vyzerá v C. 147 00:07:18,400 --> 00:07:24,755 Takže premenné sú všeobecne scoped vnútri zložených zátvoriek vnútri funkcie, 148 00:07:24,755 --> 00:07:27,005 a potom tam sú tiež globálne rozsahom premenných, ktoré 149 00:07:27,005 --> 00:07:29,171 are-- ak napíšete premennú mimo funkciu, 150 00:07:29,171 --> 00:07:31,790 to bude viditeľné v celom texte. 151 00:07:31,790 --> 00:07:35,840 >> Jeden rozdiel medzi JavaScript a C a najmä 152 00:07:35,840 --> 00:07:40,280 je, že ak ste deklarovať globálnej premenná kdekoľvek v textovom súbore 153 00:07:40,280 --> 00:07:43,324 je to vidieť v akejkoľvek funkcie v tomto textovom súbore. 154 00:07:43,324 --> 00:07:44,240 To je správne, že jo? 155 00:07:44,240 --> 00:07:46,330 >> Hugh Zabriskie: Jo. 156 00:07:46,330 --> 00:07:49,120 >> SAM ZELENÁ: Takže je to tiež trochu bit funky v porovnaní s C, 157 00:07:49,120 --> 00:07:52,660 kde sme vždy mali mať náš Variabilná definície nad miestach 158 00:07:52,660 --> 00:07:53,770 oni boli používané. 159 00:07:53,770 --> 00:07:57,957 To nie je pravidlom, že je vynútené už, tak trochu iná. 160 00:07:57,957 --> 00:08:00,540 A opäť len preto, aby je potrebné zdôrazniť, Globálne vs. miestnej variables-- 161 00:08:00,540 --> 00:08:03,457 veľmi podobný C. Tie by mohli mať dve premenné s rovnakým názvom, 162 00:08:03,457 --> 00:08:06,540 a majú jednu z ich mená tmavšie miestnej premenné, ak jeden z nich 163 00:08:06,540 --> 00:08:07,546 bol globálne. 164 00:08:07,546 --> 00:08:09,420 Tak, podobný druh Problémy, ktoré niektorí z vás 165 00:08:09,420 --> 00:08:11,920 môžu naraziť na niektoré Vášho problému nastaví tak ďaleko. 166 00:08:11,920 --> 00:08:14,450 Cool, tak to je premenné. 167 00:08:14,450 --> 00:08:20,310 >> Flow Control, čo znamená, rovnako ako, ak-else-- logické stuff-- a slučky. 168 00:08:20,310 --> 00:08:24,510 Takže začať s, to je to, čo if-else Vyhlásenie vyzerať v JavaScripte. 169 00:08:24,510 --> 00:08:29,750 Umiestnenie rôznych vecí, na tratiach nie je dôležité. 170 00:08:29,750 --> 00:08:34,409 To je len jeden z dohovorov za to, ako sme sa štruktúry kódu. 171 00:08:34,409 --> 00:08:38,634 Rovnako ako v C, máme "ak" vyhlásenie zátvorka. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 To nie je to, čo by som chcel robiť. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Urobil som to znova. 176 00:08:45,550 --> 00:08:46,841 >> Hugh Zabriskie: Snažím sa ukončiť? 177 00:08:46,841 --> 00:08:49,770 SAM ZELENÁ: Nie, ja som Len sa snažím priblížiť. 178 00:08:49,770 --> 00:08:50,660 Nezáleží na tom. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Takže, máme "keby" a vyhlásenie máme podmienku vnútri je 181 00:08:59,370 --> 00:09:03,130 že sa vyhodnotí ako true alebo false, a to určuje, či 182 00:09:03,130 --> 00:09:04,510 sme sa vstúpiť, že blok kódu. 183 00:09:04,510 --> 00:09:09,860 A podobne, ak máme inak-a else, rovnako ako sme zvyknutí v C. 184 00:09:09,860 --> 00:09:14,010 >> Tiež by ste mali byť veľmi pohodlná hneď bat sa slučkami, 185 00:09:14,010 --> 00:09:16,440 pretože sa tiež pozrieť veľa ako C vyzerá. 186 00:09:16,440 --> 00:09:19,600 Ale všimnite si, že sme znovu majú miesto int initializations, 187 00:09:19,600 --> 00:09:22,570 máme var inicializácia. 188 00:09:22,570 --> 00:09:24,650 A myslím, že máš dávať pozor, aby sa 189 00:09:24,650 --> 00:09:28,460 istí, že nechcete zmeniť hodnotu Aj z int na reťazec, 190 00:09:28,460 --> 00:09:31,780 napríklad preto, že to bude spôsobiť podivné správanie, ktoré možno nie 191 00:09:31,780 --> 00:09:32,280 očakávajú. 192 00:09:32,280 --> 00:09:35,750 Ale to by malo vyzerať celkom známe, rovnako. 193 00:09:35,750 --> 00:09:39,460 >> Takže toto je miesto, kde sa veci začnú z toho trochu blázon v JavaScripte 194 00:09:39,460 --> 00:09:44,920 pre niekoho, kto sa chystá od A Doterajší stav C. Pri niektorých funkcií 195 00:09:44,920 --> 00:09:48,070 v JavaScriptu, a tam je jeden spôsob, deklarovať funkciu, ktorá vyzerá 196 00:09:48,070 --> 00:09:50,361 druh podobná C, a potom je tu ešte jeden, ktorý 197 00:09:50,361 --> 00:09:52,450 vyzerá trochu inak. 198 00:09:52,450 --> 00:09:54,930 >> Prvá verzia, ktoré môžeme vidieť tu, 199 00:09:54,930 --> 00:09:59,260 je druh C-like, kde hovoríme, je to funkcia, 200 00:09:59,260 --> 00:10:01,490 dať mu meno, daj počet argumentov, 201 00:10:01,490 --> 00:10:05,150 A potom sa obsah funkcie dovnútra týchto zložených zátvoriek. 202 00:10:05,150 --> 00:10:08,850 Uvidíme príklad argumenty len sekundu. 203 00:10:08,850 --> 00:10:13,420 >> Vzhľadom k tomu, na ďalšom riadku, vidíme, oh, tu je premenná s názvom "myFunction," 204 00:10:13,420 --> 00:10:17,546 a my to rovná tejto všeobecný thing-- function-- že 205 00:10:17,546 --> 00:10:19,170 Nezdá sa, že mať niečo deje. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Dôvod, prečo to je niečo iné ako C je, že JavaScript 208 00:10:26,080 --> 00:10:30,040 je to, čo sa nazýva funkčné jazyk, alebo má funkčné prvky, čo znamená, že 209 00:10:30,040 --> 00:10:33,510 že funkcie sú v skutočnosti hodnoty. 210 00:10:33,510 --> 00:10:39,520 A to znamená, že môžeme nastaviť premenná, aby sa rovnala funkcie 211 00:10:39,520 --> 00:10:43,210 a presuňte túto funkciu okolo, odovzdať ako argument, 212 00:10:43,210 --> 00:10:46,550 robiť všetky druhy vecí takhle s funkciami. 213 00:10:46,550 --> 00:10:49,682 >> Ešte jedna vec k note-- funkcie sú zapísané 214 00:10:49,682 --> 00:10:51,140 s určitým počtom argumentov. 215 00:10:51,140 --> 00:10:54,056 Uvidíme príklad funkcie s argumentom na ďalšiu snímku. 216 00:10:54,056 --> 00:10:56,720 Ale JavaScript nebude kričať na vás, ak sa pokúsite 217 00:10:56,720 --> 00:10:59,330 použiť funkciu s nesprávny počet argumentov. 218 00:10:59,330 --> 00:11:05,310 Bude to len čo je v jej silách, aby sa áno, čo znamená, že ak ste prejsť, 219 00:11:05,310 --> 00:11:09,410 volanie funkcie, ktorá očakáva Argument s žiadny argument, že všetky 220 00:11:09,410 --> 00:11:13,990 sa stane, je, že to čo najlepšie aby sa pokúsila spustiť tento kód, 221 00:11:13,990 --> 00:11:16,541 a ak je to nakoniec vedie do výnimky alebo chyby, 222 00:11:16,541 --> 00:11:19,790 to bude hodiť túto výnimku a len držať going-- čo je len jedným zo spôsobov, 223 00:11:19,790 --> 00:11:21,070 že JavaScript funguje. 224 00:11:21,070 --> 00:11:21,781 Jo. 225 00:11:21,781 --> 00:11:24,207 >> Divákov: Čo sa stane v prípade, je tu príliš veľa argumentov? 226 00:11:24,207 --> 00:11:26,040 SAM ZELENÁ: Takže Otázkou bolo, čo sa stane, 227 00:11:26,040 --> 00:11:27,380 ak existuje príliš veľa argumentov? 228 00:11:27,380 --> 00:11:29,171 A odpoveď je, že JavaScript bude len 229 00:11:29,171 --> 00:11:32,120 ignorovať tie, ktoré sú po tie to očakáva. 230 00:11:32,120 --> 00:11:36,420 Bude pokuse o spustenie funkcie hovoria, ako keby to bol len prvé dva. 231 00:11:36,420 --> 00:11:37,075 Doprava? 232 00:11:37,075 --> 00:11:37,700 >> Hugh Zabriskie: To je pravda, jo. 233 00:11:37,700 --> 00:11:39,449 Podobne, v prípade, že sú príliš málo argumentov, 234 00:11:39,449 --> 00:11:42,640 to proste druh dáva null všetkým Argumenty, že nemá žiadne hodnoty 235 00:11:42,640 --> 00:11:43,660 pre. 236 00:11:43,660 --> 00:11:45,810 >> SAM ZELENÁ: ktorý môže v skutočnosti byť užitočné, ak ste 237 00:11:45,810 --> 00:11:49,060 Chcete napísať funkciu, ktorá trvá premenný počet argumentov. 238 00:11:49,060 --> 00:11:55,830 Môžete nastaviť predvolené hodnoty definícia funkcie, 239 00:11:55,830 --> 00:11:59,060 a to môže ignorovať skutočnosť že vstupné tam nie je. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Tak som chcel hovoriť trochu Viac informácií o tejto poslednej guľkou 242 00:12:04,000 --> 00:12:05,541 bod, čo je funkcia sú hodnoty. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Toto je príklad, ktorý je trochu ohromujúce 245 00:12:11,010 --> 00:12:14,880 ak ste čítali, a nemyslím, že o tom, čo sa deje na sekundu. 246 00:12:14,880 --> 00:12:17,910 Takže, poďme sa pozrieť práve v prvý riadok sem. 247 00:12:17,910 --> 00:12:24,360 Máme tejto premennej, f1, že hovoríme je funkcia, ktorá robí túto vec. 248 00:12:24,360 --> 00:12:28,535 A obsah funkcie sú console.log ("ahoj"). 249 00:12:28,535 --> 00:12:32,220 Môžete si myslieť console.log ako pri JavaScript ekvivalent printf. 250 00:12:32,220 --> 00:12:35,510 Takže to, čo sa stane, je, ak budeme Tento kód spustiť v našej prehliadači, 251 00:12:35,510 --> 00:12:37,530 to bude vytlačiť reťazec. 252 00:12:37,530 --> 00:12:39,342 Môžem preukázať, že. 253 00:12:39,342 --> 00:12:42,300 Publikum: Do protokolu, aj keď, to robí znamenať, že to nahráva niekam? 254 00:12:42,300 --> 00:12:42,550 SAM ZELENÁ: Jo. 255 00:12:42,550 --> 00:12:44,216 Takže ja ti ukážem, čo sa bude diať. 256 00:12:44,216 --> 00:12:48,085 Takže otázka bola, čo log znamená? 257 00:12:48,085 --> 00:12:51,262 >> Hugh Zabriskie: Takže console.log je ako printf pre C. 258 00:12:51,262 --> 00:12:52,970 SAM ZELENÁ: Takže console.log je ako printf, 259 00:12:52,970 --> 00:12:59,240 takže keď mám túto console.log ("ahoj"), a ja hovorím, že reťazec "ahoj" 260 00:12:59,240 --> 00:13:00,730 sa vytlačí sa do konzoly. 261 00:13:00,730 --> 00:13:03,340 To je konzola. 262 00:13:03,340 --> 00:13:05,930 Je to rovnaké ako printf, kde vytlačí na štandardný výstup. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 A uvidíme za minútu, ale toto je v skutočnosti 265 00:13:11,230 --> 00:13:16,529 s odkazom na objekt konzoly, a volanie metódy na tento objekt. 266 00:13:16,529 --> 00:13:18,320 To bude väčší zmysel za minútu, keď sme 267 00:13:18,320 --> 00:13:20,660 dostať sa hovorí o objekty v JavaScripte, 268 00:13:20,660 --> 00:13:22,509 ale myslel som, že by som len spomenúť, že. 269 00:13:22,509 --> 00:13:24,300 Hugh Zabriskie: Sme používa v C, right-- 270 00:13:24,300 --> 00:13:27,580 zvyčajne napísať veľký program, v hlavnej nič robiť. 271 00:13:27,580 --> 00:13:30,700 Ale to, čo je v pohode v JavaScripte je budete tento druh tlmočníka, ktorý 272 00:13:30,700 --> 00:13:33,620 prebieha v reálnom čase, takže je trvá len riadok po riadku, 273 00:13:33,620 --> 00:13:35,320 to môže len interpretovať, že na mieste. 274 00:13:35,320 --> 00:13:37,403 A to udržuje veci, ktoré prebehne pred, 275 00:13:37,403 --> 00:13:41,620 takže je to celkom užitočný nástroj pre použite console.log, alebo konzoly, 276 00:13:41,620 --> 00:13:46,870 Všeobecne platí, že len za hranie okolo JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM ZELENÁ: Takže návrat k tomu example-- druhý riadok kódu 278 00:13:51,420 --> 00:13:55,320 Tu je celkom šokujúce v mojej hlave. 279 00:13:55,320 --> 00:13:59,790 Keď som prvýkrát čítal to, Bolo to ako, čo sa deje? 280 00:13:59,790 --> 00:14:04,580 Takže to, čo sa deje, je to deklarácie funkcie hovorí, 281 00:14:04,580 --> 00:14:10,170 Mám funkcia nazvaná f2 že ich čaká jeden argument, f, 282 00:14:10,170 --> 00:14:12,990 a potom to volá, že funkcie, f, ktorý 283 00:14:12,990 --> 00:14:17,652 bol odovzdaný k nemu ako argument bez argumentov sám. 284 00:14:17,652 --> 00:14:19,110 Tak, to by mohlo byť mätúce. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Ak chápeme to ako f2 berie f1 ako argumentu, a potom vo vnútri f2, 287 00:14:28,400 --> 00:14:31,190 f dostane called--, čo znamená, že tento riadok kódu, 288 00:14:31,190 --> 00:14:34,192 po týchto dvoch riadkov kód, výsledky v "ahoj" 289 00:14:34,192 --> 00:14:35,400 tlačený na konzolu. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Skutočnosť, že sme sa prejsť Funkcie okolo ako hodnoty 292 00:14:44,910 --> 00:14:47,870 nakoniec je jedným z najviac výkonné funkcie v JavaScriptu 293 00:14:47,870 --> 00:14:49,700 ako programovací jazyk. 294 00:14:49,700 --> 00:14:52,782 Mimo všetky úžasné veci, to môže urobiť, 295 00:14:52,782 --> 00:14:54,990 rovnako ako funkcie z jazyk z hľadiska spôsobu, akým 296 00:14:54,990 --> 00:14:58,400 že robí veci jednoduché programovať a umožňuje 297 00:14:58,400 --> 00:15:01,060 pre veci, ktoré nie sú osobitne hodí na web, 298 00:15:01,060 --> 00:15:04,500 funkcionálne programovanie a funkčné programovanie aspekty JavaScriptu 299 00:15:04,500 --> 00:15:07,130 je jedným z najviac silné pojmy, ktoré 300 00:15:07,130 --> 00:15:11,030 existuje v JavaScript-- ak sa ma pýtate. 301 00:15:11,030 --> 00:15:11,960 Super. 302 00:15:11,960 --> 00:15:13,534 >> Takže, ďalšia vec. 303 00:15:13,534 --> 00:15:16,450 Okrem toho, že je funkčný, tam sú tiež prvky JavaScriptu 304 00:15:16,450 --> 00:15:20,510 ktoré sú objektovo orientovaný, čo je jedným z veľmi 305 00:15:20,510 --> 00:15:23,800 populárne slovíčkami v informatike. 306 00:15:23,800 --> 00:15:27,040 Objektovo-orientovaného programovania je veľmi populárna vec. 307 00:15:27,040 --> 00:15:34,210 JavaScript má verziu, ktorá, kde verím, že každá hodnota je tiež 308 00:15:34,210 --> 00:15:41,475 objekt, čo znamená, že každý objekt zábaly dohromady určitý počet hodnôt. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Takže pre hodnoty, ktoré sú jednoduché, ako je celé číslo, ako je varX sa rovná 5, 311 00:15:49,750 --> 00:15:52,250 že objekt ešte zabalí túto jednu hodnotu. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Ale môžeme si tiež predstaviť situáciu, where-- môžeme myslieť situácia v C 314 00:15:59,036 --> 00:16:00,910 kde sme chceli robiť niečo s structs, 315 00:16:00,910 --> 00:16:03,285 napríklad, že zábaly niekoľko Hodnoty dohromady a značky 316 00:16:03,285 --> 00:16:05,870 je to naozaj jednoduché prejsť veci okolo. 317 00:16:05,870 --> 00:16:09,270 To je, keď je objekt v JavaScripte. 318 00:16:09,270 --> 00:16:12,340 >> Je dôležité si uvedomiť, keď poviem, že predmety zabalené 319 00:16:12,340 --> 00:16:15,330 niektoré počet hodnôt spoločne, že funkcie sú tiež 320 00:16:15,330 --> 00:16:21,506 hodnoty, čo znamená, že funkcia je byť tiež vo vnútri objektu JavaScriptu. 321 00:16:21,506 --> 00:16:26,910 A dôvod, prečo to je dôležité, je to, že, vzhľadom k tomu, často 322 00:16:26,910 --> 00:16:30,290 myslieť na volanie metódy na objekte, ktorý je 323 00:16:30,290 --> 00:16:35,200 populárne termíne od ostatní populárnej objektovo orientované jazyky, 324 00:16:35,200 --> 00:16:39,330 jeden z rozdielov je to, že všetko, že metóda je v JavaScripte 325 00:16:39,330 --> 00:16:47,270 ak je hodnota uložená vo vnútri objektu že vykonáva niektoré action-- možná 326 00:16:47,270 --> 00:16:51,850 pomocou ďalšie hodnoty, ktoré sú vo vnútri z tohto objektu, ale nie nevyhnutne. 327 00:16:51,850 --> 00:16:56,930 Takže si viete predstaviť situáciu, ja Asi v trochu bláznivé cesty, 328 00:16:56,930 --> 00:17:02,990 kde ste volali metódu jedného objekt na iný objekt, napríklad. 329 00:17:02,990 --> 00:17:06,010 Takže, je to trochu funky týmto spôsobom. 330 00:17:06,010 --> 00:17:09,369 >> A môžete tiež zmeniť metódy ktoré sú spojené s objektom 331 00:17:09,369 --> 00:17:13,740 priradením tejto metódy A nová funkcia, ktorá je tiež 332 00:17:13,740 --> 00:17:18,250 celkom odlišný od iných objektovo orientované jazyky, kde 333 00:17:18,250 --> 00:17:21,410 akonáhle budeme deklarovať objekt a inštanciu ju, 334 00:17:21,410 --> 00:17:25,839 nemôžeme zmeniť metódy, ktoré sú spojené s týmto objektom ešte. 335 00:17:25,839 --> 00:17:28,680 Tak to je celkom iná. 336 00:17:28,680 --> 00:17:29,570 Super. 337 00:17:29,570 --> 00:17:34,010 >> Takže tu je príklad, ako prvý, objektu v akcii. 338 00:17:34,010 --> 00:17:36,390 To je to, čo sa nazýva všeobecný objekt, ktorý 339 00:17:36,390 --> 00:17:39,460 znamená, že nemá žiadne najmä názov, nemá triedu, 340 00:17:39,460 --> 00:17:42,190 je to len nejaký obal hodnôt. 341 00:17:42,190 --> 00:17:49,790 A ako to vyzerá, je, my máme táto vonkajšia dvojica zložených zátvoriek tu 342 00:17:49,790 --> 00:17:57,950 ktoré ukazujú na JavaScripte a hovoria, to je objekt. 343 00:17:57,950 --> 00:18:02,130 Hodnoty vnútri neho sú každý hodnoty vnútri 344 00:18:02,130 --> 00:18:04,590 objektu, ktorý by mal byť zabalené dohromady. 345 00:18:04,590 --> 00:18:09,180 A vnútornej časti tohto objektu, Potom sme sa dvojica kľúčov hodnota, 346 00:18:09,180 --> 00:18:13,880 kde kľúč odkazuje na názov hodnoty vo vnútri objektu, 347 00:18:13,880 --> 00:18:16,790 a druhý side-- naproti hrubého čreva here-- 348 00:18:16,790 --> 00:18:19,850 je skutočná hodnota že by mali byť skladované. 349 00:18:19,850 --> 00:18:26,210 >> Takže vidíte, že tu máme kľúč s názvom fn s hodnotou sam, 350 00:18:26,210 --> 00:18:29,430 nasledované čiarkou, hovorí na ďalšiu položku. 351 00:18:29,430 --> 00:18:33,560 Potom sa kľúč nazvaný ln, s hodnotou zelené, 352 00:18:33,560 --> 00:18:35,840 nasledované čiarkou, nasledoval "tlače," 353 00:18:35,840 --> 00:18:43,209 ktorá bude mať funkčnú hodnotu ktorá sa bude robiť tento riadok kódu. 354 00:18:43,209 --> 00:18:45,500 Poďme sa o krok späť a rozbaliť, čo sa tu deje. 355 00:18:45,500 --> 00:18:47,280 Tak to je trochu zložitejšie, a vidíme niečo nové, 356 00:18:47,280 --> 00:18:48,071 prvýkrát. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 "This" kľúčové slovo je nová vec vidíme tu, a čo to robí 359 00:18:55,065 --> 00:19:00,540 je, sa odkazuje na prúd objekt v rozsahu, že jo? 360 00:19:00,540 --> 00:19:03,990 Takže keď hovoríme, to upozorňuje na celú cestu späť 361 00:19:03,990 --> 00:19:08,140 do celého tohto object-- keď budeme robiť this.fn, 362 00:19:08,140 --> 00:19:11,990 budeme ísť celú cestu späť K tomuto objektu, choďte na hodnotu fn 363 00:19:11,990 --> 00:19:16,471 a dostať sa sam, vytiahnite ju celú cestu späť, držať to tu, a potom ísť ďalej. 364 00:19:16,471 --> 00:19:19,838 >> Divákov: Tak s vyhľadávaním, je že urobené, pretože parametra 365 00:19:19,838 --> 00:19:20,621 definícia? 366 00:19:20,621 --> 00:19:23,870 SAM ZELENÁ: Otázkou teda bolo, je vyhľadávanie vykonané kvôli parametra 367 00:19:23,870 --> 00:19:24,727 definícia? 368 00:19:24,727 --> 00:19:25,435 Jo, určite. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Čo sa bude diať tu je, Tento bod hovorí JavaScriptu, 371 00:19:32,470 --> 00:19:39,990 OK, ja som stále nejakú hodnotu z tohto objektu od seba. 372 00:19:39,990 --> 00:19:46,375 A potom sa to bude vyzerať na zázname volal fn, a ak sa nájde, 373 00:19:46,375 --> 00:19:48,470 to vrátim, že value-- tak, že je to sam. 374 00:19:48,470 --> 00:19:51,540 Ale ja som mohol tiež zadali niečo, čo sa tu nie je definovaný, 375 00:19:51,540 --> 00:19:54,090 a potom by to jednoducho vrátiť undefined-- ktorý 376 00:19:54,090 --> 00:19:58,250 je vec, ktorá môže JavaScript robiť, čo môže mať výhody, 377 00:19:58,250 --> 00:20:03,190 ale je to also-- ak urobíte preklep, to môže mať za následok chyby podivné. 378 00:20:03,190 --> 00:20:05,617 Takže to bude len snažiť nájsť čo poviete, že nájsť 379 00:20:05,617 --> 00:20:07,700 a to nebude sťažovať, ak nenájde ju. 380 00:20:07,700 --> 00:20:11,390 Bude to len povedať, že som neurobil nájsť, a potom ísť ďalej. 381 00:20:11,390 --> 00:20:17,581 Tak to by bolo nedefinované, a prázdne, a priezvisko. 382 00:20:17,581 --> 00:20:18,080 Jo. 383 00:20:18,080 --> 00:20:21,070 A potom môžeme vidieť, že ak budeme by potom mohla ísť dole a access-- 384 00:20:21,070 --> 00:20:25,450 a hovoríme tf.print () s zátvorkách. 385 00:20:25,450 --> 00:20:30,000 Bude to volať, že tlač funkcie bez argumentov, že jo? 386 00:20:30,000 --> 00:20:34,490 Ale ak budeme práve povedal tf.print () bodkočiarka, bez zátvoriek, 387 00:20:34,490 --> 00:20:37,480 všetko, čo by mal urobiť, je vytiahnuť out funkcie od hodnoty, 388 00:20:37,480 --> 00:20:40,609 ale nie v skutočnosti to nazval. 389 00:20:40,609 --> 00:20:41,162 Super. 390 00:20:41,162 --> 00:20:42,870 Hugh Zabriskie: Mal urobíme objekt? 391 00:20:42,870 --> 00:20:44,161 SAM ZELENÁ: Jasne, poďme to urobiť. 392 00:20:44,161 --> 00:20:48,750 Tak som to môže pohnúť Príklad do konzoly. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Môžeme si predstaviť, že mám objekt. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Takže toto je jednoduchý objekt. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Jedná sa o objekt, ktorý obsahuje dve Hodnoty s dvoma tlačidlami, dvoma kľúčovým hodnota 399 00:21:11,050 --> 00:21:12,710 pary. 400 00:21:12,710 --> 00:21:21,850 Tak som sa potom môže pristupovať hodnoty uložené vnútri tohto objektu tým, že robí x.x1, 401 00:21:21,850 --> 00:21:23,400 Napríklad, a ja si 1 Späť. 402 00:21:23,400 --> 00:21:29,590 Rovnako tak, x.x2, dostať túto hodnotu späť. 403 00:21:29,590 --> 00:21:33,330 >> A teraz naozaj cool vec je, môžem v skutočnosti pridať niečo k tomuto objektu 404 00:21:33,330 --> 00:21:34,316 potom, čo som ju vytvorili. 405 00:21:34,316 --> 00:21:36,315 Takže si viete predstaviť, poďme že mám funkciu. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Hugh Zabriskie: Vy musíte urobiť, Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM ZELENÁ: Oh, to je nepríjemné. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Čo sa to nepáči? 411 00:22:04,324 --> 00:22:04,824 Aha. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Ideme na to. 414 00:22:08,691 --> 00:22:09,190 Super. 415 00:22:09,190 --> 00:22:12,840 >> Tak som práve vytvorili táto funkcia, f, že 416 00:22:12,840 --> 00:22:17,590 sa chystá ísť do prúdu objekt a tlač this.x1. 417 00:22:17,590 --> 00:22:20,330 Takže keď som sa zavolať f o sama o sebe, nič sa deje 418 00:22:20,330 --> 00:22:26,970 sa stane, doprava, pretože tam nie je žiadny x1 poľa v objekte je to s odkazom na. 419 00:22:26,970 --> 00:22:39,710 Ale, keď poviem, x.f = f a potom som volajte x.f (), budem sa dostať späť 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Táto funkcia f je teraz spojené s objektu x, 422 00:22:46,530 --> 00:22:51,800 ktorý má kľúč nazvaný x1 spojené s hodnotou 1, 423 00:22:51,800 --> 00:22:54,570 Takže keď hovoríme this.x1, to je bude nájsť to, čo je to hľadá 424 00:22:54,570 --> 00:22:56,450 a musí byť schopný vytlačiť hodnotu von. 425 00:22:56,450 --> 00:22:58,700 Tak to je len jeden príklad z druhu šialené veci 426 00:22:58,700 --> 00:23:01,190 môžete robiť s objektmi v JavaScriptu. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Takže táto verzia bola generické verzie, význam 429 00:23:07,560 --> 00:23:13,780 že sme vytvorili objekt pomocou tohto zátvorky notation-- ortéza notáciu, 430 00:23:13,780 --> 00:23:16,880 rather-- a to je my len chceme vhod, ak 431 00:23:16,880 --> 00:23:21,440 jeden výskyt určitého objektu, ale čo ak chceme mať viac ako jeden 432 00:23:21,440 --> 00:23:22,210 rovnakého druhu? 433 00:23:22,210 --> 00:23:24,440 A odpoveď na to Otázkou je, tam sú veci, 434 00:23:24,440 --> 00:23:26,760 volal triedy v JavaScripte rovnako. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Môžeme vytvoriť funkciu, ktorá robí nejaký inicializácia 437 00:23:36,420 --> 00:23:41,690 na cudzie teleso, a my by sme povedať, rovnako ako, 438 00:23:41,690 --> 00:23:44,550 mojej class-- tak názvu opätovne použiteľné object-- 439 00:23:44,550 --> 00:23:47,100 rovná sa funkcie, ktorá ho nastaví. 440 00:23:47,100 --> 00:23:52,280 Takže to, čo by to bolo ekvivalentné aby ich vytvorenie objektu, ktorý 441 00:23:52,280 --> 00:23:55,930 bude rovnako ako, zložená zátvorka, str, hrubého čreva, 442 00:23:55,930 --> 00:23:59,630 to je reťazec, bodkočiarka, zložená zátvorka. 443 00:23:59,630 --> 00:24:01,880 To by bol všeobecný Objekt sme inicializovať, 444 00:24:01,880 --> 00:24:06,380 s tým rozdielom, na Nasledujúce riadky sme sa vytvoriť prototyp, ktorý 445 00:24:06,380 --> 00:24:11,190 znamená, že je predvolený kľúč, ktorý pridáme do nášho objektu, ktorý 446 00:24:11,190 --> 00:24:13,970 má hodnotu sú tu uvedené. 447 00:24:13,970 --> 00:24:20,570 To znamená, že, keď som vytvoriť novú inštancie tohto MyClass objekte, 448 00:24:20,570 --> 00:24:27,440 to bude mať pre-postavený vnútri to je hodnota, s názvom str a iné hodnoty 449 00:24:27,440 --> 00:24:32,418 s názvom myPrint, čo je Bude to fungovať. 450 00:24:32,418 --> 00:24:32,918 Úžasné. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Skvelé. 453 00:24:37,990 --> 00:24:40,710 Takže posledná vec, hovoria o JavaScriptu 454 00:24:40,710 --> 00:24:46,430 je to, že je to naozaj užitočné, za čo sa nazývajú asynchrónne operácie. 455 00:24:46,430 --> 00:24:52,500 Asynchrónne znamená, že my môžete čakať na nejakú operáciu 456 00:24:52,500 --> 00:24:57,870 dokončiť skôr než prejdeme , Ale ďalej, keď budeme čakať 457 00:24:57,870 --> 00:24:59,690 a potom sa niečo stalo neskôr. 458 00:24:59,690 --> 00:25:03,480 A čo tým myslím, že je, vy Možno si predstaviť situáciu, keď 459 00:25:03,480 --> 00:25:06,850 odoslať požiadavku na niektoré web server niekde, 460 00:25:06,850 --> 00:25:09,670 a to bude poslať ťa späť nejaký veľký kus dát, že jo? 461 00:25:09,670 --> 00:25:13,320 A váš používateľ môže čakať v medzitým aby sa tak stalo, 462 00:25:13,320 --> 00:25:15,200 a nič nemôže byť deje v tej dobe. 463 00:25:15,200 --> 00:25:18,110 Ale to nie je skvelý dizajn, je to tak? 464 00:25:18,110 --> 00:25:20,214 Nechcete, aby webová stránka zmraziť. 465 00:25:20,214 --> 00:25:22,380 Čo sa v prípade, že chce používateľ kliknite na drop-down menu? 466 00:25:22,380 --> 00:25:24,870 Nie je to skvelý dizajn vzor. 467 00:25:24,870 --> 00:25:29,290 Namiesto toho, v podstate to, čo JavaScript robí sa hovorí, 468 00:25:29,290 --> 00:25:31,870 OK, túto operáciu asynchrónne. 469 00:25:31,870 --> 00:25:36,520 Tak ako, čakajú v pozadí, a potom, keď je operácia vykonaná, 470 00:25:36,520 --> 00:25:39,420 zavolať spätné volanie function-- zavolať nejakú funkciu, 471 00:25:39,420 --> 00:25:43,800 Do niektorých action-- signalizuje, že Prevádzka sme čakali až do konca 472 00:25:43,800 --> 00:25:45,520 je koniec. 473 00:25:45,520 --> 00:25:51,240 A dôvod, prečo to je super výkonná je, môžeme niečo urobiť, odovzdať argument, 474 00:25:51,240 --> 00:25:54,440 niečo urobiť, a potom čakať až sa niečo stane. 475 00:25:54,440 --> 00:25:58,970 Potom, keď bola táto niečo dokončí, môžeme zavolať spätné volanie. 476 00:25:58,970 --> 00:26:03,300 To je naozaj užitočné, pretože to umožňuje nás robiť veci s Web Audio API, 477 00:26:03,300 --> 00:26:07,490 Napríklad, ako je načítanie zvukový súbor zo vzdialeného servera 478 00:26:07,490 --> 00:26:11,660 bez toho aby museli čakať na celý zvukový súbor má byť vybavené, 479 00:26:11,660 --> 00:26:14,440 čo by bolo naozaj zlé pre užívateľské skúsenosti. 480 00:26:14,440 --> 00:26:17,080 Super. 481 00:26:17,080 --> 00:26:19,460 >> Posledných pár berie na vedomie, o ladenie, pretože táto 482 00:26:19,460 --> 00:26:23,682 je vec, ktorú budete musieť urobiť, ako súčasť svojho projektu, so zárukou. 483 00:26:23,682 --> 00:26:25,140 Spomenul som konzolu JavaScriptu. 484 00:26:25,140 --> 00:26:27,550 Je to super užitočná funkcia všetkých moderných prehliadačov, 485 00:26:27,550 --> 00:26:30,300 A my naozaj povzbudiť, aby ste si pohodlne používať konzolu, 486 00:26:30,300 --> 00:26:33,660 ak chcete získať dobrý v JavaScripte. 487 00:26:33,660 --> 00:26:36,320 Je to super užitočné pre ladenie, ale je to tiež 488 00:26:36,320 --> 00:26:39,440 naozaj užitočné pre zisťuje to, ako používať API. 489 00:26:39,440 --> 00:26:41,950 Umožňuje naozaj ľahké experimentovanie 490 00:26:41,950 --> 00:26:45,910 bez toho aby ste museli písať nejaký kódu, a potom kompilovať. 491 00:26:45,910 --> 00:26:47,500 Nemusíte robiť všetky tieto kroky. 492 00:26:47,500 --> 00:26:49,619 Stačí si len napísať nejaký kód do radu, 493 00:26:49,619 --> 00:26:52,410 a potom získať okamžitú spätnú väzbu na či je tento riadok kódu, alebo nie 494 00:26:52,410 --> 00:26:55,230 worked-- veľmi šikovný. 495 00:26:55,230 --> 00:26:59,760 >> A tiež, len jedna technická note-- konzola JavaScript je príkladom 496 00:26:59,760 --> 00:27:05,680 o REPL-- takže to je R-E-P-L, REPL, čo je skratka pre čítanie, hodnotiť, 497 00:27:05,680 --> 00:27:06,180 print slučky. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Budeš písať nejaké veci in, tak to si prečítať, čo ste zadali v, 500 00:27:12,120 --> 00:27:17,280 to bude hodnotiť, a to bude vytlačiť výstup, a potom to bude začať znova. 501 00:27:17,280 --> 00:27:22,056 To vám umožní rýchlo ísť kruhy iterácií, ktorý je naozaj cool. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Myslím, že skutočný Last note-- to je skutočná posledná poznámka, áno. 504 00:27:28,930 --> 00:27:30,780 Ako môžeme vlastne používať JavaScript? 505 00:27:30,780 --> 00:27:34,040 Takže najprv, môžeme dovážať ho pomocou tagu script 506 00:27:34,040 --> 00:27:39,500 v hornej alebo dolnej časti HTML file-- kdekoľvek vo vnútri súboru HTML, 507 00:27:39,500 --> 00:27:40,440 Naozaj. 508 00:27:40,440 --> 00:27:47,390 A v rámci tagu script, existujú dve čiastkové spôsoby importu JavaScript. 509 00:27:47,390 --> 00:27:51,370 Prvým z nich je tým, že má samostatný súbor JavaScript 510 00:27:51,370 --> 00:27:58,010 že import v plnom rozsahu, alebo tým, že oblasť kódu, ako je skript 511 00:27:58,010 --> 00:28:00,290 spustiť, a potom spätné lomítko skript ukončiť. 512 00:28:00,290 --> 00:28:02,620 A potom sme jednoducho napísať JavaScript vnútri súboru HTML. 513 00:28:02,620 --> 00:28:03,790 To sú dva spôsoby. 514 00:28:03,790 --> 00:28:05,165 Môžete ho mať vo vnútri HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 Divákov: Je jedným lepší ako ostatní? 517 00:28:08,126 --> 00:28:10,542 SAM ZELENÁ: Otázkou bolo, je lepšia ako ostatné. 518 00:28:10,542 --> 00:28:18,306 Takže, áno, ako kódovanie štýl praxi, a tiež je to ako projekčné praxi. 519 00:28:18,306 --> 00:28:20,180 Existujú dva dôvody, prečo by to mohlo byť lepšie. 520 00:28:20,180 --> 00:28:23,934 Prvá je, že to je váš kód oveľa lepšie čitateľné všetky vaše HTML 521 00:28:23,934 --> 00:28:27,100 je na jednom mieste, všetky vaše CSS je v iné miesto, všetky vaše JavaScriptu 522 00:28:27,100 --> 00:28:28,420 je na treťom mieste. 523 00:28:28,420 --> 00:28:28,920 Doprava? 524 00:28:28,920 --> 00:28:32,370 Myslím si, že sme mali už hovorili o tom v sections--, ako to, čo CSS-- 525 00:28:32,370 --> 00:28:35,220 že je-- a to ide často v inom súbore. 526 00:28:35,220 --> 00:28:37,090 Tak, podobný druh poňatie sem. 527 00:28:37,090 --> 00:28:42,410 Môžete si tiež predstaviť, že JavaScript by byť znovu použité na viac ako jednom 528 00:28:42,410 --> 00:28:47,350 HTML stránka, alebo možno Veľmi veľa HTML stránky, 529 00:28:47,350 --> 00:28:49,340 a mať taký JavaScript refactored do jedného 530 00:28:49,340 --> 00:28:51,950 súbor, ktorý môžete importovať do viac ako jedného miesta 531 00:28:51,950 --> 00:28:54,570 umožňuje kód bude oveľa viac udržateľný. 532 00:28:54,570 --> 00:28:57,930 Môžete si predstaviť, takže jeden zmeniť JavaScriptu 533 00:28:57,930 --> 00:29:00,070 a museli ho zmeniť v 100 rôznych súborov. 534 00:29:00,070 --> 00:29:04,070 A namiesto toho môžeme len to zmeniť v jednom, čo je spôsob, ako silnejší. 535 00:29:04,070 --> 00:29:05,420 Už som odpoveď na vašu otázku? 536 00:29:05,420 --> 00:29:07,950 Super. 537 00:29:07,950 --> 00:29:10,830 >> Môžeme tiež zadať do konzoly, ako sme sa už zmienil skôr. 538 00:29:10,830 --> 00:29:15,070 A opäť, posledný note-- Web Audio je postavený v, 539 00:29:15,070 --> 00:29:16,978 nemusíte nahrať nič. 540 00:29:16,978 --> 00:29:17,478 Super. 541 00:29:17,478 --> 00:29:20,519 Sú nejaké otázky, máte akékoľvek ďalšie otázky týkajúce sa JavaScript 542 00:29:20,519 --> 00:29:21,930 než sme ďalej? 543 00:29:21,930 --> 00:29:24,286 >> Divákov: [Nepočuteľné] 544 00:29:24,286 --> 00:29:25,410 SAM ZELENÁ: Dobre, v pohode. 545 00:29:25,410 --> 00:29:27,200 Tak teraz to bude hovoriť o API. 546 00:29:27,200 --> 00:29:28,490 >> Hugh Zabriskie: cool. 547 00:29:28,490 --> 00:29:28,990 Vďaka, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM ZELENÁ: Iste. 549 00:29:30,184 --> 00:29:32,600 Hugh Zabriskie: Super, takže budeme ďalej od JavaScriptu. 550 00:29:32,600 --> 00:29:35,350 Takže sme hovorili o niektorých náležitosti JavaScript 551 00:29:35,350 --> 00:29:41,105 a tie, ktoré sú premenné, funkcie, objektov, funguje ako premenných, 552 00:29:41,105 --> 00:29:41,980 asynchrónne zaťaženia. 553 00:29:41,980 --> 00:29:46,100 To všetko sú veci, ktoré budete vidieť, ako budete používať na webe Audio. 554 00:29:46,100 --> 00:29:49,230 Takže sme len hovoriť o to najprv na vysokej úrovni. 555 00:29:49,230 --> 00:29:52,120 >> Je to API, takže je to niečo, , Ktorý je postavený, ako povedal Sam, 556 00:29:52,120 --> 00:29:57,010 priamo do JavaScriptu ktoré používate v konzole. 557 00:29:57,010 --> 00:30:01,020 A je to vlastne len ako C ++ kódu To je naozaj postavený do prehliadača Chrome 558 00:30:01,020 --> 00:30:04,470 a Firefox, a všetky z týchto prehliadačov. 559 00:30:04,470 --> 00:30:07,060 Takže hlavná myšlienka s webe Audio je, že máte 560 00:30:07,060 --> 00:30:09,440 tento druh potrubia audio, že jo? 561 00:30:09,440 --> 00:30:13,670 Takže vaše audio dáta prichádza v v nejakej forme. 562 00:30:13,670 --> 00:30:16,690 >> Existujú tri hlavné druhy forms-- máte oscilátor, ktorý 563 00:30:16,690 --> 00:30:21,340 vytvára sínusoida, Cosine vlna, budeme vidieť, ako to funguje. 564 00:30:21,340 --> 00:30:23,890 Ďalším veľmi častým jedného, Samozrejme, je MP3. 565 00:30:23,890 --> 00:30:25,810 Takže možno začnete s pieseň, a potom 566 00:30:25,810 --> 00:30:28,320 chcete urobiť nejaké filtrovanie k tomu a výstup 567 00:30:28,320 --> 00:30:30,605 that--, že by mohol byť možným zdrojom. 568 00:30:30,605 --> 00:30:32,480 A potom sa naozaj cool jeden je mikrofón. 569 00:30:32,480 --> 00:30:37,230 Takže môžete použiť niektoré veľmi Základné volania v JavaScripte 570 00:30:37,230 --> 00:30:39,440 získať prístup k mikrofón, takže ak ste 571 00:30:39,440 --> 00:30:42,870 chcel, aby aplikáciu ako detektor stúpania, 572 00:30:42,870 --> 00:30:45,290 napríklad, že sa v váš hlas a zistí 573 00:30:45,290 --> 00:30:47,740 pitch-- veľmi jednoduchý spôsob, ako na to. 574 00:30:47,740 --> 00:30:50,730 Stačí si len trochu čítať in, zistiť frekvenciu, 575 00:30:50,730 --> 00:30:52,250 a potom výstup číslo. 576 00:30:52,250 --> 00:30:56,080 Tak uvidíme, ako to funguje, rovnako. 577 00:30:56,080 --> 00:30:59,430 >> Cieľ je v podstate kde je audio dáta je na výstupe. 578 00:30:59,430 --> 00:31:02,890 Takže všeobecne, to je ako váš laptop reproduktory. 579 00:31:02,890 --> 00:31:05,610 Ďalšie možnosti sú ako ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 sa dostaneme uzly v second-- ale v podstate, 581 00:31:07,990 --> 00:31:11,939 Buď ste uvedenie zvuk von prostredníctvom vášho počítača cez reproduktory, 582 00:31:11,939 --> 00:31:14,730 alebo ste druh záznamu, tak ste ukladanie ako audio dáta. 583 00:31:14,730 --> 00:31:18,980 Takže možno ak niekto vytvorí hudba v vašej aplikácii a potom 584 00:31:18,980 --> 00:31:22,410 Ak chcete nahrávať, že a možno ako exportovať do SoundCloud, pre example-- 585 00:31:22,410 --> 00:31:25,281 že by bol jeden spôsob, ako to urobiť. 586 00:31:25,281 --> 00:31:27,030 Všetky zábavné veci, ktoré budeme hovoriť o, 587 00:31:27,030 --> 00:31:29,950 sa stane, medzi týmito dvoma bodmi, kde sme nahrať v hudbe 588 00:31:29,950 --> 00:31:31,410 a potom sa na výstupe. 589 00:31:31,410 --> 00:31:36,660 >> Takže budem hovoriť o päť etapy zvukovú produkciu v druhom. 590 00:31:36,660 --> 00:31:38,950 Máme túto vec zvanú AudioContext, ktorý 591 00:31:38,950 --> 00:31:41,580 je tento malý wrapper tu vidíme. 592 00:31:41,580 --> 00:31:49,980 V podstate to, čo AudioContext je-- keby sme prejsť na JavaScript konzole práve teraz, 593 00:31:49,980 --> 00:31:52,740 môžeme vytvoriť práve teraz. 594 00:31:52,740 --> 00:31:54,040 Len príklad REPL, že jo? 595 00:31:54,040 --> 00:31:57,880 Sme čítanie, vyhodnocovanie, a vytlačí. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext je globálna stáť. 597 00:32:00,260 --> 00:32:05,500 Je to struct, je to objekt tu, a udržuje informácie 598 00:32:05,500 --> 00:32:09,960 o veciach, ktoré sa na Na obrazovke so zvukom. 599 00:32:09,960 --> 00:32:15,220 Jedným z príkladov je aktuálny čas. 600 00:32:15,220 --> 00:32:18,910 To vám povie číslo sekúnd, veľmi presne, 601 00:32:18,910 --> 00:32:20,890 pretože webové stránky vložený. 602 00:32:20,890 --> 00:32:24,110 Tak toto je naozaj užitočná malý majetok, ktorý môžete použiť. 603 00:32:24,110 --> 00:32:27,898 Je to čítal only-- Myslím si, že v skutočnosti môžete skúsiť nastaviť to hodnotu. 604 00:32:27,898 --> 00:32:29,856 To vám poviem vám to nastaviť, a potom, ak ju vytlačiť 605 00:32:29,856 --> 00:32:31,439 again-- to robilo nie vlastne celkom prácu. 606 00:32:31,439 --> 00:32:34,472 Takže tam sú len pre čítanie vlastnosti v JavaScriptu. 607 00:32:34,472 --> 00:32:36,430 To je naozaj užitočné, ak ste trochu synchronizáciu 608 00:32:36,430 --> 00:32:38,610 veľa iný informácie, keď ste 609 00:32:38,610 --> 00:32:41,280 druh hrať rôzne zvuky. 610 00:32:41,280 --> 00:32:43,630 >> Ďalším naozaj užitočné jedným je kontext cieľ. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Určite, ak máte záujem, bude sa snaží to na vlastnú konzole vpravo 613 00:32:49,670 --> 00:32:50,980 teraz. 614 00:32:50,980 --> 00:32:53,150 Tak toto je AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 V podstate, čo to hovorí, je, pokiaľ sa výkon ide? 616 00:32:56,480 --> 00:32:59,590 Takže existujú dve reálne možnosti tu. 617 00:32:59,590 --> 00:33:01,940 Východiskový je len reproduktory, 618 00:33:01,940 --> 00:33:05,150 tak AudioDestinationNode v podstate len hovorí, 619 00:33:05,150 --> 00:33:09,240 tam sú nulové výstupov do zvuku prichádza, poslaný do reproduktora. 620 00:33:09,240 --> 00:33:12,050 Takže všeobecne, vy nie musieť hrať s tým. 621 00:33:12,050 --> 00:33:15,720 Ak máte záujem o vlastne používať ScriptProcessorNode pre záznam, 622 00:33:15,720 --> 00:33:16,990 Rozhodne ma zastreliť e-mail neskôr, pretože to je 623 00:33:16,990 --> 00:33:18,330 o niečo zložitejšie. 624 00:33:18,330 --> 00:33:21,590 Ale všeobecne, si len trochu pre výstup zvuku v určitej forme. 625 00:33:21,590 --> 00:33:24,347 Tak v pohode, budeme skákať sem. 626 00:33:24,347 --> 00:33:25,180 Divákov: Je mi to ľúto. 627 00:33:25,180 --> 00:33:26,054 Hugh Zabriskie: Jo. 628 00:33:26,054 --> 00:33:28,770 Divákov: Viem, že ste povedal, hovoriť sa neskôr o nahrávaní. 629 00:33:28,770 --> 00:33:31,550 Môžete rozhranie, ktoré 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 Pozrime sa. 632 00:33:35,260 --> 00:33:37,220 To si nemyslím. 633 00:33:37,220 --> 00:33:41,670 Tak sa medzi klientom, čo je JavaScript 634 00:33:41,670 --> 00:33:44,310 konzoly, a vaše skutočné počítač, je všeobecne 635 00:33:44,310 --> 00:33:46,490 niečo, čo je druh off limitov, ak ste 636 00:33:46,490 --> 00:33:52,320 bude, niečo z povahy the-- je to trochu dizajnu veci, 637 00:33:52,320 --> 00:33:57,770 ale budete snažiť, aby prehliadač oddelené z aktuálneho počítača užívateľa. 638 00:33:57,770 --> 00:34:02,310 Všeobecne platí, že jediná vec, ktorú ste schopní Prístup je mikrofón alebo kamera. 639 00:34:02,310 --> 00:34:04,730 Nie ste schopní, I si nemyslím, použite Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Avšak, ak ste vytvorili stopa v Pro Tools, 641 00:34:07,480 --> 00:34:12,710 vyvážajú, že by ste mohli nahrať, že sem, filtrovať, napríklad, 642 00:34:12,710 --> 00:34:16,820 Proces, ktorý, a zaznamenať, že do Audio Destination-- alebo no-- gule 643 00:34:16,820 --> 00:34:17,870 Uzol procesora. 644 00:34:17,870 --> 00:34:20,730 A potom odtiaľ, mohol by ste exportovať, že pre SoundCloud, vás 645 00:34:20,730 --> 00:34:25,320 mohol odoslať e-mailom, alebo čo sa vám páči odtiaľ. 646 00:34:25,320 --> 00:34:31,159 >> Ale je tu trochu mierne bariéry medzi robiť hudbu na počítači 647 00:34:31,159 --> 00:34:33,050 a robiť hudbu on-line. 648 00:34:33,050 --> 00:34:37,940 >> SAM ZELENÁ: A to je nie sú jedinečné tohto API. 649 00:34:37,940 --> 00:34:44,060 Je to bezpečnostné funkcie Chrome, a Myslím si, že všetky ostatné moderné prehliadač. 650 00:34:44,060 --> 00:34:45,860 Prehliadač je sebestačný. 651 00:34:45,860 --> 00:34:50,980 Tak napríklad, webová stránka nemôže používajú JavaScript otočiť zvuk 652 00:34:50,980 --> 00:34:54,190 Na na reproduktoroch, napríklad. 653 00:34:54,190 --> 00:34:58,120 Alebo to nemôže vypnete počítač. 654 00:34:58,120 --> 00:35:01,530 A nie je tam žiadny vnútorný bod Medzi týmito dvoma vecami, vpravo, 655 00:35:01,530 --> 00:35:05,960 takže buď máte kompletné abstrakcie, 656 00:35:05,960 --> 00:35:10,050 alebo si otvoriť bezpečnostnú chybu nechať 657 00:35:10,050 --> 00:35:14,440 programátor so zlými úmyslami robiť čo chcú so svojim notebookom. 658 00:35:14,440 --> 00:35:18,104 A to je dôvod, prečo Chrome je sebestačný. 659 00:35:18,104 --> 00:35:19,310 >> Hugh Zabriskie: Jo. 660 00:35:19,310 --> 00:35:20,840 Dáva to zmysel_ 661 00:35:20,840 --> 00:35:21,369 Cool, cool. 662 00:35:21,369 --> 00:35:23,160 Bol som jednoducho ísť ukazujú príklad jedného. 663 00:35:23,160 --> 00:35:25,118 To je do značnej miery ako ak sa dostanete, pokiaľ ide 664 00:35:25,118 --> 00:35:26,950 prístupu k počítaču používateľa. 665 00:35:26,950 --> 00:35:30,180 Ak máte klávesnice USB zapojený, môžete použiť niečo, čo nazýva Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, ktoré nebudeme naozaj hovoriť o tu, 667 00:35:32,180 --> 00:35:36,330 ale to je ďalší API, ktoré je vstavaný do aspoň Chrome-- znovu 668 00:35:36,330 --> 00:35:41,570 To je dôvod, prečo milujeme Chrome-- Myslím si, že Firefox alebo Safari, 669 00:35:41,570 --> 00:35:44,300 to je jednoduchá vec google-- rôzne prehliadače majú 670 00:35:44,300 --> 00:35:46,917 odlišný podpora pre ktoré API, ktoré vykonali. 671 00:35:46,917 --> 00:35:49,875 Ale ak by ste chceli pripojiť klávesnicu a pracovať s týmito informáciami, 672 00:35:49,875 --> 00:35:52,850 druh poslať klávesnice Informácie sa k počítaču 673 00:35:52,850 --> 00:35:57,620 a potom použiť že on-line, toto rozhranie API je miesto, kde by ste pracovať, že. 674 00:35:57,620 --> 00:35:58,150 >> Super. 675 00:35:58,150 --> 00:35:58,710 OK. 676 00:35:58,710 --> 00:36:01,320 Takže, rýchlo sa pohybujúce sa tu na. 677 00:36:01,320 --> 00:36:03,310 Ako sme na tom s časom? 678 00:36:03,310 --> 00:36:04,210 >> Reproduktor 1: O 15. 679 00:36:04,210 --> 00:36:05,543 >> Hugh Zabriskie: 15 minút odišiel? 680 00:36:05,543 --> 00:36:06,160 OK v pohode. 681 00:36:06,160 --> 00:36:08,170 Takže budeme pretekať dopredu tu. 682 00:36:08,170 --> 00:36:13,500 >> Takže v podstate, hlavným bodom myslieť na to ako potrubie 683 00:36:13,500 --> 00:36:16,430 je to, že každý krok v potrubí je séria audio uzlov. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Náš zdroj, povedzme, je oscilátor. 686 00:36:20,950 --> 00:36:23,380 Musíme vytvoriť uzol oscilátor. 687 00:36:23,380 --> 00:36:25,690 A to je len tak malého function-- 688 00:36:25,690 --> 00:36:30,460 a oni sú založené out audio kontextu tu. 689 00:36:30,460 --> 00:36:32,885 >> Divákov: Keď to povedal, oscilátor, znamená to, že 690 00:36:32,885 --> 00:36:37,250 je to vlastne doslova ísť od dva rôzne póly tam a späť? 691 00:36:37,250 --> 00:36:41,170 >> Hugh Zabriskie: Nie, je to ako digitálne reprezentácie. 692 00:36:41,170 --> 00:36:42,740 Je to vlastne implementovaná v C ++. 693 00:36:42,740 --> 00:36:46,460 Ja vlastne neviem špecifikácia o tom, ako je to vlastne vykonaná, 694 00:36:46,460 --> 00:36:48,500 ale to všetko sa pracuje ako binárne dáta. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Vlastne áno. 697 00:36:52,370 --> 00:36:53,950 To by bolo hovoriť, som mohol v skutočnosti, ak máte záujem, 698 00:36:53,950 --> 00:36:56,533 Mohol by som vám poslať trochu viac Informácie o tom, ako priebehov 699 00:36:56,533 --> 00:37:00,181 sú udržiavané s digitálnom formáte. 700 00:37:00,181 --> 00:37:00,680 OK v pohode. 701 00:37:00,680 --> 00:37:03,120 >> Takže sme generovanie tónu ako sine mávať, alebo niečo také, možno 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Tvoríme oscilátor. 704 00:37:05,830 --> 00:37:09,180 Ak chceme nastaviť hlasitosť, my pripojiť niečo k GainNode, 705 00:37:09,180 --> 00:37:12,500 ktoré sme mohli urobiť s .creategain. 706 00:37:12,500 --> 00:37:14,250 To nastavuje hlasitosť. 707 00:37:14,250 --> 00:37:17,820 Môžete si prejsť, že na akýkoľvek druhého options-- dobre, 708 00:37:17,820 --> 00:37:20,300 tak zvukový zdroj vyrovnávací uzol je miesto, kde by ste mohli 709 00:37:20,300 --> 00:37:23,660 uloženie MP3, ktoré ste založeného v. 710 00:37:23,660 --> 00:37:27,670 >> SFB filter je pre filtráciu, pokiaľ Ak chcete mať všetky základne von 711 00:37:27,670 --> 00:37:29,630 piesne, alebo niečo také. 712 00:37:29,630 --> 00:37:32,450 Nedaj bože, chcete, aby sa základňa z piesne. 713 00:37:32,450 --> 00:37:36,980 A AudioDestination uzol je, opäť, ako kde je naša dokončenie je. 714 00:37:36,980 --> 00:37:39,980 Ak ste niekedy záujem vidieť všetky rôzne možné varianty, 715 00:37:39,980 --> 00:37:45,190 stačí ísť na kartu a nechať auto-kompletné prísť. 716 00:37:45,190 --> 00:37:48,690 A ak nechcete vytvárať, uvidíte všetky rôznych vecí, ktoré môžete vytvoriť. 717 00:37:48,690 --> 00:37:50,398 Môžete vytvárať dynamické skript procesory, 718 00:37:50,398 --> 00:37:52,940 Ja ani neviem, čo to je, pre miešanie fúzie kanálov 719 00:37:52,940 --> 00:37:55,930 a kanál štiepačky a to všetko. 720 00:37:55,930 --> 00:37:56,430 Super. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Takže je to len Príklad potrubia. 723 00:38:01,390 --> 00:38:03,580 Takže máme tri zdroje prichádzať. 724 00:38:03,580 --> 00:38:06,830 Možno, že to sú priebehy, Možno, že sa jedná o MP3. 725 00:38:06,830 --> 00:38:08,740 Jedna sa deje prostredníctvom filter, ďalšie je 726 00:38:08,740 --> 00:38:12,404 dostať skreslený ďalšie niečí ryžovanie vľavo a vpravo. 727 00:38:12,404 --> 00:38:15,320 Môžete robiť všetky druhy vecí a Všetci zapliesť okolo dohromady, 728 00:38:15,320 --> 00:38:18,880 a vychádza von zvuk na konci, ako cieľ. 729 00:38:18,880 --> 00:38:22,720 Toto je príklad toho, čo viac komplikovaná Web Audio kód vyzerá. 730 00:38:22,720 --> 00:38:26,720 Budete vytvárať všetky tieto rôzne objekty vpravo here-- 731 00:38:26,720 --> 00:38:27,706 Nie som si istý, o tom. 732 00:38:27,706 --> 00:38:29,120 Nie, to nie je priblížiť. 733 00:38:29,120 --> 00:38:29,620 OK. 734 00:38:29,620 --> 00:38:31,257 >> SAM ZELENÁ: Robíte Control, prechádzanie nahor. 735 00:38:31,257 --> 00:38:32,590 Hugh Zabriskie: Control Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM ZELENÁ: Nie, nie. 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, Posunúť? 740 00:38:38,140 --> 00:38:38,780 Oh, gotcha. 741 00:38:38,780 --> 00:38:41,480 Jo. 742 00:38:41,480 --> 00:38:42,240 Wow, Nie, kdeže. 743 00:38:42,240 --> 00:38:42,740 OK. 744 00:38:42,740 --> 00:38:46,090 Nebudem to robiť. 745 00:38:46,090 --> 00:38:48,300 >> Tak jo, v tejto prvej Sekcia tu, vidíte 746 00:38:48,300 --> 00:38:52,720 vytvárame všetky tieto rôzne uzly z kontextu. 747 00:38:52,720 --> 00:38:54,980 Práve sme im vysprávky spoločne v druhej časti 748 00:38:54,980 --> 00:38:56,980 V tejto funkcii s názvom Connect. 749 00:38:56,980 --> 00:38:58,830 To je naozaj kľúčový Funkcia vo Web Audio. 750 00:38:58,830 --> 00:39:01,930 To len znamená, že potom, čo ste urobil niečo so zvukom v jednom uzle, 751 00:39:01,930 --> 00:39:03,705 preniesť ich na ďalší uzol. 752 00:39:03,705 --> 00:39:05,830 Takže máme zdroj, ho sa pripojí k analyzátora, 753 00:39:05,830 --> 00:39:09,140 analyzátor robí niečo s ním, to ide ku skresleniu, a tak ďalej, 754 00:39:09,140 --> 00:39:12,725 a na miesto určenia vpravo dole tu. 755 00:39:12,725 --> 00:39:13,225 Super. 756 00:39:13,225 --> 00:39:14,640 OK, takže budeme držať ďalej. 757 00:39:14,640 --> 00:39:17,180 >> Opäť sa pipeline--, títo sú najčastejšie potrubia, 758 00:39:17,180 --> 00:39:21,300 preto hovoríme o všetkých týchto veciach, ako je skreslenie, ryžovanie, toto všetko. 759 00:39:21,300 --> 00:39:24,280 Ak máte naozaj záujem pri použití veci Pro Tools, 760 00:39:24,280 --> 00:39:25,820 tie, ktoré pravdepodobne zaujímať. 761 00:39:25,820 --> 00:39:27,740 Ak nie, možno ste práve chcete prehrať zvuk, 762 00:39:27,740 --> 00:39:29,990 alebo možno len chcete nastaviť hlasitosť zvuku. 763 00:39:29,990 --> 00:39:35,270 To sú dva najčastejšie druh z potrubia vo výrobe zvuku. 764 00:39:35,270 --> 00:39:38,640 >> Opäť platí, že spôsoby, ako môžete vziať V ako oscillator-- tak, poďme 765 00:39:38,640 --> 00:39:42,460 urobiť demo toho tu. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Takže ideme na vytvorenie jednoduchý audio kontext tu, 768 00:39:52,225 --> 00:39:54,350 a od toho ideme vytvoriť našu oscilátor. 769 00:39:54,350 --> 00:39:58,620 Takže to je, opäť, sme len zavolá vytvoriť oscilátor. 770 00:39:58,620 --> 00:40:07,030 Budeme nastaviť frekvenciu na že 440 Hertz, každého z nás obľúbený. 771 00:40:07,030 --> 00:40:13,290 Potom sme pripojiť, že na miesto určenia point-- čo je reproduktor, takže 772 00:40:13,290 --> 00:40:15,750 kontext cieľ. 773 00:40:15,750 --> 00:40:21,400 Nakoniec sme len povedať, štart nula sekúnd od teraz, a my sme zvuk? 774 00:40:21,400 --> 00:40:22,400 >> [RING] 775 00:40:22,400 --> 00:40:24,980 >> Hugh Zabriskie: Ideme na to. 776 00:40:24,980 --> 00:40:25,940 Je to len sínusoida. 777 00:40:25,940 --> 00:40:26,440 OK v pohode. 778 00:40:26,440 --> 00:40:28,274 A potom budeme nechaj toho. 779 00:40:28,274 --> 00:40:30,520 >> Publikum: Kde sa že spätná väzba pochádza? 780 00:40:30,520 --> 00:40:31,250 >> Hugh Zabriskie: Spätná väzba? 781 00:40:31,250 --> 00:40:32,458 Oh, pravdepodobne naše mikrofóny. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Tak jo, to je to, ako to urobiť. 784 00:40:35,470 --> 00:40:37,261 A vlastne, keby som mal stále je spustená, 785 00:40:37,261 --> 00:40:39,540 môže mať frekvenciu hodnota, ako je to beh, 786 00:40:39,540 --> 00:40:43,320 tak to je zábavná vec pohrať. 787 00:40:43,320 --> 00:40:44,930 Super. 788 00:40:44,930 --> 00:40:46,600 To je vždy krásny človek predstaviť. 789 00:40:46,600 --> 00:40:48,792 >> SAM ZELENÁ: My sme nie premýšľať o tom, sme? 790 00:40:48,792 --> 00:40:50,500 Hugh Zabriskie: Jo, to je škaredý človek. 791 00:40:50,500 --> 00:40:53,249 Takže, vyrovnávacia loading-- budem ukázať Príkladom, že na samom konci. 792 00:40:53,249 --> 00:40:55,090 To je načítanie MP3. 793 00:40:55,090 --> 00:40:58,880 A mikrofón, môžete použiť len funkciu nazvaný Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 požiadať o prístup k užívateľa mikrofón pre túto informáciu. 795 00:41:03,240 --> 00:41:05,610 >> Tu je filtrovanie, budem Len ďalej z tohto. 796 00:41:05,610 --> 00:41:08,600 To je celkom vysokej úrovni, ale filtre len vám umožní 797 00:41:08,600 --> 00:41:16,154 >> [Pípanie] 798 00:41:16,154 --> 00:41:18,320 Filtrovanie tiež umožňuje vytvoriť veci ako ružová 799 00:41:18,320 --> 00:41:20,050 hluk, hnedý šum, biely šum. 800 00:41:20,050 --> 00:41:24,330 Ak chcete vytvoriť čistý hluk, ktorý Niektorí ľudia milujú, aby neporiadok okolo, 801 00:41:24,330 --> 00:41:27,490 môžete použiť aplikáciu Web Audio filtrovanie to urobiť. 802 00:41:27,490 --> 00:41:30,039 >> Audio Panning-- tak si predstavte ak píšete hru 803 00:41:30,039 --> 00:41:32,330 a chcete, aby sa zvuk do znieť ako to prichádza, rovnako ako, 804 00:41:32,330 --> 00:41:36,090 strieľa po celej obrazovke, môžete použiť posúvanie zo zvuku 805 00:41:36,090 --> 00:41:39,770 vytvoriť tento druh kužeľa, ktorý jako-- je to celkom Mathy, 806 00:41:39,770 --> 00:41:41,850 ale v skutočnosti je to naozaj pohode, ak si to práca, 807 00:41:41,850 --> 00:41:44,500 a tam je nejaký dobrý návody na to, že vám môžem poslať. 808 00:41:44,500 --> 00:41:46,400 V podstate, môžete si láskavý o vytvoriť zvuk 809 00:41:46,400 --> 00:41:50,480 niečo deje okolo v 3D spôsobom. 810 00:41:50,480 --> 00:41:57,350 A ak máte záujem DJ, môžete spustite miešanie a cross blednutiu piesne. 811 00:41:57,350 --> 00:42:01,260 >> To je len nejaký veľmi jednoduchý kód, v podstate to, čo som robil predtým. 812 00:42:01,260 --> 00:42:06,140 Toto nastavenie objemu oscilátor, takže sme vytvoriť našu oscilátor 813 00:42:06,140 --> 00:42:07,380 čo vytvára tvar vlny. 814 00:42:07,380 --> 00:42:09,940 Vytvárame našu GainNode, set našu frekvenciu, 815 00:42:09,940 --> 00:42:14,170 a potom pripojte oscilátor k GainNode, ktorý potom v podstate zmeny 816 00:42:14,170 --> 00:42:16,760 koľko signálu je povolené prejsť. 817 00:42:16,760 --> 00:42:20,467 Ale naozaj, je to digitálny vec, tak je to viac jen-- jo. 818 00:42:20,467 --> 00:42:23,550 To nie je to, čo sa skutočne deje, ale to je to, čo sa deje v reálnom živote 819 00:42:23,550 --> 00:42:24,393 so ziskom. 820 00:42:24,393 --> 00:42:27,258 >> Publikum: --quantization parametra objemu? 821 00:42:27,258 --> 00:42:28,174 Hugh Zabriskie: Sorry? 822 00:42:28,174 --> 00:42:30,360 Divákov: je to kvantování objem parameter? 823 00:42:30,360 --> 00:42:31,840 Hugh Zabriskie: Jo. 824 00:42:31,840 --> 00:42:34,620 A to je jedna vec, že ​​som naozaj deficitom v mojom znalostiach, 825 00:42:34,620 --> 00:42:38,010 Ako zisk pracuje na digitálne úrovni. 826 00:42:38,010 --> 00:42:40,140 Viem, že sa skutočné signály, je to v podstate 827 00:42:40,140 --> 00:42:45,120 kontrolu, koľko ste zosilnenie signálu. 828 00:42:45,120 --> 00:42:47,017 Tak jo. 829 00:42:47,017 --> 00:42:50,100 Pošlem vám viac informácií o to, pretože by som bol naozaj zvedavý 830 00:42:50,100 --> 00:42:51,099 vedieť viac o tom. 831 00:42:51,099 --> 00:42:54,090 Ale v podstate parametre sú, z nich je fold-- 832 00:42:54,090 --> 00:42:59,690 hlasnejší signal-- a nula nie je signál, alebo nebudete počuť žiadny zvuk. 833 00:42:59,690 --> 00:43:03,150 Budeme preskočiť demo čas na to, pretože je to v podstate to, čo som robil predtým. 834 00:43:03,150 --> 00:43:07,630 A opäť sa Context.Destination je audio cieľovým uzlom. 835 00:43:07,630 --> 00:43:08,360 Super, OK. 836 00:43:08,360 --> 00:43:10,470 >> Takže budem robiť rýchle dve demá. 837 00:43:10,470 --> 00:43:11,760 Ako sme na tom s časom? 838 00:43:11,760 --> 00:43:12,640 >> Reproduktor 1: Asi 10 minút. 839 00:43:12,640 --> 00:43:13,130 >> Hugh Zabriskie: 10 minút? 840 00:43:13,130 --> 00:43:13,630 Skvelé! 841 00:43:13,630 --> 00:43:14,320 Úžasné. 842 00:43:14,320 --> 00:43:19,010 >> Takže prvé, budem to, je to len moja obľúbená pieseň. 843 00:43:19,010 --> 00:43:22,410 Tak to je len malý HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Budeme mať dve tlačidlá Na stránke prehrať svoj obľúbený song 845 00:43:25,510 --> 00:43:29,192 a zastaviť moju obľúbenú pieseň. 846 00:43:29,192 --> 00:43:30,180 Budem zmeniť. 847 00:43:30,180 --> 00:43:32,110 >> Divákov: Zakryte mikrofónu. 848 00:43:32,110 --> 00:43:33,430 >> Hugh Zabriskie: Jo. 849 00:43:33,430 --> 00:43:36,300 A ja som v tú naloží skript, ktorý basically-- 850 00:43:36,300 --> 00:43:38,520 a to je veľmi užitočné pre načítanie MP3, 851 00:43:38,520 --> 00:43:41,820 tak to proste robí načítanie súborov MP3 cestu rýchlejšie. 852 00:43:41,820 --> 00:43:44,180 Je to v podstate len o obal. 853 00:43:44,180 --> 00:43:48,737 To jednoducho robí proces načítanie MP3 oveľa rýchlejšie, 854 00:43:48,737 --> 00:43:51,570 inak ste pomocou HTTP požiadavky, niečo ako to, čo sme robili 855 00:43:51,570 --> 00:43:53,950 na aktuálnom dielny s Server. 856 00:43:53,950 --> 00:43:55,950 Je to naozaj škaredý, vy nechcem to robiť. 857 00:43:55,950 --> 00:44:04,110 >> Takže ten chlap, Boris MSP, napísal naozaj užitočný malý nástroj nazvaný BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Všetko, čo urobiť, je jednoducho odovzdať ho na kontext, vy to list-- prejsť 859 00:44:08,780 --> 00:44:11,327 alebo, jo, je to zoznam v JavaScripte? 860 00:44:11,327 --> 00:44:12,160 SAM ZELENÁ: Pole. 861 00:44:12,160 --> 00:44:14,201 Hugh Zabriskie: Oh, to je pole, to je pravda. 862 00:44:14,201 --> 00:44:18,660 Je to rad ciest na rôznych súborov. 863 00:44:18,660 --> 00:44:21,990 A potom sa to funkciu prejsť. 864 00:44:21,990 --> 00:44:25,530 To je spätné volanie, že hovoríme o s asynchrónnym zaťažení. 865 00:44:25,530 --> 00:44:28,720 Ten sa bude volať Akonáhle sú súbory načítané. 866 00:44:28,720 --> 00:44:33,780 A to funkcia, ktorá je volaná pri Súbor je načítaný berie ako obvod 867 00:44:33,780 --> 00:44:35,840 Pole zaťažených nárazníky. 868 00:44:35,840 --> 00:44:37,990 Tak, že dôjde k sem. 869 00:44:37,990 --> 00:44:41,180 V podstate, je BufferList bude jedným value-- 870 00:44:41,180 --> 00:44:46,380 alebo to bude rad Dĺžka človek, ktorý má v nej v indexe 871 00:44:46,380 --> 00:44:51,320 nulu celý načítaný súbor MP3. 872 00:44:51,320 --> 00:44:53,320 Takže to, čo mám robiť, keď som dokončiť zaťaženie je, ja proste 873 00:44:53,320 --> 00:44:57,430 vytvorenie zdroja vyrovnávacej pamäte, ktorý je zdroj zvuku vyrovnávacej pamäte uzol. 874 00:44:57,430 --> 00:45:03,410 Ďalším krokom je, že zaťaženie vo source.buffer ako plná načítaného vyrovnávacej pamäte 875 00:45:03,410 --> 00:45:06,740 z BufferList-- je to veľa buffers-- 876 00:45:06,740 --> 00:45:10,255 a potom sa pripojiť, že zvuk vyrovnávacej pamäte na miesto určenia. 877 00:45:10,255 --> 00:45:12,380 Tak čo to bude robiť je jednoducho dať MP3 878 00:45:12,380 --> 00:45:15,260 rovno na výstup, a okamžite sa spustí ho 879 00:45:15,260 --> 00:45:18,010 po získaní tejto hovor. 880 00:45:18,010 --> 00:45:21,660 >> Cool, takže uvidíme, sa to stalo v akcii. 881 00:45:21,660 --> 00:45:24,490 My [nepočuteľný] tu, poďme sa pozrieť. 882 00:45:24,490 --> 00:45:26,430 Takže som jednoducho ísť spustenie základnú server. 883 00:45:26,430 --> 00:45:28,660 To je niečo, čo čo musíte urobiť, ak ste 884 00:45:28,660 --> 00:45:32,490 takže požiadavky na načítanie súborov. 885 00:45:32,490 --> 00:45:34,140 Chystám sa začať základné server. 886 00:45:34,140 --> 00:45:38,200 To je v podstate vaša celá Pset práve teraz v jednej línii, 887 00:45:38,200 --> 00:45:43,930 ale je to práve začína server na porte 80/80. 888 00:45:43,930 --> 00:45:47,300 Tak sme sa ísť sem, my chystá nahrať 80/80, 889 00:45:47,300 --> 00:45:49,110 budeme ísť na svoju obľúbenú pieseň. 890 00:45:49,110 --> 00:45:51,660 Takže keď som hit "hrať svoju obľúbená pieseň "práve teraz, 891 00:45:51,660 --> 00:45:53,964 to bude načítať môj obľúbená pieseň a hrať to-- 892 00:45:53,964 --> 00:45:55,880 [MUSIC - orly, "Život v FAST  LANE "] 893 00:45:55,880 --> 00:46:00,490 --which sa stane byť "Život v rýchlom pruhu "od The Eagles. 894 00:46:00,490 --> 00:46:06,346 Teraz by som mohol zasiahnuť "Stop my obľúbená pieseň "a prehrať ju. 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - orly, "Život v FAST  LANE "] 896 00:46:09,160 --> 00:46:18,340 >> A keď som sa prejsť na utešiť, pretože Použil som globálne premenné sem 897 00:46:18,340 --> 00:46:23,390 sledovať tejto hodnoty, je v skutočnosti Teraz bude uznaná v konzole. 898 00:46:23,390 --> 00:46:25,160 Takže to auto-vytvára pre mňa. 899 00:46:25,160 --> 00:46:29,991 Tak to je to, čo sa hrá práve teraz, a ja si proste zavolať 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, viete čo? 903 00:46:35,860 --> 00:46:39,760 Len tak vy ste počuli song-- môžete spoznať túto pieseň. 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - Rick Astley, "nikdy dať  SI HORE"] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - orly, "Život v FAST  LANE "] 907 00:46:44,215 --> 00:46:46,195 Teraz sme všetci Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, skvele, pohybujúce sa na. 909 00:46:50,155 --> 00:46:51,160 Super. 910 00:46:51,160 --> 00:46:54,554 Takže to je v podstate príklad ako by ste mohli nahrať MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - orly, "Život v FAST  LANE "] 912 00:46:56,470 --> 00:46:59,590 --and hrať, a zastaviť a spustiť ho. 913 00:46:59,590 --> 00:47:03,008 Som mohol urobiť oveľa viac [nepočuteľných] 914 00:47:03,008 --> 00:47:07,570 >> Posledný z nich budem robiť, je, Ja vám ukážem, a [nepočuteľných]. 915 00:47:07,570 --> 00:47:18,070 >> [Prehrávanie hudby] 916 00:47:18,070 --> 00:47:21,800 >> Je to ako, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Myslím, že, ak si dobre pamätám, Ja som naraziť na niektoré problémy s .m4a, 918 00:47:26,450 --> 00:47:27,721 ale nie som si istý, o tom. 919 00:47:27,721 --> 00:47:28,470 Myslím si, že mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MUSIC - Rick Astley, "nikdy dať  SI HORE"] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK skvele. 924 00:47:36,500 --> 00:47:37,625 Nemal som povedal, že. 925 00:47:37,625 --> 00:47:40,570 Mimochodom, ahoj. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Takže máme tento otvorený. 928 00:47:45,490 --> 00:47:52,320 Takže teraz všetko, čo urobiť, je, že som v podstate vytvoril základné syntaxe pre vytváranie hudby. 929 00:47:52,320 --> 00:47:57,610 Takže keď to urobím niečo ako, pridajte G4 1. 2., čo to znamená, že, 930 00:47:57,610 --> 00:48:00,950 pridajte klavír poznámku, G4, ktorá je štvrtou G 931 00:48:00,950 --> 00:48:02,680 up na klavír od dna. 932 00:48:02,680 --> 00:48:05,930 Takže to je tak trochu MIDI hovoriť, Takže pre tých, ktorí sú na základe hudby, 933 00:48:05,930 --> 00:48:07,860 je to len MIDI poznámky. 934 00:48:07,860 --> 00:48:10,090 >> Divákov: To je G zo Stredného C, nie? 935 00:48:10,090 --> 00:48:11,840 >> Hugh Zabriskie: Toto je G nad stredom C, to je pravda. 936 00:48:11,840 --> 00:48:12,470 >> Divákov: nad stredom C. 937 00:48:12,470 --> 00:48:13,345 >> Hugh Zabriskie: Jo. 938 00:48:13,345 --> 00:48:14,340 Vlastne áno. 939 00:48:14,340 --> 00:48:16,131 Myslím, že som vlastne urobil to jeden [nepočuteľné], 940 00:48:16,131 --> 00:48:18,860 tak by to mohlo byť oktáva nad to. 941 00:48:18,860 --> 00:48:20,070 Takže poďme sa pozrieť. 942 00:48:20,070 --> 00:48:21,152 Ak som narazila Play-- 943 00:48:21,152 --> 00:48:22,110 [Opakujúce sa PIANO Poznámka] 944 00:48:22,110 --> 00:48:23,200 --we're bude počuť. 945 00:48:23,200 --> 00:48:25,700 Myšlienka je, že to funguje rovnako ako príkazového riadku by, 946 00:48:25,700 --> 00:48:27,510 takže keď som ísť hore a dole na mojej klávesnici, vy 947 00:48:27,510 --> 00:48:31,550 môže ísť späť na predchádzajúcu príkazy, čo je celkom užitočné. 948 00:48:31,550 --> 00:48:35,136 A dole je môj zoznam skladieb, ktoré sú všetky beží na slučke. 949 00:48:35,136 --> 00:48:38,260 >> Divákov: ste za predpokladu, že 88-klávesov na tom, že jo? 950 00:48:38,260 --> 00:48:41,051 >> Hugh Zabriskie: Otázkou bolo, mám za predpokladu, že o 88-kľúč klávesnice, 951 00:48:41,051 --> 00:48:41,990 a áno, som. 952 00:48:41,990 --> 00:48:45,030 To, čo som urobil je, že som v podstate sa 88 vzorkami 953 00:48:45,030 --> 00:48:46,970 klavíra, jeden pre každú poznámku. 954 00:48:46,970 --> 00:48:49,180 A tak zakaždým, keď vám vypočuť poznámku odteraz, 955 00:48:49,180 --> 00:48:57,550 že je v skutočnosti slučka, ktorá vyzerá jako-- je to stále hrá na slučke, 956 00:48:57,550 --> 00:49:00,120 takže pre každú poznámku, je to beží. 957 00:49:00,120 --> 00:49:02,860 Čo sa stane, je, myslím, vytvorenie vyrovnávacej pamäte opäť, 958 00:49:02,860 --> 00:49:06,010 Aj vytvoriť uzol zisku pre nastavenie hlasitosti. 959 00:49:06,010 --> 00:49:08,240 To len naozaj komplikovaný spôsob, ako povedať, že som 960 00:49:08,240 --> 00:49:10,550 uložiť vyrovnávacia pamäť v source.buffer. 961 00:49:10,550 --> 00:49:13,160 Dávam mu zisk, ja pripojte ho k zisku, 962 00:49:13,160 --> 00:49:15,576 zisk je pripojená k výstup, a potom som hrať. 963 00:49:15,576 --> 00:49:20,735 Takže to je druh procesu of pričom v zdroji pufra. 964 00:49:20,735 --> 00:49:24,820 >> Divákov: môžete skutočne vziať suchý zvuk a robiť to mokrý [nepočuteľných]? 965 00:49:24,820 --> 00:49:26,260 >> Hugh Zabriskie: Môžete, jo. 966 00:49:26,260 --> 00:49:29,260 Tam je re-sloveso, je tu oneskorenie, skreslenie. 967 00:49:29,260 --> 00:49:33,260 Môžete v podstate dať čokoľvek medzi v tomto sendviči of-- dobre, 968 00:49:33,260 --> 00:49:37,660 Potrubie je lepšie metafora, ale môžete pridať niečo v tom. 969 00:49:37,660 --> 00:49:38,200 Super. 970 00:49:38,200 --> 00:49:40,280 >> Takže budem dokončiť demo tu, aby vám pocit 971 00:49:40,280 --> 00:49:46,390 toho len obyčajné koľkokrát ste možno spustiť túto funkciu naraz. 972 00:49:46,390 --> 00:49:49,280 Takže budem odstrániť toto. 973 00:49:49,280 --> 00:49:59,110 Chystám sa vytvoriť generátor that-- podstate to, čo je to naozaj does-- 974 00:49:59,110 --> 00:50:04,220 trochu komplikované, ale je to syntax-- bude vytvárať poznámky na behu, 975 00:50:04,220 --> 00:50:06,601 a proste začať hrať je ako vyhodnocuje ich. 976 00:50:06,601 --> 00:50:07,392 [Vložením PIANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Takže môžeme len aby sa trochu hudby tu. 979 00:50:12,817 --> 00:50:13,608 [Vložením PIANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Takže to, čo tento príkaz robí, napríklad, je 982 00:50:41,470 --> 00:50:46,910 to trvá tie tri poznámky k klavír a potom stavia ich na B3. 983 00:50:46,910 --> 00:50:48,660 Táto syntax by mohol robiť trochu väčší zmysel 984 00:50:48,660 --> 00:50:50,590 pre tých, ktorí majú hudba na pozadí tu. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Môžem pridať bubon. 987 00:50:56,551 --> 00:50:57,050 Môžem-- 988 00:50:57,050 --> 00:50:58,048 >> [Vložením NÁSTROJE] 989 00:50:58,048 --> 00:50:59,256 >> --just hrať sa s tým. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Takže môžete make-- 992 00:51:13,474 --> 00:51:14,515 [Vložením NÁSTROJE] 993 00:51:14,515 --> 00:51:15,513 To je trochu viac nepríjemné. 994 00:51:15,513 --> 00:51:16,554 [Vložením NÁSTROJE] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Tak, že náhodne pridá suchý činel na každom 16. nôtu, s 16% 997 00:51:30,981 --> 00:51:31,481 [Nepočuteľný]. 998 00:51:31,481 --> 00:51:32,522 >> [Vložením NÁSTROJE] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Jo, takže ako to works-- je to vždy vo formáte 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Vložením NÁSTROJE] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Jo, tak za štyri štvrťroky, a 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Vložením NÁSTROJE] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Takže v priemere dostanete 60% zobrazenie 16. poznámky. 1008 00:52:33,780 --> 00:52:35,990 >> Tak ako tak, je to len druh na obdiv 1009 00:52:35,990 --> 00:52:39,780 niektoré z vecí, ktoré by mohli stavať s Web Audio API. 1010 00:52:39,780 --> 00:52:43,840 Je to naozaj silný, je to naozaj rýchlo, a môžete urobiť veľa skvelých vecí 1011 00:52:43,840 --> 00:52:44,340 s tým. 1012 00:52:44,340 --> 00:52:51,260 Takže znovu, všetky otázky, ktoré ste, email myself-- Hugh-- alebo Sam, 1013 00:52:51,260 --> 00:52:55,869 a úprimne, Google má tony dobrých zdrojov. 1014 00:52:55,869 --> 00:52:56,660 Nejaká posledné otázky? 1015 00:52:56,660 --> 00:52:57,970 Jo. 1016 00:52:57,970 --> 00:53:00,790 >> Divákov: Takže môžete pristupovať vstavaný mikrofón. 1017 00:53:00,790 --> 00:53:03,089 Čo keby ste chceli použiť lepší mikrofón? 1018 00:53:03,089 --> 00:53:05,380 Hugh Zabriskie: Ak by ste chceli používať lepší mikrofón? 1019 00:53:05,380 --> 00:53:11,320 Takže znova, toto je súčasťou abstrakcie medzi Chrome 1020 00:53:11,320 --> 00:53:12,950 a zvyšok vášho počítača. 1021 00:53:12,950 --> 00:53:18,950 Ak to nie je k dispozícii prostredníctvom API, rovnako ako Web MIDI rozhranie API, 1022 00:53:18,950 --> 00:53:22,030 by pravdepodobne mohlo nájsť nejaké hacky, ale všeobecne nie ako realizovateľné. 1023 00:53:22,030 --> 00:53:25,300 >> SAM ZELENÁ: Môžete also-- všetky Chrome vie 1024 00:53:25,300 --> 00:53:28,820 je to, čo vaše predvolené mikrofón je, a to, že pristupuje. 1025 00:53:28,820 --> 00:53:33,410 Takže ak ste mali mikrofón by ste mohli nastaviť ako predvolený mikrofón počítača, 1026 00:53:33,410 --> 00:53:35,990 ste mohli pristupovať týmto spôsobom a bolo by to pravdepodobne fungovať. 1027 00:53:35,990 --> 00:53:37,490 Hugh Zabriskie: To je dobrý postreh. 1028 00:53:37,490 --> 00:53:39,656 Nikdy som sa snažil, ale by ste mali byť schopní druhu 1029 00:53:39,656 --> 00:53:45,700 of-- ak presmerovať vstupné reproduktor, by ste mali byť schopní to urobiť, jo. 1030 00:53:45,700 --> 00:53:48,360 >> Nejaká posledné otázky? 1031 00:53:48,360 --> 00:53:49,340 Super. 1032 00:53:49,340 --> 00:53:51,680 No ďakujem chlapci toľko za sledovanie. 1033 00:53:51,680 --> 00:53:52,199 Som Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM ZELENÁ: Ja som Sam. 1035 00:53:52,990 --> 00:53:55,410 Hugh Zabriskie: A toto je CS50. 1036 00:53:55,410 --> 00:53:56,767