>> SAM GREEN: Hei, kaikille.
Tervetuloa meidän seminaari.
Nimeni on Sam.
HUGH Zabriskie: Olen Hugh.
SAM VIHREÄ: Ja me aiomme puhua tänään noin JavaScript ja Web Audio API.
Vain aloittaa, tämä on ääriviivat meidän asialistalla seminaarin.
Aiomme aloittaa puhumalla miksi sinun pitäisi olla kiinnostunut Web
Audio API, miksi on Javascript kieli tarvitset sitä,
ja sitten puhua JavaScript essentials-- niin kuin,
opastaa joitakin perusasiat kielen,
ja sitten puhua audio API korkealla tasolla.
Sitten Hugh puhuu joitakin vaiheista äänen tuotanto
ja sitten demo tämä mahtava sekvensseri Hankkeen hän rakensi ja näyttää koodin.
Ja sitten, meillä on aikaa kysymyksiä lopussa ihmisille
jotka ovat täällä elää.
>> HUGH Zabriskie: Cool.
>> SAM VIHREÄ: Cool.
>> HUGH Zabriskie: Cool.
Minä varmuuskopioi.
>> SAM GREEN: Niin, asiat ensin.
Joten yksi suuria asioita Tietoja Web-Audio API
on, että ei ole perustettu tarvita.
Se tulee sisäänrakennettuna useimmat uudet selaimet,
kuten Chrome, Edge, koko nippu others-- kaikki ne
että suuri osa ihmiset käyttävät nykyään.
Joten ei ole perustettu, syrjään juuri
web-palvelin menossa, varten voit päästä alkuun työ
teidän projekti, joka on suuri.
>> Suosittelemme aika raskaasti, että pidätte
käyttäen Chrome JavaScript web-kehitys,
vain koska sen kehittäjä työkalut ovat todella vahva.
Esimerkkinä juuri mitä tarkoitamme sanomalla avata JavaScript
console-- jos menet Chromeen ja sinä katsot Web-sivulta,
ja jätit napsauta Tarkista Element, ja sitten
menet tämä pieni avattavan täällä ja klikkaat Console
näet mitä avautuu näyttää paljon kuin komentokehotteen, että olet
saattaa nähdä Macissa, tai tunnus.
Ja noin vain, voimme tyyppi komentoja täällä, kuten Clear,
ja muut komennot kuten että.
Voimme luoda muuttujia, kuten näemme myöhemmin JavaScript.
Ja niin mitä voimme tehdä JavaScript, voimme tehdä konsoli,
ja se on erittäin kätevä tapa Aloita pelaa noin API
ja saada mukava JavaScript suoralta kädeltä.
Ei perustettu tarvita, joka on todella mukavaa.
Viileä.
Mahtava.
>> Joten vain yksi asia lisätä.
Jos sinulla on questions-- on monet teistä jotka eivät ole täällä elää,
ota yhteyttä sähköpostitse us-- nämä ovat meidän sähköpostiosoitteet.
Jos sinulla on kysyttävää et halua kysyä meiltä,
kuten, oh minulla bug minun koodi, tai jotain
että on hieman tarkempi, ehkä googlettaa ensin.
On paljon suuria resursseja Tietoja Web-Audio API siellä.
Se on todella hyvin dokumentoitu ja se on
käyttämä ton ihmisiä teollisuus, ja ihmisiä, jotka ovat juuri
rakennus kivaa itselleen.
Joten ei pitäisi olla paljon resurssien siellä.
Mahtava.
>> Viileä, joten miksi Web Audio API?
Tämä kaavio on hieman keino kehittää tapa
ääni internetissä on kasvanut ajan myötä.
Bgsound oli kuin alkuperäisen HTML tag että Internet Explorer käytetään tukemaan.
Se sallittu vain melko perus ääniä, toiminnallisuus ei ollut kovin vahva,
ja et voi tehdä monimutkainen sekvensointi,
tai, milloin ääni alkoi ja pysähtyi hyvin voimakkaasti.
Niin, se ei ole erityisen hyvin kehittynyt.
Sitten sen jälkeen, Flash tuli along-- joka,
Olen varma, että te kaikki tuttuja kanssa Flash-- ehkä ole miten se toimii,
mutta olet varmasti nähnyt sen.
Sinun täytyy päivittää Flash Plug-in, kaikki tuollaista,
ja että varmasti laajensi toiminnallisuutta, joka oli saatavana.
Mutta tekee käyttäjä asentaa plug-in on ehdottomasti
haittapuoli kuten Flash hakemuksesi, eikö?
Koska silloin olet riippuvainen käyttäjä menee ja löytää tämä plug-in,
ja luultavasti käynnistyä pois tämä ylimääräinen vaihe
ne on otettava käyttää app.
Ja sitten voisi olla päivitys että saat rikkoa koko sovellus,
ja se päätyy painajainen kehittäjä, liian.
Niin että oli barrikadi.
>> Ja sitten sen jälkeen tulivat, HTML audio tag, joka
on piirre modernimpi HTML-- joka varmasti mahdollisti paljon enemmän tavaraa,
mutta jopa asioita voisi tehdä siellä oli hieman rajoitettu vain
seurauksena asioita että HTML kykeni.
Joten kun JavaScript API, web-Audio API,
tuli standardi harjoitella eri selaimissa,
että todella laajennettu sarja mahdollisuuksia kehittäjille
todella päästä rakennukseen hienoja juttuja web.
Jo pitkään on ollut ollut todella tukevia työkaluja
äidinkielenään äänisovelluksiin like-- kaikki tietävät GarageBand,
ja sitten tietysti on enemmän ammatillinen miksaus sovelluksia,
ja tuollaista.
Mutta ei ollut todella hyvä Cloud-- ei
Pilvi, joo, kai Cloud-- web-pohjainen
joka sallisi kehittäjät rakentaa sovelluksia ihmisiä
tehdä miksaus.
Ja kun hän näyttää myöhemmin, Web Audio API
mahdollistaa todella voimakas juttuja tapahtua todella yksinkertaisesti,
joka on aika siistiä.
Niin, että ohje miksi sinua pitäisi katsoa loput seminaarin,
pohjimmiltaan.
>> Ja nyt, aion puhua jotkut JavaScript-- vain peruselementtejä
kielen, niin että voimme olla samalla sivulla
kun puhumme API hieman myöhemmin.
Viileä.
>> Joten, tämä on yhteenveto.
Unohdin tämä oli tässä.
Joo.
>> HUGH Zabriskie: Ei kaksi dioja täällä.
>> SAM GREEN: Tämä on yhteenveto joitakin rajoituksia
Muiden sitovien, vanha menetelmiä.
Ja sitten nyt, meillä on nämä asiat.
Viileä.
Mahtava.
>> Joten, JavaScript olennaiseen.
First things first, siellä melko merkittävä ero
JavaScript versus kieli kuten C, tiellä
että muuttujat on luotu.
Joten C, olemme tottuneet kirjoittaa meidän muuttujia, eikö?
Enkä tarkoita tyyppi kuten kirjoittaa niitä, tarkoitan tyyppi
kuten liittää ne type-- merkitys kuten, int, float, nieriää.
C, olimme todella käytettiin ottaa luoda muuttujan
ja sitten kiinni, että tyyppi koko ajan, että käytämme että muuttujaa.
Ja joka ei välttämättä ole huonompi, mutta se on luultavasti vaikeampi käyttää.
Yksi hienoja ominaisuuksia JavaScript on
että muuttujat ovat mitä kutsutaan "Dynaamisesti kirjoitetaan", joka
tarkoittaa, että voin luoda muuttuja kanssa syntaksia,
varX vastaa 5, esimerkiksi.
Alun perin luo kokonaisluku variable--
oikealla alla huppu somewhere-- mutta minä
voi muuttaa sitä muuttuja viitata merkkijono
tekemättä mitään kuin luoda uusi muuttuja.
Minun ei tarvitse huolehtia noin tyyppi muuttuu.
JavaScript tietää, että tyyppi on muuttunut, ja se tapahtuu dynaamisesti.
>> Niin, on hyötyä ja haittapuolia, että
jokainen, joka on työskennellyt Javascript aikaa saattaisi tietää.
On aikoja, jolloin saatat vahingossa
vaihdetaan toiseen vaihteleva ja ei käsitellä sitä tyyppiä muuttuvat,
ja sitten JavaScript voi crash-- tai poikkeus
heittää, koska sinulla on väärän tyyppinen kun odottaa yksi tyyppi.
Viileä.
>> Joten, scoping-- joka on kuin, jos me muistaa ensimmäisten viikkojen aikana,
viittaa siihen, kuinka näkyvä muuttuja on ja millä alueella koodi.
Kaikki tämä näyttää hyvin samankaltainen tapaa se näyttää C.
Joten muuttujat scoped yleensä sisällä aaltosulkeita sisällä toiminto,
ja sitten on myös maailmanlaajuisesti-alainen muuttujia
are-- jos kirjoitat muuttuja ulkopuolella toiminto,
se näkyy koko tekstissä.
>> Yksi ero JavaScript ja C erityisesti,
on, että jos julistaa maailmanlaajuinen muuttuja tahansa tekstitiedosto
se on näkyvissä mitään toimintoa sisällä että tekstitiedosto.
Se on oikein, eikö?
>> HUGH Zabriskie: Jep.
>> SAM VIHREÄ: Niin, että myös hieman bittinen funky verrattuna C,
jossa meillä on aina ollut on meidän muuttuja määritelmät yläpuolella paikkoja
niitä on käytetty.
Se ei ole sääntö, joka on täytäntöön enää, niin, hieman erilainen.
Ja jälleen vain reemphasize, globaali vs. paikallinen variables--
hyvin samanlainen kuin C Voisit olla kaksi muuttujaa samanniminen,
ja on yksi niiden nimien varjoon paikallinen muuttuja, jos yksi heistä
oli maailmanlaajuinen.
Joten, samantyyppinen ongelmia, että jotkut teistä
saattanut törmätä joissakin teidän ongelma asettaa toistaiseksi.
Viileä, joten se on muuttujia.
>> Kontrollivuo, eli kuten, jos-else-- looginen stuff-- ja silmukoita.
Joten aloittaa, tämä on mitä jos-else lausunnot näyttävät JavaScript.
Sijoittaminen eri asioita radoilla ei ole tärkeä.
Tämä on vain yksi yleissopimusten sillä miten me rakenne koodi.
Aivan kuten C, meillä "Jos" suluissa julkilausuman.
Se ei ole mitä tarkoitin tehdä.
Tein sen taas.
>> HUGH Zabriskie: Yritetään poistua?
SAM GREEN: Ei, olen vain yrittää suurentaa.
Sillä ei ole väliä.
>> Joten, meillä on "jos" lausunto ja meillä on edellytys sen sisällä
että on tosi tai epätosi, ja joka määrittää, onko vai ei
astumme että koodiosion.
Ja samoin, meillä on muuta-jos, ja muu, aivan kuten olemme tottuneet C.
>> Sinun tulisi myös olla melko mukava suoralta kädeltä silmukat,
koska ne myös näyttävät paljon kuten C näyttää.
Mutta huomaat kerran, että me on sijasta int alustukset,
meillä on var alustukset.
Ja kai teillä olla varovainen, jotta
varma et muuta arvoa I alkaen int merkkijono,
esimerkiksi, koska se on menossa aiheuttaa outo käyttäytyminen saatat ei
odottaa.
Mutta tämän pitäisi näyttää tuttuja, samoin.
>> Joten tämä on, jos asiat alkavat saada hieman hullu JavaScript
joku, joka on menee tausta C. On toimintoja
JavaScript, ja siellä on yksi tapa julistaa toiminto, joka näyttää
tavallaan samanlainen kuin C, ja sitten on toinen, joka
näyttää ikään eri.
>> Ensimmäinen versio, jossa voimme nähdä täällä,
on sellainen C-like, jossa sanomme, tämä on toiminto,
antaa sille nimi, anna määrä argumentteja,
ja sitten sisältö toiminnon mennä sisälle ne aaltosulkeita.
Näemme esimerkki argumentteja vain toinen.
>> Ottaa huomioon, että seuraavalla rivillä, näemme, OH, tässä on muuttuja nimeltä "myFunction"
ja me yhtä sen tähän yleinen thing-- function-- että
ei näytä olevan mitään meneillään.
Syystä, että on erilaista kuin C on, että JavaScript
on mitä kutsutaan toiminnallinen kieli, tai on toiminnallisia elementtejä, mikä tarkoittaa
että toiminnot ovat itse asiassa arvoja.
Ja se tarkoittaa, että voimme asettaa muuttujan yhtä toiminto
ja sitten siirtyä että toiminto ympärillä, siirtää sen väitteen,
tehdä kaikenlaista tavaraa kuten että toiminnoilla.
>> Eräs toinen asia note-- toiminnot on kirjoitettu
tietyllä useita väitteitä.
Näemme esimerkin funktion jossa väitettä seuraavan dian.
Mutta JavaScript ei huutaa, jos yrität
käyttää toimintoa väärä määrä argumentteja.
Se tulee vain tehdä parhaansa, jotta tehdä, mikä tarkoittaa, että jos pyörryt,
soitat toiminto, joka odottaa argumentti ilman argumenttia, kaikki jotka
tapahtuu on se tulee tehdä parhaansa yrittää suorittaa että koodia,
ja jos se lopulta kulkee osaksi poikkeus tai virhe,
se tulee heittää, että poikkeus ja vain pitää going-- joka on vain yksi tavoista
että JavaScript toimii.
Joo.
>> Yleisö: Mitä tapahtuu, jos siellä on liian monta argumenttia?
SAM VIHREÄ: Niin kysymys oli, mitä tapahtuu
jos on liikaa perusteluja?
Ja vastaus on, että JavaScript vain
sivuuttaa ne, jotka ovat kun niistä se odottaa.
Se tulee yrittää suorittaa toiminto kutsua kuin se oli vain kaksi ensimmäistä.
Oikea?
>> HUGH Zabriskie: Aivan oikein, joo.
Samoin, jos on on liian vähän argumentteja,
se juuri sellainen antaa nolla kaikille väitteitä se ei ole arvoja
varten.
>> SAM VIHREÄ: joka voi todella kätevä, jos
halua kirjoittaa toiminto vie vaihteleva määrä argumentteja.
Voit asettaa oletusarvoja määritelmä funktion,
ja se voi jättää huomiotta sitä, että tulo ei ole siellä.
Joten haluan puhua hieman lisää tästä viime luoti
piste, joka on toiminnot ovat arvoja.
Tämä on esimerkki, joka on hieman häkellyttävä
jos vain lukea sen, ja usko mitä tapahtuu toiseen.
Joten Katsotaanpa juuri ensimmäinen rivi täällä.
Meillä on tämä muuttuja, f1, että sanomme on toiminto, joka tekee tämän asian.
Ja sisällön toiminnon ovat console.log ('hei').
Voit ajatella console.log kuin JavaScript vastaa printf.
Joten mitä tapahtuu on, jos me suorittaa tämän koodin myös selaimen,
se tulee tulostaa merkkijonon.
Voin osoittaa, että.
Yleisö: log, kuitenkin, tekee sen tarkoita että se on tallennettu jonnekin?
SAM VIHREÄ: Joo.
Niin minä näytän sinulle, mitä tulee tapahtumaan.
Joten kysymys oli, mitä log tarkoittaa?
>> HUGH Zabriskie: Niin console.log on kuin printf C.
SAM VIHREÄ: Niin console.log on kuin printf,
joten jos minulla on tämä console.log ('hei'), ja pyydän, että merkkijono "hei"
saa tulostaa konsoliin.
Tämä on konsoli.
Se on aivan kuin printf, jossa se tulostaa standardin ulos.
Ja näemme hetken, mutta tämä on oikeastaan
viitaten konsoli esine, ja jossa menetelmä joka esinettä.
Että saat tehdä enemmän järkeä hetken, kun
päästä puhumaan esineet JavaScript,
mutta ajattelin vain mainita, että.
HUGH Zabriskie: Olemme käytetään C, right--
me yleensä kirjoittaa iso ohjelma Tärkeimpien tehdä mitään.
Mutta mitä viileä JavaScript on sinua on tällainen tulkin että
toimii reaaliajassa, joten se kestää vain rivi riviltä,
se voi vain tulkita, että paikan päällä.
Ja se pitää kirjaa asioita, jotka ovat näkyneet ennen,
joten se on melko hyödyllinen väline käyttää console.log, tai konsoli,
yleensä, vain pelaamalla noin JavaScript.
>> SAM VIHREÄ: niin menee takaisin tähän example-- toisella rivillä koodia
tässä melko ällistyttävää päähäni.
Ensimmäistä kertaa olen lukenut tämän, Se oli kuin, mitä on tekeillä?
Joten mitä tapahtuu on, tämä toiminto ilmoitus kertoo,
Minulla on toiminto nimeltään F2 joka on odottanut yksi argumentti, f,
ja sitten se kutsuu että funktio, f, joka
hyväksyttiin sen argumenttina ilman argumentteja itse.
Niin, että olisi ollut sekava.
Jos ymmärrämme tätä F2 vie f1 argumenttina, ja sitten sisällä F2,
f saa called-- jotka välineet että tämä rivi koodia,
Kun nämä kaksi riviä koodi, tulokset "hei"
tulostetaan konsoliin.
>> Se, että voimme välittää toiminnot noin arvoina
päätyy yksi tehokkaita ominaisuuksia JavaScript
kuten ohjelmointikieli.
Ulkopuolella kaikista mahtavia asioita se voi tehdä,
aivan kuin osa kieli suhteen, miten
että se tekee asiat helposti ohjelmoida ja mahdollistaa
asioita, jotka eivät ole erityisen sopii hyvin verkossa,
toiminnallinen ohjelmointi ja toiminnalliset ohjelmointi näkökohdat JavaScript
on yksi voimakas käsitteitä, jotka
olemassa JavaScript-- jos minulta kysytään.
Viileä.
>> Joten, seuraava asia.
Sen lisäksi, että toimiva, on myös elementtejä JavaScript
jotka ovat olio-, joka on yksi hyvin
suosittu sirinä sanat tietotekniikassa.
Olio-ohjelmointi on todella suosittu juttu.
JavaScript on versio kyseisestä, jossa Uskon jokainen arvo on myös
esine, mikä tarkoittaa, että jokainen esine kietoo yhteen joitakin määrä arvoja.
Joten arvoja, jotka ovat yksinkertaisia, kuten kokonaisluku, kuten varX on yhtä kuin 5,
että esine vain ylireagoi että yksi arvo.
>> Mutta voimme myös kuvitella tilanne where-- voimme ajatella tilanteita, C
jossa halusimme tehdä jotain structs,
esimerkiksi, että ylireagoi useat arvot yhteen ja merkkeihin
se todella helppo siirtää asioita ympäri.
Silloin objekti on JavaScript.
>> On tärkeää muistaa kun sanon, että esineitä kääritty
jotkut määrä arvoja yhdessä, että toiminnot ovat myös
arvot, mikä tarkoittaa sitä, että toimintoja voidaan myös olla sisällä JavaScript olio.
Ja siitä syystä, että on tärkeää on, että vaikka me usein
ajatella kutsuvan menetelmä objektia, joka on
suosittu termi muista suosittu olio-kielet,
yksi eroista on se, että kaikki, että menetelmä on JavaScript
on tallennettu arvo sisällä esine joka suorittaa jotkut action-- mahdollisesti
käyttämällä muita arvoja, jotka ovat sisällä että esine, mutta ei välttämättä.
Joten voitte kuvitella tilanne, en arvata vuonna hieman hullu tavalla,
jossa soitit menetelmä yhden esine toiseen esine, esimerkiksi.
Niin, se on vähän outoja tällä tavalla.
>> Ja voit myös muuttaa menetelmiä jotka liittyvät kohde
osoittamalla, että menetelmä uusi toiminto, joka on myös
melko erilainen kuin muut olio-kielet, missä
kun me julistamme esine ja instantiate se,
emme voi muuttaa menetelmiä, jotka ovat liittyvä objektia enää.
Niin se on aika erilainen.
Viileä.
>> Joten tässä on esimerkiksi ensimmäinen, objektin toiminnassa.
Tämä on mitä kutsutaan yleinen esine, joka
tarkoittaa sitä, että ei ole mitään Erityisesti nimi, ei ole luokka,
se on vain joitakin käärimistä arvoja.
Ja että näyttää on, meillä on tämä ulompi pari aaltosulkeita täällä
jotka osoittavat JavaScript ja sanoa, tämä on esine.
Arvot sen sisällä ovat kukin arvoja sisällä
esine, joka pitäisi kääriä yhdessä.
Ja sisältä että esine, Sitten on keskeinen arvo pareja,
missä avain viittaa nimi arvon sisällä esineen,
ja muut side-- vastapäätä paksusuolen here--
on todellinen arvo että tulisi säilyttää.
>> Niin näet täällä, että meillä avain kutsutaan fn kanssa arvo sam,
jälkeen pilkku, sanomalla päälle seuraava merkintä.
Sitten avain nimeltä ln, jonka arvo on vihreä,
jälkeen pilkku, jälkeen "Print"
joka tulee olemaan funktioarvon joka aikoo tehdä koodirivin.
Otetaan askel taaksepäin ja purkaa mitä täällä tapahtuu.
Joten tämä on hieman monimutkaisempi, ja me näemme jotain uutta
ensimmäistä kertaa.
"Tämä" avainsana on uusi asia me näemme täällä, ja mitä tämä tekee
on, viittaa nykyiseen esine laajuudeltaan, eikö?
Joten kun sanomme, tämä muistuttaa aina takaisin
Tämän koko object-- kun teemme this.fn,
aiomme mennä aina takaisin Tämän objektin, siirry fn arvo
ja saada sam, vedä se kokonaan takaisin, kiinni se täällä, ja sitten siirtyä.
>> Yleisö: Joten haku, on että tehdään koska parametrin
määritelmä?
SAM VIHREÄ: Joten kysymys oli, on haku tehdään, koska parametrin
määritelmä?
Joo, ehdottomasti.
Mitä tulee tapahtumaan tässä on, tämä piste sanoo JavaScript,
OK, Saan jotain arvoa Tämän objektin itsestäni.
Ja sitten se tulee etsiä merkintä nimeltään fn, ja jos se löytää sen,
se tulee palauttaa että value-- niin, se on sam.
Mutta voisin myös kirjoittanut jotain, joka ei ole määritelty tässä,
ja niin se olisi vain palata undefined-- joka
on asia, että JavaScript voi do, joka voi olla hyötyä,
mutta se on also-- jos teet kirjoitusvirheen, se voi aiheuttaa outoja virheitä.
Joten se täytyy vain yrittää löytää mitä kerrot sen löytää
ja se ei aio valittaa, jos ei löydä sitä.
Se vain sanoa, en löydä sitä, ja sitten siirtyä.
Joten se olisi määrittelemätön, plus tyhjä, ja sukunimi.
Joo.
Ja sitten voimme nähdä, että jos me voisi mennä alas ja access--
ja kutsumme tf.print () kanssa suluissa.
Se tulee soittaa että Tulosta toiminta ilman argumentteja, eikö?
Mutta jos me vain sanoi tf.print () puolipiste, ilman suluissa,
kaikki jotka olisi tehnyt on vetää ulos toiminnon arvosta,
mutta ei oikeastaan ​​kutsui sitä.
Viileä.
HUGH Zabriskie: Pitäisikö teemme esine?
SAM GREEN: Toki, tehdään se.
Joten en voi siirtää tätä Esimerkiksi konsoliin.
Voimme kuvitella, että minulla on esine.
Joten tämä on yksinkertainen esine.
Tämä on objekti, joka sisältää kaksi arvot kaksi avainta, kaksi keskeistä arvo
paria.
Joten en voi sitten käyttää tallennettu arvo sisällä tämän kohteen tekemällä x.x1,
esimerkiksi, ja saan 1 takaisin.
Samoin x.x2, saada, että arvo takaisin.
>> Ja nyt todella kova juttu on, voin todella lisätä jotain tämän objektin
kun olen luonut.
Joten voitte kuvitella, katsotaanpa sanoa on toiminto.
>> HUGH Zabriskie: Olet täytyy tehdä Vaihto-Enter.
>> SAM GREEN: Voi, se on ärsyttävää.
Mitä se ei pidä?
Oi.
No niin.
Viileä.
>> Joten olen juuri luonut tämä toiminto, f, että
on menossa nykyisen esine ja tulostaa this.x1.
Joten jos vain soittaa f mukaan itse, ei mitään on menossa
tapahtua, oikea, koska ei ole x1 kentän objekti se viittaa.
Mutta, jos sanon, x.f = f, ja sitten minä call x.f (), aion saada takaisin 1.
Että f-toiminto on nyt liittyvä esine X,
joka on keskeinen nimeltään x1 liittyvä arvo 1,
joten kun me kutsumme this.x1, se on menossa selvittää, mikä etsii
ja voi tulostaa arvon ulos.
Niin se on vain yksi esimerkki ja laji hulluja asioita
voit tehdä esineitä JavaScript.
>> Niin että versio oli geneeristä, merkitys
että olemme luoneet objektin tätä suluissa notation-- ahdin merkintätapa,
rather-- ja se on käteviä, jos me vain haluamme
yksi esiintymä tietyn esineen, mutta mitä jos haluamme olla enemmän kuin yksi
samanlaista?
Ja vastaus tähän kysymys on, on olemassa asioita
nimeltään luokat JavaScript samoin.
Voimme luoda toiminto, ei jonkinlainen alustuksen
varten vieras esine, ja olimme sanoa, kuten,
minun class-- joten nimi on uudelleenkäytettäviä object--
vastaa toiminto, joka erottaa sen ylös.
Joten mitä tämä vastaisi ja luo objektin
olisi aivan kuten, kihara ahdin, str, paksusuoli,
tämä on merkkijono, puolipiste, kihara ahdin.
Se olisi yleinen esine me alustaa,
kanssa yksi ero olemisesta seuraava linjat luomme prototyyppi, joka
tarkoittaa että se on oletus avain, lisäämme meidän objekti
on arvo lueteltu tässä.
Eli, kun luon uutta esimerkki tästä MyClass esine,
se tulee valmiiksi rakennettu sisällä se arvo nimeltään str ja toinen arvo
nimeltään myPrint, joka on olemaan funktio.
Mahtava.
>> Suuri.
Niin viimeinen asia sanottavaa JavaScript
on, että se on todella hyödyllinen mitä kutsutaan asynkroninen toimintaa.
Asynchronous tarkoittaa, että meidän voi odottaa joitakin toiminta
loppuun ennen kuin siirrymme , mutta siirtyä odottaessamme
ja sitten jotain tapahtuu myöhemmin.
Ja mitä tarkoitan, että on, te kuvitella tilannetta, jossa
lähetät pyynnön jotkut web-palvelin jonnekin,
ja se tulee lähettää sinut takaisin isoja kimpale tietojen, eikö?
Ja käyttäjä voi odottaa Tällä välin tämä onnistuisi,
ja mikään ei voisi olla meneillään tuolloin.
Mutta se ei ole hyvä muotoilu, eikö?
Et halua verkkosivustoa jäätyä.
Entä jos käyttäjä haluaa klikkaa pudotusvalikosta?
Se ei ole hyvä suunnittelu kuvio.
Sen sijaan, periaatteessa mitä JavaScript ei on sanoo,
OK, tämän toiminnon asynkronisesti.
Joten kuten, odota taustalla, ja sitten kun operaatio on tehty,
soita soittopyyntö function-- soita jonkin toiminnon,
jotkut action-- viestittää, että toiminta odotimme Loppuun
on ohi.
Ja siitä syystä, että on erittäin tehokas on, voimme tehdä jotain, pass argumentti,
tehdä jotain, ja sitten odottaa jotakin tapahtuvaksi.
Sitten, kun tämä jotain valmis, voimme kutsua soittopyynnön.
Se on todella kätevä, koska sen avulla meille tehdä asioita Web Audio API,
esimerkiksi, kuten kuorma äänitiedosto etäpalvelimelta
joutumatta odottamaan koko äänitiedosto ladataan,
joka olisi todella huono käyttökokemuksen.
Viileä.
>> Parin viime muistiinpanoja virheenkorjaus, koska tämä
on asia aiot täytyy tehdä osana projektin, taattu.
Mainitsin JavaScript-konsoli.
Se on erittäin hyödyllinen ominaisuus kaikki uudet selaimet,
Ja me todella kannustaa sinua saamaan mukava käyttää konsoli,
jos haluat saada hyvä JavaScript.
Se on erittäin kätevä virheenkorjaus, mutta se on myös
todella hyödyllinen miettiminen ulos miten käyttää API.
Se mahdollistaa todella helppo kokeilu
ilman kirjoittaa joitakin koodi, ja sitten kääntää sen.
Sinun ei tarvitse tehdä kaikki nämä toimet.
Voit vain kirjoittaa Joissakin koodin linja,
ja sitten saada välitöntä palautetta onko Koodirivin
worked-- erittäin kätevä.
>> Ja myös, vain yksi tekninen note-- JavaScript-konsoli on esimerkki
of REPL-- niin se on R-E-P-L, REPL, joka tarkoittaa lukea, arvioida,
Tulosta silmukka.
Olet menossa kirjoittaa joitakin juttuja vuonna, se tulee lukea mitä kirjoitit,
se tulee arvioida sitä, ja se tulee tulostaa tuotos, ja sitten se tulee aloittaa uudelleen.
Jonka avulla voit nopeasti mennä piireissä iteroimalla, mikä on todella hienoa.
>> Luulen todellinen viime note-- tämä on todellinen viimeinen huomautus, kyllä.
Miten me oikeastaan ​​käyttää JavaScript?
Joten ensimmäinen, voimme tuoda sen avulla komentosarjatunnus
yläreunassa tai alareunassa HTML file-- missä tahansa sisällä HTML-tiedoston,
ihan oikeesti.
Ja sisällä komentosarjatunnus, on kaksi osa-tapoja tuoda JavaScript.
Ensimmäinen on ottaa erillinen JavaScript-tiedoston
että tuomme kokonaisuudessaan, tai saamalla alueen koodia kirjoitus
aloittaa, ja sitten kenoviivat script lopettaa.
Ja sitten me vain kirjoittaa JavaScript sisällä HTML-tiedoston.
Ne ovat kaksi tapaa.
Et voi olla sitä sisällä HTML.
Yleisö: On yksi paremmin kuin muut?
SAM VIHREÄ: kysymys oli, on yksi parempi kuin muut.
Joten, kyllä, koska koodaus tyyli käytäntö, ja myös se on kuin suunnittelu käytännössä.
Tähän on kaksi syytä Miksi se voisi olla parempi.
Ensimmäinen on, se tekee koodin paljon enemmän luettavissa jos kaikki HTML
on yhdessä paikassa, kaikki CSS on toinen paikka, kaikki JavaScript
on kolmannella sijalla.
Oikea?
Mielestäni meidän olisi pitänyt jo puhuneet noin se sections-- kuten CSS-- mitä
että is-- ja se menee usein toiseen tiedostoon.
Joten, samantyyppinen käsite tässä.
Voit myös kuvitella, että JavaScript olisi uudelleen useammalle kuin yhdelle
HTML-sivun, tai ehkä monia HTML-sivuja,
ja ottaa että JavaScript refactored yhdeksi
tiedoston, jonka voit tuoda useampaan kuin yhteen paikkaan
mahdollistaa koodin olla paljon enemmän ylläpidettävissä.
Voit kuvitella tehdä yksi vaihtaa JavaScript
ja ottaa muuttaa sitä 100 eri tiedostoja.
Ja sen sijaan voimme vain muuttaa sitä yhden, joka on paljon tehokkaampi.
Teinkö kysymykseesi?
Viileä.
>> Voimme myös kirjoitat konsoliin, kuten olemme aiemmin mainittiin.
Ja vielä, yksi viime note-- Web Audio on rakennettu,
sinun ei tarvitse ladata mitään.
Viileä.
Onko kysyttävää, onko sinulla kysyttävää JavaScript,
Ennen kuin siirrymme?
>> Yleisö: [äänetön]
SAM VIHREÄ: Hyvä, viileä.
Nyt hän aikoo puhua API.
>> HUGH Zabriskie: Cool.
Kiitos, Sam.
>> SAM VIHREÄ: Toki.
HUGH Zabriskie: Mahtavaa, joten me siirrymme JavaScript.
Joten olemme puhuneet joistakin Essentials JavaScript,
ja ne ovat muuttujia, funktioita, esineitä, toimii muuttujia,
asynkroninen lastaus.
Nämä ovat kaikki asioita, että sinun pitävät käytät Web Audio.
Joten me vain aio puhua siitä ensin korkealla tasolla.
>> Se on API, joten se on jotain joka on rakennettu, Sam sanoi,
suoraan JavaScript että käytät konsolin.
Ja se on oikeastaan ​​aivan kuten C ++ koodi että on todella rakennettu Chrome
ja Firefox, ja kaikki näistä selaimista.
Joten tärkein ajatus Web Audio on, että sinulla on
tällainen putki audio, eikö?
Joten audiodataa tulee jossain muodossa.
>> On tavallaan kolme forms-- sinulla on oskillaattori, joka
luo siniaalto, kosini aalto, aiomme nähdä miten se toimii.
Toinen hyvin yleinen yksi, tietenkin, on MP3.
Joten ehkä aloitat laulu, ja sitten
haluat tehdä joitakin suodatus kyseiseen ja ulostulo
that-- joka voisi olla mahdollinen lähde.
Ja sitten todella cool yksi on mikrofoni.
Joten voit käyttää joitakin hyvin perus puhelut JavaScript
päästä käsiksi mikrofoni, ja niin jos
halusi tehdä sovelluksen kuten piki ilmaisin,
esimerkiksi, joka vie äänesi ja keksii
pitch-- erittäin helppo tapa, että.
Voit juuri sellainen lukea sen vuonna, selvittää taajuus,
ja sitten lähtö numero.
Joten näemme, miten se toimii, samoin.
>> Määränpää on pohjimmiltaan jos audiodata annetaan ulos.
Niin yleisesti, että on kuin kannettavan tietokoneen kaiuttimet.
Muita vaihtoehtoja ovat kuin ScriptProcessorNode--
me saamme solmut second-- mutta pohjimmiltaan,
joko olet laskemisesta äänen ulos kautta tietokoneeseen kaiuttimet,
tai olet sellainen kirjaamiseksi, niin olet varastointia kuin äänidataa.
Joten ehkä jos joku luo musiikkia App ja sitten
haluat tallentaa, että ja ehkä kuten viedä sen SoundCloud, sillä example--
että olisi yksi tapa tehdä se.
Kaikki hauskaa, joka me puhumme,
tapahtuu näiden kahden pisteen välillä, jossa latautuvat musiikki
ja sitten tulostaa sen.
>> Joten aion puhua viisi vaiheissa äänen tuotanto toisessa.
Meillä on tämä asia sanottu AudioContext, joka
on tämä pieni kääre näemme täällä.
Periaatteessa mitä AudioContext is-- jos me Siirry JavaScript-konsoli juuri nyt,
voimme luoda juuri nyt.
Vain esimerkki REPL, eikö?
Me luet, arvioidaan, ja se tulostaa.
>> AudioContext on globaali valtio.
Se struct, se esine täällä, ja se pitää tietoja
asioita että on meneillään ruudulla liittyvät äänen.
Yksi esimerkki on nykyinen aika.
Tämä kertoo numero sekuntia, erittäin tarkasti,
koska sivun ladattu.
Joten tämä on todella hyödyllinen pikku ominaisuus, jota voit käyttää.
Se on lukenut only-- mielestäni todella voit yrittää asettaa sen arvo.
Se kerromme asettaa sen, ja sitten jos tulostaa sen
again-- se ei oikeastaan ​​aika työtä.
Joten on vain luku- ominaisuudet JavaScript.
Tämä on todella hyödyllistä jos olet eräänlainen synkronointi
paljon erilaisia tiedot, kun olet
eräänlainen pelaa erilaisia ​​ääniä.
>> Toinen todella hyödyllinen on yhteydessä määränpää.
Ehdottomasti, jos olet kiinnostunut, on yrittää tätä omalla konsolin oikealla
nyt.
Joten tämä on AudioDestinationNode.
Periaatteessa mitä tämä sanoo on, jossa on lähtö menee?
Joten on olemassa kaksi todellista vaihtoehtoa täällä.
Yleensä oletuksena on vain kaiuttimet,
niin AudioDestinationNode pohjimmiltaan vain sanoo
on nolla lähdöt ääni tulossa, lähetetään puhuja.
Niin yleensä, et täytyy pelata sitä.
Jos olet kiinnostunut todellisuudessa käyttävät ScriptProcessorNode tallennus-,
ehdottomasti ampua minut sähköpostiviestin myöhemmin koska se on
hieman monimutkaisempi.
Mutta yleensä, olet vain sellainen syöttöä ääni jossain muodossa.
Niin cool, me hypätä takaisin tänne.
Yleisö: Olen pahoillani.
HUGH Zabriskie: Joo.
Yleisö: Tiedän sanoit puhua sinulle myöhemmin noin tallennuksen.
Voitko käyttöliittymä, joka Pro Tools?
>> HUGH Zabriskie: With Pro Tools?
Katsotaan.
En usko.
Niin menee välillä asiakas, joka on JavaScript
konsoli, ja todellinen tietokone, on yleensä
jotain, joka on eräänlainen on tabu, jos
tulee, jollaisia ​​luonteen the-- se on eräänlainen suunnittelu asia,
mutta yrität pitää selaimen erillistä käyttäjän todellinen tietokone.
Yleensä ainoa asia pystyt yhteys on mikrofonin tai kameran.
Et pysty, en usko, käytä Pro Tools.
Kuitenkin, jos olet luonut Raidan Pro Tools,
vientiä, että voisit ladata että täällä, suodattaa sen, esimerkiksi,
prosessi, ja tallentaa sen osaksi Audio Destination-- tai no-- Sphere
Prosessori Node.
Ja sitten sieltä, voisit viedä että SoundCloud, sinua
voisi lähettää sen sähköpostilla, tai mitä haluat sieltä.
>> Mutta on eräänlainen pieni este välillä tehdä musiikkia tietokoneella
ja tehdä musiikkia verkossa.
>> SAM VIHREÄ: Ja se on koske ainoastaan ​​tätä API.
Se on turvallisuus ominaisuus Chromen, ja Mielestäni jokainen muu moderni selain.
Selain on itsenäinen.
Niinpä esimerkiksi, verkkosivu ei voi käyttää JavaScript kytkee äänen
on kaiuttimien, esimerkiksi.
Tai se voi kääntää tietokoneesta virta.
Eikä ole välipisteessä välillä nämä kaksi asiaa, oikea,
joten joko olet täydellinen abstraktio,
tai avaat turvallisuuden puute kerroit
ohjelmoija vilpillisessä do mitä he haluavat kannettavan tietokoneen.
Ja siksi Chrome on itsenäinen.
>> HUGH Zabriskie: Joo.
Onko siinä järkeä?
Viileä, viileä.
Olin juuri menossa esittävät esimerkkiä yhden.
Tämä on melko paljon kuin Mitä saat, mitä
pääsemistä käyttäjän tietokoneessa.
Jos sinulla on USB-näppäimistö kytkettynä, voit käyttää jotain kutsutaan Web
MIDI API, jota emme todella puhua täällä,
mutta tämä on toinen API, joka on rakennettu ainakin Chrome-- uudelleen,
siksi me rakastamme Chrome-- Mielestäni Firefox tai Safari,
tämä on helppo asia google-- eri selaimilla on
eri tukea, jotka API ne ovat toteuttaneet.
Mutta jos halusi kytkeä näppäimistö ja työskennellä tämän tiedon,
Tällainen lähettää näppäimistö informaatiota tietokoneelle
ja sitten käyttää verkossa, tämä API on, jos olisit työskennellyt että.
>> Viileä.
OK.
Joten, nopeasti liikkuvat täällä.
Miten pärjäämme ajoissa?
>> SPEAKER 1: Noin 15.
>> HUGH Zabriskie: 15 minuuttia jäljellä?
OK, viileä.
Niin me rodun eteenpäin täällä.
>> Joten periaatteessa, tärkein kohta ajatellut tätä putki
on, että kukin vaihe putki on sarja äänen solmuja.
Meidän lähde, sanokaamme, on oskillaattori.
Meidän on luotava oskillaattorin solmu.
Ja juuri sellainen pikku function--
ja he kaikki perustuu ulos audio yhteydessä täällä.
>> Yleisö: Kun se sanoi oskillaattori, se tarkoittaa
Se on oikeastaan ​​kirjaimellisesti menee kaksi erilaista pylväät edestakaisin?
>> HUGH Zabriskie: Ei, se on kuin digitaalinen esitys.
Se on todella toteutettu C ++.
En oikeastaan ​​tiedä silmälasit miten se tosiasiallisesti täytäntöön,
mutta kaikki tämä työskentelee binaaridataa.
Oikeastaan, joo.
Se olisi sanoen, voisin todella, jos olet kiinnostunut,
Voisin lähettää sinulle hieman enemmän Tietoja aaltomuotojen
pidetään, jolla on digitaalisessa muodossa.
OK, viileä.
>> Joten me tuottaa sävy kuin sini aalto tai jotain, ehkä
440 Hertz.
Luomme oskillaattorin.
Jos haluamme asettaa äänenvoimakkuuden, me kytkeä mitään GainNode,
jota voisimme tehdä .creategain.
Joka asettaa äänenvoimakkuuden.
Voit siirtää, että mille tahansa Muiden options-- hyvin,
joten audiopuskurin lähde solmu on, jos saatat
tallentaa MP3 että olet ladatun.
>> Biquad suodatin on suodatus jos haluat ottaa kaikki pohja pois
laulun, tai jotain.
Jumala varjelkoon haluat ottaa pohja pois laulun.
Ja AudioDestination solmu on, jälleen, kuten missä meidän viimeistelyn.
Jos olet koskaan kiinnostunut näkemään kaikki erilaisia ​​mahdollisia vaihtoehtoja,
vain mennä välilehti ja anna automaattinen täydennys keksiä.
Ja jos et luo, näet kaikki eri asioita, joita voit luoda.
Voit luoda dynaamisia käsikirjoitus prosessorit,
En edes tiedä, mitä se on, sekoittamiseen kanavan fuusioita
ja kanava hakkurit ja kaikki.
Viileä.
>> Joten tämä on vain Esimerkki putkilinjan.
Joten meillä on kolme lähteistä tulossa.
Ehkä nämä ovat aaltomuodot, ehkä nämä ovat MP3.
Yksi menee läpi suodatin, toinen n
saada vääristynyt toinen oman vieritys vasemmalle ja oikealle.
Voit tehdä kaikenlaisia ​​asioita ja ne kaikki menevät sekaisin ympäri yhteen,
ja sitten ulos tulee ääni lopussa, kun määränpää.
Tämä on esimerkki siitä, mitä muuta monimutkainen Web Audio koodi näyttää.
Luot kaikki nämä erilaisia ​​esineitä oikeassa here--
En ole varma tästä.
Ei, se ei lähentää.
OK.
>> SAM VIHREÄ: Et Ohjaus, Scroll-Up.
HUGH Zabriskie: Ohjaus Scroll--
SAM GREEN: Ei, ei.
Control--
>> HUGH Zabriskie: Voi, ohjaus, Siirry?
Voi, Sainpas.
Joo.
Vau, Ehei, nope.
OK.
En tee sitä.
>> Niin joo, tässä ensimmäisessä kohta täällä, näet
Luomme kaikki nämä eri solmut ulos yhteydessä.
Me vain vähitellen luonut heidät yhdessä toisessa osassa
Tämän toiminto nimeltään Connect.
Se on todella keskeinen toiminto Web Audio.
Se vain tarkoittaa, kun olet tehnyt jotain ääntä yhdessä solmussa,
välittää sen seuraavalle solmulle.
Joten meillä on lähde, se yhteyden analysaattori,
analysaattori tekee jotain sen kanssa, se menee vääristymistä, ja niin edelleen,
ja määränpäähän alareunassa täällä.
Viileä.
OK, joten me jatkamme liikkuu.
>> Pipeline-- uudelleen, nämä ovat yleisimpiä putkilinjojen,
joten puhumme kaikki nämä asiat, kuten vääristymä, panorointi, kaikki jutut.
Jos olet todella kiinnostunut käytössä asiat Pro Tools,
ne luultavasti kiinnostaa sinua.
Jos ei, ehkä vain haluat toistaa äänen,
tai ehkä haluat vain Aseta äänenvoimakkuus äänen.
Ne ovat kaksi yleisintä lajitella putkistojen äänen tuotanto.
>> Jälleen miten voit ottaa sen niin oscillator-- niin, katsotaanpa
tehdä demo, että täällä.
Joten aiomme luoda yksinkertainen audio yhteydessä täällä,
ja että olemme menossa luoda meidän oskillaattori.
Niin että on, jälleen, olemme vain menossa soittaa Luo Oscillator.
Aiomme asettaa taajuuden että, 440 Hertz, kaikkien suosikki.
Sitten liittää kyseisen määränpäähän point-- joka on kaiutin, niin
yhteydessä määränpää.
Lopuksi, me vain sanoa, aloita nolla sekunnin päästä, ja meillä on ääni?
>> [RINGING]
>> HUGH Zabriskie: Nyt mennään.
Se on vain siniaallon.
OK, viileä.
Ja sitten me lopetamme sen.
>> Yleisö: Mistä että palaute tulee?
>> HUGH Zabriskie: palautetta?
Voi, luultavasti meidän mikrofonit.
Niin joo, se miten teet sen.
Ja itse asiassa, jos olisin piti sen käynnissä, voit
voisi olla taajuus arvoa se on käynnissä,
niin se hauska juttu leikkiä.
Viileä.
Se aina ihana yksi esittää.
>> SAM VIHREÄ: Meillä ei ajatella, että ei me?
HUGH Zabriskie: Joo, se ilkeä yksi.
Joten, puskuri loading-- näytän esimerkki tästä aivan lopussa.
Joka on lastaus MP3.
Ja mikrofoni, käytät vain toiminto nimeltään Navigator.getUserMedia ()
pyytää pääsy käyttäjän mikrofoni tästä tiedosta.
>> Tässä suodatus, minä vain pysyä liikkeellä tästä.
Tämä on melko korkea, mutta suodattimet vain voit
>> [Piippaa]
Suodatus voi myös luoda asioita, kuten pinkki
melu, ruskea melu, valkoista kohinaa.
Jos haluat luoda puhdasta melua, joka jotkut ihmiset rakastavat pelleillä,
voit käyttää Web-Audio suodatus tehdä niin.
>> Audio Panning-- niin kuvitella Jos kirjoitat peli
ja haluat äänen kuulostaa se tulee, kuten,
ammunta ruudun poikki, sinä voivat käyttää panorointia audio
luoda tällainen kartio, joka like-- ihan Mathy,
mutta se on oikeastaan ​​todella viileä jos saat sen toimimaan,
ja siellä on hyviä tutorials se voin lähettää sinulle.
Pohjimmiltaan, voit laji luovat äänen
jotain menossa 3D-tavalla.
Ja jos sinulla on DJ kiinnostusta, voit Aloita sekoittamalla ja rajat häipyminen lauluja.
>> Tämä on vain muutama yksinkertainen koodi, periaatteessa mitä tein ennen.
Tämä asettaa tilavuus oskillaattori, joten luomme oskillaattori
joka luo aaltomuoto.
Luomme GainNode, asettaneet taajuus,
ja liitä oskillaattorin GainNode, joka sitten periaatteessa muuttaa
kuinka paljon signaali on sallittu kautta.
Mutta oikeasti, se on digitaalinen asia, joten se on enemmän just-- joo.
Se ei ole mitä todella tapahtuu, mutta se mitä tapahtuu tosielämässä
jossa voitto.
>> Yleisö: --quantization tilavuuden parametrin?
HUGH Zabriskie: Anteeksi?
Yleisö: Onko se kvantisoitu tilavuus parametri?
HUGH Zabriskie: Joo.
Ja tämä on yksi asia, olen todella puutteellisia minun tietoon,
miten saada toimii digitaalisen tasolla.
Tiedän todellinen signaaleja, se on pohjimmiltaan
valvoa, kuinka paljon olet signaalin vahvistamiseksi.
Niin, joo.
Lähetän sinulle lisää tietoa että, koska olisin utelias todella
tietää enemmän siitä.
Mutta pohjimmiltaan parametrit ovat, yksi on fold--
kovempaa signal-- ja nolla ei signaali, tai et kuule mitään ääntä.
Me ohittaa demo aikaa, että koska se on pohjimmiltaan mitä tein ennen.
Ja vielä, Context.Destination on äänen kohdesolmu.
Mahtavaa, OK.
>> Joten aion tehdä nopeasti kaksi demoa.
Miten pärjäämme ajoissa?
>> SPEAKER 1: Noin 10 minuuttia.
>> HUGH Zabriskie: 10 minuuttia?
Hienoa!
Mahtava.
>> Joten ensimmäinen aion do, sitä kutsutaan My Favorite Song.
Joten tämä on vain pikku HTML JavaScript.
Aiomme olla kaksi painiketta sivulla pelata minun suosikki laulu
ja lopettaa minun suosikki biisi.
Minä muuttaa.
>> Yleisö: Peitä mikrofoni.
>> HUGH Zabriskie: Joo.
Ja olen ladattu täällä skripti, joka basically--
ja tämä on todella hyödyllinen lataamiseksi MP3,
joten tämä vain tekee lastaus MP3 perille nopeammin.
Se on pohjimmiltaan vain kääre.
Se vain tekee prosessin lastausta MP3 paljon nopeammin,
muuten käytät HTTP-pyynnön, ikään kuin mitä teimme
nykyisestä osainen sarja, jossa palvelin.
Se on todella ruma, sinua eivät halua tehdä sitä.
>> Joten tämä kaveri, Boris pk-yritykset, kirjoitti todella hyödyllinen pikku työkalu nimeltään BufferLoader.
Kaikki sinun on yksinkertaisesti siirtää se yhteydessä, ohitat sen list--
tai, joo, on se lista JavaScript?
SAM VIHREÄ: array.
HUGH Zabriskie: Voi, se on array, se on totta.
Se joukko polkuja eri tiedostoja.
Ja sitten ohitat sen funktio.
Tämä on soittopyyntö puhuimme noin asynkroninen lastaus.
Tämä on nimeltään Kun tiedostot ladataan.
Ja että toiminto, jota kutsutaan kun tiedosto kuormitettujen vie niin kehä
joukko ladattu puskureita.
Niin että tapahtuu täällä.
Pohjimmiltaan, BufferList on tulee olemaan yksi value--
tai se tulee olemaan joukko pituus yksi, joka on siinä hakemistotilassa
nolla koko ladattu tiedosto MP3.
Joten mitä teen, kun lopetan lastaus on, en yksinkertaisesti
luodaan puskuri lähde, joka on audiopuskurin lähtösolmun.
Seuraava askel on lataan vuonna source.buffer kuin koko ladattu puskuri
alkaen BufferList-- se on paljon buffers--
ja sitten liität että ääni puskuri määränpäähän.
Joten mitä se aikoo tehdä on vain yksinkertaisesti laittaa MP3
suoraan läpi lähtöön, ja aloittaa sen heti
kun saada tämä puhelu.
>> Viileä, joten katsotaanpa tämä tapahtuu toiminnassa.
Omat [äänetön] täällä, katsotaanpa.
Joten olen juuri menossa aloittaa perus-palvelimen.
Se on jotain, joka sinun ei tarvitse tehdä, jos olet
tehden pyyntöjä lastaus tiedostoja.
Aion aloittaa perus-palvelimen.
Tämä on pohjimmiltaan koko PSET nyt yhdellä rivillä,
mutta se on vasta aloittelemassa palvelimen portti 80/80.
Joten mennään tänne, me menossa ladata 80/80,
aiomme mennä My Favorite Song.
Joten jos osuin "Play my suosikki laulu "juuri nyt,
se tulee ladata minun suosikki laulu ja pelata it--
[MUSIC - Eagles, "Life nopeasti KAISTA"]
--which sattuu olemaan "Elämä Fast Lane "The Eagles.
Nyt, voisin lyödä "lopetan suosikki laulu "ja toistaa sen.
>> [MUSIC - Eagles, "Life nopeasti KAISTA"]
>> Ja vaikka minä menen yli lohduttaa, koska Käytin globaali muuttuja täällä
seurata tämän arvon, se todella nyt tunnustetaan konsoli.
Niin se auto-luo minulle.
Niin, että mitä pelissä juuri nyt, ja voin vain soittaa source.stop ()
siinä.
No, tiedätkö mitä?
Just niin te kuulleet tästä song-- saatat tunnistaa tämän laulun.
>> [Musiikki - Rick Astley, "ei koskaan aio antaa You Up "]
[MUSIC - Eagles, "Life nopeasti KAISTA"]
Olemme nyt kaikki on Rickrolled.
OK, suuri, liikkuu.
Viileä.
Joten tämä on periaatteessa esimerkki miten voit ladata MP3 file--
[MUSIC - Eagles, "Life nopeasti KAISTA"]
--and pelata, ja lopeta ja käynnistä se.
Olisin voinut tehdä paljon enemmän [äänetön]
>> Viimeinen teen on, Näytän sinulle [kuultavissa].
>> [Musiikkia]
>> Se on kuin, ogg.wave.mp3.
Uskon, jos muistan oikein, Olen törmätä joitakin ongelmia .m4a,
mutta en ole varma siitä.
Mielestäni mp3.wave--
>> [Musiikki - Rick Astley, "ei koskaan aio antaa You Up "]
>> OK, suuri.
Minun ei olisi pitänyt sanoa, että.
Joka tapauksessa, hei.
Joten meillä on tämä avoin.
Joten nyt kaikki mitä teen on, olen periaatteessa luonut Syntaksi luoda musiikkia.
Joten jos en jotain, lisätä G4 1 2, mitä tämä tarkoittaa, että,
Lisää piano huomata, G4, joka on neljäs G-
ylös piano pohjasta.
Joten tämä on tavallaan MIDI puhua, joten niille, jotka ovat musiikin perustuu,
tämä on vain MIDI muistiinpanoja.
>> Yleisö: Se on G Lähi C, eikö?
>> HUGH Zabriskie: Tämä on G- Edellä Lähi C, aivan oikein.
>> Yleisö: Above Lähi C.
>> HUGH Zabriskie: Joo.
Oikeastaan ​​kyllä.
Taisin itse tehnyt se yksi [kuulumaton],
joten tämä voi olla oktaavin yläpuolella.
Katsotaanpa.
Jos osuin Play--
[TOISTUVAISLENTOSUUNNITELMAT PIANO HUOM]
--we're menossa kuulla.
Ajatuksena on, että se toimii kuten komentoriviltä olisi,
joten jos menen ylös ja alas minun näppäimistö, sinua
voi palata edelliseen komentoja, joka on melko hyödyllinen.
Ja alla on minun luettelo kappaleita, jotka kaikki käynnissä silmukka.
>> Yleisö: Olit olettaen 88-avain näppäimistö, eikö?
>> HUGH Zabriskie: kysymys oli, olen olettaen 88-avain näppäimistö,
ja kyllä, olen.
Mitä tein on I pohjimmiltaan otti 88 näytettä
piano, yksi kullekin merkille.
Ja niin joka kerta, kun kuulla muistio nyt,
että on itse asiassa silmukka, joka näyttää like-- Tämä alkaa pelataan silmukka,
joten jokaiselle merkille, tämä on käynnissä.
Mitä tapahtuu on, minä luodaan puskuri uudelleen,
Luon voitto solmun säätää äänenvoimakkuutta.
Tämä vain todella monimutkainen tapa sanoa I
säilytä puskuri source.buffer.
Annan se voitto, olen liitä se voitto,
vahvistus on kytketty tuotos, ja sitten minä pelata sitä.
Tämä on siis sellainen prosessi ottaa puskurissa lähde.
>> Yleisö: Voitko itse ottaa, että kuiva ääni ja kastelevat sen [äänetön]?
>> HUGH Zabriskie: Voit, joo.
Ei uudelleen verbi, siellä viive, särö.
Voit periaatteessa laittaa mitään välillä, että sandwich of-- hyvin,
putki on parempi metafora, mutta voit lisätä mitään, että.
Viileä.
>> Niin minä loppuun demo täällä antaa sinulle tunteen
vain pelkkä monta kertaa olet voi suorittaa tämän tehtävän kaikki kerralla.
Joten aion poistaa tämän.
Aion luoda generaattori that-- periaatteessa mitä does-- tämä on todella
Tällainen monimutkainen syntax-- mutta se on menossa tuottaa muistiinpanoja lennossa,
ja juuri aloittaa pelaaminen niitä se arvioi niitä.
[Väliin PIANO]
>> Joten voimme vain tehdä vähän musiikkia täällä.
[Väliin PIANO]
>> Joten mitä tämä komento ei, esimerkiksi, on
se ryhtyy kolmen muistiinpanoja piano ja sitten laittaa ne B3.
Tämä syntaksi saattaa tehdä hieman enemmän järkeä
niille, jotka ovat musiikkia taustalla täällä.
>> Voin lisätä bassorumpu.
Voin--
>> [Väliin INSTRUMENTS]
>> --just leikkiä että.
>> Joten voit make--
[Väliin INSTRUMENTS]
Tuo on hieman harmittaa.
[Väliin INSTRUMENTS]
>> Niin että satunnaisesti lisää kuiva symbaali joka 16. merkille, jossa 16%
[KUULUMATON].
>> [Väliin INSTRUMENTS]
>> Joo, niin miten tämä works-- se on aina 4: 4.
[Väliin INSTRUMENTS]
>> Joo, joten neljän vuosineljänneksen ja 16/8.
[Väliin INSTRUMENTS]
>> Niin keskimäärin, saat 60% Osumia 16. toteaa.
>> Anyways, tämä oli vain Tällainen keuliminen
joitakin asioita voisit rakentaa Web Audio API.
Se on todella voimakas, se on todella nopea, ja voit tehdä paljon hienoja asioita
sen kanssa.
Joten jälleen, kysymyksiä sinulla on, sähköposti myself-- Hugh-- tai Sam,
ja rehellisesti, Google on ton hyviä resursseja.
Viimeisiä kysymyksiä?
Joo.
>> Yleisö: joten voit käyttää sisäänrakennettu mikrofoni.
Mitä jos halusi käyttää paremmin mikrofonia?
HUGH Zabriskie: Jos halusi käyttää paremmin mikrofonia?
Joten jälleen, tämä on osa abstraktio välillä Chrome
ja loput tietokoneen.
Ellei se on saatavilla kautta API, kuten Web MIDI API,
voisit ehkä löytää hakata, mutta yleensä ei kuin mahdollista.
>> SAM VIHREÄ: Voit also-- kaikki Chrome tietää
on mitä oletus mikrofoni on, ja se pääsee että.
Joten jos sinulla on ollut mikrofoni voisit asettaa tietokoneen oletuksena mikrofoni,
voit käyttää sitä tällä tavalla ja se olisi todennäköisesti toimi.
HUGH Zabriskie: Se on hyvä kohta.
En ole koskaan kokeillut sitä, mutta saatat pystyä eräänlainen
of-- jos ohjaat tulo puhuja, voit ehkä tehdä niin, joo.
>> Viimeisiä kysymyksiä?
Viileä.
Hyvin kiitos kaverit niin paljon katseluun.
Olen Hugh.
SAM VIHREÄ: Olen Sam.
HUGH Zabriskie: Ja tämä on CS50.