>> SAM GREEN: Živjo, vsi.
Dobrodošli v našem seminarju.
Moje ime je Sam.
HUGH Zabriskie: Jaz sem Hugh.
SAM GREEN: In bomo danes govorili o JavaScript in Web Audio API.
Samo začeti, to je prikaz naše agende za seminar.
Bomo najprej govorili o zakaj bi morali biti zainteresirani za splet
Audio API, zakaj je JavaScript jezik, ki ga potrebujejo za to,
in potem govori o JavaScriptu tako essentials-- podobno,
sprehod skozi nekatere osnove jezika,
in potem govoriti o audio API na visoki ravni.
Nato se bo Hugh govoriti o nekaterih o fazah avdio produkcije
in nato demo to super sekvencer Projekt je zgradil in vam prikazal kodo.
In potem bomo imeli časa za Vprašanja na koncu za ljudi
ki so tukaj živeli.
>> HUGH Zabriskie: Cool.
>> SAM GREEN: Cool.
>> HUGH Zabriskie: Cool.
Bom nazaj gor.
>> SAM GREEN: Torej, prvi stvari prvi.
Torej, eden od velikih stvari o Web Audio API
je, da ni nobenega set up potrebna.
Na voljo je vgrajen v večina sodobnih brskalnikov,
vključno Chrome, EDGE, v celoti kup others-- vseh tistih
da velike porcije ljudje uporabljajo danes.
Tako da ni ustanovljen, poleg ravno
spletni strežnik gre za da bi začeli delati
na projektu, kar je super.
>> Priporočamo precej močno, da se boste
uporabo Chrome za Izdelava spletnih JavaScript,
samo zato, ker njeno razvijalca orodja so res močna.
Kot primer, kaj mislimo z besedami odpirajo vaš JavaScript
console-- če greš v Chrome in pogledaš na katero koli spletno stran,
in ste levi klik Preglej element, in nato
greš v to malo drop-down tukaj in kliknete na konzolo,
boste videli, kaj odpira izgleda Veliko kot ukazno vrstico, ki vas
lahko vidite na vašem Mac ali na ID.
In ravno tako kot, da smo lahko tip ukaze, kot Bistra,
in drugi ukazi, kot je ta.
Mi lahko ustvarite spremenljivke, kot bomo videli kasneje v JavaScript.
In tako vse, kar lahko storimo v JavaScript lahko naredimo s konzolo,
in to je super priročen način, da začnite igrati okrog z API
in dobili udobno z JavaScript pravico off kij.
Ni potrebno set up, ki je res lepo.
Cool.
Awesome.
>> Torej, samo še ena stvar dodati.
Če imate kakršne koli questions-- obstajajo mnogi med vami, ki ne živi tukaj,
vas prosimo, da us-- te email so naši e-poštni naslovi.
Če imate vprašanja nočete, da nas vprašati,
kot so, oh imam napako v moji kodi, ali kaj
da je malo bolj specifičen, Mogoče ga najprej vprašaš.
Obstaja veliko veliko virov o Web Audio API tam.
To je res dobro dokumentirani in to je pa
s tono ljudi v uporablja industrija, in ljudje, ki so pravkar
gradnjo zabavne stvari za sebe.
Torej ne bi smelo biti veliko virov tam.
Awesome.
>> Cool, zakaj Web Audio API?
Ta diagram je malo o evoluciji poti
Zvok na spletu, je zrasel v daljšem časovnem obdobju.
Bgsound je kot prvotni HTML tag da Internet Explorer uporablja za podporo.
To je dovoljeno samo za precej osnovne zvoke, funkcionalnost ni bila zelo močna,
in vam ne bi mogel storiti zapletena zaporedja,
ali nadzor, ko zvok začel in se ustavil zelo robustno.
Torej, to ni bil posebno dobro razvita.
Nato pa po tem, Flash prišel along-- ki
Prepričan sem, da so fantje vsi poznajo z Flash-- morda ne kako deluje,
vendar ste zagotovo videli.
Moraš posodobite svoj Flash Plug-in, vse te vrste stvari,
in da je zagotovo razširil nabor funkcionalnosti, ki so bile na voljo.
Toda zaradi česar uporabnik namesti plug-in je vsekakor
pomanjkljivost, da vključno s Flash v svoji vlogi, kajne?
Ker potem ste odvisni od Uporabnik dogaja in iskanje Ta plug-in,
in se verjetno obrnil off s tem dodatnim korakom
so morali uporabiti svoj app.
In potem lahko obstaja posodobitev da bom prekinil vaše celotno aplikacijo,
in se konča pa nočna mora za razvijalce, preveč.
Tako da je barikada.
>> In potem, ko da je prišla skupaj, HTML audio tag, ki
je funkcija bolj moderno HTML-- ki vsekakor dovoljena za veliko več stvari,
ampak tudi stvari, ki jih lahko storite tam je bilo malce omejena samo
kot posledica stvari da HTML je sposoben.
Torej, ko je JavaScript API, Web Audio API,
postal standardni vaditi na različnih brskalnikih,
da je res razširila nabor priložnosti za razvijalce
da bo res dobil v stavbi kul stvari za splet.
Dolgo časa je imel bili res robustna orodja
za avtohtone avdio aplikacije, like-- vsakdo ve, GarageBand,
in potem seveda obstaja več profesionalni avdio mešalne aplikacije,
in da je vrsta stvari.
Vendar ni bilo res dober Cloud-- ne
Cloud, ja, mislim, Cloud-- spletna platforma
ki bi omogočilo razvijalcem gradnjo aplikacij za ljudi
narediti audio mešanje.
In ko vam bo pokazal kasneje, Web Audio API
omogoča res močna stvari, da se zgodi zelo preprosto,
kar je precej kul.
Tako, da je navodila o tem, zakaj vas bi morali gledati preostanek seminarja,
v bistvu.
>> In zdaj, bom govoril o nekateri JavaScript-- samo osnovni elementi
jezika, tako da smo lahko na isti strani
Ko govorimo o API malo kasneje.
Cool.
>> Torej, to je povzetek.
Pozabila sem, da je tukaj.
Ja.
>> HUGH Zabriskie: Še dva diapozitive tukaj.
>> SAM GREEN: To je povzetek nekaterih omejitev
drugih zavezujočih, starih metod.
In potem sedaj, imamo te stvari.
Cool.
Awesome.
>> Torej, JavaScript essentials.
Prvi stvari prvi, tam je precej pomembna razlika
v JavaScript versus je z jezik kot C, v načinu
da so spremenljivke ustvarili.
Torej, v C, smo navajeni, da da tip naše spremenljivke, kajne?
In ne mislim vrsto podobnega jih vnesete, mislim tip
kot jim dodelite type-- pomen podobno, int, plovec, char.
V C, smo bili res uporabljena za ob ustvariti spremenljivko
nato pa se držijo tega tipa za ves čas, da bomo uporabili to spremenljivko.
In da ni nujno slabše, ampak to je verjetno težje uporabiti.
Ena od kul funkcije o je JavaScript
da so spremenljivke, kar se imenuje "dinamično vnesli", ki
pomeni, da sem lahko ustvarite spremenljivka s to sintakso,
varX enaka 5, npr.
Da prvotno ustvari celo variable--
desno pod hood somewhere-- vendar sem
morejo spremeniti te spremenljivke sklicevati na vrvico
brez da bi počel kaj takega ustvariti novo spremenljivko.
Mi ni treba skrbeti o vrsti spreminja.
JavaScript ve, da tip je spremenilo in da se zgodi dinamično.
>> Torej, obstajajo prednosti in slabosti za da,
kot kdorkoli, ki je delal v JavaScript za nekaj časa morda poznate.
So časi, ko boste morda po nesreči
spremenite vrsto spremenljivke in ne obvladam tipa spreminjanje,
in potem vaš JavaScript lahko crash-- ali izjema
se vrgli, ker boš imel Napačna vrsta, ko ste pričakovali eno vrsto.
Cool.
>> Torej, scoping-- ki je všeč, če smo spomnite prvih tednih v teku,
nanaša na kako vidno spremenljivko je in v kakšnem območju kode.
Vse to je zelo podoben na način, da izgleda v C.
Torej so spremenljivke scoped splošno v zavitih oklepajih znotraj funkcije,
in potem so tudi globalno scoped spremenljivke, ki
are-- če pišete spremenljivko izven funkcije
da bo viden v celotnem besedilu.
>> Ena razlika med JavaScript in C zlasti
je, da če bo razglasila globalno spremenljivka kjerkoli v tekstovno datoteko
je vidna v vsakem funkciji v tem besedilno datoteko.
To je res, kajne?
>> HUGH Zabriskie: Yep.
>> SAM GREEN: Tako da je tudi malo bitno funky v primerjavi s C,
kjer smo vedno imeli, da so naši spremenljivi opredelitve zgoraj navedenih krajih
so bili uporabljeni.
To ni pravilo, da se izvrši več, tako, malo drugačen.
In spet samo še poudaril, globalni primerjavi lokalni variables--
zelo podobna C Lahko bi imeli dve spremenljivki z enakim imenom,
in imajo eno od njihovih imen se senco lokalni spremenljivke, če eden od njiju
je globalna.
Torej, podobne vrste težave, ki jih nekateri od vas
morda naletite na nekaterih vašega problema postavlja doslej.
Kul, tako da je spremenljivk.
>> Nadzor pretoka, kar pomeni, kot so, če-else-- logično stuff-- in zanke.
Torej, da začnete z, to je tisto, če-ostalo Izjave izgledal v JavaScript.
Umestitev različnih stvari na progah ni pomembna.
To je le ena od konvencij Za pot smo strukturo kode.
Tako kot v C, imamo "če", izjavo oklepaj.
To ni tisto, kar sem hotel storiti.
Spet sem to storil.
>> HUGH Zabriskie: Poskus, da zaprete?
SAM GREEN: Ne, jaz sem samo poskušam za povečavo.
Ni važno.
>> Torej, imamo "če" izjavo in imamo stanje znotraj njega
ki ocenjuje, da resnična ali neresnična, in da ugotovi, ali ne
smo vstopili v ta blok kode.
In prav tako, imamo drugega, če je, in drugega, tako kot smo navajeni v C.
>> Prav tako bi morali biti zelo udobna pravico off kij z zankami,
ker so tudi pogled zelo podobna C izgleda.
Vendar pa boste spet opazili, da smo imajo namesto int initializations,
imamo var initializations.
In mislim, da imate biti previdni, da
prepričani, da ne boste spremenili vrednost I, od notr v niz,
na primer, ker to se dogaja, da povzroči čudno obnašanje morda ne
pričakujejo.
Ampak to je treba videti precej znana, kot tudi.
>> Torej, to je, če se stvari začnejo dobili malo nor v JavaScript
za nekoga, ki se bo od A ozadje C. Obstajajo funkcije
v JavaScript, in tam je en način razglasiti za funkcijo, ki izgleda
nekako podobno kot C, in potem je tukaj še eden, ki
izgleda nekako drugačna.
>> Prva različica, ki lahko vidimo tukaj,
je nekako C-podobno, kadar pravimo, da je to funkcijo,
izročiti to ime, daj število argumentov,
in nato vsebina funkcije Vstopimo temi zavitimi oklepaji.
Bomo videli zgled Argumenti v samo sekundo.
>> Ker je v naslednji vrstici, vidimo, oh, tukaj je spremenljivka imenuje "myFunction"
in smo ga enako za to generična thing-- function-- da
ne zdi, da imajo vse, kar se dogaja.
Razlog, da je drugačen kot je C, ki JavaScript
je tisto, kar se imenuje funkcionalen jezik ali ima funkcionalne elemente, kar pomeni,
da so funkcije dejansko vrednote.
In to pomeni, da bomo lahko nastavite spremenljivka za enako funkcijo
in nato premakniti to funkcijo okoli, ga prenese kot argument,
storiti vse vrste stvari kot da je s funkcije.
>> Ena druga stvar, da note-- Funkcije so napisani
z določenim številom argumentov.
Bomo videli primer funkcije z argumentom o naslednji diapozitiv.
Ampak JavaScript ne bo kričati na vas, če boste poskušali
Za uporabo funkcije z napačno število argumentov.
To bom po svojih najboljših močeh, da bi storiti, kar pomeni, da če se boste peljali,
pokličete funkcijo, ki pričakuje trditev brez argumentov, vse, kar
se bo zgodilo, se bomo po najboljših močeh poskusiti in izvršiti to kodo,
in če na koncu vodi v izjemo ali napake,
da bom vrgel to izjemo in samo vztrajati going--, ki je le eden od načinov,
da JavaScript deluje.
Ja.
>> OBČINSTVO: Kaj se zgodi, če tam je preveč argumentov?
SAM GREEN: Torej Vprašanje je, kaj se zgodi
Če obstaja preveč argumentov?
In odgovor je, da JavaScript bo samo
prezreti tiste, ki so potem tistih, ki ga pričakuje.
To bomo poskušali izvesti funkcijo klic, kot če bi bila le prva dva.
Prav?
>> HUGH Zabriskie: To je res, ja.
Podobno, če obstaja premalo argumentov,
je le nekako daje null za vse argumentov, da nima vrednosti
za.
>> SAM GREEN: kar lahko dejansko prav, če vas
želite napisati funkcijo, ki traja spremenljive argumente številko.
Lahko nastavite privzete vrednosti v opredelitev funkcije,
in lahko prezreti dejstva, da vložek ni tam.
Torej, želim govoriti malo Več o tem zadnjem bullet
Točka, ki je funkcije vrednosti.
To je primer, da je malo um-piha
Če ste pravkar prebrali, in ne mislim o tem, kaj se dogaja za sekundo.
Torej, kaj je pogled le na Prva vrstica tukaj.
Imamo to spremenljivo, F1, da smo rekli, je funkcija, ki počne to stvar.
In vsebino funkcije so console.log ("zdravo").
Si lahko zamislite console.log kot JavaScript ekvivalent printf.
Torej, kaj se bo zgodilo, je, če smo zaženete to kodo v naš brskalnik,
to bo izpisal niz.
Jaz lahko dokaže, da.
OBČINSTVO: Z dnevnik, čeprav, ne da pomeni, da je se nekje zapiše?
SAM GREEN: Ja.
Torej, ti bom pokazal, kaj se bo zgodilo.
Torej, vprašanje je, kaj log pomeni?
>> HUGH Zabriskie: Torej console.log je kot printf za C.
SAM GREEN: Torej console.log je kot printf,
tako da, če imam to console.log ("zdravo"), in pravim, da je niz "zdravo"
dobi natisne na konzolo.
To je konzola.
To je tako kot printf, kjer se natisne na standardni ven.
In bomo videli v minuto, ampak to je dejansko
sklicujoč se na konzoli objekta, in kliče metodo o tem predmetu.
To bo bolj smiselno na minuto, ko smo
dobili govoriš predmeti v JavaScript,
vendar sem mislil, da bi samo omenil, da.
HUGH Zabriskie: Smo uporablja v C, right--
smo ponavadi napisati velik program, V glavnem, da storiti ničesar.
Toda kaj je kul v JavaScript je vi imajo tovrstne tolmača, ki
poteka v realnem času, tako da traja le po vrsticah,
lahko samo razlaga, da na kraju samem.
In to beleži Stvari, ki jih izvajajo pred,
zato je zelo uporabno orodje za uporabite console.log ali konzolo,
na splošno, za samo igranje okrog z JavaScript.
>> SAM GREEN: Torej gredo nazaj na to example-- drugo vrstico kode
tukaj je precej um-boggling v moji glavi.
Prvič, ko sem to prebral, je bilo všeč, kaj se dogaja?
Torej, kaj se dogaja, je to Izjava funkcija pravi,
Imam funkcijo imenovano f2 da je pričakoval en argument, f,
nato pa poziva, da Funkcija, f, ki
je bil sprejet na to kot argument brez sama argumentov.
Torej, da bi bila nejasna.
Če bomo to razumeli kot f2 traja f1 kot argument, nato pa notranjost f2,
f dobi called-- kar pomeni, da to vrstico kode,
Po teh dveh vrstic Koda, rezultati v "zdravo"
se natisne na konzolo.
>> Dejstvo, da lahko prenese Funkcije okoli kot vrednosti
konča pa eden izmed najbolj zmogljive funkcije JavaScript
kot programskega jezika.
Zunaj vse super stvari, ki jih lahko storite,
Samo kot pokazatelj jezik glede načina
da naredi stvari enostavno programiranje in omogoča
za stvari, ki niso posebej primerna za splet,
funkcijski programski in funkcionalni programski vidiki JavaScript
je eden izmed najbolj močnih konceptov, ki
obstaja v JavaScript--, če mene vprašaš.
Cool.
>> Torej, naslednja stvar.
Poleg tega, da funkcionalna obstajajo tudi elementi JavaScript
ki so predmet usmerjen, ki je ena izmed zelo
priljubljena buzz besede v računalništvu.
Objektno programiranje je zelo priljubljena stvar.
JavaScript je različica, da kjer verjamem, vsaka vrednost je tudi
objekt, kar pomeni, da je vsak predmet Zavitki skupaj nekaj več vrednosti.
Torej, za vrednote, ki so preproste, kot je celo število, kot varX enaka 5,
da je cilj le ovije to eno vrednost.
>> Vendar pa smo lahko tudi zamisliti situacijo where-- lahko razmišljamo o razmerah v C
kjer smo želeli storiti nekaj z konstruktov,
na primer, da se ovije več Vrednosti skupaj in naredi
res enostavno prenesti stvari okoli.
To je, ko je objekt v JavaScriptu.
>> Pomembno je, da se spomnimo ko rečem, da predmeti zavit
nekatere število vrednosti skupaj da so tudi funkcije
vrednosti, kar pomeni, da funkcije lahko tudi notranjost JavaScript objekta.
In razlog, da je pomembno je, da je, medtem ko smo pogosto
pomislite kliče metodo na objektu, ki je
o ljudski izraz iz drugega priljubljena objektno usmerjenih jezikov,
eden od razlik v tem, da vse, kar je metoda v JavaScript
je vrednost shranjena v notranjosti objekta ki opravlja neko action-- možnosti
uporabo drugih vrednot, ki so v notranjosti navedenega objekta, vendar ni nujno.
Torej si lahko predstavljate situacijo, sem Verjetno v malo nor način,
kje ste poklicali metodo enega ugovarjajo na drug predmet, na primer.
Torej, to je malo funky na ta način.
>> In lahko spremenite tudi metode ki so povezane s predmetom
z dodeljevanjem ta metoda A Nova funkcija, ki je prav
precej razlikuje od drugih objektno usmerjenih jezikov, v katerih
enkrat izjavljamo predmeta in jo sprožajo,
ne moremo spremeniti metode, ki so povezana s tem predmetom več.
Tako da je precej drugačna.
Cool.
>> Torej, tukaj je primer, prvič, predmeta v akciji.
To je tisto, kar se imenuje generično predmet, ki
pomeni, da nima kateremkoli Zlasti ime, nima razred,
to je samo nekaj vrstic vrednot.
In način, kako je videti je, da smo imeli ta zunanji par zavitih oklepajih tukaj
ki kažejo, da je JavaScript in pravijo, to je predmet.
Vrednosti znotraj njega sta vsak vrednosti znotraj
objekta, ki naj bi zaviti skupaj.
In znotraj tega predmeta, potem smo imeli parov ključev vrednostjo,
kjer je ključni sklicuje na ime vrednosti znotraj objekta,
in drugi side-- nasproti here-- na debelem črevesu
je dejanska vrednost da je treba shraniti.
>> Torej vidite tukaj, da imamo Ključ imenuje fn z vrednostjo Sam,
sledi vejica, rekoč na naslednji vstop.
Potem ključni imenuje ln, z vrednostjo zelena,
sledi vejica, sledi "print"
ki se dogaja, da imajo vrednost funkcije da se bo za to vrstico kode.
Oglejmo korak nazaj in razpakirati, kaj se dogaja tukaj.
Torej, to je malce zapleteno, in smo videli nekaj novega
prvič.
Za "to" ključna beseda je nova stvar smo videli tu, in kaj to počne
je, da se nanaša na tok ugovarja v obsegu, kajne?
Torej, ko smo rekli, to opozarja vso pot nazaj
s tem celotno object-- ko delamo this.fn,
bomo iti vso pot nazaj za ta objekt, pojdite na vrednosti fn
in dobili Sam, ga potegnite vso pot nazaj, ga držijo tukaj, in potem naprej.
>> OBČINSTVO: Torej s pridobivanjem, je da narediti zaradi parametra
opredelitev?
SAM GREEN: Tako je bilo vprašanje, ali je Preiskovalna narejeno zaradi parametra
opredelitev?
Ja, absolutno.
Kaj se bo zgodilo, tukaj je, to pika pravi za JavaScript,
OK, sem že nekaj vrednosti iz tega predmeta od sebe.
In potem bom pa poglej za vpis imenuje fn, in če ga najde,
da bomo vrnili, da value-- tako, da je sam.
Ampak lahko sem tudi jaz tipkal nekaj, kar ni bilo definirano tukaj,
in potem bi šele vrnitev undefined-- ki
je stvar, ki se lahko JavaScript storiti, kar lahko koristi,
ampak to je also-- če bi slovnične napake, to lahko povzroči čudne napake.
Tako da bom poskusil najti karkoli je povedal, da bi našli
in da ne bo pritožujejo, če ga ne najdejo.
To bom samo rekel, nisem ga našli, in potem naprej.
Torej bi bilo undefined, plus prazno, plus priimek.
Ja.
In potem lahko vidimo, da če bomo bi potem lahko šel dol in access--
in pravimo tf.print () z oklepaji.
To se dogaja, da pokličete to print funkcija brez argumentov, kajne?
Ampak, če smo pravkar rekel tf.print () podpičje, brez oklepajev,
vse, kar bi storil je vleči ven funkcijo od vrednosti,
vendar dejansko ni poklical.
Cool.
HUGH Zabriskie: Če naredimo objekt?
SAM GREEN: Seveda, kaj je to.
Tako da sem lahko to premikanje Primer na konzolo.
Lahko si predstavljamo, da imam predmet.
Torej, to je preprost objekt.
To je objekt, ki vsebuje dve Vrednosti z dvema ključema, dva ključna vrednota
parov.
Tako sem lahko nato dostopate vrednost, shranjeno znotraj tega objekta, ki ga delaš x.x1,
na primer, in dobim 1 nazaj.
Prav tako x.x2, dobil to vrednost nazaj.
>> In zdaj res kul stvar je, da sem lahko dejansko dodate nekaj tega objekta
po tem, ko sem ga ustvaril.
Torej si lahko predstavljate, Dovolite reči imam funkcijo.
>> HUGH Zabriskie: You storiti Shift-Enter.
>> SAM GREEN: Oh, to je nadležno.
Kaj ga ni všeč?
Oh.
Gremo.
Cool.
>> Torej sem pravkar ustvaril ta funkcija, f, ki
se dogaja, da gredo na tok objekt in tiskanje this.x1.
Torej, če sem poklical f jih sama po sebi, nič ne dogaja
da se zgodi, prav, ker ni x1 polje v objektu je sklicujoč se na.
Ampak, če rečem, x.f = f, potem pa sem pokličite x.f (), bom dobil nazaj 1.
Ta funkcija f je zdaj povezana s predmetom x,
ki ima ključno imenuje x1 povezana z vrednostjo 1,
tako da, ko pravimo this.x1, da je boš našel kaj je iskal
in biti sposoben natisniti vrednost ven.
Torej, to je samo en primer od vrste norih stvari
lahko naredite s predmeti v JavaScriptu.
>> Tako da verzija je bila generično različico, pomen
da smo ustvarili objekt z uporabo tega oklepaju notation-- pas za zapis,
rather-- in da je priročno, če hočemo samo
en primerek določenega predmeta, vendar Kaj pa, če želimo imeti več kot eno
iste vrste?
In odgovor na to Vprašanje je, ali obstajajo stvari
imenuje razrede v JavaScriptu, kot dobro.
Mi lahko ustvarite funkcijo, ki naredi neko inicializacijo
za tujek, in bi lahko rekli, kot so,
moj class-- tako ime od object-- večkratno uporabo
enako funkcijo, ki jo vzpostavlja.
Torej, kaj bi to bilo enakovredno da ustvarja objekt, ki
bi samo rad, kodrasti naramnicami, str, debelega črevesa,
To je niz, podpičje, kodrasti brace.
To bi bilo generično Objekt smo inicializacijo
z eno razliko, da so na Naslednje vrstice smo ustvarili prototip, ki
pomeni, da je privzeti ključ, ki bomo dodali na naš objekt, ki
ima vrednost naštete tukaj.
Kar pomeni, da, ko sem ustvariti novo primerek tega MyClass objekta,
to se dogaja, da so vnaprej zgrajena znotraj je vrednost, imenovano str in druga vrednost
imenovano myPrint, ki je bo funkcija.
Awesome.
>> Great.
Torej je zadnja stvar, da povedati o JavaScriptu
je, da je res koristno za kaj Imenujejo se asinhrone operacije.
Asinhroni način je, da smo more čakati na neki operaciji
dokončati preden gremo , a korak naprej, medtem ko čakamo
in nato nekaj zgodilo kasneje.
In kaj mislim s tem je, da moremo predstavljati situacijo, v kateri
pošljete zahtevek nekateri spletni strežnik nekje,
in to se dogaja, da vam pošljemo nazaj nekateri velik kos podatkov, kajne?
In si lahko počaka v Medtem da se to zgodi,
in nič ne bi bilo dogaja v tistem času.
Ampak to ni velik design, kajne?
Vi ne želite, da je spletna stran, da zamrzne.
Kaj pa, če uporabnik želi kliknite na spustnem meniju?
To ni veliko načrtovanja vzorec.
Namesto, v bistvu kaj JavaScript ne se pravi,
OK, naredi to operacijo asinhrono.
Torej podobno, čakati v ozadju, in potem, ko se operacija opravljeno,
pokličite povratni klic function-- poklicati neko funkcijo,
se nekateri action-- signalizirati, da je Delovanje smo čakali do konca
konec je.
In razlog, da je super močna je, lahko storimo nekaj, mimo argument,
nekaj narediti, in potem čakati za nekaj, kar se bo zgodilo.
Potem, ko te nekaj dokonča, lahko rečemo povratni klic.
To je zelo priročen, saj omogoča storimo stvari z Web Audio API,
na primer, kot obremenitvijo audio datotek iz oddaljenega strežnika
ne da bi morali počakati na Celotna avdio datoteke, ki se naložijo,
kar bi bilo zares slabo uporabniško izkušnjo.
Cool.
>> Zadnji par je seznanjen o debugging, saj je to
je stvar, ki jo boš moral narediti kot del svojega projekta, zagotovljena.
Omenil sem konzolo JavaScript.
To je super uporabna funkcija vseh modernih brskalnikih,
In res vas spodbujajo, da se udobno uporabo konzolo,
če želite, da bi dobili dober JavaScript.
To je super priročno za debugging, vendar je tudi
res uporabno za kipec kako uporabljati API.
To omogoča zelo enostavno eksperimentiranje
ne da vnesti nekatere kodo, nato pa ga prevesti.
Vam ni treba storiti vse te korake.
Lahko samo napišete del kode v liniji,
in nato dobili takojšnjo povratno informacijo o ali je ta vrstica kode ali ne
worked-- zelo priročen.
>> In tudi, samo ena tehnična note-- JavaScript konzola je primer
iz REPL--, tako da je R-E-P-L, repl, ki stoji za branje, oceniti,
print zanka.
Ti boš, da tip nekaj stvari v, bom prebral, kar ste vnesli,
da bomo ovrednotiti, in ga bomo natisniti izhod, potem pa bom spet začel.
To vam omogoča, da hitro iti v krogi ponavljanjem, ki je res kul.
>> Mislim, da resnično Last note-- to je dejansko zadnje note, ja.
Kako dejansko uporabljajo JavaScript?
Torej, najprej, lahko uvažamo je s pomočjo skript oznako
na vrhu ali na dnu HTML file-- kjerkoli znotraj HTML datoteke,
res.
In v scenarij tag, obstajajo dva sub-načini uvoz JavaScript.
Prvi je s imajo ločena datoteka JavaScript
da uvažamo v celoti, ali jih ima območje kode podobnega pisavi
za začetek, in nato poševnica nazaj skript konča.
In potem smo samo napisati JavaScript notranjosti datoteko HTML.
To sta dva načina.
Ne morete ga imajo znotraj HTML.
OBČINSTVO: Je eden boljši od drugih?
SAM GREEN: Vprašanje je bilo, je eden boljši od drugega.
Tako, da, kot kodiranje slog praksi in tudi to je kot prakse oblikovanja.
Obstajata dva razloga Zato bi bilo bolje.
Prvi je, da naredi svojo kodo Veliko bolj berljiva, če vse vaše HTML
je na enem mestu, vse vaše CSS je v drugo mesto, vse vaše JavaScript
je na tretjem mestu.
Prav?
Mislim, da bi morali že govorili o tem v sections-- kot CSS-- kaj
da is-- in gre pogosto v drugo datoteko.
Torej, podobno kot vrsta koncepta tukaj.
Lahko si predstavljate, da JavaScript bi se lahko ponovno uporabi na več kot eno
HTML stran, ali morda Zelo veliko HTML strani,
in ima ta JavaScript refactored v eno
datoteke, ki jih lahko uvozite v več kot enem mestu
omogoča oznaka biti Tako več vzdrževati.
Lahko si predstavljate, izdelavo ene spremenite v JavaScriptu
in da bi to spremenili v 100 različnih datotek.
In namesto da bi lahko samo to spremeniti v enem, ki je veliko bolj močna.
Sem odgovor na vaše vprašanje?
Cool.
>> Prav tako lahko vnesete v konzolo, kot smo že omenili.
In še enkrat, še zadnjič note-- Web Audio je zgrajena v,
vam ni treba naložiti ničesar.
Cool.
Ali obstajajo vprašanja, ali imate dodatna vprašanja o JavaScriptu,
preden gremo naprej?
>> OBČINSTVO: [neslišno]
SAM GREEN: V redu, v redu.
Torej sedaj se dogaja, da govorimo o API.
>> HUGH Zabriskie: Cool.
Hvala, Sam.
>> SAM GREEN: Seveda.
HUGH Zabriskie: Awesome, tako bomo korak naprej od JavaScript.
Tako smo se pogovarjali o nekaterih Bistvo JavaScript,
in to so spremenljivke, funkcije, predmeti, deluje kot spremenljivke,
asinhroni nakladanje.
To so vse stvari, ki jih boste glej, kot ga uporabljate po spletu Audio.
Torej smo le, da bo govoril o najprej na visoki ravni.
>> To je API, tako da je nekaj ki je vgrajen, kot je dejal Sam,
desno v JavaScriptu ki jih uporabljate v konzoli.
In to je pravzaprav enako kot C ++ koda da je res vgrajen v Chrome
in Firefox, in vseh teh brskalnikov.
Torej glavno idejo s spleta Audio je, da imate
ta vrsta cevovoda avdio, kajne?
Torej vaše avdio podatki pride v neki obliki.
>> Obstaja vrsta tri glavne forms-- imate oscilator, ki
ustvarja sinusni kosinus val, bomo videli, kako to deluje.
Drug zelo pogost, Seveda je MP3.
Mogoče začnete z pesem, in potem si
želeli narediti nekaj filtriranje na to in izhod
that--, da bi lahko bili možni vir.
In potem je res kul eden je mikrofon.
Torej, lahko uporabite nekaj zelo osnovni klici v JavaScriptu
da bi dobili dostop do mikrofon, in tako, če
želel, da bi aplikacijo kot detektor smole,
na primer, da je v tvoj glas in številke od
pitch-- zelo enostaven način za to.
Lahko samo nekako prebral v, ugotoviti pogostost,
in nato izhodna številka.
Tako da bomo videli, kako to deluje, kot dobro.
>> Destinacija je v bistvu kjer je avdio podatki izhod.
Tako na splošno, da je kot Vaš prenosni zvočniki.
Druge možnosti so kot ScriptProcessorNode--
bomo prišli do vozlišč v Sistemu second-- ampak v bistvu,
bodisi ste dajanje zvok ven prek računalnika prek zvočnikov,
ali ste nekako evidentiranje, zato ste ga shranite kot audio podatkov.
Mogoče, če nekdo ustvari glasba v vašem app in potem
želite posneti, da je in morda všeč izvoziti v SoundCloud, za example--
da bi bil eden od načinov, da to storim.
Vse zabavno stvari, ki bomo govorili o tem,
zgodi med tema dvema točkama, kjer smo naložili v glasbi
in nato oddajati.
>> Tako da bom govoril o petih faze audio proizvodnje v sekundi.
Imamo to stvar, imenovano AudioContext, ki
je to malo ovoj vidimo tukaj.
V bistvu, kaj AudioContext is-- če smo pojdi na JavaScript konzolo prav zdaj,
bomo lahko ustvarili eno zdaj.
Samo primer repl, kajne?
Mi berete, ocenjevanje in tiska.
>> AudioContext je globalno stanje.
To je struct, je predmet tukaj, in ga ohranja informacije
o stvareh, ki se dogaja Na zaslonu povezane z zvokom.
En primer je sedanji čas.
To vam pove številko sekundah, zelo natančno,
ker na spletni strani naložen.
Torej je to res uporabno malo premoženja, ki ga lahko uporabite.
To je prebral only-- mislim, da dejansko lahko poskusite nastaviti vrednost.
To bom, da si jo nastavite, in potem, če ga natisnete
again-- to ni dejansko precej dela.
Torej so tam samo za branje lastnosti v JavaScript.
To je res uporabno, če ste nekako sinhronizacijo
veliko različnih informacij, ko ste
vrsta igranje različnih zvokov.
>> Še en zelo uporaben, je destinacija kontekst.
Definitivno, če ste zainteresirani, se poskuša to na svojo konzolo pravice
zdaj.
Torej je to AudioDestinationNode.
V bistvu, kaj to pove, je, če je toplota dogaja?
Torej obstajata dve realne možnosti tukaj.
Običajno je privzeta je le zvočnike,
tako AudioDestinationNode v bistvu samo pravi
obstaja nič izhodi za zvok prihaja, pošlje na zvočnik.
Torej na splošno, ne boste igrati s tem.
Če ste zainteresirani za dejansko uporabo ScriptProcessorNode za snemanje,
Vsekakor me je ustrelil email pozneje, ker je to
malo bolj zapletena.
Ampak na splošno, da si nekako prikazovanje zvok v neki obliki.
Tako kul, bomo skoči nazaj.
OBČINSTVO: Žal mi je.
HUGH Zabriskie: Ja.
OBČINSTVO: Vem, da si rekel, da govori da vas kasneje o snemanju.
Lahko vmesnik, ki s Pro Tools?
>> HUGH Zabriskie: S Pro Tools?
Pa poglejmo.
Jaz ne mislim tako.
Tako bo med stranko, ki je JavaScript
konzole, in vaša dejanska z računalnikom, je na splošno
nekaj, kar je nekako off omejitev, če vas
bo nekako z naravo the-- to je neke vrste oblikovanja stvar,
ampak ste poskušali obdržati brskalnik ločeno od uporabnikovega dejanskega računalniku.
Na splošno, je edina stvar, ki ste sposobni Dostop je mikrofon ali kamero.
Niste mogli, I Ne verjamem, uporabite Pro Tools.
Vendar, če ste ustvarili steza v Pro Tools,
izvažajo, da lahko naložite, da tukaj, jo filtriramo, na primer,
proces, in zapiše, da v Audio Destination-- ali no-- krogla
Procesor Node.
In potem od tam, bi si izvoz, da SoundCloud, vas
lahko ga pošljete v e-pošti, ali karkoli vam je všeč od tam.
>> Vendar pa obstaja vrsta rahlim pregrade med ustvarjanja glasbe na vašem računalniku
in ustvarjajo glasbo na spletu.
>> SAM GREEN: In to je ni značilno za to API.
To je varnostna funkcija Chrome in Mislim, da vsak drug sodoben brskalnik.
Brskalnik je samostojen.
Tako na primer spletna stran ne more uporabljajo JavaScript, da vklopite zvok
na podlagi vaših zvočnikov, na primer.
Ali je vaš računalnik ne more izklopiti.
In ni vmesne točke med tema dvema stvarema, desno,
tako ali imate popolna abstrakcija,
ali pa odpirajo varnostna pomanjkljivost najemnin
programer s slabimi nameni narediti karkoli hočejo s prenosnim računalnikom.
In to je, zakaj je Chrome je samostojen.
>> HUGH Zabriskie: Ja.
Ali to smiselno?
Kul, kul.
Sem bil le, da bo prikazana ena.
To je precej, kot kolikor boste dobili, v smislu
dostopanja uporabnikov računalnik.
Če imate tipkovnico USB priključen na električno omrežje, lahko uporabite nekaj, kar se imenuje Web
MIDI API, ki je ne bomo res govorimo o tukaj,
ampak to je še en API, ki je vgrajen v vsaj Chrome-- spet
To je razlog, zakaj imamo radi Chrome-- Mislim, Firefox ali Safari,
To je lahka stvar google-- različni brskalniki imajo
drugačna podpora za katere API-ji so izvajale.
Ampak, če boste želeli, da priključite tipkovnico in delo z te informacije,
nekako poslati tipkovnico podatki prenesejo v računalnik
in nato uporabite, da na spletu, ta API je, če bi se dela, da je.
>> Cool.
V REDU.
Torej, hitro se gibljejo na tukaj.
Kako nam gre na čas?
>> SPEAKER 1: O 15.
>> HUGH Zabriskie: 15 minut zapustil?
OK kul.
Torej bomo poviševanje tukaj.
>> Torej v bistvu, glavna točka razmišljam o tem kot cevovoda
je, da vsak korak v cevovodu je serija avdio vozlišč.
Naš vir, recimo, je oscilator.
Moramo ustvariti oscilator vozlišče.
In to je le nekako z malo function--
in oni so vsi temelji iz avdio konteksta tukaj.
>> OBČINSTVO: Ko je dejal, oscilator, ali to pomeni,
To je pravzaprav dobesedno gredo iz dva različna pola in nazaj?
>> HUGH Zabriskie: Ne, to je kot digitalni prikaz.
To je dejansko izvajal v C ++.
Jaz pravzaprav ne vem, očala o tem, kako je to dejansko izvajajo,
vse to pa deluje kot binarnih podatkov.
Pravzaprav, ja.
Da bi rekel, sem lahko pravzaprav, če vas zanima,
Jaz bi vam poslali nekaj več informacije o tem, kako valov
se hranijo z digitalno obliko.
OK kul.
>> Torej smo generiranje ton podobnega sine val ali kaj podobnega, da je mogoče
440 Hertz.
Ustvarjamo oscilator.
Če želimo, da nastavite glasnost, smo priključiti ničesar na GainNode,
kar lahko storimo z .creategain.
Ki določa glasnost.
Lahko prenese, da na kateri koli na drugi options-- dobro,
tako avdio buffer vir vozlišče, kjer boste morda
shranjevanje MP3, ki ste ga naložili v.
>> Biquad filter za filtriranje če hočeš, da sprejmejo vse osnove iz
za pesem, ali kaj podobnega.
Bog ne daj, da želite, da sprejmejo baza iz pesmi.
In AudioDestination vozlišče je, še enkrat, kot, kjer je naš zaključek.
Če ste kdaj zanima, vse različne možne opcije so,
pojdite na zavihek in pustite auto-popolna, pridi gor.
In če vam ustvarili, boste videli vse različne stvari, ki jih lahko ustvarite.
Lahko ustvarite dinamiko procesorji script,
Sploh ne vem, kaj to je za mešanje kanal združitev
in kanal drobilci, in vse to.
Cool.
>> Torej, to je samo Primer cevovoda.
Torej imamo tri vire, ki prihajajo v.
Mogoče so to oblike valov, Morda so to MP3.
Ena se dogaja prek filter, eden je
pridobivanje izkrivljena drugo ena je slikanje panorame levo in desno.
To lahko storite vse vrste stvari in vsi so se zmeša vsem skupaj,
in potem ven prihaja zvok na koncu, kot destinacijo.
To je primer, kaj več zapletena Web Audio koda izgleda.
Ste ustvarili vse te različni predmeti desno here--
Nisem prepričan o tem.
Ne, ne povečate.
V REDU.
>> SAM GREEN: Saj Control, Scroll-Up.
HUGH Zabriskie: Control Scroll--
SAM GREEN: Ne, ne.
Control--
>> HUGH Zabriskie: Oh, Control, Pomaknite?
Oh, gotcha.
Ja.
Wow, nope, nope.
V REDU.
Tega ne bom storil.
>> Torej, ja, v tem prvem oddelek tukaj, vidiš
smo ustvarili vse te različne vozlišča iz konteksta.
Mi smo jih samo piecing skupaj v drugem delu
s to funkcijo, imenovano Connect.
To je res ključna Funkcija Web Audio.
To samo pomeni, da ko ste storili kaj z zvokom v enem vozlišču,
jih prenesti na naslednje vozlišče.
Torej imamo vir, jo poveže z analizatorjem,
analizator nekaj počne z njo, gre za izkrivljanje, in tako naprej,
in v okolici na dnu tukaj.
Cool.
OK, tako da bomo še naprej premika naprej.
>> Spet pipeline--, ti so najpogostejši cevovodi,
zato govorimo o vseh teh stvareh popačenje, slikanje panorame, vse te stvari.
Če ste res zanima pri uporabi stvari Pro Tools,
tistih, ki vas verjetno zanima.
Če ne, pa si samo želite predvajati zvok,
ali pa si samo želim, da nastavite glasnost zvoka.
Tisti, sta dva najpogostejša vrsta cevovodov v avdio produkcijo.
>> Again, načine, ga lahko vzamete v kot oscillator-- Torej, kaj je
narediti demo tega tukaj.
Tako bomo ustvarili preprost audio kontekst tukaj,
in iz tega bomo ustvariti našo oscilator.
Torej, to je, še enkrat, mi smo samo dogaja, da pokličete Ustvari oscilator.
Bomo nastavite frekvenco na da, 440 Hertz, najljubša vsakogar.
Potem smo se povezati, da v okolici Point-- ki je zvočnik, tako
destinacija kontekst.
Končno smo pravkar rekel, da začnete nič sekund od zdaj, in ne bomo se sliši?
>> [RINGING]
>> HUGH Zabriskie: Tukaj gremo.
To je samo sinusni.
OK kul.
In potem bomo ustavili to.
>> OBČINSTVO: Kje si da povratne informacije prihajajo iz?
>> HUGH Zabriskie: Povratne informacije?
Oh, verjetno naši mikrofoni.
Torej, ja, to je, kako si to naredil.
In dejansko, če bi imel vodi to tekmovanje v teku, vam
lahko imajo frekvenco vrednost, saj je tekmovanje v teku,
tako da je zabavno igrati okoli.
Cool.
To je vedno lepo eno predstaviti.
>> SAM GREEN: ne Nismo misliti, da sva?
HUGH Zabriskie: Ja, to je grdo ena.
Torej, buffer loading-- bom kažeta Primer da na samem koncu.
To je nakladanje MP3.
In mikrofon, da uporabite samo funkcijo imenuje Navigator.getUserMedia ()
da zahteva dostop do uporabnikov mikrofon za te informacije.
>> Tukaj je filtriranje, bom samo premikajo od tega.
To je precej visoki ravni, ampak filtri samo vam omogočajo, da
>> [Piskajoči]
Filtriranje vam omogoča tudi ustvariti stvari, kot so roza
hrup, rjava hrup, beli šum.
Če želite ustvariti čisto hrup, ki nekateri ljudje radi za nered okrog s,
lahko uporabite spletno Audio filtriranje, da to storim.
>> Audio Panning-- tako predstavljate če pišete igro
in želite, da se zvok zvok, kot je to, ki prihajajo, kot so,
streljanje po zaslonu, boste Lahko uporabite slikanje panorame audio
ustvariti takšno stožca, ki like-- je precej MATHY,
ampak to je dejansko res kul, če si dobil to delo,
in tam je nekaj dobrega vaje na njem lahko vam poslali.
V bistvu, lahko vrste za ustvarjanje zvoka
nečesa dogaja jih v 3D način.
In če imate DJ interes, lahko začetek mešanje in prečkati bledenje pesmi.
>> To je samo nekaj zelo osnovna koda, v bistvu, kaj sem storil prej.
Ta določa prostornine oscilator, zato smo ustvarili našo oscilator
ki ustvarja valovno.
Mi ustvarjamo našo GainNode, Svoje frekvenco,
in nato povežite oscilator na GainNode, ki je potem v bistvu spreminja
koliko signala pustimo skozi.
Ampak res, to je digitalni stvar, tako da je bolj just-- ja.
To ni tisto, kar se dejansko dogaja, ampak to je tisto, kar se dogaja v resničnem življenju
z dobičkom.
>> OBČINSTVO: --quantization parametra volumna?
HUGH Zabriskie: Oprostite?
OBČINSTVO: ali je kvantizirane obseg parameter?
HUGH Zabriskie: Ja.
In to je ena stvar, ki sem res pomanjkljivo v moji vednosti,
kako dobiček deluje na digitalnem ravni.
Vem, da z dejanskim signale, to je v bistvu
nadzoruje, koliko ste ojačanje signala.
Torej, ja.
Jaz vam bomo poslali več informacij o da, ker sem radoveden dejansko
vedeti več o tem.
Ampak v bistvu parametri so, eden je fold--
glasnejši signal-- in nič ni signala, ali pa ne boste slišali nobenega zvoka.
Bomo preskočili demo časa za to, ker to je v bistvu tisto, kar sem storil prej.
In spet je Context.Destination je audio destinacija vozlišče.
Super, OK.
>> Torej bom to hitro dva demos.
Kako nam gre na čas?
>> SPEAKER 1: približno 10 minut.
>> HUGH Zabriskie: 10 minut?
Super!
Awesome.
>> Torej prva grem ne, to se imenuje My Favorite Song.
Torej, to je le malo HTML JavaScript.
Bomo imeli dva gumba na strani igrajo svojo najljubšo pesem
in ustaviti mojo najljubšo pesem.
Jaz bom to spremenila.
>> OBČINSTVO: Pokrijte mikrofon.
>> HUGH Zabriskie: Ja.
In sem naložen tukaj skripta, ki basically--
in to je res uporabno za polnjenje MP3,
tako da je to samo naredi nalagate datoteke MP3 način hitreje.
To je v bistvu samo ovoj.
Samo naredi postopek vložite v MP3 veliko hitreje,
drugače boste uporabljali zahtevo HTTP, nekako kot tisto, kar smo počeli
o trenutnem kosu, določenem s strežnikom.
To je res grda, si Ne želim, da to storite.
>> Torej ta tip, Boris MSP zagotovilo, napisal res koristno malo orodje, imenovano BufferLoader.
Vse, kar morate storiti, je preprosto to, da prenese kontekst, si ga list-- mimo
ali, ja, je seznam v JavaScript?
SAM GREEN: Matrika.
HUGH Zabriskie: Oh, to je matrika, da je prav.
To je niz poti različnim datotek.
In potem si to funkcijo prenese.
Gre za povratni smo govorili o z asinhronim nakladanja.
Ki se bo imenoval enkrat datotek naloženo.
In da je funkcija, ki se sproži ob datoteka je naložen je kot obodu
paleto naloženimi blažilcev.
Tako da se pojavi tukaj.
V bistvu, BufferList je bo ena value--
ali pa se dogaja, da se niz Dolžina on, ki je v njem v indeksu
nič celotno naloženo datoteko MP3.
Torej, kaj storim, ko sem končal nakladanje je, da sem preprosto
ustvariti vir blažilnika, ki je avdio buffer vir vozlišče.
Naslednji korak je, da sem naložiti v source.buffer kot polno obremenjenega pufra
Iz BufferList-- to je veliko buffers--
in potem se povežete ta zvok buffer na destinacijo.
Torej, kaj se dogaja, da storijo je samo preprosto rečeno MP3
naravnost do izhoda, in ga takoj začeti
ob dobili ta poziv.
>> Kul, tako da je videti to zgodilo v akciji.
Moj [neslišno] tukaj, pa poglejmo.
Tako da sem le, da bo začetek osnovno strežnik.
To je nekaj, kar kar morate storiti, če ste
vlaganje prošenj za nalaganje datotek.
Jaz bom za začetek osnovno strežnik.
To je v bistvu celoten PSET zdaj v eni vrstici,
ampak to je šele začenja strežnik na vratih 80/80.
Torej, gremo tukaj, smo gre za nalaganje 80/80,
smo šli do mojih najljubših pesmi.
Torej, če sem udaril "Play my najljubša pesem "prav zdaj,
to se dogaja, da naložite my najljubša pesem in igrajo it--
[MUSIC - The Eagles, "LIFE v hitro LANE "]
--which zgodi, da se "Življenje v Fast Lane ", ki ga The Eagles.
Zdaj, lahko sem udaril "Stop my najljubša pesem "in ga Replay.
>> [MUSIC - The Eagles, "LIFE v hitro LANE "]
>> In če sem šel čez potolažiti, ker Včasih sem globalno spremenljivko tukaj
slediti te vrednosti, je dejansko bo sedaj priznana v konzoli.
Torej je auto-ustvari za mene.
Torej, to je tisto, kar je igral prav zdaj, in sem lahko preprosto pokličete source.stop ()
na to.
No, veš kaj?
Samo, da so slišali vi to song-- boste morda prepoznali to pesem.
>> [MUSIC - RICK Astley, "NIKOLI boš dal YOU UP "]
[MUSIC - The Eagles, "LIFE v hitro LANE "]
Mi smo zdaj vsi Rickrolled.
OK, super, premika naprej.
Cool.
Torej je to v bistvu primer kako si lahko naložite MP3 file--
[MUSIC - The Eagles, "LIFE v hitro LANE "]
--and jo igrajo, in ustaviti in ga zaženite.
Lahko bi naredili veliko več [neslišno]
>> Zadnja bom storiti, je, Jaz ti bom pokazal [neslišno].
>> [Predvaja glasba]
>> To je podobno, ogg.wave.mp3.
Mislim, če se prav spomnim, Naletel sem na nekaj vprašanj, s .m4a,
vendar nisem prepričan o tem.
Mislim mp3.wave--
>> [MUSIC - RICK Astley, "NIKOLI boš dal YOU UP "]
>> OK super.
Ne bi smel reči.
Kakorkoli že, zdravo.
Torej imamo odprto.
Torej, zdaj vse kar sem naredil je, da sem v bistvu ustvaril osnovno sintakso za ustvarjanje glasbe.
Torej, če naredim nekaj podobnega, dodajte G4 1. 2, kaj to pomeni, je to,
dodate opombo klavir, G4, ki je četrta G
up na klavir od spodaj.
Torej, to je nekako MIDI govorijo, tako za tiste, ki so glasbo, ki temelji,
to je samo MIDI opombe.
>> OBČINSTVO: To je G na Bližnjem C, kajne?
>> HUGH Zabriskie: To je G nad Bližnjem C, da je prav.
>> OBČINSTVO: Nad Bližnji C.
>> HUGH Zabriskie: Ja.
Pravzaprav, ja.
Mislim, dejansko sem naredil je eden [neslišno]
tako da to lahko oktavo nad tem.
Torej, poglejmo.
Če sem udaril Play--
[Ponavljajočih se PIANO OPOMBA]
--we're dogaja, da slišim to.
Ideja je, da deluje tako kot bi v ukazni vrstici,
tako da, če bom šel gor in dol na moji tipkovnici, ki jih
Lahko se vrnete na prejšnji Ukazi, ki je zelo koristen.
In spodaj je moj seznam skladb, ki so vse deluje na zanko.
>> OBČINSTVO: Ti so ob predpostavki, da 88-ključ tipkovnico na to, kajne?
>> HUGH Zabriskie: Vprašanje je bilo, sem ob predpostavki 88-ključ tipkovnico,
in ja, jaz sem.
Kaj sem storil je, da sem v bistvu je 88 vzorcev
klavirja, enega za vsako noto.
In tako vsakič, ko Zaslišali seznanjen od zdaj naprej,
da je dejansko zanka, ki izgleda like-- to je pridobivanje igral na zanko,
tako da za vsako noto, ta teče.
Kaj se zgodi, je, da sem Ponovno ustvariti varovalo,
Sem ustvariti dobiček vozlišče za nastavitev glasnosti.
To samo res zapleten način rekel I
shranite buffer v source.buffer.
Dal sem, da dobiček, I ga priključite na dobiček,
Ostanek je povezan z izhod, potem pa sem jo igral.
Tako, da je vrsta postopka sprejemanja v viru pufra.
>> OBČINSTVO: Ali ste dejansko lahko da suh zvok in da je mokro [neslišno]?
>> HUGH Zabriskie: Lahko, ja.
Tam je re-glagol, tam je zamuda, popačenje.
Lahko v bistvu dal ničesar v med v tem sendviču of-- dobro,
Plinovod je bolje metafora, vendar pa lahko dodate karkoli v tem.
Cool.
>> Torej bom končal demo tu, da vam občutek
da samo odklon kolikokrat si lahko zaženete to funkcijo naenkrat.
Torej bom to odstraniti.
Bom ustvariti generator that-- v bistvu tisto does-- to je res
vrsta zapletenih syntax-- vendar je gre za ustvarjanje zapiskov na letenje,
in šele začeli igrati njih, saj jih ovrednoti.
[Interposing PIANO]
>> Tako smo lahko le, da malo glasbe tukaj.
[Interposing PIANO]
>> Torej, kaj je ta ukaz ne, na primer, je
je potrebno te tri zapiske za klavir, nato pa jih postavlja na B3.
Ta sintaksa bi lahko dal malo več smisla
za tiste, ki imajo glasba v ozadju tukaj.
>> Lahko dodam kick boben.
Lahko--
>> [Interposing INSTRUMENTS]
>> --just igral s tem.
>> Torej lahko make--
[Interposing INSTRUMENTS]
Da ena je malo bolj siten.
[Interposing INSTRUMENTS]
>> Tako da naključno dodaja suho činele na vsaki 16. note, s 16%
[Neslišno].
>> [Interposing INSTRUMENTS]
>> Ja, tako je način to works-- je vedno na 4: 4.
[Interposing INSTRUMENTS]
>> Ja, tako v štirih četrtletjih, in 16/8.
[Interposing INSTRUMENTS]
>> Torej v povprečju, boste dobili 60% ogledov 16. pojasnilih.
>> Kakorkoli že, to je bila le nekako pokazati off
nekatere stvari, ki jih lahko graditi z Web Audio API.
To je res močna, to je res hiter, in lahko naredite veliko kul stvari
z njo.
Torej še enkrat, vsa vprašanja, ki jih imajo, email myself-- Hugh-- ali Sam,
in pošteno, Google ima tono dobrih virov.
Vsa zadnja vprašanja?
Ja.
>> OBČINSTVO: Torej lahko dostopate vgrajeni mikrofon.
Kaj pa, če si želel uporabiti boljši mikrofon?
HUGH Zabriskie: Če boste želeli uporabiti boljši mikrofon?
Torej tudi to je del abstrakcija med Chrome
in ostali računalniku.
Razen, če je na voljo prek API, kot so Web MIDI API,
ti bi verjetno našli nekaj hacks, ampak na splošno ne kot izvedljivo.
>> SAM GREEN: Lahko also-- vse Chrome ve
je, kaj je tvoj privzeti mikrofon je, in to dostopov,.
Torej, če si imel mikrofon si lahko nastavljen kot računalnika privzeti mikrofon,
da bi lahko do nje dostopate na ta način in bi verjetno delovalo.
HUGH Zabriskie: To je dobra točka.
Še nikoli nisem poskusil, ampak boste morda lahko na vrsto
of-- če preusmerite vhodni zvočnik, boste morda lahko storili, da ja.
>> Vsa zadnja vprašanja?
Cool.
No hvala fantje toliko za gledanje.
Jaz sem Hugh.
SAM GREEN: Sem Sam.
HUGH Zabriskie: In to je CS50.