1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM ZÖLD: Üdv mindenkinek. 3 00:00:07,170 --> 00:00:08,640 Üdvözöljük a szemináriumon. 4 00:00:08,640 --> 00:00:10,009 A nevem Sam. 5 00:00:10,009 --> 00:00:11,050 Hugh Zabriskie: Én vagyok Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM ZÖLD: És mi beszélni fogunk ma mintegy JavaScript és a Web Audio API. 7 00:00:17,420 --> 00:00:21,180 Csak indulni, ez egy vázlat A napirenden a szemináriumra. 8 00:00:21,180 --> 00:00:25,350 Fogunk kezdeni beszélni miért kell érdekli a Web 9 00:00:25,350 --> 00:00:30,130 Audio API, miért JavaScript A nyelvi, amire szükség van rá, 10 00:00:30,130 --> 00:00:32,619 majd beszélni JavaScript essentials-- így, mint, 11 00:00:32,619 --> 00:00:34,800 végigvezeti néhány nyelvének alapjait, 12 00:00:34,800 --> 00:00:37,290 majd beszélni a audio API magas szinten. 13 00:00:37,290 --> 00:00:41,140 Aztán, Hugh fog beszélni néhány a szakaszában a hangmérnöki 14 00:00:41,140 --> 00:00:45,509 majd demo ez a félelmetes sequencer projekt épített és mutassa meg a kódot. 15 00:00:45,509 --> 00:00:48,050 És akkor, mi lesz ideje kérdések végére az emberek 16 00:00:48,050 --> 00:00:49,593 akik itt élnek. 17 00:00:49,593 --> 00:00:50,540 >> Hugh Zabriskie: Cool. 18 00:00:50,540 --> 00:00:50,990 >> SAM ZÖLD: Cool. 19 00:00:50,990 --> 00:00:51,383 >> Hugh Zabriskie: Cool. 20 00:00:51,383 --> 00:00:52,170 Én majd fel. 21 00:00:52,170 --> 00:00:54,960 >> SAM ZÖLD: Szóval, kezdjük az elején. 22 00:00:54,960 --> 00:00:57,840 Tehát az egyik legjobb dolog a Web Audio API 23 00:00:57,840 --> 00:01:00,480 az, hogy nincs felállított szükséges. 24 00:01:00,480 --> 00:01:04,230 Jön beépítve a legtöbb modern böngésző, 25 00:01:04,230 --> 00:01:08,630 beleértve a Chrome, Edge, egy egész csomó others-- összes közül 26 00:01:08,630 --> 00:01:12,650 hogy a nagy részei ember használja ma. 27 00:01:12,650 --> 00:01:14,807 Szóval nincs létre, eltekintve csak egyre 28 00:01:14,807 --> 00:01:16,890 egy webszerver megy, a az induláshoz dolgozik 29 00:01:16,890 --> 00:01:18,420 a projekt, ami nagyszerű. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Javasoljuk, csinos erősen, hogy Ön szerint 32 00:01:24,190 --> 00:01:26,530 a Chrome JavaScript webfejlesztés, 33 00:01:26,530 --> 00:01:30,260 csak azért, mert a fejlesztő szerszámok igazán erős. 34 00:01:30,260 --> 00:01:33,220 Példaként hogy mire is gondolunk azzal nyit a JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- ha bemegy Chrome és nézd meg bármelyik weboldalon, 36 00:01:38,600 --> 00:01:43,897 és a bal gombbal Elem vizsgálata, majd 37 00:01:43,897 --> 00:01:46,730 megy ez a kis legördülő itt és rákattint konzol, 38 00:01:46,730 --> 00:01:50,660 látni fogja, mit nyit néz ki egy csomó, mint egy parancssort, hogy 39 00:01:50,660 --> 00:01:53,720 Lehet látni a Mac, illetve az azonosító. 40 00:01:53,720 --> 00:01:59,260 És csak úgy, tudjuk típusú parancsok itt, mint a Clear, 41 00:01:59,260 --> 00:02:01,350 és más parancsokat, mint ezt. 42 00:02:01,350 --> 00:02:04,267 Mi is létrehozhatunk változó, mivel később látni fogjuk a JavaScript. 43 00:02:04,267 --> 00:02:07,100 És így bármit tehetünk a JavaScript, amit tehetünk a konzol, 44 00:02:07,100 --> 00:02:11,430 és ez egy szuper jól jön, kezdj el játszani körül API-k 45 00:02:11,430 --> 00:02:15,760 és egyre kényelmesebb JavaScript rögtön a denevér. 46 00:02:15,760 --> 00:02:18,290 Nem felállított szükséges, ami igazán szép. 47 00:02:18,290 --> 00:02:18,790 Hűvös. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Fantasztikus. 50 00:02:22,880 --> 00:02:24,780 >> Tehát csak még egy dolog, hogy adjunk. 51 00:02:24,780 --> 00:02:27,780 Ha bármilyen questions-- vannak sokan közületek, akik nincsenek itt élni, 52 00:02:27,780 --> 00:02:31,232 nyugodtan írd us-- ezeknek a mi e-mail címeket. 53 00:02:31,232 --> 00:02:33,190 Ha kérdése van nem akarja feltenni nekünk, 54 00:02:33,190 --> 00:02:36,160 mint, oh van egy bug a kódomat, vagy valami 55 00:02:36,160 --> 00:02:39,270 ez egy kicsit pontosabb, Talán a Google is az első. 56 00:02:39,270 --> 00:02:42,340 Van egy csomó nagyszerű források a Web Audio API odakint. 57 00:02:42,340 --> 00:02:44,089 Ez igazán jól dokumentálni és ez alatt 58 00:02:44,089 --> 00:02:47,194 által használt egy csomó ember ipar, és az emberek, akik csak 59 00:02:47,194 --> 00:02:48,610 épület szórakoztató dolgokat a maguk számára. 60 00:02:48,610 --> 00:02:51,306 Így nem kell sokat A források odakinn. 61 00:02:51,306 --> 00:02:53,040 Fantasztikus. 62 00:02:53,040 --> 00:02:56,100 >> Cool, hogy miért a Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Ez az ábra egy kicsit Az evolúció a módja 64 00:02:59,840 --> 00:03:04,100 hang az interneten nőtt az idő múlásával. 65 00:03:04,100 --> 00:03:13,080 Bgsound volt, mint az eredeti HTML tag hogy az Internet Explorer támogatására használják fel. 66 00:03:13,080 --> 00:03:16,790 Csak engedélyezett elég alap hangok, A funkcionalitás nem volt túl erős, 67 00:03:16,790 --> 00:03:19,380 és nem lehetett csinálni bonyolult szekvenálás, 68 00:03:19,380 --> 00:03:21,890 vagy ellenőrzik, ha a hang kezdett és megállt nagyon erőteljesen. 69 00:03:21,890 --> 00:03:23,930 Tehát, ez nem volt különösebben jól fejlett. 70 00:03:23,930 --> 00:03:27,470 Majd ezt követően, a Flash jött along-- amely 71 00:03:27,470 --> 00:03:31,712 Biztos vagyok benne, hogy a srácok számára ismerős A Flash-- talán nem így működik, 72 00:03:31,712 --> 00:03:32,920 de már biztosan látta. 73 00:03:32,920 --> 00:03:35,586 Van, hogy frissítse a Flash Plug-in, minden ilyen dolgot, 74 00:03:35,586 --> 00:03:40,110 és hogy biztosan kiterjesztett tartományban Az elérhető funkciót. 75 00:03:40,110 --> 00:03:45,370 De ha a felhasználó telepíti egy plug-in határozottan 76 00:03:45,370 --> 00:03:48,480 Egy hátránya beleértve a Flash az alkalmazásban, ugye? 77 00:03:48,480 --> 00:03:52,410 Mert akkor te függ felhasználói megy, és megállapította, a plug-in, 78 00:03:52,410 --> 00:03:54,660 és valószínűleg a bekapcsolás ki ez az extra lépés 79 00:03:54,660 --> 00:03:56,640 azok, hogy kell használni a app. 80 00:03:56,640 --> 00:04:01,270 És akkor ott lehet egy frissítést hogy eltöröm a teljes alkalmazás, 81 00:04:01,270 --> 00:04:03,880 és ez végül is egy rémálom a fejlesztő is. 82 00:04:03,880 --> 00:04:06,230 Szóval ez volt a barikádot. 83 00:04:06,230 --> 00:04:10,480 >> És azután, hogy jött, A HTML audio tag, amely 84 00:04:10,480 --> 00:04:16,579 egyik jellemzője, modernebb HTML-- amely minden bizonnyal lehetővé tette sokkal több dolgot, 85 00:04:16,579 --> 00:04:20,050 de még a dolog, amit tehetünk, Volt egy kicsit korlátozza magát 86 00:04:20,050 --> 00:04:22,730 Ennek eredményeként a dolgok hogy a HTML képes. 87 00:04:22,730 --> 00:04:26,060 Tehát amikor a JavaScript API, a Web Audio API, 88 00:04:26,060 --> 00:04:29,290 szabvánnyá vált gyakorolni az egész böngészőt, 89 00:04:29,290 --> 00:04:32,490 Tényleg bővült a készlet A lehetőségek a fejlesztők 90 00:04:32,490 --> 00:04:36,590 hogy igazán bele épület klassz dolog az interneten. 91 00:04:36,590 --> 00:04:39,220 Hosszú ideig ott volt Már nagyon masszív szerszámok 92 00:04:39,220 --> 00:04:44,360 A natív audió alkalmazások, általam elvártnál mindenki tudja GarageBand, 93 00:04:44,360 --> 00:04:48,360 és akkor nyilván több professzionális hangkeverő alkalmazások, 94 00:04:48,360 --> 00:04:49,640 és az ilyen dolgok. 95 00:04:49,640 --> 00:04:52,690 De nem volt nagyon jó Cloud-- nem 96 00:04:52,690 --> 00:04:55,811 Cloud, igen, azt hiszem, Cloud-- webalapú platform 97 00:04:55,811 --> 00:04:58,310 amely lehetővé tenné a fejlesztők számára alkalmazásokat készíthetnek az emberek 98 00:04:58,310 --> 00:05:00,570 csinálni hangkeverés. 99 00:05:00,570 --> 00:05:03,960 És ahogy megmutatja Később, a Web Audio API 100 00:05:03,960 --> 00:05:07,470 lehetővé teszi a nagyon erős dolgokat megtörténni nagyon egyszerűen, 101 00:05:07,470 --> 00:05:09,597 ami elég jó. 102 00:05:09,597 --> 00:05:12,680 Szóval ez az utasítás, hogy miért kell nézni a többi szeminárium, 103 00:05:12,680 --> 00:05:14,350 alapvetően. 104 00:05:14,350 --> 00:05:17,880 >> És most, fogok beszélni Néhány JavaScript-- csak az alapvető elemeket 105 00:05:17,880 --> 00:05:20,240 a nyelv, úgy, hogy mi lehet ugyanazon az oldalon 106 00:05:20,240 --> 00:05:22,470 amikor arról beszélünk, a API egy kicsit később. 107 00:05:22,470 --> 00:05:23,260 Hűvös. 108 00:05:23,260 --> 00:05:26,192 >> Szóval, ez egy összefoglaló. 109 00:05:26,192 --> 00:05:27,150 Elfelejtettem ezt itt volt. 110 00:05:27,150 --> 00:05:27,510 Igen. 111 00:05:27,510 --> 00:05:27,870 >> Hugh Zabriskie: Van két diák itt. 112 00:05:27,870 --> 00:05:30,245 >> SAM ZÖLD: Ez az összefoglaló néhány korlátozások 113 00:05:30,245 --> 00:05:35,220 a másik kötési, régi módszerek. 114 00:05:35,220 --> 00:05:37,828 És akkor most már ezek a dolgok. 115 00:05:37,828 --> 00:05:40,011 Hűvös. 116 00:05:40,011 --> 00:05:40,510 Fantasztikus. 117 00:05:40,510 --> 00:05:43,200 >> Szóval, a JavaScript lényegre. 118 00:05:43,200 --> 00:05:47,230 Kezdjük az elején, van egy elég jelentős különbség 119 00:05:47,230 --> 00:05:49,940 A JavaScript szemben egy nyelv, mint a C, az úton 120 00:05:49,940 --> 00:05:52,050 hogy a változók jönnek létre. 121 00:05:52,050 --> 00:05:55,634 Tehát a C, hozzá vagyunk szokva, hogy miután begépelni a változókat, ugye? 122 00:05:55,634 --> 00:05:57,800 És nem úgy értem, típus, mint írja be őket, úgy értem típus 123 00:05:57,800 --> 00:06:01,900 mint sorolják őket egy type-- jelentését mint egy int, float, egy kar. 124 00:06:01,900 --> 00:06:05,210 A C-ben voltunk igazán használják kelljen létrehozni egy változó 125 00:06:05,210 --> 00:06:09,690 majd tartsa be az ilyen típusú a Egész idő alatt, hogy használjuk a változót. 126 00:06:09,690 --> 00:06:13,990 És ez nem feltétlenül rosszabb, de ez talán nehezebb használni. 127 00:06:13,990 --> 00:06:16,190 Az egyik nagyszerű tulajdonsága A JavaScript is 128 00:06:16,190 --> 00:06:19,740 hogy a változók az úgynevezett "dinamikus típusú", amely 129 00:06:19,740 --> 00:06:22,500 azt jelenti, hogy tudok létrehozni változó, hogy szintaktikai, 130 00:06:22,500 --> 00:06:25,800 varX egyenlő 5, például. 131 00:06:25,800 --> 00:06:27,790 Hogy az eredetileg teremt egy egész szám változó-- 132 00:06:27,790 --> 00:06:29,870 jobb alatta a motorháztető somewhere-- de 133 00:06:29,870 --> 00:06:33,040 Módosíthatja, hogy a változó utalni egy string 134 00:06:33,040 --> 00:06:35,820 nem csinál semmit, mint új változó létrehozása. 135 00:06:35,820 --> 00:06:37,880 Nem kell aggódni arról a típusú változó. 136 00:06:37,880 --> 00:06:45,440 JavaScript tudja, hogy a típus megváltozott, és ez történik dinamikusan. 137 00:06:45,440 --> 00:06:48,510 >> Szóval, vannak előnyei és hátrányai, hogy 138 00:06:48,510 --> 00:06:51,250 mint bárki más, aki dolgozott JavaScript egy darabig talán tudja. 139 00:06:51,250 --> 00:06:53,600 Vannak esetek, amikor lehet, hogy véletlenül 140 00:06:53,600 --> 00:06:57,720 változtatni a változó típusát és nem tudja kezelni az ilyen típusú változó, 141 00:06:57,720 --> 00:07:01,120 majd a JavaScript lehet crash-- vagy kivételt 142 00:07:01,120 --> 00:07:06,070 dobni, mert akkor már a megfelelő típusú, amikor vársz egy típusú. 143 00:07:06,070 --> 00:07:07,040 Hűvös. 144 00:07:07,040 --> 00:07:11,470 >> Szóval, scoping-- ami olyan, mint, ha emlékszem az első hetekben során, 145 00:07:11,470 --> 00:07:15,420 utal, hogy láthatóvá változó van, és milyen területen a kódot. 146 00:07:15,420 --> 00:07:18,400 Minden, ami úgy néz ki, nagyon hasonlít hogy hogyan néz ki a C- 147 00:07:18,400 --> 00:07:24,755 Tehát változók távcsöves általában belül kapcsoszárójele egy függvényen belül, 148 00:07:24,755 --> 00:07:27,005 majd ott is globálisan hatókörű változók 149 00:07:27,005 --> 00:07:29,171 are-- ha írsz egy változó kívül egy függvény, 150 00:07:29,171 --> 00:07:31,790 látható lesz a teljes szöveget. 151 00:07:31,790 --> 00:07:35,840 >> Az egyik különbség JavaScript és a C, különösen, 152 00:07:35,840 --> 00:07:40,280 az, hogy ha kijelentem globális változó bárhol egy szöveges fájlt 153 00:07:40,280 --> 00:07:43,324 ez látható minden funkció ezen belül a szöveges fájlt. 154 00:07:43,324 --> 00:07:44,240 Ez igaz, ugye? 155 00:07:44,240 --> 00:07:46,330 >> Hugh Zabriskie: Ja. 156 00:07:46,330 --> 00:07:49,120 >> SAM ZÖLD: Szóval ez is egy kicsit kicsit funky képest C, 157 00:07:49,120 --> 00:07:52,660 ahol mindig kellett a változócsoporttal feletti települések 158 00:07:52,660 --> 00:07:53,770 használták őket. 159 00:07:53,770 --> 00:07:57,957 Ez nem szabály, ami érvényesíthető már, így, egy kicsit más. 160 00:07:57,957 --> 00:08:00,540 És ismét csak reemphasize, globális versus helyi variables-- 161 00:08:00,540 --> 00:08:03,457 Nagyon hasonló a C. Lehetne két változó azonos nevű, 162 00:08:03,457 --> 00:08:06,540 és egy nevük árnyék Egy helyi változót, ha egyikük 163 00:08:06,540 --> 00:08:07,546 volt globális. 164 00:08:07,546 --> 00:08:09,420 Szóval, hasonló jellegű problémákat, hogy néhányan közületek 165 00:08:09,420 --> 00:08:11,920 Lehet, hogy befut néhány a probléma határozza eddig. 166 00:08:11,920 --> 00:08:14,450 Cool, úgyhogy ez változó. 167 00:08:14,450 --> 00:08:20,310 >> Ellenőrzési folyamatok, azaz tetszik, ha-else-- logikai stuff-- és hurkok. 168 00:08:20,310 --> 00:08:24,510 Így kezdeni, ez az, amit az if-else nyilatkozatok néz ki, mint a JavaScript. 169 00:08:24,510 --> 00:08:29,750 Hol van a különböző dolgokat A vonalak nem fontos. 170 00:08:29,750 --> 00:08:34,409 Ez csak az egyik egyezmények Az, hogy hogyan szerkezete kódot. 171 00:08:34,409 --> 00:08:38,634 Csakúgy, mint a C-ben van egy "ha", egy zárójel nyilatkozatot. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 Nem ezt akartam csinálni. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Megcsináltam újra. 176 00:08:45,550 --> 00:08:46,841 >> Hugh Zabriskie: Próbál lépni? 177 00:08:46,841 --> 00:08:49,770 SAM ZÖLD: Nem, nem vagyok csak próbál nagyításhoz. 178 00:08:49,770 --> 00:08:50,660 Nem számít. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Szóval, van egy "ha" nyilatkozatot, és van egy feltétele annak belsejébe 181 00:08:59,370 --> 00:09:03,130 amely azt vizsgálja, hogy igaz vagy hamis, és meghatározza, hogy vagy nem 182 00:09:03,130 --> 00:09:04,510 belépünk, hogy kódtömb. 183 00:09:04,510 --> 00:09:09,860 És hasonlóképpen, van egy else-if és Egy más, mint mi vagyunk szokva, hogy a C. 184 00:09:09,860 --> 00:09:14,010 >> Akkor is kell nagyon kényelmes jobb kapásból a hurkok, 185 00:09:14,010 --> 00:09:16,440 mert ők is néznek egy csomó, mint a C néz ki. 186 00:09:16,440 --> 00:09:19,600 De észre fogod venni ismét, hogy van, ahelyett, hogy int inicializálásától, 187 00:09:19,600 --> 00:09:22,570 mi var inicializálónak. 188 00:09:22,570 --> 00:09:24,650 És azt hiszem ezt hogy legyen óvatos, hogy 189 00:09:24,650 --> 00:09:28,460 Biztos, hogy nem változtathatja meg az értéket Az I-re egy int, hogy egy string, 190 00:09:28,460 --> 00:09:31,780 például azért, mert ez fog furcsa viselkedést talán nem 191 00:09:31,780 --> 00:09:32,280 számíthat. 192 00:09:32,280 --> 00:09:35,750 De ez kell nézni elég ismerős, valamint. 193 00:09:35,750 --> 00:09:39,460 >> Szóval ez az, ahol a dolgok kezdenek hogy egy kicsit őrült JavaScript 194 00:09:39,460 --> 00:09:44,920 valaki, aki majd egy háttérben a C. Vannak olyan funkciók, 195 00:09:44,920 --> 00:09:48,070 A JavaScript és van egy út arra, hogy függvényeket úgy néz ki, 196 00:09:48,070 --> 00:09:50,361 fajta hasonlít a C, és Aztán ott van egy másik, 197 00:09:50,361 --> 00:09:52,450 néz ki, milyen más. 198 00:09:52,450 --> 00:09:54,930 >> Az első változat, amelyből láthatjuk itt, 199 00:09:54,930 --> 00:09:59,260 a fajta C-szerű, ahol azt mondjuk, ez egy olyan funkció, 200 00:09:59,260 --> 00:10:01,490 adja meg a nevét, hogy A számos érvet, 201 00:10:01,490 --> 00:10:05,150 majd a tartalmát a funkció bemenni azok, zárójelek segítségével. 202 00:10:05,150 --> 00:10:08,850 Meglátjuk példát érvek pillanatok alatt. 203 00:10:08,850 --> 00:10:13,420 >> Mivel a következő sorban, azt látjuk, ó, itt egy változó úgynevezett "myFunction" 204 00:10:13,420 --> 00:10:17,546 és mi ér fel vele, hogy ez a generikus thing-- function--, hogy 205 00:10:17,546 --> 00:10:19,170 úgy tűnik, nem kell semmit folyik. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Az ok, hogy ez más mint a C, hogy a JavaScript 208 00:10:26,080 --> 00:10:30,040 van egy úgynevezett funkcionális nyelv, vagy funkcionális elemek, ami azt jelenti, 209 00:10:30,040 --> 00:10:33,510 hogy a funkciók valóban értékeket. 210 00:10:33,510 --> 00:10:39,520 És ez azt jelenti, hogy meg tudjuk állítani Változó, hogy megegyezzen egy funkciót 211 00:10:39,520 --> 00:10:43,210 majd lépni, hogy a funkció körül, add meg azt, 212 00:10:43,210 --> 00:10:46,550 csinálni mindenféle dolgok így a funkciókat. 213 00:10:46,550 --> 00:10:49,682 >> Egy másik dolog, hogy note-- funkciók vannak írva 214 00:10:49,682 --> 00:10:51,140 egy bizonyos számú érveket. 215 00:10:51,140 --> 00:10:54,056 Meglátjuk egy példa a függvény egy érv a következő dián. 216 00:10:54,056 --> 00:10:56,720 De a JavaScript nem fog kiabálni veled, ha megpróbálod 217 00:10:56,720 --> 00:10:59,330 függvények használatára a megfelelő számú argumentummal. 218 00:10:59,330 --> 00:11:05,310 Akkor csak megtesz annak érdekében, hogy csinálni, ami azt jelenti, hogy ha elmúlik, 219 00:11:05,310 --> 00:11:09,410 hívja a funkciót, hogy arra számít, érv nem érv, minden, 220 00:11:09,410 --> 00:11:13,990 fog történni akkor megteszem a legjobb hogy megpróbálja végrehajtani a kódot, 221 00:11:13,990 --> 00:11:16,541 és ha ez végül fut egy kivételt, vagy hiba, 222 00:11:16,541 --> 00:11:19,790 ez lesz dobni ezt a kivételt, és csak tartani going-- amely csak az egyik módja 223 00:11:19,790 --> 00:11:21,070 hogy a JavaScript működik. 224 00:11:21,070 --> 00:11:21,781 Igen. 225 00:11:21,781 --> 00:11:24,207 >> Közönség: Mi történik, ha Túl sok érv? 226 00:11:24,207 --> 00:11:26,040 SAM ZÖLD: Tehát a kérdés az volt, mi történik 227 00:11:26,040 --> 00:11:27,380 ha túl sok érv? 228 00:11:27,380 --> 00:11:29,171 És a válasz az, hogy JavaScript majd csak 229 00:11:29,171 --> 00:11:32,120 figyelmen kívül hagyja az is, hogy után is arra számít. 230 00:11:32,120 --> 00:11:36,420 Ez megpróbálom futtatni a függvényt hívni, mintha ez csak az első kettő. 231 00:11:36,420 --> 00:11:37,075 Jobbra? 232 00:11:37,075 --> 00:11:37,700 >> Hugh Zabriskie: Így van, igen. 233 00:11:37,700 --> 00:11:39,449 Hasonlóképpen, ha ott Túl kevés érvek, 234 00:11:39,449 --> 00:11:42,640 ez csak egyfajta ad null minden érvek nem rendelkezik semmilyen értékek 235 00:11:42,640 --> 00:11:43,660 A. 236 00:11:43,660 --> 00:11:45,810 >> SAM ZÖLD: Amely valóban hasznos lehet, ha 237 00:11:45,810 --> 00:11:49,060 akarsz írni egy függvényt, amely tart egy változó számú érveket. 238 00:11:49,060 --> 00:11:55,830 Beállíthatjuk az alapértelmezett értékek a meghatározása a függvény, 239 00:11:55,830 --> 00:11:59,060 és ez a tényről hogy a bemeneti nincs ott. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Szóval szeretnék beszélni egy kicsit többet erről az utolsó golyót 242 00:12:04,000 --> 00:12:05,541 pont, amely a funkciók értékeket. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Ez egy példa, amely egy kicsit észbontó 245 00:12:11,010 --> 00:12:14,880 ha csak olvasni, és nem hiszem, arról, hogy mi folyik itt egy pillanatra. 246 00:12:14,880 --> 00:12:17,910 Szóval, nézzük csak meg az első sorban van. 247 00:12:17,910 --> 00:12:24,360 Van ez a változó, f1, hogy azt mondjuk, egy olyan funkció, hogy nem ez a dolog. 248 00:12:24,360 --> 00:12:28,535 És a tartalmát a függvény vannak console.log ("hello"). 249 00:12:28,535 --> 00:12:32,220 Azt lehet gondolni console.log a JavaScript megfelelője printf. 250 00:12:32,220 --> 00:12:35,510 Tehát mi fog történni, ha ezt a kódot a mi böngésző, 251 00:12:35,510 --> 00:12:37,530 ez lesz nyomtassa ki a húr. 252 00:12:37,530 --> 00:12:39,342 Én bizonyítani tudja, hogy. 253 00:12:39,342 --> 00:12:42,300 Közönség: A napló, mégis, ez azt értem ez alatt felvett valahol? 254 00:12:42,300 --> 00:12:42,550 SAM ZÖLD: Igen. 255 00:12:42,550 --> 00:12:44,216 Szóval én megmutatom, mi fog történni. 256 00:12:44,216 --> 00:12:48,085 Szóval a kérdés az volt, hogy mit jelent log jelent? 257 00:12:48,085 --> 00:12:51,262 >> Hugh Zabriskie: Szóval console.log olyan, mint a printf C. 258 00:12:51,262 --> 00:12:52,970 SAM ZÖLD: Szóval console.log olyan, mint a printf, 259 00:12:52,970 --> 00:12:59,240 tehát ha én ezt console.log ("hello"), és arra kérem, hogy a "Hello" 260 00:12:59,240 --> 00:13:00,730 lesz kinyomtatható, hogy a konzol. 261 00:13:00,730 --> 00:13:03,340 Ez a konzol. 262 00:13:03,340 --> 00:13:05,930 Olyan, mint a printf, ahol nyomtat a szabványos ki. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 És majd meglátjuk, egy perc, de ez valójában 265 00:13:11,230 --> 00:13:16,529 utalva a konzol tárgy, és az eljárás meghívásakor az objektumon. 266 00:13:16,529 --> 00:13:18,320 Majd, hogy több értelme Egy perc, amikor 267 00:13:18,320 --> 00:13:20,660 eljutni beszél tárgyak JavaScript, 268 00:13:20,660 --> 00:13:22,509 de azt gondoltam, csak annyit, hogy. 269 00:13:22,509 --> 00:13:24,300 Hugh Zabriskie: vagyunk használt C, right-- 270 00:13:24,300 --> 00:13:27,580 szoktunk írni egy nagy programot A fő, hogy semmit. 271 00:13:27,580 --> 00:13:30,700 De mi jó a JavaScript te ez a fajta értelmező, 272 00:13:30,700 --> 00:13:33,620 fut valós időben, így Mindössze sorról sorra, 273 00:13:33,620 --> 00:13:35,320 ez is csak értelmezni, hogy a helyszínen. 274 00:13:35,320 --> 00:13:37,403 És nyomon követi a dolog, hogy futok, 275 00:13:37,403 --> 00:13:41,620 így ez egy nagyon hasznos eszköz Használja console.log, vagy a konzol, 276 00:13:41,620 --> 00:13:46,870 Általában, az csak játék körül a JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM ZÖLD: Szóval megy vissza erre example-- második kódsort 278 00:13:51,420 --> 00:13:55,320 itt elég elképesztő a fejemben. 279 00:13:55,320 --> 00:13:59,790 Amikor először olvastam ezt, Olyan volt, mint, hogy mi folyik itt? 280 00:13:59,790 --> 00:14:04,580 Tehát mi történik az, hogy ez függvény deklaráció azt mondja, 281 00:14:04,580 --> 00:14:10,170 Van olyan függvény f2 ami vár egyik érv, f, 282 00:14:10,170 --> 00:14:12,990 és akkor kéri, hogy függvény, f, amelyek 283 00:14:12,990 --> 00:14:17,652 átadták meg azt paraméterek nélkül is. 284 00:14:17,652 --> 00:14:19,110 Szóval, hogy megtévesztő lett volna. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Ha megértjük ezt az f2 veszi f1 érvként, majd belsejét f2, 287 00:14:28,400 --> 00:14:31,190 f kap called-- amelyek segítségével hogy ezt a kódsort, 288 00:14:31,190 --> 00:14:34,192 miután e két kódot, az eredmények "hello" 289 00:14:34,192 --> 00:14:35,400 nyomtatás alatt a konzol. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Az a tény, hogy tudjuk átadni funkciók körül, mint érték 292 00:14:44,910 --> 00:14:47,870 végül is az egyik leginkább nagy teljesítményű funkciók JavaScript 293 00:14:47,870 --> 00:14:49,700 mint egy programozási nyelv. 294 00:14:49,700 --> 00:14:52,782 Kívül minden a félelmetes dolgok meg tudja csinálni, 295 00:14:52,782 --> 00:14:54,990 Csak, mint a jellemzője a nyelvi szempontból az utat 296 00:14:54,990 --> 00:14:58,400 hogy ez teszi a dolgokat egyszerű programozni, és lehetővé teszi 297 00:14:58,400 --> 00:15:01,060 A dolgok, amelyek nem különösebben jól illeszkedik a weben, 298 00:15:01,060 --> 00:15:04,500 funkcionális programozás és funkcionális programozási szempontból a JavaScript 299 00:15:04,500 --> 00:15:07,130 az egyik leginkább erőteljes fogalmak 300 00:15:07,130 --> 00:15:11,030 Létezik JavaScript-- ha engem kérdezel. 301 00:15:11,030 --> 00:15:11,960 Hűvös. 302 00:15:11,960 --> 00:15:13,534 >> Szóval, a következő dolog. 303 00:15:13,534 --> 00:15:16,450 Azon túlmenően, hogy a funkcionális, ott is elemei JavaScript 304 00:15:16,450 --> 00:15:20,510 amelyek az objektum-orientált, amely egyike a nagyon 305 00:15:20,510 --> 00:15:23,800 népszerű buzz szó a számítástechnikában. 306 00:15:23,800 --> 00:15:27,040 Objektumorientált programozás egy nagyon népszerű dolog. 307 00:15:27,040 --> 00:15:34,210 JavaScript van egy változata, amely, ahol Azt hiszem minden értéket is 308 00:15:34,210 --> 00:15:41,475 egy tárgy, ami azt jelenti, hogy minden tárgy pakolások össze néhány értékek száma. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Tehát értékek, amelyek egyszerűek, mint a egy egész szám, mint varX egyenlő 5, 311 00:15:49,750 --> 00:15:52,250 azt a tárgyat csak titokban, hogy egy értéket. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> De azt is képzelni olyan helyzetet, where-- el tudunk képzelni helyzeteket C 314 00:15:59,036 --> 00:16:00,910 ahol szerettünk volna csinálni valamit struktúrákat, 315 00:16:00,910 --> 00:16:03,285 például, hogy a pakolások több értékeket össze és teszi 316 00:16:03,285 --> 00:16:05,870 ez tényleg könnyen át a dolgokat. 317 00:16:05,870 --> 00:16:09,270 Ez az, amikor egy objektum a JavaScript. 318 00:16:09,270 --> 00:16:12,340 >> Fontos megjegyezni amikor azt mondom, hogy a tárgyak csomagolva 319 00:16:12,340 --> 00:16:15,330 néhány értékek száma együtt, hogy a funkciók is 320 00:16:15,330 --> 00:16:21,506 értékek, ami azt jelenti, hogy a funkciók szintén belsejében egy JavaScript objektum. 321 00:16:21,506 --> 00:16:26,910 És az ok, ami fontos az, hogy míg mi gyakran 322 00:16:26,910 --> 00:16:30,290 gondolni eljárás meghívásakor egy objektumot, ez 323 00:16:30,290 --> 00:16:35,200 Egy népszerű kifejezés más népszerű objektum-orientált nyelvek, 324 00:16:35,200 --> 00:16:39,330 Az egyik különbség az, hogy Ez a módszer van JavaScript 325 00:16:39,330 --> 00:16:47,270 van egy tárolt érték belsejében egy tárgy amely bizonyos action-- esetleg 326 00:16:47,270 --> 00:16:51,850 az egyéb értékek, amelyek belsejében az adott objektum, de nem feltétlenül. 327 00:16:51,850 --> 00:16:56,930 Így el lehet képzelni olyan helyzetet, én Szerintem egy kicsit egy őrült módon, 328 00:16:56,930 --> 00:17:02,990 ahol nevezett eljárás egy objektum egy másik objektum, például. 329 00:17:02,990 --> 00:17:06,010 Szóval, ez egy kicsit funky ilyen módon. 330 00:17:06,010 --> 00:17:09,369 >> És akkor is változtatni módszerek társított egy tárgy 331 00:17:09,369 --> 00:17:13,740 hozzárendelésével, hogy a módszer egy új funkció, amely szintén 332 00:17:13,740 --> 00:17:18,250 eléggé különbözik az egyéb objektum-orientált nyelvek, ahol 333 00:17:18,250 --> 00:17:21,410 Egyszer kijelentjük egy tárgy és példányosítani meg, 334 00:17:21,410 --> 00:17:25,839 nem tudunk változtatni a módszereket, amelyek társított objektumok többé. 335 00:17:25,839 --> 00:17:28,680 Szóval ez eléggé különbözik. 336 00:17:28,680 --> 00:17:29,570 Hűvös. 337 00:17:29,570 --> 00:17:34,010 >> Tehát itt egy példa, az első, egy tárgy akcióban. 338 00:17:34,010 --> 00:17:36,390 Ez az úgynevezett egy általános objektum, amely 339 00:17:36,390 --> 00:17:39,460 azt jelenti, hogy nem rendelkezik semmilyen Különösen nevet és nem egy osztály, 340 00:17:39,460 --> 00:17:42,190 ez csak néhány csomagolópapír értékek. 341 00:17:42,190 --> 00:17:49,790 És az is, hogy úgy néz ki, van, van Ez a külső pár kapcsoszárójele itt 342 00:17:49,790 --> 00:17:57,950 azt jelzik, hogy a JavaScript és azt mondják, ez egy tárgy. 343 00:17:57,950 --> 00:18:02,130 Az értékek belsejébe mindegyike értékek belülről 344 00:18:02,130 --> 00:18:04,590 Az objektum ténylegesen csomagolni együtt. 345 00:18:04,590 --> 00:18:09,180 És aztán az objektumot, akkor már csak kulcs érték párok, 346 00:18:09,180 --> 00:18:13,880 hol a kulcs nevére utal értékének belsejében az objektum, 347 00:18:13,880 --> 00:18:16,790 és a többi side-- szemben a vastagbél here-- 348 00:18:16,790 --> 00:18:19,850 a tényleges érték hogy kell tárolni. 349 00:18:19,850 --> 00:18:26,210 >> Így látod, hogy itt van egy kulcs nevű FN értéke sam, 350 00:18:26,210 --> 00:18:29,430 követ vessző, mondván rá a következő bejegyzést. 351 00:18:29,430 --> 00:18:33,560 Aztán egyik legfontosabb nevű ln, értékű zöld, 352 00:18:33,560 --> 00:18:35,840 követ vessző, majd a "print" 353 00:18:35,840 --> 00:18:43,209 ami megy, hogy egy függvény értéke hogy megy, hogy ezt a kódsort. 354 00:18:43,209 --> 00:18:45,500 Vessünk egy lépést hátra, és csomagolja ki, mi folyik itt. 355 00:18:45,500 --> 00:18:47,280 Szóval ez egy kicsit bonyolultabb, és látjuk valami újat 356 00:18:47,280 --> 00:18:48,071 elsö alkalommal. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 Az "ez" kulcsszó az új dolog látunk itt és mit is csinál ez 359 00:18:55,065 --> 00:19:00,540 van, utal, hogy a jelenlegi ellenzi az hatálya, ugye? 360 00:19:00,540 --> 00:19:03,990 Tehát amikor azt mondjuk, ez a rámutat egészen vissza 361 00:19:03,990 --> 00:19:08,140 ennek az egész object-- amikor mi this.fn, 362 00:19:08,140 --> 00:19:11,990 fogunk menni egészen vissza hogy ez a tárgy, menj a fn értéke 363 00:19:11,990 --> 00:19:16,471 és kap sam, húzza végig vissza, bottal, hogy itt, és majd lépni. 364 00:19:16,471 --> 00:19:19,838 >> Közönség: Tehát a visszakeresés, az hogy kész, mert a paraméter 365 00:19:19,838 --> 00:19:20,621 meghatározás? 366 00:19:20,621 --> 00:19:23,870 SAM ZÖLD: Szóval a kérdés az volt, a lehívása történik, mert a paraméter 367 00:19:23,870 --> 00:19:24,727 meghatározás? 368 00:19:24,727 --> 00:19:25,435 Igen, abszolút. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Mi fog történni itt, az az, ez a pont azt mondja, hogy a JavaScript, 371 00:19:32,470 --> 00:19:39,990 OK, kapok valamilyen érték ettől a tárgyat magam. 372 00:19:39,990 --> 00:19:46,375 És akkor majd keresnek egy bejegyzést nevezett fn, és ha talál, 373 00:19:46,375 --> 00:19:48,470 ez lesz visszatérni, hogy value-- igen, akkor Sam. 374 00:19:48,470 --> 00:19:51,540 De azt is el lehetne gépelt valamit, ami nem az itt meghatározott, 375 00:19:51,540 --> 00:19:54,090 és akkor is csak visszatér undefined-- amely 376 00:19:54,090 --> 00:19:58,250 egy dolog, hogy JavaScript csinálni, ami lehet juttatások, 377 00:19:58,250 --> 00:20:03,190 de ez also-- ha egy elírás, ez vezethet fura hibák. 378 00:20:03,190 --> 00:20:05,617 Szóval akkor csak meg kell találnia bármit is mondani, hogy megtalálják 379 00:20:05,617 --> 00:20:07,700 és ez nem fog panaszkodj, ha nem találják meg. 380 00:20:07,700 --> 00:20:11,390 Ez csak mondom, én nem találják, majd lépni. 381 00:20:11,390 --> 00:20:17,581 Így lenne nem definiált, plusz üres, plusz a vezetéknevét. 382 00:20:17,581 --> 00:20:18,080 Igen. 383 00:20:18,080 --> 00:20:21,070 És akkor azt látjuk, hogy ha aztán menj le és access-- 384 00:20:21,070 --> 00:20:25,450 és felhívjuk tf.print () zárójelben. 385 00:20:25,450 --> 00:20:30,000 Meg fog hívni, hogy a nyomtatási függvény paraméterek nélkül, ugye? 386 00:20:30,000 --> 00:20:34,490 De ha csak azt mondta tf.print () pontosvessző áll, a zárójelek, 387 00:20:34,490 --> 00:20:37,480 minden megtett volna, hogy húzza ki azt a funkciót, az értéket, 388 00:20:37,480 --> 00:20:40,609 de valójában nem nevezte. 389 00:20:40,609 --> 00:20:41,162 Hűvös. 390 00:20:41,162 --> 00:20:42,870 Hugh Zabriskie: Amennyiben teszünk egy tárgyat? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: Persze, csináljuk meg. 392 00:20:44,161 --> 00:20:48,750 Szóval lehet mozgatni ezt Például, hogy a konzol. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 El tudjuk képzelni, hogy van egy tárgy. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Szóval ez egy egyszerű tárgy. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Ez egy olyan objektum, amely két értékeket két kulccsal, két fontos érték 399 00:21:11,050 --> 00:21:12,710 párok. 400 00:21:12,710 --> 00:21:21,850 Így tudok majd elérni a tárolt érték belsejében ez a tárgy csinál x.x1, 401 00:21:21,850 --> 00:21:23,400 például, és kapok 1 vissza. 402 00:21:23,400 --> 00:21:29,590 Hasonlóképpen, x.x2, hogy ezt az értéket vissza. 403 00:21:29,590 --> 00:21:33,330 >> És most az igazán klassz dolog, tudom valóban hozzá valamit ez az objektum 404 00:21:33,330 --> 00:21:34,316 miután már létrehozta. 405 00:21:34,316 --> 00:21:36,315 Így el lehet képzelni, hadd mondom, van egy funkciója. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Hugh Zabriskie: Ön kell tennie SHIFT-ENTER. 408 00:21:46,352 --> 00:21:47,643 >> SAM ZÖLD: Ó, ez bosszantó. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Mit tett ez nem tetszik? 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 Essünk neki. 414 00:22:08,691 --> 00:22:09,190 Hűvös. 415 00:22:09,190 --> 00:22:12,840 >> Szóval már csak teremtett Ezt a funkciót, f, hogy 416 00:22:12,840 --> 00:22:17,590 fog menni, hogy a jelenlegi tárgya és nyomtatási this.x1. 417 00:22:17,590 --> 00:22:20,330 Szóval ha csak hívja f által önmagában semmi sem fog 418 00:22:20,330 --> 00:22:26,970 történni, igaz, mert nincs x1 mező a tárgy ez utalva. 419 00:22:26,970 --> 00:22:39,710 De, ha azt mondom, x.f = f, és aztán hívja x.f (), megyek vissza 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Hogy f függvény most objektumhoz társított x, 422 00:22:46,530 --> 00:22:51,800 amely egy kulcsfontosságú úgynevezett X1 társított érték 1, 423 00:22:51,800 --> 00:22:54,570 így ha hívjuk this.x1, ez Megkeresem amit keres 424 00:22:54,570 --> 00:22:56,450 és képes nyomtatni érték el. 425 00:22:56,450 --> 00:22:58,700 Szóval ez csak egy példa Az a fajta őrült dolgokat 426 00:22:58,700 --> 00:23:01,190 meg tudod csinálni a tárgyakat a JavaScript. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Tehát e változat a generikus változata, jelentése 429 00:23:07,560 --> 00:23:13,780 hogy már létrehozott egy objektumról ezzel zárójelek notation-- zárójel jelölést, 430 00:23:13,780 --> 00:23:16,880 rather-- és ez kapóra jön, ha mi csak szeretnénk 431 00:23:16,880 --> 00:23:21,440 az egyik esetben az adott tárgy, hanem mi van, ha azt akarjuk, hogy több mint egy 432 00:23:21,440 --> 00:23:22,210 a hasonló jellegű? 433 00:23:22,210 --> 00:23:24,440 És a válasz, hogy Kérdés, vannak dolgok, 434 00:23:24,440 --> 00:23:26,760 nevezett osztályok JavaScript is. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Mi is létrehozhatunk, hogy a funkció nem valamiféle indítása 437 00:23:36,420 --> 00:23:41,690 Egy idegen tárgy, és azt mondanám, mint, 438 00:23:41,690 --> 00:23:44,550 én class-- így a neve Az újrahasználható object-- 439 00:23:44,550 --> 00:23:47,100 megegyezik a funkció, amely meghatározza azt. 440 00:23:47,100 --> 00:23:52,280 Szóval mi ez egyenlő lenne hogy jelenleg egy objektum, 441 00:23:52,280 --> 00:23:55,930 lenne, mint, kapcsos zárójel, str, vastagbél, 442 00:23:55,930 --> 00:23:59,630 Ez egy szöveg, pontosvessző, kapcsos zárójel. 443 00:23:59,630 --> 00:24:01,880 Ez lenne a generikus objektum Inicializáljuk, 444 00:24:01,880 --> 00:24:06,380 a különbséggel, hogy a következő sorokat hozunk létre egy prototípus, ami 445 00:24:06,380 --> 00:24:11,190 azt jelenti, hogy ez egy gyári kulcsot, hogy ehhez hozzátesszük, hogy a tárgy, 446 00:24:11,190 --> 00:24:13,970 az értéke szerepel itt. 447 00:24:13,970 --> 00:24:20,570 Azt jelenti, hogy, ha létrehozok egy új Például az e MyClass tárgy, 448 00:24:20,570 --> 00:24:27,440 ez lesz a már előre elkészített belsejét ez az érték az úgynevezett str és más értéket 449 00:24:27,440 --> 00:24:32,418 nevezett myprint, ami lesz egy függvény. 450 00:24:32,418 --> 00:24:32,918 Fantasztikus. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Nagy. 453 00:24:37,990 --> 00:24:40,710 Tehát az utolsó dolog, hogy mondanak JavaScript 454 00:24:40,710 --> 00:24:46,430 az, hogy ez tényleg hasznos, amit nevezzük aszinkron műveleteket. 455 00:24:46,430 --> 00:24:52,500 Aszinkron azt jelenti, hogy mi lehet várni egy műveletet 456 00:24:52,500 --> 00:24:57,870 befejezni, mielőtt mi , de lépni, amíg várunk 457 00:24:57,870 --> 00:24:59,690 majd valami történni később. 458 00:24:59,690 --> 00:25:03,480 És mit értek ez alatt van, akkor lehet képzelni olyan helyzetet, ahol 459 00:25:03,480 --> 00:25:06,850 elküld egy kérést néhány webkiszolgáló valahol, 460 00:25:06,850 --> 00:25:09,670 és ez fog küldeni vissza Néhány nagy darab adatok, nem igaz? 461 00:25:09,670 --> 00:25:13,320 És a felhasználó tudta várni a Közben, hogy ez megtörténjen, 462 00:25:13,320 --> 00:25:15,200 és semmi nem lehet folyik abban az időben. 463 00:25:15,200 --> 00:25:18,110 De ez nem egy nagy design, ugye? 464 00:25:18,110 --> 00:25:20,214 Nem akarod, hogy a weboldal fagyasztható. 465 00:25:20,214 --> 00:25:22,380 Mi van, ha a felhasználó szeretné kattintson a legördülő menüben? 466 00:25:22,380 --> 00:25:24,870 Ez nem egy nagy tervezési minta. 467 00:25:24,870 --> 00:25:29,290 Ehelyett alapvetően mi JavaScript nem is mondja, 468 00:25:29,290 --> 00:25:31,870 OK, ezt a műveletet aszinkron. 469 00:25:31,870 --> 00:25:36,520 Szóval tetszik, várjon a háttérben, majd amikor a művelet befejeződött, 470 00:25:36,520 --> 00:25:39,420 hívja a visszahívás function-- hívja néhány funkciót, 471 00:25:39,420 --> 00:25:43,800 van néhány action-- hogy jelezze, hogy a működés vártuk, hogy vessen véget 472 00:25:43,800 --> 00:25:45,520 vége. 473 00:25:45,520 --> 00:25:51,240 És az oka, hogy a szuper erős is, tehetünk valamit, át egy érv, 474 00:25:51,240 --> 00:25:54,440 tenni valamit, és várjon hogy történjen valami. 475 00:25:54,440 --> 00:25:58,970 Aztán egyszer, hogy valami befejezi, akkor hívja a visszahívás. 476 00:25:58,970 --> 00:26:03,300 Ez nagyon hasznos, mert lehetővé teszi velünk csinálni a dolgokat a Web Audio API, 477 00:26:03,300 --> 00:26:07,490 Például, mint terhelés egy audio fájlt egy távoli szerveren 478 00:26:07,490 --> 00:26:11,660 anélkül, hogy várni a teljes audio file betöltése, 479 00:26:11,660 --> 00:26:14,440 ami igazán rossz felhasználói élményt. 480 00:26:14,440 --> 00:26:17,080 Hűvös. 481 00:26:17,080 --> 00:26:19,460 >> Utolsó pár megjegyzésekkel hibakeresés, mivel ez 482 00:26:19,460 --> 00:26:23,682 egy dolog, fogsz kell tennie, részeként a projekt, garantált. 483 00:26:23,682 --> 00:26:25,140 Már említettem a JavaScript konzol. 484 00:26:25,140 --> 00:26:27,550 Ez egy szuper hasznos funkció Az összes modern böngésző, 485 00:26:27,550 --> 00:26:30,300 És valóban arra kérjük Önt, hogy kényelmes használata a konzolt, 486 00:26:30,300 --> 00:26:33,660 Ha azt szeretnénk, hogy jó a JavaScript. 487 00:26:33,660 --> 00:26:36,320 Ez szuper kapóra hibakeresés, de ez is 488 00:26:36,320 --> 00:26:39,440 Nagyon hasznos rájönni , hogyan kell használni az API-t. 489 00:26:39,440 --> 00:26:41,950 Ez lehetővé teszi a valóban egyszerű kísérletezés 490 00:26:41,950 --> 00:26:45,910 anélkül, hogy be is kódot, majd fordítsuk le. 491 00:26:45,910 --> 00:26:47,500 Nem kell mást tennie minden ezeket a lépéseket. 492 00:26:47,500 --> 00:26:49,619 Akkor csak írni Néhány kódot egy sort, 493 00:26:49,619 --> 00:26:52,410 majd azonnali visszajelzést e vagy sem, hogy a kódsort 494 00:26:52,410 --> 00:26:55,230 worked-- nagyon praktikus. 495 00:26:55,230 --> 00:26:59,760 >> És azt is, csak egy technikai note-- A JavaScript konzol egy példa 496 00:26:59,760 --> 00:27:05,680 Egy REPL-- hogy az, R-E-P-L, REPL, amelynek jelentése olvasni, értékelni, 497 00:27:05,680 --> 00:27:06,180 print hurok. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Fogsz írja néhány dolgot a, ez lesz olvasni, amit beírt, 500 00:27:12,120 --> 00:27:17,280 ez lesz értékelni azt, és akkor nyomtassa ki a kimenet, és akkor kezdjük újra. 501 00:27:17,280 --> 00:27:22,056 Amely lehetővé teszi, hogy gyorsan menjen körök ciklussal, ami nagyon klassz. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Azt hiszem, igazi utolsó note-- ezt a tényleges utolsó hang, igen. 504 00:27:28,930 --> 00:27:30,780 Hogyan ténylegesen használni JavaScript? 505 00:27:30,780 --> 00:27:34,040 Tehát az első, tudjuk importálni ez egy script tag 506 00:27:34,040 --> 00:27:39,500 tetején vagy alján egy HTML file-- bárhol belsejében egy HTML fájlt, 507 00:27:39,500 --> 00:27:40,440 igazán. 508 00:27:40,440 --> 00:27:47,390 És egy script tag van két al-módon importáló JavaScript. 509 00:27:47,390 --> 00:27:51,370 Az első az, azáltal, hogy egy Külön JavaScript fájl 510 00:27:51,370 --> 00:27:58,010 hogy a behozatali teljes egészében, vagy azáltal, hogy egy olyan terület kódot, mint szkript 511 00:27:58,010 --> 00:28:00,290 kezdeni, majd backslash script véget. 512 00:28:00,290 --> 00:28:02,620 És akkor csak írni JavaScript belül a HTML fájlt. 513 00:28:02,620 --> 00:28:03,790 Ez a két módon. 514 00:28:03,790 --> 00:28:05,165 Nem lehet belsejébe a HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 Közönség: Jobb az egyik, mint a másik? 517 00:28:08,126 --> 00:28:10,542 SAM Zöld: A kérdés az volt, az egyik jobb, mint a másik. 518 00:28:10,542 --> 00:28:18,306 Szóval, igen, mint egy kódolási stílus gyakorlat, és ez olyan, mint egy tervezési gyakorlat. 519 00:28:18,306 --> 00:28:20,180 Ennek két oka van Ezért lehet, hogy jobb. 520 00:28:20,180 --> 00:28:23,934 Az első az, mert megkönnyíti a kód egy Sok olvashatóbb, ha minden HTML- 521 00:28:23,934 --> 00:28:27,100 van egy helyen, az összes CSS van egy másik helyen, az összes JavaScript 522 00:28:27,100 --> 00:28:28,420 egy harmadik helyet. 523 00:28:28,420 --> 00:28:28,920 Jobbra? 524 00:28:28,920 --> 00:28:32,370 Azt hiszem, már beszéltem róla sections-- mint CSS-- mi 525 00:28:32,370 --> 00:28:35,220 hogy is-- és a lövés Gyakran egy másik fájl. 526 00:28:35,220 --> 00:28:37,090 Szóval, hasonló jellegű fogalom itt. 527 00:28:37,090 --> 00:28:42,410 Azt is képzelni, hogy a JavaScript újra fel lehet használni több mint egy 528 00:28:42,410 --> 00:28:47,350 HTML oldal, vagy esetleg egy Nagyon sok HTML oldalak, 529 00:28:47,350 --> 00:28:49,340 és miután a JavaScript refactored egyetlen 530 00:28:49,340 --> 00:28:51,950 fájlt importálhat egynél több helyen 531 00:28:51,950 --> 00:28:54,570 lehetővé teszi a kódot kell így több karbantartható. 532 00:28:54,570 --> 00:28:57,930 El lehet képzelni, hogy egy megváltoztatni a JavaScript 533 00:28:57,930 --> 00:29:00,070 és el kell változtatni 100 különböző fájlokat. 534 00:29:00,070 --> 00:29:04,070 És ahelyett, hogy mi csak változtatni Egy, ami így erősebb. 535 00:29:04,070 --> 00:29:05,420 Mondtam a válasz? 536 00:29:05,420 --> 00:29:07,950 Hűvös. 537 00:29:07,950 --> 00:29:10,830 >> Azt is írja a konzolba, ahogy már említettem. 538 00:29:10,830 --> 00:29:15,070 És még egyszer, utoljára note-- Web Audio épült, 539 00:29:15,070 --> 00:29:16,978 Önnek nem kell betölteni semmit. 540 00:29:16,978 --> 00:29:17,478 Hűvös. 541 00:29:17,478 --> 00:29:20,519 Van-e olyan kérdés, van- bármilyen további kérdése van a JavaScript, 542 00:29:20,519 --> 00:29:21,930 mielőtt továbbmegyünk? 543 00:29:21,930 --> 00:29:24,286 >> Közönség: [hallható] 544 00:29:24,286 --> 00:29:25,410 SAM ZÖLD: Rendben, jó. 545 00:29:25,410 --> 00:29:27,200 Tehát most ő fog beszélni az API. 546 00:29:27,200 --> 00:29:28,490 >> Hugh Zabriskie: Cool. 547 00:29:28,490 --> 00:29:28,990 Köszönöm, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: Persze. 549 00:29:30,184 --> 00:29:32,600 Hugh Zabriskie: Félelmetes, így fogunk lépni a JavaScript. 550 00:29:32,600 --> 00:29:35,350 Így már beszélt néhány a lényegét JavaScript, 551 00:29:35,350 --> 00:29:41,105 és ezek azok a változók, függvények, objektumok, függvények, mint változók, 552 00:29:41,105 --> 00:29:41,980 aszinkron betöltése. 553 00:29:41,980 --> 00:29:46,100 Ezek mind olyan dolgok, hogy akkor lásd, mint használ a Web Audio. 554 00:29:46,100 --> 00:29:49,230 Szóval mi csak beszélni fog róla először magas szinten. 555 00:29:49,230 --> 00:29:52,120 >> Ez egy API, így ez valami hogy épített, mint Sam azt mondta, 556 00:29:52,120 --> 00:29:57,010 jobbra a JavaScript hogy használja a konzolt. 557 00:29:57,010 --> 00:30:01,020 És ez valójában csak, mint a C ++ kódot hogy valóban épített Chrome 558 00:30:01,020 --> 00:30:04,470 és a Firefox, és az összes ilyen böngészők. 559 00:30:04,470 --> 00:30:07,060 Tehát a fő gondolata a Web Audio, hogy van 560 00:30:07,060 --> 00:30:09,440 ez a fajta vezeték audio, ugye? 561 00:30:09,440 --> 00:30:13,670 Szóval a hang-adat jön valamilyen formában. 562 00:30:13,670 --> 00:30:16,690 >> Vannak olyan három fő forms-- van az oszcillátor, amely 563 00:30:16,690 --> 00:30:21,340 létrehoz egy szinusz hullám, koszinusz hullám, fogjuk látni, hogy hogyan működik. 564 00:30:21,340 --> 00:30:23,890 Egy másik igen gyakori, Persze, egy MP3. 565 00:30:23,890 --> 00:30:25,810 Így talán elkezd egy dalt, és akkor 566 00:30:25,810 --> 00:30:28,320 szeretnénk, hogy némi szűrés e és kimeneti 567 00:30:28,320 --> 00:30:30,605 hogy--, hogy lehet egy lehetséges forrása. 568 00:30:30,605 --> 00:30:32,480 És akkor egy nagyon klassz az egyik a mikrofont. 569 00:30:32,480 --> 00:30:37,230 Szóval lehet használni néhány nagyon alap hívások JavaScript 570 00:30:37,230 --> 00:30:39,440 hogy hozzáférjenek a mikrofon, és így ha 571 00:30:39,440 --> 00:30:42,870 akarta, hogy egy app mint egy pitch detektor, 572 00:30:42,870 --> 00:30:45,290 például, hogy vesz a hangja, és kitalálja 573 00:30:45,290 --> 00:30:47,740 A pitch-- nagyon egyszerű módja annak, hogy. 574 00:30:47,740 --> 00:30:50,730 Akkor csak egyfajta olvasni a, kitalálni a frekvencia, 575 00:30:50,730 --> 00:30:52,250 majd a kimenetet egy számot. 576 00:30:52,250 --> 00:30:56,080 Szóval majd meglátjuk, hogyan működik is. 577 00:30:56,080 --> 00:30:59,430 >> Az úti cél alapvetően ahol az audio kimeneti adatok. 578 00:30:59,430 --> 00:31:02,890 Így általában, ez olyan, mint A laptop hangszóró. 579 00:31:02,890 --> 00:31:05,610 További lehetőségek olyanok, mint a Egy ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 mi lesz csomópontját second-- de alapvetően, 581 00:31:07,990 --> 00:31:11,939 vagy te olyan hangot keresztül a számítógép segítségével hangszórók, 582 00:31:11,939 --> 00:31:14,730 vagy te ilyen felvétel, így te tárolja a hang-adat. 583 00:31:14,730 --> 00:31:18,980 Szóval talán ha valaki létrehoz Zenéje a app, majd 584 00:31:18,980 --> 00:31:22,410 rögzíteni kívánt, és talán, mint az export, hogy SoundCloud, a example-- 585 00:31:22,410 --> 00:31:25,281 ez lenne az egyik módja, hogy. 586 00:31:25,281 --> 00:31:27,030 Minden szórakoztató dolgokat, amely fogunk beszélni, 587 00:31:27,030 --> 00:31:29,950 történik e két pont között, ahol betölteni a zenét 588 00:31:29,950 --> 00:31:31,410 majd kimenetet. 589 00:31:31,410 --> 00:31:36,660 >> Így fogok beszélni az öt szakaszában audio termelés a második. 590 00:31:36,660 --> 00:31:38,950 Van ez a dolog, az úgynevezett Egy AudioContext, amely 591 00:31:38,950 --> 00:31:41,580 ez a kis wrapper itt látunk. 592 00:31:41,580 --> 00:31:49,980 Alapvetően mi AudioContext is-- ha menj a JavaScript konzol most, 593 00:31:49,980 --> 00:31:52,740 mi is létrehozhatunk egy most. 594 00:31:52,740 --> 00:31:54,040 Csak egy példa REPL, ugye? 595 00:31:54,040 --> 00:31:57,880 Mi olvasod, értékelésére, és nyomtat. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext egy globális állam. 597 00:32:00,260 --> 00:32:05,500 Ez egy struct, ez egy tárgy itt, és ez tartja információk 598 00:32:05,500 --> 00:32:09,960 dolgokról folynak A képernyőn kapcsolódó hang. 599 00:32:09,960 --> 00:32:15,220 Az egyik példa az aktuális időt. 600 00:32:15,220 --> 00:32:18,910 Ez megmondja száma másodperc, nagyon pontosan, 601 00:32:18,910 --> 00:32:20,890 mivel ez az internetes oldal betöltésekor. 602 00:32:20,890 --> 00:32:24,110 Tehát ez egy nagyon hasznos kisbirtokosok, hogy tudod használni. 603 00:32:24,110 --> 00:32:27,898 Ez olvasható only-- Azt hiszem, valójában akkor próbálja meg azt az értéket. 604 00:32:27,898 --> 00:32:29,856 Ez Megmondom meg azt, majd ha nyomtatni 605 00:32:29,856 --> 00:32:31,439 again-- ez valójában nem igazán működik. 606 00:32:31,439 --> 00:32:34,472 Tehát csak olvashatók tulajdonságok a JavaScript. 607 00:32:34,472 --> 00:32:36,430 Ez nagyon hasznos, ha te ilyen szinkronizálás 608 00:32:36,430 --> 00:32:38,610 egy csomó más információkat, ha éppen 609 00:32:38,610 --> 00:32:41,280 fajta játszik különböző hangokat. 610 00:32:41,280 --> 00:32:43,630 >> Egy másik nagyon hasznos egy van összefüggésben célpontja. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Határozottan, ha érdekel, legyen próbálják ezt a saját konzolon jobb 613 00:32:49,670 --> 00:32:50,980 Most. 614 00:32:50,980 --> 00:32:53,150 Szóval ez egy AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 Alapvetően mi ez mond, hol van a kimeneti megy? 616 00:32:56,480 --> 00:32:59,590 Tehát van két valós lehetőség van. 617 00:32:59,590 --> 00:33:01,940 Általában az alapértelmezett csak a hangszórókat, 618 00:33:01,940 --> 00:33:05,150 így AudioDestinationNode alapvetően csak azt mondja, 619 00:33:05,150 --> 00:33:09,240 vannak nulla kimenetet, hogy a hang jön, elküldte a hangszóró. 620 00:33:09,240 --> 00:33:12,050 Tehát általánosságban, akkor nem kell játszani vele. 621 00:33:12,050 --> 00:33:15,720 Ha érdekel a ténylegesen használt A ScriptProcessorNode rögzítésére, 622 00:33:15,720 --> 00:33:16,990 határozottan lőni nekem egy e-mail később, mert ez az, 623 00:33:16,990 --> 00:33:18,330 egy kicsit bonyolultabb. 624 00:33:18,330 --> 00:33:21,590 De általában, te csak ilyen A kimenetre hangot valamilyen formában. 625 00:33:21,590 --> 00:33:24,347 Így jó, akkor ugorj vissza ide. 626 00:33:24,347 --> 00:33:25,180 Közönség: Sajnálom. 627 00:33:25,180 --> 00:33:26,054 Hugh Zabriskie: Igen. 628 00:33:26,054 --> 00:33:28,770 Közönség: Tudom, hogy azt mondta, hogy beszéljen hogy később a felvételeihez. 629 00:33:28,770 --> 00:33:31,550 Tud felület, amely a Pro Tools? 630 00:33:31,550 --> 00:33:33,120 >> Hugh Zabriskie: A Pro Tools? 631 00:33:33,120 --> 00:33:35,260 Lássuk. 632 00:33:35,260 --> 00:33:37,220 Nem hiszem. 633 00:33:37,220 --> 00:33:41,670 Szóval megy a kliens, amely a JavaScript 634 00:33:41,670 --> 00:33:44,310 konzol, és a tényleges számítógép, általában 635 00:33:44,310 --> 00:33:46,490 valamit ez a fajta A behajtani tilos, ha 636 00:33:46,490 --> 00:33:52,320 lesz, kedves természete által the-- ez a fajta tervezési dolog, 637 00:33:52,320 --> 00:33:57,770 de próbálja tartani a böngésző külön a felhasználó tényleges számítógép. 638 00:33:57,770 --> 00:34:02,310 Általánosságban az egyetlen dolog, te képes hozzáférés a mikrofon vagy kamera. 639 00:34:02,310 --> 00:34:04,730 Maga nem tudja, én Nem hiszem, használja a Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Azonban, ha létrehozott a pálya Pro Tools, 641 00:34:07,480 --> 00:34:12,710 exportált, hogy meg tudná betölteni, hogy itt, szűrjük le, például 642 00:34:12,710 --> 00:34:16,820 folyamat, és rögzíti, hogy egy Audió Destination-- vagy, no-- Gömb 643 00:34:16,820 --> 00:34:17,870 Processzor csomópont. 644 00:34:17,870 --> 00:34:20,730 Aztán onnan, akkor exportálni, hogy a SoundCloud, akkor 645 00:34:20,730 --> 00:34:25,320 tudna küldeni egy e-mailbe vagy amit akarsz onnan. 646 00:34:25,320 --> 00:34:31,159 >> De van egyfajta enyhe gáton között zenél a számítógépen 647 00:34:31,159 --> 00:34:33,050 és a zenélés az interneten. 648 00:34:33,050 --> 00:34:37,940 >> SAM ZÖLD: És ez nem kizárólag ezen API. 649 00:34:37,940 --> 00:34:44,060 Ez egy biztonsági funkció a Chrome, és Azt hiszem, minden más modern böngészőben. 650 00:34:44,060 --> 00:34:45,860 A böngésző zárt. 651 00:34:45,860 --> 00:34:50,980 Így például egy weboldal nem JavaScript használatát kapcsolja ki a hangot 652 00:34:50,980 --> 00:34:54,190 A a hangszórókból, például. 653 00:34:54,190 --> 00:34:58,120 Vagy nem tudja kapcsolni a számítógépet. 654 00:34:58,120 --> 00:35:01,530 És nincs köztes pont e két dolog, igaz, 655 00:35:01,530 --> 00:35:05,960 Tehát vagy van egy teljes elvonását, 656 00:35:05,960 --> 00:35:10,050 vagy megnyitod az biztonsági hiba hagyta 657 00:35:10,050 --> 00:35:14,440 programozó rossz szándék nem amit akarnak a laptop. 658 00:35:14,440 --> 00:35:18,104 És ezért Chrome zárt. 659 00:35:18,104 --> 00:35:19,310 >> Hugh Zabriskie: Igen. 660 00:35:19,310 --> 00:35:20,840 Ennek van értelme? 661 00:35:20,840 --> 00:35:21,369 Hűvös, hideg. 662 00:35:21,369 --> 00:35:23,160 Csak azt akartam, hogy példát mutatnak az egyik. 663 00:35:23,160 --> 00:35:25,118 Ez nagyjából az amennyire kapsz, tekintve 664 00:35:25,118 --> 00:35:26,950 való hozzáférés a felhasználó számítógépén. 665 00:35:26,950 --> 00:35:30,180 Ha van egy USB billentyűzet csatlakoztatva, akkor használja valamit az úgynevezett Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, amely nem fogunk Tényleg beszélni itt, 667 00:35:32,180 --> 00:35:36,330 de ez egy másik API ez épített, legalább Chrome-- újra, 668 00:35:36,330 --> 00:35:41,570 ez az, amiért szeretjük Chrome-- Azt hiszem, a Firefox vagy a Safari, 669 00:35:41,570 --> 00:35:44,300 ez egy egyszerű dolog google-- különböző böngészők 670 00:35:44,300 --> 00:35:46,917 különböző amelynek támogatása API hajtották végre. 671 00:35:46,917 --> 00:35:49,875 De ha akarod, hogy csatlakoztassa a billentyűzetet és a munka az információkat, 672 00:35:49,875 --> 00:35:52,850 fajta küldje el a billentyűzetet információ át a számítógép 673 00:35:52,850 --> 00:35:57,620 majd ezeknek az interneten, ez API ahol azt kell dolgozni, hogy. 674 00:35:57,620 --> 00:35:58,150 >> Hűvös. 675 00:35:58,150 --> 00:35:58,710 OKÉ. 676 00:35:58,710 --> 00:36:01,320 Szóval, gyorsan mozgó itt. 677 00:36:01,320 --> 00:36:03,310 Hogy állunk az ideje? 678 00:36:03,310 --> 00:36:04,210 >> 1. Előadó: Körülbelül 15. 679 00:36:04,210 --> 00:36:05,543 >> Hugh Zabriskie: 15 perc van hátra? 680 00:36:05,543 --> 00:36:06,160 Oké, rendben. 681 00:36:06,160 --> 00:36:08,170 Így fogunk versenyezni előre itt. 682 00:36:08,170 --> 00:36:13,500 >> Tehát alapvetően a lényeget gondolkodás ez, mint egy csővezeték 683 00:36:13,500 --> 00:36:16,430 az, hogy minden egyes lépés a csővezeték egy sor audio csomópontok. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 A forrásunk, mondjuk, egy oszcillátor. 686 00:36:20,950 --> 00:36:23,380 Létre kell hoznunk egy oszcillátor csomópontot. 687 00:36:23,380 --> 00:36:25,690 És ez csak egyfajta A kis function-- 688 00:36:25,690 --> 00:36:30,460 és ezek mind alapuló out Az audio összefüggésben van. 689 00:36:30,460 --> 00:36:32,885 >> Közönség: amikor azt mondta oszcillátor, ez azt jelenti, 690 00:36:32,885 --> 00:36:37,250 ez valójában szó haladva Két különböző oszlopok oda-vissza? 691 00:36:37,250 --> 00:36:41,170 >> Hugh Zabriskie: Nem, ez olyan, mint digitális ábrázolása. 692 00:36:41,170 --> 00:36:42,740 Ez ténylegesen végrehajtott C ++. 693 00:36:42,740 --> 00:36:46,460 Igazából nem tudom, a specifikációk A hogyan is ténylegesen végrehajtotta 694 00:36:46,460 --> 00:36:48,500 De mindez működik, mint bináris adatokat. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Tulajdonképpen igen. 697 00:36:52,370 --> 00:36:53,950 Ez lenne mondván tudtam valóban, ha érdekel, 698 00:36:53,950 --> 00:36:56,533 Azt lehetne küldeni, egy kicsit információt arról, hogyan hullámformák 699 00:36:56,533 --> 00:37:00,181 tartják, amelynek digitális formátumban. 700 00:37:00,181 --> 00:37:00,680 Oké, rendben. 701 00:37:00,680 --> 00:37:03,120 >> Szóval így egy hang, mint egy szinusz hullám vagy valami ilyesmi, talán 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Mi oszcillátor létre. 704 00:37:05,830 --> 00:37:09,180 Ha szeretné beállítani a hangerőt, akkor csatlakoztasson semmit a GainNode, 705 00:37:09,180 --> 00:37:12,500 amit megtehetett .creategain. 706 00:37:12,500 --> 00:37:14,250 Amely meghatározza a hangerőt. 707 00:37:14,250 --> 00:37:17,820 Akkor át, hogy a gépre A többi options-- is, 708 00:37:17,820 --> 00:37:20,300 így egy audio buffer forrás csomópont, ahol lehet, 709 00:37:20,300 --> 00:37:23,660 egy MP3 hogy már betöltött. 710 00:37:23,660 --> 00:37:27,670 >> Biquad szűrőnek a szűrés, ha azt szeretné, hogy minden alap ki 711 00:37:27,670 --> 00:37:29,630 egy dal, vagy valami ilyesmi. 712 00:37:29,630 --> 00:37:32,450 Isten ments szeretne venni az alap ki egy dalt. 713 00:37:32,450 --> 00:37:36,980 És AudioDestination csomópont, újra, mint ahol a véglegesítés. 714 00:37:36,980 --> 00:37:39,980 Ha valaha kíváncsi a különböző lehetséges opciókat, 715 00:37:39,980 --> 00:37:45,190 csak megy a lapot, és hagyja, Az automatikus teljes jön. 716 00:37:45,190 --> 00:37:48,690 És ha létre, látni fogod az összes különböző dolog, hogy lehet létrehozni. 717 00:37:48,690 --> 00:37:50,398 Akkor dinamikus script processzorok, 718 00:37:50,398 --> 00:37:52,940 Azt sem tudom, hogy mit van, keveréséhez csatorna fúziók 719 00:37:52,940 --> 00:37:55,930 és a csatorna osztók és ennyi. 720 00:37:55,930 --> 00:37:56,430 Hűvös. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Tehát ez csak egy Például egy gázvezeték. 723 00:38:01,390 --> 00:38:03,580 Tehát van három forrásból érkező. 724 00:38:03,580 --> 00:38:06,830 Talán ezek hullámformák, Talán ezek MP3. 725 00:38:06,830 --> 00:38:08,740 Az egyik megy keresztül szűrő, egy másik ember 726 00:38:08,740 --> 00:38:12,404 egyre torzul a másik az ember panoráma balra és jobbra. 727 00:38:12,404 --> 00:38:15,320 Meg tudod csinálni mindenféle dolgokat, és mind összekeverednek körül együtt, 728 00:38:15,320 --> 00:38:18,880 majd ki jön a hang a végén, mint a rendeltetési hely. 729 00:38:18,880 --> 00:38:22,720 Ez egy példa arra, mi több, bonyolultabb Web Audio kód így néz ki. 730 00:38:22,720 --> 00:38:26,720 Te létre mindezeket különböző objektumok jobb here-- 731 00:38:26,720 --> 00:38:27,706 Nem vagyok biztos ebben. 732 00:38:27,706 --> 00:38:29,120 Nem, ez nem közelíthet. 733 00:38:29,120 --> 00:38:29,620 OKÉ. 734 00:38:29,620 --> 00:38:31,257 >> SAM ZÖLD: Te Ellenőrző Scroll-Up. 735 00:38:31,257 --> 00:38:32,590 Hugh Zabriskie: Ellenőrző Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM ZÖLD: Nem, nem. 737 00:38:33,000 --> 00:38:33,500 Ellenőrzés-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> Hugh Zabriskie: Ó, vezérlés, Lapozzunk? 740 00:38:38,140 --> 00:38:38,780 Ó, megvagy. 741 00:38:38,780 --> 00:38:41,480 Igen. 742 00:38:41,480 --> 00:38:42,240 Wow, dehogy, dehogy. 743 00:38:42,240 --> 00:38:42,740 OKÉ. 744 00:38:42,740 --> 00:38:46,090 Én nem fogom megtenni. 745 00:38:46,090 --> 00:38:48,300 >> Szóval igen, ebben az első szakaszban van, látod 746 00:38:48,300 --> 00:38:52,720 hozunk létre ezeket a különböző csomópontok ki keretében. 747 00:38:52,720 --> 00:38:54,980 Mi csak piecing őket együtt a második részben 748 00:38:54,980 --> 00:38:56,980 Ennek a funkciónak nevezett Csatlakozás. 749 00:38:56,980 --> 00:38:58,830 Ez egy igazán kulcs funkció Web Audio. 750 00:38:58,830 --> 00:39:01,930 Ez csak azt jelenti, ha már megcsináltad valamit a hang az egyik csomópont, 751 00:39:01,930 --> 00:39:03,705 adja át a következő csomópontot. 752 00:39:03,705 --> 00:39:05,830 Tehát van a forrás, csatlakozik az oldalon, 753 00:39:05,830 --> 00:39:09,140 Az oldalon csinál valamit vele, megy torzítás, és így tovább, 754 00:39:09,140 --> 00:39:12,725 és a cél a jobb alsó sarokban van. 755 00:39:12,725 --> 00:39:13,225 Hűvös. 756 00:39:13,225 --> 00:39:14,640 OK, így fogunk haladni tovább. 757 00:39:14,640 --> 00:39:17,180 >> A pipeline-- megint, ezek a leggyakoribb csővezetékek, 758 00:39:17,180 --> 00:39:21,300 így beszélünk mindezek a dolgok, mint torzítás, aranymosás, ezt a cuccot. 759 00:39:21,300 --> 00:39:24,280 Ha tényleg érdekel használatával dolgokat Pro Tools, 760 00:39:24,280 --> 00:39:25,820 ezeket valószínűleg érdekelni fogja. 761 00:39:25,820 --> 00:39:27,740 Ha nem, talán csak szeretnék játszani a hang, 762 00:39:27,740 --> 00:39:29,990 vagy talán csak azt, hogy állítsa be a hangerőt a hang. 763 00:39:29,990 --> 00:39:35,270 Ez a két leggyakoribb sorrend csővezetékek audio termelés. 764 00:39:35,270 --> 00:39:38,640 >> Ismét a módon tudod venni a mint oscillator-- Nos, nézzük 765 00:39:38,640 --> 00:39:42,460 nem egy a demo, hogy itt van. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Mi is így fogjuk létrehozni egyszerű audio összefüggésben van, 768 00:39:52,225 --> 00:39:54,350 és hogy fogunk hogy hozzon létre a oszcillátor. 769 00:39:54,350 --> 00:39:58,620 Ez tehát megint mi csak Felhívom létrehozása oszcillátor. 770 00:39:58,620 --> 00:40:07,030 Fogunk beállítani egy frekvenciát hogy 440 Hertz, mindenki kedvence. 771 00:40:07,030 --> 00:40:13,290 Aztán csatlakozni, hogy a cél point-- ami a hangszóró, így 772 00:40:13,290 --> 00:40:15,750 összefüggésben célpontja. 773 00:40:15,750 --> 00:40:21,400 Végül, mi csak azt mondják, indul a nulla másodperc múlva, és tudjuk, hogy megbízható? 774 00:40:21,400 --> 00:40:22,400 >> [RINGING] 775 00:40:22,400 --> 00:40:24,980 >> Hugh Zabriskie: Itt vagyunk. 776 00:40:24,980 --> 00:40:25,940 Ez csak egy szinuszhullám. 777 00:40:25,940 --> 00:40:26,440 Oké, rendben. 778 00:40:26,440 --> 00:40:28,274 És akkor majd abba. 779 00:40:28,274 --> 00:40:30,520 >> Közönség: Hol volt hogy visszajelzést származik? 780 00:40:30,520 --> 00:40:31,250 >> Hugh Zabriskie: A visszajelzések? 781 00:40:31,250 --> 00:40:32,458 Ó, talán a mikrofon. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Szóval igen, ez hogyan csinálod. 784 00:40:35,470 --> 00:40:37,261 És valóban, ha lenne tartotta fut, 785 00:40:37,261 --> 00:40:39,540 az lehet a jelentése értéket, ami futtatja, 786 00:40:39,540 --> 00:40:43,320 Szóval ez egy jó dolog, hogy a játék körül. 787 00:40:43,320 --> 00:40:44,930 Hűvös. 788 00:40:44,930 --> 00:40:46,600 Ez mindig szép egy bemutatni. 789 00:40:46,600 --> 00:40:48,792 >> SAM ZÖLD: Mi nem gondolni, hogy jutottunk? 790 00:40:48,792 --> 00:40:50,500 Hugh Zabriskie: Igen, hogy egy csúnya egyet. 791 00:40:50,500 --> 00:40:53,249 Szóval, puffer loading-- megmutatom egy Például az, hogy a legvégén. 792 00:40:53,249 --> 00:40:55,090 Ez az betöltése MP3. 793 00:40:55,090 --> 00:40:58,880 És mikrofonnal használni csak egy függvény nevű Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 hozzáférést kérhetnek a felhasználó mikrofon az információt. 795 00:41:03,240 --> 00:41:05,610 >> Itt szűrési, én Csak menj tovább ettől. 796 00:41:05,610 --> 00:41:08,600 Ez elég magas szinten, de szűrőket csak lehetővé teszi, hogy 797 00:41:08,600 --> 00:41:16,154 >> [Csipogó] 798 00:41:16,154 --> 00:41:18,320 Szűrés is lehetővé teszi, hogy hozzon létre a dolgokat, mint a rózsaszín 799 00:41:18,320 --> 00:41:20,050 zaj, barna zaj, fehér zaj. 800 00:41:20,050 --> 00:41:24,330 Ha szeretne létrehozni tiszta zaj, ami Vannak, akik szeretnek szórakozni, 801 00:41:24,330 --> 00:41:27,490 akkor a Web Audio szűrés erre. 802 00:41:27,490 --> 00:41:30,039 >> Audió Panning-- tehát képzelni, Ha írsz egy játék 803 00:41:30,039 --> 00:41:32,330 és azt szeretné, hogy a hang hangzik, hogy jön, mint, 804 00:41:32,330 --> 00:41:36,090 forgatás az egész képernyőt, akkor Használhatja a panoráma a hang 805 00:41:36,090 --> 00:41:39,770 hogy hozza létre ezt a fajta kúp, amely az általam elvártnál ez elég Mathy, 806 00:41:39,770 --> 00:41:41,850 de valójában nagyon Hűvös, ha kap ez a munka, 807 00:41:41,850 --> 00:41:44,500 és van néhány jó oktatóanyagok rajta tudok küldeni. 808 00:41:44,500 --> 00:41:46,400 Alapvetően, akkor milyen Az létre a hang 809 00:41:46,400 --> 00:41:50,480 valami megy a 3D-ben módon. 810 00:41:50,480 --> 00:41:57,350 És ha van egy DJ kamatot, akkor Keverje össze és át gyengült dalokat. 811 00:41:57,350 --> 00:42:01,260 >> Ez csak néhány alapvető kódot, alapvetően amit tettem, mielőtt. 812 00:42:01,260 --> 00:42:06,140 Ez állítja a hangerőt a oszcillátor, így mi teremtjük oszcillátor 813 00:42:06,140 --> 00:42:07,380 amely megteremti a görbe. 814 00:42:07,380 --> 00:42:09,940 Mi hozzuk létre a GainNode, állítsuk gyakorisága, 815 00:42:09,940 --> 00:42:14,170 majd csatlakoztassa az oszcillátor a GainNode, ami aztán alapvetően megváltoztatja 816 00:42:14,170 --> 00:42:16,760 hogy mennyi jelet hagytuk keresztül. 817 00:42:16,760 --> 00:42:20,467 De tényleg, ez egy digitális dolog, így ez inkább csak-- igen. 818 00:42:20,467 --> 00:42:23,550 Ez nem amit valójában, de ez az, ami történik a való életben 819 00:42:23,550 --> 00:42:24,393 a nyereség. 820 00:42:24,393 --> 00:42:27,258 >> Közönség: --quantization A kötetparaméter? 821 00:42:27,258 --> 00:42:28,174 Hugh Zabriskie: Sajnáljuk? 822 00:42:28,174 --> 00:42:30,360 Közönség: Ez egy kvantált kötetparaméter? 823 00:42:30,360 --> 00:42:31,840 Hugh Zabriskie: Igen. 824 00:42:31,840 --> 00:42:34,620 És ez az egyik dolog, én nagyon hiányos be tudásom, 825 00:42:34,620 --> 00:42:38,010 hogyan nyereség működik a digitális szinten. 826 00:42:38,010 --> 00:42:40,140 Tudom, a tényleges jelek, ez alapvetően 827 00:42:40,140 --> 00:42:45,120 kontrolling el, hogy mekkora felerősítve a jelet. 828 00:42:45,120 --> 00:42:47,017 Szóval, igen. 829 00:42:47,017 --> 00:42:50,100 Majd küldök bővebb információkat hogy mivel Kíváncsi lennék ténylegesen 830 00:42:50,100 --> 00:42:51,099 többet tudni, hogy. 831 00:42:51,099 --> 00:42:54,090 De alapvetően a paraméterek vannak, az egyik a fold-- 832 00:42:54,090 --> 00:42:59,690 A hangosabb signal-- és nulla nincs jel, vagy nem fogsz hallani semmilyen hangot. 833 00:42:59,690 --> 00:43:03,150 Majd hagyja demo ideje, hogy azért, mert ez alapvetően amit tettem, mielőtt. 834 00:43:03,150 --> 00:43:07,630 És ismét, a Context.Destination a hang célcsomópontnál. 835 00:43:07,630 --> 00:43:08,360 Félelmetes, OK. 836 00:43:08,360 --> 00:43:10,470 >> Így fogok tenni egy gyors két demót. 837 00:43:10,470 --> 00:43:11,760 Hogy állunk az ideje? 838 00:43:11,760 --> 00:43:12,640 >> 1. Előadó: Körülbelül 10 perc. 839 00:43:12,640 --> 00:43:13,130 >> Hugh Zabriskie: 10 perc? 840 00:43:13,130 --> 00:43:13,630 Nagy! 841 00:43:13,630 --> 00:43:14,320 Fantasztikus. 842 00:43:14,320 --> 00:43:19,010 >> Tehát az első fogok igen, ezt hívják a kedvenc dalom. 843 00:43:19,010 --> 00:43:22,410 Tehát ez csak egy kis HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Fogunk van két gomb Az oldalon játszani a kedvenc számom 845 00:43:25,510 --> 00:43:29,192 és megáll a kedvenc számom. 846 00:43:29,192 --> 00:43:30,180 Én ezen változtatni. 847 00:43:30,180 --> 00:43:32,110 >> Közönség: Fedjük le a mikrofont. 848 00:43:32,110 --> 00:43:33,430 >> Hugh Zabriskie: Igen. 849 00:43:33,430 --> 00:43:36,300 És feltöltöm ide egy script, ami basically-- 850 00:43:36,300 --> 00:43:38,520 és ez tényleg hasznos kirak MP3, 851 00:43:38,520 --> 00:43:41,820 így ez csak teszi loading MP3 módon gyorsabban. 852 00:43:41,820 --> 00:43:44,180 Ez alapvetően csak egy átalakító. 853 00:43:44,180 --> 00:43:48,737 Ez csak teszi a folyamatot töltődnek be, MP3 sokkal gyorsabb, 854 00:43:48,737 --> 00:43:51,570 különben az Ön által használt HTTP kérés, olyan, mint amit csináltunk 855 00:43:51,570 --> 00:43:53,950 Az aktuális darab szett Server. 856 00:43:53,950 --> 00:43:55,950 Ez nagyon csúnya, akkor Nem akarom csinálni. 857 00:43:55,950 --> 00:44:04,110 >> Szóval ez a fickó, Boris KKV-k, írt egy nagyon hasznos kis eszköz nevű BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Minden, amit csinál, egyszerűen adja át a összefüggésben, akkor adja át a list-- 859 00:44:08,780 --> 00:44:11,327 vagy, igen, ez egy listát a JavaScript? 860 00:44:11,327 --> 00:44:12,160 SAM ZÖLD: Egy tömb. 861 00:44:12,160 --> 00:44:14,201 Hugh Zabriskie: Ó, ez tömb, ez így van. 862 00:44:14,201 --> 00:44:18,660 Ez egy sor utak a különböző fájlokat. 863 00:44:18,660 --> 00:44:21,990 És akkor adja át a funkciót. 864 00:44:21,990 --> 00:44:25,530 Ez a visszahívási beszéltünk mintegy aszinkron betöltése. 865 00:44:25,530 --> 00:44:28,720 Hogy fogják hívni ha a betöltött fájlok. 866 00:44:28,720 --> 00:44:33,780 És ez a funkció, hogy az úgynevezett amikor A fájl betöltött úgy, mint a kerülete 867 00:44:33,780 --> 00:44:35,840 egy sor betöltött pufferek. 868 00:44:35,840 --> 00:44:37,990 Szóval, hogy itt zajlik. 869 00:44:37,990 --> 00:44:41,180 Alapvetően BufferList van lesz az egyik value-- 870 00:44:41,180 --> 00:44:46,380 vagy ez lesz egy sor hossza egy, azaz van benne az index 871 00:44:46,380 --> 00:44:51,320 nulla egész betöltött fájlt az MP3. 872 00:44:51,320 --> 00:44:53,320 Szóval mit csinálok, ha befejezem betöltés, egyszerűen 873 00:44:53,320 --> 00:44:57,430 hozzon létre egy puffer forrás, amely egy audió buffer forrás csomópont. 874 00:44:57,430 --> 00:45:03,410 A következő lépés az töltsem a source.buffer mint a teljes betöltött puffert 875 00:45:03,410 --> 00:45:06,740 A BufferList-- ez egy csomó buffers-- 876 00:45:06,740 --> 00:45:10,255 és akkor csatlakozhat, hogy a hang puffer a cél. 877 00:45:10,255 --> 00:45:12,380 Tehát mit fog csinálni csak egyszerűen fogalmazva az MP3 878 00:45:12,380 --> 00:45:15,260 egyenesen a kimenetre, és indítsa el azonnal 879 00:45:15,260 --> 00:45:18,010 upon egyre ezt a hívást. 880 00:45:18,010 --> 00:45:21,660 >> Cool, így lássuk ez történik akcióban. 881 00:45:21,660 --> 00:45:24,490 Saját [hallhatatlan] itt, lássuk. 882 00:45:24,490 --> 00:45:26,430 Szóval én csak fog elkezd egy alap szerver. 883 00:45:26,430 --> 00:45:28,660 Ez olyasmi, annyit kell tennie, ha 884 00:45:28,660 --> 00:45:32,490 kérjen betöltéssel. 885 00:45:32,490 --> 00:45:34,140 Megyek kezdeni egy alap szerver. 886 00:45:34,140 --> 00:45:38,200 Ez alapvetően az egész PSET most egy sorban, 887 00:45:38,200 --> 00:45:43,930 de ez csak most kezdődik szerveren porton 80/80. 888 00:45:43,930 --> 00:45:47,300 Szóval megy át itt, fog betölteni 80/80, 889 00:45:47,300 --> 00:45:49,110 fogunk menni a kedvenc dalom. 890 00:45:49,110 --> 00:45:51,660 Tehát, ha megüt a "Play my kedvenc dalom "most, 891 00:45:51,660 --> 00:45:53,964 ez meg fog betölteni az én kedvenc dala, és játszani it-- 892 00:45:53,964 --> 00:45:55,880 [ZENE - The Eagles, "az élet a gyorsan  SÁV"] 893 00:45:55,880 --> 00:46:00,490 --which előfordul, hogy "Élet A Fast Lane "az Eagles. 894 00:46:00,490 --> 00:46:06,346 Most tudtam hit "Ne az én kedvenc dal "és lejátszását teszi. 895 00:46:06,346 --> 00:46:09,160 >> [ZENE - The Eagles, "az élet a gyorsan  SÁV"] 896 00:46:09,160 --> 00:46:18,340 >> És ha átmegyek vigasztalni, mert Én is egy globális változó ide 897 00:46:18,340 --> 00:46:23,390 nyomon követni ezt az értéket, hogy valójában Most el kell ismerni a konzol. 898 00:46:23,390 --> 00:46:25,160 Tehát automatikus teremt számomra. 899 00:46:25,160 --> 00:46:29,991 Szóval ez mit játszik most, és én egyszerűen hívja source.stop () 900 00:46:29,991 --> 00:46:30,490 azon a. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 Hát, tudod mit? 903 00:46:35,860 --> 00:46:39,760 Csak, hogy ti hallottam ezt song-- lehet, hogy ismeri ezt a dalt. 904 00:46:39,760 --> 00:46:41,801 >> [ZENE - Rick Astley, "soha nem adod  ÖN AKÁR"] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [ZENE - The Eagles, "az élet a gyorsan  SÁV"] 907 00:46:44,215 --> 00:46:46,195 Már most mind Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, jó, a továbblépés. 909 00:46:50,155 --> 00:46:51,160 Hűvös. 910 00:46:51,160 --> 00:46:54,554 Szóval ez alapvetően egy példa Csak hogyan lehetne be egy MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [ZENE - The Eagles, "az élet a gyorsan  SÁV"] 912 00:46:56,470 --> 00:46:59,590 --and játszani, és állítsa le és indítsa be. 913 00:46:59,590 --> 00:47:03,008 Tudtam volna sokkal több [hallható] 914 00:47:03,008 --> 00:47:07,570 >> Az utolsó fogok csinálni az, Megmutatom neked egy [hallható]. 915 00:47:07,570 --> 00:47:18,070 >> [Zenelejátszási] 916 00:47:18,070 --> 00:47:21,800 >> Ez olyan, mint, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Azt hiszem, ha jól emlékszem, Már befut néhány kérdést a .m4a, 918 00:47:26,450 --> 00:47:27,721 de nem vagyok biztos benne. 919 00:47:27,721 --> 00:47:28,470 Azt hiszem mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [ZENE - Rick Astley, "soha nem adod  ÖN AKÁR"] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> Jólvan szuper. 924 00:47:36,500 --> 00:47:37,625 Nem kellett volna mondanom. 925 00:47:37,625 --> 00:47:40,570 Különben is, helló. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Így van ez a nyitott. 928 00:47:45,490 --> 00:47:52,320 Most mind én csinálok, én alapvetően létre alapvető szintaxis zenét készíteni. 929 00:47:52,320 --> 00:47:57,610 Szóval, ha valami ilyesmire, add g4 1 2, mit jelent az, hogy 930 00:47:57,610 --> 00:48:00,950 add a zongora tudomásul, G4, ami a negyedik G 931 00:48:00,950 --> 00:48:02,680 akár a zongorán alulról. 932 00:48:02,680 --> 00:48:05,930 Tehát ez a fajta MIDI beszélni, így azok számára, akik a zene alapján, 933 00:48:05,930 --> 00:48:07,860 ez csak MIDI esemény. 934 00:48:07,860 --> 00:48:10,090 >> Közönség: Ez a G A Közel-C, ugye? 935 00:48:10,090 --> 00:48:11,840 >> Hugh Zabriskie: Ez a G közép C feletti, ez így van. 936 00:48:11,840 --> 00:48:12,470 >> Közönség: Above Közel C. 937 00:48:12,470 --> 00:48:13,345 >> Hugh Zabriskie: Igen. 938 00:48:13,345 --> 00:48:14,340 Tulajdonképpen igen. 939 00:48:14,340 --> 00:48:16,131 Azt hiszem, ténylegesen Ez [hallhatatlan], 940 00:48:16,131 --> 00:48:18,860 így ez lehet egy oktávval fölött. 941 00:48:18,860 --> 00:48:20,070 Tehát lássuk. 942 00:48:20,070 --> 00:48:21,152 Ha elütöttem Play-- 943 00:48:21,152 --> 00:48:22,110 [Ismétlődő PIANO Megjegyzés] 944 00:48:22,110 --> 00:48:23,200 --we're fog hallani. 945 00:48:23,200 --> 00:48:25,700 Az elképzelés az, hogy ez működik mint egy parancssori lenne, 946 00:48:25,700 --> 00:48:27,510 így ha megyek fel és le én billentyűzetet, akkor 947 00:48:27,510 --> 00:48:31,550 mehet vissza az előző parancsok, ami elég hasznos. 948 00:48:31,550 --> 00:48:35,136 És alatta van a lista a pályák, amelyek mind futó hurok. 949 00:48:35,136 --> 00:48:38,260 >> Közönség: Te voltál feltételezve, hogy a 88-gombos billentyűzet, igaz? 950 00:48:38,260 --> 00:48:41,051 >> Hugh Zabriskie: A kérdés az volt, én feltételezve egy 88 gombos billentyűzet, 951 00:48:41,051 --> 00:48:41,990 és igen, én vagyok. 952 00:48:41,990 --> 00:48:45,030 Amit tettem, az I. Alapvetően vett 88 mintát 953 00:48:45,030 --> 00:48:46,970 A zongora, egy-egy megjegyzést. 954 00:48:46,970 --> 00:48:49,180 És így minden alkalommal, amikor hallani egy megjegyzés mostantól, 955 00:48:49,180 --> 00:48:57,550 hogy valójában egy ciklus, ami úgy néz ki, általam elvártnál ez már játszott hurok, 956 00:48:57,550 --> 00:49:00,120 így minden figyelmét, hogy ez működik. 957 00:49:00,120 --> 00:49:02,860 Mi történik az, hogy hozzon létre egy puffer újra, 958 00:49:02,860 --> 00:49:06,010 Létrehozok egy erősítés csomópont beállítani a hangerőt. 959 00:49:06,010 --> 00:49:08,240 Ez csak egy nagyon bonyolultabb szóval én 960 00:49:08,240 --> 00:49:10,550 tárolja a pufferben egy source.buffer. 961 00:49:10,550 --> 00:49:13,160 Azt, hogy ez az erősítés, én csatlakoztassa a nyereség, 962 00:49:13,160 --> 00:49:15,576 az erősítés van kötve a kimenet, aztán játszani. 963 00:49:15,576 --> 00:49:20,735 Tehát ez a fajta folyamat A vevő a puffer forrás. 964 00:49:20,735 --> 00:49:24,820 >> Közönség: Lehet, hogy tényleg megteszi, hogy száraz hang, és azt nedvesen [hallhatatlan]? 965 00:49:24,820 --> 00:49:26,260 >> Hugh Zabriskie: Tudod, igen. 966 00:49:26,260 --> 00:49:29,260 Van újra ige, ott késedelem torzítás. 967 00:49:29,260 --> 00:49:33,260 Tudod alapvetően fel semmit között az, hogy a szendvics of-- is, 968 00:49:33,260 --> 00:49:37,660 gázvezeték jobb metafora, de lehet hozzá semmit ebben. 969 00:49:37,660 --> 00:49:38,200 Hűvös. 970 00:49:38,200 --> 00:49:40,280 >> Szóval én befejezem a demó itt, hogy egyfajta 971 00:49:40,280 --> 00:49:46,390 csak a puszta hányszor futhat, hogy a funkció egyszerre. 972 00:49:46,390 --> 00:49:49,280 Így fogok, hogy távolítsa el ezt. 973 00:49:49,280 --> 00:49:59,110 Megyek, hogy hozzon létre egy generátort hogy-- alapvetően mi does-- ez tényleg 974 00:49:59,110 --> 00:50:04,220 egyfajta bonyolult syntax-- de ez fog generálni megjegyzések menet közben, 975 00:50:04,220 --> 00:50:06,601 és csak elkezd játszani őket, hogy értékelje azokat. 976 00:50:06,601 --> 00:50:07,392 [Közbeiktatásával zongora] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Így tudunk csak, hogy egy kis zene itt. 979 00:50:12,817 --> 00:50:13,608 [Közbeiktatásával zongora] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Szóval mi ez a parancs nem, például, 982 00:50:41,470 --> 00:50:46,910 tart a három jegyzeteinek zongora, majd teszi őket a B3. 983 00:50:46,910 --> 00:50:48,660 Ez a szintaxis teheti Egy kicsit több értelme 984 00:50:48,660 --> 00:50:50,590 hogy azok, akik egy zenei háttér itt. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Azt is hozzá egy lábdob. 987 00:50:56,551 --> 00:50:57,050 Tudok-- 988 00:50:57,050 --> 00:50:58,048 >> [Közbeiktatásával készülékek] 989 00:50:58,048 --> 00:50:59,256 >> --just játék körül, hogy. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Szóval lehet make-- 992 00:51:13,474 --> 00:51:14,515 [Közbeiktatásával készülékek] 993 00:51:14,515 --> 00:51:15,513 Hogy az ember egy kicsit bosszantó. 994 00:51:15,513 --> 00:51:16,554 [Közbeiktatásával készülékek] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Úgy, hogy véletlenszerűen hozzáteszi száraz cimbalom minden 16. tudomásul, 16% 997 00:51:30,981 --> 00:51:31,481 [NEM HALLHATÓ]. 998 00:51:31,481 --> 00:51:32,522 >> [Közbeiktatásával készülékek] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Igen, így, ahogy ez works-- ez mindig 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Közbeiktatásával készülékek] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Igen, így a négy negyedévben, és a 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Közbeiktatásával készülékek] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Így átlagosan kapsz 60% találatának 16. jegyzeteket. 1008 00:52:33,780 --> 00:52:35,990 >> Egyébként, ez csak fajta fitogtatni 1009 00:52:35,990 --> 00:52:39,780 néhány dolog, amit lehetett építeni a Web Audio API. 1010 00:52:39,780 --> 00:52:43,840 Ez nagyon erős, ez tényleg gyors, és tudod, hogy egy csomó klassz dolgot 1011 00:52:43,840 --> 00:52:44,340 azzal. 1012 00:52:44,340 --> 00:52:51,260 Tehát újra, bármilyen kérdése van, e-mail myself-- Hugh-- vagy Sam, 1013 00:52:51,260 --> 00:52:55,869 és őszintén, a Google egy csomó jó források. 1014 00:52:55,869 --> 00:52:56,660 Valami utolsó kérdés? 1015 00:52:56,660 --> 00:52:57,970 Igen. 1016 00:52:57,970 --> 00:53:00,790 >> Közönség: így érheti A beépített mikrofon. 1017 00:53:00,790 --> 00:53:03,089 Mit tegyünk, ha a használja a jobb mikrofont? 1018 00:53:03,089 --> 00:53:05,380 Hugh Zabriskie: Ha akarta hogy hatékonyabb mikrofont? 1019 00:53:05,380 --> 00:53:11,320 Tehát újra, ez része a absztrakció közötti Chrome 1020 00:53:11,320 --> 00:53:12,950 és a számítógép többi részéhez. 1021 00:53:12,950 --> 00:53:18,950 Hacsak nem érhető el egy API, mint a webes MIDI API, 1022 00:53:18,950 --> 00:53:22,030 akkor talán talál valami hack, de általában nem megvalósítható. 1023 00:53:22,030 --> 00:53:25,300 >> SAM ZÖLD: Akkor also-- minden Chrome tudja, 1024 00:53:25,300 --> 00:53:28,820 az, amit az alapértelmezett mikrofon van, és újra csatlakozik a. 1025 00:53:28,820 --> 00:53:33,410 Tehát, ha volt egy mikrofont, amit lehetett beállítva a számítógép alapértelmezett mikrofon, 1026 00:53:33,410 --> 00:53:35,990 meg tudná elérni, hogy így és ez valószínűleg működni. 1027 00:53:35,990 --> 00:53:37,490 Hugh Zabriskie: Ez egy jó pont. 1028 00:53:37,490 --> 00:53:39,656 Még soha nem próbáltam, de akkor lehet, hogy egyfajta 1029 00:53:39,656 --> 00:53:45,700 of-- ha átirányíthatja az input hangszóró, lehet, hogy képes erre, igen. 1030 00:53:45,700 --> 00:53:48,360 >> Valami utolsó kérdés? 1031 00:53:48,360 --> 00:53:49,340 Hűvös. 1032 00:53:49,340 --> 00:53:51,680 Hát köszi srácok így sokat nézi. 1033 00:53:51,680 --> 00:53:52,199 Én Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM ZÖLD: Én vagyok Sam. 1035 00:53:52,990 --> 00:53:55,410 Hugh Zabriskie: És ez CS50. 1036 00:53:55,410 --> 00:53:56,767