1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN: Bok, svima. 3 00:00:07,170 --> 00:00:08,640 Dobro došli na naše seminara. 4 00:00:08,640 --> 00:00:10,009 Moje ime je Sam. 5 00:00:10,009 --> 00:00:11,050 HUGH Zabriskie: Ja sam Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM GREEN: A što ćemo danas govoriti O JavaScript i web Audio API. 7 00:00:17,420 --> 00:00:21,180 Samo za početak, taj je pregled našeg dnevnog reda za seminar. 8 00:00:21,180 --> 00:00:25,350 Ćemo početi govoriti o Zašto biste trebali biti zainteresirani za Web 9 00:00:25,350 --> 00:00:30,130 Audio API, zašto je JavaScript jezik što je potrebno za to, 10 00:00:30,130 --> 00:00:32,619 a zatim razgovarati o JavaScriptu essentials-- tako kao što je, 11 00:00:32,619 --> 00:00:34,800 vas provesti kroz neke osnove jezika, 12 00:00:34,800 --> 00:00:37,290 a onda razgovarati o Audio API na visokoj razini. 13 00:00:37,290 --> 00:00:41,140 Zatim, Hugh će razgovarati o nekim od faza audio produkcije 14 00:00:41,140 --> 00:00:45,509 a zatim demo ovaj strašan sekvencer Projekt je izgrađen i pokazati vam kod. 15 00:00:45,509 --> 00:00:48,050 A onda ćemo imati vremena za pitanja na kraju ljudi 16 00:00:48,050 --> 00:00:49,593 koji su ovdje živjeli. 17 00:00:49,593 --> 00:00:50,540 >> HUGH Zabriskie: cool. 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN: cool. 19 00:00:50,990 --> 00:00:51,383 >> HUGH Zabriskie: cool. 20 00:00:51,383 --> 00:00:52,170 Ja ću podržati. 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN: Dakle, prvi stvari prvi. 22 00:00:54,960 --> 00:00:57,840 Dakle, jedan od velikih stvari o Web Audio API 23 00:00:57,840 --> 00:01:00,480 je da ne postoji set up je potrebno. 24 00:01:00,480 --> 00:01:04,230 Ona dolazi ugrađen u Većina modernih preglednici, 25 00:01:04,230 --> 00:01:08,630 uključujući Chrome, EDGE, u cjelini hrpa others-- svih onih 26 00:01:08,630 --> 00:01:12,650 da veliki dijelovi ljudi koriste i danas. 27 00:01:12,650 --> 00:01:14,807 Dakle, nema se postaviti, Osim samo dobivanje 28 00:01:14,807 --> 00:01:16,890 web poslužitelj će, za da biste započeli raditi 29 00:01:16,890 --> 00:01:18,420 na vaš projekt, što je sjajno. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Preporučujemo lijepa teško da ćete uzeti u obzir 32 00:01:24,190 --> 00:01:26,530 pomoću Chrome za Web Development JavaScript, 33 00:01:26,530 --> 00:01:30,260 samo zato svom developer Alati su stvarno jaki. 34 00:01:30,260 --> 00:01:33,220 Kao primjer samo ono što mislimo rekavši otvoriti svoj JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- ako idete na Chrome i pogledate bilo koju web stranicu, 36 00:01:38,600 --> 00:01:43,897 a vi ostavili klik Pregledajte element, a zatim 37 00:01:43,897 --> 00:01:46,730 idete na ovom malom padajućem upravo ovdje, a vi kliknite na konzoli, 38 00:01:46,730 --> 00:01:50,660 vidjet ćete što otvara izgleda Mnogo kao naredbeni redak koji vam 39 00:01:50,660 --> 00:01:53,720 vidjeti na vašem Mac ili na ID. 40 00:01:53,720 --> 00:01:59,260 I baš kao da je, možemo Vrsta zapovijeda ovdje, kao i Clear, 41 00:01:59,260 --> 00:02:01,350 i druge naredbe kao što je to. 42 00:02:01,350 --> 00:02:04,267 Možemo stvoriti varijabli, kao što je vidjet ćemo kasnije JavaScript. 43 00:02:04,267 --> 00:02:07,100 I tako sve što možemo učiniti u JavaScript, možemo učiniti s konzole, 44 00:02:07,100 --> 00:02:11,430 i to je super zgodan način da se početi igrati oko s API 45 00:02:11,430 --> 00:02:15,760 i dobivanje udoban sa JavaScript pravo isključiti šišmiš. 46 00:02:15,760 --> 00:02:18,290 Ne zahtijeva postaviti, što je jako lijepo. 47 00:02:18,290 --> 00:02:18,790 Cool. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Odlično. 50 00:02:22,880 --> 00:02:24,780 >> Dakle, samo još jedna stvar za dodati. 51 00:02:24,780 --> 00:02:27,780 Ako imate bilo questions-- postoje mnogi od vas koji nisu ovdje žive, 52 00:02:27,780 --> 00:02:31,232 slobodno us-- ove e-mail su naše e-mail adrese. 53 00:02:31,232 --> 00:02:33,190 Ako imate pitanja ne želite pitati nas, 54 00:02:33,190 --> 00:02:36,160 kao, oh imam bug u mom kodu, ili nešto 55 00:02:36,160 --> 00:02:39,270 to je malo više specifičan, Možda je Google prvi. 56 00:02:39,270 --> 00:02:42,340 Postoji puno velikih resursa o Web Audio API vani. 57 00:02:42,340 --> 00:02:44,089 To je stvarno dobro dokumentirani i to je bio 58 00:02:44,089 --> 00:02:47,194 koriste tonu ljudi u industrije, i ljudi koji su samo 59 00:02:47,194 --> 00:02:48,610 izgradnju zabavne stvari za sebe. 60 00:02:48,610 --> 00:02:51,306 Dakle, ne bi trebalo biti puno resursa vani. 61 00:02:51,306 --> 00:02:53,040 Odlično. 62 00:02:53,040 --> 00:02:56,100 >> Cool, pa zašto Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Ovaj dijagram je malo o evoluciji putu 64 00:02:59,840 --> 00:03:04,100 Zvuk na webu je narasla tijekom vremena. 65 00:03:04,100 --> 00:03:13,080 Bgsound je kao izvorni HTML oznake da Internet Explorer koristi za podršku. 66 00:03:13,080 --> 00:03:16,790 To dopušteno samo za prilično osnovne zvukove, funkcionalnost nije bio vrlo snažan, 67 00:03:16,790 --> 00:03:19,380 i ne mogu učiniti komplicirano sekvenciranje, 68 00:03:19,380 --> 00:03:21,890 ili kontrolirati kada je zvuk počeo i zaustavio se vrlo robusno. 69 00:03:21,890 --> 00:03:23,930 Dakle, to nije bilo osobito dobro razvijena. 70 00:03:23,930 --> 00:03:27,470 Onda nakon toga, Bljesak došao along-- koji, 71 00:03:27,470 --> 00:03:31,712 Siguran sam da ti dečki su svi upoznati s Flash-- možda ne kako se to radi, 72 00:03:31,712 --> 00:03:32,920 ali sigurno ste ga vidjeli. 73 00:03:32,920 --> 00:03:35,586 Moraš ažurirati svoj flash Plug-in, sve takve stvari, 74 00:03:35,586 --> 00:03:40,110 a to svakako proširiti raspon funkcionalnosti koja je bila dostupna. 75 00:03:40,110 --> 00:03:45,370 No, što korisniku instalaciju plug-in je definitivno 76 00:03:45,370 --> 00:03:48,480 nedostatak se, uključujući Flash u svoj program, zar ne? 77 00:03:48,480 --> 00:03:52,410 Jer onda ste ovisni na Korisnik ide i nalaz Ovaj plug-in, 78 00:03:52,410 --> 00:03:54,660 i vjerojatno se okrenuo isključiti ovaj dodatni korak 79 00:03:54,660 --> 00:03:56,640 oni moraju poduzeti kako koristiti aplikaciju. 80 00:03:56,640 --> 00:04:01,270 A onda bi moglo biti ažurirano koji će razbiti cijeli program, 81 00:04:01,270 --> 00:04:03,880 i to završi kao noćna mora za developer, previše. 82 00:04:03,880 --> 00:04:06,230 Tako da je barikadu. 83 00:04:06,230 --> 00:04:10,480 >> A onda nakon toga je došao zajedno, HTML audio tag, koji 84 00:04:10,480 --> 00:04:16,579 je značajka više moderan HTML-- koji svakako dozvoljeno za puno više stvari, 85 00:04:16,579 --> 00:04:20,050 ali čak i stvari koje mogu učiniti bilo je malo ograničena samo 86 00:04:20,050 --> 00:04:22,730 kao rezultat stvari da HTML je sposoban. 87 00:04:22,730 --> 00:04:26,060 Dakle, kada je JavaScript API, Web Audio API, 88 00:04:26,060 --> 00:04:29,290 postalo standard praksa preko preglednicima, 89 00:04:29,290 --> 00:04:32,490 koji stvarno širi skup mogućnosti za programere 90 00:04:32,490 --> 00:04:36,590 da stvarno dobili u zgradi cool stvari za web. 91 00:04:36,590 --> 00:04:39,220 Dugo vremena je morao bili stvarno robusne alate 92 00:04:39,220 --> 00:04:44,360 za izvornim audio aplikacija, volimo-članovima svatko zna Prosjaci, 93 00:04:44,360 --> 00:04:48,360 a onda očito postoji više profesionalne audio miješanje aplikacije, 94 00:04:48,360 --> 00:04:49,640 i da vrsta stvari. 95 00:04:49,640 --> 00:04:52,690 No, tu nije bio stvarno dobar Cloud-- ne 96 00:04:52,690 --> 00:04:55,811 Cloud, da, pretpostavljam Cloud-- web-temeljen platforma 97 00:04:55,811 --> 00:04:58,310 koji će omogućiti programerima da izgradnju aplikacija za ljude 98 00:04:58,310 --> 00:05:00,570 učiniti audio miješanje. 99 00:05:00,570 --> 00:05:03,960 I kao što će vam pokazati kasnije, Web Audio API 100 00:05:03,960 --> 00:05:07,470 omogućuje stvarno moćan stvari se dogoditi jako jednostavno, 101 00:05:07,470 --> 00:05:09,597 što je prilično cool. 102 00:05:09,597 --> 00:05:12,680 Dakle, to je naputak da zašto treba gledati ostatak seminara, 103 00:05:12,680 --> 00:05:14,350 u osnovi. 104 00:05:14,350 --> 00:05:17,880 >> I sada, ja ću govoriti o neki JavaScript-- samo osnovni elementi 105 00:05:17,880 --> 00:05:20,240 jezika, tako da je možemo biti na istoj stranici 106 00:05:20,240 --> 00:05:22,470 kada govorimo o API malo kasnije. 107 00:05:22,470 --> 00:05:23,260 Cool. 108 00:05:23,260 --> 00:05:26,192 >> Dakle, to je sažetak. 109 00:05:26,192 --> 00:05:27,150 Zaboravio sam da je ovdje. 110 00:05:27,150 --> 00:05:27,510 Da. 111 00:05:27,510 --> 00:05:27,870 >> HUGH Zabriskie: Ima dvije slajdova ovdje. 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN: Ovo je sažetak nekih ograničenja 113 00:05:30,245 --> 00:05:35,220 od drugih obvezujućih, starim metodama. 114 00:05:35,220 --> 00:05:37,828 I onda danas, imamo te stvari. 115 00:05:37,828 --> 00:05:40,011 Cool. 116 00:05:40,011 --> 00:05:40,510 Odlično. 117 00:05:40,510 --> 00:05:43,200 >> Dakle, JavaScript osnove. 118 00:05:43,200 --> 00:05:47,230 Prvo stvari prvi, tu je prilično značajna razlika 119 00:05:47,230 --> 00:05:49,940 u odnosu JavaScript u jezik kao C, na način 120 00:05:49,940 --> 00:05:52,050 koje su varijable stvorio. 121 00:05:52,050 --> 00:05:55,634 Tako je u C, mi smo se da imaju upisati svoje varijable, zar ne? 122 00:05:55,634 --> 00:05:57,800 I ne mislim tip poput upisati ih u, mislim tip 123 00:05:57,800 --> 00:06:01,900 kao i dodijeliti im type-- značenje kao, int, float, ugljen. 124 00:06:01,900 --> 00:06:05,210 U C, doista su korišteni za moraju stvoriti varijablu 125 00:06:05,210 --> 00:06:09,690 a zatim staviti na tu vrstu za Cijelo vrijeme da koristimo tu varijablu. 126 00:06:09,690 --> 00:06:13,990 I to nije nužno i gore, ali to je vjerojatno teže koristiti. 127 00:06:13,990 --> 00:06:16,190 Jedna od cool značajke od JavaScript 128 00:06:16,190 --> 00:06:19,740 da varijable ono što se naziva "dinamički upisali", koja 129 00:06:19,740 --> 00:06:22,500 znači da ja mogu stvoriti varijabla s tim sintaksa, 130 00:06:22,500 --> 00:06:25,800 varX jednako 5, npr. 131 00:06:25,800 --> 00:06:27,790 To je izvorno stvara cijeli variable-- 132 00:06:27,790 --> 00:06:29,870 Pravo ispod napa somewhere-- ali ja 133 00:06:29,870 --> 00:06:33,040 Možete promijeniti tu varijablu odnosi se na niz 134 00:06:33,040 --> 00:06:35,820 ne radi ništa slično stvarajući novu varijablu. 135 00:06:35,820 --> 00:06:37,880 Ne morate se brinuti o vrsti mijenja. 136 00:06:37,880 --> 00:06:45,440 JavaScript zna da je tip-a promijenilo, a to se događa dinamički. 137 00:06:45,440 --> 00:06:48,510 >> Dakle, tu su i prednosti i nedostaci koji, 138 00:06:48,510 --> 00:06:51,250 kao netko tko je radio u JavaScript za neko vrijeme mogao znati. 139 00:06:51,250 --> 00:06:53,600 Postoje slučajevi kad vas možda slučajno 140 00:06:53,600 --> 00:06:57,720 promijeniti tip varijable i Ne nositi taj tip mijenja, 141 00:06:57,720 --> 00:07:01,120 a zatim vaše JavaScript može crash-- ili iznimka 142 00:07:01,120 --> 00:07:06,070 biti bačen, jer ćete imati pogrešan tip kada očekivati ​​jednu vrstu. 143 00:07:06,070 --> 00:07:07,040 Cool. 144 00:07:07,040 --> 00:07:11,470 >> Dakle, scoping-- koji je kao, ako smo sjećam se prvih tjedana u tijeku, 145 00:07:11,470 --> 00:07:15,420 odnosi na to kako vidljivom varijablu je iu kojem području koda. 146 00:07:15,420 --> 00:07:18,400 Sve to izgleda vrlo slično na način da izgleda u C. 147 00:07:18,400 --> 00:07:24,755 Dakle varijable scoped općenito unutar vitičastih zagrada unutar funkcija, 148 00:07:24,755 --> 00:07:27,005 a zatim tu su i globalno scoped varijable koje 149 00:07:27,005 --> 00:07:29,171 are-- ako napisati varijablu izvan funkcije, 150 00:07:29,171 --> 00:07:31,790 to će biti vidljiv u cijelom tekstu. 151 00:07:31,790 --> 00:07:35,840 >> Jedna od razlika između JavaScript C i naročito, 152 00:07:35,840 --> 00:07:40,280 je da ako proglasi globalni varijabla bilo gdje u tekstualnu datoteku 153 00:07:40,280 --> 00:07:43,324 to je vidljivo u svakom funkciji unutar tog tekstualnu datoteku. 154 00:07:43,324 --> 00:07:44,240 To je točno, zar ne? 155 00:07:44,240 --> 00:07:46,330 >> HUGH Zabriskie: Aha. 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN: Dakle, to je također malo malo funky u odnosu na C, 157 00:07:49,120 --> 00:07:52,660 gdje smo uvijek morali imati naš varijabilne definicije iznad mjesta 158 00:07:52,660 --> 00:07:53,770 oni su se koristili. 159 00:07:53,770 --> 00:07:57,957 To nije pravilo da je izvršena više, tako, malo drugačija. 160 00:07:57,957 --> 00:08:00,540 I opet samo reemphasize, Globalna odnosu lokalne variables-- 161 00:08:00,540 --> 00:08:03,457 vrlo slično C. Možete imati dvije varijable s istim imenom, 162 00:08:03,457 --> 00:08:06,540 i imaju jedan od njihovih imena biti zasjenjen po lokalnom varijabla ako je jedan od njih 163 00:08:06,540 --> 00:08:07,546 je globalna. 164 00:08:07,546 --> 00:08:09,420 Dakle, slična vrsta problemi koji neki od vas 165 00:08:09,420 --> 00:08:11,920 može izvoditi u u nekim vašeg problema postavlja sada. 166 00:08:11,920 --> 00:08:14,450 Cool, tako da je varijable. 167 00:08:14,450 --> 00:08:20,310 >> Kontrola toka, što znači kao, ako-else-- logično stuff-- i petlje. 168 00:08:20,310 --> 00:08:24,510 Dakle, za početak, to je ono, ako-ostalo izjave izgledati JavaScript. 169 00:08:24,510 --> 00:08:29,750 Postavljanje različitih stvari na linijama nije važno. 170 00:08:29,750 --> 00:08:34,409 Ovo je samo jedan od konvencija za način na koji smo strukture koda. 171 00:08:34,409 --> 00:08:38,634 Baš kao u C, imamo "ako" izjava zagradu. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 To nije ono što sam trebao učiniti. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 I did it again. 176 00:08:45,550 --> 00:08:46,841 >> HUGH Zabriskie: Pokušavajući izaći? 177 00:08:46,841 --> 00:08:49,770 SAM GREEN: Ne, ja sam Samo pokušavam povećavanje. 178 00:08:49,770 --> 00:08:50,660 Nije važno. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Dakle, imamo "ako" izjavu i imamo stanje unutar nje 181 00:08:59,370 --> 00:09:03,130 koji se procjenjuje na true ili false, i koji određuje hoće li ili ne 182 00:09:03,130 --> 00:09:04,510 možemo ući u taj blok koda. 183 00:09:04,510 --> 00:09:09,860 Isto tako, imamo drugo-ako i drugo, baš kao što smo navikli u C. 184 00:09:09,860 --> 00:09:14,010 >> Vi bi također trebali biti prilično udobno pravo isključiti šišmiš s petlje, 185 00:09:14,010 --> 00:09:16,440 jer oni također izgledaju puno poput C izgleda. 186 00:09:16,440 --> 00:09:19,600 Ali vi ćete opet primijetiti da smo ima, umjesto int inicijalizacije, 187 00:09:19,600 --> 00:09:22,570 imamo var inicijalizacije. 188 00:09:22,570 --> 00:09:24,650 I mislim da imate biti oprezni kako bi 189 00:09:24,650 --> 00:09:28,460 Sigurno ne promijenite vrijednost od I od int u nizu, 190 00:09:28,460 --> 00:09:31,780 na primjer, jer će izazvati čudno ponašanje možda ne 191 00:09:31,780 --> 00:09:32,280 očekivati. 192 00:09:32,280 --> 00:09:35,750 Ali to treba izgledati lijepo upoznati te. 193 00:09:35,750 --> 00:09:39,460 >> Dakle, ovo je mjesto gdje se stvari počnu dobiti malo lud u JavaScript 194 00:09:39,460 --> 00:09:44,920 za nekoga tko ide iz Pozadina C. Postoje funkcije 195 00:09:44,920 --> 00:09:48,070 u JavaScriptu, a tu je jedan način proglasiti funkciju koja izgleda 196 00:09:48,070 --> 00:09:50,361 vrsta sličan C, a onda postoji još jedan koji 197 00:09:50,361 --> 00:09:52,450 izgleda vrsta drugačije. 198 00:09:52,450 --> 00:09:54,930 >> Prva verzija, što možemo vidjeti ovdje, 199 00:09:54,930 --> 00:09:59,260 je vrsta C-kao, u kojem možemo reći, to je funkcija, 200 00:09:59,260 --> 00:10:01,490 dati mu ime, dati broj argumenata, 201 00:10:01,490 --> 00:10:05,150 a zatim se sadržaj funkcije idite u te vitičastih zagrada. 202 00:10:05,150 --> 00:10:08,850 Vidjet ćemo primjer argumenti u samo sekundi. 203 00:10:08,850 --> 00:10:13,420 >> Dok u sljedećem retku, vidimo, oh, evo varijabla zove "myFunction" 204 00:10:13,420 --> 00:10:17,546 a mi ga jednaka ovo generički stvar-- function-- da 205 00:10:17,546 --> 00:10:19,170 ne čini da sve što se događa. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Razlog da je drukčije od C je da je JavaScript 208 00:10:26,080 --> 00:10:30,040 je ono što se naziva funkcionalna jezik, ili ima funkcionalne elemente, što znači 209 00:10:30,040 --> 00:10:33,510 koja funkcionira zapravo vrijednosti. 210 00:10:33,510 --> 00:10:39,520 A to znači da možemo postaviti varijabla jednaka funkciju 211 00:10:39,520 --> 00:10:43,210 a zatim premjestiti tu funkciju okolo, to prođe kao argument, 212 00:10:43,210 --> 00:10:46,550 učiniti sve vrste stvari kao da s funkcijama. 213 00:10:46,550 --> 00:10:49,682 >> Jedna druga stvar note-- Funkcije su pisani 214 00:10:49,682 --> 00:10:51,140 s određenim brojem argumenata. 215 00:10:51,140 --> 00:10:54,056 Vidjet ćemo primjer funkcija s argumentom na sljedeći slajd. 216 00:10:54,056 --> 00:10:56,720 Ali JavaScript neće vikati na vas ako pokušate 217 00:10:56,720 --> 00:10:59,330 koristiti funkciju s neodgovarajući broj argumenata. 218 00:10:59,330 --> 00:11:05,310 To ću učiniti sve kako bi to znači da ako prođe, 219 00:11:05,310 --> 00:11:09,410 vas poziva funkciju koja očekuje Argument bez argumenta, sve što 220 00:11:09,410 --> 00:11:13,990 će se dogoditi je da će učiniti sve pokušati izvršiti taj kod, 221 00:11:13,990 --> 00:11:16,541 a ako je to na kraju vodi u iznimkom ili pogreške, 222 00:11:16,541 --> 00:11:19,790 to će baciti tu iznimku i samo držati going-- što je samo jedan od načina 223 00:11:19,790 --> 00:11:21,070 da JavaScript funkcionira. 224 00:11:21,070 --> 00:11:21,781 Da. 225 00:11:21,781 --> 00:11:24,207 >> PUBLIKA: Što se događa ako ima previše argumenata? 226 00:11:24,207 --> 00:11:26,040 SAM GREEN: Tako je Pitanje je, što se događa 227 00:11:26,040 --> 00:11:27,380 ako ima previše argumenata? 228 00:11:27,380 --> 00:11:29,171 A odgovor je da JavaScript će samo 229 00:11:29,171 --> 00:11:32,120 zanemari one koje su nakon one očekuje. 230 00:11:32,120 --> 00:11:36,420 To će pokušati izvršiti funkciju pozvati kao da je to samo prva dva. 231 00:11:36,420 --> 00:11:37,075 Pravo? 232 00:11:37,075 --> 00:11:37,700 >> HUGH Zabriskie: To je točno, da. 233 00:11:37,700 --> 00:11:39,449 Slično tome, ako premalo argumenata, 234 00:11:39,449 --> 00:11:42,640 to je samo vrsta daje nula za sve argumenti da nema vrijednosti 235 00:11:42,640 --> 00:11:43,660 za. 236 00:11:43,660 --> 00:11:45,810 >> SAM GREEN: što može zapravo biti pri ruci, ako vas 237 00:11:45,810 --> 00:11:49,060 želite napisati funkciju koja Potrebno varijablu broj argumenata. 238 00:11:49,060 --> 00:11:55,830 Možete postaviti zadane vrijednosti definicija funkcije, 239 00:11:55,830 --> 00:11:59,060 i to može ignorirati činjenicu da ulaz ne postoji. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Dakle, želim razgovarati malo više o ovom posljednjem metka 242 00:12:04,000 --> 00:12:05,541 točka, što funkcije su vrijednosti. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Ovo je primjer kako je malo um-puhanje 245 00:12:11,010 --> 00:12:14,880 ako se samo čitati, i ne mislim o tome što se događa na sekundu. 246 00:12:14,880 --> 00:12:17,910 Dakle, pogledajmo samo na prvi red ovdje. 247 00:12:17,910 --> 00:12:24,360 Imamo tu varijablu, f1, da kažemo je funkcija koja radi ovu stvar. 248 00:12:24,360 --> 00:12:28,535 I sadržaj funkcije su console.log ('Hello'). 249 00:12:28,535 --> 00:12:32,220 Možete misliti console.log kao JavaScript ekvivalent printf. 250 00:12:32,220 --> 00:12:35,510 Dakle, što će se dogoditi je, ako ćemo pokrenuti ovaj kod u našem pregledniku, 251 00:12:35,510 --> 00:12:37,530 to će ispisati niz. 252 00:12:37,530 --> 00:12:39,342 Mogu dokazati da. 253 00:12:39,342 --> 00:12:42,300 PUBLIKA: Do zapisnik, ipak, ne da znači da je se snima negdje? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN: Da. 255 00:12:42,550 --> 00:12:44,216 Dakle, ja ću vam pokazati što će se dogoditi. 256 00:12:44,216 --> 00:12:48,085 Dakle, pitanje je, što se prijavite znači? 257 00:12:48,085 --> 00:12:51,262 >> HUGH Zabriskie: Pa console.log je kao printf za C. 258 00:12:51,262 --> 00:12:52,970 SAM GREEN: Pa console.log je kao printf, 259 00:12:52,970 --> 00:12:59,240 pa ako imam tu console.log ('Hello'), i ja zvati, string "Hello" 260 00:12:59,240 --> 00:13:00,730 dobiva ispisati na konzolu. 261 00:13:00,730 --> 00:13:03,340 To je konzola. 262 00:13:03,340 --> 00:13:05,930 To je isto kao printf, gdje ispisuje na standardni out. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 A vidjet ćemo za minutu, no to je zapravo 265 00:13:11,230 --> 00:13:16,529 pozivajući se na konzole objekta, i poziva metodu na taj objekt. 266 00:13:16,529 --> 00:13:18,320 To će učiniti više smisla u minuti kada smo 267 00:13:18,320 --> 00:13:20,660 doći do pričaju objekata u JavaScript, 268 00:13:20,660 --> 00:13:22,509 ali sam mislio bih samo napomenuti da. 269 00:13:22,509 --> 00:13:24,300 HUGH Zabriskie: Mi smo koristi se u C, redu- 270 00:13:24,300 --> 00:13:27,580 mi obično napisati veliki programa u glavnom ništa učiniti. 271 00:13:27,580 --> 00:13:30,700 No, ono što je cool u JavaScript je li imaju ovu vrstu tumača koji 272 00:13:30,700 --> 00:13:33,620 radi u stvarnom vremenu, tako da traje samo liniju po liniju, 273 00:13:33,620 --> 00:13:35,320 to samo može protumačiti da su na licu mjesta. 274 00:13:35,320 --> 00:13:37,403 I to prati stvari koje su pokrenuti prije, 275 00:13:37,403 --> 00:13:41,620 tako da je prilično koristan alat za koristiti console.log ili konzolu, 276 00:13:41,620 --> 00:13:46,870 Općenito, za samo igranje s oko JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM GREEN: Znači vraćamo na to example-- drugu liniju koda 278 00:13:51,420 --> 00:13:55,320 Ovdje je prilično doista uznemirujuće u glavi. 279 00:13:55,320 --> 00:13:59,790 Prvi put kad sam pročitao ovo, Bilo je to kao, što se događa? 280 00:13:59,790 --> 00:14:04,580 Dakle, ono što se događa je to Funkcija deklaracija, kaže, 281 00:14:04,580 --> 00:14:10,170 Imam funkciju naziva f2 što se očekuje jedan argument, f, 282 00:14:10,170 --> 00:14:12,990 a zatim ga poziva da Funkcija, f, koji je 283 00:14:12,990 --> 00:14:17,652 donesen na njega kao argument bez argumenata sama. 284 00:14:17,652 --> 00:14:19,110 Dakle, to bi moglo biti zbunjujuće. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Ako shvatimo to kao f2 traje f1 kao argument, a zatim unutar F2, 287 00:14:28,400 --> 00:14:31,190 f dobiva called-- što znači da ove linije koda, 288 00:14:31,190 --> 00:14:34,192 Nakon ove dvije linije kod, rezultati u "Hello" 289 00:14:34,192 --> 00:14:35,400 se ispisuje na konzoli. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Činjenica da možemo proći djeluje oko kao vrijednosti 292 00:14:44,910 --> 00:14:47,870 završi kao jedan od najviše moćne značajke JavaScript 293 00:14:47,870 --> 00:14:49,700 kao programski jezik. 294 00:14:49,700 --> 00:14:52,782 Izvan sve od strašan stvari može učiniti, 295 00:14:52,782 --> 00:14:54,990 kao oblici iz Jezik u smislu način 296 00:14:54,990 --> 00:14:58,400 da čini stvari jednostavno programirati i omogućuje 297 00:14:58,400 --> 00:15:01,060 za stvari koje nisu posebno dobro prilagođen na webu, 298 00:15:01,060 --> 00:15:04,500 funkcionalni programiranje i funkcionalni programiranje aspekti JavaScript 299 00:15:04,500 --> 00:15:07,130 jedna od najviše moćna pojmovi koji 300 00:15:07,130 --> 00:15:11,030 postoji u JavaScript-- ako mene pitate. 301 00:15:11,030 --> 00:15:11,960 Cool. 302 00:15:11,960 --> 00:15:13,534 >> Dakle, sljedeća stvar. 303 00:15:13,534 --> 00:15:16,450 Osim što je funkcionalna, postoje i elementi JavaScript 304 00:15:16,450 --> 00:15:20,510 koji su objektno-orijentirani, što je jedan od vrlo 305 00:15:20,510 --> 00:15:23,800 Popularni krilaticama u računalnoj znanosti. 306 00:15:23,800 --> 00:15:27,040 Objektno orijentirano programiranje je jako popularna stvar. 307 00:15:27,040 --> 00:15:34,210 JavaScript je verzija da je, gdje Vjerujem svaka vrijednost je 308 00:15:34,210 --> 00:15:41,475 predmet, što znači da je svaki objekt oblozi zajedno neki broj vrijednosti. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Dakle, za vrijednosti koje su jednostavne, kao što su cijeli broj, kao varX jednaka 5, 311 00:15:49,750 --> 00:15:52,250 da predmet samo obaviti tu jednu vrijednost. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Ali, mi također možemo zamisliti situaciju where-- možemo sjetiti situacija u C 314 00:15:59,036 --> 00:16:00,910 gdje smo htjeli napraviti nešto s konstrukt, 315 00:16:00,910 --> 00:16:03,285 na primjer, da se omata nekoliko Vrijednosti zajedno i čini 316 00:16:03,285 --> 00:16:05,870 to je stvarno lako proći okolo stvari. 317 00:16:05,870 --> 00:16:09,270 To je kad je objekt u JavaScript. 318 00:16:09,270 --> 00:16:12,340 >> Važno je zapamtiti kad kažem da predmeti zamotan 319 00:16:12,340 --> 00:16:15,330 neki broj vrijednosti zajedno, koja funkcionira također 320 00:16:15,330 --> 00:16:21,506 vrijednosti, što znači da funkcije mogu Također se unutar jednog JavaScript objekta. 321 00:16:21,506 --> 00:16:26,910 A razlog je to važno je da, dok mi često 322 00:16:26,910 --> 00:16:30,290 mislim pozivanja metode na objekt koji je 323 00:16:30,290 --> 00:16:35,200 popularnog izraza iz drugih popularni objektno-orijentirani jezici 324 00:16:35,200 --> 00:16:39,330 jedan od razlika je u tome sve što je postupak u JavaScript 325 00:16:39,330 --> 00:16:47,270 je vrijednost pohranjena unutar objekta koji obavlja neku action-- eventualno 326 00:16:47,270 --> 00:16:51,850 pomoću drugih vrijednosti koje su unutar tog objekta, ali ne nužno. 327 00:16:51,850 --> 00:16:56,930 Dakle, možete zamisliti situaciju, ja Valjda u malo ludi način, 328 00:16:56,930 --> 00:17:02,990 gdje se zove metodu jednom objekta na drugi objekt, npr. 329 00:17:02,990 --> 00:17:06,010 Dakle, to je malo funky na taj način. 330 00:17:06,010 --> 00:17:09,369 >> A također možete promijeniti metode koje su povezane s predmetom 331 00:17:09,369 --> 00:17:13,740 dodjeljivanjem taj postupak A Nova funkcija, što je također 332 00:17:13,740 --> 00:17:18,250 prilično drukčiji od drugih objektno-orijentirani jezici, gdje je 333 00:17:18,250 --> 00:17:21,410 Jednom mi izjavljujemo objekt i instantiate ga, 334 00:17:21,410 --> 00:17:25,839 ne možemo mijenjati metode koje su povezana s tim predmetom više. 335 00:17:25,839 --> 00:17:28,680 Tako da je prilično drugačija. 336 00:17:28,680 --> 00:17:29,570 Cool. 337 00:17:29,570 --> 00:17:34,010 >> Dakle ovdje je primjer, prvo, jednog objekta u akciji. 338 00:17:34,010 --> 00:17:36,390 To je ono što se naziva generički objekt, koji 339 00:17:36,390 --> 00:17:39,460 znači da nema niti Konkretno ime, nema klase, 340 00:17:39,460 --> 00:17:42,190 to je samo neki omatanje vrijednosti. 341 00:17:42,190 --> 00:17:49,790 A način na koji izgleda je, imamo ovaj vanjska par vitičastih zagrada ovdje 342 00:17:49,790 --> 00:17:57,950 koji ukazuju na JavaScript i reći, to je objekt. 343 00:17:57,950 --> 00:18:02,130 Vrijednosti unutar nje su svaki vrijednosti unutar 344 00:18:02,130 --> 00:18:04,590 objekta koji bi trebao biti zamotan zajedno. 345 00:18:04,590 --> 00:18:09,180 A unutar tog objekta, smo onda su ključne parove vrijednosti, 346 00:18:09,180 --> 00:18:13,880 gdje ključ se odnosi na ime vrijednosti unutar objekta, 347 00:18:13,880 --> 00:18:16,790 a drugi side-- nasuprot debelog here-- 348 00:18:16,790 --> 00:18:19,850 je stvarna vrijednost koji trebaju biti pohranjeni. 349 00:18:19,850 --> 00:18:26,210 >> Dakle vidite ovdje imamo Ključ zove fn s vrijednosti SAM, 350 00:18:26,210 --> 00:18:29,430 slijedi zarez, govoreći na sljedeći unos. 351 00:18:29,430 --> 00:18:33,560 Zatim ključ zove LN, s vrijednošću od zelene, 352 00:18:33,560 --> 00:18:35,840 slijedi zarez, slijedi "print" 353 00:18:35,840 --> 00:18:43,209 koji će imati funkciju vrijednost koji će raditi ovaj redak koda. 354 00:18:43,209 --> 00:18:45,500 Uzmimo jedan korak natrag i raspakirati što se ovdje događa. 355 00:18:45,500 --> 00:18:47,280 Dakle, ovo je malo komplicirano, i vidimo nešto novo 356 00:18:47,280 --> 00:18:48,071 prvi put. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 Na "to" ključna je nova stvar vidimo ovdje, a što to radi 359 00:18:55,065 --> 00:19:00,540 se odnosi na struju objekt u opsegu, zar ne? 360 00:19:00,540 --> 00:19:03,990 Dakle, kada kažemo, ova ističe sve na putu natrag 361 00:19:03,990 --> 00:19:08,140 na cijelom ovom object-- kad radimo this.fn, 362 00:19:08,140 --> 00:19:11,990 ćemo ići sve na putu natrag ovaj objekt, idite na fn vrijednost 363 00:19:11,990 --> 00:19:16,471 i dobiti Sam, povucite ga skroz natrag, staviti ga ovdje, a onda krenuti dalje. 364 00:19:16,471 --> 00:19:19,838 >> PUBLIKA: Pa s dohvat je to učinio zbog parametra 365 00:19:19,838 --> 00:19:20,621 definicija? 366 00:19:20,621 --> 00:19:23,870 SAM GREEN: Dakle, pitanje je, je dohvat učinjeno zbog parametra 367 00:19:23,870 --> 00:19:24,727 definicija? 368 00:19:24,727 --> 00:19:25,435 Da, apsolutno. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Što će se dogoditi ovdje jest, ova točka govori u JavaScript, 371 00:19:32,470 --> 00:19:39,990 U redu, ja dobijam neke vrijednosti ovog objekta od sebe. 372 00:19:39,990 --> 00:19:46,375 A onda ćemo tražiti upis zove fn, a ako se to utvrdi, 373 00:19:46,375 --> 00:19:48,470 to će se vratiti da value-- tako, to je Sam. 374 00:19:48,470 --> 00:19:51,540 Ali sam također mogao upisali nešto što nije ovdje definirana, 375 00:19:51,540 --> 00:19:54,090 a onda bi jednostavno povratak undefined-- koji 376 00:19:54,090 --> 00:19:58,250 je stvar koja JavaScript mogu ne, što može imati koristi, 377 00:19:58,250 --> 00:20:03,190 ali to je also-- ako napravite pravopisnu pogrešku, to može dovesti do čudnih pogrešaka. 378 00:20:03,190 --> 00:20:05,617 Tako da ću samo pokušati pronaći što god to reći pronaći 379 00:20:05,617 --> 00:20:07,700 i to neće žaliti ako ga ne nalaze. 380 00:20:07,700 --> 00:20:11,390 To ću samo reći, nisam ga naći, a onda krenuti dalje. 381 00:20:11,390 --> 00:20:17,581 Dakle, to će biti nedefiniran, plus prazan, plus prezime. 382 00:20:17,581 --> 00:20:18,080 Da. 383 00:20:18,080 --> 00:20:21,070 A onda možemo vidjeti da ako mi onda bi mogao otići dolje i access-- 384 00:20:21,070 --> 00:20:25,450 i zovemo tf.print () sa zagradama. 385 00:20:25,450 --> 00:20:30,000 To će nazvati ispis Funkcija bez argumenata, zar ne? 386 00:20:30,000 --> 00:20:34,490 Ali ako mi samo rekao tf.print () točka-zarez, bez zagrada, 387 00:20:34,490 --> 00:20:37,480 sve što bi učinio je povući iz funkciji od vrijednosti, 388 00:20:37,480 --> 00:20:40,609 ali zapravo ne zove. 389 00:20:40,609 --> 00:20:41,162 Cool. 390 00:20:41,162 --> 00:20:42,870 HUGH Zabriskie: Ukoliko ćemo napraviti objekt? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: Naravno, neka je učiniti. 392 00:20:44,161 --> 00:20:48,750 Dakle, ja mogu pomaknuti ovo Primjer za konzole. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Možemo zamisliti da imam objekt. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Dakle, ovo je jednostavan objekt. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Ovo je objekt koji sadrži dva vrijednosti s dvije tipke, dva ključna vrijednost 399 00:21:11,050 --> 00:21:12,710 parova. 400 00:21:12,710 --> 00:21:21,850 Pa sam onda mogu pristupiti vrijednost pohranjenu unutar tog objekta od strane radi x.x1, 401 00:21:21,850 --> 00:21:23,400 na primjer, i ja dobiti 1 leđa. 402 00:21:23,400 --> 00:21:29,590 Isto tako, x.x2, dobiti tu vrijednost natrag. 403 00:21:29,590 --> 00:21:33,330 >> A sada stvarno cool stvar je, ja mogu zapravo dodati nešto na ovaj objekt 404 00:21:33,330 --> 00:21:34,316 nakon što sam ga stvorio. 405 00:21:34,316 --> 00:21:36,315 Dakle, možete zamisliti, neka je kažu imam funkciju. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> HUGH Zabriskie: Vi morate učiniti Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN: Oh, to je neugodno. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Što se ne sviđa? 411 00:22:04,324 --> 00:22:04,824 Oh. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Idemo. 414 00:22:08,691 --> 00:22:09,190 Cool. 415 00:22:09,190 --> 00:22:12,840 >> Pa upravo sam stvorio ova funkcija f, koji 416 00:22:12,840 --> 00:22:17,590 će ići na struju Cilj i ispis this.x1. 417 00:22:17,590 --> 00:22:20,330 Dakle, ako sam samo nazvati f strane sama, ništa se događa 418 00:22:20,330 --> 00:22:26,970 dogoditi, zar ne, jer nema x1 polje u objekt to se odnosi na. 419 00:22:26,970 --> 00:22:39,710 Ali, ako kažem, x.f = f, a onda sam pozvati x.f (), ja ću se vratiti 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 To je funkcija f sada povezana s objektnim x, 422 00:22:46,530 --> 00:22:51,800 koji ima ključnu zove x1 povezane s vrijednošću 1, 423 00:22:51,800 --> 00:22:54,570 pa kad mi zovemo this.x1, to je će naći ono što traži 424 00:22:54,570 --> 00:22:56,450 i biti u mogućnosti ispisati vrijednost van. 425 00:22:56,450 --> 00:22:58,700 Dakle, to je samo jedan primjer od vrste ludog stvari 426 00:22:58,700 --> 00:23:01,190 što možete učiniti s objektima u JavaScript. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Tako da je verzija generička verzija, što znači 429 00:23:07,560 --> 00:23:13,780 da smo stvorili objekt pomoću ovog zagrada notation-- Brace zapis, 430 00:23:13,780 --> 00:23:16,880 rather-- i to je zgodan ako mi samo želimo 431 00:23:16,880 --> 00:23:21,440 jedan primjerak određenog objekta, ali što ako želimo imati više od jednog 432 00:23:21,440 --> 00:23:22,210 iste vrste? 433 00:23:22,210 --> 00:23:24,440 A odgovor na to Pitanje je, postoje stvari 434 00:23:24,440 --> 00:23:26,760 zove nastavu u JavaScriptu, kao dobro. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Možemo stvoriti funkciju koja ne nekakvu inicijalizacije 437 00:23:36,420 --> 00:23:41,690 za stranog objekta, i mi bi, kao što je, 438 00:23:41,690 --> 00:23:44,550 moj class-- tako naziva od višekratnu upotrebu object-- 439 00:23:44,550 --> 00:23:47,100 jednaka funkciju koja ga postavlja. 440 00:23:47,100 --> 00:23:52,280 Pa što će to biti ekvivalent da se stvara objekt koji 441 00:23:52,280 --> 00:23:55,930 će biti samo željeli, kovrčava braće, str, debelog crijeva, 442 00:23:55,930 --> 00:23:59,630 ovo je string, točka-zarez, kovrčava braće. 443 00:23:59,630 --> 00:24:01,880 To će biti generički Cilj nam inicijalizirati, 444 00:24:01,880 --> 00:24:06,380 s jedne razlikom što se na Sljedećih linije smo stvorili prototip, koji 445 00:24:06,380 --> 00:24:11,190 znači to je zadani ključ koji Dodamo li naš objekt koji 446 00:24:11,190 --> 00:24:13,970 ima vrijednost navedene ovdje. 447 00:24:13,970 --> 00:24:20,570 Što znači da, kada sam stvoriti novi instanca ovog MyClass objekta, 448 00:24:20,570 --> 00:24:27,440 to će se pre-izgrađen unutar je vrijednost pod nazivom STR i druga vrijednost 449 00:24:27,440 --> 00:24:32,418 zove myPrint, koji je će biti u funkciji. 450 00:24:32,418 --> 00:24:32,918 Odlično. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Veliki. 453 00:24:37,990 --> 00:24:40,710 Dakle, zadnja stvar na reći o JavaScriptu 454 00:24:40,710 --> 00:24:46,430 je da je stvarno korisno za što nazivaju asinkrone operacije. 455 00:24:46,430 --> 00:24:52,500 Asinkroni znači da se mogu čekati za neke operacije 456 00:24:52,500 --> 00:24:57,870 dovršiti prije nego što se krećemo na, ali krenuti dalje dok čekamo 457 00:24:57,870 --> 00:24:59,690 a zatim su se nešto dogoditi kasnije. 458 00:24:59,690 --> 00:25:03,480 A što mislim da je, mogu zamisliti situaciju u kojoj 459 00:25:03,480 --> 00:25:06,850 šaljete zahtjev neki web poslužitelj negdje, 460 00:25:06,850 --> 00:25:09,670 i to će vas poslati natrag neki veliki komad podataka, zar ne? 461 00:25:09,670 --> 00:25:13,320 I vaš korisnički mogao čekati u međuvremenu da se to dogodi, 462 00:25:13,320 --> 00:25:15,200 i ništa ne može biti događa u to vrijeme. 463 00:25:15,200 --> 00:25:18,110 Ali to nije velik dizajn, zar ne? 464 00:25:18,110 --> 00:25:20,214 Vi ne želite web stranicu zamrznuti. 465 00:25:20,214 --> 00:25:22,380 Što ako korisnik želi kliknite na padajući izbornik? 466 00:25:22,380 --> 00:25:24,870 To nije velika dizajn uzorak. 467 00:25:24,870 --> 00:25:29,290 Umjesto toga, u osnovi što JavaScript je to, kaže, 468 00:25:29,290 --> 00:25:31,870 OK, ovaj postupak asinkrono. 469 00:25:31,870 --> 00:25:36,520 Dakle kao što je, čekati u pozadini, i onda kada je operacija se obavlja, 470 00:25:36,520 --> 00:25:39,420 nazovite por function-- nazvati neku funkciju, 471 00:25:39,420 --> 00:25:43,800 Učiniti neke action-- signalizira da je Operacija smo čekali do kraja 472 00:25:43,800 --> 00:25:45,520 Gotovo je. 473 00:25:45,520 --> 00:25:51,240 A razlog je to super moćan je, možemo učiniti nešto, proći argument, 474 00:25:51,240 --> 00:25:54,440 učiniti nešto, a onda čekati da se nešto dogodi. 475 00:25:54,440 --> 00:25:58,970 Zatim, nakon toga nešto dovršava, možemo nazvati por. 476 00:25:58,970 --> 00:26:03,300 To je jako zgodan jer omogućuje činimo stvari s web Audio API, 477 00:26:03,300 --> 00:26:07,490 primjerice, kao što su učitavanje audio datoteka s udaljenog poslužitelja 478 00:26:07,490 --> 00:26:11,660 bez čekanja za Cijeli audio datoteka se učitava, 479 00:26:11,660 --> 00:26:14,440 što bi bilo jako loše za korisničko iskustvo. 480 00:26:14,440 --> 00:26:17,080 Cool. 481 00:26:17,080 --> 00:26:19,460 >> Zadnji par bilješke o ispravljanje pogrešaka, jer to 482 00:26:19,460 --> 00:26:23,682 je stvar koju ćete morati učiniti kao dio vašeg projekta, zajamčena. 483 00:26:23,682 --> 00:26:25,140 Spomenuo sam JavaScript konzolu. 484 00:26:25,140 --> 00:26:27,550 To je super korisna značajka sve moderne preglednike, 485 00:26:27,550 --> 00:26:30,300 I doista vam da dobijete udoban koristeći svoju konzolu, 486 00:26:30,300 --> 00:26:33,660 Ako želite dobiti dobar u JavaScriptu. 487 00:26:33,660 --> 00:26:36,320 To je super zgodan za ispravljanje pogrešaka, ali je isto tako 488 00:26:36,320 --> 00:26:39,440 stvarno korisno za figuring kako koristiti API. 489 00:26:39,440 --> 00:26:41,950 To omogućuje stvarno lako eksperimentiranje 490 00:26:41,950 --> 00:26:45,910 bez upisati neki broj, a zatim ga sastaviti. 491 00:26:45,910 --> 00:26:47,500 Ne morate učiniti sve te korake. 492 00:26:47,500 --> 00:26:49,619 Vi samo možete pisati neki broj u retku, 493 00:26:49,619 --> 00:26:52,410 a zatim dobiti trenutnu povratnu informaciju o da li ili ne da je linija koda 494 00:26:52,410 --> 00:26:55,230 worked-- vrlo zgodan. 495 00:26:55,230 --> 00:26:59,760 >> I također, samo jedan tehnički note-- JavaScript konzola je primjer 496 00:26:59,760 --> 00:27:05,680 od REPL-- tako da je R-E-P-L, repl, koja se zalaže za čitanje, procjenu, 497 00:27:05,680 --> 00:27:06,180 print petlje. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Vi ćete upisati neke stvari u, to će pročitati ono što ste upisali u, 500 00:27:12,120 --> 00:27:17,280 to će ga ocijeniti, a to će print izlaz, a onda ću početi opet. 501 00:27:17,280 --> 00:27:22,056 To vam omogućuje brzo otići krugovi iterating, što je stvarno cool. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Mislim da pravi Last note-- ovo je stvarni posljednji napomena, da. 504 00:27:28,930 --> 00:27:30,780 Kako mi zapravo koristiti JavaScript? 505 00:27:30,780 --> 00:27:34,040 Prvo, možemo uvesti to pomoću oznake skripte 506 00:27:34,040 --> 00:27:39,500 na vrhu ili dnu HTML file-- bilo unutar HTML datoteke, 507 00:27:39,500 --> 00:27:40,440 stvarno. 508 00:27:40,440 --> 00:27:47,390 A unutar oznake skripte, postoje dvije pod-načina uvoza JavaScript. 509 00:27:47,390 --> 00:27:51,370 Prvi je vlasništvo odvojeni JavaScript datoteka 510 00:27:51,370 --> 00:27:58,010 da uvozimo u cijelosti ili tako da se na površini od koda poput pisma 511 00:27:58,010 --> 00:28:00,290 za početak, a zatim backslash skriptu za kraj. 512 00:28:00,290 --> 00:28:02,620 I onda mi samo napisati JavaScript unutar HTML datoteku. 513 00:28:02,620 --> 00:28:03,790 To su dva načina. 514 00:28:03,790 --> 00:28:05,165 Ne možete ga unutar HTML-a. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 PUBLIKA: Je li bolji od drugih? 517 00:28:08,126 --> 00:28:10,542 SAM GREEN: Pitanje je, je jedan bolji od drugoga. 518 00:28:10,542 --> 00:28:18,306 Dakle, da, kao kodiranje stilu prakse, i to je kao dizajnerskoj praksi. 519 00:28:18,306 --> 00:28:20,180 Postoje dva razloga zašto bi to moglo biti bolje. 520 00:28:20,180 --> 00:28:23,934 Prvi je, čini svoj zakonom, puno više čitati, ako sve HTML 521 00:28:23,934 --> 00:28:27,100 je na jednom mjestu, sve svoje CSS u drugo mjesto, sve vaše JavaScript 522 00:28:27,100 --> 00:28:28,420 u trećem mjestu. 523 00:28:28,420 --> 00:28:28,920 Pravo? 524 00:28:28,920 --> 00:28:32,370 Mislim da bismo trebali već razgovarali o tome u sections-- kao što CSS-- 525 00:28:32,370 --> 00:28:35,220 da is-- i to ide često u drugu datoteku. 526 00:28:35,220 --> 00:28:37,090 Dakle, slična vrsta koncepta ovdje. 527 00:28:37,090 --> 00:28:42,410 Također možete zamisliti da JavaScript bi se ponovno koristiti na više od jednog 528 00:28:42,410 --> 00:28:47,350 HTML stranica, ili možda Mnogo HTML stranice, 529 00:28:47,350 --> 00:28:49,340 i da tu JavaScript refactored u jednu 530 00:28:49,340 --> 00:28:51,950 datoteku koju možete uvesti na više od jednog mjesta 531 00:28:51,950 --> 00:28:54,570 omogućuje kod se način više održivi. 532 00:28:54,570 --> 00:28:57,930 Možete zamisliti što jedan promijeniti u JavaScript 533 00:28:57,930 --> 00:29:00,070 i da ga promijeniti u 100 različitih datoteka. 534 00:29:00,070 --> 00:29:04,070 I umjesto da mi samo možemo ga mijenjati u jednom, što je daleko više moćna. 535 00:29:04,070 --> 00:29:05,420 Jesam li odgovoriti na vaše pitanje? 536 00:29:05,420 --> 00:29:07,950 Cool. 537 00:29:07,950 --> 00:29:10,830 >> Također možete upisati u konzolu, kao što smo spomenuli prije. 538 00:29:10,830 --> 00:29:15,070 I opet, posljednji note-- Web-Audio je izgrađen u, 539 00:29:15,070 --> 00:29:16,978 ne morate učitati ništa. 540 00:29:16,978 --> 00:29:17,478 Cool. 541 00:29:17,478 --> 00:29:20,519 Postoje li bilo kakva pitanja, imate li bilo više pitanja o JavaScriptu, 542 00:29:20,519 --> 00:29:21,930 prije nego što smo prešli na? 543 00:29:21,930 --> 00:29:24,286 >> PUBLIKA: [nečujan] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN: U redu, u redu. 545 00:29:25,410 --> 00:29:27,200 Tako je sada on će govoriti o API. 546 00:29:27,200 --> 00:29:28,490 >> HUGH Zabriskie: cool. 547 00:29:28,490 --> 00:29:28,990 Hvala, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: Naravno. 549 00:29:30,184 --> 00:29:32,600 HUGH Zabriskie: Awesome, pa ćemo krenuti dalje s JavaScript. 550 00:29:32,600 --> 00:29:35,350 Tako smo razgovarali o nekim Osnove JavaScript, 551 00:29:35,350 --> 00:29:41,105 a to su varijable, funkcije, predmeti, funkcionira kao varijable, 552 00:29:41,105 --> 00:29:41,980 asinkrono učitavanje. 553 00:29:41,980 --> 00:29:46,100 To su sve stvari koje ćete vidjeti dok koristite web Audio. 554 00:29:46,100 --> 00:29:49,230 Dakle, samo ćemo razgovarati o je prvi na visokoj razini. 555 00:29:49,230 --> 00:29:52,120 >> To je API, pa to je nešto koja je izgrađena, kako je Sam rekao, 556 00:29:52,120 --> 00:29:57,010 pravo u JavaScriptu da koristite u konzoli. 557 00:29:57,010 --> 00:30:01,020 I to je zapravo isto kao C ++ koda da stvarno je izgrađen na Chrome 558 00:30:01,020 --> 00:30:04,470 i Firefox, a sve ove preglednicima. 559 00:30:04,470 --> 00:30:07,060 Dakle, glavne ideje s weba Audio je da imate 560 00:30:07,060 --> 00:30:09,440 ova vrsta cjevovoda audio, zar ne? 561 00:30:09,440 --> 00:30:13,670 Dakle, vaš audio podataka dolazi u u nekom obliku. 562 00:30:13,670 --> 00:30:16,690 >> Postoji vrsta tri glavne forms-- imate oscilator, koji 563 00:30:16,690 --> 00:30:21,340 stvara sinusni val, kosinus val, ćemo vidjeti kako se to radi. 564 00:30:21,340 --> 00:30:23,890 Još jedna uobičajena jedan, naravno, MP3. 565 00:30:23,890 --> 00:30:25,810 Pa možda početi s pjesma, a onda 566 00:30:25,810 --> 00:30:28,320 želite učiniti neke filtriranje na to i izlaz 567 00:30:28,320 --> 00:30:30,605 that-- koji bi mogli biti mogući izvor. 568 00:30:30,605 --> 00:30:32,480 I onda stvarno cool jedan je mikrofon. 569 00:30:32,480 --> 00:30:37,230 Na taj način možete koristiti neke vrlo Osnovni pozivi u JavaScriptu 570 00:30:37,230 --> 00:30:39,440 kako bi dobili pristup do mikrofon, pa ako 571 00:30:39,440 --> 00:30:42,870 htjela napraviti aplikaciju kao što je travnjak detektora, 572 00:30:42,870 --> 00:30:45,290 na primjer, koji se u tvoj glas i shvati 573 00:30:45,290 --> 00:30:47,740 pitch-- vrlo jednostavan način za to. 574 00:30:47,740 --> 00:30:50,730 Vi samo vrsta može pročitati u, shvatiti frekvencije, 575 00:30:50,730 --> 00:30:52,250 a zatim izlaz broj. 576 00:30:52,250 --> 00:30:56,080 Tako ćemo vidjeti kako se to radi, kao dobro. 577 00:30:56,080 --> 00:30:59,430 >> Odredište je u osnovi gdje je audio podataka je izlaz. 578 00:30:59,430 --> 00:31:02,890 Dakle općenito, to je kao Vaš laptop zvučnika. 579 00:31:02,890 --> 00:31:05,610 Ostale opcije su kao ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 mi ćemo doći do čvorova u second-- ali u osnovi, 581 00:31:07,990 --> 00:31:11,939 bilo da ste stavljanjem zvuk iz putem računala kroz zvučnike, 582 00:31:11,939 --> 00:31:14,730 ili ste vrsta snimanja, tako da ste ga pohrane audio podataka. 583 00:31:14,730 --> 00:31:18,980 Dakle, možda ako netko stvara Glazba u app, a zatim 584 00:31:18,980 --> 00:31:22,410 Želite li snimati da, a možda i kao izvoz u Soundcloud, za example-- 585 00:31:22,410 --> 00:31:25,281 da će biti jedan od načina za to. 586 00:31:25,281 --> 00:31:27,030 Sve zabavne stvari, što ćemo govoriti o, 587 00:31:27,030 --> 00:31:29,950 događa između tih dviju točaka, gdje smo učitati u glazbi 588 00:31:29,950 --> 00:31:31,410 a onda je izlaz. 589 00:31:31,410 --> 00:31:36,660 >> Zato ću govoriti o pet faze audio produkcije u sekundi. 590 00:31:36,660 --> 00:31:38,950 Imamo ovu stvar zove AudioContext, koji 591 00:31:38,950 --> 00:31:41,580 je ovaj mali omot vidimo ovdje. 592 00:31:41,580 --> 00:31:49,980 Uglavnom ono AudioContext is-- ako smo ići JavaScript konzoli upravo sada, 593 00:31:49,980 --> 00:31:52,740 možemo stvoriti upravo sada. 594 00:31:52,740 --> 00:31:54,040 Samo jedan primjer repl, zar ne? 595 00:31:54,040 --> 00:31:57,880 Mi čitanje, vrednovanje i ispisuje. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext je globalno stanje. 597 00:32:00,260 --> 00:32:05,500 To je struct, to je predmet ovdje, i to čuva podatke 598 00:32:05,500 --> 00:32:09,960 o stvarima koje idu na na zaslonu se odnose na audio. 599 00:32:09,960 --> 00:32:15,220 Jedan primjer je trenutno vrijeme. 600 00:32:15,220 --> 00:32:18,910 To vam govori broj sekundi, vrlo precizno, 601 00:32:18,910 --> 00:32:20,890 jer web stranice učitava. 602 00:32:20,890 --> 00:32:24,110 Dakle, ovo je stvarno korisno Malo svojstvo koje možete koristiti. 603 00:32:24,110 --> 00:32:27,898 To je pročitao only-- mislim stvarno možete pokušati ga postaviti vrijednost. 604 00:32:27,898 --> 00:32:29,856 To će reći da ga postavite, a onda ako ga ispisati 605 00:32:29,856 --> 00:32:31,439 again-- to zapravo nije dosta posla. 606 00:32:31,439 --> 00:32:34,472 Dakle, tu su samo za čitanje svojstva u JavaScriptu. 607 00:32:34,472 --> 00:32:36,430 To je doista korisno ako ste vrsta sinkronizaciju 608 00:32:36,430 --> 00:32:38,610 puno drugačiji Informacije, kada ste 609 00:32:38,610 --> 00:32:41,280 vrsta igrati različite zvukove. 610 00:32:41,280 --> 00:32:43,630 >> Još jedna jako korisna Kontekst je odredište. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Definitivno, ako ste zainteresirani, biti Pokušavam to na vlastitu konzole prava 613 00:32:49,670 --> 00:32:50,980 sada. 614 00:32:50,980 --> 00:32:53,150 Dakle, to je AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 Uglavnom ono što to govori je, gdje je izlaz ide? 616 00:32:56,480 --> 00:32:59,590 Dakle, postoje dvije prave opcije ovdje. 617 00:32:59,590 --> 00:33:01,940 Obično zadana je samo zvučnici, 618 00:33:01,940 --> 00:33:05,150 tako AudioDestinationNode zapravo samo govori 619 00:33:05,150 --> 00:33:09,240 postoje nula izlazi na zvuk dolaze u, poslan na zvučnik. 620 00:33:09,240 --> 00:33:12,050 Dakle općenito, što ne moraju igrati s tim. 621 00:33:12,050 --> 00:33:15,720 Ako ste zainteresirani zapravo koristi ScriptProcessorNode za snimanje, 622 00:33:15,720 --> 00:33:16,990 definitivno mi je pucati e kasnije, jer je to 623 00:33:16,990 --> 00:33:18,330 malo složeniji. 624 00:33:18,330 --> 00:33:21,590 Ali općenito, ti si samo vrste od izlaza zvuka u nekom obliku. 625 00:33:21,590 --> 00:33:24,347 Pa super, mi ćemo skočiti natrag ovdje. 626 00:33:24,347 --> 00:33:25,180 PUBLIKA: Žao mi je. 627 00:33:25,180 --> 00:33:26,054 HUGH Zabriskie: Da. 628 00:33:26,054 --> 00:33:28,770 PUBLIKA: Znam da je rekao da razgovaraju vama kasnije o snimanju. 629 00:33:28,770 --> 00:33:31,550 Možete li sučelje koje s Pro Tools? 630 00:33:31,550 --> 00:33:33,120 >> HUGH Zabriskie: Uz Pro Tools? 631 00:33:33,120 --> 00:33:35,260 Da vidimo. 632 00:33:35,260 --> 00:33:37,220 Ne mislim tako. 633 00:33:37,220 --> 00:33:41,670 Tako će između klijenta, koja je JavaScript 634 00:33:41,670 --> 00:33:44,310 konzole, i vaš stvarni Računalo je općenito 635 00:33:44,310 --> 00:33:46,490 nešto što je vrsta off granica, ako vas 636 00:33:46,490 --> 00:33:52,320 će, kakav po prirodi the-- to je vrsta dizajn stvar, 637 00:33:52,320 --> 00:33:57,770 ali pokušajte zadržati preglednik odvojeno od korisnika stvarne računalo. 638 00:33:57,770 --> 00:34:02,310 Općenito, jedino što ste mogli Pristup je mikrofon i kamera. 639 00:34:02,310 --> 00:34:04,730 Nisi u stanju, ja ne mislim, koristite Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Međutim, ako ste stvorili staza u Pro Tools, 641 00:34:07,480 --> 00:34:12,710 izvoze da možete učitati da Ovdje, filtrira, na primjer, 642 00:34:12,710 --> 00:34:16,820 proces koji, a rekord koji u Audio Destination-- ili no-- kugla 643 00:34:16,820 --> 00:34:17,870 Procesor čvor. 644 00:34:17,870 --> 00:34:20,730 A onda od tamo, što ste mogli izvoz koji se Soundcloud, te 645 00:34:20,730 --> 00:34:25,320 mogao poslati na e-mail, ili što god želite od tamo. 646 00:34:25,320 --> 00:34:31,159 >> No, tu je vrsta blagog barijere između stvaranje glazbe na računalu 647 00:34:31,159 --> 00:34:33,050 i stvaranje glazbe online. 648 00:34:33,050 --> 00:34:37,940 >> SAM GREEN: I to je nije jedinstven za ovaj API. 649 00:34:37,940 --> 00:34:44,060 To je sigurnosna značajka Chrome, te Mislim da svaki drugi moderni preglednik. 650 00:34:44,060 --> 00:34:45,860 Preglednik je self-sadržane. 651 00:34:45,860 --> 00:34:50,980 Tako, na primjer, web-stranica ne može koristiti JavaScript za uključivanje zvuka 652 00:34:50,980 --> 00:34:54,190 na zvučnike, na primjer. 653 00:34:54,190 --> 00:34:58,120 Ili to ne može isključite računalo. 654 00:34:58,120 --> 00:35:01,530 I nema međutočke između te dvije stvari, zar ne, 655 00:35:01,530 --> 00:35:05,960 pa bilo da imate potpuna apstrakcija, 656 00:35:05,960 --> 00:35:10,050 ili otvoriti sigurnosni propust ostavljajući 657 00:35:10,050 --> 00:35:14,440 programer s lošim namjerama napraviti što god žele sa svojim laptop. 658 00:35:14,440 --> 00:35:18,104 I to je razlog zašto Chrome je self-sadržane. 659 00:35:18,104 --> 00:35:19,310 >> HUGH Zabriskie: Da. 660 00:35:19,310 --> 00:35:20,840 Ima li to smisla? 661 00:35:20,840 --> 00:35:21,369 Cool, cool. 662 00:35:21,369 --> 00:35:23,160 Upravo sam idući u prikazuju primjer jednog. 663 00:35:23,160 --> 00:35:25,118 To je prilično kao koliko ste dobili, u smislu 664 00:35:25,118 --> 00:35:26,950 pristupa korisnikovo računalo. 665 00:35:26,950 --> 00:35:30,180 Ako imate USB tipkovnicu priključen, možete koristiti nešto što se zove Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, što nećemo zapravo govoriti o ovdje, 667 00:35:32,180 --> 00:35:36,330 ali to je još API koji je izgrađen u najmanje Chrome-- opet, 668 00:35:36,330 --> 00:35:41,570 to je razlog zašto volimo Chrome-- Mislim Firefox ili Safari, 669 00:35:41,570 --> 00:35:44,300 to je jednostavna stvar za google-- različiti preglednici imaju 670 00:35:44,300 --> 00:35:46,917 različite podrška za koje API su provedene. 671 00:35:46,917 --> 00:35:49,875 Ali, ako ste htjeli priključiti na tipkovnici i raditi s tim informacijama, 672 00:35:49,875 --> 00:35:52,850 vrsta poslati tipkovnicu Podaci preko računala 673 00:35:52,850 --> 00:35:57,620 a zatim koristiti tu online, ovaj API Ovdje bih raditi to. 674 00:35:57,620 --> 00:35:58,150 >> Cool. 675 00:35:58,150 --> 00:35:58,710 U REDU. 676 00:35:58,710 --> 00:36:01,320 Dakle, vrlo brzo kreće ovdje. 677 00:36:01,320 --> 00:36:03,310 Kako radimo na vrijeme? 678 00:36:03,310 --> 00:36:04,210 >> SPEAKER 1: O 15. 679 00:36:04,210 --> 00:36:05,543 >> HUGH Zabriskie: 15 minuta napustio? 680 00:36:05,543 --> 00:36:06,160 OK super. 681 00:36:06,160 --> 00:36:08,170 Tako ćemo utrku ispred ovdje. 682 00:36:08,170 --> 00:36:13,500 >> Tako je u osnovi, glavna točka razmišljam o tome kao cjevovoda 683 00:36:13,500 --> 00:36:16,430 je da je svaki korak u tijeku je niz audio čvorova. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Naš izvor, recimo, je oscilator. 686 00:36:20,950 --> 00:36:23,380 Moramo stvoriti oscilator čvor. 687 00:36:23,380 --> 00:36:25,690 A to je samo vrsta malog function-- 688 00:36:25,690 --> 00:36:30,460 i svi oni sa sjedištem izvan audio kontekstu ovdje. 689 00:36:30,460 --> 00:36:32,885 >> PUBLIKA: Kada je rekao oscilator, to znači 690 00:36:32,885 --> 00:36:37,250 To je zapravo doslovno ide od dva različita stupovi naprijed i natrag? 691 00:36:37,250 --> 00:36:41,170 >> HUGH Zabriskie: Ne, to je kao digitalni prikaz. 692 00:36:41,170 --> 00:36:42,740 To je zapravo provodi u C ++. 693 00:36:42,740 --> 00:36:46,460 Ja zapravo ne znam naočale kako je to zapravo provodi, 694 00:36:46,460 --> 00:36:48,500 ali sve to radi kao binarne podatke. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Zapravo, da. 697 00:36:52,370 --> 00:36:53,950 To bi se govori, što sam mogao Zapravo, ako ste zainteresirani, 698 00:36:53,950 --> 00:36:56,533 Mogao bih vam poslati malo više Informacije o tome kako valnih oblika 699 00:36:56,533 --> 00:37:00,181 čuvaju ima digitalni format. 700 00:37:00,181 --> 00:37:00,680 OK super. 701 00:37:00,680 --> 00:37:03,120 >> Tako smo generira ton poput sine val ili nešto slično, možda 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Stvaramo oscilator. 704 00:37:05,830 --> 00:37:09,180 Ako želimo postaviti glasnoću, mi povezivanje ništa na GainNode, 705 00:37:09,180 --> 00:37:12,500 što smo mogli učiniti s .creategain. 706 00:37:12,500 --> 00:37:14,250 To postavlja svoj volumen. 707 00:37:14,250 --> 00:37:17,820 Možete proći da na bilo koji drugoga options-- dobro, 708 00:37:17,820 --> 00:37:20,300 tako audio tampon izvora čvor je gdje se može 709 00:37:20,300 --> 00:37:23,660 spremanje MP3 koji ste umetnuli u. 710 00:37:23,660 --> 00:37:27,670 >> Biquad filter za filtriranje, ako želite uzeti sve baze iz 711 00:37:27,670 --> 00:37:29,630 od pjesme, ili nešto slično. 712 00:37:29,630 --> 00:37:32,450 Bože sačuvaj želite uzeti baza iz pjesme. 713 00:37:32,450 --> 00:37:36,980 I AudioDestination čvor, opet, kao i gdje je naš završetak je. 714 00:37:36,980 --> 00:37:39,980 Ako ste ikada zanimati sve različite moguće opcije, 715 00:37:39,980 --> 00:37:45,190 samo idite na karticu i neka auto-kompletan smisliti. 716 00:37:45,190 --> 00:37:48,690 A ako ne stvaraju, vidjet ćete sve različite stvari koje možete napraviti. 717 00:37:48,690 --> 00:37:50,398 Možete stvoriti dinamiku skripta procesori, 718 00:37:50,398 --> 00:37:52,940 Ne znam što da je, za miješanje kanala spajanja 719 00:37:52,940 --> 00:37:55,930 i kanala Razvodnici i sve to. 720 00:37:55,930 --> 00:37:56,430 Cool. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Dakle, ovo je samo jedan Primjer cjevovoda. 723 00:38:01,390 --> 00:38:03,580 Dakle, imamo tri izvora dolazi. 724 00:38:03,580 --> 00:38:06,830 Možda su valni oblici, Možda su to MP3. 725 00:38:06,830 --> 00:38:08,740 Jedan ide kroz filter, još jedan je 726 00:38:08,740 --> 00:38:12,404 uzimajući iskrivljena drugi jedan je vožnja lijevo i desno. 727 00:38:12,404 --> 00:38:15,320 To možete učiniti sve i svašta, a svi su dobili mješoviti oko zajedno, 728 00:38:15,320 --> 00:38:18,880 a onda se dolazi zvuk na kraju, kao i odredište. 729 00:38:18,880 --> 00:38:22,720 Ovo je primjer onoga što više komplicirano web Audio broj izgleda. 730 00:38:22,720 --> 00:38:26,720 Vi stvarate sve to različiti predmeti pravo here-- 731 00:38:26,720 --> 00:38:27,706 Nisam siguran za to. 732 00:38:27,706 --> 00:38:29,120 Ne, to ne zumiranje. 733 00:38:29,120 --> 00:38:29,620 U REDU. 734 00:38:29,620 --> 00:38:31,257 >> SAM GREEN: Možete napraviti kontrolu, pomaknite-up. 735 00:38:31,257 --> 00:38:32,590 HUGH Zabriskie: Kontrola Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM GREEN: Ne, ne. 737 00:38:33,000 --> 00:38:33,500 Kontrolirati-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> HUGH Zabriskie: Oh, kontrola, Dođite? 740 00:38:38,140 --> 00:38:38,780 Oh, Gotcha. 741 00:38:38,780 --> 00:38:41,480 Da. 742 00:38:41,480 --> 00:38:42,240 Wow, Nope, nope. 743 00:38:42,240 --> 00:38:42,740 U REDU. 744 00:38:42,740 --> 00:38:46,090 Neću to učiniti. 745 00:38:46,090 --> 00:38:48,300 >> Tako da, u ovo prvo poglavlje ovdje, vidiš 746 00:38:48,300 --> 00:38:52,720 mi stvaramo sve te različite čvorovi izvan konteksta. 747 00:38:52,720 --> 00:38:54,980 Mi samo smo ih komad zajedno u drugom dijelu 748 00:38:54,980 --> 00:38:56,980 ova funkcija zove Connect. 749 00:38:56,980 --> 00:38:58,830 To je zapravo ključni Funkcija u Web Audio. 750 00:38:58,830 --> 00:39:01,930 To samo znači da nakon što ste učinili nešto sa zvukom u jednom čvoru, 751 00:39:01,930 --> 00:39:03,705 proslijediti na sljedeći čvor. 752 00:39:03,705 --> 00:39:05,830 Tako imamo izvor, to spaja na analizator, 753 00:39:05,830 --> 00:39:09,140 analizator radi nešto s njim, to ide na izobličenja, i tako dalje, 754 00:39:09,140 --> 00:39:12,725 a na odredište Na dnu ovdje. 755 00:39:12,725 --> 00:39:13,225 Cool. 756 00:39:13,225 --> 00:39:14,640 U redu, pa ćemo držati se kreće dalje. 757 00:39:14,640 --> 00:39:17,180 >> Opet pipeline--, te su najčešći cjevovodi, 758 00:39:17,180 --> 00:39:21,300 pa govorimo o svim tim stvarima kao što izobličenje, pomicanje okna, sve ove stvari. 759 00:39:21,300 --> 00:39:24,280 Ako ste stvarno zainteresirani u korištenju stvari Pro Tools, 760 00:39:24,280 --> 00:39:25,820 oni vas vjerojatno zanimati. 761 00:39:25,820 --> 00:39:27,740 Ako ne, možda ste upravo želite igrati zvuk, 762 00:39:27,740 --> 00:39:29,990 ili možda samo želite podesite glasnoću na zvuk. 763 00:39:29,990 --> 00:39:35,270 To su dva najčešća vrsta cjevovoda u audio produkcije. 764 00:39:35,270 --> 00:39:38,640 >> Opet, način možete uzeti u kao oscillator-- Dakle, neka je 765 00:39:38,640 --> 00:39:42,460 napraviti demo toga ovdje. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Tako ćemo stvoriti jednostavan audio kontekst ovdje 768 00:39:52,225 --> 00:39:54,350 a od koje ćemo stvoriti našu oscilator. 769 00:39:54,350 --> 00:39:58,620 Tako da je, opet, mi smo samo nazvati Napravite oscilator. 770 00:39:58,620 --> 00:40:07,030 Ćemo postaviti frekvenciju na da, 440 Hertz, svačija omiljena. 771 00:40:07,030 --> 00:40:13,290 Onda smo spojiti da na odredište point-- što je govornik, tako 772 00:40:13,290 --> 00:40:15,750 odredište kontekst. 773 00:40:15,750 --> 00:40:21,400 Na kraju, možemo samo reći, početak nula sekundi od sada, i mi smo zvuk? 774 00:40:21,400 --> 00:40:22,400 >> [Zvoni] 775 00:40:22,400 --> 00:40:24,980 >> HUGH Zabriskie: Evo idemo. 776 00:40:24,980 --> 00:40:25,940 To je samo sinusni val. 777 00:40:25,940 --> 00:40:26,440 OK super. 778 00:40:26,440 --> 00:40:28,274 A onda ćemo zaustaviti. 779 00:40:28,274 --> 00:40:30,520 >> PUBLIKA: Odakle da povratne informacije dolaze iz? 780 00:40:30,520 --> 00:40:31,250 >> HUGH Zabriskie: Povratno? 781 00:40:31,250 --> 00:40:32,458 Oh, vjerojatno naš mikrofoni. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Pa da, to je kako to učiniti. 784 00:40:35,470 --> 00:40:37,261 I zapravo, kad bih imao držati Internet trčanje, te 785 00:40:37,261 --> 00:40:39,540 može imati učestalost vrijednost kao što je trčanje, 786 00:40:39,540 --> 00:40:43,320 tako da je zabavna stvar za igranje okolo. 787 00:40:43,320 --> 00:40:44,930 Cool. 788 00:40:44,930 --> 00:40:46,600 To je uvijek lijep jedan predstaviti. 789 00:40:46,600 --> 00:40:48,792 >> SAM GREEN: nismo razmišljati o tome, zar ne? 790 00:40:48,792 --> 00:40:50,500 HUGH Zabriskie: Da, to je gadno jedan. 791 00:40:50,500 --> 00:40:53,249 Dakle, tampon loading-- ću pokazati primjer da je na samom kraju. 792 00:40:53,249 --> 00:40:55,090 To je učitavanja MP3. 793 00:40:55,090 --> 00:40:58,880 I mikrofon, koristite samo funkciju zove Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 zatražiti pristup korisnikovom Mikrofon za tu informaciju. 795 00:41:03,240 --> 00:41:05,610 >> Evo filtriranje, ja ću samo držati se kreće od toga. 796 00:41:05,610 --> 00:41:08,600 To je prilično visoka, ali filtri ti samo dopustiti da se 797 00:41:08,600 --> 00:41:16,154 >> [Bip] 798 00:41:16,154 --> 00:41:18,320 Filtriranje također vam omogućuje stvoriti stvari poput ružičaste 799 00:41:18,320 --> 00:41:20,050 buke, smeđa šuma, bijeli šum. 800 00:41:20,050 --> 00:41:24,330 Ako želite stvoriti čistu buku koja neki ljudi vole nered okolo sa, 801 00:41:24,330 --> 00:41:27,490 možete koristiti web-Audio filtriranje to učiniti. 802 00:41:27,490 --> 00:41:30,039 >> Audio Panning-- tako zamisliti Ako ste pisanje igru 803 00:41:30,039 --> 00:41:32,330 i želite zvuk zvuk kao da dolazi, kao što je, 804 00:41:32,330 --> 00:41:36,090 pucanje po ekranu, što mogu koristiti Ispiranje audio 805 00:41:36,090 --> 00:41:39,770 stvoriti ovakvu stošca, koje volimo-članovima da je prilično mathy, 806 00:41:39,770 --> 00:41:41,850 ali to je zapravo jako super ako se to radi, 807 00:41:41,850 --> 00:41:44,500 a tu je neke dobre tutorijali na to ti mogu poslati. 808 00:41:44,500 --> 00:41:46,400 Uglavnom, možete vrsta stvoriti zvuk 809 00:41:46,400 --> 00:41:50,480 nešto ide po u 3D način. 810 00:41:50,480 --> 00:41:57,350 A ako imate DJ interes, možete početi miješanje i prijeći slabije pjesme. 811 00:41:57,350 --> 00:42:01,260 >> To je samo neke vrlo osnovne broj, u osnovi ono što sam učinio prije. 812 00:42:01,260 --> 00:42:06,140 Time volumen oscilator, tako da smo stvorili našu oscilator 813 00:42:06,140 --> 00:42:07,380 što stvara valnog oblika. 814 00:42:07,380 --> 00:42:09,940 Mi stvaramo našu GainNode, postavljen našu frekvenciju, 815 00:42:09,940 --> 00:42:14,170 a zatim spojite oscilator do GainNode, koji je tada u osnovi mijenja 816 00:42:14,170 --> 00:42:16,760 koliko signala dopušten putem. 817 00:42:16,760 --> 00:42:20,467 Ali zapravo, to je digitalni stvar, tako da je više just-- da. 818 00:42:20,467 --> 00:42:23,550 To nije ono što se zapravo događa, ali to je ono što se događa u stvarnom životu 819 00:42:23,550 --> 00:42:24,393 s dobitkom. 820 00:42:24,393 --> 00:42:27,258 >> PUBLIKA: --quantization parametra volumena? 821 00:42:27,258 --> 00:42:28,174 HUGH Zabriskie: Žao nam je? 822 00:42:28,174 --> 00:42:30,360 PUBLIKA: Je li to kvantiziranim volumen parametar? 823 00:42:30,360 --> 00:42:31,840 HUGH Zabriskie: Da. 824 00:42:31,840 --> 00:42:34,620 I to je jedna stvar ja sam stvarno deficijentna u mojoj znanju, 825 00:42:34,620 --> 00:42:38,010 kako dobit radi na digitalnoj razini. 826 00:42:38,010 --> 00:42:40,140 Znam sa stvarnim signala, to je u osnovi 827 00:42:40,140 --> 00:42:45,120 kontroliranje koliko ste pojačava signal. 828 00:42:45,120 --> 00:42:47,017 Dakle, da. 829 00:42:47,017 --> 00:42:50,100 Ja ću vam poslati više informacija o da, zato bih biti znatiželjan zapravo 830 00:42:50,100 --> 00:42:51,099 znati više o tome. 831 00:42:51,099 --> 00:42:54,090 Ali u osnovi parametri su, jedan je fold-- 832 00:42:54,090 --> 00:42:59,690 glasnije signal-- i nula ne signal, ili nećete čuti zvuk. 833 00:42:59,690 --> 00:43:03,150 Mi ćemo preskočiti demo vremena za to, jer to je u osnovi ono što sam učinio prije. 834 00:43:03,150 --> 00:43:07,630 A opet, Context.Destination je audio odredište čvor. 835 00:43:07,630 --> 00:43:08,360 Strašan, OK. 836 00:43:08,360 --> 00:43:10,470 >> Tako ću učiniti brzo dva demo. 837 00:43:10,470 --> 00:43:11,760 Kako radimo na vrijeme? 838 00:43:11,760 --> 00:43:12,640 >> SPEAKER 1: oko 10 minuta. 839 00:43:12,640 --> 00:43:13,130 >> HUGH Zabriskie: 10 minuta? 840 00:43:13,130 --> 00:43:13,630 Veliki! 841 00:43:13,630 --> 00:43:14,320 Odlično. 842 00:43:14,320 --> 00:43:19,010 >> Dakle, prvi ću Ne, to se zove moja omiljena pjesma. 843 00:43:19,010 --> 00:43:22,410 Dakle, ovo je samo Malo HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Mi ćemo imati dva gumba na stranici igraju svoju omiljenu pjesmu 845 00:43:25,510 --> 00:43:29,192 i zaustaviti moju omiljenu pjesmu. 846 00:43:29,192 --> 00:43:30,180 Ja ću to promijeniti. 847 00:43:30,180 --> 00:43:32,110 >> PUBLIKA: Pokrijte mikrofon. 848 00:43:32,110 --> 00:43:33,430 >> HUGH Zabriskie: Da. 849 00:43:33,430 --> 00:43:36,300 I ja sam učita ovdje skripta koja basically-- 850 00:43:36,300 --> 00:43:38,520 i to je stvarno koristan umetanja MP3, 851 00:43:38,520 --> 00:43:41,820 pa to samo čini loading MP3 put brže. 852 00:43:41,820 --> 00:43:44,180 To je zapravo samo omot. 853 00:43:44,180 --> 00:43:48,737 To samo čini proces umetanja u MP3 mnogo brže, 854 00:43:48,737 --> 00:43:51,570 inače koristite HTTP zahtjev, vrsta kao ono što smo radili 855 00:43:51,570 --> 00:43:53,950 o trenutnom komad postavljen s poslužitelja. 856 00:43:53,950 --> 00:43:55,950 To je stvarno ružno, ti ne želim to učiniti. 857 00:43:55,950 --> 00:44:04,110 >> Dakle, ovaj tip, Boris Smus, napisao je stvarno korisni mali alat zove BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Sve što trebate učiniti je jednostavno proslijediti na kontekst, što ga list-- proći 859 00:44:08,780 --> 00:44:11,327 ili, da, to je popis u JavaScriptu? 860 00:44:11,327 --> 00:44:12,160 SAM GREEN: Niz. 861 00:44:12,160 --> 00:44:14,201 HUGH Zabriskie: Oh, to je niz, to je u redu. 862 00:44:14,201 --> 00:44:18,660 To je niz staza različitih datoteka. 863 00:44:18,660 --> 00:44:21,990 A onda je funkcija proći. 864 00:44:21,990 --> 00:44:25,530 To je povratni poziv smo razgovarali o s asinkronog učitavanja. 865 00:44:25,530 --> 00:44:28,720 Koja će se zvati Nakon što su datoteke učitava. 866 00:44:28,720 --> 00:44:33,780 I to je funkcija koja se zove kad datoteka je učitana uzima kao perimetru 867 00:44:33,780 --> 00:44:35,840 niz učitanih odbojnika. 868 00:44:35,840 --> 00:44:37,990 Tako da se događa ovdje. 869 00:44:37,990 --> 00:44:41,180 Uglavnom, BufferList je će biti jedan value-- 870 00:44:41,180 --> 00:44:46,380 ili će biti niz Duljina jednog, koji je u njoj u indeks 871 00:44:46,380 --> 00:44:51,320 nula cijeli učitava datoteku MP3. 872 00:44:51,320 --> 00:44:53,320 Dakle, ono što ja radim kad završim Otvaram je, jednostavno sam 873 00:44:53,320 --> 00:44:57,430 stvoriti izvor pufer, koji je audio tampon izvor čvor. 874 00:44:57,430 --> 00:45:03,410 Sljedeći korak je sam učitati u source.buffer kao potpuno učita tampon 875 00:45:03,410 --> 00:45:06,740 iz BufferList-- to je puno buffers-- 876 00:45:06,740 --> 00:45:10,255 a zatim spojite taj zvuk tampon na odredište. 877 00:45:10,255 --> 00:45:12,380 Dakle, ono što će učiniti je jednostavno staviti MP3 878 00:45:12,380 --> 00:45:15,260 ravno na izlaz, i početi odmah 879 00:45:15,260 --> 00:45:18,010 nakon uzimajući ovaj poziv. 880 00:45:18,010 --> 00:45:21,660 >> Cool, pa ćemo vidjeti ovo dogodilo u akciji. 881 00:45:21,660 --> 00:45:24,490 Moja [nečujan] ovdje, da vidimo. 882 00:45:24,490 --> 00:45:26,430 Pa ja sam samo ide započeti osnovni poslužitelj. 883 00:45:26,430 --> 00:45:28,660 To je nešto što što trebate učiniti ako ste 884 00:45:28,660 --> 00:45:32,490 izradu zahtjeva za umetanje datoteka. 885 00:45:32,490 --> 00:45:34,140 Idem početi osnovni poslužitelj. 886 00:45:34,140 --> 00:45:38,200 To je u osnovi cijeli PSET upravo sada u jednom retku, 887 00:45:38,200 --> 00:45:43,930 ali to je samo polazeći poslužitelj na portu 80/80. 888 00:45:43,930 --> 00:45:47,300 Dakle, idemo ovamo, mi će učitati 80/80, 889 00:45:47,300 --> 00:45:49,110 ćemo ići moja omiljena pjesma. 890 00:45:49,110 --> 00:45:51,660 Dakle, ako sam pogodio "Play My omiljena pjesma "upravo sada, 891 00:45:51,660 --> 00:45:53,964 to će učitati moje omiljena pjesma i igrati it-- 892 00:45:53,964 --> 00:45:55,880 [MUSIC - orlovi ", život u brzoj  TRAKA"] 893 00:45:55,880 --> 00:46:00,490 --which se događa da se "Život u brzom "The Eagles. 894 00:46:00,490 --> 00:46:06,346 Sada sam mogao pogoditi "Stop moj omiljena pjesma "i ponovno ga. 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - orlovi ", život u brzoj  TRAKA"] 896 00:46:09,160 --> 00:46:18,340 >> A ako idem preko utješiti, jer Koristio sam globalnu varijablu ovdje 897 00:46:18,340 --> 00:46:23,390 pratiti te vrijednosti, to je zapravo Sada će se priznati u konzoli. 898 00:46:23,390 --> 00:46:25,160 Dakle, to automatski stvara za mene. 899 00:46:25,160 --> 00:46:29,991 Dakle, to je ono što se svira sada, i ja mogu jednostavno nazvati 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 Pa, znate što? 903 00:46:35,860 --> 00:46:39,760 Samo da ti dečki su to čuli song-- možda prepoznati ovu pjesmu. 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - RICK Astley, "nikada neće dati  VI UP "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - orlovi ", život u brzoj  TRAKA"] 907 00:46:44,215 --> 00:46:46,195 Mi smo sada svi bili Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, lijepo, kreće dalje. 909 00:46:50,155 --> 00:46:51,160 Cool. 910 00:46:51,160 --> 00:46:54,554 Dakle, to je u osnovi primjer koliko ste mogli učitati MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - orlovi ", život u brzoj  TRAKA"] 912 00:46:56,470 --> 00:46:59,590 --and igrati, a zaustaviti i početi. 913 00:46:59,590 --> 00:47:03,008 Sam mogao učiniti puno više [nečujan] 914 00:47:03,008 --> 00:47:07,570 >> Posljednji ću učiniti je, Ja ću vam pokazati [nečujan]. 915 00:47:07,570 --> 00:47:18,070 >> [Glazbom] 916 00:47:18,070 --> 00:47:21,800 >> To je kao, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Mislim, ako se dobro sjećam, Ja sam upasti u nekim pitanjima sa .m4a, 918 00:47:26,450 --> 00:47:27,721 ali nisam siguran o tome. 919 00:47:27,721 --> 00:47:28,470 Mislim mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MUSIC - RICK Astley, "nikada neće dati  VI UP "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK super. 924 00:47:36,500 --> 00:47:37,625 Nisam trebao reći. 925 00:47:37,625 --> 00:47:40,570 U svakom slučaju, zdravo. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Dakle, imamo ovaj otvoreni. 928 00:47:45,490 --> 00:47:52,320 Dakle, sada sve što radim, ja sam zapravo stvorio osnovna sintaksa za stvaranje glazbe. 929 00:47:52,320 --> 00:47:57,610 Dakle, ako sam nešto slično, dodajte G4 1. 2, što to znači je da, 930 00:47:57,610 --> 00:48:00,950 dodajte klavir bilješke, G4, što je četvrti G 931 00:48:00,950 --> 00:48:02,680 gore na klaviru od dna. 932 00:48:02,680 --> 00:48:05,930 Dakle, ovo je vrsta MIDI govoriti, pa za one koji su glazbeni temelji, 933 00:48:05,930 --> 00:48:07,860 to je samo MIDI note. 934 00:48:07,860 --> 00:48:10,090 >> PUBLIKA: To je G Srednjeg C, zar ne? 935 00:48:10,090 --> 00:48:11,840 >> HUGH Zabriskie: Ovo je G iznad srednjeg C, to je u redu. 936 00:48:11,840 --> 00:48:12,470 >> PUBLIKA: Iznad Bliski C 937 00:48:12,470 --> 00:48:13,345 >> HUGH Zabriskie: Da. 938 00:48:13,345 --> 00:48:14,340 Zapravo, da. 939 00:48:14,340 --> 00:48:16,131 Mislim da sam zapravo napravio to je jedan [nečujan] 940 00:48:16,131 --> 00:48:18,860 tako da bi to moglo biti oktavu iznad toga. 941 00:48:18,860 --> 00:48:20,070 Tako ćemo vidjeti. 942 00:48:20,070 --> 00:48:21,152 Ako sam pogodio Play-- 943 00:48:21,152 --> 00:48:22,110 [Ponavljaju PIANO NAPOMENA] 944 00:48:22,110 --> 00:48:23,200 --we're će čuti. 945 00:48:23,200 --> 00:48:25,700 Ideja je da se radi baš kao naredbeni redak bi, 946 00:48:25,700 --> 00:48:27,510 pa ako odem gore i dolje na mojoj tipkovnici, što 947 00:48:27,510 --> 00:48:31,550 Možete se vratiti na prethodni naredbe, što je prilično korisna. 948 00:48:31,550 --> 00:48:35,136 I u nastavku je moj popis pjesama, koji su svi trčanje na petlji. 949 00:48:35,136 --> 00:48:38,260 >> PUBLIKA: Bili ste uz pretpostavku 88-ključ tipkovnica na to, zar ne? 950 00:48:38,260 --> 00:48:41,051 >> HUGH Zabriskie: Pitanje je, ja uz pretpostavku 88-ključ tipkovnica, 951 00:48:41,051 --> 00:48:41,990 i da, ja sam. 952 00:48:41,990 --> 00:48:45,030 Ono što sam učinio je sam u osnovi je 88 uzoraka 953 00:48:45,030 --> 00:48:46,970 od glasovira, po jedan za svaku bilješku. 954 00:48:46,970 --> 00:48:49,180 I tako svaki put kada čuti bilješku od sada, 955 00:48:49,180 --> 00:48:57,550 to je zapravo petlja koja izgleda volimo-članovima Ovo postaje igra na petlji, 956 00:48:57,550 --> 00:49:00,120 tako da za svaku notu, to je trčanje. 957 00:49:00,120 --> 00:49:02,860 Što se događa je da sam stvaranje pufera opet 958 00:49:02,860 --> 00:49:06,010 Mogu stvoriti dobitak čvor za postavljanje glasnoće. 959 00:49:06,010 --> 00:49:08,240 To samo jako komplicirani način govoreći ja 960 00:49:08,240 --> 00:49:10,550 pohraniti tampon u source.buffer. 961 00:49:10,550 --> 00:49:13,160 Dajem ga dobit, sam spojite ga na dobit, 962 00:49:13,160 --> 00:49:15,576 dobitak je povezan s izlaz, a onda sam ga igrati. 963 00:49:15,576 --> 00:49:20,735 Dakle, to je vrsta procesa uzimanja u izvor tampon. 964 00:49:20,735 --> 00:49:24,820 >> PUBLIKA: Možete li stvarno poduzeti kako suhi zvuk i čine ga mokra [nečujan]? 965 00:49:24,820 --> 00:49:26,260 >> HUGH Zabriskie: Možete, da. 966 00:49:26,260 --> 00:49:29,260 Postoji ponovno glagol, postoji kašnjenja, izobličenja. 967 00:49:29,260 --> 00:49:33,260 Vi zapravo možete staviti bilo što u između u tom sendviču of-- dobro, 968 00:49:33,260 --> 00:49:37,660 Plinovod je bolji metafora, ali možete dodati nešto u tome. 969 00:49:37,660 --> 00:49:38,200 Cool. 970 00:49:38,200 --> 00:49:40,280 >> Dakle, ja ću završiti demo ovdje da vam dati osjećaj 971 00:49:40,280 --> 00:49:46,390 samo obična broj puta ste može pokrenuti tu funkciju odjednom. 972 00:49:46,390 --> 00:49:49,280 Tako ću maknuti ove. 973 00:49:49,280 --> 00:49:59,110 Idem stvoriti generator that-- u osnovi ono does-- ovo je stvarno 974 00:49:59,110 --> 00:50:04,220 vrsta kompliciranom syntax-- ali je će generirati bilješke o letu, 975 00:50:04,220 --> 00:50:06,601 i samo početi igrati ih jer ih ocjenjuje. 976 00:50:06,601 --> 00:50:07,392 [Ubacivanjem PIANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Dakle, možemo samo napraviti malo glazbe ovdje. 979 00:50:12,817 --> 00:50:13,608 [Ubacivanjem PIANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Pa što je to naredba se, na primjer, 982 00:50:41,470 --> 00:50:46,910 to traje ta tri bilješke za klavir, a zatim ih stavlja na B3. 983 00:50:46,910 --> 00:50:48,660 To sintaksa može učiniti malo više smisla 984 00:50:48,660 --> 00:50:50,590 za one koji imaju Glazba u pozadini ovdje. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Mogu dodati kick bubanj. 987 00:50:56,551 --> 00:50:57,050 Ja mogu-- 988 00:50:57,050 --> 00:50:58,048 >> [Ubacivanjem INSTRUMENTI] 989 00:50:58,048 --> 00:50:59,256 >> --just poigrati s tim. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Tako možete make-- 992 00:51:13,474 --> 00:51:14,515 [Ubacivanjem INSTRUMENTI] 993 00:51:14,515 --> 00:51:15,513 To je jedan je malo više neugodno. 994 00:51:15,513 --> 00:51:16,554 [Ubacivanjem INSTRUMENTI] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Tako da slučajno dodaje suho cimbal na svakom 16. note, s 16% 997 00:51:30,981 --> 00:51:31,481 [NEČUJAN]. 998 00:51:31,481 --> 00:51:32,522 >> [Ubacivanjem INSTRUMENTI] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Da, tako da je način na koji to works-- to je uvijek u 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Ubacivanjem INSTRUMENTI] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Da, tako četiri četvrtine, i 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Ubacivanjem INSTRUMENTI] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Tako u prosjeku, dobivate 60% pregleda 16. bilješke. 1008 00:52:33,780 --> 00:52:35,990 >> Uglavnom, ovo je bio samo vrsta pokazati 1009 00:52:35,990 --> 00:52:39,780 neke od stvari koje bi mogao graditi s web Audio API. 1010 00:52:39,780 --> 00:52:43,840 To je stvarno moćan, to je stvarno brzo, a možete napraviti puno dobrih stvari 1011 00:52:43,840 --> 00:52:44,340 s tim. 1012 00:52:44,340 --> 00:52:51,260 Pa opet, sva pitanja koja imate, e myself-- Hugh-- ili Sam, 1013 00:52:51,260 --> 00:52:55,869 i iskreno, Google ima tona dobrih izvora. 1014 00:52:55,869 --> 00:52:56,660 Bilo posljednjih pitanja? 1015 00:52:56,660 --> 00:52:57,970 Da. 1016 00:52:57,970 --> 00:53:00,790 >> PUBLIKA: Tako možete pristupiti ugrađeni mikrofon. 1017 00:53:00,790 --> 00:53:03,089 Što ako biste željeli koristite bolji mikrofon? 1018 00:53:03,089 --> 00:53:05,380 HUGH Zabriskie: Ako ste htjeli koristiti bolje mikrofon? 1019 00:53:05,380 --> 00:53:11,320 Pa opet, to je dio apstrakcija između Chrome 1020 00:53:11,320 --> 00:53:12,950 a ostatak računala. 1021 00:53:12,950 --> 00:53:18,950 Osim ako je dostupan putem API, kao i web-MIDI API, 1022 00:53:18,950 --> 00:53:22,030 vjerojatno mogao naći neki hack, ali općenito ne kao izvedivo. 1023 00:53:22,030 --> 00:53:25,300 >> SAM GREEN: Možete also-- sve Chrome zna 1024 00:53:25,300 --> 00:53:28,820 je ono što vaš zadani mikrofon je, i to da pristupa. 1025 00:53:28,820 --> 00:53:33,410 Dakle, ako ste imali mikrofon ste mogli postaviti kao zadani računala mikrofon, 1026 00:53:33,410 --> 00:53:35,990 možete pristupiti na taj način i to će vjerojatno raditi. 1027 00:53:35,990 --> 00:53:37,490 HUGH Zabriskie: To je dobra stvar. 1028 00:53:37,490 --> 00:53:39,656 Nikad nisam pokušao, ali možda ćete biti u mogućnosti da vrsta 1029 00:53:39,656 --> 00:53:45,700 of-- ako preusmjeriti ulazni zvučnik, možda ćete biti u mogućnosti to učiniti, da. 1030 00:53:45,700 --> 00:53:48,360 >> Bilo posljednjih pitanja? 1031 00:53:48,360 --> 00:53:49,340 Cool. 1032 00:53:49,340 --> 00:53:51,680 Pa hvala vam dečki toliko za gledanje. 1033 00:53:51,680 --> 00:53:52,199 Ja sam Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM GREEN: Ja sam Sam. 1035 00:53:52,990 --> 00:53:55,410 HUGH Zabriskie: A ovo je CS50. 1036 00:53:55,410 --> 00:53:56,767