>> SAM GREEN: Tere, kõigile.
Tere tulemast meie seminar.
Minu nimi on Sam.
Hugh Zabriskie: ma olen Hugh.
SAM GREEN: Ja me ei kavatse rääkida täna umbes JavaScript ja Web Audio API.
Just hakata läbi, see on ülevaade Meie päevakorra seminar.
Me läheme alustada räägivad miks sa peaksid olema huvitatud Web
Audio API, miks on JavaScript keel, mida vajame seda,
ja siis räägime JavaScript essentials-- nii nagu,
sõelub mõned põhitõdesid keeles
ja siis räägime audio API kõrgel tasemel.
Siis, Hugh räägib mõned etappide audio tootmist
ja siis demo selles awesome sequence Projekti ta ehitas ja näitan sulle koodi.
Ja siis, me peame aeg küsimused lõpus inimestele
kes siin elavad.
>> Hugh Zabriskie: Cool.
>> SAM GREEN: Cool.
>> Hugh Zabriskie: Cool.
Ma varundada.
>> SAM GREEN: Nii, asjad kõigepealt.
Nii et üks suuri asju umbes Web Audio API
on see, et seal ei ole loodud vajalik.
Ravim sisse ehitatud Kõige kaasaegsete brauseritega,
sealhulgas Chrome, Edge, terve kamp others-- kõik need,
et suur osa inimesed kasutavad täna.
Seega ei ole loodud, kõrvale lihtsalt saada
veebiserver läheb, sest teil alustada tööd
oma projekti, mis on suurepärane.
>> Soovitame päris tugevalt, et te
Chrome'i kasutamist JavaScript veebi arengut,
lihtsalt sellepärast, et selle arendaja vahendid on tõesti tugev.
Näitena just see, mida me mõtleme öeldes avada Teie JavaScript
console-- kui te lähete Chrome ja te vaatate tahes veebilehe,
ja klõpsata hiire vasaku nupuga Kontrollige Element, ja seejärel
te lähete see väike rippmenüü siin ja klõpsate Console,
näed, mida avab tundub palju nagu käsureale, et sa
võib näha Mac, või ID.
Ja just niimoodi, saame käske siin, nagu Selge
ja teised käsud niimoodi.
Me ei saa luua muutujaid, nagu me näeme hiljem JavaScript.
Ja nii me saame midagi teha JavaScript saame teha konsooli,
ja see on super mugav viis alustada mängides API
ja saada rahul JavaScript õigus ära nahkhiir.
No loodud vajalik, mis on tõesti kena.
Cool.
Awesome.
>> Nii lihtsalt üks asi veel lisada.
Kui teil on mingeid questions-- on paljud teist, kes ei ole siin elada,
emaili us-- neid on meie e-posti aadresse.
Kui teil on küsimusi sa ei taha küsida meilt,
nagu, oh mul viga minu koodi või midagi
see on natuke täpsem, äkki google it esimene.
Seal on palju suuri ressursse umbes Web Audio API seal.
See on tõesti hästi dokumenteeritud ja see on
kasutavad ton inimest tööstuse, ja inimesed, kes on lihtsalt
hoone lõbusaid asju ise.
Nii ei tohiks olla palju ressursse sinna.
Awesome.
>> Cool, miks veebiheli API?
See skeem on natuke eraldumiskoe- viis
heli veebis kasvanud aja jooksul.
Bgsound oli nagu originaal HTML tag et Internet Explorer toetamiseks kasutatakse.
See on lubatud üksnes päris põhi helisid, funktsionaalsust ei olnud väga tugev,
ja sa ei saa seda teha komplitseeritud sekveneerimise
või kontrollida, kui heli hakkas ja lõpetas väga jõuliselt.
Niisiis, see ei olnud eriti hästi arenenud.
Siis pärast seda, Flash tuli along-- mis
Ma olen kindel, et te poisid on kõik tuttavad koos Flash-- võibolla mitte, kuidas see toimib,
aga sa oled kindlasti näinud.
Sa pead uuendama oma Flash Plug-in, kõik sellist kraami,
ja et kindlasti laiendanud funktsionaalsuse, mis oli kättesaadav.
Aga tegemise kasutaja installida plug-in on kindlasti
puuduseks sealhulgas Flash Teie taotlus, eks?
Sest siis oled sõltuvuses kasutaja läheb ja leida seda plug-in,
ja ilmselt on välja välja käesoleva lisatööd
nad peavad võtma, et kasutada oma app.
Ja siis võiks uuendus et sa murda kogu oma taotluse
ja see jõuab on õudusunenägu arendaja, liiga.
Nii et oli barrikaad.
>> Ja siis pärast seda tuli mööda, HTML audio sildi, mis
on iseloomulik moodsam HTML-- mis Kindlasti lubatud palju rohkem asju,
kuid isegi asju, mida võiks teha Oli natuke piiratud ainult
tulemusena asjad et HTML oli võimeline.
Nii et kui JavaScript API, veebiheli API,
sai standard tavad brauserid,
et tõesti laiendanud komplekt võimalusi arendajad
tõesti sattuda hoone cool stuff veebi.
Pikka aega on olnud olnud väga jõuline tööriistad
emakeelena audio rakendusi, like-- igaüks teab Garage,
ja siis ilmselt on rohkem professionaalse audio segamine rakendused
ja sellist kraami.
Aga seal ei olnud väga hea Cloud-- ole
Cloud, jah, ma arvan, Cloud-- veebipõhine platvorm
mis võimaldab arendajatel luua rakendusi inimestele
teha audio segamine.
Ja kui ta näitab teile Hiljem, veebiheli API
võimaldab tõesti võimas asju juhtub tõesti lihtsalt,
mis on päris lahe.
Nii et juhise, miks sa peaks vaatama ülejäänud seminar,
põhimõtteliselt.
>> Ja nüüd, ma lähen rääkima mõned JavaScript-- lihtsalt põhielemendid
keele, nii et me võime olla sama leht
kui me räägime API natuke hiljem.
Cool.
>> Nii, see on kokkuvõte.
Ma unustasin see oli siin.
Jah.
>> Hugh Zabriskie: Seal on kaks slaidid siin.
>> SAM GREEN: See on kokkuvõte Mõnede piirangud
teise siduva, vanad meetodid.
Ja siis nüüd on meil neid asju.
Cool.
Awesome.
>> Nii JavaScript tarvilikku.
First things first, seal on päris oluline erinevus
JavaScript versus a keeles nagu C, viisil
et muutujad on loodud.
Nii C, me harjunud kirjuta meie muutujad, eks?
Ja ma ei mõtle tüüp nagu ka need, ma mõtlen tüübist
nagu määrata neile liik-- tähendus nagu, int, float, char.
In C, olime tõesti kasutada võttes luua muutuva
ja siis kinni seda tüüpi jaoks kogu aeg, et me kasutame, et muutuja.
Ja see ei pruugi veel hullem, aga see on ilmselt raskem kasutada.
Üks lahe omadusi JavaScript on
et muutujad, mida nimetatakse "dünaamiliselt trükitud", mis
tähendab, et ma ei saa luua muutuja, mis süntaks,
varX võrdub 5, näiteks.
See algselt loob täisarv variable--
paremal all kapuuts somewhere-- kuid ma
on võimalik muuta, et muutuja viidata string
ei tee midagi, nagu luua uus muutuja.
Ma ei pea muretsema umbes tüüpi muutmine.
JavaScript teab, et tüüp on muutunud ja see juhtub dünaamiliselt.
>> Nii on kasu ja puudused nagu,
kui keegi, kes on töötanud JavaScript mõneks ajaks võiksid teada.
On aegu, mil Sa võid kogemata
tüübi muutmiseks varieeruva ja ei oska seda tüüpi muutmine,
ja siis teie JavaScript võib crash-- või erand
visata, sest sul on vale tüüpi, kui te ootate ühte tüüpi.
Cool.
>> Nii, scoping-- mis on nagu, kui me mäletan esimestel nädalatel käigus,
viitab sellele, kuidas nähtav muutuv on ja millisel alal kood.
Kõik, mis näeb välja väga sarnane et kuidas tundub C.
Nii muutujad on scoped üldiselt jooksul looksulg jooksul funktsioon,
ja siis on ka ülemaailmselt scoped muutujaid
are-- kui sa kirjutada muutuja väljaspool funktsiooni,
see saab olema nähtav kogu teksti.
>> Üks vahe JavaScript ja C eelkõige
on see, et kui te kuulutada ülemaailmne muutuja kuhugi tekstifaili
see on nähtav igal funktsiooni jooksul, et tekstifaili.
See on õige, eks?
>> Hugh Zabriskie: Yep.
>> SAM GREEN: Nii et ka natuke natuke funky võrreldes C,
kus me alati pidi olema meie muutuja definitsioonid eespool kohad
neid kasutati.
See ei ole reegel, mis on jõustatud enam nii, natuke erinev.
Ja jälle just reemphasize, globaalne versus kohalikud variables--
väga sarnane C. Sa võid olla Kahe muutuja sama nime,
ja on üks nende nimed varjud by kohaliku muutuja kui üks neist
oli ülemaailmne.
Nii sarnane mingi probleeme, et mõned teist
võib olla sattunud ka mõned sinu probleem seab siiani.
Cool, et on muutujad.
>> Kontrolli voolu, mis tähendab nagu, kui-else-- loogiline stuff-- ja silmad.
Nii alustada, see on see, mida, kui-mujal avaldused nägema JavaScript.
Paigutamine erinevaid asju liinidel ei ole oluline.
See on vaid üks konventsioonid sellest, kuidas me struktuuri koodi.
Just nagu C, siis on meil "kui" sulgudes avalduse.
See ei ole see, mida ma mõtlesin teha.
Ma tegin seda jälle.
>> Hugh Zabriskie: Proovin väljuda?
SAM GREEN: Ei, ma olen lihtsalt üritan suurendada.
See ei ole tähtis.
>> Niisiis, meil on "kui" avalduse ja meil on tingimus sees on
et tulemus on õige või vale, ja mis määrab, kas või mitte
meil siseneda et blokk koodi.
Ja samuti, meil on teine-kui ja muud, nagu oleme harjunud C.
>> Samuti peaks olema päris mugav õigus ära nahkhiir silmad,
sest nad otsima palju nagu C näeb.
Aga märkad jälle, et me on, selle asemel, et int initsialisatsioonistringi,
meil var initsialisatsioonistringi.
Ja ma arvan, et teil on olema ettevaatlik, et
Kindlasti sa ei saa muuta väärtust I alates int string,
Näiteks sellepärast, et läheb põhjustada veidraid sa ei pruugi
oodata.
Aga see peaks välja nägema päris tuttav, samuti.
>> Nii et see on koht, kus asjad hakkavad saada natuke hull JavaScript
keegi, kes läheb alates tausta C. On funktsioone
JavaScript ja seal on üks viis kuulutada funktsioon, mis näeb välja
omamoodi sarnane C ja siis seal on veel üks, et
meenutab natuke teistsugune.
>> Esimene versioon, mida me näeme siin,
On selline C-like, kus ütleme, et see on funktsioon,
anda talle nimi anda argumentide arv,
ja seejärel sisu funktsiooni sisse minna neid, lokkis traksid.
Me näeme näide argumente lihtsalt teine.
>> Arvestades reale, näeme, oh, siin on muutuja nimega "myFunction"
ja me võrduma selle sellel generic asi-- funktsioon-- et
ei tundu olevat midagi toimub.
Põhjus, mis on erinev kui C on see, et JavaScript
on see, mida nimetatakse funktsionaalne keel, või on funktsionaalsed elemendid, mis tähendab
mis funktsioneerib on tegelikult väärtusi.
Ja see tähendab, et saame Muutuva võrduma funktsioonina
ja siis liigu selle funktsiooni ümber, andke seda argumendina,
teha igasuguseid asju nagu, et funktsioone.
>> Üks teine ​​asi note-- funktsioonid on kirjutatud
teatud hulga argumente.
Me näeme näide funktsiooni koos argument järgmisel slaidil.
Aga JavaScript ei tee kisa, kui üritate
kasutada funktsiooni vale argumentide arv.
Seda saad lihtsalt teha oma parima, et teha teha, mis tähendab, et kui te kaotate,
helistate funktsiooni, mis ootab argument ei argument, kõik, mis
juhtub on see teen oma parima proovida ja täita selle koodi,
ja kui ta lõpuks jookseb arvesse erand või viga,
see viskan selle erandiga ja muudkui going-- mis on lihtsalt üks viise
et JavaScript töötab.
Jah.
>> Sihtrühm: Mis juhtub, kui seal on liiga palju argumente?
SAM GREEN: Nii Küsimus oli, mis juhtub
kui on liiga palju argumente?
Ja vastus on, et JavaScript hakkab lihtsalt
ignoreerida need, mis on pärast need, mida ta ootab.
See püüan täita funktsiooni helistada, nagu oleks see vaid kaks esimest.
Õigus?
>> Hugh Zabriskie: See on õige, jah.
Samuti, kui liiga vähe argumente,
see lihtsalt selline annab null kõigile argumendid ei ole mingit väärtused
eest.
>> SAM GREEN: mida saab tegelikult olla mugav, kui te
tahan kirjutada funktsioon, mis võtab erineva hulga argumente.
Te saate seada vaikimisi väärtused määratlus funktsiooni,
ja see ei saa eirata tõsiasja, et sisend ei ole seal.
Nii et ma tahan rääkida natuke rohkem sellest viimasel kuul
punkti, mis on funktsioonid on väärtused.
See on näide, mis on natuke Häkellyttävä
kui sa just lugesin seda ja ei usu selle kohta, mis toimub teist.
Nii, vaatame just esimene rida siin.
Meil on see muutuja, f1, et me ütleme on funktsioon, mis teeb selle asja.
Ja sisu funktsiooni on console.log ("Tere!").
Sa ei mõtle console.log kui JavaScript samaväärne printf.
Mis juhtub on see, kui me käivitada see kood oma brauseri
see saab välja printida string.
Ma ei näidata seda.
Sihtrühm: log, aga ei tee seda tähenda, et see on salvestatud kusagil?
SAM GREEN: Jah.
Nii et ma näitan sulle, mis juhtub.
Nii et küsimus oli, mida ei logi tähendab?
>> Hugh Zabriskie: Nii console.log on nagu printf C.
SAM GREEN: Nii console.log on nagu printf,
nii et kui mul on see console.log ("Tere!"), ja ma nimetan seda, string "tere"
saab välja printida konsooli.
See on konsooli.
See on nagu printf, kus see prindib standard välja.
Ja me näeme mõne hetke, kuid see on tegelikult
viidates konsooli objekti, ja kutsudes välja viis, et objekti.
Et tulen mõttekam minut, kui me
saada räägime objektide JavaScript,
aga ma arvasin, et ma lihtsalt mainida, et.
Hugh Zabriskie: Oleme kasutatakse C, right--
me kirjutame suure programmi peamistes midagi teha.
Aga mis on jahe JavaScript on teil on selline tõlk, et
jookseb reaalajas, nii et see võtab vaid rida-realt,
see lihtsalt tõlgendada, et kohapeal.
Ja ta hoiab silma peal asju, mis on käivitada enne,
nii et see on päris kasulik vahend kasuta console.log või konsooli,
üldiselt, vaid mängivad ringi JavaScript.
>> SAM GREEN: Nii läheb tagasi selle example-- teine ​​koodirida
siin on päris Arusaamatu minu peas.
Esimest korda lugesin seda, See oli nagu, mis toimub?
Mis juhtub on see funktsiooni deklaratsioon ütleb,
Mul on funktsioon nimega f2 mis on oodanud üks argument, f,
ja siis nõuab, et Funktsiooni f, mille
võeti vastu, et ta on argument ilma argumentideta ise.
Niisiis, mis oleks võinud tekitada segadust.
Kui me mõistame seda f2 võtab f1 argumendina, ja siis sees F2,
f saab nimetaks mis tähendab, et see koodirida,
Pärast neid kahte rida kood, tulemused "tere"
trükkimist konsooli.
>> Asjaolu, et me ei liigu funktsioonid umbes nagu väärtused
jõuab on üks kõige võimsaid JavaScript
programmeerimiskeelt.
Väljaspool kõik awesome asju saab teha,
niisama omadus keele poolest teed
et see teeb asjad lihtsaks programmeerida ja võimaldab
asju, mis ei ole eriti sobis hästi veebis
funktsionaalne programmeerimine ja funktsionaalne programmeerimine aspekte JavaScript
on üks kõige Võimas kontseptsioone, mis
eksisteerib JavaScript-- kui te küsite minult.
Cool.
>> Niisiis, järgmine asi.
Lisaks sellele, et funktsionaalne, seal on ka elemendid JavaScript
mis on objektorienteeritud, mis on üks väga
populaarne buzz sõnu infotehnoloogia.
Objektorienteeritud programmeerimine on tõesti populaarne asi.
JavaScript on versioon, et kus ma usun iga väärtus on ka
objekti, mis tähendab, et iga objekti mähib koos mõnede väärtuste arv.
Nii väärtusi, mis on lihtsa ehitusega, nagu täisarv, nagu varX võrdne 5
et objekt lihtsalt mähib et üks väärtus.
>> Aga me ei saa ka ette kujutada olukorda where-- me ei mõtle olukordi C
kus me tahtsime teha midagi struktuurideks,
näiteks, et mähib mitu väärtused kokku ja muudab
see on tõesti lihtne läbida asju ümber.
See, kui objekt on JavaScript.
>> Oluline on meeles pidada, kui ma ütlen, et objektide pakitud
mõned väärtuste arv kokku, mis funktsioneerib ka
väärtusi, mis tähendab, et funktsioone saab ka sees JavaScript objekti.
Ja sel põhjusel, et on oluline on see, et me sageli
arvan, et kutsuda meetod objektil, mis on
populaarne perspektiivis muudest Populaarseim objektorienteeritud keeles
Üks erinevusi on selles, et kõik, et meetod on JavaScript
on väärtus ladestunud objekti mis täidab mõned action-- võimalik
kasutades muid väärtusi, mis on sees nimetatud objekti, kuid mitte tingimata.
Nii võite ette kujutada olukorda, ma arvan ka natuke hull teed,
kus sa helistasid meetod üks Objekt üheks eesmärgiks, näiteks.
Nii, see on natuke funky niimoodi.
>> Ja saate muuta ka meetodid mis on seotud mingi objektiga
määrates, et meetodilt uue funktsiooni, mis on samuti
päris erineb teistest objektorienteeritud keeles, kus
kui me tunnistada objekt ja instantiate see,
Me ei saa muuta meetodeid, mis on seotud objekti enam.
Nii et on üsna erinevad.
Cool.
>> Nii et siin on näide, esimene, objekti tegevuses.
See on see, mida nimetatakse üldine eesmärk, mis
tähendab, et see ei ole mingit Eelkõige nimi, ei ole klassi,
see on lihtsalt mõned pakkimine väärtusi.
Ja nii, et näeb on meil see välimine paari looksulg siin
mis näitavad, et JavaScript ja öelda, et see on objekt.
Väärtused sees on on iga väärtused sees
Objekti mis peaks pakkida kokku.
Ja sees, et objekt, Siis on põhiväärtus paari,
kus võti viitab nimetus väärtuse sees objekt,
ja teine ​​side-- vastupidine koolon siin--
on tegelik väärtus et tuleks säilitada.
>> Nii et näete siin, et meil on võti nimega fn koos väärtus sam,
järgneb koma, öeldes peale next entry.
Siis võti nimega ln, mille väärtus on roheline,
järgneb koma, millele järgneb "print"
mis läheb on funktsiooni väärtus et kavatseb teha seda rida koodi.
Võtame samm tagasi ja lahti, mis siin toimub.
Nii et see on natuke keeruline, ja me näeme midagi uut
esimest korda.
NN "seda" märksõna on uus asi me näeme siin, ja mida see teeb
on, viitab praegune vastuväiteid ulatusega, eks?
Nii et kui me ütleme, see juhib kogu tee tagasi
kogu see object-- kui me teeme this.fn,
me läheme kogu tee tagasi Selle objekti, minge fn väärtus
ja saada sam, tõmba see kõik viis tagasi, jääda siin, ja seejärel liikuda.
>> Sihtrühm: Nii otsinguga, on et teha, sest parameetri
definitsioon?
SAM GREEN: Nii et küsimus oli, on ülekanne teha, sest parameetri
definitsioon?
Jah, kindlasti.
Mis juhtub siin tähendab, Selle dot ütleb, et JavaScript,
OK, ma saan mingi väärtus selle objekti ennast.
Ja siis vaatan kande nimetatakse fn, ja kui ta leiab,
see naasen, et value-- nii, et see on sam.
Aga ma oleks võinud ka kirjutada midagi, mis ei ole siin määratletud,
ja siis oleks lihtsalt tagasi undefined-- mis
on asi, mis JavaScript ei teha, mis võib olla kasu,
aga see on also-- kui teete kirjaviga, see võib põhjustada imelik vigu.
Nii see lihtsalt leidma mida iganes sa ütled seda leida
ja see ei hakka kaevata, kui ei leia seda.
See lihtsalt öelda, ma ei ole leida, ja seejärel liikuda.
Seega oleks defineerimata, pluss tühi, pluss perekonnanimi.
Jah.
Ja siis näeme, et kui me võiks siis minna ja access--
ja me nimetame tf.print () sulgudesse.
See saab helistada, et print funktsiooni ei argumendid, eks?
Aga kui me lihtsalt ütles tf.print () semikooloniga, ilma sulgudes,
kõik, mis oleks teinud on tõmmata välja funktsiooni väärtus,
aga tegelikult ei nimetanud.
Cool.
Hugh Zabriskie: kas teeme objekti?
SAM GREEN: Muidugi, teeme seda.
Nii et ma ei liiguta seda Näiteks konsooli.
Me võime ette kujutada, et mul on objekt.
Nii et see on lihtne objekt.
See on objekt, mis sisaldab kahte väärtused kaks võtit, kaks peamist väärtust
paari.
Nii et ma ei siis juurde salvestatud väärtuse sees Selle objekti tehes x.x1,
näiteks, ja ma saan 1 tagasi.
Samuti x.x2, saad selle väärtuse tagasi.
>> Ja nüüd tõesti lahe asi on, ma ei saa tegelikult midagi lisada selle objekti
pärast lõin ta.
Nii võite ette kujutada, olgem et mul on funktsioon.
>> Hugh Zabriskie: Sa pead tegema Shift-Enter.
>> SAM GREEN: Oh, see on tüütu.
Mida see ei meeldi?
Oh.
Siin me läheme.
Cool.
>> Nii et ma olen lihtsalt loodud Selle funktsiooni f, mis
läheb minna praeguse objekti ja printida this.x1.
Nii et kui ma lihtsalt helistada f poolt ise midagi läheb
juhtuda, paremale, sest puudub x1 valdkonnas objekt see viidates.
Aga kui ma ütlen, x.f = f, ja siis ma helistada x.f (), ma lähen tagasi 1.
See f funktsioon on nüüd seostatud objekti x,
mis on oluline nimetada x1 seotud väärtus 1,
Nii et kui me nimetame this.x1, see on leiame, mida ta otsib,
ja oleks võimalik printida väärtus välja.
Nii see on lihtsalt üks näide on mingi hull asju
saate teha objektid JavaScript.
>> Nii et versioon oli geneeriline versioon, tähendus
et oleme loonud objekti, kasutades seda ümarsulgudesse notation-- traksidega märke,
rather-- ja see on mugav, kui me lihtsalt tahame
Ühel juhul konkreetse objekti, kuid Mis siis, kui me tahame olla rohkem kui üks
sama liiki?
Ja vastus sellele Küsimus on, on asju
nimetatakse klasside JavaScript samuti.
Me ei saa luua funktsioon, mis teeb mingi initsialiseerimise
jaoks võõrkeha, ja me tahaks öelda, nagu,
minu class-- nii nime taaskasutatavate object--
võrdub funktsiooni, mis seab selle üles.
Mis siis oleks see ekvivalentne to loob objekti, mis
oleks lihtsalt meeldib, lokkis traksidega, str, koolon,
see on string, semikooloniga, lokkis traksidega.
See oleks generic objekti me initsialiseerida,
koos ühe erinevusega olemisega Järgmine rida loome prototüüp, mis
tähendab, et see on vaikimisi võti, mis lisame meie objekt, mis
on väärtus loetletud siin.
See tähendab, et kui ma uue Näiteks selle MyClass objekti,
see saab olema eelnevalt loodud sees see väärtus ehk tn ja teine ​​väärtus
nimetatakse MyPrint, mis on saab olema funktsioon.
Awesome.
>> Hea.
Nii et viimane asi, mida öelda JavaScript
on see, et see on tõesti kasulik, mida nimetatakse asünkroonne operatsioone.
Asynchronous tähendab, et me võib oodata opereerimine
lõpetada enne, kui me liikuma kohta, kuid edasi liikuda, kui me oodata
ja siis on midagi juhtuda hiljem.
Ja mida ma mõtlen, et on, siis Võib ette kujutada olukorda, kus
saadate taotluse mõned web server kusagil,
ja see läheb teile saata tagasi mõned suure tüki andmeid, eks?
Ja teie kasutaja võiks ootama Vahepeal, et see juhtuks,
ja midagi võiks olla toimub sel ajal.
Aga see pole suurepärane disain, eks?
Sa ei taha veebilehe külmutada.
Mis siis, kui kasutaja soovib klõpsa rippmenüüst?
See ei ole suur disain muster.
Selle asemel, põhimõtteliselt mida JavaScript ei ei ütleb,
OK, teeme seda operatsiooni asünkroonselt.
Nii nagu oodake taustal ja siis kui toiming on tehtud,
helistada tagasihelistamise funktsioon-- helistada mõne funktsiooni,
ei mõned action-- märku anda, et operatsioon lootsime lõpetada
on läbi.
Ja põhjus, mis on super võimas on, me saame teha midagi, sooritama argument,
midagi, ja siis ootama et midagi juhtuks.
Siis, kui et midagi lõpetab, me nimetame tagasihelistamise.
See on tõesti mugav, sest see võimaldab meil teha asju Web Audio API,
Näiteks nagu laadige helifaili serveritega
ilma ootama Kogu helifaili koormatud,
mis oleks tõesti halb kasutaja kogemus.
Cool.
>> Paar õppematerjalis silumine, sest see
on asi, mida sa lähed pead tegema osana oma projekti, garanteeritud.
Mainisin JavaScript konsooli.
See on super kasulik funktsioon kõik kaasaegsed brauserid,
Ja meil on tõesti kutsun teid, et saada mugav kasutada oma konsooli,
Kui sa tahad saada head JavaScript.
See on super mugav silumist, kuid see on ka
tõesti kasulik viinud kuidas kasutada API.
See võimaldab tõesti lihtne eksperimenteerimise
ilma et kirjutada mõned koodi ja seejärel kompileerida.
Sa ei pea tegema kõiki neid samme.
Sa võid kirjutada mõned koodi rida,
ja siis saad kohest tagasisidet kas see koodirida
worked-- väga mugav.
>> Ja ka üks tehniline note-- JavaScript konsool on näide
on REPL-- et on R-E-P-L, repl, mis tähistab lugeda, hinnata,
print loop.
Sa lähed kirjutad mõned asjad aastal, siis saad lugeda, mida sa kirjutasid,
see saab hinnata seda, ja see saab printida väljund, ja siis hakkan jälle.
See võimaldab teil kiiresti minema ringid iterating, mis on väga lahe.
>> Ma arvan, et tõeline viimase note-- seda on tegelik viimase noodi, jah.
Kuidas me tegelikult kasutada JavaScripti?
Nii et kõigepealt saame importida kasutades skripti tag
ülaosas või alaosas HTML file-- kuskil sees HTML-faili,
tõesti.
Ja jooksul script tag on kaks sub-viisid importiva JavaScript.
Esimene on tarvis eraldi JavaScripti faili
et me impordime tervikuna või omades ala koodi nagu skript
alustada, ja siis kurakriips skripti lõppu.
Ja siis me lihtsalt kirjutada JavaScript sees HTML faili.
Need on kaks võimalust.
Sa ei saa seda sees HTML.
Sihtrühm: Kas üks parem kui teine?
SAM GREEN: Küsimus oli, on üks parem kui teine.
Nii et jah, kui kodeerimine stiilis tava ja ka see on nagu disain tava.
On kaks põhjust miks oleks parem.
Esimene on, see teeb teie koodeksiga palju selgem ja arusaadavam, kui kõik oma HTML
on ühes kohas, kõik oma CSS on teine ​​koht, kõik Teie JavaScript
on kolmanda koha.
Õigus?
Ma arvan, et me oleks pidanud juba rääkisime umbes seda sections-- nagu CSS-- mida
mis on-- ja see läheb Sageli teise faili.
Nii sarnane mingi mõiste siin.
Võite ette kujutada, et JavaScript siiski ka uues rohkem kui ühel
HTML lehele, või ehk palju HTML lehed,
ja võttes, et JavaScript refactored ühte
fail, mida saab importida enam kui ühes kohas
võimaldab kood olla kuidas rohkem hooldatav.
Võite ette kujutada, tehes ühe muuta, et JavaScript
ja võttes seda muuta 100 erinevat faili.
Ja selle asemel, saame lihtsalt muuta ühes, mis on nii võimsam.
Kas ma teie küsimusele vastata?
Cool.
>> Me võime ka kirjutada konsooli, nagu me varem mainitud.
Ja jälle üks viimase note-- Web Audio on ehitatud,
sa ei pea laadida midagi.
Cool.
Kas on mingeid küsimusi, kas sul on lisaküsimusi JavaScript,
Enne astume?
>> Sihtrühm: [kuuldamatu]
SAM GREEN: Okei, lahe.
Nüüd ta läheb rääkima API.
>> Hugh Zabriskie: Cool.
Aitäh, Sam.
>> SAM GREEN: Muidugi.
Hugh Zabriskie: Awesome, nii me liikuda edasi JavaScript.
Nii me rääkisime mõned olulised JavaScript,
ja need on muutujad, funktsioonid, esemeid, toimib muutujad,
asünkroonse laadimise.
Need on kõik asjad, et sa vaata kui te kasutate Web Audio.
Nii et me lihtsalt räägi sellest esimene kõrgel tasemel.
>> See on API, nii et see on midagi mis on ehitatud, nagu Sam ütles,
otse JavaScript et te kasutate konsooli.
Ja see on tegelikult nagu C ++ koodi mis on tõesti ehitatud Chrome
Firefox, ja kõik need brauserid.
Seega on peamine idee Web Audio on see, et teil on
selline gaasijuhtme audio, eks?
Nii et teie audio andmeid tuleb mingisugune.
>> Seal on mingi kolm peamist forms-- sul on generaatori, mis
loob siinus, koosinus laine, me näeme, kuidas see toimib.
Teine väga levinud üks, Loomulikult on MP3.
Ehk hakkate koos laul, ja siis
teha mõned filtreerimine seda ja väljund
selle-- et saaks võimalikult allikas.
Ja siis lahedaid üks on mikrofoni.
Nii saate mõned väga põhilised kõned JavaScript
saada ligipääs mikrofon, ja nii et kui sa
tahtsin app nagu pigi detektor,
näiteks mis võtab Sinu hääl ja arvud välja
pitch-- väga lihtne viis, et.
Võite lihtsalt selline lugeda aastal, nuputada, sagedus,
ja siis väljund number.
Nii me näeme, kuidas see töötab, samuti.
>> Sihtkohaks on põhimõtteliselt kus audio andmed on väljund.
Nii üldiselt, see on nagu sülearvuti kõlarid.
Teised valikud on nagu ScriptProcessorNode--
me jõuame tippe second-- kuid põhimõtteliselt,
kas sa oled pannes heli välja läbi arvuti kaudu kõlarid,
või oled selline salvestamist, nii et sa hoiustamisel audio andmeid.
Ehk kui keegi loob muusikat oma app ja siis
mida soovite salvestada, et võib-olla nagu eksportida see SoundCloud, et example--
et oleks üks võimalus seda teha.
Kõik lõbusaid asju, mis me räägime,
juhtub nende kahe punkti vahel, kus me koormus muusika
ja siis väljund on.
>> Nii et ma lähen rääkima viiest etappidel audio tootmist teine.
Meil on see asi, mida nimetatakse AudioContext, mis
on see väike ümbris näeme siin.
Põhimõtteliselt, mida AudioContext on-- kui me minna JavaScript konsool kohe,
saame luua just nüüd.
Lihtsalt näide repl, eks?
Me loed, hindamise ja ta prindib.
>> AudioContext on ülemaailmne riik.
See on struct, see objekt siin, ja see hoiab info
asju, mis on kestnud Ekraanil on seotud audio.
Üks näide on praegune aeg.
See ütleb teile number sekundi väga täpselt,
kuna veebilehe koormatud.
Nii et see on väga kasulik natuke vara, mida saab kasutada.
See on lugeda ainult-- Ma arvan tegelikult võite proovida, et seada see väärtus.
See ütlen teile seada, ja siis kui te printida
again-- ta ei tegelikult üsna tööd.
Seega on ainult lugemiseks omadused JavaScript.
See on tõesti kasulik, kui sa oled selline sünkroniseerida
palju erinevaid informatsiooni, kui sa oled
Selline mängides erinevaid helisid.
>> Teine väga kasulik üks on seoses alal.
Kindlasti, kui oled huvitatud, siis üritab seda omal konsooli õigus
nüüd.
Nii et see on AudioDestinationNode.
Põhimõtteliselt, mida see ütleb on, kus on väljund läheb?
Nii on kaks reaalset võimalust siin.
Tavaliselt vaikimisi on lihtsalt oma kõlarid,
nii AudioDestinationNode põhimõtteliselt lihtsalt ütleb
on null väljundid heli tulevad, saadetakse kõneleja.
Nii üldiselt, sa ei pead mängima sellega.
Kui olete huvitatud tegelikult kasutades ScriptProcessorNode salvestamiseks,
kindlasti lase mind Kirjuta hiljem, sest see on
veidi keerulisem.
Aga üldiselt, sa oled lihtsalt lahke ning väljastab heli mingis vormis.
Nii lahe, me hüpata siia tagasi.
Sihtrühm: mul on kahju.
Hugh Zabriskie: Jah.
Sihtrühm: Ma tean, et sa ütlesid, et rääkida sulle hiljem salvestamise puhul.
Kas sa liides, mis koos Pro Tools?
>> Hugh Zabriskie: Mis Pro Tools?
Vaatame.
Ma ei arva nii.
Nii läheb vahel klient, mis on JavaScript
konsooli, ja oma tegelikku arvuti, on üldiselt
midagi, mis on selline on tabu, kui te
tahe, millist laadi tõttu the-- see on selline disain asi,
aga sa püüame hoida brauseri eraldi kasutaja tegeliku arvuti.
Üldiselt on ainus asi, sa oled võimeline ühendus on mikrofoni või kaamera.
Sa ei ole võimalik, ma ei usu, kasuta Pro Tools.
Samas, kui sa loodud pala Pro Tools,
eksporditakse, et võid laadida, et siin, filtreeritakse, näiteks
protsess, mis ja salvestada et arvesse Audio Destination-- või ei-- kera
Protsessor sõlme.
Ja siis sealt võid eksportida, et SoundCloud, siis
võiks saata see talle või iganes soovid sealt.
>> Aga seal on selline kerge barjääri vahel musitseerimine arvutis
ja musitseerimine online.
>> SAM GREEN: Ja see on ei unikaalne selles API.
See on turvaelement Chrome, ja Ma arvan, et iga teine ​​kaasaegne brauser.
Brauser on iseseisev.
Nii näiteks veebilehe saa kasuta JavaScript sisse lülitada heli
kohta oma kõlarid, näiteks.
Või siis ei saa arvuti välja lülitada.
Ja ei ole vahepunkti Nende kahe asja, eks,
nii kas teil on täielik abstraktsioon,
või sa avada turvaprobleem üürile
programmeerija pahatahtlikel teha mida iganes nad tahavad oma sülearvuti.
Ja sellepärast Chrome on iseseisev.
>> Hugh Zabriskie: Jah.
Kas see on mõtet?
Cool, lahe.
Ma lihtsalt lähen näita näide ühe.
See on päris palju kui saad, nii
juurdepääsu kasutaja arvutisse.
Kui teil on USB-klaviatuuri ühendatud, saate midagi, mida nimetatakse Web
MIDI API, mida me ei tõesti siin rääkida,
aga see on teine ​​API, mis on ehitatud vähemalt Chrome-- uuesti,
see on põhjus, miks me armastame Chrome-- Ma arvan, Firefox või Safari
see on lihtne asi, mida google-- erinevad brauserid on
erinevat toetust, mille API nad on rakendatud.
Aga kui sa tahad ühendada klaviatuuri ja töötada, et informatsiooni,
Selline Kirjuta klaviatuuri andmed üle arvutisse
ja siis kasutada, et online, see API on koht, kus sa töötavad selle.
>> Cool.
OKEI.
Nii kiiresti liigub siin.
Kuidas me seda teeme õigel ajal?
>> SPEAKER 1: Umbes 15.
>> Hugh Zabriskie: 15 minutit aega?
OK, lahe.
Nii me rassi ees siin.
>> Ühesõnaga, Peaasi mõtled seda kui gaasijuhe
on see, et iga samm gaasijuhe on rida audio sõlmedes.
Meie allikas, oletame, on generaatori.
Me peame looma ostsillaator sõlme.
Ja see on lihtsalt selline on vähe funktsioon--
ja nad kõik põhineb välja audio kontekstis siin.
>> Sihtrühm: Kui ta ütles, generaatori, kas see tähendab,
see on tegelikult sõna otseses mõttes läheb kahe erineva pooluse edasi-tagasi?
>> Hugh Zabriskie: Ei, see on nagu digitaalne esitus.
See on tegelikult rakendatud C ++.
Ma tegelikult ei tea näitajad kuidas see tegelikult rakendatud,
Aga see kõik töötab kahendjada.
Tegelikult, jah.
See oleks öelda, et ma võiks tegelikult, kui oled huvitatud,
Ma võiksin sulle saata natuke rohkem Teavet lainekujusid
hoitakse võttes digitaalsel kujul.
OK, lahe.
>> Nii et me tekitama toon nagu sine laine või midagi sellist, võibolla
440 Hz.
Loome ostsillaator.
Kui me tahame, et helitugevust, me ühendada midagi kaasa GainNode,
mida me võiks teha .creategain.
See seab oma mahust.
Te saate andke et peale tahes teiste options-- hästi,
nii audio puhver allikas sõlm on koht, kus te võite
salvestada MP3, et olete laaditud.
>> Biquad filter on filtreerimise kui sa tahad teha kõik põhja välja
laulu, või midagi sellist.
Jumal hoidku soovite teha baasi välja laulu.
Ja AudioDestination sõlm on jällegi nagu kus meie viimistlemist on.
Kui sa oled kunagi huvitatud näha kõiki erinevaid valikuvõimalusi,
minge vahekaardile ja lase auto-complete tulla.
Ja kui sa luua, näete kõiki erinevaid asju, mida saab luua.
Saate luua dünaamilisi script protsessorid,
Ma isegi ei tea, mida see on, segamiseks kanal ühinemised
ja kanal lõhkujad ja kõik.
Cool.
>> Nii et see on lihtsalt Näiteks torujuhtme.
Nii et meil on kolm allikat tulevad.
Võib-olla on need signaalid, võibolla need MP3.
Üks läheb läbi filter, teine ​​on
saada moonutatud teise üks panoraamimistoimingute vasakule ja paremale.
Seda saab teha igasuguseid asju ja nad kõik segi ümber koos,
ja siis välja jõuab audio lõpus, kui alal.
See on näide sellest, mida rohkem keeruline Web Audio kood välja näeb.
Loote kõik need erinevate objektide siin--
Ma ei ole kindel, et see.
Ei, see ei ole suumida.
OKEI.
>> SAM GREEN: Sul ei kontrolli, Scroll-Up.
Hugh Zabriskie: kontrolli Scroll--
SAM GREEN: Ei, ei.
Control--
>> Hugh Zabriskie: Oh, Control leidke?
Oh, gotcha.
Jah.
Wow, nope, nope.
OKEI.
Ma ei tee seda.
>> Nii et jah, see esimene osa siin, sa näed
loome kõik need erinevad sõlmed kontekstist välja.
Me lihtsalt lõikuva neid koos teine ​​osa
mida see funktsioon nimega Connect.
See on tõesti võti funktsiooni Web Audio.
See tähendab lihtsalt, kui sa oled teinud midagi heliga ühe sõlme,
andke seda kellelegi järgmise sõlme.
Nii et meil on allikas, seda ühendab analüsaator,
analüsaator teeb midagi sellega, läheb see moonutusi ja nii edasi,
ja sihtkoha allosas siin.
Cool.
OK, nii et me hoiame liigub.
>> Pipeline-- jälle need on kõige levinumad torujuhtmeid
nii et me räägime kõik need asjad moonutus, liigutamisel, kõik see kraam.
Kui sa oled tõesti huvitatud kasutades asju Pro Tools,
need ilmselt teile huvi pakkuda.
Kui ei, siis äkki sa lihtsalt tahad mängida heli,
või äkki sa lihtsalt tahad seada helitugevus heli.
Need on kaks kõige levinumat omamoodi torujuhtmete audio tootmist.
>> Jällegi, kuidas saate seda aastal kui oscillator-- nii, olgem
teha demo, mis siin.
Nii et me läheme luua lihtne audio kontekstis siin
ja et me läheme luua meie generaatori.
Nii et on taas, me oleme lihtsalt helistame Loo ostsillaator.
Me läheme määrata sageduse kohta et 440 Hertz, igaühe lemmik.
Siis me ühendada, et sihtkohta point-- mis on kõneleja, et
kontekstis kohtades.
Lõpuks, me lihtsalt öelda, alustada nullist sekundit pärast, ja me oleme usaldusväärne?
>> [Helina]
>> Hugh Zabriskie: Läksime.
See on lihtsalt siinus.
OK, lahe.
Ja siis lõpetame selle.
>> Sihtrühm: Kust et tagasiside tulevad?
>> Hugh Zabriskie: tagasiside?
Oh, ilmselt meie mikrofonid.
Nii et jah, see on, kuidas seda teha.
Ja tegelikult, kui ma pidin hoida seda näidata, siis
võib olla sagedus väärtust, kuna see jookseb,
et on tore asi mängida.
Cool.
See on alati väga kauni esitada.
>> SAM GREEN: me ei mõtlema, et kas me oleme?
Hugh Zabriskie: Jah, see on vastik üks.
Nii, puhver loading-- ma näitavad näide, et päris lõpus.
See on asetamise MP3.
Ja mikrofon, saate kasutada vaid funktsiooni nimetatakse Navigator.getUserMedia ()
taotleda juurdepääsu kasutaja mikrofon, et teave.
>> Siin on filtreerimine, ma muudkui liigub see.
See on päris kõrge, kuid filtrid lihtsalt võimaldab teil
>> [Piiksumine]
Filtreerimine ka saate luua asju nagu roosa
müra, pruun müra, valge müra.
Kui soovite luua puhas müra, mis mõned inimesed armastavad jändama,
mida saab kasutada Web Audio filtreerimine teha.
>> Audio Panning-- nii kujutada kui olete kirjalikult mängu
ja sa tahad heli tunduda see tuleb, nagu,
shooting üle ekraani, siis saavad kasutada panoraamimistoimingute audio
luua selline koonus, mis like-- see on päris mathy,
aga see on tegelikult väga lahe, kui sa seda tööd,
ja seal on mõned head õpetused on võin saata teile.
Põhimõtteliselt saab sellist ning luua heli
midagi läheb teel 3D viis.
Ja kui sul on DJ huvi, saate alustada segamist ja rist pleegib laule.
>> See on lihtsalt mõned väga põhilised kood, põhimõtteliselt mida ma tegin enne.
See määrab maht generaatori, et me loome ostsillaatori
mis loob signaali kuju.
Me loome GainNode, seame oma sagedust,
ja seejärel ühendage generaatori kuni GainNode, mis siis põhimõtteliselt muudab
kui palju signaal on lubatud läbi.
Aga tõesti, see on digitaalne asi, nii et see on rohkem Lihtsalt-- yeah.
See ei ole mis tegelikult toimub, kuid see, mis juhtub reaalses elus
koos kasu.
>> Sihtrühm: --quantization mahust parameetri?
Hugh Zabriskie: Vabandust?
Sihtrühm: Kas see on kvanditud maht parameeter?
Hugh Zabriskie: Jah.
Ja see on üks asi, mida ma olen tõesti Puudulike edasi oma teadmisi,
kuidas tõus töötab digitaalse tasandil.
Ma tean, et tegelike signaale, see on põhimõtteliselt
kontrolli, kui palju sa oled võimendamise signaali.
Niisiis, jah.
Ma saadan sulle rohkem informatsiooni et kuna ma uudishimulik tegelikult
rohkem teada seda.
Aga põhimõtteliselt parameetrid on, üks on fold--
valjem signal-- ja null ei ole signaali, või sa ei kuule mingit heli.
Me vahele demo aeg, et kuna see on põhimõtteliselt see, mida ma tegin enne.
Ja jälle Context.Destination on audio sihtsõlme.
Awesome, OK.
>> Nii et ma teen kiire kaks demos.
Kuidas me seda teeme õigel ajal?
>> SPEAKER 1: umbes 10 minutit.
>> Hugh Zabriskie: 10 minutit?
Suurepärane!
Awesome.
>> Nii esimene ma lähen ei, seda nimetatakse Minu lemmik laul.
Nii et see on lihtsalt vähe HTML JavaScript.
Me läheme on kaks nuppu lehel mängida minu lemmik laul
ja lõpetage minu lemmik laul.
Ma muudan seda.
>> Sihtrühm: Kata oma mikrofoni.
>> Hugh Zabriskie: Jah.
Ja ma olen laaditud siin skript basically--
ja see on tõesti kasulik laadimise MP3,
nii see lihtsalt muudab laadimise MP3 viis kiirem.
See on põhimõtteliselt ainult ümbris.
See muudab protsessi laadimist MP3 palju kiiremini,
muidu sa kasutad HTTP taotlust, selline nagu see, mida me teeme
praeguse tükk komplekt Server.
See on tõesti kole, siis ei taha seda teha.
>> Nii see kutt, Boris VKEd, kirjutas tõesti kasulik väike tööriist nimega BufferLoader.
Kõik, mida teha, on lihtsalt mööda seda kontekstis, te kaotate seda list--
või, jah, on see nimekiri JavaScript?
SAM GREEN: Array.
Hugh Zabriskie: Oh, see on massiivi, mis on õige.
See on massiivi rajad erinevate faile.
Ja siis andke seda funktsiooni.
See on tagasihelistamise rääkisime umbes koos asünkroonse laadimise.
See saab nimeks kui faili laadida.
Ja see funktsioon, mida nimetatakse kui faili laetud võtab selle ümbermõõt
massiivi koormatud puhvrid.
Nii et tekib siin.
Põhimõtteliselt BufferList on saab olema üks value--
või see saab olema hulgaliselt pikkus üks, mis on see indeks
null kogu laaditud fail MP3.
Mida teha, kui ma lõpetan Laadimine on, ma lihtsalt
luua puhvri allikast, mille on audio puhver allikas sõlme.
Järgmine samm on mul asetad source.buffer kui täis laetud puhver
alates BufferList-- see on palju buffers--
ja siis ühendada, et audio puhvrit alal.
Mis siis, et see läheb teha on lihtsalt lihtsalt panna MP3
otse läbi väljund, ja alustada kohe
upon saada see kõne.
>> Cool, et vaatame see juhtuda tegevus.
Minu [kuuldamatu] siin, vaatame.
Nii et ma olen lihtsalt kavatse alustada põhilised server.
See on midagi, mis sa pead tegema kui sa oled
tehes taotlusi failide laadimist.
Ma hakkan põhi server.
See on põhimõtteliselt kogu oma Pset kohe ühes reas,
aga see on lihtsalt hakanud serveri pordi 80/80.
Nii me läheme siia, me läheb koormus 80/80,
me läheme Minu lemmik laul.
Nii et kui ma tabanud "Mängi minu lemmiklaulu "just nüüd,
see saab laadida minu lemmik laul ja mängida see--
[MUSIC - KOTKAID, "LIFE kiirelt LANE "]
--which juhtub olema "Life in Fast Lane "The Eagles.
Nüüd, ma ei tabanud "Stop minu lemmik laul "ja kordus see.
>> [MUSIC - KOTKAID, "LIFE kiirelt LANE "]
>> Ja kui ma lähen üle lohutada, sest Ma kasutasin globaalne muutuja siia
jälgida seda väärtust, siis tegelikult Nüüd tunnustatud konsooli.
Nii et see auto-tekitab minu jaoks.
Nii see on, mida mängib just nüüd, ja ma lihtsalt helistada source.stop ()
selle peal.
Noh, sa tead, mida?
Just nii kutid kuulnud seda song-- võite tunda seda laulu.
>> [MUSIC - Rick Astley, "mitte kunagi annan YOU UP "]
[MUSIC - KOTKAID, "LIFE kiirelt LANE "]
Me oleme nüüd kõik on rickrolled.
OK, suur, liigub.
Cool.
Nii on see põhiliselt näide kuidas võid laadida MP3 file--
[MUSIC - KOTKAID, "LIFE kiirelt LANE "]
--and mängida ja peatada ja käivitada.
Ma oleks võinud teha palju rohkem [kuuldamatu]
>> Viimane teen on, Ma näitan sulle [kuuldamatu].
>> [Muusika mängib]
>> See on nagu, ogg.wave.mp3.
Ma arvan, et kui ma õigesti mäletan, Olen sattunud mõned küsimused .m4a,
aga ma ei ole kindel.
Ma arvan mp3.wave--
>> [MUSIC - Rick Astley, "mitte kunagi annan YOU UP "]
>> OK, suur.
Ma ei öelnud seda.
Igatahes, tere.
Nii et meil on see avatud.
Nüüd kõik, mida ma teha, on, ma põhimõtteliselt loodud põhi süntaksi luua muusikat.
Nii et kui ma teen midagi lisada g4 1. 2, mida see tähendab, et
lisada piano märkus, G4, mis on neljas G
kuni klaveril alt.
Nii et see on omamoodi MIDI-öelda nii neile, kes on muusika aluseks,
see on lihtsalt MIDI märkmeid.
>> Sihtrühm: See on G Lähis-C, eks?
>> Hugh Zabriskie: See on G Ülaltoodud Lähis C, mis on õige.
>> Sihtrühm: Üle Lähis C.
>> Hugh Zabriskie: Jah.
Tegelikult, jah.
Ma arvan, et ma tegelikult teha see üks [kuuldamatu]
nii et see võib olla oktaavi kõrgemal.
Vaatame.
Kui ma tabanud Play--
[Korduvad PIANO MÄRKUS]
--we're läheb kuulda.
Idee on selles, et ta tegutseb nagu käsurea oleks,
nii et kui ma lähen üles ja alla minu klaviatuuri, siis
saab minna tagasi eelmisele käsud, mis on päris kasulik.
Ja allpool on minu nimekirja lugusid, mida kõik töötab loop.
>> Sihtrühm: Sa olid eeldades 88-key klaviatuuri, eks?
>> Hugh Zabriskie: Küsimus oli, ma eeldades 88-key klaviatuur,
ja jah, ma olen.
Mida ma tegin on mul Põhimõtteliselt võttis 88 proovid
Klaveri, üks iga noot.
Ja nii iga kord, kui kuule märkus nüüd,
mis on tegelikult loop, mis näeb välja like-- see muutub mängitakse loop,
nii iga noot, see töötab.
Mis juhtub on see, ma luua puhvri jälle
Ma luua kasu sõlme helitugevust.
See lihtsalt tõesti keeruline viis öelda ma
salvestada puhvris source.buffer.
Ma annan võimenduse, ma ühendage see kasu,
kasum on ühendatud väljund, ja siis ma mängin seda.
Nii et on selline protsess võttes puhvris allikas.
>> Sihtrühm: Kas sa tegelikult võtta, et kuiv heli ja teha see märjaks [kuuldamatu]?
>> Hugh Zabriskie: Saate, yeah.
Seal on re-verb, seal on viivitus, moonutamine.
Võite põhimõtteliselt panna midagi vahel, et võileib of-- hästi,
torujuhtme on parem metafoor, Lisada saab midagi selles.
Cool.
>> Nii et ma lõpetada demo siin teile tunde
vaid õhuke mitu korda sa saab sõita, et funktsiooni korraga.
Nii et ma lähen siis võta see.
Ma lähen luua generaatori selle-- põhimõtteliselt mida does-- see on tõesti
Selline keeruline syntax-- kuid see on läheb tekitada lisades sõita,
ja lihtsalt mängima hakata neid hindab ta neid.
[Astudes PIANO]
>> Nii saame lihtsalt teha väike muusika siin.
[Astudes PIANO]
>> Mida see käsk teeb, näiteks on
ta võtab kolm märgukirja jaoks klaver ja siis paneb neid B3.
See süntaks võib teha vähe mõttekam
neile, kes on muusika taustal siin.
>> Võin lisada kick drum.
Ma saan--
>> [Astudes INSTRUMENTS]
>> --just mängida seda.
>> Nii saab make--
[Astudes INSTRUMENTS]
See üks on natuke rohkem tüütu.
[Astudes INSTRUMENTS]
>> Nii et juhuslikult lisab kuiva taldrik iga 16. märkuse, mille 16%
[Kuuldamatu].
>> [Astudes INSTRUMENTS]
>> Jah, nii kuidas see works-- see alati 4: 4.
[Astudes INSTRUMENTS]
>> Jah, nii nelja kvartali ja 16/8.
[Astudes INSTRUMENTS]
>> Nii keskmiselt, saad 60% vaatamiste 16. märkmeid.
>> Niikuinii, see oli lihtsalt Selline uhkeldama
mõned asjad, mida võiks ehitada veebiheli API.
See on tõesti võimas, see on tõesti kiire, ja saate teha palju lahedaid asju
sellega.
Nii uuesti, teil on küsimusi, Kirjuta myself-- Hugh-- või Sam,
ja ausalt, Google on ton head vahendid.
Iga viimane küsimusi?
Jah.
>> Sihtrühm: Nii pääsete sisseehitatud mikrofoni.
Mis siis, kui sa tahad kasutada parema mikrofoni?
Hugh Zabriskie: Kui sa tahad kasutada paremini mikrofoni?
Nii Ka see on osa veevõtu vahel Chrome
ja ülejäänud arvuti.
Kui see on saadaval API, nagu Web MIDI API,
siis võiks ilmselt leida mõned hacks, aga üldiselt ei ole nii võimalik.
>> SAM GREEN: Võite also-- kõik Chrome'i teab
on see, mida teie Vaikemikrofon on, ja see ligipääsude.
Nii et kui teil oli mikrofoni võid seada arvuti vaikimisi mikrofon,
võid kasutada seda, et tee ja see oleks ilmselt tööd.
Hugh Zabriskie: See on hea koht.
Ma pole kunagi proovinud, kuid sa võiksid sellist
of-- kui te suunata sisend kõneleja, sa võiksid teha, et, jah.
>> Iga viimane küsimusi?
Cool.
Noh aitäh poisid nii palju vaadates.
Ma olen Hugh.
SAM GREEN: ma olen Sam.
Hugh Zabriskie: Ja see on CS50.