1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM ZELENÁ: Ahoj, všichni. 3 00:00:07,170 --> 00:00:08,640 Vítejte na našem semináři. 4 00:00:08,640 --> 00:00:10,009 Jmenuji se Sam. 5 00:00:10,009 --> 00:00:11,050 Hugh Zabriskie: Jsem Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM ZELENÁ: A budeme dnes mluvit o JavaScript a Web Audio API. 7 00:00:17,420 --> 00:00:21,180 Stačí vyrazit, to je nástin našeho pořadu jednání semináře. 8 00:00:21,180 --> 00:00:25,350 Chystáme se začít tím, že mluví o proč byste měli mít zájem na webu 9 00:00:25,350 --> 00:00:30,130 Audio API, proč je to JavaScript jazyk, co potřebujete pro to, 10 00:00:30,130 --> 00:00:32,619 a pak mluvit o JavaScriptu essentials-- tak podobně, 11 00:00:32,619 --> 00:00:34,800 vás provede některé základy jazyka, 12 00:00:34,800 --> 00:00:37,290 a pak mluvit o audio API na vysoké úrovni. 13 00:00:37,290 --> 00:00:41,140 Poté, Hugh bude hovořit o některých z fází výrobě zvuku 14 00:00:41,140 --> 00:00:45,509 a pak demo tuto strašlivou třídič Projekt postavil a ukázat vám kód. 15 00:00:45,509 --> 00:00:48,050 A pak, budeme mít čas na dotazy na konci pro lidi 16 00:00:48,050 --> 00:00:49,593 kteří zde ž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 Budu zálohovat. 21 00:00:52,170 --> 00:00:54,960 >> SAM ZELENÁ: Takže popořadě. 22 00:00:54,960 --> 00:00:57,840 Takže jeden z velkých věcí, o webové Audio API 23 00:00:57,840 --> 00:01:00,480 je to, že tam je vyžadován žádný set up. 24 00:01:00,480 --> 00:01:04,230 Je dodáván vestavěný do Většina moderních prohlížečů, 25 00:01:04,230 --> 00:01:08,630 včetně Chrome, EDGE, celek banda others-- všech těch, 26 00:01:08,630 --> 00:01:12,650 že velké části lidé používají dnes. 27 00:01:12,650 --> 00:01:14,807 Takže není nastaven, Kromě jen dostat 28 00:01:14,807 --> 00:01:16,890 webový server v chodu, pro vás, abyste mohli začít pracovat 29 00:01:16,890 --> 00:01:18,420 na vašem projektu, což je skvělé. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Doporučujeme pěkný silně, že se domníváte, 32 00:01:24,190 --> 00:01:26,530 Chrome pro použití Vývoj JavaScript web, 33 00:01:26,530 --> 00:01:30,260 jen proto, že jeho vývojáře Nástroje jsou opravdu silné. 34 00:01:30,260 --> 00:01:33,220 Jako příklad jen to, co máme na mysli tím, že říká otevřít svůj JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- pokud jdete do Chromu a se podíváte na jakékoli webové stránky, 36 00:01:38,600 --> 00:01:43,897 a vy klikněte levým tlačítkem Zkontrolujte prvek, a poté 37 00:01:43,897 --> 00:01:46,730 jdete na této malé rozevíracího tady a kliknete na konzole, 38 00:01:46,730 --> 00:01:50,660 uvidíte, co otevírá vypadá hodně jako příkazového řádku, který vám 39 00:01:50,660 --> 00:01:53,720 mohli vidět na vašem počítači Mac, nebo na ID. 40 00:01:53,720 --> 00:01:59,260 A stejně jako to, že můžeme Typ příkazy zde, stejně jako Clear, 41 00:01:59,260 --> 00:02:01,350 a další příkazy podobně. 42 00:02:01,350 --> 00:02:04,267 Můžeme vytvořit proměnné, as uvidíme později v JavaScriptu. 43 00:02:04,267 --> 00:02:07,100 A tak něco, co můžeme dělat v JavaScript, můžeme dělat s konzolou, 44 00:02:07,100 --> 00:02:11,430 a to je super šikovný způsob, jak začít hrát si s API 45 00:02:11,430 --> 00:02:15,760 a se pohodlně JavaScript hned bat. 46 00:02:15,760 --> 00:02:18,290 Nevyžaduje set up, což je opravdu pěkné. 47 00:02:18,290 --> 00:02:18,790 Bezva. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Skvělý. 50 00:02:22,880 --> 00:02:24,780 >> Takže jen jedna věc přidat. 51 00:02:24,780 --> 00:02:27,780 Máte-li některý questions-- existují mnozí z vás, kteří nejsou tady žít, 52 00:02:27,780 --> 00:02:31,232 neváhejte a napište us-- tyto jsou naše e-mailové adresy. 53 00:02:31,232 --> 00:02:33,190 Máte-li dotazy Nechcete se nás zeptat, 54 00:02:33,190 --> 00:02:36,160 jako, oh jsem chybu v mém kódu, nebo něco 55 00:02:36,160 --> 00:02:39,270 to je trochu konkrétnější, Možná, že jako první na Googlu ji. 56 00:02:39,270 --> 00:02:42,340 Existuje spousta skvělých zdrojů o webové audio API venku. 57 00:02:42,340 --> 00:02:44,089 Je to opravdu dobře dokumentovány a je to být 58 00:02:44,089 --> 00:02:47,194 používán tunu lidí v průmysl, a lidé, kteří jsou právě 59 00:02:47,194 --> 00:02:48,610 stavební zábavné věci pro sebe. 60 00:02:48,610 --> 00:02:51,306 Takže tam by měla být hodně zdrojů tam venku. 61 00:02:51,306 --> 00:02:53,040 Skvělý. 62 00:02:53,040 --> 00:02:56,100 >> Cool, tak proč Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Toto schéma je trochu z vývoje na cestě 64 00:02:59,840 --> 00:03:04,100 zvuk na webu vzrostla v průběhu času. 65 00:03:04,100 --> 00:03:13,080 Bgsound byl jako původní HTML tagu že Internet Explorer použita na podporu. 66 00:03:13,080 --> 00:03:16,790 Je povoleno pouze pro docela základní zvuky, funkčnost nebyl velmi robustní, 67 00:03:16,790 --> 00:03:19,380 a vy jste nemohli dělat komplikovaný sekvenování, 68 00:03:19,380 --> 00:03:21,890 nebo určit, kdy zvuk začal a zastavil velmi robustně. 69 00:03:21,890 --> 00:03:23,930 Takže to nebyl nijak zvlášť dobře vyvinuté. 70 00:03:23,930 --> 00:03:27,470 Pak po tom, Flash přišel along--, které, 71 00:03:27,470 --> 00:03:31,712 Jsem si jistý, že vy jste všichni obeznámeni s Flash-- možná ne, jak to funguje, 72 00:03:31,712 --> 00:03:32,920 ale vy jste určitě viděli. 73 00:03:32,920 --> 00:03:35,586 Musíš aktualizovat svůj Flash Plug-in, všechny takové věci, 74 00:03:35,586 --> 00:03:40,110 a to jistě rozšířila funkčnosti, která byla k dispozici. 75 00:03:40,110 --> 00:03:45,370 Ale aby uživatel nainstalovat plug-in je určitě 76 00:03:45,370 --> 00:03:48,480 Nevýhodou, včetně Flash v aplikaci, je to tak? 77 00:03:48,480 --> 00:03:52,410 Vzhledem k tomu, pak jste závislí na Uživatel jít a najít tento plug-in, 78 00:03:52,410 --> 00:03:54,660 a pravděpodobně se otočil off tímto krokem navíc 79 00:03:54,660 --> 00:03:56,640 mají brát použít vaši aplikaci. 80 00:03:56,640 --> 00:04:01,270 A pak tam mohl být aktualizace že zlomí celou vaši žádost, 81 00:04:01,270 --> 00:04:03,880 a nakonec je to noční můra pro vývojáře, taky. 82 00:04:03,880 --> 00:04:06,230 Takže to byla barikáda. 83 00:04:06,230 --> 00:04:10,480 >> A pak po které přišel, audio tag HTML, který 84 00:04:10,480 --> 00:04:16,579 je funkce, která modernějším HTML-- jistě počítal s mnohem více věcí, 85 00:04:16,579 --> 00:04:20,050 ale i věci, které byste mohli udělat tam byla trochu omezena jen 86 00:04:20,050 --> 00:04:22,730 v důsledku věcí že HTML byl schopen. 87 00:04:22,730 --> 00:04:26,060 Takže když JavaScript API, Web Audio API, 88 00:04:26,060 --> 00:04:29,290 stal standardem praxe v různých prohlížečích, 89 00:04:29,290 --> 00:04:32,490 že skutečně rozšířila sadu příležitostí pro vývojáře 90 00:04:32,490 --> 00:04:36,590 opravdu dostat do budovy cool věci pro web. 91 00:04:36,590 --> 00:04:39,220 Po dlouhou dobu se měl bylo opravdu robustní nástroje 92 00:04:39,220 --> 00:04:44,360 pro rodilé audio aplikace, jako-- každý ví GarageBand, 93 00:04:44,360 --> 00:04:48,360 a pak samozřejmě existuje více profesionální audio míchání aplikací, 94 00:04:48,360 --> 00:04:49,640 a takové věci. 95 00:04:49,640 --> 00:04:52,690 Ale tam nebyl opravdu dobré Cloud-- ne 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 který by umožnil vývojářům vytvářet aplikace pro lidi 98 00:04:58,310 --> 00:05:00,570 dělat audio míchání. 99 00:05:00,570 --> 00:05:03,960 A když vám ukáže, později, Web Audio API 100 00:05:03,960 --> 00:05:07,470 umožňuje opravdu silný věci se stane opravdu jednoduše, 101 00:05:07,470 --> 00:05:09,597 což je docela v pohodě. 102 00:05:09,597 --> 00:05:12,680 Tak to je pokyn, proč jste by měl sledovat zbytek semináře, 103 00:05:12,680 --> 00:05:14,350 v podstatě. 104 00:05:14,350 --> 00:05:17,880 >> A teď, budu mluvit o Některé JavaScript-- jen základní prvky 105 00:05:17,880 --> 00:05:20,240 jazyka, takže můžeme být na stejné stránce 106 00:05:20,240 --> 00:05:22,470 když hovoříme o API o něco později. 107 00:05:22,470 --> 00:05:23,260 Bezva. 108 00:05:23,260 --> 00:05:26,192 >> Takže, to je shrnutí. 109 00:05:26,192 --> 00:05:27,150 Zapomněl jsem, že to tu. 110 00:05:27,150 --> 00:05:27,510 To jo. 111 00:05:27,510 --> 00:05:27,870 >> Hugh Zabriskie: Je tu dvě skluzavky zde. 112 00:05:27,870 --> 00:05:30,245 >> SAM ZELENÁ: Jedná se o souhrn některých omezení 113 00:05:30,245 --> 00:05:35,220 z dalších závazných, staré metody. 114 00:05:35,220 --> 00:05:37,828 A pak nyní, máme tyto věci. 115 00:05:37,828 --> 00:05:40,011 Bezva. 116 00:05:40,011 --> 00:05:40,510 Skvělý. 117 00:05:40,510 --> 00:05:43,200 >> Takže, náležitosti JavaScript. 118 00:05:43,200 --> 00:05:47,230 První věcí, první, je tu docela významný rozdíl 119 00:05:47,230 --> 00:05:49,940 v JavaScript proti v jazyk C, ve způsobu, jakým 120 00:05:49,940 --> 00:05:52,050 že proměnné jsou vytvořeny. 121 00:05:52,050 --> 00:05:55,634 Tak v C, jsme zvyklí mít zadejte své proměnné, že jo? 122 00:05:55,634 --> 00:05:57,800 A nemám na mysli typ, jako je zadejte je, mám na mysli typ 123 00:05:57,800 --> 00:06:01,900 jako přiřadit jim význam type-- jako, int, float, char. 124 00:06:01,900 --> 00:06:05,210 V jazyce C, jsme byli opravdu použity k nutnosti vytvořit proměnnou 125 00:06:05,210 --> 00:06:09,690 a pak držet se, že typu pro Celý čas, který budeme používat této proměnné. 126 00:06:09,690 --> 00:06:13,990 A to nemusí být nutně horší, ale je to asi těžší k použití. 127 00:06:13,990 --> 00:06:16,190 Jedním ze skvělých vlastností of JavaScript je 128 00:06:16,190 --> 00:06:19,740 že proměnné jsou, co se nazývá "dynamicky napsaný," který 129 00:06:19,740 --> 00:06:22,500 Znamená to, že můžu vytvořit proměnná s touto syntaxí, 130 00:06:22,500 --> 00:06:25,800 varX se rovná 5, např. 131 00:06:25,800 --> 00:06:27,790 To původně vytváří celé číslo proměnná-- 132 00:06:27,790 --> 00:06:29,870 přímo pod kapuce somewhere-- ale já 133 00:06:29,870 --> 00:06:33,040 může změnit, že proměnné odkazovat na řetězec 134 00:06:33,040 --> 00:06:35,820 aniž by dělali něco jako vytvoření nové proměnné. 135 00:06:35,820 --> 00:06:37,880 Nepotřebuji se obávat o typu střídání. 136 00:06:37,880 --> 00:06:45,440 JavaScript ví, že typ je změnily, a to stane dynamicky. 137 00:06:45,440 --> 00:06:48,510 >> Takže, existují výhody a nevýhody, které, 138 00:06:48,510 --> 00:06:51,250 jako každý, kdo pracoval v JavaScript na chvíli mohli znát. 139 00:06:51,250 --> 00:06:53,600 Jsou chvíle, kdy byste mohli omylem 140 00:06:53,600 --> 00:06:57,720 změnit typ proměnné a nezpracovává tento typ výměnu, 141 00:06:57,720 --> 00:07:01,120 a pak se vaše JavaScript může crash-- nebo výjimku 142 00:07:01,120 --> 00:07:06,070 být hozen, protože budete mít špatný typ, pokud očekáváte, jeden druh. 143 00:07:06,070 --> 00:07:07,040 Bezva. 144 00:07:07,040 --> 00:07:11,470 >> Takže, scoping-- který je jako, kdybychom pamatovat prvních týdnech v kurzu, 145 00:07:11,470 --> 00:07:15,420 odkazuje se na jak viditelné proměnné je av jakém části kódu. 146 00:07:15,420 --> 00:07:18,400 To vše vypadá velmi podobně se, jak to vypadá v C. 147 00:07:18,400 --> 00:07:24,755 Takže proměnné jsou obecně scoped uvnitř složených závorek uvnitř funkce, 148 00:07:24,755 --> 00:07:27,005 a pak tam jsou také globálně rozsahem proměnných, které 149 00:07:27,005 --> 00:07:29,171 are-- pokud napíšete proměnnou mimo funkci, 150 00:07:29,171 --> 00:07:31,790 to bude viditelné v celém textu. 151 00:07:31,790 --> 00:07:35,840 >> Jeden rozdíl mezi JavaScript, a C a zejména 152 00:07:35,840 --> 00:07:40,280 je, že pokud jste deklarovat globální proměnná kdekoli v textovém souboru 153 00:07:40,280 --> 00:07:43,324 je to vidět v jakékoliv funkce v tomto textovém souboru. 154 00:07:43,324 --> 00:07:44,240 To je správné, ž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 také trochu bit funky ve srovnání s C, 157 00:07:49,120 --> 00:07:52,660 kde jsme vždy měli mít náš Variabilní definice nad místech 158 00:07:52,660 --> 00:07:53,770 oni byli používáni. 159 00:07:53,770 --> 00:07:57,957 To není pravidlem, že je vynuceno už, tak trochu jiná. 160 00:07:57,957 --> 00:08:00,540 A opět jen proto, aby je třeba zdůraznit, Globální vs. místní variables-- 161 00:08:00,540 --> 00:08:03,457 velmi podobný C. Ty by mohly mít dvě proměnné se stejným názvem, 162 00:08:03,457 --> 00:08:06,540 a mají jednu z jejich jména tmavší místní proměnné, jestliže jeden z nich 163 00:08:06,540 --> 00:08:07,546 byl globální. 164 00:08:07,546 --> 00:08:09,420 Tak, podobný druh Problémy, které někteří z vás 165 00:08:09,420 --> 00:08:11,920 mohou narazit na některá Vašeho problému nastaví tak daleko. 166 00:08:11,920 --> 00:08:14,450 Cool, tak to je proměnné. 167 00:08:14,450 --> 00:08:20,310 >> Flow Control, což znamená, stejně jako, pokud-else-- logické stuff-- a smyčky. 168 00:08:20,310 --> 00:08:24,510 Takže začít s, to je to, co if-else Prohlášení vypadat v JavaScriptu. 169 00:08:24,510 --> 00:08:29,750 Umístění různých věcí, na tratích není důležité. 170 00:08:29,750 --> 00:08:34,409 To je jen jeden z úmluv za to, jak jsme se struktury kódu. 171 00:08:34,409 --> 00:08:38,634 Stejně jako v C, máme "pokud" prohlášení závorka. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 To není to, co bych chtěl dělat. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Udělal jsem to znova. 176 00:08:45,550 --> 00:08:46,841 >> Hugh Zabriskie: Snažím se ukončit? 177 00:08:46,841 --> 00:08:49,770 SAM ZELENÁ: Ne, já jsem Jen se snažím přiblížit. 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 "kdyby" a prohlášení máme podmínku uvnitř je 181 00:08:59,370 --> 00:09:03,130 že se vyhodnotí jako true nebo false, a to určuje, zda 182 00:09:03,130 --> 00:09:04,510 jsme se vstoupit, že blok kódu. 183 00:09:04,510 --> 00:09:09,860 A podobně, máme-li jinak-a else, stejně jako jsme zvyklí v C. 184 00:09:09,860 --> 00:09:14,010 >> Také byste měli být velmi pohodlná hned bat se smyčkami, 185 00:09:14,010 --> 00:09:16,440 protože se také podívat hodně jako C vypadá. 186 00:09:16,440 --> 00:09:19,600 Ale všimněte si, že jsme znovu mají místo int initializations, 187 00:09:19,600 --> 00:09:22,570 máme var inicializace. 188 00:09:22,570 --> 00:09:24,650 A myslím, že máš dávat pozor, aby se 189 00:09:24,650 --> 00:09:28,460 jisti, že nechcete změnit hodnotu I z int na řetězec, 190 00:09:28,460 --> 00:09:31,780 například proto, že to bude způsobit podivné chování, které možná ne 191 00:09:31,780 --> 00:09:32,280 očekávat. 192 00:09:32,280 --> 00:09:35,750 Ale to by mělo vypadat docela známé, stejně. 193 00:09:35,750 --> 00:09:39,460 >> Takže tohle je místo, kde se věci začnou z toho trochu blázen v JavaScriptu 194 00:09:39,460 --> 00:09:44,920 pro někoho, kdo se chystá od A Dosavadní stav C. U některých funkcí 195 00:09:44,920 --> 00:09:48,070 v JavaScriptu, a tam je jeden způsob, deklarovat funkci, která vypadá 196 00:09:48,070 --> 00:09:50,361 druh podobná C, a pak je tu ještě jeden, který 197 00:09:50,361 --> 00:09:52,450 vypadá trochu jinak. 198 00:09:52,450 --> 00:09:54,930 >> První verze, které můžeme vidět tady, 199 00:09:54,930 --> 00:09:59,260 je druh C-like, kde říkáme, je to funkce, 200 00:09:59,260 --> 00:10:01,490 dát mu jméno, dej počet argumentů, 201 00:10:01,490 --> 00:10:05,150 A pak se obsah funkce dovnitř těchto složených závorek. 202 00:10:05,150 --> 00:10:08,850 Uvidíme příklad argumenty jen sekundu. 203 00:10:08,850 --> 00:10:13,420 >> Vzhledem k tomu, na dalším řádku, vidíme, oh, tady je proměnná s názvem "myFunction," 204 00:10:13,420 --> 00:10:17,546 a my to rovna této obecný thing-- function-- že 205 00:10:17,546 --> 00:10:19,170 Nezdá se, že mít něco děje. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Důvod, proč to je něco jiného než C je, že JavaScript 208 00:10:26,080 --> 00:10:30,040 je to, co se nazývá funkční jazyk, nebo má funkční prvky, což znamená, že 209 00:10:30,040 --> 00:10:33,510 že funkce jsou ve skutečnosti hodnoty. 210 00:10:33,510 --> 00:10:39,520 A to znamená, že můžeme nastavit proměnná, aby se rovnala funkce 211 00:10:39,520 --> 00:10:43,210 a přesuňte tuto funkci kolem, předat jako argument, 212 00:10:43,210 --> 00:10:46,550 dělat všechny druhy věcí takhle s funkcemi. 213 00:10:46,550 --> 00:10:49,682 >> Ještě jedna věc k note-- funkce jsou zapsány 214 00:10:49,682 --> 00:10:51,140 s určitým počtem argumentů. 215 00:10:51,140 --> 00:10:54,056 Uvidíme příklad funkce s argumentem na další snímek. 216 00:10:54,056 --> 00:10:56,720 Ale JavaScript nebude křičet na vás, pokud se pokusíte 217 00:10:56,720 --> 00:10:59,330 použít funkci s nesprávný počet argumentů. 218 00:10:59,330 --> 00:11:05,310 Bude to jen co je v jejích silách, aby se ano, což znamená, že pokud jste projít, 219 00:11:05,310 --> 00:11:09,410 volání funkce, která očekává Argument s žádný argument, že všechny 220 00:11:09,410 --> 00:11:13,990 se stane, je, že to co nejlépe aby se pokusila spustit tento kód, 221 00:11:13,990 --> 00:11:16,541 a je-li to nakonec vede do výjimky nebo chyby, 222 00:11:16,541 --> 00:11:19,790 to bude hodit tuto výjimku a jen držet going-- což je jen jedním ze způsobů, 223 00:11:19,790 --> 00:11:21,070 že JavaScript funguje. 224 00:11:21,070 --> 00:11:21,781 To jo. 225 00:11:21,781 --> 00:11:24,207 >> Diváků: Co se stane v případě, je tu příliš mnoho argumentů? 226 00:11:24,207 --> 00:11:26,040 SAM ZELENÁ: Takže Otázkou bylo, co se stane, 227 00:11:26,040 --> 00:11:27,380 pokud existuje příliš mnoho argumentů? 228 00:11:27,380 --> 00:11:29,171 A odpověď je, že JavaScript bude jen 229 00:11:29,171 --> 00:11:32,120 ignorovat ty, které jsou po ty to očekává. 230 00:11:32,120 --> 00:11:36,420 Bude pokusu o spuštění funkce říkají, jako kdyby to byl jen první dva. 231 00:11:36,420 --> 00:11:37,075 Právo? 232 00:11:37,075 --> 00:11:37,700 >> Hugh Zabriskie: To je pravda, jo. 233 00:11:37,700 --> 00:11:39,449 Podobně, v případě, že jsou příliš málo argumentů, 234 00:11:39,449 --> 00:11:42,640 to prostě druh dává null všem Argumenty, že nemá žádné hodnoty 235 00:11:42,640 --> 00:11:43,660 pro. 236 00:11:43,660 --> 00:11:45,810 >> SAM ZELENÁ: který může ve skutečnosti být užitečné, pokud jste 237 00:11:45,810 --> 00:11:49,060 Chcete napsat funkci, která trvá proměnný počet argumentů. 238 00:11:49,060 --> 00:11:55,830 Můžete nastavit výchozí hodnoty definice funkce, 239 00:11:55,830 --> 00:11:59,060 a to může ignorovat skutečnost že vstupní tam není. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Tak jsem chtěl mluvit trochu Více informací o této poslední kulkou 242 00:12:04,000 --> 00:12:05,541 bod, což je funkce jsou hodnoty. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Toto je příklad, který je trochu ohromující 245 00:12:11,010 --> 00:12:14,880 pokud jste četli, a nemyslím, že o tom, co se děje na vteřinu. 246 00:12:14,880 --> 00:12:17,910 Takže, pojďme se podívat právě v první řádek sem. 247 00:12:17,910 --> 00:12:24,360 Máme této proměnné, f1, že říkáme je funkce, která dělá tuto věc. 248 00:12:24,360 --> 00:12:28,535 A obsah funkce jsou console.log ("ahoj"). 249 00:12:28,535 --> 00:12:32,220 Můžete si myslet console.log jako při JavaScript ekvivalent printf. 250 00:12:32,220 --> 00:12:35,510 Takže to, co se stane, je, pokud budeme Tento kód spustit v naší prohlížeči, 251 00:12:35,510 --> 00:12:37,530 to bude vytisknout řetězec. 252 00:12:37,530 --> 00:12:39,342 Mohu prokázat, že. 253 00:12:39,342 --> 00:12:42,300 Publikum: Do protokolu, i když, to dělá znamenat, že to nahrává někam? 254 00:12:42,300 --> 00:12:42,550 SAM ZELENÁ: Jo. 255 00:12:42,550 --> 00:12:44,216 Takže já ti ukážu, co se bude dít. 256 00:12:44,216 --> 00:12:48,085 Takže otázka byla, co log znamená? 257 00:12:48,085 --> 00:12:51,262 >> Hugh Zabriskie: Takže console.log je jako printf pro C. 258 00:12:51,262 --> 00:12:52,970 SAM ZELENÁ: Takže console.log je jako printf, 259 00:12:52,970 --> 00:12:59,240 takže když mám tuto console.log ("ahoj"), a já říkám, že řetězec "ahoj" 260 00:12:59,240 --> 00:13:00,730 se vytiskne se do konzoly. 261 00:13:00,730 --> 00:13:03,340 To je konzole. 262 00:13:03,340 --> 00:13:05,930 Je to stejné jako printf, kde vytiskne na standardní výstup. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 A uvidíme za minutu, ale toto je ve skutečnosti 265 00:13:11,230 --> 00:13:16,529 s odkazem na objekt konzoly, a volání metody na tento objekt. 266 00:13:16,529 --> 00:13:18,320 To bude větší smysl za minutu, kdy jsme 267 00:13:18,320 --> 00:13:20,660 dostat se mluví o objekty v JavaScriptu, 268 00:13:20,660 --> 00:13:22,509 ale myslel jsem, že bych jen zmínit, že. 269 00:13:22,509 --> 00:13:24,300 Hugh Zabriskie: Jsme používá v C, right-- 270 00:13:24,300 --> 00:13:27,580 obvykle napsat velký program, v hlavní nic dělat. 271 00:13:27,580 --> 00:13:30,700 Ale to, co je v pohodě v JavaScriptu je budete tento druh tlumočníka, který 272 00:13:30,700 --> 00:13:33,620 probíhá v reálném čase, takže je trvá jen řádek po řádku, 273 00:13:33,620 --> 00:13:35,320 to může jen interpretovat, že na místě. 274 00:13:35,320 --> 00:13:37,403 A to udržuje věci, které proběhne před, 275 00:13:37,403 --> 00:13:41,620 takže je to docela užitečný nástroj pro použijte console.log, nebo konzoly, 276 00:13:41,620 --> 00:13:46,870 Obecně platí, že jen za hraní kolem JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM ZELENÁ: Takže návrat k tomu example-- druhý řádek kódu 278 00:13:51,420 --> 00:13:55,320 Zde je docela šokující v mé hlavě. 279 00:13:55,320 --> 00:13:59,790 Když jsem poprvé četl to, Bylo to jako, co se děje? 280 00:13:59,790 --> 00:14:04,580 Takže to, co se děje, je to deklarace funkce říká, 281 00:14:04,580 --> 00:14:10,170 Mám funkce nazvaná f2 že je čeká jeden argument, f, 282 00:14:10,170 --> 00:14:12,990 a pak to volá, že funkce, f, který 283 00:14:12,990 --> 00:14:17,652 byl předán k němu jako argument bez argumentů sám. 284 00:14:17,652 --> 00:14:19,110 Tak, to by mohlo být matoucí. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Pokud chápeme to jako f2 bere f1 jako argumentu, a potom uvnitř f2, 287 00:14:28,400 --> 00:14:31,190 f dostane called--, což znamená, že tento řádek kódu, 288 00:14:31,190 --> 00:14:34,192 po těchto dvou řádků kód, výsledky v "ahoj" 289 00:14:34,192 --> 00:14:35,400 tištěn na konzoli. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Skutečnost, že jsme se projít Funkce kolem jako hodnoty 292 00:14:44,910 --> 00:14:47,870 nakonec je jedním z nejvíce výkonné funkce v JavaScriptu 293 00:14:47,870 --> 00:14:49,700 jako programovací jazyk. 294 00:14:49,700 --> 00:14:52,782 Mimo všechny úžasné věci, to může udělat, 295 00:14:52,782 --> 00:14:54,990 stejně jako funkce z jazyk z hlediska způsobu, jakým 296 00:14:54,990 --> 00:14:58,400 že dělá věci snadné programovat a umožňuje 297 00:14:58,400 --> 00:15:01,060 pro věci, které nejsou zvlášť hodí na web, 298 00:15:01,060 --> 00:15:04,500 funkcionální programování a funkční programování aspekty JavaScriptu 299 00:15:04,500 --> 00:15:07,130 je jedním z nejvíce silné pojmy, které 300 00:15:07,130 --> 00:15:11,030 existuje v JavaScript-- pokud se mě ptáte. 301 00:15:11,030 --> 00:15:11,960 Bezva. 302 00:15:11,960 --> 00:15:13,534 >> Takže, další věc. 303 00:15:13,534 --> 00:15:16,450 Kromě toho, že je funkční, tam jsou také prvky JavaScriptu 304 00:15:16,450 --> 00:15:20,510 které jsou objektově orientovaný, což je jedním z velmi 305 00:15:20,510 --> 00:15:23,800 populární slůvky v informatice. 306 00:15:23,800 --> 00:15:27,040 Objektově-orientovaného programování je velmi populární věc. 307 00:15:27,040 --> 00:15:34,210 JavaScript má verzi, která, kde věřím, že každá hodnota je také 308 00:15:34,210 --> 00:15:41,475 objekt, což znamená, že každý objekt zábaly dohromady určitý počet hodnot. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Takže pro hodnoty, které jsou jednoduché, jako je celé číslo, jako je varX se rovná 5, 311 00:15:49,750 --> 00:15:52,250 že objekt ještě zabalí tuto jednu hodnotu. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Ale můžeme si také představit situaci, where-- můžeme myslet situace v C 314 00:15:59,036 --> 00:16:00,910 kde jsme chtěli dělat něco s structs, 315 00:16:00,910 --> 00:16:03,285 například, že zábaly několik Hodnoty dohromady a značky 316 00:16:03,285 --> 00:16:05,870 je to opravdu snadné projít věci kolem. 317 00:16:05,870 --> 00:16:09,270 To je, když je objekt v JavaScriptu. 318 00:16:09,270 --> 00:16:12,340 >> Je důležité si uvědomit, když řeknu, že předměty zabalené 319 00:16:12,340 --> 00:16:15,330 některé počet hodnot společně, že funkce jsou také 320 00:16:15,330 --> 00:16:21,506 hodnoty, což znamená, že funkce je být také uvnitř objektu JavaScriptu. 321 00:16:21,506 --> 00:16:26,910 A důvod, proč to je důležité, je to, že, vzhledem k tomu, často 322 00:16:26,910 --> 00:16:30,290 myslet na volání metody na objektu, který je 323 00:16:30,290 --> 00:16:35,200 populární termínu od ostatní populární objektově orientované jazyky, 324 00:16:35,200 --> 00:16:39,330 jeden z rozdílů je to, že všechno, že metoda je v JavaScriptu 325 00:16:39,330 --> 00:16:47,270 je-li hodnota uložena uvnitř objektu že provádí některé action-- možná 326 00:16:47,270 --> 00:16:51,850 pomocí další hodnoty, které jsou uvnitř z tohoto objektu, ale ne nezbytně. 327 00:16:51,850 --> 00:16:56,930 Takže si dovedete představit situaci, já Asi v trochu bláznivé cesty, 328 00:16:56,930 --> 00:17:02,990 kde jste volali metodu jednoho objekt na jiný objekt, například. 329 00:17:02,990 --> 00:17:06,010 Takže, je to trochu funky tímto způsobem. 330 00:17:06,010 --> 00:17:09,369 >> A můžete také změnit metody které jsou spojeny s objektem 331 00:17:09,369 --> 00:17:13,740 přiřazením této metody A nová funkce, která je rovněž 332 00:17:13,740 --> 00:17:18,250 docela odlišný od jiných objektově orientované jazyky, kde 333 00:17:18,250 --> 00:17:21,410 jakmile budeme deklarovat objekt a instanci ji, 334 00:17:21,410 --> 00:17:25,839 nemůžeme změnit metody, které jsou spojené s tímto objektem ještě. 335 00:17:25,839 --> 00:17:28,680 Tak to je docela jiná. 336 00:17:28,680 --> 00:17:29,570 Bezva. 337 00:17:29,570 --> 00:17:34,010 >> Takže tady je příklad, jako první, objektu v akci. 338 00:17:34,010 --> 00:17:36,390 To je to, co se nazývá obecný objekt, který 339 00:17:36,390 --> 00:17:39,460 znamená, že nemá žádné zejména název, nemá třídu, 340 00:17:39,460 --> 00:17:42,190 je to jen nějaký obal hodnot. 341 00:17:42,190 --> 00:17:49,790 A jak to vypadá, je, my máme tato vnější dvojice složených závorek zde 342 00:17:49,790 --> 00:17:57,950 které ukazují na JavaScriptu a říkají, to je objekt. 343 00:17:57,950 --> 00:18:02,130 Hodnoty uvnitř něj jsou každý hodnoty uvnitř 344 00:18:02,130 --> 00:18:04,590 objektu, který by měl být zabaleny dohromady. 345 00:18:04,590 --> 00:18:09,180 A vnitřní části tohoto objektu, Pak jsme se dvojice klíčů hodnota, 346 00:18:09,180 --> 00:18:13,880 kde klíč odkazuje na název hodnoty uvnitř objektu, 347 00:18:13,880 --> 00:18:16,790 a druhý side-- naproti tlustého střeva here-- 348 00:18:16,790 --> 00:18:19,850 je skutečná hodnota že by měly být skladovány. 349 00:18:19,850 --> 00:18:26,210 >> Takže vidíte, že tady máme klíč s názvem fn s hodnotou sam, 350 00:18:26,210 --> 00:18:29,430 následované čárkou, říká na další položku. 351 00:18:29,430 --> 00:18:33,560 Pak se klíč nazvaný ln, s hodnotou zelené, 352 00:18:33,560 --> 00:18:35,840 následované čárkou, následoval "tisku," 353 00:18:35,840 --> 00:18:43,209 která bude mít funkční hodnotu která se bude dělat tento řádek kódu. 354 00:18:43,209 --> 00:18:45,500 Pojďme se o krok zpět a rozbalit, co se tady děje. 355 00:18:45,500 --> 00:18:47,280 Tak to je trochu složitější, a vidíme něco nového, 356 00:18:47,280 --> 00:18:48,071 poprvé. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 "This" klíčové slovo je nová věc vidíme tady, a co to dělá 359 00:18:55,065 --> 00:19:00,540 je, se odkazuje na proud objekt v rozsahu, že jo? 360 00:19:00,540 --> 00:19:03,990 Takže když říkáme, to upozorňuje na celou cestu zpět 361 00:19:03,990 --> 00:19:08,140 do celého tohoto object-- když budeme dělat this.fn, 362 00:19:08,140 --> 00:19:11,990 budeme jít celou cestu zpět K tomuto objektu, jděte na hodnotu fn 363 00:19:11,990 --> 00:19:16,471 a dostat se sam, vytáhněte ji celou cestu zpět, držet to tady, a pak jít dál. 364 00:19:16,471 --> 00:19:19,838 >> Diváků: Tak s vyhledáváním, je že učiněno, protože parametru 365 00:19:19,838 --> 00:19:20,621 definice? 366 00:19:20,621 --> 00:19:23,870 SAM ZELENÁ: Otázkou tedy bylo, je vyhledávání provedeno kvůli parametru 367 00:19:23,870 --> 00:19:24,727 definice? 368 00:19:24,727 --> 00:19:25,435 Jo, určitě. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Co se bude dít tady je, Tento bod říká JavaScriptu, 371 00:19:32,470 --> 00:19:39,990 OK, já jsem stále nějakou hodnotu z tohoto objektu od sebe. 372 00:19:39,990 --> 00:19:46,375 A pak se to bude vypadat na záznamu volal fn, a pokud se najde, 373 00:19:46,375 --> 00:19:48,470 to vrátím, že value-- tak, že je to sam. 374 00:19:48,470 --> 00:19:51,540 Ale já jsem mohl také zadali něco, co se tu není definován, 375 00:19:51,540 --> 00:19:54,090 a pak by to prostě vrátit undefined-- který 376 00:19:54,090 --> 00:19:58,250 je věc, která může JavaScript dělat, což může mít výhody, 377 00:19:58,250 --> 00:20:03,190 ale je to also-- pokud uděláte překlep, to může mít za následek chyby podivné. 378 00:20:03,190 --> 00:20:05,617 Takže to bude jen snažit najít co řeknete, že najít 379 00:20:05,617 --> 00:20:07,700 a to nebude stěžovat, pokud nenajde ji. 380 00:20:07,700 --> 00:20:11,390 Bude to jen říct, že jsem neudělal najít, a pak jít dál. 381 00:20:11,390 --> 00:20:17,581 Tak to by bylo nedefinované, a prázdné, a příjmení. 382 00:20:17,581 --> 00:20:18,080 To jo. 383 00:20:18,080 --> 00:20:21,070 A pak můžeme vidět, že pokud budeme by pak mohla jít dolů a access-- 384 00:20:21,070 --> 00:20:25,450 a říkáme tf.print () s závorkách. 385 00:20:25,450 --> 00:20:30,000 Bude to volat, že tisk funkce bez argumentů, že jo? 386 00:20:30,000 --> 00:20:34,490 Ale pokud budeme právě řekl tf.print () středník, bez závorek, 387 00:20:34,490 --> 00:20:37,480 vše, co by měl udělat, je vytáhnout out funkce od hodnoty, 388 00:20:37,480 --> 00:20:40,609 ale ne ve skutečnosti to nazval. 389 00:20:40,609 --> 00:20:41,162 Bezva. 390 00:20:41,162 --> 00:20:42,870 Hugh Zabriskie: Měl uděláme objekt? 391 00:20:42,870 --> 00:20:44,161 SAM ZELENÁ: Jasně, pojďme to udělat. 392 00:20:44,161 --> 00:20:48,750 Tak jsem to může pohnout Příklad do konzoly. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Můžeme si představit, že mám objekt. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Takže tohle je jednoduchý objekt. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Jedná se o objekt, který obsahuje dvě Hodnoty se dvěma tlačítky, dvěma klíčovým hodnota 399 00:21:11,050 --> 00:21:12,710 páry. 400 00:21:12,710 --> 00:21:21,850 Tak jsem se pak může přistupovat hodnoty uložené uvnitř tohoto objektu tím, že dělá x.x1, 401 00:21:21,850 --> 00:21:23,400 Například, a já si 1 Zpět. 402 00:21:23,400 --> 00:21:29,590 Stejně tak, x.x2, dostat tuto hodnotu zpět. 403 00:21:29,590 --> 00:21:33,330 >> A teď opravdu cool věc je, můžu ve skutečnosti přidat něco k tomuto objektu 404 00:21:33,330 --> 00:21:34,316 poté, co jsem ji vytvořili. 405 00:21:34,316 --> 00:21:36,315 Takže si dovedete představit, pojďme že mám funkci. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Hugh Zabriskie: Vy musíte udělat, Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM ZELENÁ: Oh, to je nepříjemné. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Co se to nelíbí? 411 00:22:04,324 --> 00:22:04,824 Ó. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Tady jsme. 414 00:22:08,691 --> 00:22:09,190 Bezva. 415 00:22:09,190 --> 00:22:12,840 >> Tak jsem právě vytvořili tato funkce, f, že 416 00:22:12,840 --> 00:22:17,590 se chystá jít do proudu objekt a tisk this.x1. 417 00:22:17,590 --> 00:22:20,330 Takže když jsem se zavolat f o sama o sobě, nic se děje 418 00:22:20,330 --> 00:22:26,970 se stane, doprava, protože tam není žádný x1 pole v objektu je to s odkazem na. 419 00:22:26,970 --> 00:22:39,710 Ale, když řeknu, x.f = f a pak jsem volejte x.f (), budu se dostat zpět 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Tato funkce f je nyní spojené s objektu x, 422 00:22:46,530 --> 00:22:51,800 který má klíč nazvaný x1 spojené s hodnotou 1, 423 00:22:51,800 --> 00:22:54,570 Takže když říkáme this.x1, to je bude najít to, co je to hledá 424 00:22:54,570 --> 00:22:56,450 a musí být schopen vytisknout hodnotu ven. 425 00:22:56,450 --> 00:22:58,700 Tak to je jen jeden příklad z druhu šílené věci 426 00:22:58,700 --> 00:23:01,190 můžete dělat s objekty v JavaScriptu. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Takže tato verze byla generické verze, význam 429 00:23:07,560 --> 00:23:13,780 že jsme vytvořili objekt pomocí tohoto závorky notation-- ortéza notaci, 430 00:23:13,780 --> 00:23:16,880 rather-- a to je my jen chceme vhod, pokud 431 00:23:16,880 --> 00:23:21,440 jeden výskyt určitého objektu, ale co když chceme mít více než jeden 432 00:23:21,440 --> 00:23:22,210 stejného druhu? 433 00:23:22,210 --> 00:23:24,440 A odpověď na to Otázkou je, tam jsou věci, 434 00:23:24,440 --> 00:23:26,760 volal třídy v JavaScriptu stejně. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Můžeme vytvořit funkci, která dělá nějaký inicializace 437 00:23:36,420 --> 00:23:41,690 na cizí těleso, a my bychom říci, stejně jako, 438 00:23:41,690 --> 00:23:44,550 mé class-- tak názvu opětovně použitelné object-- 439 00:23:44,550 --> 00:23:47,100 rovná se funkce, která jej nastaví. 440 00:23:47,100 --> 00:23:52,280 Takže to, co by to bylo ekvivalentní aby je vytvoření objektu, který 441 00:23:52,280 --> 00:23:55,930 bude stejně jako, složená závorka, str, tlustého střeva, 442 00:23:55,930 --> 00:23:59,630 to je řetězec, středník, složená závorka. 443 00:23:59,630 --> 00:24:01,880 To by byl obecný Objekt jsme inicializovat, 444 00:24:01,880 --> 00:24:06,380 s tím rozdílem, na Následující řádky jsme se vytvořit prototyp, který 445 00:24:06,380 --> 00:24:11,190 znamená, že je výchozí klíč, který přidáme do našeho objektu, který 446 00:24:11,190 --> 00:24:13,970 má hodnotu jsou zde uvedeny. 447 00:24:13,970 --> 00:24:20,570 To znamená, že, když jsem vytvořit novou instance tohoto MyClass objektu, 448 00:24:20,570 --> 00:24:27,440 to bude mít pre-postavený uvnitř to je hodnota, s názvem str a jiné hodnoty 449 00:24:27,440 --> 00:24:32,418 s názvem myPrint, což je Bude to fungovat. 450 00:24:32,418 --> 00:24:32,918 Skvělý. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Skvělý. 453 00:24:37,990 --> 00:24:40,710 Takže poslední věc, říkají o JavaScriptu 454 00:24:40,710 --> 00:24:46,430 je to, že je to opravdu užitečné, za co se nazývají asynchronní operace. 455 00:24:46,430 --> 00:24:52,500 Asynchronní znamená, že my můžete čekat na nějakou operaci 456 00:24:52,500 --> 00:24:57,870 dokončit dříve než přejdeme , ale dál, když budeme čekat 457 00:24:57,870 --> 00:24:59,690 a pak se něco stalo později. 458 00:24:59,690 --> 00:25:03,480 A co tím myslím, že je, vy Lze si představit situaci, kdy 459 00:25:03,480 --> 00:25:06,850 odeslat požadavek na některé web server někde, 460 00:25:06,850 --> 00:25:09,670 a to bude poslat tě zpátky nějaký velký kus dat, že jo? 461 00:25:09,670 --> 00:25:13,320 A váš uživatel může čekat v mezitím aby se tak stalo, 462 00:25:13,320 --> 00:25:15,200 a nic nemůže být děje v té době. 463 00:25:15,200 --> 00:25:18,110 Ale to není skvělý design, je to tak? 464 00:25:18,110 --> 00:25:20,214 Nechcete, aby webová stránka zmrazit. 465 00:25:20,214 --> 00:25:22,380 Co se v případě, že chce uživatel klikněte na drop-down menu? 466 00:25:22,380 --> 00:25:24,870 Není to skvělý design vzor. 467 00:25:24,870 --> 00:25:29,290 Místo toho, v podstatě to, co JavaScript dělá se říká, 468 00:25:29,290 --> 00:25:31,870 OK, tuto operaci asynchronně. 469 00:25:31,870 --> 00:25:36,520 Tak jako, čekají v pozadí, a pak, když je operace provedena, 470 00:25:36,520 --> 00:25:39,420 zavolat zpětné volání function-- zavolat nějakou funkci, 471 00:25:39,420 --> 00:25:43,800 Do některých action-- signalizuje, že Provoz jsme čekali až do konce 472 00:25:43,800 --> 00:25:45,520 je konec. 473 00:25:45,520 --> 00:25:51,240 A důvod, proč to je super výkonná je, můžeme něco udělat, předat argument, 474 00:25:51,240 --> 00:25:54,440 něco udělat, a pak čekat až se něco stane. 475 00:25:54,440 --> 00:25:58,970 Poté, když byla tato něco dokončí, můžeme zavolat zpětné volání. 476 00:25:58,970 --> 00:26:03,300 To je opravdu užitečné, protože to umožňuje nás dělat věci s Web Audio API, 477 00:26:03,300 --> 00:26:07,490 Například, jako je načtení zvukový soubor ze vzdáleného serveru 478 00:26:07,490 --> 00:26:11,660 aniž by museli čekat na celý zvukový soubor má být naloženo, 479 00:26:11,660 --> 00:26:14,440 což by bylo opravdu špatné pro uživatelské zkušenosti. 480 00:26:14,440 --> 00:26:17,080 Bezva. 481 00:26:17,080 --> 00:26:19,460 >> Posledních pár bere na vědomí, o ladění, protože tato 482 00:26:19,460 --> 00:26:23,682 je věc, kterou budete muset udělat, jako součást svého projektu, se zárukou. 483 00:26:23,682 --> 00:26:25,140 Zmínil jsem konzoli JavaScriptu. 484 00:26:25,140 --> 00:26:27,550 Je to super užitečná funkce všech moderních prohlížečů, 485 00:26:27,550 --> 00:26:30,300 A my opravdu povzbudit, abyste si pohodlně používat konzolu, 486 00:26:30,300 --> 00:26:33,660 pokud chcete získat dobrý v JavaScriptu. 487 00:26:33,660 --> 00:26:36,320 Je to super užitečné pro ladění, ale je to také 488 00:26:36,320 --> 00:26:39,440 opravdu užitečné pro zjišťuje to, jak používat API. 489 00:26:39,440 --> 00:26:41,950 Umožňuje opravdu snadné experimentování 490 00:26:41,950 --> 00:26:45,910 aniž byste museli psát nějaký kódu, a potom kompilovat. 491 00:26:45,910 --> 00:26:47,500 Nemusíte dělat všechny tyto kroky. 492 00:26:47,500 --> 00:26:49,619 Stačí si jen napsat nějaký kód do řady, 493 00:26:49,619 --> 00:26:52,410 a pak získat okamžitou zpětnou vazbu na zda je tento řádek kódu, nebo ne 494 00:26:52,410 --> 00:26:55,230 worked-- velmi šikovný. 495 00:26:55,230 --> 00:26:59,760 >> A také, jen jedna technická note-- konzola JavaScript je příkladem 496 00:26:59,760 --> 00:27:05,680 o REPL-- takže to je R-E-P-L, REPL, což je zkratka pro čtení, hodnotit, 497 00:27:05,680 --> 00:27:06,180 print smyčky. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Budeš psát nějaké věci in, tak to si přečíst, co jste zadali v, 500 00:27:12,120 --> 00:27:17,280 to bude hodnotit, a to bude vytisknout výstup, a pak to bude začít znovu. 501 00:27:17,280 --> 00:27:22,056 To vám umožní rychle jít kruhy iterací, který je opravdu cool. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Myslím, že skutečný Last note-- to je skutečná poslední poznámka, ano. 504 00:27:28,930 --> 00:27:30,780 Jak můžeme vlastně používat JavaScript? 505 00:27:30,780 --> 00:27:34,040 Takže nejprve, můžeme dovážet jej pomocí tagu script 506 00:27:34,040 --> 00:27:39,500 v horní nebo dolní části HTML file-- kdekoliv uvnitř souboru HTML, 507 00:27:39,500 --> 00:27:40,440 opravdu. 508 00:27:40,440 --> 00:27:47,390 A v rámci tagu script, existují dvě dílčí způsoby importu JavaScript. 509 00:27:47,390 --> 00:27:51,370 Prvním z nich je tím, že má samostatný soubor JavaScript 510 00:27:51,370 --> 00:27:58,010 že import v plném rozsahu, nebo tím, že oblast kódu, jako je skript 511 00:27:58,010 --> 00:28:00,290 spustit, a poté zpětné lomítko skript ukončit. 512 00:28:00,290 --> 00:28:02,620 A pak jsme prostě napsat JavaScript uvnitř souboru HTML. 513 00:28:02,620 --> 00:28:03,790 To jsou dva způsoby. 514 00:28:03,790 --> 00:28:05,165 Můžete ho mít uvnitř HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 Diváků: Je jedním lepší než ostatní? 517 00:28:08,126 --> 00:28:10,542 SAM ZELENÁ: Otázkou bylo, je lepší než ostatní. 518 00:28:10,542 --> 00:28:18,306 Takže, ano, jako kódování styl praxi, a také je to jako projekční praxi. 519 00:28:18,306 --> 00:28:20,180 Existují dva důvody, proč by to mohlo být lepší. 520 00:28:20,180 --> 00:28:23,934 První je, že to je váš kód mnohem lépe čitelné všechny vaše HTML 521 00:28:23,934 --> 00:28:27,100 je na jednom místě, všechny vaše CSS je v jiné místo, všechny vaše JavaScriptu 522 00:28:27,100 --> 00:28:28,420 je na třetím místě. 523 00:28:28,420 --> 00:28:28,920 Právo? 524 00:28:28,920 --> 00:28:32,370 Myslím si, že jsme měli již hovořili o tom v sections--, jako to, co CSS-- 525 00:28:32,370 --> 00:28:35,220 že je-- a to jde často v jiném souboru. 526 00:28:35,220 --> 00:28:37,090 Tak, podobný druh pojetí sem. 527 00:28:37,090 --> 00:28:42,410 Můžete si také představit, že JavaScript by být znovu použity na více než jednom 528 00:28:42,410 --> 00:28:47,350 HTML stránka, nebo možná Velmi mnoho HTML stránky, 529 00:28:47,350 --> 00:28:49,340 a mít takový JavaScript refactored do jednoho 530 00:28:49,340 --> 00:28:51,950 soubor, který můžete importovat do více než jednoho místa 531 00:28:51,950 --> 00:28:54,570 umožňuje kód bude mnohem více udržitelný. 532 00:28:54,570 --> 00:28:57,930 Můžete si představit, takže jeden změnit JavaScriptu 533 00:28:57,930 --> 00:29:00,070 a museli jej změnit ve 100 různých souborů. 534 00:29:00,070 --> 00:29:04,070 A místo toho můžeme jen to změnit v jednom, což je způsob, jak silnější. 535 00:29:04,070 --> 00:29:05,420 Už jsem odpověď na vaši otázku? 536 00:29:05,420 --> 00:29:07,950 Bezva. 537 00:29:07,950 --> 00:29:10,830 >> Můžeme také zadat do konzole, jak jsme se již zmínil dříve. 538 00:29:10,830 --> 00:29:15,070 A opět, poslední note-- Web Audio je postaven v, 539 00:29:15,070 --> 00:29:16,978 nemusíte nahrát nic. 540 00:29:16,978 --> 00:29:17,478 Bezva. 541 00:29:17,478 --> 00:29:20,519 Jsou nějaké dotazy, máte jakékoliv další otázky týkající se JavaScript, 542 00:29:20,519 --> 00:29:21,930 než jsme dál? 543 00:29:21,930 --> 00:29:24,286 >> Diváků: [Neslyšitelné] 544 00:29:24,286 --> 00:29:25,410 SAM ZELENÁ: Dobře, v pohodě. 545 00:29:25,410 --> 00:29:27,200 Tak teď to bude mluvit o API. 546 00:29:27,200 --> 00:29:28,490 >> Hugh Zabriskie: cool. 547 00:29:28,490 --> 00:29:28,990 Díky, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM ZELENÁ: Jistě. 549 00:29:30,184 --> 00:29:32,600 Hugh Zabriskie: Super, takže budeme dál od JavaScriptu. 550 00:29:32,600 --> 00:29:35,350 Takže jsme mluvili o některých náležitosti JavaScript, 551 00:29:35,350 --> 00:29:41,105 a ty, které jsou proměnné, funkce, objektů, funguje jako proměnných, 552 00:29:41,105 --> 00:29:41,980 asynchronní zatížení. 553 00:29:41,980 --> 00:29:46,100 To vše jsou věci, které budete vidět, jak budete používat na webu Audio. 554 00:29:46,100 --> 00:29:49,230 Takže jsme jen mluvit o to nejprve na vysoké úrovni. 555 00:29:49,230 --> 00:29:52,120 >> Je to API, takže je to něco, , který je postaven, jak řekl Sam, 556 00:29:52,120 --> 00:29:57,010 přímo do JavaScriptu které používáte v konzole. 557 00:29:57,010 --> 00:30:01,020 A je to vlastně jen jako C ++ kódu To je opravdu postaven do prohlížeče Chrome 558 00:30:01,020 --> 00:30:04,470 a Firefox, a všechny z těchto prohlížečů. 559 00:30:04,470 --> 00:30:07,060 Takže hlavní myšlenka s webu Audio je, že máte 560 00:30:07,060 --> 00:30:09,440 tento druh potrubí audio, že jo? 561 00:30:09,440 --> 00:30:13,670 Takže vaše audio data přichází v v nějaké formě. 562 00:30:13,670 --> 00:30:16,690 >> Existují tři hlavní druhy forms-- máte oscilátor, který 563 00:30:16,690 --> 00:30:21,340 vytváří sinusoida, cosine vlna, budeme vidět, jak to funguje. 564 00:30:21,340 --> 00:30:23,890 Dalším velmi častým jednoho, Samozřejmě, je MP3. 565 00:30:23,890 --> 00:30:25,810 Takže možná začnete s píseň, a pak 566 00:30:25,810 --> 00:30:28,320 chcete udělat nějaké filtrování k tomu a výstup 567 00:30:28,320 --> 00:30:30,605 that--, že by mohl být možným zdrojem. 568 00:30:30,605 --> 00:30:32,480 A pak se opravdu cool jeden je mikrofon. 569 00:30:32,480 --> 00:30:37,230 Takže můžete použít některé velmi Základní volání v JavaScriptu 570 00:30:37,230 --> 00:30:39,440 získat přístup k mikrofon, takže pokud jste 571 00:30:39,440 --> 00:30:42,870 chtěl, aby aplikaci jako detektor stoupání, 572 00:30:42,870 --> 00:30:45,290 například, že se v váš hlas a zjistí 573 00:30:45,290 --> 00:30:47,740 pitch-- velmi snadný způsob, jak na to. 574 00:30:47,740 --> 00:30:50,730 Stačí si jen trochu číst in, zjistit frekvenci, 575 00:30:50,730 --> 00:30:52,250 a pak výstup číslo. 576 00:30:52,250 --> 00:30:56,080 Tak uvidíme, jak to funguje, stejně. 577 00:30:56,080 --> 00:30:59,430 >> Cíl je v podstatě kde je audio data je na výstupu. 578 00:30:59,430 --> 00:31:02,890 Takže obecně, to je jako váš laptop reproduktory. 579 00:31:02,890 --> 00:31:05,610 Další možnosti jsou jako ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 se dostaneme uzly v second-- ale v podstatě, 581 00:31:07,990 --> 00:31:11,939 Buď jste uvedení zvuk ven prostřednictvím vašeho počítače přes reproduktory, 582 00:31:11,939 --> 00:31:14,730 nebo jste druh záznamu, tak jste ukládání jako audio data. 583 00:31:14,730 --> 00:31:18,980 Takže možná pokud někdo vytvoří hudba v vaší aplikaci a poté 584 00:31:18,980 --> 00:31:22,410 Chcete-li nahrávat, že a možná jako exportovat do SoundCloud, pro example-- 585 00:31:22,410 --> 00:31:25,281 že by byl jeden způsob, jak to udělat. 586 00:31:25,281 --> 00:31:27,030 Všechny zábavné věci, které budeme mluvit o, 587 00:31:27,030 --> 00:31:29,950 se stane, mezi těmito dvěma body, kde jsme nahrát v hudbě 588 00:31:29,950 --> 00:31:31,410 a pak se na výstupu. 589 00:31:31,410 --> 00:31:36,660 >> Takže budu mluvit o pět etapy zvukovou produkci v druhém. 590 00:31:36,660 --> 00:31:38,950 Máme tuto věc zvanou AudioContext, který 591 00:31:38,950 --> 00:31:41,580 je tento malý wrapper zde vidíme. 592 00:31:41,580 --> 00:31:49,980 V podstatě to, co AudioContext je-- kdybychom přejít na JavaScript konzole právě teď, 593 00:31:49,980 --> 00:31:52,740 můžeme vytvořit právě teď. 594 00:31:52,740 --> 00:31:54,040 Jen příklad REPL, že jo? 595 00:31:54,040 --> 00:31:57,880 Jsme čtení, vyhodnocování, a vytiskne. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext je globální stát. 597 00:32:00,260 --> 00:32:05,500 Je to struct, je to objekt tady, a udržuje informace 598 00:32:05,500 --> 00:32:09,960 o věcech, které se na Na obrazovce se zvukem. 599 00:32:09,960 --> 00:32:15,220 Jedním z příkladů je aktuální čas. 600 00:32:15,220 --> 00:32:18,910 To vám řekne číslo sekund, velmi přesně, 601 00:32:18,910 --> 00:32:20,890 protože webové stránky vložen. 602 00:32:20,890 --> 00:32:24,110 Tak tohle je opravdu užitečná malý majetek, který můžete použít. 603 00:32:24,110 --> 00:32:27,898 Je to četl only-- Myslím si, že ve skutečnosti můžete zkusit nastavit to hodnotu. 604 00:32:27,898 --> 00:32:29,856 To vám řeknu vám to nastavit, a pak, pokud ji vytisknout 605 00:32:29,856 --> 00:32:31,439 again-- to dělalo ne vlastně docela práci. 606 00:32:31,439 --> 00:32:34,472 Takže tam jsou jen pro čtení vlastnosti v JavaScriptu. 607 00:32:34,472 --> 00:32:36,430 To je opravdu užitečné, pokud jste trochu synchronizaci 608 00:32:36,430 --> 00:32:38,610 hodně jiný informace, když jste 609 00:32:38,610 --> 00:32:41,280 druh hrát různé zvuky. 610 00:32:41,280 --> 00:32:43,630 >> Dalším opravdu užitečné jedním je kontext cíl. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Určitě, pokud máte zájem, bude se snaží to na vlastní konzole vpravo 613 00:32:49,670 --> 00:32:50,980 teď. 614 00:32:50,980 --> 00:32:53,150 Tak tohle je AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 V podstatě, co to říká, je, pokud se výkon jde? 616 00:32:56,480 --> 00:32:59,590 Takže existují dvě reálné možnosti zde. 617 00:32:59,590 --> 00:33:01,940 Obvykle výchozí je jen reproduktory, 618 00:33:01,940 --> 00:33:05,150 tak AudioDestinationNode v podstatě jen říká, 619 00:33:05,150 --> 00:33:09,240 tam jsou nulové výstupů do zvuku přichází, poslán do reproduktoru. 620 00:33:09,240 --> 00:33:12,050 Takže obecně, vy ne muset hrát s tím. 621 00:33:12,050 --> 00:33:15,720 Máte-li zájem o vlastně používat ScriptProcessorNode pro záznam, 622 00:33:15,720 --> 00:33:16,990 Rozhodně mě zastřelit e-mail později, protože to je 623 00:33:16,990 --> 00:33:18,330 o něco složitější. 624 00:33:18,330 --> 00:33:21,590 Ale obecně, jsi jen trochu pro výstup zvuku v určité formě. 625 00:33:21,590 --> 00:33:24,347 Tak v pohodě, budeme skákat sem. 626 00:33:24,347 --> 00:33:25,180 Diváků: Je mi to líto. 627 00:33:25,180 --> 00:33:26,054 Hugh Zabriskie: Jo. 628 00:33:26,054 --> 00:33:28,770 Diváků: Vím, že jste řekl, mluvit se později o nahrávání. 629 00:33:28,770 --> 00:33:31,550 Můžete rozhraní, které 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 Uvidíme. 632 00:33:35,260 --> 00:33:37,220 To si nemyslím. 633 00:33:37,220 --> 00:33:41,670 Tak se mezi klientem, což je JavaScript 634 00:33:41,670 --> 00:33:44,310 konzole, a vaše skutečné počítač, je obecně 635 00:33:44,310 --> 00:33:46,490 něco, co je druh off limitů, pokud jste 636 00:33:46,490 --> 00:33:52,320 bude, něco z povahy the-- je to trochu designu věci, 637 00:33:52,320 --> 00:33:57,770 ale budete snažit, aby prohlížeč oddělené z aktuálního počítače uživatele. 638 00:33:57,770 --> 00:34:02,310 Obecně platí, že jediná věc, kterou jste schopni Přístup je mikrofon nebo kamera. 639 00:34:02,310 --> 00:34:04,730 Nejste schopni, I si nemyslím, použijte Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Nicméně, pokud jste vytvořili stopa v Pro Tools, 641 00:34:07,480 --> 00:34:12,710 vyváženy, že byste mohli nahrát, že sem, filtrovat, například, 642 00:34:12,710 --> 00:34:16,820 Proces, který, a zaznamenat, že do Audio Destination-- nebo no-- koule 643 00:34:16,820 --> 00:34:17,870 Uzel procesoru. 644 00:34:17,870 --> 00:34:20,730 A pak odtud, mohl byste exportovat, že pro SoundCloud, vás 645 00:34:20,730 --> 00:34:25,320 mohl odeslat e-mailem, nebo co se vám líbí odtamtud. 646 00:34:25,320 --> 00:34:31,159 >> Ale je tu trochu mírné bariéry mezi dělat hudbu na počítači 647 00:34:31,159 --> 00:34:33,050 a dělat hudbu on-line. 648 00:34:33,050 --> 00:34:37,940 >> SAM ZELENÁ: A to je nejsou jedinečné tohoto API. 649 00:34:37,940 --> 00:34:44,060 Je to bezpečnostní funkce Chrome, a Myslím si, že všechny ostatní moderní prohlížeč. 650 00:34:44,060 --> 00:34:45,860 Prohlížeč je soběstačný. 651 00:34:45,860 --> 00:34:50,980 Tak například, webová stránka nemůže používají JavaScript otočit zvuk 652 00:34:50,980 --> 00:34:54,190 Na na reproduktorech, například. 653 00:34:54,190 --> 00:34:58,120 Nebo to nemůže vypnete počítač. 654 00:34:58,120 --> 00:35:01,530 A není tam žádný vnitřní bod Mezi těmito dvěma věcmi, vpravo, 655 00:35:01,530 --> 00:35:05,960 takže buď máte kompletní abstrakce, 656 00:35:05,960 --> 00:35:10,050 nebo si otevřít bezpečnostní chybu nechat 657 00:35:10,050 --> 00:35:14,440 programátor se špatnými úmysly dělat co chtějí se svým notebookem. 658 00:35:14,440 --> 00:35:18,104 A to je důvod, proč Chrome je soběstačný. 659 00:35:18,104 --> 00:35:19,310 >> Hugh Zabriskie: Jo. 660 00:35:19,310 --> 00:35:20,840 Dává to smysl? 661 00:35:20,840 --> 00:35:21,369 Cool, cool. 662 00:35:21,369 --> 00:35:23,160 Byl jsem prostě jít ukazují příklad jednoho. 663 00:35:23,160 --> 00:35:25,118 To je do značné míry jako pokud se dostanete, pokud jde 664 00:35:25,118 --> 00:35:26,950 přístupu k počítači uživatele. 665 00:35:26,950 --> 00:35:30,180 Máte-li klávesnice USB zapojen, můžete použít něco, co nazývá Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, které nebudeme opravdu mluvit o tady, 667 00:35:32,180 --> 00:35:36,330 ale to je další API, které je vestavěný do alespoň Chrome-- znovu 668 00:35:36,330 --> 00:35:41,570 To je důvod, proč milujeme Chrome-- Myslím si, že Firefox nebo Safari, 669 00:35:41,570 --> 00:35:44,300 to je jednoduchá věc google-- různé prohlížeče mají 670 00:35:44,300 --> 00:35:46,917 odlišný podpora pro něž API, které provedly. 671 00:35:46,917 --> 00:35:49,875 Ale pokud byste chtěli připojit klávesnici a pracovat s těmito informacemi, 672 00:35:49,875 --> 00:35:52,850 druh poslat klávesnice Informace se k počítači 673 00:35:52,850 --> 00:35:57,620 a pak použít že on-line, toto rozhraní API je místo, kde byste pracovat, že. 674 00:35:57,620 --> 00:35:58,150 >> Bezva. 675 00:35:58,150 --> 00:35:58,710 DOBŘE. 676 00:35:58,710 --> 00:36:01,320 Takže, rychle se pohybující se tady na. 677 00:36:01,320 --> 00:36:03,310 Jak jsme na tom s časem? 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 minut odešel? 680 00:36:05,543 --> 00:36:06,160 OK v pohodě. 681 00:36:06,160 --> 00:36:08,170 Takže budeme závodit kupředu tady. 682 00:36:08,170 --> 00:36:13,500 >> Takže v podstatě, hlavním bodem myslet na to jako potrubí 683 00:36:13,500 --> 00:36:16,430 je to, že každý krok v potrubí je série audio uzlů. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Náš zdroj, řekněme, je oscilátor. 686 00:36:20,950 --> 00:36:23,380 Musíme vytvořit uzel oscilátor. 687 00:36:23,380 --> 00:36:25,690 A to je jen tak malého function-- 688 00:36:25,690 --> 00:36:30,460 a oni jsou založeny out audio kontextu zde. 689 00:36:30,460 --> 00:36:32,885 >> Diváků: Když to řekl, oscilátor, znamená to, že 690 00:36:32,885 --> 00:36:37,250 je to vlastně doslova jít od dva různé póly tam a zpět? 691 00:36:37,250 --> 00:36:41,170 >> Hugh Zabriskie: Ne, je to jako digitální reprezentace. 692 00:36:41,170 --> 00:36:42,740 Je to vlastně implementována v C ++. 693 00:36:42,740 --> 00:36:46,460 Já vlastně nevím specifikace o tom, jak je to vlastně provedena, 694 00:36:46,460 --> 00:36:48,500 ale to vše se pracuje jako binární data. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Vlastně ano. 697 00:36:52,370 --> 00:36:53,950 To by bylo říkat, jsem mohl ve skutečnosti, pokud máte zájem, 698 00:36:53,950 --> 00:36:56,533 Mohl bych vám poslat trochu více Informace o tom, jak průběhů 699 00:36:56,533 --> 00:37:00,181 jsou udržovány s digitálním formátu. 700 00:37:00,181 --> 00:37:00,680 OK v pohodě. 701 00:37:00,680 --> 00:37:03,120 >> Takže jsme generování tónu jako sine mávat, nebo něco takového, možná 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Tvoříme oscilátor. 704 00:37:05,830 --> 00:37:09,180 Chceme-li nastavit hlasitost, my připojit něco k GainNode, 705 00:37:09,180 --> 00:37:12,500 které jsme mohli udělat s .creategain. 706 00:37:12,500 --> 00:37:14,250 To nastavuje hlasitost. 707 00:37:14,250 --> 00:37:17,820 Můžete si projít, že na jakýkoli druhého options-- dobře, 708 00:37:17,820 --> 00:37:20,300 tak zvukový zdroj vyrovnávací uzel je místo, kde byste mohli 709 00:37:20,300 --> 00:37:23,660 uložení MP3, které jste založeného v. 710 00:37:23,660 --> 00:37:27,670 >> SFB filtr je pro filtraci, pokud Chcete-li mít všechny základny ven 711 00:37:27,670 --> 00:37:29,630 písně, nebo něco takového. 712 00:37:29,630 --> 00:37:32,450 Nedej bože, chcete, aby se základna z písně. 713 00:37:32,450 --> 00:37:36,980 A AudioDestination uzel je, opět, jako kde je naše dokončení je. 714 00:37:36,980 --> 00:37:39,980 Pokud jste někdy zájem vidět všechny různé možné varianty, 715 00:37:39,980 --> 00:37:45,190 stačí jít na kartu a nechat auto-kompletní přijít. 716 00:37:45,190 --> 00:37:48,690 A pokud nechcete vytvářet, uvidíte všechny různých věcí, které můžete vytvořit. 717 00:37:48,690 --> 00:37:50,398 Můžete vytvářet dynamické skript procesory, 718 00:37:50,398 --> 00:37:52,940 Já ani nevím, co to je, pro míchání fúze kanálů 719 00:37:52,940 --> 00:37:55,930 a kanál štípačky a to všechno. 720 00:37:55,930 --> 00:37:56,430 Bezva. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Takže je to jen Příklad potrubí. 723 00:38:01,390 --> 00:38:03,580 Takže máme tři zdroje přicházet. 724 00:38:03,580 --> 00:38:06,830 Možná, že to jsou průběhy, Možná, že se jedná o MP3. 725 00:38:06,830 --> 00:38:08,740 Jedna se děje prostřednictvím filtr, další je 726 00:38:08,740 --> 00:38:12,404 dostat zkreslený další něčí rýžování vlevo a vpravo. 727 00:38:12,404 --> 00:38:15,320 Můžete dělat všechny druhy věcí a Všichni zaplést kolem dohromady, 728 00:38:15,320 --> 00:38:18,880 a potom ven vychází zvuk na konci, jako cíl. 729 00:38:18,880 --> 00:38:22,720 Toto je příklad toho, co více komplikovaná Web Audio kód vypadá. 730 00:38:22,720 --> 00:38:26,720 Budete vytvářet všechny tyto různé objekty vpravo here-- 731 00:38:26,720 --> 00:38:27,706 Nejsem si jistý, o tom. 732 00:38:27,706 --> 00:38:29,120 Ne, to není přiblížit. 733 00:38:29,120 --> 00:38:29,620 DOBŘE. 734 00:38:29,620 --> 00:38:31,257 >> SAM ZELENÁ: Děláte Control, procházení nahoru. 735 00:38:31,257 --> 00:38:32,590 Hugh Zabriskie: Control Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM ZELENÁ: Ne, ne. 737 00:38:33,000 --> 00:38:33,500 Řízení-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> Hugh Zabriskie: Oh, Control, Posunout? 740 00:38:38,140 --> 00:38:38,780 Oh, gotcha. 741 00:38:38,780 --> 00:38:41,480 To jo. 742 00:38:41,480 --> 00:38:42,240 Wow, Ne, kdepak. 743 00:38:42,240 --> 00:38:42,740 DOBŘE. 744 00:38:42,740 --> 00:38:46,090 Nebudu to dělat. 745 00:38:46,090 --> 00:38:48,300 >> Tak jo, v této první Sekce tady, vidíte 746 00:38:48,300 --> 00:38:52,720 vytváříme všechny tyto různé uzly z kontextu. 747 00:38:52,720 --> 00:38:54,980 Právě jsme jim vysprávka společně v druhé části 748 00:38:54,980 --> 00:38:56,980 V této funkci s názvem Connect. 749 00:38:56,980 --> 00:38:58,830 To je opravdu klíčový Funkce ve Web Audio. 750 00:38:58,830 --> 00:39:01,930 To jen znamená, že poté, co jste udělal něco se zvukem v jednom uzlu, 751 00:39:01,930 --> 00:39:03,705 přenést je na další uzel. 752 00:39:03,705 --> 00:39:05,830 Takže máme zdroj, jej se připojí k analyzátoru, 753 00:39:05,830 --> 00:39:09,140 analyzátor dělá něco s ním, to jde ke zkreslení, a tak dále, 754 00:39:09,140 --> 00:39:12,725 a na místo určení vpravo dole zde. 755 00:39:12,725 --> 00:39:13,225 Bezva. 756 00:39:13,225 --> 00:39:14,640 OK, takže budeme držet dál. 757 00:39:14,640 --> 00:39:17,180 >> Opět se pipeline--, tito jsou nejčastější potrubí, 758 00:39:17,180 --> 00:39:21,300 proto hovoříme o všech těchto věcech, jako je zkreslení, rýžování, tohle všechno. 759 00:39:21,300 --> 00:39:24,280 Pokud máte opravdu zájem při použití věci Pro Tools, 760 00:39:24,280 --> 00:39:25,820 ty, které pravděpodobně zajímat. 761 00:39:25,820 --> 00:39:27,740 Pokud ne, možná jste právě chcete přehrát zvuk, 762 00:39:27,740 --> 00:39:29,990 nebo možná jen chcete nastavit hlasitost zvuku. 763 00:39:29,990 --> 00:39:35,270 To jsou dva nejčastější druh z potrubí ve výrobě zvuku. 764 00:39:35,270 --> 00:39:38,640 >> Opět platí, že způsoby, jak můžete vzít V jako oscillator-- tak, pojďme 765 00:39:38,640 --> 00:39:42,460 udělat demo toho tady. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Takže jdeme na vytvoření jednoduchý audio kontext tady, 768 00:39:52,225 --> 00:39:54,350 a od toho jdeme vytvořit naši oscilátor. 769 00:39:54,350 --> 00:39:58,620 Takže to je, opět, jsme jen zavolá vytvořit oscilátor. 770 00:39:58,620 --> 00:40:07,030 Budeme nastavit frekvenci na že 440 Hertz, každého z nás oblíbený. 771 00:40:07,030 --> 00:40:13,290 Pak jsme připojit, že na místo určení point-- což je reproduktor, takže 772 00:40:13,290 --> 00:40:15,750 kontext cíl. 773 00:40:15,750 --> 00:40:21,400 Nakonec jsme jen říct, start nula sekund od teď, a my jsme zvuk? 774 00:40:21,400 --> 00:40:22,400 >> [ZVONENI] 775 00:40:22,400 --> 00:40:24,980 >> Hugh Zabriskie: Jdeme na to. 776 00:40:24,980 --> 00:40:25,940 Je to jen sinusoida. 777 00:40:25,940 --> 00:40:26,440 OK v pohodě. 778 00:40:26,440 --> 00:40:28,274 A pak budeme nech toho. 779 00:40:28,274 --> 00:40:30,520 >> Publikum: Kde se že zpětná vazba pochází? 780 00:40:30,520 --> 00:40:31,250 >> Hugh Zabriskie: Zpětná vazba? 781 00:40:31,250 --> 00:40:32,458 Oh, pravděpodobně naše mikrofony. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Tak jo, to je to, jak to udělat. 784 00:40:35,470 --> 00:40:37,261 A vlastně, kdybych měl stále je spuštěna, 785 00:40:37,261 --> 00:40:39,540 může mít frekvenci hodnota, jak je to běh, 786 00:40:39,540 --> 00:40:43,320 tak to je zábavná věc pohrát. 787 00:40:43,320 --> 00:40:44,930 Bezva. 788 00:40:44,930 --> 00:40:46,600 To je vždycky krásný člověk představit. 789 00:40:46,600 --> 00:40:48,792 >> SAM ZELENÁ: My jsme ne přemýšlet o tom, jsme? 790 00:40:48,792 --> 00:40:50,500 Hugh Zabriskie: Jo, to je ošklivý člověk. 791 00:40:50,500 --> 00:40:53,249 Takže, vyrovnávací loading-- budu ukázat Příkladem, že na samém konci. 792 00:40:53,249 --> 00:40:55,090 To je načtení MP3. 793 00:40:55,090 --> 00:40:58,880 A mikrofon, můžete použít jen funkci nazvaný Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 požádat o přístup k uživatele mikrofon pro tuto informaci. 795 00:41:03,240 --> 00:41:05,610 >> Zde je filtrování, budu Jen dál z tohoto. 796 00:41:05,610 --> 00:41:08,600 To je docela vysoké úrovni, ale filtry jen vám umožní 797 00:41:08,600 --> 00:41:16,154 >> [Pípání] 798 00:41:16,154 --> 00:41:18,320 Filtrování také umožňuje vytvořit věci jako růžová 799 00:41:18,320 --> 00:41:20,050 hluk, hnědý šum, bílý šum. 800 00:41:20,050 --> 00:41:24,330 Chcete-li vytvořit čistý hluk, který Někteří lidé milují, aby nepořádek kolem, 801 00:41:24,330 --> 00:41:27,490 můžete použít aplikaci Web Audio filtrování to udělat. 802 00:41:27,490 --> 00:41:30,039 >> Audio Panning-- tak si představte pokud píšete hru 803 00:41:30,039 --> 00:41:32,330 a chcete, aby se zvuk do znít jako to přichází, stejně jako, 804 00:41:32,330 --> 00:41:36,090 střílí po celé obrazovce, můžete použít posouvání ze zvuku 805 00:41:36,090 --> 00:41:39,770 vytvořit tento druh kužele, který jako-- je to docela Mathy, 806 00:41:39,770 --> 00:41:41,850 ale ve skutečnosti je to opravdu pohodě, pokud si to práce, 807 00:41:41,850 --> 00:41:44,500 a tam je nějaký dobrý návody na to, že vám mohu poslat. 808 00:41:44,500 --> 00:41:46,400 V podstatě, můžete si laskavý o vytvořit zvuk 809 00:41:46,400 --> 00:41:50,480 něco děje kolem v 3D způsobem. 810 00:41:50,480 --> 00:41:57,350 A pokud máte zájem DJ, můžete spusťte míchání a cross blednutí písně. 811 00:41:57,350 --> 00:42:01,260 >> To je jen nějaký velmi jednoduchý kód, v podstatě to, co jsem dělal předtím. 812 00:42:01,260 --> 00:42:06,140 Toto nastavení objemu oscilátor, takže jsme vytvořit naši oscilátor 813 00:42:06,140 --> 00:42:07,380 což vytváří tvar vlny. 814 00:42:07,380 --> 00:42:09,940 Vytváříme naši GainNode, set naši frekvenci, 815 00:42:09,940 --> 00:42:14,170 a pak připojte oscilátor k GainNode, který pak v podstatě změny 816 00:42:14,170 --> 00:42:16,760 kolik signálu je povoleno projít. 817 00:42:16,760 --> 00:42:20,467 Ale opravdu, je to digitální věc, tak je to víc jen-- jo. 818 00:42:20,467 --> 00:42:23,550 To není to, co se skutečně děje, ale to je to, co se děje v reálném životě 819 00:42:23,550 --> 00:42:24,393 se ziskem. 820 00:42:24,393 --> 00:42:27,258 >> Publikum: --quantization parametru objemu? 821 00:42:27,258 --> 00:42:28,174 Hugh Zabriskie: Sorry? 822 00:42:28,174 --> 00:42:30,360 Diváků: je to kvantovaný objem parametr? 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 věc, že ​​jsem opravdu deficitem v mém znalostech, 825 00:42:34,620 --> 00:42:38,010 Jak zisk pracuje na digitální úrovni. 826 00:42:38,010 --> 00:42:40,140 Vím, že se skutečné signály, je to v podstatě 827 00:42:40,140 --> 00:42:45,120 kontrolu, kolik jste zesílení signálu. 828 00:42:45,120 --> 00:42:47,017 Tak jo. 829 00:42:47,017 --> 00:42:50,100 Pošlu vám více informací o to, protože bych byl opravdu zvědavý 830 00:42:50,100 --> 00:42:51,099 vědět více o tom. 831 00:42:51,099 --> 00:42:54,090 Ale v podstatě parametry jsou, z nich je fold-- 832 00:42:54,090 --> 00:42:59,690 hlasitější signal-- a nula není signál, nebo nebudete slyšet žádný zvuk. 833 00:42:59,690 --> 00:43:03,150 Budeme přeskočit demo čas na to, protože je to v podstatě to, co jsem dělal předtím. 834 00:43:03,150 --> 00:43:07,630 A opět se Context.Destination je audio cílovým uzlem. 835 00:43:07,630 --> 00:43:08,360 Super, OK. 836 00:43:08,360 --> 00:43:10,470 >> Takže budu dělat rychlé dvě dema. 837 00:43:10,470 --> 00:43:11,760 Jak jsme na tom s časem? 838 00:43:11,760 --> 00:43:12,640 >> Reproduktor 1: Asi 10 minut. 839 00:43:12,640 --> 00:43:13,130 >> Hugh Zabriskie: 10 minut? 840 00:43:13,130 --> 00:43:13,630 Skvělý! 841 00:43:13,630 --> 00:43:14,320 Skvělý. 842 00:43:14,320 --> 00:43:19,010 >> Takže první, budu to, je to jen moje oblíbená píseň. 843 00:43:19,010 --> 00:43:22,410 Tak to je jen malý HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Budeme mít dvě tlačítka Na stránce přehrát svůj oblíbený song 845 00:43:25,510 --> 00:43:29,192 a zastavit mou oblíbenou píseň. 846 00:43:29,192 --> 00:43:30,180 Budu změnit. 847 00:43:30,180 --> 00:43:32,110 >> Diváků: Zakryjte mikrofonu. 848 00:43:32,110 --> 00:43:33,430 >> Hugh Zabriskie: Jo. 849 00:43:33,430 --> 00:43:36,300 A já jsem v tu naloženo skript, který basically-- 850 00:43:36,300 --> 00:43:38,520 a to je velmi užitečné pro načtení MP3, 851 00:43:38,520 --> 00:43:41,820 tak to prostě dělá načítání souborů MP3 cestu rychleji. 852 00:43:41,820 --> 00:43:44,180 Je to v podstatě jen o obal. 853 00:43:44,180 --> 00:43:48,737 To prostě dělá proces načítání MP3 mnohem rychleji, 854 00:43:48,737 --> 00:43:51,570 jinak jste pomocí HTTP požadavku, něco jako to, co jsme dělali 855 00:43:51,570 --> 00:43:53,950 na aktuálním dílný s Server. 856 00:43:53,950 --> 00:43:55,950 Je to opravdu ošklivý, vy nechci to dělat. 857 00:43:55,950 --> 00:44:04,110 >> Takže ten chlap, Boris MSP, napsal opravdu užitečný malý nástroj nazvaný BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Vše, co udělat, je jednoduše předat jej na kontext, vy to list-- projít 859 00:44:08,780 --> 00:44:11,327 nebo, jo, je to seznam v JavaScriptu? 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 řada cest na různých souborů. 863 00:44:18,660 --> 00:44:21,990 A pak se to funkci projít. 864 00:44:21,990 --> 00:44:25,530 To je zpětné volání, že mluvíme o s asynchronním zatížení. 865 00:44:25,530 --> 00:44:28,720 Ten se bude jmenovat Jakmile jsou soubory načteny. 866 00:44:28,720 --> 00:44:33,780 A to funkce, která je volána při Soubor je načten bere jako obvod 867 00:44:33,780 --> 00:44:35,840 Pole zatížených nárazníky. 868 00:44:35,840 --> 00:44:37,990 Tak, že dojde k sem. 869 00:44:37,990 --> 00:44:41,180 V podstatě, je BufferList bude jedním value-- 870 00:44:41,180 --> 00:44:46,380 nebo to bude řada Délka člověk, který má v ní v indexu 871 00:44:46,380 --> 00:44:51,320 nulu celý načtený soubor MP3. 872 00:44:51,320 --> 00:44:53,320 Takže to, co mám dělat, když jsem dokončit zatížení je, já prostě 873 00:44:53,320 --> 00:44:57,430 vytvoření zdroje vyrovnávací paměti, který je zdroj zvuku vyrovnávací paměti uzel. 874 00:44:57,430 --> 00:45:03,410 Dalším krokem je, že zatížení ve source.buffer jako plná načteného vyrovnávací paměti 875 00:45:03,410 --> 00:45:06,740 z BufferList-- je to hodně buffers-- 876 00:45:06,740 --> 00:45:10,255 a pak se připojit, že zvuk vyrovnávací paměti na místo určení. 877 00:45:10,255 --> 00:45:12,380 Tak co to bude dělat je prostě dát MP3 878 00:45:12,380 --> 00:45:15,260 rovně na výstup, a okamžitě se spustí jej 879 00:45:15,260 --> 00:45:18,010 po získání této hovor. 880 00:45:18,010 --> 00:45:21,660 >> Cool, takže uvidíme, se to stalo v akci. 881 00:45:21,660 --> 00:45:24,490 My [neslyšitelný] tady, pojďme se podívat. 882 00:45:24,490 --> 00:45:26,430 Takže jsem prostě jít spuštění základní server. 883 00:45:26,430 --> 00:45:28,660 To je něco, co co musíte udělat, pokud jste 884 00:45:28,660 --> 00:45:32,490 takže požadavky na načítání souborů. 885 00:45:32,490 --> 00:45:34,140 Chystám se začít základní server. 886 00:45:34,140 --> 00:45:38,200 To je v podstatě vaše celá Pset právě teď v jedné linii, 887 00:45:38,200 --> 00:45:43,930 ale je to právě začíná server na portu 80/80. 888 00:45:43,930 --> 00:45:47,300 Tak jsme se jít sem, my chystá nahrát 80/80, 889 00:45:47,300 --> 00:45:49,110 budeme jít na svou oblíbenou píseň. 890 00:45:49,110 --> 00:45:51,660 Takže když jsem hit "hrát svou oblíbená píseň "právě teď, 891 00:45:51,660 --> 00:45:53,964 to bude načíst můj oblíbená píseň a hrát to-- 892 00:45:53,964 --> 00:45:55,880 [MUSIC - orli, "Život v FAST  PRUH"] 893 00:45:55,880 --> 00:46:00,490 --which se stane být "Život v rychlém pruhu "od The Eagles. 894 00:46:00,490 --> 00:46:06,346 Teď bych mohl zasáhnout "Stop my oblíbená píseň "a přehrát ji. 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - orli, "Život v FAST  PRUH"] 896 00:46:09,160 --> 00:46:18,340 >> A když jsem se přejít na utěšit, protože Použil jsem globální proměnné sem 897 00:46:18,340 --> 00:46:23,390 sledovat této hodnoty, je ve skutečnosti Nyní bude uznána v konzole. 898 00:46:23,390 --> 00:46:25,160 Takže to auto-vytváří pro mě. 899 00:46:25,160 --> 00:46:29,991 Tak to je to, co se hraje právě teď, a já si prostě zavolat 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, víte co? 903 00:46:35,860 --> 00:46:39,760 Jen tak vy jste slyšeli song-- můžete poznat tuto píseň. 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - Rick Astley, "nikdy dát  YOU UP "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - orli, "Život v FAST  PRUH"] 907 00:46:44,215 --> 00:46:46,195 Nyní jsme všichni Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, skvěle, pohybující se na. 909 00:46:50,155 --> 00:46:51,160 Bezva. 910 00:46:51,160 --> 00:46:54,554 Takže to je v podstatě příklad jak byste mohli nahrát MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - orli, "Život v FAST  PRUH"] 912 00:46:56,470 --> 00:46:59,590 --and hrát, a zastavit a spustit jej. 913 00:46:59,590 --> 00:47:03,008 Jsem mohl udělat mnohem více [neslyšitelných] 914 00:47:03,008 --> 00:47:07,570 >> Poslední z nich budu dělat, je, Já vám ukážu, a [neslyšitelných]. 915 00:47:07,570 --> 00:47:18,070 >> [Přehrávání hudby] 916 00:47:18,070 --> 00:47:21,800 >> Je to jako, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Myslím, že, pokud si dobře pamatuji, Já jsem narazit na některé problémy s .m4a, 918 00:47:26,450 --> 00:47:27,721 ale nejsem si jistý, 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 dát  YOU UP "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK skvěle. 924 00:47:36,500 --> 00:47:37,625 Neměl jsem řekl, že. 925 00:47:37,625 --> 00:47:40,570 Mimochodem, ahoj. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Takže máme tento otevřený. 928 00:47:45,490 --> 00:47:52,320 Takže teď vše, co udělat, je, že jsem v podstatě vytvořil základní syntaxe pro vytváření hudby. 929 00:47:52,320 --> 00:47:57,610 Takže když to udělám něco jako, přidejte G4 1. 2., co to znamená, že, 930 00:47:57,610 --> 00:48:00,950 přidejte klavír poznámku, G4, která je čtvrtou G 931 00:48:00,950 --> 00:48:02,680 up na klavír ode dna. 932 00:48:02,680 --> 00:48:05,930 Takže to je tak trochu MIDI mluvit, Takže pro ty, kteří jsou na základě hudby, 933 00:48:05,930 --> 00:48:07,860 je to jen MIDI poznámky. 934 00:48:07,860 --> 00:48:10,090 >> Diváků: To je G ze Středního C, ne? 935 00:48:10,090 --> 00:48:11,840 >> Hugh Zabriskie: Toto je G nad středem C, to je pravda. 936 00:48:11,840 --> 00:48:12,470 >> Diváků: nad středem C. 937 00:48:12,470 --> 00:48:13,345 >> Hugh Zabriskie: Jo. 938 00:48:13,345 --> 00:48:14,340 Vlastně ano. 939 00:48:14,340 --> 00:48:16,131 Myslím, že jsem vlastně udělal to jeden [neslyšitelné], 940 00:48:16,131 --> 00:48:18,860 tak by to mohlo být oktáva nad to. 941 00:48:18,860 --> 00:48:20,070 Takže pojďme se podívat. 942 00:48:20,070 --> 00:48:21,152 Pokud jsem narazila Play-- 943 00:48:21,152 --> 00:48:22,110 [Opakující se PIANO Poznámka] 944 00:48:22,110 --> 00:48:23,200 --we're bude slyšet. 945 00:48:23,200 --> 00:48:25,700 Myšlenka je, že to funguje stejně jako příkazového řádku by, 946 00:48:25,700 --> 00:48:27,510 takže když jsem jít nahoru a dolů na mé klávesnici, vy 947 00:48:27,510 --> 00:48:31,550 může jít zpět na předchozí příkazy, což je docela užitečné. 948 00:48:31,550 --> 00:48:35,136 A dole je můj seznam skladeb, které jsou všechny běží na smyčce. 949 00:48:35,136 --> 00:48:38,260 >> Diváků: jste za předpokladu, že 88-kláves na tom, že jo? 950 00:48:38,260 --> 00:48:41,051 >> Hugh Zabriskie: Otázkou bylo, mám za předpokladu, že o 88-klíč klávesnice, 951 00:48:41,051 --> 00:48:41,990 a ano, jsem. 952 00:48:41,990 --> 00:48:45,030 To, co jsem udělal je, že jsem v podstatě se 88 vzorky 953 00:48:45,030 --> 00:48:46,970 klavíru, jeden pro každou poznámku. 954 00:48:46,970 --> 00:48:49,180 A tak pokaždé, když vám vyslechnout poznámku od nynějška, 955 00:48:49,180 --> 00:48:57,550 že je ve skutečnosti smyčka, která vypadá jako-- je to stále hraje na smyčce, 956 00:48:57,550 --> 00:49:00,120 takže pro každou poznámku, je to běží. 957 00:49:00,120 --> 00:49:02,860 Co se stane, je, myslím, vytvoření vyrovnávací paměti opět, 958 00:49:02,860 --> 00:49:06,010 I vytvořit uzel zisku pro nastavení hlasitosti. 959 00:49:06,010 --> 00:49:08,240 To jen opravdu komplikovaný způsob, jak říct, že jsem 960 00:49:08,240 --> 00:49:10,550 uložit vyrovnávací paměť v source.buffer. 961 00:49:10,550 --> 00:49:13,160 Dávám mu zisk, já připojte jej k zisku, 962 00:49:13,160 --> 00:49:15,576 zisk je připojena k výstup, a pak jsem hrát. 963 00:49:15,576 --> 00:49:20,735 Takže to je druh procesu of přičemž ve zdroji pufru. 964 00:49:20,735 --> 00:49:24,820 >> Diváků: můžete skutečně vzít suchý zvuk a dělat to mokrý [neslyšitelný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 zpoždění, zkreslení. 967 00:49:29,260 --> 00:49:33,260 Můžete v podstatě dát cokoliv mezi v tomto sendviči of-- dobře, 968 00:49:33,260 --> 00:49:37,660 Potrubí je lepší metafora, ale můžete přidat něco v tom. 969 00:49:37,660 --> 00:49:38,200 Bezva. 970 00:49:38,200 --> 00:49:40,280 >> Takže budu dokončit demo zde, aby vám pocit 971 00:49:40,280 --> 00:49:46,390 toho jen pouhé kolikrát jste lze spustit tuto funkci najednou. 972 00:49:46,390 --> 00:49:49,280 Takže budu odstranit toto. 973 00:49:49,280 --> 00:49:59,110 Chystám se vytvořit generátor that-- podstatě to, co je to opravdu does-- 974 00:49:59,110 --> 00:50:04,220 trochu komplikované, ale je to syntax-- bude vytvářet poznámky na běhu, 975 00:50:04,220 --> 00:50:06,601 a prostě začít hrát je jak vyhodnocuje je. 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 jen aby se trochu hudby zde. 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, co tento příkaz dělá, například, je 982 00:50:41,470 --> 00:50:46,910 to trvá ty tři poznámky k klavír a pak staví je na B3. 983 00:50:46,910 --> 00:50:48,660 Tato syntaxe by mohl dělat trochu větší smysl 984 00:50:48,660 --> 00:50:50,590 pro ty, kteří mají hudba na pozadí zde. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Mohu přidat buben. 987 00:50:56,551 --> 00:50:57,050 Můžu-- 988 00:50:57,050 --> 00:50:58,048 >> [Vložením NÁSTROJE] 989 00:50:58,048 --> 00:50:59,256 >> --just hrát si 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 víc nepří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áhodně přidá suchý činel na každém 16. notu, s 16% 997 00:51:30,981 --> 00:51:31,481 [NESLYŠITELNÝ]. 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 jak to works-- je to vždy ve formátu 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 čtyři čtvrtletí, 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 průměru dostanete 60% zobrazení 16. poznámky. 1008 00:52:33,780 --> 00:52:35,990 >> Tak jako tak, je to jen druh na odiv 1009 00:52:35,990 --> 00:52:39,780 některé z věcí, které by mohly stavět s Web Audio API. 1010 00:52:39,780 --> 00:52:43,840 Je to opravdu silný, je to opravdu rychle, a můžete udělat spoustu skvělých věcí 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šechny otázky, které jste, email myself-- Hugh-- nebo Sam, 1013 00:52:51,260 --> 00:52:55,869 a upřímně, Google má tuny dobrých zdrojů. 1014 00:52:55,869 --> 00:52:56,660 Nějaká poslední otázky? 1015 00:52:56,660 --> 00:52:57,970 To jo. 1016 00:52:57,970 --> 00:53:00,790 >> Diváků: Takže můžete přistupovat vestavěný mikrofon. 1017 00:53:00,790 --> 00:53:03,089 Co kdyby jste chtěli použít lepší mikrofon? 1018 00:53:03,089 --> 00:53:05,380 Hugh Zabriskie: Pokud byste chtěli používat lepší mikrofon? 1019 00:53:05,380 --> 00:53:11,320 Takže znovu, toto je součástí abstrakce mezi Chrome 1020 00:53:11,320 --> 00:53:12,950 a zbytek vašeho počítače. 1021 00:53:12,950 --> 00:53:18,950 Pokud to není k dispozici prostřednictvím API, stejně jako Web MIDI rozhraní API, 1022 00:53:18,950 --> 00:53:22,030 by pravděpodobně mohlo najít nějaké hacky, ale obecně ne jako proveditelné. 1023 00:53:22,030 --> 00:53:25,300 >> SAM ZELENÁ: Můžete also-- všechny Chrome ví 1024 00:53:25,300 --> 00:53:28,820 je to, co vaše výchozí mikrofon je, a to, že přistupuje. 1025 00:53:28,820 --> 00:53:33,410 Takže pokud jste měli mikrofon byste mohli nastavit jako výchozí mikrofon počítače, 1026 00:53:33,410 --> 00:53:35,990 jste mohli přistupovat tímto způsobem a bylo by to pravděpodobně fungovat. 1027 00:53:35,990 --> 00:53:37,490 Hugh Zabriskie: To je dobrý postřeh. 1028 00:53:37,490 --> 00:53:39,656 Nikdy jsem se snažil, ale byste měli být schopni druhu 1029 00:53:39,656 --> 00:53:45,700 of-- pokud přesměrovat vstupní reproduktor, byste měli být schopni to udělat, jo. 1030 00:53:45,700 --> 00:53:48,360 >> Nějaká poslední otázky? 1031 00:53:48,360 --> 00:53:49,340 Bezva. 1032 00:53:49,340 --> 00:53:51,680 No děkuji kluci tolik za sledování. 1033 00:53:51,680 --> 00:53:52,199 Jsem Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM ZELENÁ: Já jsem Sam. 1035 00:53:52,990 --> 00:53:55,410 Hugh Zabriskie: A tohle je CS50. 1036 00:53:55,410 --> 00:53:56,767