>> SAM ZELENÁ: Ahoj, všetci.
Vitajte na našom seminári.
Volám sa Sam.
Hugh Zabriskie: Som Hugh.
SAM ZELENÁ: A budeme dnes hovoriť o JavaScript a Web Audio API.
Stačí vyraziť, to je náčrt nášho programu rokovania semináre.
Chystáme sa začať tým, že hovorí o prečo by ste mali mať záujem na webe
Audio API, prečo je to JavaScript jazyk, čo potrebujete pre to,
a potom hovoriť o JavaScripte essentials-- tak podobne,
vás prevedie niektoré základy jazyka,
a potom hovoriť o audio API na vysokej úrovni.
Potom, Hugh bude hovoriť o niektorých z fáz výrobe zvuku
a potom demo túto hroznú triedič Projekt postavil a ukázať vám kód.
A potom, budeme mať čas na otázky na konci pre ľudí
ktorí tu žijú.
>> Hugh Zabriskie: cool.
>> SAM ZELENÁ: cool.
>> Hugh Zabriskie: cool.
Budem zálohovať.
>> SAM ZELENÁ: Takže poporiadku.
Takže jeden z veľkých vecí, o webové Audio API
je to, že tam je vyžadovaný žiadny set up.
Je dodávaný vstavaný do Väčšina moderných prehliadačov,
vrátane Chrome, EDGE, celok banda others-- všetkých tých,
že veľké časti ľudia používajú dnes.
Takže nie je nastavený, Okrem len dostať
webový server v chode, pre vás, aby ste mohli začať pracovať
na vašom projekte, čo je skvelé.
>> Odporúčame pekný silno, že sa domnievate,
Chrome pre použitie Vývoj JavaScript web,
len preto, že jeho vývojárov Nástroje sú naozaj silné.
Ako príklad len to, čo máme na mysli tým, že hovorí otvoriť svoj JavaScript
console-- ak idete do prehliadača Chrome a sa pozriete na akejkoľvek webovej stránky,
a vy kliknite ľavým tlačidlom Skontrolujte prvok, a potom
idete na tejto malej rozbaľovacieho tu a kliknete na konzole,
uvidíte, čo otvára vyzerá veľa ako príkazového riadku, ktorý vám
mohli vidieť na vašom počítači Mac, alebo na ID.
A rovnako ako to, že môžeme Typ príkazy tu, rovnako ako Clear,
a ďalšie príkazy podobne.
Môžeme vytvoriť premenné, as uvidíme neskôr v JavaScripte.
A tak niečo, čo môžeme robiť v JavaScript, môžeme robiť s konzolou,
a to je super šikovný spôsob, ako začať hrať sa s API
a sa pohodlne JavaScript hned bat.
Nevyžaduje set up, čo je naozaj pekné.
Super.
Úžasné.
>> Takže len jedna vec pridať.
Ak máte niektorý questions-- existujú mnohí z vás, ktorí nie sú tu žiť,
neváhajte a napíšte us-- tieto sú naše e-mailové adresy.
Ak máte otázky Nechcete sa nás opýtať,
ako, oh som chybu v mojom kódu, alebo niečo
to je trochu konkrétnejší, Možno, že ako prvý na Googlu ju.
Existuje veľa skvelých zdrojov o webové audio API vonku.
Je to naozaj dobre dokumentované a je to byť
používaný tonu ľudí v priemysel, a ľudia, ktorí sú práve
stavebné zábavné veci pre seba.
Takže tam by mala byť veľa zdrojov tam vonku.
Úžasné.
>> Cool, tak prečo Web Audio API?
Toto schéma je trochu z vývoja na ceste
zvuk na webe vzrástla v priebehu času.
Bgsound bol ako pôvodná HTML tagu že Internet Explorer použitá na podporu.
Je povolené len na docela základné zvuky, funkčnosť nebol veľmi robustný,
a vy ste nemohli robiť komplikovaný sekvenovania,
alebo určiť, kedy zvuk začal a zastavil veľmi robustne.
Takže to nebol nijako zvlášť dobre vyvinuté.
Potom po tom, Flash prišiel along--, ktoré,
Som si istý, že vy ste všetci oboznámení s Flash-- možno nie, ako to funguje,
ale vy ste určite videli.
Musíš aktualizovať svoj Flash Plug-in, všetky také veci,
a to iste rozšírila funkčnosti, ktorá bola k dispozícii.
Ale aby používateľ nainštalovať plug-in je určite
Nevýhodou, vrátane Flash v aplikácii, je to tak?
Vzhľadom k tomu, potom ste závislí na Užívateľ ísť a nájsť tento plug-in,
a pravdepodobne sa otočil off týmto krokom navyše
majú brať použiť vašu aplikáciu.
A potom tam mohol byť aktualizácia že zlomí celú vašu žiadosť,
a nakoniec je to nočná mora pre vývojárov, taky.
Takže to bola barikáda.
>> A potom po ktorej prišiel, audio tag HTML, ktorý
je funkcia, ktorá modernejším HTML-- iste počítal s oveľa viac vecí,
ale aj veci, ktoré by ste mohli urobiť tam bola trochu obmedzená len
v dôsledku vecí že HTML bol schopný.
Takže keď JavaScript API, Web Audio API,
stal štandardom praxe v rôznych prehliadačoch,
že skutočne rozšírila sadu príležitostí pre vývojárov
naozaj dostať do budovy cool veci pre web.
Po dlhú dobu sa mal bolo naozaj robustné nástroje
pre rodených audio aplikácie, jako-- každý vie GarageBand,
a potom samozrejme existuje viac profesionálne audio miešanie aplikácií,
a také veci.
Ale tam nebol naozaj dobré Cloud-- nie
Cloud, jo, myslím, že Cloud-- internetová platforma
ktorý by umožnil vývojárom vytvárať aplikácie pre ľudí
robiť audio miešania.
A keď vám ukáže, neskôr, Web Audio API
umožňuje naozaj silný veci sa stane naozaj jednoducho,
čo je celkom v pohode.
Tak to je pokyn, prečo ste by mal sledovať zvyšok semináre,
v podstate.
>> A teraz, budem hovoriť o Niektoré JavaScript-- len základné prvky
jazyka, takže môžeme byť na rovnakej stránke
keď hovoríme o API o niečo neskôr.
Super.
>> Takže, to je zhrnutie.
Zabudol som, že to tu.
Jo.
>> Hugh Zabriskie: Je tu dve šmýkačky tu.
>> SAM ZELENÁ: Jedná sa o súhrn niektorých obmedzení
z ďalších záväzných, staré metódy.
A potom teraz, máme tieto veci.
Super.
Úžasné.
>> Takže, náležitosti JavaScript.
Prvé vecí, prvé, je tu docela významný rozdiel
v JavaScript proti v jazyk C, v spôsobe, akým
že premenné sú vytvorené.
Tak v C, sme zvyknutí mať zadajte svoje premenné, že jo?
A nemám na mysli typ, ako je zadajte ich, mám na mysli typ
ako priradiť im význam type-- ako, int, float, char.
V jazyku C, sme boli naozaj použité na nutnosti vytvoriť premennú
a potom držať sa, že typu pre Celý čas, ktorý budeme používať tejto premennej.
A to nemusí byť nutne horšie, ale je to asi ťažšie na použitie.
Jedným zo skvelých vlastností of JavaScript je
že premenné sú, čo sa nazýva "dynamicky napísaný," ktorý
Znamená to, že môžem vytvoriť premenná s touto syntaxou,
varX sa rovná 5, napr.
To pôvodne vytvára celé číslo proměnná--
priamo pod kapucňa somewhere-- ale ja
môže zmeniť, že premenné odkazovať na reťazec
bez robili niečo ako vytvorenie novej premennej.
Nepotrebujem sa obávať o type striedanie.
JavaScript vie, že typ je zmenili, a to stane dynamicky.
>> Takže, existujú výhody a nevýhody, ktoré,
ako každý, kto pracoval v JavaScript na chvíľu mohli poznať.
Sú chvíle, kedy by ste mohli omylom
zmeniť typ premennej a nespracováva tento typ výmenu,
a potom sa vaše JavaScript môže crash-- alebo výnimku
byť hodená, pretože budete mať zlý typ, ak očakávate, jeden druh.
Super.
>> Takže, scoping-- ktorý je ako, keby sme pamätať prvých týždňoch v kurze,
odkazuje sa na ako viditeľné premenné je av akom časti kódu.
To všetko vyzerá veľmi podobne sa, ako to vyzerá v C.
Takže premenné sú všeobecne scoped vnútri zložených zátvoriek vnútri funkcie,
a potom tam sú tiež globálne rozsahom premenných, ktoré
are-- ak napíšete premennú mimo funkciu,
to bude viditeľné v celom texte.
>> Jeden rozdiel medzi JavaScript a C a najmä
je, že ak ste deklarovať globálnej premenná kdekoľvek v textovom súbore
je to vidieť v akejkoľvek funkcie v tomto textovom súbore.
To je správne, že jo?
>> Hugh Zabriskie: Jo.
>> SAM ZELENÁ: Takže je to tiež trochu bit funky v porovnaní s C,
kde sme vždy mali mať náš Variabilná definície nad miestach
oni boli používané.
To nie je pravidlom, že je vynútené už, tak trochu iná.
A opäť len preto, aby je potrebné zdôrazniť, Globálne vs. miestnej variables--
veľmi podobný C. Tie by mohli mať dve premenné s rovnakým názvom,
a majú jednu z ich mená tmavšie miestnej premenné, ak jeden z nich
bol globálne.
Tak, podobný druh Problémy, ktoré niektorí z vás
môžu naraziť na niektoré Vášho problému nastaví tak ďaleko.
Cool, tak to je premenné.
>> Flow Control, čo znamená, rovnako ako, ak-else-- logické stuff-- a slučky.
Takže začať s, to je to, čo if-else Vyhlásenie vyzerať v JavaScripte.
Umiestnenie rôznych vecí, na tratiach nie je dôležité.
To je len jeden z dohovorov za to, ako sme sa štruktúry kódu.
Rovnako ako v C, máme "ak" vyhlásenie zátvorka.
To nie je to, čo by som chcel robiť.
Urobil som to znova.
>> Hugh Zabriskie: Snažím sa ukončiť?
SAM ZELENÁ: Nie, ja som Len sa snažím priblížiť.
Nezáleží na tom.
>> Takže, máme "keby" a vyhlásenie máme podmienku vnútri je
že sa vyhodnotí ako true alebo false, a to určuje, či
sme sa vstúpiť, že blok kódu.
A podobne, ak máme inak-a else, rovnako ako sme zvyknutí v C.
>> Tiež by ste mali byť veľmi pohodlná hneď bat sa slučkami,
pretože sa tiež pozrieť veľa ako C vyzerá.
Ale všimnite si, že sme znovu majú miesto int initializations,
máme var inicializácia.
A myslím, že máš dávať pozor, aby sa
istí, že nechcete zmeniť hodnotu Aj z int na reťazec,
napríklad preto, že to bude spôsobiť podivné správanie, ktoré možno nie
očakávajú.
Ale to by malo vyzerať celkom známe, rovnako.
>> Takže toto je miesto, kde sa veci začnú z toho trochu blázon v JavaScripte
pre niekoho, kto sa chystá od A Doterajší stav C. Pri niektorých funkcií
v JavaScriptu, a tam je jeden spôsob, deklarovať funkciu, ktorá vyzerá
druh podobná C, a potom je tu ešte jeden, ktorý
vyzerá trochu inak.
>> Prvá verzia, ktoré môžeme vidieť tu,
je druh C-like, kde hovoríme, je to funkcia,
dať mu meno, daj počet argumentov,
A potom sa obsah funkcie dovnútra týchto zložených zátvoriek.
Uvidíme príklad argumenty len sekundu.
>> Vzhľadom k tomu, na ďalšom riadku, vidíme, oh, tu je premenná s názvom "myFunction,"
a my to rovná tejto všeobecný thing-- function-- že
Nezdá sa, že mať niečo deje.
Dôvod, prečo to je niečo iné ako C je, že JavaScript
je to, čo sa nazýva funkčné jazyk, alebo má funkčné prvky, čo znamená, že
že funkcie sú v skutočnosti hodnoty.
A to znamená, že môžeme nastaviť premenná, aby sa rovnala funkcie
a presuňte túto funkciu okolo, odovzdať ako argument,
robiť všetky druhy vecí takhle s funkciami.
>> Ešte jedna vec k note-- funkcie sú zapísané
s určitým počtom argumentov.
Uvidíme príklad funkcie s argumentom na ďalšiu snímku.
Ale JavaScript nebude kričať na vás, ak sa pokúsite
použiť funkciu s nesprávny počet argumentov.
Bude to len čo je v jej silách, aby sa áno, čo znamená, že ak ste prejsť,
volanie funkcie, ktorá očakáva Argument s žiadny argument, že všetky
sa stane, je, že to čo najlepšie aby sa pokúsila spustiť tento kód,
a ak je to nakoniec vedie do výnimky alebo chyby,
to bude hodiť túto výnimku a len držať going-- čo je len jedným zo spôsobov,
že JavaScript funguje.
Jo.
>> Divákov: Čo sa stane v prípade, je tu príliš veľa argumentov?
SAM ZELENÁ: Takže Otázkou bolo, čo sa stane,
ak existuje príliš veľa argumentov?
A odpoveď je, že JavaScript bude len
ignorovať tie, ktoré sú po tie to očakáva.
Bude pokuse o spustenie funkcie hovoria, ako keby to bol len prvé dva.
Doprava?
>> Hugh Zabriskie: To je pravda, jo.
Podobne, v prípade, že sú príliš málo argumentov,
to proste druh dáva null všetkým Argumenty, že nemá žiadne hodnoty
pre.
>> SAM ZELENÁ: ktorý môže v skutočnosti byť užitočné, ak ste
Chcete napísať funkciu, ktorá trvá premenný počet argumentov.
Môžete nastaviť predvolené hodnoty definícia funkcie,
a to môže ignorovať skutočnosť že vstupné tam nie je.
Tak som chcel hovoriť trochu Viac informácií o tejto poslednej guľkou
bod, čo je funkcia sú hodnoty.
Toto je príklad, ktorý je trochu ohromujúce
ak ste čítali, a nemyslím, že o tom, čo sa deje na sekundu.
Takže, poďme sa pozrieť práve v prvý riadok sem.
Máme tejto premennej, f1, že hovoríme je funkcia, ktorá robí túto vec.
A obsah funkcie sú console.log ("ahoj").
Môžete si myslieť console.log ako pri JavaScript ekvivalent printf.
Takže to, čo sa stane, je, ak budeme Tento kód spustiť v našej prehliadači,
to bude vytlačiť reťazec.
Môžem preukázať, že.
Publikum: Do protokolu, aj keď, to robí znamenať, že to nahráva niekam?
SAM ZELENÁ: Jo.
Takže ja ti ukážem, čo sa bude diať.
Takže otázka bola, čo log znamená?
>> Hugh Zabriskie: Takže console.log je ako printf pre C.
SAM ZELENÁ: Takže console.log je ako printf,
takže keď mám túto console.log ("ahoj"), a ja hovorím, že reťazec "ahoj"
sa vytlačí sa do konzoly.
To je konzola.
Je to rovnaké ako printf, kde vytlačí na štandardný výstup.
A uvidíme za minútu, ale toto je v skutočnosti
s odkazom na objekt konzoly, a volanie metódy na tento objekt.
To bude väčší zmysel za minútu, keď sme
dostať sa hovorí o objekty v JavaScripte,
ale myslel som, že by som len spomenúť, že.
Hugh Zabriskie: Sme používa v C, right--
zvyčajne napísať veľký program, v hlavnej nič robiť.
Ale to, čo je v pohode v JavaScripte je budete tento druh tlmočníka, ktorý
prebieha v reálnom čase, takže je trvá len riadok po riadku,
to môže len interpretovať, že na mieste.
A to udržuje veci, ktoré prebehne pred,
takže je to celkom užitočný nástroj pre použite console.log, alebo konzoly,
Všeobecne platí, že len za hranie okolo JavaScript.
>> SAM ZELENÁ: Takže návrat k tomu example-- druhý riadok kódu
Tu je celkom šokujúce v mojej hlave.
Keď som prvýkrát čítal to, Bolo to ako, čo sa deje?
Takže to, čo sa deje, je to deklarácie funkcie hovorí,
Mám funkcia nazvaná f2 že ich čaká jeden argument, f,
a potom to volá, že funkcie, f, ktorý
bol odovzdaný k nemu ako argument bez argumentov sám.
Tak, to by mohlo byť mätúce.
Ak chápeme to ako f2 berie f1 ako argumentu, a potom vo vnútri f2,
f dostane called--, čo znamená, že tento riadok kódu,
po týchto dvoch riadkov kód, výsledky v "ahoj"
tlačený na konzolu.
>> Skutočnosť, že sme sa prejsť Funkcie okolo ako hodnoty
nakoniec je jedným z najviac výkonné funkcie v JavaScriptu
ako programovací jazyk.
Mimo všetky úžasné veci, to môže urobiť,
rovnako ako funkcie z jazyk z hľadiska spôsobu, akým
že robí veci jednoduché programovať a umožňuje
pre veci, ktoré nie sú osobitne hodí na web,
funkcionálne programovanie a funkčné programovanie aspekty JavaScriptu
je jedným z najviac silné pojmy, ktoré
existuje v JavaScript-- ak sa ma pýtate.
Super.
>> Takže, ďalšia vec.
Okrem toho, že je funkčný, tam sú tiež prvky JavaScriptu
ktoré sú objektovo orientovaný, čo je jedným z veľmi
populárne slovíčkami v informatike.
Objektovo-orientovaného programovania je veľmi populárna vec.
JavaScript má verziu, ktorá, kde verím, že každá hodnota je tiež
objekt, čo znamená, že každý objekt zábaly dohromady určitý počet hodnôt.
Takže pre hodnoty, ktoré sú jednoduché, ako je celé číslo, ako je varX sa rovná 5,
že objekt ešte zabalí túto jednu hodnotu.
>> Ale môžeme si tiež predstaviť situáciu, where-- môžeme myslieť situácia v C
kde sme chceli robiť niečo s structs,
napríklad, že zábaly niekoľko Hodnoty dohromady a značky
je to naozaj jednoduché prejsť veci okolo.
To je, keď je objekt v JavaScripte.
>> Je dôležité si uvedomiť, keď poviem, že predmety zabalené
niektoré počet hodnôt spoločne, že funkcie sú tiež
hodnoty, čo znamená, že funkcia je byť tiež vo vnútri objektu JavaScriptu.
A dôvod, prečo to je dôležité, je to, že, vzhľadom k tomu, často
myslieť na volanie metódy na objekte, ktorý je
populárne termíne od ostatní populárnej objektovo orientované jazyky,
jeden z rozdielov je to, že všetko, že metóda je v JavaScripte
ak je hodnota uložená vo vnútri objektu že vykonáva niektoré action-- možná
pomocou ďalšie hodnoty, ktoré sú vo vnútri z tohto objektu, ale nie nevyhnutne.
Takže si viete predstaviť situáciu, ja Asi v trochu bláznivé cesty,
kde ste volali metódu jedného objekt na iný objekt, napríklad.
Takže, je to trochu funky týmto spôsobom.
>> A môžete tiež zmeniť metódy ktoré sú spojené s objektom
priradením tejto metódy A nová funkcia, ktorá je tiež
celkom odlišný od iných objektovo orientované jazyky, kde
akonáhle budeme deklarovať objekt a inštanciu ju,
nemôžeme zmeniť metódy, ktoré sú spojené s týmto objektom ešte.
Tak to je celkom iná.
Super.
>> Takže tu je príklad, ako prvý, objektu v akcii.
To je to, čo sa nazýva všeobecný objekt, ktorý
znamená, že nemá žiadne najmä názov, nemá triedu,
je to len nejaký obal hodnôt.
A ako to vyzerá, je, my máme táto vonkajšia dvojica zložených zátvoriek tu
ktoré ukazujú na JavaScripte a hovoria, to je objekt.
Hodnoty vnútri neho sú každý hodnoty vnútri
objektu, ktorý by mal byť zabalené dohromady.
A vnútornej časti tohto objektu, Potom sme sa dvojica kľúčov hodnota,
kde kľúč odkazuje na názov hodnoty vo vnútri objektu,
a druhý side-- naproti hrubého čreva here--
je skutočná hodnota že by mali byť skladované.
>> Takže vidíte, že tu máme kľúč s názvom fn s hodnotou sam,
nasledované čiarkou, hovorí na ďalšiu položku.
Potom sa kľúč nazvaný ln, s hodnotou zelené,
nasledované čiarkou, nasledoval "tlače,"
ktorá bude mať funkčnú hodnotu ktorá sa bude robiť tento riadok kódu.
Poďme sa o krok späť a rozbaliť, čo sa tu deje.
Tak to je trochu zložitejšie, a vidíme niečo nové,
prvýkrát.
"This" kľúčové slovo je nová vec vidíme tu, a čo to robí
je, sa odkazuje na prúd objekt v rozsahu, že jo?
Takže keď hovoríme, to upozorňuje na celú cestu späť
do celého tohto object-- keď budeme robiť this.fn,
budeme ísť celú cestu späť K tomuto objektu, choďte na hodnotu fn
a dostať sa sam, vytiahnite ju celú cestu späť, držať to tu, a potom ísť ďalej.
>> Divákov: Tak s vyhľadávaním, je že urobené, pretože parametra
definícia?
SAM ZELENÁ: Otázkou teda bolo, je vyhľadávanie vykonané kvôli parametra
definícia?
Jo, určite.
Čo sa bude diať tu je, Tento bod hovorí JavaScriptu,
OK, ja som stále nejakú hodnotu z tohto objektu od seba.
A potom sa to bude vyzerať na zázname volal fn, a ak sa nájde,
to vrátim, že value-- tak, že je to sam.
Ale ja som mohol tiež zadali niečo, čo sa tu nie je definovaný,
a potom by to jednoducho vrátiť undefined-- ktorý
je vec, ktorá môže JavaScript robiť, čo môže mať výhody,
ale je to also-- ak urobíte preklep, to môže mať za následok chyby podivné.
Takže to bude len snažiť nájsť čo poviete, že nájsť
a to nebude sťažovať, ak nenájde ju.
Bude to len povedať, že som neurobil nájsť, a potom ísť ďalej.
Tak to by bolo nedefinované, a prázdne, a priezvisko.
Jo.
A potom môžeme vidieť, že ak budeme by potom mohla ísť dole a access--
a hovoríme tf.print () s zátvorkách.
Bude to volať, že tlač funkcie bez argumentov, že jo?
Ale ak budeme práve povedal tf.print () bodkočiarka, bez zátvoriek,
všetko, čo by mal urobiť, je vytiahnuť out funkcie od hodnoty,
ale nie v skutočnosti to nazval.
Super.
Hugh Zabriskie: Mal urobíme objekt?
SAM ZELENÁ: Jasne, poďme to urobiť.
Tak som to môže pohnúť Príklad do konzoly.
Môžeme si predstaviť, že mám objekt.
Takže toto je jednoduchý objekt.
Jedná sa o objekt, ktorý obsahuje dve Hodnoty s dvoma tlačidlami, dvoma kľúčovým hodnota
pary.
Tak som sa potom môže pristupovať hodnoty uložené vnútri tohto objektu tým, že robí x.x1,
Napríklad, a ja si 1 Späť.
Rovnako tak, x.x2, dostať túto hodnotu späť.
>> A teraz naozaj cool vec je, môžem v skutočnosti pridať niečo k tomuto objektu
potom, čo som ju vytvorili.
Takže si viete predstaviť, poďme že mám funkciu.
>> Hugh Zabriskie: Vy musíte urobiť, Shift-Enter.
>> SAM ZELENÁ: Oh, to je nepríjemné.
Čo sa to nepáči?
Aha.
Ideme na to.
Super.
>> Tak som práve vytvorili táto funkcia, f, že
sa chystá ísť do prúdu objekt a tlač this.x1.
Takže keď som sa zavolať f o sama o sebe, nič sa deje
sa stane, doprava, pretože tam nie je žiadny x1 poľa v objekte je to s odkazom na.
Ale, keď poviem, x.f = f a potom som volajte x.f (), budem sa dostať späť 1.
Táto funkcia f je teraz spojené s objektu x,
ktorý má kľúč nazvaný x1 spojené s hodnotou 1,
Takže keď hovoríme this.x1, to je bude nájsť to, čo je to hľadá
a musí byť schopný vytlačiť hodnotu von.
Tak to je len jeden príklad z druhu šialené veci
môžete robiť s objektmi v JavaScriptu.
>> Takže táto verzia bola generické verzie, význam
že sme vytvorili objekt pomocou tohto zátvorky notation-- ortéza notáciu,
rather-- a to je my len chceme vhod, ak
jeden výskyt určitého objektu, ale čo ak chceme mať viac ako jeden
rovnakého druhu?
A odpoveď na to Otázkou je, tam sú veci,
volal triedy v JavaScripte rovnako.
Môžeme vytvoriť funkciu, ktorá robí nejaký inicializácia
na cudzie teleso, a my by sme povedať, rovnako ako,
mojej class-- tak názvu opätovne použiteľné object--
rovná sa funkcie, ktorá ho nastaví.
Takže to, čo by to bolo ekvivalentné aby ich vytvorenie objektu, ktorý
bude rovnako ako, zložená zátvorka, str, hrubého čreva,
to je reťazec, bodkočiarka, zložená zátvorka.
To by bol všeobecný Objekt sme inicializovať,
s tým rozdielom, na Nasledujúce riadky sme sa vytvoriť prototyp, ktorý
znamená, že je predvolený kľúč, ktorý pridáme do nášho objektu, ktorý
má hodnotu sú tu uvedené.
To znamená, že, keď som vytvoriť novú inštancie tohto MyClass objekte,
to bude mať pre-postavený vnútri to je hodnota, s názvom str a iné hodnoty
s názvom myPrint, čo je Bude to fungovať.
Úžasné.
>> Skvelé.
Takže posledná vec, hovoria o JavaScriptu
je to, že je to naozaj užitočné, za čo sa nazývajú asynchrónne operácie.
Asynchrónne znamená, že my môžete čakať na nejakú operáciu
dokončiť skôr než prejdeme , Ale ďalej, keď budeme čakať
a potom sa niečo stalo neskôr.
A čo tým myslím, že je, vy Možno si predstaviť situáciu, keď
odoslať požiadavku na niektoré web server niekde,
a to bude poslať ťa späť nejaký veľký kus dát, že jo?
A váš používateľ môže čakať v medzitým aby sa tak stalo,
a nič nemôže byť deje v tej dobe.
Ale to nie je skvelý dizajn, je to tak?
Nechcete, aby webová stránka zmraziť.
Čo sa v prípade, že chce používateľ kliknite na drop-down menu?
Nie je to skvelý dizajn vzor.
Namiesto toho, v podstate to, čo JavaScript robí sa hovorí,
OK, túto operáciu asynchrónne.
Tak ako, čakajú v pozadí, a potom, keď je operácia vykonaná,
zavolať spätné volanie function-- zavolať nejakú funkciu,
Do niektorých action-- signalizuje, že Prevádzka sme čakali až do konca
je koniec.
A dôvod, prečo to je super výkonná je, môžeme niečo urobiť, odovzdať argument,
niečo urobiť, a potom čakať až sa niečo stane.
Potom, keď bola táto niečo dokončí, môžeme zavolať spätné volanie.
To je naozaj užitočné, pretože to umožňuje nás robiť veci s Web Audio API,
Napríklad, ako je načítanie zvukový súbor zo vzdialeného servera
bez toho aby museli čakať na celý zvukový súbor má byť vybavené,
čo by bolo naozaj zlé pre užívateľské skúsenosti.
Super.
>> Posledných pár berie na vedomie, o ladenie, pretože táto
je vec, ktorú budete musieť urobiť, ako súčasť svojho projektu, so zárukou.
Spomenul som konzolu JavaScriptu.
Je to super užitočná funkcia všetkých moderných prehliadačov,
A my naozaj povzbudiť, aby ste si pohodlne používať konzolu,
ak chcete získať dobrý v JavaScripte.
Je to super užitočné pre ladenie, ale je to tiež
naozaj užitočné pre zisťuje to, ako používať API.
Umožňuje naozaj ľahké experimentovanie
bez toho aby ste museli písať nejaký kódu, a potom kompilovať.
Nemusíte robiť všetky tieto kroky.
Stačí si len napísať nejaký kód do radu,
a potom získať okamžitú spätnú väzbu na či je tento riadok kódu, alebo nie
worked-- veľmi šikovný.
>> A tiež, len jedna technická note-- konzola JavaScript je príkladom
o REPL-- takže to je R-E-P-L, REPL, čo je skratka pre čítanie, hodnotiť,
print slučky.
Budeš písať nejaké veci in, tak to si prečítať, čo ste zadali v,
to bude hodnotiť, a to bude vytlačiť výstup, a potom to bude začať znova.
To vám umožní rýchlo ísť kruhy iterácií, ktorý je naozaj cool.
>> Myslím, že skutočný Last note-- to je skutočná posledná poznámka, áno.
Ako môžeme vlastne používať JavaScript?
Takže najprv, môžeme dovážať ho pomocou tagu script
v hornej alebo dolnej časti HTML file-- kdekoľvek vo vnútri súboru HTML,
Naozaj.
A v rámci tagu script, existujú dve čiastkové spôsoby importu JavaScript.
Prvým z nich je tým, že má samostatný súbor JavaScript
že import v plnom rozsahu, alebo tým, že oblasť kódu, ako je skript
spustiť, a potom spätné lomítko skript ukončiť.
A potom sme jednoducho napísať JavaScript vnútri súboru HTML.
To sú dva spôsoby.
Môžete ho mať vo vnútri HTML.
Divákov: Je jedným lepší ako ostatní?
SAM ZELENÁ: Otázkou bolo, je lepšia ako ostatné.
Takže, áno, ako kódovanie štýl praxi, a tiež je to ako projekčné praxi.
Existujú dva dôvody, prečo by to mohlo byť lepšie.
Prvá je, že to je váš kód oveľa lepšie čitateľné všetky vaše HTML
je na jednom mieste, všetky vaše CSS je v iné miesto, všetky vaše JavaScriptu
je na treťom mieste.
Doprava?
Myslím si, že sme mali už hovorili o tom v sections--, ako to, čo CSS--
že je-- a to ide často v inom súbore.
Tak, podobný druh poňatie sem.
Môžete si tiež predstaviť, že JavaScript by byť znovu použité na viac ako jednom
HTML stránka, alebo možno Veľmi veľa HTML stránky,
a mať taký JavaScript refactored do jedného
súbor, ktorý môžete importovať do viac ako jedného miesta
umožňuje kód bude oveľa viac udržateľný.
Môžete si predstaviť, takže jeden zmeniť JavaScriptu
a museli ho zmeniť v 100 rôznych súborov.
A namiesto toho môžeme len to zmeniť v jednom, čo je spôsob, ako silnejší.
Už som odpoveď na vašu otázku?
Super.
>> Môžeme tiež zadať do konzoly, ako sme sa už zmienil skôr.
A opäť, posledný note-- Web Audio je postavený v,
nemusíte nahrať nič.
Super.
Sú nejaké otázky, máte akékoľvek ďalšie otázky týkajúce sa JavaScript
než sme ďalej?
>> Divákov: [Nepočuteľné]
SAM ZELENÁ: Dobre, v pohode.
Tak teraz to bude hovoriť o API.
>> Hugh Zabriskie: cool.
Vďaka, Sam.
>> SAM ZELENÁ: Iste.
Hugh Zabriskie: Super, takže budeme ďalej od JavaScriptu.
Takže sme hovorili o niektorých náležitosti JavaScript
a tie, ktoré sú premenné, funkcie, objektov, funguje ako premenných,
asynchrónne zaťaženia.
To všetko sú veci, ktoré budete vidieť, ako budete používať na webe Audio.
Takže sme len hovoriť o to najprv na vysokej úrovni.
>> Je to API, takže je to niečo, , Ktorý je postavený, ako povedal Sam,
priamo do JavaScriptu ktoré používate v konzole.
A je to vlastne len ako C ++ kódu To je naozaj postavený do prehliadača Chrome
a Firefox, a všetky z týchto prehliadačov.
Takže hlavná myšlienka s webe Audio je, že máte
tento druh potrubia audio, že jo?
Takže vaše audio dáta prichádza v v nejakej forme.
>> Existujú tri hlavné druhy forms-- máte oscilátor, ktorý
vytvára sínusoida, Cosine vlna, budeme vidieť, ako to funguje.
Ďalším veľmi častým jedného, Samozrejme, je MP3.
Takže možno začnete s pieseň, a potom
chcete urobiť nejaké filtrovanie k tomu a výstup
that--, že by mohol byť možným zdrojom.
A potom sa naozaj cool jeden je mikrofón.
Takže môžete použiť niektoré veľmi Základné volania v JavaScripte
získať prístup k mikrofón, takže ak ste
chcel, aby aplikáciu ako detektor stúpania,
napríklad, že sa v váš hlas a zistí
pitch-- veľmi jednoduchý spôsob, ako na to.
Stačí si len trochu čítať in, zistiť frekvenciu,
a potom výstup číslo.
Tak uvidíme, ako to funguje, rovnako.
>> Cieľ je v podstate kde je audio dáta je na výstupe.
Takže všeobecne, to je ako váš laptop reproduktory.
Ďalšie možnosti sú ako ScriptProcessorNode--
sa dostaneme uzly v second-- ale v podstate,
Buď ste uvedenie zvuk von prostredníctvom vášho počítača cez reproduktory,
alebo ste druh záznamu, tak ste ukladanie ako audio dáta.
Takže možno ak niekto vytvorí hudba v vašej aplikácii a potom
Ak chcete nahrávať, že a možno ako exportovať do SoundCloud, pre example--
že by bol jeden spôsob, ako to urobiť.
Všetky zábavné veci, ktoré budeme hovoriť o,
sa stane, medzi týmito dvoma bodmi, kde sme nahrať v hudbe
a potom sa na výstupe.
>> Takže budem hovoriť o päť etapy zvukovú produkciu v druhom.
Máme túto vec zvanú AudioContext, ktorý
je tento malý wrapper tu vidíme.
V podstate to, čo AudioContext je-- keby sme prejsť na JavaScript konzole práve teraz,
môžeme vytvoriť práve teraz.
Len príklad REPL, že jo?
Sme čítanie, vyhodnocovanie, a vytlačí.
>> AudioContext je globálna stáť.
Je to struct, je to objekt tu, a udržuje informácie
o veciach, ktoré sa na Na obrazovke so zvukom.
Jedným z príkladov je aktuálny čas.
To vám povie číslo sekúnd, veľmi presne,
pretože webové stránky vložený.
Tak toto je naozaj užitočná malý majetok, ktorý môžete použiť.
Je to čítal only-- Myslím si, že v skutočnosti môžete skúsiť nastaviť to hodnotu.
To vám poviem vám to nastaviť, a potom, ak ju vytlačiť
again-- to robilo nie vlastne celkom prácu.
Takže tam sú len pre čítanie vlastnosti v JavaScriptu.
To je naozaj užitočné, ak ste trochu synchronizáciu
veľa iný informácie, keď ste
druh hrať rôzne zvuky.
>> Ďalším naozaj užitočné jedným je kontext cieľ.
Určite, ak máte záujem, bude sa snaží to na vlastnú konzole vpravo
teraz.
Tak toto je AudioDestinationNode.
V podstate, čo to hovorí, je, pokiaľ sa výkon ide?
Takže existujú dve reálne možnosti tu.
Východiskový je len reproduktory,
tak AudioDestinationNode v podstate len hovorí,
tam sú nulové výstupov do zvuku prichádza, poslaný do reproduktora.
Takže všeobecne, vy nie musieť hrať s tým.
Ak máte záujem o vlastne používať ScriptProcessorNode pre záznam,
Rozhodne ma zastreliť e-mail neskôr, pretože to je
o niečo zložitejšie.
Ale všeobecne, si len trochu pre výstup zvuku v určitej forme.
Tak v pohode, budeme skákať sem.
Divákov: Je mi to ľúto.
Hugh Zabriskie: Jo.
Divákov: Viem, že ste povedal, hovoriť sa neskôr o nahrávaní.
Môžete rozhranie, ktoré s Pro Tools?
>> Hugh Zabriskie: S Pro Tools?
Pozrime sa.
To si nemyslím.
Tak sa medzi klientom, čo je JavaScript
konzoly, a vaše skutočné počítač, je všeobecne
niečo, čo je druh off limitov, ak ste
bude, niečo z povahy the-- je to trochu dizajnu veci,
ale budete snažiť, aby prehliadač oddelené z aktuálneho počítača užívateľa.
Všeobecne platí, že jediná vec, ktorú ste schopní Prístup je mikrofón alebo kamera.
Nie ste schopní, I si nemyslím, použite Pro Tools.
Avšak, ak ste vytvorili stopa v Pro Tools,
vyvážajú, že by ste mohli nahrať, že sem, filtrovať, napríklad,
Proces, ktorý, a zaznamenať, že do Audio Destination-- alebo no-- gule
Uzol procesora.
A potom odtiaľ, mohol by ste exportovať, že pre SoundCloud, vás
mohol odoslať e-mailom, alebo čo sa vám páči odtiaľ.
>> Ale je tu trochu mierne bariéry medzi robiť hudbu na počítači
a robiť hudbu on-line.
>> SAM ZELENÁ: A to je nie sú jedinečné tohto API.
Je to bezpečnostné funkcie Chrome, a Myslím si, že všetky ostatné moderné prehliadač.
Prehliadač je sebestačný.
Tak napríklad, webová stránka nemôže používajú JavaScript otočiť zvuk
Na na reproduktoroch, napríklad.
Alebo to nemôže vypnete počítač.
A nie je tam žiadny vnútorný bod Medzi týmito dvoma vecami, vpravo,
takže buď máte kompletné abstrakcie,
alebo si otvoriť bezpečnostnú chybu nechať
programátor so zlými úmyslami robiť čo chcú so svojim notebookom.
A to je dôvod, prečo Chrome je sebestačný.
>> Hugh Zabriskie: Jo.
Dáva to zmysel_
Cool, cool.
Bol som jednoducho ísť ukazujú príklad jedného.
To je do značnej miery ako ak sa dostanete, pokiaľ ide
prístupu k počítaču používateľa.
Ak máte klávesnice USB zapojený, môžete použiť niečo, čo nazýva Web
MIDI API, ktoré nebudeme naozaj hovoriť o tu,
ale to je ďalší API, ktoré je vstavaný do aspoň Chrome-- znovu
To je dôvod, prečo milujeme Chrome-- Myslím si, že Firefox alebo Safari,
to je jednoduchá vec google-- rôzne prehliadače majú
odlišný podpora pre ktoré API, ktoré vykonali.
Ale ak by ste chceli pripojiť klávesnicu a pracovať s týmito informáciami,
druh poslať klávesnice Informácie sa k počítaču
a potom použiť že on-line, toto rozhranie API je miesto, kde by ste pracovať, že.
>> Super.
OK.
Takže, rýchlo sa pohybujúce sa tu na.
Ako sme na tom s časom?
>> Reproduktor 1: O 15.
>> Hugh Zabriskie: 15 minút odišiel?
OK v pohode.
Takže budeme pretekať dopredu tu.
>> Takže v podstate, hlavným bodom myslieť na to ako potrubie
je to, že každý krok v potrubí je séria audio uzlov.
Náš zdroj, povedzme, je oscilátor.
Musíme vytvoriť uzol oscilátor.
A to je len tak malého function--
a oni sú založené out audio kontextu tu.
>> Divákov: Keď to povedal, oscilátor, znamená to, že
je to vlastne doslova ísť od dva rôzne póly tam a späť?
>> Hugh Zabriskie: Nie, je to ako digitálne reprezentácie.
Je to vlastne implementovaná v C ++.
Ja vlastne neviem špecifikácia o tom, ako je to vlastne vykonaná,
ale to všetko sa pracuje ako binárne dáta.
Vlastne áno.
To by bolo hovoriť, som mohol v skutočnosti, ak máte záujem,
Mohol by som vám poslať trochu viac Informácie o tom, ako priebehov
sú udržiavané s digitálnom formáte.
OK v pohode.
>> Takže sme generovanie tónu ako sine mávať, alebo niečo také, možno
440 Hertz.
Tvoríme oscilátor.
Ak chceme nastaviť hlasitosť, my pripojiť niečo k GainNode,
ktoré sme mohli urobiť s .creategain.
To nastavuje hlasitosť.
Môžete si prejsť, že na akýkoľvek druhého options-- dobre,
tak zvukový zdroj vyrovnávací uzol je miesto, kde by ste mohli
uloženie MP3, ktoré ste založeného v.
>> SFB filter je pre filtráciu, pokiaľ Ak chcete mať všetky základne von
piesne, alebo niečo také.
Nedaj bože, chcete, aby sa základňa z piesne.
A AudioDestination uzol je, opäť, ako kde je naša dokončenie je.
Ak ste niekedy záujem vidieť všetky rôzne možné varianty,
stačí ísť na kartu a nechať auto-kompletné prísť.
A ak nechcete vytvárať, uvidíte všetky rôznych vecí, ktoré môžete vytvoriť.
Môžete vytvárať dynamické skript procesory,
Ja ani neviem, čo to je, pre miešanie fúzie kanálov
a kanál štiepačky a to všetko.
Super.
>> Takže je to len Príklad potrubia.
Takže máme tri zdroje prichádzať.
Možno, že to sú priebehy, Možno, že sa jedná o MP3.
Jedna sa deje prostredníctvom filter, ďalšie je
dostať skreslený ďalšie niečí ryžovanie vľavo a vpravo.
Môžete robiť všetky druhy vecí a Všetci zapliesť okolo dohromady,
a vychádza von zvuk na konci, ako cieľ.
Toto je príklad toho, čo viac komplikovaná Web Audio kód vyzerá.
Budete vytvárať všetky tieto rôzne objekty vpravo here--
Nie som si istý, o tom.
Nie, to nie je priblížiť.
OK.
>> SAM ZELENÁ: Robíte Control, prechádzanie nahor.
Hugh Zabriskie: Control Scroll--
SAM ZELENÁ: Nie, nie.
Control--
>> Hugh Zabriskie: Oh, Control, Posunúť?
Oh, gotcha.
Jo.
Wow, Nie, kdeže.
OK.
Nebudem to robiť.
>> Tak jo, v tejto prvej Sekcia tu, vidíte
vytvárame všetky tieto rôzne uzly z kontextu.
Práve sme im vysprávky spoločne v druhej časti
V tejto funkcii s názvom Connect.
To je naozaj kľúčový Funkcia vo Web Audio.
To len znamená, že potom, čo ste urobil niečo so zvukom v jednom uzle,
preniesť ich na ďalší uzol.
Takže máme zdroj, ho sa pripojí k analyzátora,
analyzátor robí niečo s ním, to ide ku skresleniu, a tak ďalej,
a na miesto určenia vpravo dole tu.
Super.
OK, takže budeme držať ďalej.
>> Opäť sa pipeline--, títo sú najčastejšie potrubia,
preto hovoríme o všetkých týchto veciach, ako je skreslenie, ryžovanie, toto všetko.
Ak máte naozaj záujem pri použití veci Pro Tools,
tie, ktoré pravdepodobne zaujímať.
Ak nie, možno ste práve chcete prehrať zvuk,
alebo možno len chcete nastaviť hlasitosť zvuku.
To sú dva najčastejšie druh z potrubia vo výrobe zvuku.
>> Opäť platí, že spôsoby, ako môžete vziať V ako oscillator-- tak, poďme
urobiť demo toho tu.
Takže ideme na vytvorenie jednoduchý audio kontext tu,
a od toho ideme vytvoriť našu oscilátor.
Takže to je, opäť, sme len zavolá vytvoriť oscilátor.
Budeme nastaviť frekvenciu na že 440 Hertz, každého z nás obľúbený.
Potom sme pripojiť, že na miesto určenia point-- čo je reproduktor, takže
kontext cieľ.
Nakoniec sme len povedať, štart nula sekúnd od teraz, a my sme zvuk?
>> [RING]
>> Hugh Zabriskie: Ideme na to.
Je to len sínusoida.
OK v pohode.
A potom budeme nechaj toho.
>> Publikum: Kde sa že spätná väzba pochádza?
>> Hugh Zabriskie: Spätná väzba?
Oh, pravdepodobne naše mikrofóny.
Tak jo, to je to, ako to urobiť.
A vlastne, keby som mal stále je spustená,
môže mať frekvenciu hodnota, ako je to beh,
tak to je zábavná vec pohrať.
Super.
To je vždy krásny človek predstaviť.
>> SAM ZELENÁ: My sme nie premýšľať o tom, sme?
Hugh Zabriskie: Jo, to je škaredý človek.
Takže, vyrovnávacia loading-- budem ukázať Príkladom, že na samom konci.
To je načítanie MP3.
A mikrofón, môžete použiť len funkciu nazvaný Navigator.getUserMedia ()
požiadať o prístup k užívateľa mikrofón pre túto informáciu.
>> Tu je filtrovanie, budem Len ďalej z tohto.
To je celkom vysokej úrovni, ale filtre len vám umožní
>> [Pípanie]
Filtrovanie tiež umožňuje vytvoriť veci ako ružová
hluk, hnedý šum, biely šum.
Ak chcete vytvoriť čistý hluk, ktorý Niektorí ľudia milujú, aby neporiadok okolo,
môžete použiť aplikáciu Web Audio filtrovanie to urobiť.
>> Audio Panning-- tak si predstavte ak píšete hru
a chcete, aby sa zvuk do znieť ako to prichádza, rovnako ako,
strieľa po celej obrazovke, môžete použiť posúvanie zo zvuku
vytvoriť tento druh kužeľa, ktorý jako-- je to celkom Mathy,
ale v skutočnosti je to naozaj pohode, ak si to práca,
a tam je nejaký dobrý návody na to, že vám môžem poslať.
V podstate, môžete si láskavý o vytvoriť zvuk
niečo deje okolo v 3D spôsobom.
A ak máte záujem DJ, môžete spustite miešanie a cross blednutiu piesne.
>> To je len nejaký veľmi jednoduchý kód, v podstate to, čo som robil predtým.
Toto nastavenie objemu oscilátor, takže sme vytvoriť našu oscilátor
čo vytvára tvar vlny.
Vytvárame našu GainNode, set našu frekvenciu,
a potom pripojte oscilátor k GainNode, ktorý potom v podstate zmeny
koľko signálu je povolené prejsť.
Ale naozaj, je to digitálny vec, tak je to viac jen-- jo.
To nie je to, čo sa skutočne deje, ale to je to, čo sa deje v reálnom živote
so ziskom.
>> Publikum: --quantization parametra objemu?
Hugh Zabriskie: Sorry?
Divákov: je to kvantování objem parameter?
Hugh Zabriskie: Jo.
A to je jedna vec, že ​​som naozaj deficitom v mojom znalostiach,
Ako zisk pracuje na digitálne úrovni.
Viem, že sa skutočné signály, je to v podstate
kontrolu, koľko ste zosilnenie signálu.
Tak jo.
Pošlem vám viac informácií o to, pretože by som bol naozaj zvedavý
vedieť viac o tom.
Ale v podstate parametre sú, z nich je fold--
hlasnejší signal-- a nula nie je signál, alebo nebudete počuť žiadny zvuk.
Budeme preskočiť demo čas na to, pretože je to v podstate to, čo som robil predtým.
A opäť sa Context.Destination je audio cieľovým uzlom.
Super, OK.
>> Takže budem robiť rýchle dve demá.
Ako sme na tom s časom?
>> Reproduktor 1: Asi 10 minút.
>> Hugh Zabriskie: 10 minút?
Skvelé!
Úžasné.
>> Takže prvé, budem to, je to len moja obľúbená pieseň.
Tak to je len malý HTML JavaScript.
Budeme mať dve tlačidlá Na stránke prehrať svoj obľúbený song
a zastaviť moju obľúbenú pieseň.
Budem zmeniť.
>> Divákov: Zakryte mikrofónu.
>> Hugh Zabriskie: Jo.
A ja som v tú naloží skript, ktorý basically--
a to je veľmi užitočné pre načítanie MP3,
tak to proste robí načítanie súborov MP3 cestu rýchlejšie.
Je to v podstate len o obal.
To jednoducho robí proces načítanie MP3 oveľa rýchlejšie,
inak ste pomocou HTTP požiadavky, niečo ako to, čo sme robili
na aktuálnom dielny s Server.
Je to naozaj škaredý, vy nechcem to robiť.
>> Takže ten chlap, Boris MSP, napísal naozaj užitočný malý nástroj nazvaný BufferLoader.
Všetko, čo urobiť, je jednoducho odovzdať ho na kontext, vy to list-- prejsť
alebo, jo, je to zoznam v JavaScripte?
SAM ZELENÁ: Pole.
Hugh Zabriskie: Oh, to je pole, to je pravda.
Je to rad ciest na rôznych súborov.
A potom sa to funkciu prejsť.
To je spätné volanie, že hovoríme o s asynchrónnym zaťažení.
Ten sa bude volať Akonáhle sú súbory načítané.
A to funkcia, ktorá je volaná pri Súbor je načítaný berie ako obvod
Pole zaťažených nárazníky.
Tak, že dôjde k sem.
V podstate, je BufferList bude jedným value--
alebo to bude rad Dĺžka človek, ktorý má v nej v indexe
nulu celý načítaný súbor MP3.
Takže to, čo mám robiť, keď som dokončiť zaťaženie je, ja proste
vytvorenie zdroja vyrovnávacej pamäte, ktorý je zdroj zvuku vyrovnávacej pamäte uzol.
Ďalším krokom je, že zaťaženie vo source.buffer ako plná načítaného vyrovnávacej pamäte
z BufferList-- je to veľa buffers--
a potom sa pripojiť, že zvuk vyrovnávacej pamäte na miesto určenia.
Tak čo to bude robiť je jednoducho dať MP3
rovno na výstup, a okamžite sa spustí ho
po získaní tejto hovor.
>> Cool, takže uvidíme, sa to stalo v akcii.
My [nepočuteľný] tu, poďme sa pozrieť.
Takže som jednoducho ísť spustenie základnú server.
To je niečo, čo čo musíte urobiť, ak ste
takže požiadavky na načítanie súborov.
Chystám sa začať základné server.
To je v podstate vaša celá Pset práve teraz v jednej línii,
ale je to práve začína server na porte 80/80.
Tak sme sa ísť sem, my chystá nahrať 80/80,
budeme ísť na svoju obľúbenú pieseň.
Takže keď som hit "hrať svoju obľúbená pieseň "práve teraz,
to bude načítať môj obľúbená pieseň a hrať to--
[MUSIC - orly, "Život v FAST LANE "]
--which sa stane byť "Život v rýchlom pruhu "od The Eagles.
Teraz by som mohol zasiahnuť "Stop my obľúbená pieseň "a prehrať ju.
>> [MUSIC - orly, "Život v FAST LANE "]
>> A keď som sa prejsť na utešiť, pretože Použil som globálne premenné sem
sledovať tejto hodnoty, je v skutočnosti Teraz bude uznaná v konzole.
Takže to auto-vytvára pre mňa.
Tak to je to, čo sa hrá práve teraz, a ja si proste zavolať source.stop ()
na to.
No, viete čo?
Len tak vy ste počuli song-- môžete spoznať túto pieseň.
>> [MUSIC - Rick Astley, "nikdy dať SI HORE"]
[MUSIC - orly, "Život v FAST LANE "]
Teraz sme všetci Rickrolled.
OK, skvele, pohybujúce sa na.
Super.
Takže to je v podstate príklad ako by ste mohli nahrať MP3 file--
[MUSIC - orly, "Život v FAST LANE "]
--and hrať, a zastaviť a spustiť ho.
Som mohol urobiť oveľa viac [nepočuteľných]
>> Posledný z nich budem robiť, je, Ja vám ukážem, a [nepočuteľných].
>> [Prehrávanie hudby]
>> Je to ako, ogg.wave.mp3.
Myslím, že, ak si dobre pamätám, Ja som naraziť na niektoré problémy s .m4a,
ale nie som si istý, o tom.
Myslím si, že mp3.wave--
>> [MUSIC - Rick Astley, "nikdy dať SI HORE"]
>> OK skvele.
Nemal som povedal, že.
Mimochodom, ahoj.
Takže máme tento otvorený.
Takže teraz všetko, čo urobiť, je, že som v podstate vytvoril základné syntaxe pre vytváranie hudby.
Takže keď to urobím niečo ako, pridajte G4 1. 2., čo to znamená, že,
pridajte klavír poznámku, G4, ktorá je štvrtou G
up na klavír od dna.
Takže to je tak trochu MIDI hovoriť, Takže pre tých, ktorí sú na základe hudby,
je to len MIDI poznámky.
>> Divákov: To je G zo Stredného C, nie?
>> Hugh Zabriskie: Toto je G nad stredom C, to je pravda.
>> Divákov: nad stredom C.
>> Hugh Zabriskie: Jo.
Vlastne áno.
Myslím, že som vlastne urobil to jeden [nepočuteľné],
tak by to mohlo byť oktáva nad to.
Takže poďme sa pozrieť.
Ak som narazila Play--
[Opakujúce sa PIANO Poznámka]
--we're bude počuť.
Myšlienka je, že to funguje rovnako ako príkazového riadku by,
takže keď som ísť hore a dole na mojej klávesnici, vy
môže ísť späť na predchádzajúcu príkazy, čo je celkom užitočné.
A dole je môj zoznam skladieb, ktoré sú všetky beží na slučke.
>> Divákov: ste za predpokladu, že 88-klávesov na tom, že jo?
>> Hugh Zabriskie: Otázkou bolo, mám za predpokladu, že o 88-kľúč klávesnice,
a áno, som.
To, čo som urobil je, že som v podstate sa 88 vzorkami
klavíra, jeden pre každú poznámku.
A tak zakaždým, keď vám vypočuť poznámku odteraz,
že je v skutočnosti slučka, ktorá vyzerá jako-- je to stále hrá na slučke,
takže pre každú poznámku, je to beží.
Čo sa stane, je, myslím, vytvorenie vyrovnávacej pamäte opäť,
Aj vytvoriť uzol zisku pre nastavenie hlasitosti.
To len naozaj komplikovaný spôsob, ako povedať, že som
uložiť vyrovnávacia pamäť v source.buffer.
Dávam mu zisk, ja pripojte ho k zisku,
zisk je pripojená k výstup, a potom som hrať.
Takže to je druh procesu of pričom v zdroji pufra.
>> Divákov: môžete skutočne vziať suchý zvuk a robiť to mokrý [nepočuteľných]?
>> Hugh Zabriskie: Môžete, jo.
Tam je re-sloveso, je tu oneskorenie, skreslenie.
Môžete v podstate dať čokoľvek medzi v tomto sendviči of-- dobre,
Potrubie je lepšie metafora, ale môžete pridať niečo v tom.
Super.
>> Takže budem dokončiť demo tu, aby vám pocit
toho len obyčajné koľkokrát ste možno spustiť túto funkciu naraz.
Takže budem odstrániť toto.
Chystám sa vytvoriť generátor that-- podstate to, čo je to naozaj does--
trochu komplikované, ale je to syntax-- bude vytvárať poznámky na behu,
a proste začať hrať je ako vyhodnocuje ich.
[Vložením PIANO]
>> Takže môžeme len aby sa trochu hudby tu.
[Vložením PIANO]
>> Takže to, čo tento príkaz robí, napríklad, je
to trvá tie tri poznámky k klavír a potom stavia ich na B3.
Táto syntax by mohol robiť trochu väčší zmysel
pre tých, ktorí majú hudba na pozadí tu.
>> Môžem pridať bubon.
Môžem--
>> [Vložením NÁSTROJE]
>> --just hrať sa s tým.
>> Takže môžete make--
[Vložením NÁSTROJE]
To je trochu viac nepríjemné.
[Vložením NÁSTROJE]
>> Tak, že náhodne pridá suchý činel na každom 16. nôtu, s 16%
[Nepočuteľný].
>> [Vložením NÁSTROJE]
>> Jo, takže ako to works-- je to vždy vo formáte 4: 4.
[Vložením NÁSTROJE]
>> Jo, tak za štyri štvrťroky, a 16/8.
[Vložením NÁSTROJE]
>> Takže v priemere dostanete 60% zobrazenie 16. poznámky.
>> Tak ako tak, je to len druh na obdiv
niektoré z vecí, ktoré by mohli stavať s Web Audio API.
Je to naozaj silný, je to naozaj rýchlo, a môžete urobiť veľa skvelých vecí
s tým.
Takže znovu, všetky otázky, ktoré ste, email myself-- Hugh-- alebo Sam,
a úprimne, Google má tony dobrých zdrojov.
Nejaká posledné otázky?
Jo.
>> Divákov: Takže môžete pristupovať vstavaný mikrofón.
Čo keby ste chceli použiť lepší mikrofón?
Hugh Zabriskie: Ak by ste chceli používať lepší mikrofón?
Takže znova, toto je súčasťou abstrakcie medzi Chrome
a zvyšok vášho počítača.
Ak to nie je k dispozícii prostredníctvom API, rovnako ako Web MIDI rozhranie API,
by pravdepodobne mohlo nájsť nejaké hacky, ale všeobecne nie ako realizovateľné.
>> SAM ZELENÁ: Môžete also-- všetky Chrome vie
je to, čo vaše predvolené mikrofón je, a to, že pristupuje.
Takže ak ste mali mikrofón by ste mohli nastaviť ako predvolený mikrofón počítača,
ste mohli pristupovať týmto spôsobom a bolo by to pravdepodobne fungovať.
Hugh Zabriskie: To je dobrý postreh.
Nikdy som sa snažil, ale by ste mali byť schopní druhu
of-- ak presmerovať vstupné reproduktor, by ste mali byť schopní to urobiť, jo.
>> Nejaká posledné otázky?
Super.
No ďakujem chlapci toľko za sledovanie.
Som Hugh.
SAM ZELENÁ: Ja som Sam.
Hugh Zabriskie: A toto je CS50.