>> SAM GREEN: Bok, svima.
Dobro došli na naše seminara.
Moje ime je Sam.
HUGH Zabriskie: Ja sam Hugh.
SAM GREEN: A što ćemo danas govoriti O JavaScript i web Audio API.
Samo za početak, taj je pregled našeg dnevnog reda za seminar.
Ćemo početi govoriti o Zašto biste trebali biti zainteresirani za Web
Audio API, zašto je JavaScript jezik što je potrebno za to,
a zatim razgovarati o JavaScriptu essentials-- tako kao što je,
vas provesti kroz neke osnove jezika,
a onda razgovarati o Audio API na visokoj razini.
Zatim, Hugh će razgovarati o nekim od faza audio produkcije
a zatim demo ovaj strašan sekvencer Projekt je izgrađen i pokazati vam kod.
A onda ćemo imati vremena za pitanja na kraju ljudi
koji su ovdje živjeli.
>> HUGH Zabriskie: cool.
>> SAM GREEN: cool.
>> HUGH Zabriskie: cool.
Ja ću podržati.
>> SAM GREEN: Dakle, prvi stvari prvi.
Dakle, jedan od velikih stvari o Web Audio API
je da ne postoji set up je potrebno.
Ona dolazi ugrađen u Većina modernih preglednici,
uključujući Chrome, EDGE, u cjelini hrpa others-- svih onih
da veliki dijelovi ljudi koriste i danas.
Dakle, nema se postaviti, Osim samo dobivanje
web poslužitelj će, za da biste započeli raditi
na vaš projekt, što je sjajno.
>> Preporučujemo lijepa teško da ćete uzeti u obzir
pomoću Chrome za Web Development JavaScript,
samo zato svom developer Alati su stvarno jaki.
Kao primjer samo ono što mislimo rekavši otvoriti svoj JavaScript
console-- ako idete na Chrome i pogledate bilo koju web stranicu,
a vi ostavili klik Pregledajte element, a zatim
idete na ovom malom padajućem upravo ovdje, a vi kliknite na konzoli,
vidjet ćete što otvara izgleda Mnogo kao naredbeni redak koji vam
vidjeti na vašem Mac ili na ID.
I baš kao da je, možemo Vrsta zapovijeda ovdje, kao i Clear,
i druge naredbe kao što je to.
Možemo stvoriti varijabli, kao što je vidjet ćemo kasnije JavaScript.
I tako sve što možemo učiniti u JavaScript, možemo učiniti s konzole,
i to je super zgodan način da se početi igrati oko s API
i dobivanje udoban sa JavaScript pravo isključiti šišmiš.
Ne zahtijeva postaviti, što je jako lijepo.
Cool.
Odlično.
>> Dakle, samo još jedna stvar za dodati.
Ako imate bilo questions-- postoje mnogi od vas koji nisu ovdje žive,
slobodno us-- ove e-mail su naše e-mail adrese.
Ako imate pitanja ne želite pitati nas,
kao, oh imam bug u mom kodu, ili nešto
to je malo više specifičan, Možda je Google prvi.
Postoji puno velikih resursa o Web Audio API vani.
To je stvarno dobro dokumentirani i to je bio
koriste tonu ljudi u industrije, i ljudi koji su samo
izgradnju zabavne stvari za sebe.
Dakle, ne bi trebalo biti puno resursa vani.
Odlično.
>> Cool, pa zašto Web Audio API?
Ovaj dijagram je malo o evoluciji putu
Zvuk na webu je narasla tijekom vremena.
Bgsound je kao izvorni HTML oznake da Internet Explorer koristi za podršku.
To dopušteno samo za prilično osnovne zvukove, funkcionalnost nije bio vrlo snažan,
i ne mogu učiniti komplicirano sekvenciranje,
ili kontrolirati kada je zvuk počeo i zaustavio se vrlo robusno.
Dakle, to nije bilo osobito dobro razvijena.
Onda nakon toga, Bljesak došao along-- koji,
Siguran sam da ti dečki su svi upoznati s Flash-- možda ne kako se to radi,
ali sigurno ste ga vidjeli.
Moraš ažurirati svoj flash Plug-in, sve takve stvari,
a to svakako proširiti raspon funkcionalnosti koja je bila dostupna.
No, što korisniku instalaciju plug-in je definitivno
nedostatak se, uključujući Flash u svoj program, zar ne?
Jer onda ste ovisni na Korisnik ide i nalaz Ovaj plug-in,
i vjerojatno se okrenuo isključiti ovaj dodatni korak
oni moraju poduzeti kako koristiti aplikaciju.
A onda bi moglo biti ažurirano koji će razbiti cijeli program,
i to završi kao noćna mora za developer, previše.
Tako da je barikadu.
>> A onda nakon toga je došao zajedno, HTML audio tag, koji
je značajka više moderan HTML-- koji svakako dozvoljeno za puno više stvari,
ali čak i stvari koje mogu učiniti bilo je malo ograničena samo
kao rezultat stvari da HTML je sposoban.
Dakle, kada je JavaScript API, Web Audio API,
postalo standard praksa preko preglednicima,
koji stvarno širi skup mogućnosti za programere
da stvarno dobili u zgradi cool stvari za web.
Dugo vremena je morao bili stvarno robusne alate
za izvornim audio aplikacija, volimo-članovima svatko zna Prosjaci,
a onda očito postoji više profesionalne audio miješanje aplikacije,
i da vrsta stvari.
No, tu nije bio stvarno dobar Cloud-- ne
Cloud, da, pretpostavljam Cloud-- web-temeljen platforma
koji će omogućiti programerima da izgradnju aplikacija za ljude
učiniti audio miješanje.
I kao što će vam pokazati kasnije, Web Audio API
omogućuje stvarno moćan stvari se dogoditi jako jednostavno,
što je prilično cool.
Dakle, to je naputak da zašto treba gledati ostatak seminara,
u osnovi.
>> I sada, ja ću govoriti o neki JavaScript-- samo osnovni elementi
jezika, tako da je možemo biti na istoj stranici
kada govorimo o API malo kasnije.
Cool.
>> Dakle, to je sažetak.
Zaboravio sam da je ovdje.
Da.
>> HUGH Zabriskie: Ima dvije slajdova ovdje.
>> SAM GREEN: Ovo je sažetak nekih ograničenja
od drugih obvezujućih, starim metodama.
I onda danas, imamo te stvari.
Cool.
Odlično.
>> Dakle, JavaScript osnove.
Prvo stvari prvi, tu je prilično značajna razlika
u odnosu JavaScript u jezik kao C, na način
koje su varijable stvorio.
Tako je u C, mi smo se da imaju upisati svoje varijable, zar ne?
I ne mislim tip poput upisati ih u, mislim tip
kao i dodijeliti im type-- značenje kao, int, float, ugljen.
U C, doista su korišteni za moraju stvoriti varijablu
a zatim staviti na tu vrstu za Cijelo vrijeme da koristimo tu varijablu.
I to nije nužno i gore, ali to je vjerojatno teže koristiti.
Jedna od cool značajke od JavaScript
da varijable ono što se naziva "dinamički upisali", koja
znači da ja mogu stvoriti varijabla s tim sintaksa,
varX jednako 5, npr.
To je izvorno stvara cijeli variable--
Pravo ispod napa somewhere-- ali ja
Možete promijeniti tu varijablu odnosi se na niz
ne radi ništa slično stvarajući novu varijablu.
Ne morate se brinuti o vrsti mijenja.
JavaScript zna da je tip-a promijenilo, a to se događa dinamički.
>> Dakle, tu su i prednosti i nedostaci koji,
kao netko tko je radio u JavaScript za neko vrijeme mogao znati.
Postoje slučajevi kad vas možda slučajno
promijeniti tip varijable i Ne nositi taj tip mijenja,
a zatim vaše JavaScript može crash-- ili iznimka
biti bačen, jer ćete imati pogrešan tip kada očekivati ​​jednu vrstu.
Cool.
>> Dakle, scoping-- koji je kao, ako smo sjećam se prvih tjedana u tijeku,
odnosi na to kako vidljivom varijablu je iu kojem području koda.
Sve to izgleda vrlo slično na način da izgleda u C.
Dakle varijable scoped općenito unutar vitičastih zagrada unutar funkcija,
a zatim tu su i globalno scoped varijable koje
are-- ako napisati varijablu izvan funkcije,
to će biti vidljiv u cijelom tekstu.
>> Jedna od razlika između JavaScript C i naročito,
je da ako proglasi globalni varijabla bilo gdje u tekstualnu datoteku
to je vidljivo u svakom funkciji unutar tog tekstualnu datoteku.
To je točno, zar ne?
>> HUGH Zabriskie: Aha.
>> SAM GREEN: Dakle, to je također malo malo funky u odnosu na C,
gdje smo uvijek morali imati naš varijabilne definicije iznad mjesta
oni su se koristili.
To nije pravilo da je izvršena više, tako, malo drugačija.
I opet samo reemphasize, Globalna odnosu lokalne variables--
vrlo slično C. Možete imati dvije varijable s istim imenom,
i imaju jedan od njihovih imena biti zasjenjen po lokalnom varijabla ako je jedan od njih
je globalna.
Dakle, slična vrsta problemi koji neki od vas
može izvoditi u u nekim vašeg problema postavlja sada.
Cool, tako da je varijable.
>> Kontrola toka, što znači kao, ako-else-- logično stuff-- i petlje.
Dakle, za početak, to je ono, ako-ostalo izjave izgledati JavaScript.
Postavljanje različitih stvari na linijama nije važno.
Ovo je samo jedan od konvencija za način na koji smo strukture koda.
Baš kao u C, imamo "ako" izjava zagradu.
To nije ono što sam trebao učiniti.
I did it again.
>> HUGH Zabriskie: Pokušavajući izaći?
SAM GREEN: Ne, ja sam Samo pokušavam povećavanje.
Nije važno.
>> Dakle, imamo "ako" izjavu i imamo stanje unutar nje
koji se procjenjuje na true ili false, i koji određuje hoće li ili ne
možemo ući u taj blok koda.
Isto tako, imamo drugo-ako i drugo, baš kao što smo navikli u C.
>> Vi bi također trebali biti prilično udobno pravo isključiti šišmiš s petlje,
jer oni također izgledaju puno poput C izgleda.
Ali vi ćete opet primijetiti da smo ima, umjesto int inicijalizacije,
imamo var inicijalizacije.
I mislim da imate biti oprezni kako bi
Sigurno ne promijenite vrijednost od I od int u nizu,
na primjer, jer će izazvati čudno ponašanje možda ne
očekivati.
Ali to treba izgledati lijepo upoznati te.
>> Dakle, ovo je mjesto gdje se stvari počnu dobiti malo lud u JavaScript
za nekoga tko ide iz Pozadina C. Postoje funkcije
u JavaScriptu, a tu je jedan način proglasiti funkciju koja izgleda
vrsta sličan C, a onda postoji još jedan koji
izgleda vrsta drugačije.
>> Prva verzija, što možemo vidjeti ovdje,
je vrsta C-kao, u kojem možemo reći, to je funkcija,
dati mu ime, dati broj argumenata,
a zatim se sadržaj funkcije idite u te vitičastih zagrada.
Vidjet ćemo primjer argumenti u samo sekundi.
>> Dok u sljedećem retku, vidimo, oh, evo varijabla zove "myFunction"
a mi ga jednaka ovo generički stvar-- function-- da
ne čini da sve što se događa.
Razlog da je drukčije od C je da je JavaScript
je ono što se naziva funkcionalna jezik, ili ima funkcionalne elemente, što znači
koja funkcionira zapravo vrijednosti.
A to znači da možemo postaviti varijabla jednaka funkciju
a zatim premjestiti tu funkciju okolo, to prođe kao argument,
učiniti sve vrste stvari kao da s funkcijama.
>> Jedna druga stvar note-- Funkcije su pisani
s određenim brojem argumenata.
Vidjet ćemo primjer funkcija s argumentom na sljedeći slajd.
Ali JavaScript neće vikati na vas ako pokušate
koristiti funkciju s neodgovarajući broj argumenata.
To ću učiniti sve kako bi to znači da ako prođe,
vas poziva funkciju koja očekuje Argument bez argumenta, sve što
će se dogoditi je da će učiniti sve pokušati izvršiti taj kod,
a ako je to na kraju vodi u iznimkom ili pogreške,
to će baciti tu iznimku i samo držati going-- što je samo jedan od načina
da JavaScript funkcionira.
Da.
>> PUBLIKA: Što se događa ako ima previše argumenata?
SAM GREEN: Tako je Pitanje je, što se događa
ako ima previše argumenata?
A odgovor je da JavaScript će samo
zanemari one koje su nakon one očekuje.
To će pokušati izvršiti funkciju pozvati kao da je to samo prva dva.
Pravo?
>> HUGH Zabriskie: To je točno, da.
Slično tome, ako premalo argumenata,
to je samo vrsta daje nula za sve argumenti da nema vrijednosti
za.
>> SAM GREEN: što može zapravo biti pri ruci, ako vas
želite napisati funkciju koja Potrebno varijablu broj argumenata.
Možete postaviti zadane vrijednosti definicija funkcije,
i to može ignorirati činjenicu da ulaz ne postoji.
Dakle, želim razgovarati malo više o ovom posljednjem metka
točka, što funkcije su vrijednosti.
Ovo je primjer kako je malo um-puhanje
ako se samo čitati, i ne mislim o tome što se događa na sekundu.
Dakle, pogledajmo samo na prvi red ovdje.
Imamo tu varijablu, f1, da kažemo je funkcija koja radi ovu stvar.
I sadržaj funkcije su console.log ('Hello').
Možete misliti console.log kao JavaScript ekvivalent printf.
Dakle, što će se dogoditi je, ako ćemo pokrenuti ovaj kod u našem pregledniku,
to će ispisati niz.
Mogu dokazati da.
PUBLIKA: Do zapisnik, ipak, ne da znači da je se snima negdje?
SAM GREEN: Da.
Dakle, ja ću vam pokazati što će se dogoditi.
Dakle, pitanje je, što se prijavite znači?
>> HUGH Zabriskie: Pa console.log je kao printf za C.
SAM GREEN: Pa console.log je kao printf,
pa ako imam tu console.log ('Hello'), i ja zvati, string "Hello"
dobiva ispisati na konzolu.
To je konzola.
To je isto kao printf, gdje ispisuje na standardni out.
A vidjet ćemo za minutu, no to je zapravo
pozivajući se na konzole objekta, i poziva metodu na taj objekt.
To će učiniti više smisla u minuti kada smo
doći do pričaju objekata u JavaScript,
ali sam mislio bih samo napomenuti da.
HUGH Zabriskie: Mi smo koristi se u C, redu-
mi obično napisati veliki programa u glavnom ništa učiniti.
No, ono što je cool u JavaScript je li imaju ovu vrstu tumača koji
radi u stvarnom vremenu, tako da traje samo liniju po liniju,
to samo može protumačiti da su na licu mjesta.
I to prati stvari koje su pokrenuti prije,
tako da je prilično koristan alat za koristiti console.log ili konzolu,
Općenito, za samo igranje s oko JavaScript.
>> SAM GREEN: Znači vraćamo na to example-- drugu liniju koda
Ovdje je prilično doista uznemirujuće u glavi.
Prvi put kad sam pročitao ovo, Bilo je to kao, što se događa?
Dakle, ono što se događa je to Funkcija deklaracija, kaže,
Imam funkciju naziva f2 što se očekuje jedan argument, f,
a zatim ga poziva da Funkcija, f, koji je
donesen na njega kao argument bez argumenata sama.
Dakle, to bi moglo biti zbunjujuće.
Ako shvatimo to kao f2 traje f1 kao argument, a zatim unutar F2,
f dobiva called-- što znači da ove linije koda,
Nakon ove dvije linije kod, rezultati u "Hello"
se ispisuje na konzoli.
>> Činjenica da možemo proći djeluje oko kao vrijednosti
završi kao jedan od najviše moćne značajke JavaScript
kao programski jezik.
Izvan sve od strašan stvari može učiniti,
kao oblici iz Jezik u smislu način
da čini stvari jednostavno programirati i omogućuje
za stvari koje nisu posebno dobro prilagođen na webu,
funkcionalni programiranje i funkcionalni programiranje aspekti JavaScript
jedna od najviše moćna pojmovi koji
postoji u JavaScript-- ako mene pitate.
Cool.
>> Dakle, sljedeća stvar.
Osim što je funkcionalna, postoje i elementi JavaScript
koji su objektno-orijentirani, što je jedan od vrlo
Popularni krilaticama u računalnoj znanosti.
Objektno orijentirano programiranje je jako popularna stvar.
JavaScript je verzija da je, gdje Vjerujem svaka vrijednost je
predmet, što znači da je svaki objekt oblozi zajedno neki broj vrijednosti.
Dakle, za vrijednosti koje su jednostavne, kao što su cijeli broj, kao varX jednaka 5,
da predmet samo obaviti tu jednu vrijednost.
>> Ali, mi također možemo zamisliti situaciju where-- možemo sjetiti situacija u C
gdje smo htjeli napraviti nešto s konstrukt,
na primjer, da se omata nekoliko Vrijednosti zajedno i čini
to je stvarno lako proći okolo stvari.
To je kad je objekt u JavaScript.
>> Važno je zapamtiti kad kažem da predmeti zamotan
neki broj vrijednosti zajedno, koja funkcionira također
vrijednosti, što znači da funkcije mogu Također se unutar jednog JavaScript objekta.
A razlog je to važno je da, dok mi često
mislim pozivanja metode na objekt koji je
popularnog izraza iz drugih popularni objektno-orijentirani jezici
jedan od razlika je u tome sve što je postupak u JavaScript
je vrijednost pohranjena unutar objekta koji obavlja neku action-- eventualno
pomoću drugih vrijednosti koje su unutar tog objekta, ali ne nužno.
Dakle, možete zamisliti situaciju, ja Valjda u malo ludi način,
gdje se zove metodu jednom objekta na drugi objekt, npr.
Dakle, to je malo funky na taj način.
>> A također možete promijeniti metode koje su povezane s predmetom
dodjeljivanjem taj postupak A Nova funkcija, što je također
prilično drukčiji od drugih objektno-orijentirani jezici, gdje je
Jednom mi izjavljujemo objekt i instantiate ga,
ne možemo mijenjati metode koje su povezana s tim predmetom više.
Tako da je prilično drugačija.
Cool.
>> Dakle ovdje je primjer, prvo, jednog objekta u akciji.
To je ono što se naziva generički objekt, koji
znači da nema niti Konkretno ime, nema klase,
to je samo neki omatanje vrijednosti.
A način na koji izgleda je, imamo ovaj vanjska par vitičastih zagrada ovdje
koji ukazuju na JavaScript i reći, to je objekt.
Vrijednosti unutar nje su svaki vrijednosti unutar
objekta koji bi trebao biti zamotan zajedno.
A unutar tog objekta, smo onda su ključne parove vrijednosti,
gdje ključ se odnosi na ime vrijednosti unutar objekta,
a drugi side-- nasuprot debelog here--
je stvarna vrijednost koji trebaju biti pohranjeni.
>> Dakle vidite ovdje imamo Ključ zove fn s vrijednosti SAM,
slijedi zarez, govoreći na sljedeći unos.
Zatim ključ zove LN, s vrijednošću od zelene,
slijedi zarez, slijedi "print"
koji će imati funkciju vrijednost koji će raditi ovaj redak koda.
Uzmimo jedan korak natrag i raspakirati što se ovdje događa.
Dakle, ovo je malo komplicirano, i vidimo nešto novo
prvi put.
Na "to" ključna je nova stvar vidimo ovdje, a što to radi
se odnosi na struju objekt u opsegu, zar ne?
Dakle, kada kažemo, ova ističe sve na putu natrag
na cijelom ovom object-- kad radimo this.fn,
ćemo ići sve na putu natrag ovaj objekt, idite na fn vrijednost
i dobiti Sam, povucite ga skroz natrag, staviti ga ovdje, a onda krenuti dalje.
>> PUBLIKA: Pa s dohvat je to učinio zbog parametra
definicija?
SAM GREEN: Dakle, pitanje je, je dohvat učinjeno zbog parametra
definicija?
Da, apsolutno.
Što će se dogoditi ovdje jest, ova točka govori u JavaScript,
U redu, ja dobijam neke vrijednosti ovog objekta od sebe.
A onda ćemo tražiti upis zove fn, a ako se to utvrdi,
to će se vratiti da value-- tako, to je Sam.
Ali sam također mogao upisali nešto što nije ovdje definirana,
a onda bi jednostavno povratak undefined-- koji
je stvar koja JavaScript mogu ne, što može imati koristi,
ali to je also-- ako napravite pravopisnu pogrešku, to može dovesti do čudnih pogrešaka.
Tako da ću samo pokušati pronaći što god to reći pronaći
i to neće žaliti ako ga ne nalaze.
To ću samo reći, nisam ga naći, a onda krenuti dalje.
Dakle, to će biti nedefiniran, plus prazan, plus prezime.
Da.
A onda možemo vidjeti da ako mi onda bi mogao otići dolje i access--
i zovemo tf.print () sa zagradama.
To će nazvati ispis Funkcija bez argumenata, zar ne?
Ali ako mi samo rekao tf.print () točka-zarez, bez zagrada,
sve što bi učinio je povući iz funkciji od vrijednosti,
ali zapravo ne zove.
Cool.
HUGH Zabriskie: Ukoliko ćemo napraviti objekt?
SAM GREEN: Naravno, neka je učiniti.
Dakle, ja mogu pomaknuti ovo Primjer za konzole.
Možemo zamisliti da imam objekt.
Dakle, ovo je jednostavan objekt.
Ovo je objekt koji sadrži dva vrijednosti s dvije tipke, dva ključna vrijednost
parova.
Pa sam onda mogu pristupiti vrijednost pohranjenu unutar tog objekta od strane radi x.x1,
na primjer, i ja dobiti 1 leđa.
Isto tako, x.x2, dobiti tu vrijednost natrag.
>> A sada stvarno cool stvar je, ja mogu zapravo dodati nešto na ovaj objekt
nakon što sam ga stvorio.
Dakle, možete zamisliti, neka je kažu imam funkciju.
>> HUGH Zabriskie: Vi morate učiniti Shift-Enter.
>> SAM GREEN: Oh, to je neugodno.
Što se ne sviđa?
Oh.
Idemo.
Cool.
>> Pa upravo sam stvorio ova funkcija f, koji
će ići na struju Cilj i ispis this.x1.
Dakle, ako sam samo nazvati f strane sama, ništa se događa
dogoditi, zar ne, jer nema x1 polje u objekt to se odnosi na.
Ali, ako kažem, x.f = f, a onda sam pozvati x.f (), ja ću se vratiti 1.
To je funkcija f sada povezana s objektnim x,
koji ima ključnu zove x1 povezane s vrijednošću 1,
pa kad mi zovemo this.x1, to je će naći ono što traži
i biti u mogućnosti ispisati vrijednost van.
Dakle, to je samo jedan primjer od vrste ludog stvari
što možete učiniti s objektima u JavaScript.
>> Tako da je verzija generička verzija, što znači
da smo stvorili objekt pomoću ovog zagrada notation-- Brace zapis,
rather-- i to je zgodan ako mi samo želimo
jedan primjerak određenog objekta, ali što ako želimo imati više od jednog
iste vrste?
A odgovor na to Pitanje je, postoje stvari
zove nastavu u JavaScriptu, kao dobro.
Možemo stvoriti funkciju koja ne nekakvu inicijalizacije
za stranog objekta, i mi bi, kao što je,
moj class-- tako naziva od višekratnu upotrebu object--
jednaka funkciju koja ga postavlja.
Pa što će to biti ekvivalent da se stvara objekt koji
će biti samo željeli, kovrčava braće, str, debelog crijeva,
ovo je string, točka-zarez, kovrčava braće.
To će biti generički Cilj nam inicijalizirati,
s jedne razlikom što se na Sljedećih linije smo stvorili prototip, koji
znači to je zadani ključ koji Dodamo li naš objekt koji
ima vrijednost navedene ovdje.
Što znači da, kada sam stvoriti novi instanca ovog MyClass objekta,
to će se pre-izgrađen unutar je vrijednost pod nazivom STR i druga vrijednost
zove myPrint, koji je će biti u funkciji.
Odlično.
>> Veliki.
Dakle, zadnja stvar na reći o JavaScriptu
je da je stvarno korisno za što nazivaju asinkrone operacije.
Asinkroni znači da se mogu čekati za neke operacije
dovršiti prije nego što se krećemo na, ali krenuti dalje dok čekamo
a zatim su se nešto dogoditi kasnije.
A što mislim da je, mogu zamisliti situaciju u kojoj
šaljete zahtjev neki web poslužitelj negdje,
i to će vas poslati natrag neki veliki komad podataka, zar ne?
I vaš korisnički mogao čekati u međuvremenu da se to dogodi,
i ništa ne može biti događa u to vrijeme.
Ali to nije velik dizajn, zar ne?
Vi ne želite web stranicu zamrznuti.
Što ako korisnik želi kliknite na padajući izbornik?
To nije velika dizajn uzorak.
Umjesto toga, u osnovi što JavaScript je to, kaže,
OK, ovaj postupak asinkrono.
Dakle kao što je, čekati u pozadini, i onda kada je operacija se obavlja,
nazovite por function-- nazvati neku funkciju,
Učiniti neke action-- signalizira da je Operacija smo čekali do kraja
Gotovo je.
A razlog je to super moćan je, možemo učiniti nešto, proći argument,
učiniti nešto, a onda čekati da se nešto dogodi.
Zatim, nakon toga nešto dovršava, možemo nazvati por.
To je jako zgodan jer omogućuje činimo stvari s web Audio API,
primjerice, kao što su učitavanje audio datoteka s udaljenog poslužitelja
bez čekanja za Cijeli audio datoteka se učitava,
što bi bilo jako loše za korisničko iskustvo.
Cool.
>> Zadnji par bilješke o ispravljanje pogrešaka, jer to
je stvar koju ćete morati učiniti kao dio vašeg projekta, zajamčena.
Spomenuo sam JavaScript konzolu.
To je super korisna značajka sve moderne preglednike,
I doista vam da dobijete udoban koristeći svoju konzolu,
Ako želite dobiti dobar u JavaScriptu.
To je super zgodan za ispravljanje pogrešaka, ali je isto tako
stvarno korisno za figuring kako koristiti API.
To omogućuje stvarno lako eksperimentiranje
bez upisati neki broj, a zatim ga sastaviti.
Ne morate učiniti sve te korake.
Vi samo možete pisati neki broj u retku,
a zatim dobiti trenutnu povratnu informaciju o da li ili ne da je linija koda
worked-- vrlo zgodan.
>> I također, samo jedan tehnički note-- JavaScript konzola je primjer
od REPL-- tako da je R-E-P-L, repl, koja se zalaže za čitanje, procjenu,
print petlje.
Vi ćete upisati neke stvari u, to će pročitati ono što ste upisali u,
to će ga ocijeniti, a to će print izlaz, a onda ću početi opet.
To vam omogućuje brzo otići krugovi iterating, što je stvarno cool.
>> Mislim da pravi Last note-- ovo je stvarni posljednji napomena, da.
Kako mi zapravo koristiti JavaScript?
Prvo, možemo uvesti to pomoću oznake skripte
na vrhu ili dnu HTML file-- bilo unutar HTML datoteke,
stvarno.
A unutar oznake skripte, postoje dvije pod-načina uvoza JavaScript.
Prvi je vlasništvo odvojeni JavaScript datoteka
da uvozimo u cijelosti ili tako da se na površini od koda poput pisma
za početak, a zatim backslash skriptu za kraj.
I onda mi samo napisati JavaScript unutar HTML datoteku.
To su dva načina.
Ne možete ga unutar HTML-a.
PUBLIKA: Je li bolji od drugih?
SAM GREEN: Pitanje je, je jedan bolji od drugoga.
Dakle, da, kao kodiranje stilu prakse, i to je kao dizajnerskoj praksi.
Postoje dva razloga zašto bi to moglo biti bolje.
Prvi je, čini svoj zakonom, puno više čitati, ako sve HTML
je na jednom mjestu, sve svoje CSS u drugo mjesto, sve vaše JavaScript
u trećem mjestu.
Pravo?
Mislim da bismo trebali već razgovarali o tome u sections-- kao što CSS--
da is-- i to ide često u drugu datoteku.
Dakle, slična vrsta koncepta ovdje.
Također možete zamisliti da JavaScript bi se ponovno koristiti na više od jednog
HTML stranica, ili možda Mnogo HTML stranice,
i da tu JavaScript refactored u jednu
datoteku koju možete uvesti na više od jednog mjesta
omogućuje kod se način više održivi.
Možete zamisliti što jedan promijeniti u JavaScript
i da ga promijeniti u 100 različitih datoteka.
I umjesto da mi samo možemo ga mijenjati u jednom, što je daleko više moćna.
Jesam li odgovoriti na vaše pitanje?
Cool.
>> Također možete upisati u konzolu, kao što smo spomenuli prije.
I opet, posljednji note-- Web-Audio je izgrađen u,
ne morate učitati ništa.
Cool.
Postoje li bilo kakva pitanja, imate li bilo više pitanja o JavaScriptu,
prije nego što smo prešli na?
>> PUBLIKA: [nečujan]
SAM GREEN: U redu, u redu.
Tako je sada on će govoriti o API.
>> HUGH Zabriskie: cool.
Hvala, Sam.
>> SAM GREEN: Naravno.
HUGH Zabriskie: Awesome, pa ćemo krenuti dalje s JavaScript.
Tako smo razgovarali o nekim Osnove JavaScript,
a to su varijable, funkcije, predmeti, funkcionira kao varijable,
asinkrono učitavanje.
To su sve stvari koje ćete vidjeti dok koristite web Audio.
Dakle, samo ćemo razgovarati o je prvi na visokoj razini.
>> To je API, pa to je nešto koja je izgrađena, kako je Sam rekao,
pravo u JavaScriptu da koristite u konzoli.
I to je zapravo isto kao C ++ koda da stvarno je izgrađen na Chrome
i Firefox, a sve ove preglednicima.
Dakle, glavne ideje s weba Audio je da imate
ova vrsta cjevovoda audio, zar ne?
Dakle, vaš audio podataka dolazi u u nekom obliku.
>> Postoji vrsta tri glavne forms-- imate oscilator, koji
stvara sinusni val, kosinus val, ćemo vidjeti kako se to radi.
Još jedna uobičajena jedan, naravno, MP3.
Pa možda početi s pjesma, a onda
želite učiniti neke filtriranje na to i izlaz
that-- koji bi mogli biti mogući izvor.
I onda stvarno cool jedan je mikrofon.
Na taj način možete koristiti neke vrlo Osnovni pozivi u JavaScriptu
kako bi dobili pristup do mikrofon, pa ako
htjela napraviti aplikaciju kao što je travnjak detektora,
na primjer, koji se u tvoj glas i shvati
pitch-- vrlo jednostavan način za to.
Vi samo vrsta može pročitati u, shvatiti frekvencije,
a zatim izlaz broj.
Tako ćemo vidjeti kako se to radi, kao dobro.
>> Odredište je u osnovi gdje je audio podataka je izlaz.
Dakle općenito, to je kao Vaš laptop zvučnika.
Ostale opcije su kao ScriptProcessorNode--
mi ćemo doći do čvorova u second-- ali u osnovi,
bilo da ste stavljanjem zvuk iz putem računala kroz zvučnike,
ili ste vrsta snimanja, tako da ste ga pohrane audio podataka.
Dakle, možda ako netko stvara Glazba u app, a zatim
Želite li snimati da, a možda i kao izvoz u Soundcloud, za example--
da će biti jedan od načina za to.
Sve zabavne stvari, što ćemo govoriti o,
događa između tih dviju točaka, gdje smo učitati u glazbi
a onda je izlaz.
>> Zato ću govoriti o pet faze audio produkcije u sekundi.
Imamo ovu stvar zove AudioContext, koji
je ovaj mali omot vidimo ovdje.
Uglavnom ono AudioContext is-- ako smo ići JavaScript konzoli upravo sada,
možemo stvoriti upravo sada.
Samo jedan primjer repl, zar ne?
Mi čitanje, vrednovanje i ispisuje.
>> AudioContext je globalno stanje.
To je struct, to je predmet ovdje, i to čuva podatke
o stvarima koje idu na na zaslonu se odnose na audio.
Jedan primjer je trenutno vrijeme.
To vam govori broj sekundi, vrlo precizno,
jer web stranice učitava.
Dakle, ovo je stvarno korisno Malo svojstvo koje možete koristiti.
To je pročitao only-- mislim stvarno možete pokušati ga postaviti vrijednost.
To će reći da ga postavite, a onda ako ga ispisati
again-- to zapravo nije dosta posla.
Dakle, tu su samo za čitanje svojstva u JavaScriptu.
To je doista korisno ako ste vrsta sinkronizaciju
puno drugačiji Informacije, kada ste
vrsta igrati različite zvukove.
>> Još jedna jako korisna Kontekst je odredište.
Definitivno, ako ste zainteresirani, biti Pokušavam to na vlastitu konzole prava
sada.
Dakle, to je AudioDestinationNode.
Uglavnom ono što to govori je, gdje je izlaz ide?
Dakle, postoje dvije prave opcije ovdje.
Obično zadana je samo zvučnici,
tako AudioDestinationNode zapravo samo govori
postoje nula izlazi na zvuk dolaze u, poslan na zvučnik.
Dakle općenito, što ne moraju igrati s tim.
Ako ste zainteresirani zapravo koristi ScriptProcessorNode za snimanje,
definitivno mi je pucati e kasnije, jer je to
malo složeniji.
Ali općenito, ti si samo vrste od izlaza zvuka u nekom obliku.
Pa super, mi ćemo skočiti natrag ovdje.
PUBLIKA: Žao mi je.
HUGH Zabriskie: Da.
PUBLIKA: Znam da je rekao da razgovaraju vama kasnije o snimanju.
Možete li sučelje koje s Pro Tools?
>> HUGH Zabriskie: Uz Pro Tools?
Da vidimo.
Ne mislim tako.
Tako će između klijenta, koja je JavaScript
konzole, i vaš stvarni Računalo je općenito
nešto što je vrsta off granica, ako vas
će, kakav po prirodi the-- to je vrsta dizajn stvar,
ali pokušajte zadržati preglednik odvojeno od korisnika stvarne računalo.
Općenito, jedino što ste mogli Pristup je mikrofon i kamera.
Nisi u stanju, ja ne mislim, koristite Pro Tools.
Međutim, ako ste stvorili staza u Pro Tools,
izvoze da možete učitati da Ovdje, filtrira, na primjer,
proces koji, a rekord koji u Audio Destination-- ili no-- kugla
Procesor čvor.
A onda od tamo, što ste mogli izvoz koji se Soundcloud, te
mogao poslati na e-mail, ili što god želite od tamo.
>> No, tu je vrsta blagog barijere između stvaranje glazbe na računalu
i stvaranje glazbe online.
>> SAM GREEN: I to je nije jedinstven za ovaj API.
To je sigurnosna značajka Chrome, te Mislim da svaki drugi moderni preglednik.
Preglednik je self-sadržane.
Tako, na primjer, web-stranica ne može koristiti JavaScript za uključivanje zvuka
na zvučnike, na primjer.
Ili to ne može isključite računalo.
I nema međutočke između te dvije stvari, zar ne,
pa bilo da imate potpuna apstrakcija,
ili otvoriti sigurnosni propust ostavljajući
programer s lošim namjerama napraviti što god žele sa svojim laptop.
I to je razlog zašto Chrome je self-sadržane.
>> HUGH Zabriskie: Da.
Ima li to smisla?
Cool, cool.
Upravo sam idući u prikazuju primjer jednog.
To je prilično kao koliko ste dobili, u smislu
pristupa korisnikovo računalo.
Ako imate USB tipkovnicu priključen, možete koristiti nešto što se zove Web
MIDI API, što nećemo zapravo govoriti o ovdje,
ali to je još API koji je izgrađen u najmanje Chrome-- opet,
to je razlog zašto volimo Chrome-- Mislim Firefox ili Safari,
to je jednostavna stvar za google-- različiti preglednici imaju
različite podrška za koje API su provedene.
Ali, ako ste htjeli priključiti na tipkovnici i raditi s tim informacijama,
vrsta poslati tipkovnicu Podaci preko računala
a zatim koristiti tu online, ovaj API Ovdje bih raditi to.
>> Cool.
U REDU.
Dakle, vrlo brzo kreće ovdje.
Kako radimo na vrijeme?
>> SPEAKER 1: O 15.
>> HUGH Zabriskie: 15 minuta napustio?
OK super.
Tako ćemo utrku ispred ovdje.
>> Tako je u osnovi, glavna točka razmišljam o tome kao cjevovoda
je da je svaki korak u tijeku je niz audio čvorova.
Naš izvor, recimo, je oscilator.
Moramo stvoriti oscilator čvor.
A to je samo vrsta malog function--
i svi oni sa sjedištem izvan audio kontekstu ovdje.
>> PUBLIKA: Kada je rekao oscilator, to znači
To je zapravo doslovno ide od dva različita stupovi naprijed i natrag?
>> HUGH Zabriskie: Ne, to je kao digitalni prikaz.
To je zapravo provodi u C ++.
Ja zapravo ne znam naočale kako je to zapravo provodi,
ali sve to radi kao binarne podatke.
Zapravo, da.
To bi se govori, što sam mogao Zapravo, ako ste zainteresirani,
Mogao bih vam poslati malo više Informacije o tome kako valnih oblika
čuvaju ima digitalni format.
OK super.
>> Tako smo generira ton poput sine val ili nešto slično, možda
440 Hertz.
Stvaramo oscilator.
Ako želimo postaviti glasnoću, mi povezivanje ništa na GainNode,
što smo mogli učiniti s .creategain.
To postavlja svoj volumen.
Možete proći da na bilo koji drugoga options-- dobro,
tako audio tampon izvora čvor je gdje se može
spremanje MP3 koji ste umetnuli u.
>> Biquad filter za filtriranje, ako želite uzeti sve baze iz
od pjesme, ili nešto slično.
Bože sačuvaj želite uzeti baza iz pjesme.
I AudioDestination čvor, opet, kao i gdje je naš završetak je.
Ako ste ikada zanimati sve različite moguće opcije,
samo idite na karticu i neka auto-kompletan smisliti.
A ako ne stvaraju, vidjet ćete sve različite stvari koje možete napraviti.
Možete stvoriti dinamiku skripta procesori,
Ne znam što da je, za miješanje kanala spajanja
i kanala Razvodnici i sve to.
Cool.
>> Dakle, ovo je samo jedan Primjer cjevovoda.
Dakle, imamo tri izvora dolazi.
Možda su valni oblici, Možda su to MP3.
Jedan ide kroz filter, još jedan je
uzimajući iskrivljena drugi jedan je vožnja lijevo i desno.
To možete učiniti sve i svašta, a svi su dobili mješoviti oko zajedno,
a onda se dolazi zvuk na kraju, kao i odredište.
Ovo je primjer onoga što više komplicirano web Audio broj izgleda.
Vi stvarate sve to različiti predmeti pravo here--
Nisam siguran za to.
Ne, to ne zumiranje.
U REDU.
>> SAM GREEN: Možete napraviti kontrolu, pomaknite-up.
HUGH Zabriskie: Kontrola Scroll--
SAM GREEN: Ne, ne.
Kontrolirati--
>> HUGH Zabriskie: Oh, kontrola, Dođite?
Oh, Gotcha.
Da.
Wow, Nope, nope.
U REDU.
Neću to učiniti.
>> Tako da, u ovo prvo poglavlje ovdje, vidiš
mi stvaramo sve te različite čvorovi izvan konteksta.
Mi samo smo ih komad zajedno u drugom dijelu
ova funkcija zove Connect.
To je zapravo ključni Funkcija u Web Audio.
To samo znači da nakon što ste učinili nešto sa zvukom u jednom čvoru,
proslijediti na sljedeći čvor.
Tako imamo izvor, to spaja na analizator,
analizator radi nešto s njim, to ide na izobličenja, i tako dalje,
a na odredište Na dnu ovdje.
Cool.
U redu, pa ćemo držati se kreće dalje.
>> Opet pipeline--, te su najčešći cjevovodi,
pa govorimo o svim tim stvarima kao što izobličenje, pomicanje okna, sve ove stvari.
Ako ste stvarno zainteresirani u korištenju stvari Pro Tools,
oni vas vjerojatno zanimati.
Ako ne, možda ste upravo želite igrati zvuk,
ili možda samo želite podesite glasnoću na zvuk.
To su dva najčešća vrsta cjevovoda u audio produkcije.
>> Opet, način možete uzeti u kao oscillator-- Dakle, neka je
napraviti demo toga ovdje.
Tako ćemo stvoriti jednostavan audio kontekst ovdje
a od koje ćemo stvoriti našu oscilator.
Tako da je, opet, mi smo samo nazvati Napravite oscilator.
Ćemo postaviti frekvenciju na da, 440 Hertz, svačija omiljena.
Onda smo spojiti da na odredište point-- što je govornik, tako
odredište kontekst.
Na kraju, možemo samo reći, početak nula sekundi od sada, i mi smo zvuk?
>> [Zvoni]
>> HUGH Zabriskie: Evo idemo.
To je samo sinusni val.
OK super.
A onda ćemo zaustaviti.
>> PUBLIKA: Odakle da povratne informacije dolaze iz?
>> HUGH Zabriskie: Povratno?
Oh, vjerojatno naš mikrofoni.
Pa da, to je kako to učiniti.
I zapravo, kad bih imao držati Internet trčanje, te
može imati učestalost vrijednost kao što je trčanje,
tako da je zabavna stvar za igranje okolo.
Cool.
To je uvijek lijep jedan predstaviti.
>> SAM GREEN: nismo razmišljati o tome, zar ne?
HUGH Zabriskie: Da, to je gadno jedan.
Dakle, tampon loading-- ću pokazati primjer da je na samom kraju.
To je učitavanja MP3.
I mikrofon, koristite samo funkciju zove Navigator.getUserMedia ()
zatražiti pristup korisnikovom Mikrofon za tu informaciju.
>> Evo filtriranje, ja ću samo držati se kreće od toga.
To je prilično visoka, ali filtri ti samo dopustiti da se
>> [Bip]
Filtriranje također vam omogućuje stvoriti stvari poput ružičaste
buke, smeđa šuma, bijeli šum.
Ako želite stvoriti čistu buku koja neki ljudi vole nered okolo sa,
možete koristiti web-Audio filtriranje to učiniti.
>> Audio Panning-- tako zamisliti Ako ste pisanje igru
i želite zvuk zvuk kao da dolazi, kao što je,
pucanje po ekranu, što mogu koristiti Ispiranje audio
stvoriti ovakvu stošca, koje volimo-članovima da je prilično mathy,
ali to je zapravo jako super ako se to radi,
a tu je neke dobre tutorijali na to ti mogu poslati.
Uglavnom, možete vrsta stvoriti zvuk
nešto ide po u 3D način.
A ako imate DJ interes, možete početi miješanje i prijeći slabije pjesme.
>> To je samo neke vrlo osnovne broj, u osnovi ono što sam učinio prije.
Time volumen oscilator, tako da smo stvorili našu oscilator
što stvara valnog oblika.
Mi stvaramo našu GainNode, postavljen našu frekvenciju,
a zatim spojite oscilator do GainNode, koji je tada u osnovi mijenja
koliko signala dopušten putem.
Ali zapravo, to je digitalni stvar, tako da je više just-- da.
To nije ono što se zapravo događa, ali to je ono što se događa u stvarnom životu
s dobitkom.
>> PUBLIKA: --quantization parametra volumena?
HUGH Zabriskie: Žao nam je?
PUBLIKA: Je li to kvantiziranim volumen parametar?
HUGH Zabriskie: Da.
I to je jedna stvar ja sam stvarno deficijentna u mojoj znanju,
kako dobit radi na digitalnoj razini.
Znam sa stvarnim signala, to je u osnovi
kontroliranje koliko ste pojačava signal.
Dakle, da.
Ja ću vam poslati više informacija o da, zato bih biti znatiželjan zapravo
znati više o tome.
Ali u osnovi parametri su, jedan je fold--
glasnije signal-- i nula ne signal, ili nećete čuti zvuk.
Mi ćemo preskočiti demo vremena za to, jer to je u osnovi ono što sam učinio prije.
A opet, Context.Destination je audio odredište čvor.
Strašan, OK.
>> Tako ću učiniti brzo dva demo.
Kako radimo na vrijeme?
>> SPEAKER 1: oko 10 minuta.
>> HUGH Zabriskie: 10 minuta?
Veliki!
Odlično.
>> Dakle, prvi ću Ne, to se zove moja omiljena pjesma.
Dakle, ovo je samo Malo HTML JavaScript.
Mi ćemo imati dva gumba na stranici igraju svoju omiljenu pjesmu
i zaustaviti moju omiljenu pjesmu.
Ja ću to promijeniti.
>> PUBLIKA: Pokrijte mikrofon.
>> HUGH Zabriskie: Da.
I ja sam učita ovdje skripta koja basically--
i to je stvarno koristan umetanja MP3,
pa to samo čini loading MP3 put brže.
To je zapravo samo omot.
To samo čini proces umetanja u MP3 mnogo brže,
inače koristite HTTP zahtjev, vrsta kao ono što smo radili
o trenutnom komad postavljen s poslužitelja.
To je stvarno ružno, ti ne želim to učiniti.
>> Dakle, ovaj tip, Boris Smus, napisao je stvarno korisni mali alat zove BufferLoader.
Sve što trebate učiniti je jednostavno proslijediti na kontekst, što ga list-- proći
ili, da, to je popis u JavaScriptu?
SAM GREEN: Niz.
HUGH Zabriskie: Oh, to je niz, to je u redu.
To je niz staza različitih datoteka.
A onda je funkcija proći.
To je povratni poziv smo razgovarali o s asinkronog učitavanja.
Koja će se zvati Nakon što su datoteke učitava.
I to je funkcija koja se zove kad datoteka je učitana uzima kao perimetru
niz učitanih odbojnika.
Tako da se događa ovdje.
Uglavnom, BufferList je će biti jedan value--
ili će biti niz Duljina jednog, koji je u njoj u indeks
nula cijeli učitava datoteku MP3.
Dakle, ono što ja radim kad završim Otvaram je, jednostavno sam
stvoriti izvor pufer, koji je audio tampon izvor čvor.
Sljedeći korak je sam učitati u source.buffer kao potpuno učita tampon
iz BufferList-- to je puno buffers--
a zatim spojite taj zvuk tampon na odredište.
Dakle, ono što će učiniti je jednostavno staviti MP3
ravno na izlaz, i početi odmah
nakon uzimajući ovaj poziv.
>> Cool, pa ćemo vidjeti ovo dogodilo u akciji.
Moja [nečujan] ovdje, da vidimo.
Pa ja sam samo ide započeti osnovni poslužitelj.
To je nešto što što trebate učiniti ako ste
izradu zahtjeva za umetanje datoteka.
Idem početi osnovni poslužitelj.
To je u osnovi cijeli PSET upravo sada u jednom retku,
ali to je samo polazeći poslužitelj na portu 80/80.
Dakle, idemo ovamo, mi će učitati 80/80,
ćemo ići moja omiljena pjesma.
Dakle, ako sam pogodio "Play My omiljena pjesma "upravo sada,
to će učitati moje omiljena pjesma i igrati it--
[MUSIC - orlovi ", život u brzoj TRAKA"]
--which se događa da se "Život u brzom "The Eagles.
Sada sam mogao pogoditi "Stop moj omiljena pjesma "i ponovno ga.
>> [MUSIC - orlovi ", život u brzoj TRAKA"]
>> A ako idem preko utješiti, jer Koristio sam globalnu varijablu ovdje
pratiti te vrijednosti, to je zapravo Sada će se priznati u konzoli.
Dakle, to automatski stvara za mene.
Dakle, to je ono što se svira sada, i ja mogu jednostavno nazvati source.stop ()
na to.
Pa, znate što?
Samo da ti dečki su to čuli song-- možda prepoznati ovu pjesmu.
>> [MUSIC - RICK Astley, "nikada neće dati VI UP "]
[MUSIC - orlovi ", život u brzoj TRAKA"]
Mi smo sada svi bili Rickrolled.
OK, lijepo, kreće dalje.
Cool.
Dakle, to je u osnovi primjer koliko ste mogli učitati MP3 file--
[MUSIC - orlovi ", život u brzoj TRAKA"]
--and igrati, a zaustaviti i početi.
Sam mogao učiniti puno više [nečujan]
>> Posljednji ću učiniti je, Ja ću vam pokazati [nečujan].
>> [Glazbom]
>> To je kao, ogg.wave.mp3.
Mislim, ako se dobro sjećam, Ja sam upasti u nekim pitanjima sa .m4a,
ali nisam siguran o tome.
Mislim mp3.wave--
>> [MUSIC - RICK Astley, "nikada neće dati VI UP "]
>> OK super.
Nisam trebao reći.
U svakom slučaju, zdravo.
Dakle, imamo ovaj otvoreni.
Dakle, sada sve što radim, ja sam zapravo stvorio osnovna sintaksa za stvaranje glazbe.
Dakle, ako sam nešto slično, dodajte G4 1. 2, što to znači je da,
dodajte klavir bilješke, G4, što je četvrti G
gore na klaviru od dna.
Dakle, ovo je vrsta MIDI govoriti, pa za one koji su glazbeni temelji,
to je samo MIDI note.
>> PUBLIKA: To je G Srednjeg C, zar ne?
>> HUGH Zabriskie: Ovo je G iznad srednjeg C, to je u redu.
>> PUBLIKA: Iznad Bliski C
>> HUGH Zabriskie: Da.
Zapravo, da.
Mislim da sam zapravo napravio to je jedan [nečujan]
tako da bi to moglo biti oktavu iznad toga.
Tako ćemo vidjeti.
Ako sam pogodio Play--
[Ponavljaju PIANO NAPOMENA]
--we're će čuti.
Ideja je da se radi baš kao naredbeni redak bi,
pa ako odem gore i dolje na mojoj tipkovnici, što
Možete se vratiti na prethodni naredbe, što je prilično korisna.
I u nastavku je moj popis pjesama, koji su svi trčanje na petlji.
>> PUBLIKA: Bili ste uz pretpostavku 88-ključ tipkovnica na to, zar ne?
>> HUGH Zabriskie: Pitanje je, ja uz pretpostavku 88-ključ tipkovnica,
i da, ja sam.
Ono što sam učinio je sam u osnovi je 88 uzoraka
od glasovira, po jedan za svaku bilješku.
I tako svaki put kada čuti bilješku od sada,
to je zapravo petlja koja izgleda volimo-članovima Ovo postaje igra na petlji,
tako da za svaku notu, to je trčanje.
Što se događa je da sam stvaranje pufera opet
Mogu stvoriti dobitak čvor za postavljanje glasnoće.
To samo jako komplicirani način govoreći ja
pohraniti tampon u source.buffer.
Dajem ga dobit, sam spojite ga na dobit,
dobitak je povezan s izlaz, a onda sam ga igrati.
Dakle, to je vrsta procesa uzimanja u izvor tampon.
>> PUBLIKA: Možete li stvarno poduzeti kako suhi zvuk i čine ga mokra [nečujan]?
>> HUGH Zabriskie: Možete, da.
Postoji ponovno glagol, postoji kašnjenja, izobličenja.
Vi zapravo možete staviti bilo što u između u tom sendviču of-- dobro,
Plinovod je bolji metafora, ali možete dodati nešto u tome.
Cool.
>> Dakle, ja ću završiti demo ovdje da vam dati osjećaj
samo obična broj puta ste može pokrenuti tu funkciju odjednom.
Tako ću maknuti ove.
Idem stvoriti generator that-- u osnovi ono does-- ovo je stvarno
vrsta kompliciranom syntax-- ali je će generirati bilješke o letu,
i samo početi igrati ih jer ih ocjenjuje.
[Ubacivanjem PIANO]
>> Dakle, možemo samo napraviti malo glazbe ovdje.
[Ubacivanjem PIANO]
>> Pa što je to naredba se, na primjer,
to traje ta tri bilješke za klavir, a zatim ih stavlja na B3.
To sintaksa može učiniti malo više smisla
za one koji imaju Glazba u pozadini ovdje.
>> Mogu dodati kick bubanj.
Ja mogu--
>> [Ubacivanjem INSTRUMENTI]
>> --just poigrati s tim.
>> Tako možete make--
[Ubacivanjem INSTRUMENTI]
To je jedan je malo više neugodno.
[Ubacivanjem INSTRUMENTI]
>> Tako da slučajno dodaje suho cimbal na svakom 16. note, s 16%
[NEČUJAN].
>> [Ubacivanjem INSTRUMENTI]
>> Da, tako da je način na koji to works-- to je uvijek u 4: 4.
[Ubacivanjem INSTRUMENTI]
>> Da, tako četiri četvrtine, i 16/8.
[Ubacivanjem INSTRUMENTI]
>> Tako u prosjeku, dobivate 60% pregleda 16. bilješke.
>> Uglavnom, ovo je bio samo vrsta pokazati
neke od stvari koje bi mogao graditi s web Audio API.
To je stvarno moćan, to je stvarno brzo, a možete napraviti puno dobrih stvari
s tim.
Pa opet, sva pitanja koja imate, e myself-- Hugh-- ili Sam,
i iskreno, Google ima tona dobrih izvora.
Bilo posljednjih pitanja?
Da.
>> PUBLIKA: Tako možete pristupiti ugrađeni mikrofon.
Što ako biste željeli koristite bolji mikrofon?
HUGH Zabriskie: Ako ste htjeli koristiti bolje mikrofon?
Pa opet, to je dio apstrakcija između Chrome
a ostatak računala.
Osim ako je dostupan putem API, kao i web-MIDI API,
vjerojatno mogao naći neki hack, ali općenito ne kao izvedivo.
>> SAM GREEN: Možete also-- sve Chrome zna
je ono što vaš zadani mikrofon je, i to da pristupa.
Dakle, ako ste imali mikrofon ste mogli postaviti kao zadani računala mikrofon,
možete pristupiti na taj način i to će vjerojatno raditi.
HUGH Zabriskie: To je dobra stvar.
Nikad nisam pokušao, ali možda ćete biti u mogućnosti da vrsta
of-- ako preusmjeriti ulazni zvučnik, možda ćete biti u mogućnosti to učiniti, da.
>> Bilo posljednjih pitanja?
Cool.
Pa hvala vam dečki toliko za gledanje.
Ja sam Hugh.
SAM GREEN: Ja sam Sam.
HUGH Zabriskie: A ovo je CS50.