>> SAM GREEN: Sveiki, visiem.
Laipni lūgti mūsu seminārā.
Mans vārds ir Sam.
Hugh Zabriskie: es esmu Hugh.
SAM GREEN: Un mēs runāsim šodien par JavaScript un Web audio API.
Tikai, lai sāktu ārā, tas ir kontūra Mūsu darba kārtībā seminārā.
Mēs ejam, lai sāktu, runājot par kāpēc jums vajadzētu būt interesē Web
Audio API, kāpēc ir JavaScript valoda, jums ir nepieciešams par to,
un tad runāt par JavaScript essentials-- tik līdzīgi,
staigāt jums caur kādu pamati valodas,
un tad runāt par audio API augstā līmenī.
Tad, Hugh stāstīs par kādu no posmiem audio ražošanu
un tad demo šo awesome sequencer Projekts viņš uzcēla un parādīs kodu.
Un tad, mums būs laiks Jautājumi beigās cilvēkiem
kuri šeit dzīvo.
>> Hugh Zabriskie: Cool.
>> SAM GREEN: Cool.
>> Hugh Zabriskie: Cool.
Es atpakaļ uz augšu.
>> SAM GREEN: Tātad, pirmās lietas vispirms.
Tātad viens no lielas lietas par Web Audio API
ir tā, ka tur nav noteikts up nepieciešams.
Tas nāk iebūvēts līdz Lielākā daļa mūsdienu pārlūkprogrammām,
tostarp Chrome, EDGE, kopumā ķekars others-- visiem tiem
ka lielas porcijas cilvēki izmanto šodien.
Tāpēc nav izveidota, malā no vienkārši kļūst
web serveri iet, lai jums, lai sāktu strādāt
par savu projektu, kas ir lieliski.
>> Mēs iesakām diezgan stipri, ka jūs uzskatāt
izmantojot Chrome JavaScript web izstrāde,
tikai tāpēc, ka tā izstrādātājs instrumenti ir ļoti spēcīga.
Kā piemēru tikai to, ko mēs domājam sakot atvērt savu JavaScript
console-- ja jūs iedziļināties Chrome un paskatās jebkurā tīmekļa lapā,
un jūs pa kreisi klikšķi Pārbaudiet Element, un pēc tam
doties uz šo maz nolaižamā tieši šeit un jūs noklikšķiniet uz konsoli,
jūs redzēsiet, ko paver izskatās kā komandrindas daudz kas jums
var redzēt uz jūsu Mac, vai uz ID.
Un tieši tāpat, ka mēs varam tipa komandas šeit, piemēram, Clear,
un citas komandas, piemēram, ka.
Mēs varam radīt mainīgos, kā mēs redzēsim vēlāk JavaScript.
Un tā kaut ko mēs varam darīt JavaScript, mēs varam darīt ar konsoli,
un tas ir super ērts veids, kā sākt spēlēt aptuveni ar API
un kļūst apmierināti ar JavaScript tiesības pie nūja.
Nav nepieciešama set up, kas ir patiešām jauki.
Cool.
Awesome.
>> Tik vienkārši vēl viena lieta, lai pievienotu.
Ja jums ir kāds questions-- ir daudzi no jums, kas nav šeit dzīvot,
justies brīvi uz e-pastu us-- šos ir mūsu e-pasta adreses.
Ja jums ir jautājumi Jūs nevēlaties, lai jautāt mums,
piemēram, ak man ir kļūda manā kodu, vai kaut kas
tas ir mazliet vairāk īpašs, varbūt Google to vispirms.
Ir daudz lielu resursu par tīmekļa audio API, kas tur.
Tas ir tiešām labi dokumentē un tas tiek
ar ton cilvēku lieto nozares, un cilvēki, kuri ir tikko
ēku fun stuff par sevi.
Tātad ir jābūt daudz resursu, kas tur.
Awesome.
>> Atdzesē, tad kāpēc Web Audio API?
Šī diagramma ir mazliet no evolūcijas ceļā
skaņas tīmeklī ir pieaudzis laikā.
Bgsound bija kā oriģinālā HTML tagu ka Internet Explorer izmanto, lai atbalstītu.
Tas tikai ļāva diezgan pamata skaņām, funkcionalitāte nebija ļoti spēcīgs,
un jūs nevar darīt sarežģīta sekvences,
vai kontrolēt, kad skaņa sākās un apstājās ļoti stabili.
Tātad, tas nebija īpaši labi attīstīta.
Tad pēc tam, Flash nāca along-- kas,
Es esmu pārliecināts, ka jūs puiši visi esam iepazinušies ar Flash-- varbūt nav, kā tā darbojas,
bet jūs esat noteikti redzējuši.
Jūs esat ieguvuši, lai atjauninātu savu Flash Plug-in, visu šāda veida stuff,
un tas noteikti pagarināts diapazonu funkcionalitāti, kas bija pieejama.
Bet padarot lietotājam instalēt plug-in ir noteikti
atmaksas to skaitā Flash jūsu pieteikumu, vai ne?
Jo tad tu esi atkarīgs no lietotājs iet un atrast šo plug-in,
un, iespējams, tiek ieslēgts off šis papildu solis
viņiem ir nepieciešams, lai izmantotu jūsu app.
Un tad tur varētu būt atjaunota kas būs pauze jūsu visu pieteikumu,
un tas beidzas ar to, murgs attīstītājs, too.
Tā, ka bija barikādes.
>> Un tad pēc tam nāca kopā, HTML audio tag, kas
ir iezīme modernāka HTML-- kas protams ļāva daudz vairāk sīkumi,
bet pat lietas, jūs varētu darīt tur bija nedaudz ierobežota tikai
kā rezultātā lietām ka HTML varēja.
Tātad, ja JavaScript API, Web Audio API,
kļuva par standarta praktizēt pāri pārlūkprogrammās,
kas patiešām paplašināja komplektu iespēju izstrādātājiem
patiešām nokļūt ēkā cool stuff tīmeklī.
Ilgu laiku tur bija ir patiešām spēcīgi instrumenti
native audio programmas, like-- visi zina GarageBand,
un tad, protams, ir vairāk profesionālās audio sajaukšana pieteikumi,
un šāda veida sīkumi.
Bet tur nebija tiešām labs Cloud-- nav
Cloud, jā, es domāju, Cloud-- tīmekļa platforma
kas ļauj izstrādātājiem veidot lietojumprogrammas cilvēkiem
darīt audio sajaukšanos.
Un kā viņš jums parādīs vēlāk, Web Audio API
ļauj patiešām jaudīga sīkumi notikt patiešām vienkārši,
kas ir diezgan foršs.
Tātad tas ir norādījums, kāpēc jūs vajadzētu skatīties pārējo seminārā,
būtībā.
>> Un tagad, es esmu gatavojas runāt par daži JavaScript-- tikai pamatelementi
valodas, lai mēs var būt tajā pašā lapā
kad mēs runājam par API mazliet vēlāk.
Cool.
>> Tātad, tas ir kopsavilkums.
Es aizmirsu tas bija šeit.
Jā.
>> Hugh Zabriskie: Ir divi slaidi šeit.
>> SAM GREEN: Šis ir kopsavilkums daži no ierobežojumiem
no citiem saistošiem, vecās metodes.
Un tad tagad, mums ir šīs lietas.
Cool.
Awesome.
>> Tātad, JavaScript essentials.
Pirmās lietas, pirmkārt, tur ir diezgan būtiska atšķirība
JavaScript pret in valodas, piemēram, C, tādā veidā
ka mainīgie ir izveidots.
Tātad C, mēs esam pieraduši rakstīt mūsu mainīgos, vai ne?
Un es nedomāju veidu, piemēram, ierakstiet tos, es domāju tipa
piemēram, noteiktu tiem type-- nozīmi piemēram, int, pludiņš, char.
In C, mēs patiešām izmanto, lai kam, lai izveidotu mainīgo
un tad brauciet uz šāda veida, lai visu laiku, ka mēs izmantojam šo mainīgo.
Un tas ne vienmēr ir sliktāks, bet tas ir iespējams, grūtāk.
Viens no atdzist iezīmes JavaScript ir
ka mainīgie ir tas, ko sauc "dinamiski drukāti", kas
nozīmē, ka es varu izveidot mainīgs ar šo sintaksi,
varX ir vienāds ar 5, piemēram.
Kas sākotnēji rada vesels skaitlis variable--
tieši zem kapuce somewhere-- bet es
var mainīt šo mainīgo atsaukties uz virkni
bez darīt kaut ko, piemēram, radot jaunu mainīgo.
Man nav jāuztraucas par tipa maiņu.
JavaScript zina, ka tips ir mainījies, un tas notiek dinamiski.
>> Tātad, ir priekšrocības un trūkumi, kas,
jo ikviens, kurš strādāja JavaScript uz brīdi varētu zināt.
Ir reizes, kad jūs varētu nejauši
mainīt mainīgo tipu un nav rīkoties, ka veida izmaiņas,
un tad JavaScript var crash-- vai izņēmums
izmesti, jo jums ir nepareizs veids, kad jūs sagaida viena veida.
Cool.
>> Tātad, scoping-- kas ir kā, ja mēs atcerēties agri nedēļas gaitā,
attiecas uz to, kā redzamā mainīgo ir un kādā jomā kodu.
Visi, kas izskatās ļoti līdzīgi uz to, kā tas izskatās C.
Tātad mainīgie ir scoped parasti ietvaros cirtaini bikšturi ietvaros funkciju,
un tad tur ir arī globāli scoped mainīgie, kas
are-- ja jūs rakstīt mainīgais ārpus no funkciju,
tas būs redzams visā tekstā.
>> Viena atšķirība starp JavaScript un C, jo īpaši,
ir tas, ka, ja jūs atzīt globāls mainīgs jebkur teksta failu
tas ir redzams katrā funkciju šajā teksta failu.
Tas ir pareizi, vai ne?
>> Hugh Zabriskie: Yep.
>> SAM GREEN: Tātad tas ir arī nedaudz bitu bailīgs, salīdzinot ar C,
kur mēs vienmēr bija jābūt mūsu mainīgo definīcijas virs vietām
tie tika izmantoti.
Tas nav noteikums, ka ir izpildīts vairs, tāpēc, mazliet atšķirīgs.
Un atkal tikai, lai no jauna uzsvērs, globāla pret vietējo variables--
ļoti līdzīga C. Jūs varētu būt divi mainīgie ar tādu pašu nosaukumu,
un ir viens no viņu vārdi tiktu aizēnojusi ar vietējās mainīgo, ja viens no tiem
bija globāla.
Tātad, līdzīgi veida problēmas, ka daži no jums
var būt uzskriet dažās Jūsu problēma noteikti līdz šim.
Cool, tā ka ir mainīgos.
>> Control plūsma, kas nozīmē, piemēram, ja-else-- loģisks stuff-- un cilpas.
Tātad, lai sāktu ar, tas ir tas, ja-cits paziņojumi izskatās JavaScript.
No dažādām lietām izvietošana uz līnijām, nav svarīgi.
Šis ir tikai viens no konvencijām par to, kā mēs struktūru kodu.
Tāpat kā C, mums ir "ja", iekavās paziņojumu.
Tas nav tas, ko es gribēju darīt.
Es darīju to vēlreiz.
>> Hugh Zabriskie: Mēģina iziet?
SAM GREEN: Nē, es esmu tikai mēģina, lai tuvinātu.
Tas nav svarīgi.
>> Tātad, mums ir ", ja" paziņojumu un mums ir stāvoklis, iekšpusē no tā
kas novērtē to patiess vai nepatiess, un kas nosaka, vai
mēs ieejam, ka bloku kodu.
Un tāpat, mums ir cits-ja, un cits, tāpat kā mēs esam pieraduši C
>> Jums arī vajadzētu būt diezgan ērti tiesības pie nūja ar cilpām,
jo tie arī izskatās daudz, piemēram, C izskatās.
Bet jūs pamanīsiet, atkal, ka mēs ir, nevis int initializations,
mums ir VAR initializations.
Un es domāju, jums ir jābūt uzmanīgiem, lai padarītu
pārliecināts, ka jums nav mainīt vērtību I no int uz virkni,
jo, piemēram, kas notiek, lai radīt dīvainu uzvedību jūs nevarēsiet
sagaida.
Bet tas būtu jāizskatās diezgan pazīstams, kā arī.
>> Tātad, tas ir, ja lietas sāk iegūt mazliet traks JavaScript
kāds, kurš iet no fons C. Ir funkcijas
JavaScript, un tur ir viens veids atzīt funkciju, kas izskatās
veida līdzīga C, un tad tur ir vēl viens, kas
izskatās veida atšķirīgs.
>> Pirmā versija, ko mēs varam redzēt šeit,
ir veida C-, piemēram, kur mēs sakām, tas ir funkcija,
arī tā nosaukumu, dot Par argumentu skaits,
un pēc tam saturs funkcijas iet iekšā šiem cirtaini lencēm.
Redzēsim piemēru argumentiem tikai sekundi.
>> Tā kā uz nākamo rindiņu, mēs redzam, ak, šeit ir mainīgais sauc par "myFunction,"
un mēs vienāds to šis generic thing-- function-- ka
nešķiet kaut notiek.
Iemesls tas ir atšķirīgs nekā C ir tas, ka JavaScript
ir tas, ko sauc par funkcionālu valoda, vai ir funkcionālie elementi, kas nozīmē,
ka funkcijas ir faktiski vērtības.
Un tas nozīmē, ka mēs varam noteikt mainīgais uz vienlīdzīgu funkciju
un pēc tam pārvietot šo funkciju apkārt, nodot to kā argumentu,
darīt visu sīkumi veidu piemēram, ka ar funkcijām.
>> Viena cita lieta note-- funkcijas ir rakstīts
ar noteiktu skaitu argumentiem.
Redzēsim piemēru funkcija ar argumentu par nākamo slaidu.
Bet JavaScript nebūs bļaut pie jums, ja jūs mēģināt
izmantot funkciju ar nepareizs argumentu skaits.
Tas būs tikai darīt visu iespējamo, lai padarītu darīt, kas nozīmē, ka, ja jūs iet,
jūs zvanu funkciju, kas sagaida arguments bez arguments, ka visiem
notiks tas darīšu visu iespējamo lai mēģinātu izpildīt šo kodu,
un, ja tas iespējams, darbojas uz izņēmums vai kļūda,
tas būs mest šo izņēmumu un tikai glabāt going-- kas ir tikai viens no veidiem,
ka JavaScript darbojas.
Jā.
>> Mērķauditorija: Kas notiek, ja tur ir pārāk daudz argumentu?
SAM GREEN: Tātad Jautājums bija, kas notiek
ja ir pārāk daudz argumentu?
Un atbilde ir, ka JavaScript būs tikai
ignorēt tos, kas ir pēc tiem tā sagaida.
Tas būs mēģināt izpildīt funkciju zvanu it kā tas bija tikai pirmās divas.
Tiesības?
>> Hugh Zabriskie: Tas ir labi, jā.
Tāpat, ja tur ir pārāk maz argumentu,
tas tikai veida dod spēku, lai visu argumenti tam nav nekādas vērtības
par.
>> SAM GREEN: ko var faktiski būt ērts, ja jums
gribu uzrakstīt funkciju, kas ņem mainīgu skaitu argumentus.
Jūs varat iestatīt noklusējuma vērtības definīcija funkciju,
un tā var ignorēt faktu ka ieejas nav tur.
Tāpēc es gribu runāt mazliet vairāk par šo pēdējo lodi
punkts, kas ir funkcijas ir vērtības.
Tas ir piemērs, kas ir mazliet prātā-putu
ja jūs vienkārši izlasīt, un nedomāju, ka par to, kas notiek uz otru.
Tātad, aplūkosim tikai pie pirmajā rindā šeit.
Mums ir šī mainīgs, F1, ka mēs sakām ir funkcija, kas dara šo lietu.
Un saturs funkcijas tiek console.log ("sveiki").
Jūs varat domāt par console.log, kam pakļauta JavaScript ekvivalents printf.
Tātad, kas notiks, ir, ja mēs palaist šo kodu mūsu pārlūku,
tas būs izdrukāt virkni.
Es varu pierādīt, ka.
Mērķauditorija: Ar žurnāla, lai gan, tas, ka nozīmē tas tiek ierakstīts kaut kur?
SAM GREEN: Jā.
Tāpēc es jums parādīs, kas notiek varētu notikt.
Tātad jautājums bija, ko tas log nozīmē?
>> Hugh Zabriskie: Tātad console.log ir kā printf par C.
SAM GREEN: Tātad console.log ir kā printf,
Tātad, ja man ir šī console.log ("sveiki"), un es aicinu, ka virkne "sveiki"
izpaužas izdrukāt ar konsoli.
Tas ir konsole.
Tas ir tāpat kā printf, kur tas drukā uz standarta out.
Un mēs redzēsim pēc minūtes, bet tas ir faktiski
atsaucoties uz konsoles objektu, un aicinot metodi par šo objektu.
Tas būs daudz lietderīgāk pēc minūtes, kad mēs
nokļūt runājam par objekti JavaScript,
bet es domāju, ka es vēlētos pieminēt, ka.
Hugh Zabriskie: Mēs esam izmanto, lai C, right--
mēs parasti rakstīt lielu programmu galvenais, lai kaut ko darīt.
Bet to, kas ir cool JavaScript ir jums ir šāda veida tulka ka
iet reālā laikā, tāpēc aizņem tikai pozīcijai,
tā var tikai interpretēt, ka uz vietas.
Un tas seko lietas, kas ir bijušas pirms,
tāpēc tas ir diezgan noderīgs instruments, lai izmantot console.log vai konsoli,
Parasti, lai tikai spēlē apkārt ar JavaScript.
>> SAM GREEN: Tātad dodas atpakaļ uz šo example-- otro rindiņu kodu
šeit ir diezgan prātā-boggling manā galvā.
Pirmo reizi es izlasīju šo, tas bija, piemēram, to, kas notiek?
Tātad, kas notiek, ir, tas funkcija deklarācijā teikts,
Man ir funkcija sauc f2 kas ir gaidījis vienu argumentu, F,
un tad tas prasa, ka funkcija, f, kas
tika nodota tai kā argumentu ar sevi bez argumentiem.
Tātad, kas varētu būt bijis mulsinoši.
Ja mēs saprotam to kā F2 notiek f1 kā argumentu, un tad iekšpusē F2,
f izpaužas called-- kas nozīmē, ka šīs līnijas kodu,
Pēc šīm divām līnijām kods, rezultāti "sveiki"
tiek drukāts uz konsoli.
>> Fakts, ka mēs varam pāriet funkcijas ap kā vērtībām
beidzas ar to viens no visvairāk spēcīgs iezīmes JavaScript
kā programmēšanas valodu.
Ārpus visi foršās lietas, to var darīt,
tāpat kā iezīme no valodas izteiksmē, kā
ka tas padara lietas vienkārši programmēt un ļauj
par lietām, kas nav īpaši labi piemērots, lai tīmeklī,
funkcionālā programmēšana un funkcionāls programmēšanas aspekti JavaScript
ir viens no visbiežāk spēcīgi jēdzieni, kas
pastāv JavaScript-- ja Jums uzdot mani.
Cool.
>> Tātad, nākamā lieta.
Papildus tam, ka funkcionāla, tur ir arī elementi JavaScript
kas ir objektorientētā, kas ir viens no ļoti
tautas buzz vārdus datorzinātnēs.
Objektorientētā programmēšana ir ļoti populāra lieta.
JavaScript ir versija, ka, kur es uzskatu, ka katrs vērtība ir arī
objekts, kas nozīmē, ka katram objektam wraps kopā kādu vērtību skaits.
Tātad vērtībām, kas ir vienkāršs, piemēram, vesels skaitlis, tāpat varX vienāds 5,
ka objekts tikko wraps šo vienu vērtību.
>> Bet mēs varam arī iedomāties situāciju where-- mēs varam iedomāties situāciju C
kur mēs vēlējāmies darīt kaut kas ar structs,
piemēram, ka wraps vairāki vērtībām kopā un padara
tas patiešām viegli nodot lietas apkārt.
Tas ir, kad objekts ir JavaScript.
>> Ir svarīgi atcerēties, kad es saku, ka objekti iesaiņota
dažas no vērtībām skaits kopā, ka funkcijas ir arī
vērtības, kas nozīmē, ka funkcijas var būt arī iekšpusē JavaScript objektu.
Un tāpēc, ka ir svarīgi ir tas, ka, lai gan mēs bieži
domāju, zvanot metodi uz objektu, kas ir
populāru termiņu no otra tautas objektu orientētas valodās,
viens no atšķirībām šeit ir tas, ka viss, ka metode ir JavaScript
ir vērtība glabāta iekšpusē no objekta kas veic kādu action-- iespējams
izmantojot citas vērtības, kas ir iekšā par šo priekšmetu, bet ne vienmēr.
Tātad jūs varat iedomāties situāciju, es uzminēt, kas mazliet crazy veidā,
kur jūs sauc metodi viena objektu uz citu objektu, piemēram.
Tātad, tas ir mazliet bailīgs šādā veidā.
>> Un jūs varat arī mainīt metodes kas ir saistīti ar objektu
piešķirot ka metode jauns funkcija, kas ir arī
diezgan atšķirīgs no citiem objektorientētā valodas, kur
reiz mēs paziņojam objektu un instantiate to,
mēs nevaram mainīt metodes, kas ir saistītas ar šo objektu vairs.
Tātad tas ir diezgan atšķirīgs.
Cool.
>> Tātad, šeit ir piemērs, pirmkārt, objekta darbībā.
Tas ir tas, ko sauc vispārējs objektu, kas
nozīmē, ka tā nav nekādas īpaši nosaukums, nav klasi,
tas ir tikai daži aplīmēšana vērtību.
Un tā, ka izskatās, ir, mums ir šis ārējais pāris cirtaini bikšturi šeit
kas norāda JavaScript un teikt, tas ir objekts.
Vērtības iekšpusē no tā ir katra vērtības iekšā
objekta, kas noteikts jāiesaiņo kopā.
Un iekšpusē šo objektu, mums tad ir atslēgas vērtību pārus,
kur atslēga attiecas uz nosaukumu, no vērtības iekšpusē no objekta,
un otrs side-- pretī resnās here--
ir faktiskā vērtība ka jāuzglabā.
>> Tātad jūs redzat šeit, ka mums ir Galvenais sauc fn ar vērtību Sam,
seko komats, sakot, uz nākamo ierakstu.
Tad galvenais sauc LN, ar kuru vērtība ir zaļā krāsā,
seko komats, seko "drukāt"
ko nāksies funkcijas vērtība kas gatavojas darīt šo rindiņu kodu.
Pieņemsim veikt soli atpakaļ un izkravāt to, kas notiek šeit.
Tātad tas ir mazliet sarežģīti, un mēs redzam kaut ko jaunu
pirmo reizi.
Par "šo" atslēgvārds ir jauna lieta mēs redzam šeit, un ko tas dara
ir, attiecas uz strāvas iebilst darbības joma, vai ne?
Tātad, kad mēs sakām, tas norāda visu ceļu atpakaļ
uz visu šo object-- kad mēs this.fn,
mēs ejam, lai iet visu ceļu atpakaļ uz šo objektu, dodieties uz fn vērtību
un saņemt Sam, izvelciet to visu ceļu atpakaļ, stick to šeit, un tad doties tālāk.
>> Mērķauditorija: Tātad ar iegūšanai, ir ka darīts dēļ parametra
definīcija?
SAM GREEN: Tātad jautājums bija, ir atgūšana darīts tāpēc, ka parametra
definīcija?
Jā, pilnīgi noteikti.
Kas notiks šeit ir, šis punkts saka JavaScript,
Labi, es saņemu dažas vērtības no šo objektu no sevis.
Un tad tas būs meklēt ierakstu sauc fn, un, ja tā konstatē, ka ir,
tas būs atgriešanās ka value-- tā, tas ir sam.
Bet es arī varētu būt drukāti kaut kas nebija šeit definēts,
un tad tas būtu vienkārši atgriezties undefined-- kas
ir lieta, ka JavaScript var do, kas var būt priekšrocības,
bet tas ir also-- ja jūs veicat typo, tas var izraisīt dīvaini kļūdas.
Tātad tas būs tikai mēģināt atrast kāds jums pateikt to, lai atrastu
un tas nav gatavojas sūdzēties ja neatrod to.
Tas būs tikai teikt, man nav atrast, un tad doties tālāk.
Tātad tas būtu undefined, plus tukšs, plus uzvārds.
Jā.
Un tad mēs varam redzēt, ka, ja mēs tad varētu iet uz leju un access--
un mēs aicinām tf.print () ar iekavās.
Tas notiek, lai izsauktu šo drukāt funkcija bez argumentiem, vai ne?
Bet, ja mēs tikko teica tf.print () semikols, bez iekavās,
viss, kas būtu jādara, ir pull out funkciju no vērtības,
bet faktiski to sauca.
Cool.
Hugh Zabriskie: Ja mēs objektu?
SAM GREEN: Protams, pieņemsim darīt.
Lai es varētu pārvietot šo piemērs ar konsoli.
Mēs varam iedomāties, ka man ir objekts.
Tātad tas ir vienkāršs objekts.
Tas ir objekts, kas satur divas vērtības ar divām atslēgām, divi atslēgu vērtība
pāriem.
Tāpēc es pēc tam var piekļūt vērtību glabājas iekšpusē šo objektu darot x.x1,
Piemēram, un man 1 atpakaļ.
Tāpat x.x2, saņemt šo vērtību atpakaļ.
>> Un tagad tiešām atdzist lieta ir, es varu faktiski pievienot kaut ko, lai šo objektu
pēc tam, kad es esmu izveidojis to.
Tātad jūs varat iedomāties, pieņemsim saka man ir funkcija.
>> Hugh Zabriskie: You jādara Shift-Enter.
>> SAM GREEN: Ak, tas ir kaitinošas.
Kas bija tas nepatīk?
Oh.
Te nu mēs esam.
Cool.
>> Tāpēc es esmu tikko izveidojis šī funkcija, f, ka
gatavojas doties uz pašreizējo objekts un drukāt this.x1.
Tātad, ja es tikai aicinu f ar pati, nekas notiek
notiktu, tiesības, jo nav x1 lauks objektā tas atsaucas.
Bet, ja es saku, x.f = f, un tad es zvaniet x.f (), es esmu gatavojas, lai saņemtu atpakaļ 1.
Tas f funkcija tagad kas saistītas ar objekta x,
kas ir galvenā sauc X1 kas saistītas ar vērtību 1,
tad, kad mēs saucam this.x1, tas ir gatavojas atrast, ko tas meklē
un varēs izdrukāt vērtību out.
Tātad tas ir tikai viens piemērs no veida crazy lietām
jūs varat darīt ar objektiem JavaScript.
>> Tā, ka versija bija vispārējs versija, kas nozīmē
ka mēs esam izveidojuši objektu, izmantojot šo iekavas notation-- lencēm apzīmējums,
rather-- un tas ir ērts, ja mēs vienkārši vēlamies
vienā gadījumā no konkrētā objekta, bet kas notiks, ja mēs vēlamies, lai būtu vairāk nekā viens
no tāda paša veida?
Un to, ka atbilde Jautājums ir, ir lietas
sauc nodarbības JavaScript kā arī.
Mēs varam izveidot funkciju, kas nav kaut kādas inicializācijas veida
par ārvalstu objektu, un mēs teiktu, piemēram,
mans class-- tā nosaukuma no atkārtoti lietojamā object--
vienāds funkcija, kas nosaka to uz augšu.
Tātad, kas tas būtu līdzvērtīgs lai ir izveidot objektu, kas
būtu tāpat kā, cirtaini lencēm, str, resnās zarnas,
tas ir virkne, semikols, cirtaini lencēm.
Tas būtu vispārējs objekts mēs sāktu,
ar vienu atšķirība ir uz Nākamās līnijas mēs radīt prototipu, kas
nozīmē, ka tā ir noklusējuma atslēga, kas mēs pievienot mūsu objektu,
ir vērtība sarakstīti šeit.
Kas nozīmē, ka, ja es izveidotu jaunu instance šo MyClass objektu,
tas notiek, lai ir pre-built iekšpusē tā vērtība sauc str un citu vērtību
sauc myPrint, kas ir būs funkcija.
Awesome.
>> Liels.
Tātad pēdējā lieta saka par JavaScript
ir tas, ka tas ir patiešām noderīga ko sauc par asinhronā darbības.
Asynchronous nozīmē, ka mēs var gaidīt kādu operāciju
lai pabeigtu pirms mēs pārejam tālāk, bet doties tālāk, kamēr mēs gaidām
un tad ir kaut kas notiks vēlāk.
Un ko es domāju ar šo ir, jūs var iedomāties situāciju, kad
jums nosūtīt pieprasījumu daži web serveri kaut kur,
un tas notiek, lai nosūtīt jums atpakaļ daži liels rieciens datu, vai ne?
Un jūsu lietotājs var gaidīt In Tikmēr, lai tas notiktu,
un nekas nevar būt notiek tajā laikā.
Bet tas nav liels projekts, labi?
Jūs nevēlaties mājas lapa iesaldēt.
Ko darīt, ja lietotājs vēlas noklikšķiniet uz nolaižamās izvēlnes?
Tas nav liels dizaina modelis.
Tā vietā, būtībā, ko JavaScript tas ir teikts,
OK, vai šo darbību asinhroni.
Tātad, piemēram, jāgaida fonā, un tad, kad darbība tiek veikta,
zvaniet atzvanu function-- zvaniet kādu funkciju,
do daži action-- kas signalizē, ka operācija mēs gaidījām, lai izbeigtu
Beidzies.
Un tāpēc, ka ir super spēcīgs ir, mēs varam kaut ko darīt, iet argumentu,
kaut ko darīt, un tad jāgaida lai kaut kas notiktu.
Tad, kad šī kaut ko pabeidz, mēs varam zvanīt atzvanu.
Tas ir patiešām ērts, jo tas ļauj mums darīt lietas ar tīmekļa audio API,
piemēram, piemēram, novietotu audio failu no attālā servera
negaidot par Visa audio failu jānoslogo,
kas būtu patiešām slikti lietotāju pieredzi.
Cool.
>> Pēdējo pāris piezīmes par debugging, jo tas
ir lieta, jūs nāksies darīt kā daļu no jūsu projektu, garantēta.
Es pieminēju JavaScript konsole.
Tas ir super noderīgs iezīme no visām mūsdienu pārlūkprogrammām,
Un mēs tiešām aicinam jūs nokļūt ērti, izmantojot jūsu konsole,
Ja jūs vēlaties iegūt labi JavaScript.
Tas ir super ērts debugging, bet tas ir arī
patiešām noderīga norādītas , kā izmantot API.
Tas ļauj patiešām viegli eksperimentēšana
nerakstot daži kodu, un pēc tam apkopot to.
Jums nav jādara visus šos soļus.
Jūs varat vienkārši uzrakstīt daži kodu līnijas,
un pēc tam saņemt tūlītēju atgriezenisko saiti par vai šī līnija koda
worked-- ļoti ērts.
>> Un arī, tikai viens tehniskais note-- JavaScript konsole ir piemērs
no REPL-- tā, kas ir R-E-P-L, repl, kas apzīmē lasīt, novērtēt,
drukāt cilpa.
Jūs esat gatavojas rakstīt daži sīkumi in, tas būs lasīt to, ko jūs ierakstījāt,
tas būs novērtēt to, un tas būs drukāt produkciju, un tad tas būs sākums atkal.
Tas ļauj ātri iet apļi atkārtojot, kas ir patiešām foršs.
>> Es domāju reālu Pēdējo note-- šis ir faktiskā pēdējā piezīme, jā.
Kā mēs faktiski izmantot JavaScript?
Tātad, pirmkārt, mēs varam importēt tā, izmantojot skriptu tag
augšā vai apakšā HTML file-- jebkur iekšpusē HTML failu,
tiešām.
Un ietvaros skriptu tag, ir divas apakšgrupas veidi importē JavaScript.
Pirmais ir, kam atsevišķa JavaScript fails
ka mēs importējam kopumā, vai ar kuru platība kodu, piemēram, skriptu
lai sāktu, un pēc tam slīpsvītru skriptu, lai pārtrauktu.
Un tad mēs vienkārši uzrakstīt JavaScript iekšpusē HTML failu.
Tie ir divi veidi.
Jūs nevarat būt tā iekšpusē HTML.
Mērķauditorija: Ir viens labāk nekā citi?
SAM GREEN: Jautājums bija, ir viens labāk nekā citi.
Tātad, jā, kā kodēšana stila praksi, un arī tas ir kā dizaina praksi.
Ir divi iemesli kāpēc tas varētu būt labāks.
Pirmais ir, tas padara jūsu kodu A Daudz vieglāk lasāmu, ja visas jūsu HTML
ir vienā vietā, visas jūsu CSS ir vēl viena vieta, visi JavaScript
ir trešā vietā.
Tiesības?
Es domāju, ka mums vajadzētu jau esam runājuši par to sections-- piemēram CSS-- ko
ka is-- un tā iet bieži citā failā.
Tātad, līdzīgi veida koncepcijas šeit.
Jūs varat arī iedomāties, ka JavaScript tiktu atkārtoti uz vairāk nekā vienu
HTML lapas, vai varbūt Ļoti daudz HTML lapas,
un kam, ka JavaScript refactored vienā
failu, ka jūs varat importēt par vairāk nekā vienā vietā
ļauj kods būt tā vairāk maintainable.
Jūs varat iedomāties, veicot vienu mainīties ar JavaScript
un kam to mainīt 100 dažādiem failiem.
Un tā vietā, mēs varam vienkārši mainīt vienā, kas ir daudz vairāk spēcīgu.
Vai es atbildētu uz jūsu jautājumu?
Cool.
>> Mēs varam arī ievadīts konsole, kā mēs esam minēts iepriekš.
Un atkal, viena pēdējā note-- Web Audio ir celta,
Jums nav nepieciešams, lai ielādētu kaut ko.
Cool.
Vai ir kādi jautājumi, jums ir vairāk jautājumi par JavaScript,
Pirms mēs virzāmies tālāk?
>> Mērķauditorija: [dzirdams]
SAM GREEN: Labi, atdzesē.
Tāpēc tagad viņš gatavojas runāt par API.
>> Hugh Zabriskie: Cool.
Pateicība, Sam.
>> SAM GREEN: Protams.
Hugh Zabriskie: satriecošs, tāpēc mēs pāriet no JavaScript.
Tātad mēs esam runājuši par kādu essentials JavaScript,
un tie ir mainīgie, funkcijas, objekti, darbojas kā mainīgo,
asinhrono iekraušana.
Tās ir visas lietas, kas jums redzēt, kā jūs izmantojat Web Audio.
Tātad mēs esam tikai gatavojas runāt par to vispirms ir augstā līmenī.
>> Tas ir API, tāpēc tas ir kaut kas kas ir būvēts, kā teica Sam,
labi uz JavaScript ka jūs izmantot konsoli.
Un tas ir faktiski tāpat kā C ++ kods kas ir patiešām iebūvēta Chrome
un Firefox, un visi šie pārlūkiem.
Tātad galvenā ideja ar Web Audio ir tas, ka jums ir
šāda veida cauruļvadu audio, vai ne?
Tātad jūsu audio dati nāk kaut kādā veidā.
>> Ir sava veida trīs galvenās forms-- Jums ir oscilators, kas
rada sine vilnis, kosinuss vilnis, mēs ejam, lai redzētu, kā tas darbojas.
Vēl viens ļoti izplatīts, protams, ir MP3.
Tātad, varbūt jūs sākat ar dziesma, un tad jūs
vēlaties darīt kādu filtrēšana lai kas un izejas
that-- ka varētu būt iespējams avots.
Un tad tiešām foršs viens ir mikrofons.
Tātad jūs varat izmantot kādu ļoti Pamata aicina JavaScript
piekļūt pie mikrofons, un tādēļ, ja jūs
gribēju, lai app kā piķis detektoru,
piemēram, ka veic, Tava balss un skaitļi,
pitch-- ļoti vienkāršs veids, kā to.
Jūs varat vienkārši veida izlasīt in, izrēķināt frekvenci,
un tad izejas numuru.
Tātad mēs redzēsim, kā tas darbojas, kā labi.
>> Galamērķis ir būtībā kur audio dati ir izeja.
Tātad kopumā, tas ir tāpat kā Jūsu klēpjdators skaļruņi.
Citas iespējas ir, piemēram, ScriptProcessorNode--
mēs sāksim mezgliem second-- bet būtībā,
nu jūs liekot skaņu out izmantojot datoru caur skaļruņiem,
vai jūs esat veida ierakstu, tāpēc jūs uzglabāt to kā audio datiem.
Tātad, varbūt, ja kāds rada mūzika jūsu app un tad
Jūs vēlaties, lai ierakstītu, ka un varbūt, piemēram, eksportēt to uz SoundCloud, par example--
tas būtu viens veids, kā to darīt.
Visi fun stuff, kuru mēs runājam par,
notiek starp šiem diviem punktiem, kur mēs slodze mūzikā
un tad izejas tā.
>> Tāpēc es esmu gatavojas runāt par pieciem posmi audio ražošanas sekundē.
Mums ir šī lieta, ko sauc AudioContext, kas
tas ir maz wrapper mēs redzam šeit.
Būtībā tas, ko AudioContext is-- ja mēs iet uz JavaScript konsole tieši tagad,
mēs varam izveidot vienu tieši tagad.
Tikai piemērs repl, vai ne?
Mēs lasāt, izvērtējot, un tas drukā.
>> AudioContext ir pasaules valsts.
Tas ir struct, tas ir objekts šeit, un tas saglabā informāciju
par lietām, kas notiek uz ekrāna, kas saistīts ar audio.
Viens piemērs ir pašreizējais laiks.
Tas stāsta jums skaitu sekundes, ļoti precīzi,
Kopš mājas lapas ielādes.
Tātad tas ir patiešām noderīga maz īpašumu, ka jūs varat izmantot.
Tas ir lasīt only-- es domāju tiešām Jūs varat mēģināt noteikt to vērtību.
Tas jums pateiks noteikt to, un tad, ja jūs to izdrukāt
again-- tas faktiski nav gluži darbs.
Tātad tur ir tikai lasāms īpašības JavaScript.
Tas ir patiešām noderīga, ja jūs esat veida sinhronizāciju
daudz atšķirīgs informāciju, kad jūs esat
veida spēlējot dažādas skaņas.
>> Vēl patiešām noderīga viens ir konteksts galamērķis.
Noteikti, ja jūs interesē, jābūt mēģina šo pie sava konsole tiesības
tagad.
Tātad šī ir AudioDestinationNode.
Būtībā, ko tas saka, ir, kur ir izeja notiek?
Tātad ir divas reālas iespējas šeit.
Parasti noklusējuma ir tikai jūsu skaļruņi,
tik AudioDestinationNode būtībā tikai saka
tur ir nulle izejas skaņu nāk, nosūta uz skaļruni.
Tātad kopumā, jums nav ir spēlēt ar to.
Ja jūs interesē, faktiski izmantojot ScriptProcessorNode ierakstīšanai,
noteikti atvašu man e-pasts vēlāk, jo tas ir
nedaudz sarežģītāk.
Bet vispār, tu esi tikai veida outputting skaņu tādā vai citādā veidā.
Tik forši, mēs lēkt atpakaļ šeit.
Mērķauditorija: Es atvainojos.
Hugh Zabriskie: Jā.
Mērķauditorija: Es zinu, jūs teicāt, lai runātu ar jums vēlāk par ierakstu.
Vai jūs varat interfeiss, kas ar Pro Tools?
>> Hugh Zabriskie: Ar Pro Tools?
Paskatīsimies.
Es tā nedomāju.
Tā iet starp klientu, kas ir JavaScript
konsole, un jūsu faktiskā dators, parasti
kaut kas ir sava veida no pie robežas, ja jums
būs, kind pēc būtības the-- tas ir sava veida dizaina lieta,
bet jūs mēģināt saglabāt pārlūku atsevišķi no lietotāja faktisko datorā.
Parasti, vienīgais, ko tu esi spējīgs Pieeja ir mikrofons vai kamera.
Tu neesi spējīgs, es nedomāju, izmantojiet Pro Tools.
Tomēr, ja esat izveidojis dziesmu Pro Tools,
eksportē, ka jūs varētu ielādēt ka šeit, filtrē, piemēram,
process, kas, un reģistrē to, ka stājas Audio Destination-- vai, no-- lode
Procesors mezglā.
Un tad no turienes, jūs varētu eksportēt, ka, lai SoundCloud, jums
varētu nosūtīt to uz e-pastu, vai kāds jums patīk no turienes.
>> Bet tur ir sava veida nelielu barjeru starp padarot mūziku datorā
un padarot mūziku tiešsaistē.
>> SAM GREEN: Un tas ir nav unikāls šo API.
Tas ir drošības līdzeklis Chrome, un Es domāju, ka katru otro modernu pārlūkprogrammu.
Pārlūkprogramma ir pašpietiekams.
Tā, piemēram, web lapas nevar izmantot JavaScript, lai ieslēgtu skaņu
uz uz skaļruņiem, piemēram.
Vai tas nevar izslēdziet datoru.
Un nav viduspunkts starp šīm divām lietām, pa labi,
lai nu jums ir pilnīga abstrakcija,
vai jūs atvērtu drošības plaisāt, ļaujot
programmētājs ar ļauniem nodomiem darīt ko vien viņi vēlas ar savu portatīvo datoru.
Un tas ir iemesls, kāpēc Chrome ir pašpietiekams.
>> Hugh Zabriskie: Jā.
Vai tas ir jēga?
Atdzesē, atdzesē.
Man bija tikai gatavojas rādīt piemēru vienu.
Tas ir diezgan daudz, kā cik jūs saņemsiet, attiecībā
piekļūt lietotāja datoru.
Ja jums ir USB klaviatūra pieslēgts, Jūs varat izmantot kaut ko sauc par Web
MIDI API, kas mums nebūs tiešām runāt par šeit,
bet tas ir vēl viens API, kas ir iebūvēts vismaz Chrome-- atkal,
Tas ir iemesls, kāpēc mēs mīlam Chrome-- Es domāju, Firefox vai Safari,
tas ir viegli lieta google-- dažādās pārlūkprogrammās ir
atšķirīgs atbalsts, par kuru API tās ir īstenotas.
Bet, ja jūs vēlaties, lai kontaktdakšu klaviatūru un strādāt ar šo informāciju,
veida sūtīt tastatūru Informācija pa datoram
un pēc tam izmantot šo tiešsaistē, šo API ir, ja tu būsi strādāt ka.
>> Cool.
LABI.
Tātad, ātri pārvietojas uz šeit.
Kā mums klājas laikā?
>> SPEAKER 1: Par 15.
>> Hugh Zabriskie: 15 minūtes pa kreisi?
OK, atdzesē.
Tātad mēs skrējiens uz priekšu šeit.
>> Vārdu sakot, galvenais punkts domājot par to kā cauruļvads
ir tas, ka katrs solis cauruļvada ir virkne audio mezgliem.
Mūsu avots, teiksim, ir oscilatoru.
Mums ir nepieciešams, lai izveidotu oscilators mezglā.
Un tas ir tikai sava veida par maz function--
un viņi visi pamatā no no audio konteksta šeit.
>> Mērķauditorija: Kad tā teica oscilatoru, tas nozīmē
tas tiešām burtiski iet no divi dažādi stabi un atpakaļ?
>> Hugh Zabriskie: Nē, tas ir tāpat kā digitālo pārstāvība.
Tas ir faktiski īstenoti C ++.
Es tiešām nezinu specs par to, cik tas ir reāli īstenots,
bet tas viss strādā kā bināros datus.
Patiesībā, jā.
Tas būtu saprotams, es varētu patiesībā, ja jūs interesē,
Es varētu nosūtīt jums mazliet vairāk informācija par to, kā viļņu
tiek turēti kam ciparu formātā.
OK, atdzesē.
>> Tātad mēs esam radot toni, piemēram, sine viļņu vai kaut kas tamlīdzīgs, varbūt
440 Hertz.
Mēs izveidot oscilatoru.
Ja mēs gribam, lai uzstādītu skaļumu, mēs pieslēgties kaut uz GainNode,
ko mēs varētu darīt ar .creategain.
Kas nosaka savu skaļumu.
Jūs varat iet, ka uz jebkura no otras puses options-- labi,
tāpēc audio buferis avots mezgls ir, ja jūs varētu
uzglabāt MP3 ka esat ievietotā.
>> Biquad filtru filtrēšanas ja Jūs vēlaties veikt visus bāzi out
par dziesmu, vai kaut kas tamlīdzīgs.
Nedod Dievs jūs vēlaties veikt bāzes no dziesmu.
Un AudioDestination mezgls ir, atkal, piemēram, kur mūsu noslēgšana ir.
Ja jūs esat kādreiz interesē redzēt visi dažādas iespējas,
dodieties uz cilni un ļaujiet auto-pilnīgs nākt klajā.
Un, ja jums izveidot, jūs redzēsiet visu dažādas lietas, ko jūs varat izveidot.
Jūs varat izveidot dinamisku skriptu procesori,
Es pat nezinu, kas tas ir, sajaucot kanālu apvienošanos
un kanālu šķēlēji, viss kas.
Cool.
>> Tātad tas ir tikai piemērs cauruļvada.
Tātad mums ir trīs avoti nāk.
Varbūt tie ir viļņu forma, varbūt tie ir MP3.
Viens notiek caur filtra, otrs ir
kļūst izkropļota cits viens ir panoramēšana pa kreisi un pa labi.
Jūs varat darīt visu veidu lietas, un viņi visi jauc apkārt kopā,
un pēc tam ārā nāk audio beigās, kā galamērķi.
Tas ir piemērs tam, ko vēl sarežģīts Web Audio kods izskatās.
Jūs veidojat visus šos dažādi objekti tiesības here--
Es neesmu pārliecināts par to.
Nē, tas nav tuvinātu.
LABI.
>> SAM GREEN: You do kontrole, Scroll-Up.
Hugh Zabriskie: Control Scroll--
SAM GREEN: Nē, nē.
Control--
>> Hugh Zabriskie: Ak, Control, ritiniet?
Ak, Gotcha.
Jā.
Wow, nope, nope.
LABI.
Es ne darīt.
>> Tātad yeah, šajā pirmajā sadaļa šeit, jūs redzat
mēs radot visas šīs dažādās mezglu izrakstās no konteksta.
Mēs esam tikai saliekot tos kopā otrajā daļā
ar šo funkciju sauc Connect.
Tas ir tiešām galvenais funkcija Web Audio.
Tas tikai nozīmē, kad jūs esat darījuši kaut kas ar skaņu vienā mezglā,
nodot to uz nākamo mezglu.
Tāpēc mums ir avots, to savienojumu ar analizatoru,
analizatora kaut ko dara ar to, tā iet uz izkropļojumiem, un tā tālāk,
un uz galamērķa apakšā tieši šeit.
Cool.
Labi, tāpēc mēs turpinām pārvietojas on.
>> Pipeline-- atkal, tie ir visbiežāk cauruļvadi,
tāpēc mēs runājam par visām šīm lietām, piemēram, sagrozīšana, panoramēšana, visu šo stuff.
Ja jūs patiešām interesē izmantošanā lietas Pro Tools,
tie, iespējams, jūs interesē.
Ja tā nav, varbūt jūs vienkārši vēlaties spēlēt skaņu,
vai varbūt jūs vienkārši vēlaties, lai iestatīt skaļumu uz skaņu.
Tie ir divi visbiežāk veida cauruļvadu audio ražošanā.
>> Atkal, kā jūs varat ņemt to jo kā oscillator-- Tātad, pieņemsim
darīt demo par ka tieši šeit.
Tātad mēs ejam, lai izveidotu vienkāršs audio konteksts šeit,
un no tā mēs ejam lai radītu mūsu oscilatoru.
Tātad tas ir, atkal, mēs esam tikai dodas uz zvanu Izveidot oscilatoru.
Mēs ejam, lai uzstādītu biežumu ka 440 Hertz, ikviena mīļākie.
Tad mēs savienot, ka ar mērķi, point-- kas ir valoda, tāpēc
konteksts galamērķis.
Visbeidzot, mēs tikai teikt, sākt nulli sekundes no tagad, un mēs esam skaņu?
>> [Zvana]
>> Hugh Zabriskie: Šeit mēs iet.
Tas ir tikai sine wave.
OK, atdzesē.
Un tad mēs pārstāsim to.
>> Mērķauditorija: Kur darīja ka atgriezeniskā saite nāk no?
>> Hugh Zabriskie: atgriezeniskā saite?
Ak, iespējams, mūsu mikrofoni.
Tātad yeah, tas ir, kā jūs to darīt.
Un patiesībā, ja man bija tur tā darbojas, jūs
varētu būt frekvence vērtība, jo tas darbojas,
tā ka ir jautri lieta spēlēt apkārt.
Cool.
Tas vienmēr ir jauki viens prezentēt.
>> SAM GREEN: mēs neesam domāt par to, vai mēs?
Hugh Zabriskie: Jā, tas ir šķebinošs viens.
Tātad, bufera loading-- es jums parādīt piemērs, ka pašās beigās.
Tas ir iekraušanas MP3.
Un mikrofons, jūs izmantot tikai funkciju sauc Navigator.getUserMedia ()
pieprasīt piekļuvi lietotāja mikrofons par šo informāciju.
>> Lūk filtrēšana, es ņemšu tikai glabāt pārvietojas no tā.
Tas ir diezgan augsts līmenis, bet filtri tikai ļauj jums
>> [Skaņas]
Filtrēšana ļauj jums radīt lietas, piemēram, rozā
troksnis, brūns troksnis, baltā trokšņa.
Ja jūs vēlaties, lai izveidotu tīru troksni, kas daži cilvēki mīlestība putru apmēram ar,
Jūs varat izmantot Web Audio filtrēšana, lai to izdarītu.
>> Audio Panning-- tik iedomāties ja jūs esat rakstiski spēli
un jūs vēlaties skaņu izklausīties tas nāk, piemēram,
šaušana pa ekrānu, jūs var izmantot panoramēšana par audio
lai izveidotu šāda veida konusa, kas like-- tas ir diezgan MATHY,
bet patiesībā tas ir patiešām cool, ja jums tas strādā,
un tur ir dažas labas konsultācijas par to es varu nosūtīt jums.
Būtībā, jūs varat veida no rada skaņu
kaut kas notiek ar 3D veidā.
Un, ja jums ir interese DJ, jūs varat sākt sajaukšanu un šķērsot izbalēšanu dziesmas.
>> Tas ir tikai dažas ļoti vienkāršas kods, būtībā to, ko es darīju pirms tam.
Tas nosaka skaļumu oscilatoru, tāpēc mēs veidojam mūsu oscilatoru
kas rada vilnim.
Mēs veidojam mūsu GainNode, kas mūsu frekvenci,
un pēc tam pievienojiet oscilatoru ar GainNode, kas tad būtībā maina
cik daudz signāls ir atļauts cauri.
Bet tiešām, tas ir digitālais lieta, tāpēc tas ir vairāk just-- yeah.
Tas nav tas, ko patiesībā notiek, bet tas, kas notiek reālajā dzīvē
ar peļņu.
>> Mērķauditorija: --quantization tilpuma parametru?
Hugh Zabriskie: Sorry?
Mērķauditorija: Vai tas ir kvantizēto tilpums parametrs?
Hugh Zabriskie: Jā.
Un tas ir viena lieta, es esmu patiešām deficītas par manā zināšanas,
Kā iegūt darbu uz digitālo līmenī.
Es zinu, ar faktisko signāli, tas būtībā
kontrolētu, cik daudz jūs esat pastiprinot signālu.
Tātad, jā.
Es jums nosūtīsim vairāk informācijas par ka, jo es gribētu būt ziņkārīgs faktiski
uzzināt vairāk par to.
Bet būtībā parametrus ir, viens ir fold--
Jo skaļāka signal-- un nulle nav signāls, vai jūs nedzirdēsiet jebkuru skaņu.
Mēs izlaist demo laiku, ka tāpēc tas būtībā tas, ko es darīju pirms tam.
Un atkal, Context.Destination ir audio galamērķis mezglā.
Awesome, OK.
>> Tāpēc es esmu gatavojas darīt ātri divas demonstrācijas.
Kā mums klājas laikā?
>> SPEAKER 1: apmēram 10 minūtes.
>> Hugh Zabriskie: 10 minūtes?
Lieliski!
Awesome.
>> Tātad pirmais es esmu gatavojas do, to sauc My Favorite Song.
Tātad tas ir tikai maz HTML JavaScript.
Mēs ejam, lai ir divas pogas lapā spēlēt manu mīļāko dziesmu
un pārtraukt manu mīļāko dziesmu.
Es ņemšu mainīt.
>> Mērķauditorija: Cover savu mikrofonu.
>> Hugh Zabriskie: Jā.
Un es esmu ievietots šeit skripts, kas basically--
un tas ir patiešām noderīga par iekraušanas MP3,
tāpēc tas tikai padara iekraušanas MP3 ceļu ātrāk.
Tas ir būtībā tikai iesaiņojums.
Tas tikai padara procesu iekraušanas MP3 daudz ātrāk,
pretējā gadījumā jūs izmantojat HTTP pieprasījumu, veida, piemēram, tas, ko mēs darām
par pašreizējo gabals, kas ar serveri.
Tas ir tiešām neglīts, jūs nevēlos to darīt.
>> Tātad šis puisis, Boris MVU, rakstīja patiešām noderīgs maz instruments, ko sauc BufferLoader.
Viss, kas Jums jādara, ir vienkārši nodot to uz konteksts, jūs iet to list--
vai, jā, tas ir saraksts JavaScript?
SAM GREEN: Masīvs.
Hugh Zabriskie: Ak, tas ir masīvs, tas ir labi.
Tas ir masīvs ceļiem uz dažādiem failiem.
Un tad jūs iet to funkcija.
Tas ir atzvanīšanas mēs runājām par ar asinhrono iekraušanu.
Tas sauks Kad faili piekrauts.
Un tas funkciju, kas ieslēdzas, ja fails ir piekrauts ņem kā perimetru
masīvs piekrauto buferiem.
Tātad, kas notiek šeit.
Būtībā, BufferList ir būs viens value--
vai tas būs masīvs garums viens, ka ir tajā indeksā
nulles visu ielādes failu MP3.
Tātad, ko es daru, kad es apdare iekraušana ir, es vienkārši
izveidot bufera avotu, kas ir audio buferis avots mezglu.
Nākamais solis ir I noslodze source.buffer kā pilna piekrauta buferis
No BufferList-- tas ir daudz buffers--
un tad jūs savienot šo audio bufera uz galamērķi.
Tātad, ko tā gatavojas darīt ir tikai vienkārši ielieciet MP3
taisni cauri ar produkciju, un sākt to nekavējoties
pēc iegūt šo aicinājumu.
>> Atdzesē, tāpēc pieņemsim redzēt tas notiktu darbībā.
My [dzirdams] šeit, redzēsim.
Tāpēc es esmu tikai gatavojas sākt pamata serveri.
Tas ir kaut kas, kas jums jādara, ja jūs esat
padarot pieprasījumus iekraušanas failiem.
Es esmu gatavojas sākt pamata serveri.
Tas ir galvenokārt jūsu visu PSET tagad vienā rindā,
bet tas ir tikai sākot serveris par ostas 80/80.
Tātad mēs ejam nekā šeit, mēs gatavojas slodze 80/80,
mēs gatavojamies iet uz mana mīļākā dziesma.
Tātad, ja es hit "play my mīļākā dziesma "tieši tagad,
tas notiek, lai ielādētu manu mīļākā dziesma un spēlēt it--
[MUSIC - The Eagles ", dzīve FAST LANE "]
--which notiek, "Life in Fast Lane "ar Eagles.
Tagad, es varētu hit "pārtraukt manu mīļākā dziesma "un replay to.
>> [MUSIC - The Eagles ", dzīve FAST LANE "]
>> Un, ja es iet pār mierināt, jo Es mēdzu globālu mainīgo nekā šeit
sekot šīs vērtības, to faktiski tagad tiks atzīts konsole.
Tātad tas auto-rada par mani.
Tātad tas, kas spēlē tieši tagad, un es varu vienkārši piezvanīt source.stop ()
uz to.
Nu, jūs zināt, ko?
Vienkārši, lai jūs puiši ir dzirdējuši song-- jūs varētu atpazīt šo dziesmu.
>> [MUSIC - Rick Astley, "NEKAD gonna sniegt TU AUGŠĀ"]
[MUSIC - The Eagles ", dzīve FAST LANE "]
Mēs esam tagad viss ir Rickrolled.
OK, liels, pārvietojas on.
Cool.
Tātad šis ir būtībā piemērs tāpat kā jūs varētu ielādēt MP3 file--
[MUSIC - The Eagles ", dzīve FAST LANE "]
--and spēlēt to, un apstāties un sākt to.
Es varētu darīt daudz vairāk [nedzirdama]
>> Pēdējais es darīšu, ir, Es jums parādīs [nedzirdama].
>> [Mūzikas atskaņošanai]
>> Tas ir tāpat, ogg.wave.mp3.
Es domāju, ka, ja pareizi atceros, Es esmu uzskriet dažiem jautājumiem ar M4A,
bet es neesmu pārliecināts par to.
Es domāju, ka mp3.wave--
>> [MUSIC - Rick Astley, "NEKAD gonna sniegt TU AUGŠĀ"]
>> Labi, lieliski.
Man nevajadzēja teikt, ka.
Anyway, sveiki.
Tātad mums ir tas atvērts.
Tāpēc tagad viss, ko es darīt, ir, es būtībā radīja pamata sintakse, lai radītu mūziku.
Tātad, ja es kaut ko darīt, piemēram, pievienot G4 1. 2, ko tas nozīmē, ka,
pievienot klavieres piezīmi, G4, kas ir ceturtais G
up uz klavierēm no apakšas.
Tātad šis ir sava veida MIDI runā, tāpēc tiem, kas ir mūzikas pamatā,
tas ir tikai MIDI piezīmes.
>> Mērķauditorija: Tas ir G Tuvo C, vai ne?
>> Hugh Zabriskie: Šis ir G virs Tuvajiem C, tas ir labi.
>> Mērķauditorija: Virs Middle C.
>> Hugh Zabriskie: Jā.
Patiesībā, jā.
Es domāju, ka es faktiski veikti tas viens [nedzirdama]
tā tas varētu būt oktāvu augstāks.
Tātad, pieņemsim redzēt.
Ja es hit Play--
[Atkārtojas PIANO PIEZĪME]
--we're gatavojas dzirdēt, ka.
Ideja ir tāda, ka tas darbojas tāpat kā komandrindas būtu,
Tātad, ja es iet uz augšu un uz leju uz manu klaviatūru, jūs
varat doties atpakaļ uz iepriekšējo komandas, kas ir diezgan noderīgs.
Un zemāk ir mans saraksts dziesmas, kas ir visi darbojas uz cilpas.
>> Mērķauditorija: Jums bija pieņemot, ka 88-taustiņu klaviatūru uz to, vai ne?
>> Hugh Zabriskie: Jautājums bija, es esmu pieņemot, ka 88-taustiņu klaviatūru,
un jā, es esmu.
Ko es darīju ir I būtībā paņēma 88 paraugus
no klavierēm, viena katrai piezīmi.
Un tā katru reizi, kad dzirdēt piezīmi no brīža,
kas ir faktiski cilpa, kas izskatās like-- tas kļūst spēlēja uz cilpas,
tāpēc par katru piezīmi, tas darbojas.
Kas notiek, ir, es izveidot buferi atkal,
Es izveidot iegūt mezglu, lai iestatītu skaļumu.
Tas tikai patiešām sarežģīts veids, kā pateikt I
uzglabāt bufera kādā source.buffer.
Es arī tā peļņu, es savienot to ar peļņu,
pieaugums ir savienots ar produkciju, un tad es atskaņot to.
Tātad, kas ir sava veida process ņemt in bufera avots.
>> Mērķauditorija: Vai jūs faktiski pieņemt, ka sauss skaņu un padarīt to slapjš [dzirdams]?
>> Hugh Zabriskie: Jūs varat, yeah.
Tur ir atkārtoti vārds, tur ir kavēšanās, sagrozīšana.
Jūs varat būtībā likt neko starp šajā sviestmaizi of-- labi,
cauruļvads ir labāks metafora, bet jūs varat pievienot kaut ko, kas.
Cool.
>> Tāpēc es ņemšu pabeigt demo šeit, lai dotu jums sajūtu
no tikai milzīgais skaits reižu tu var palaist šo funkciju visus uzreiz.
Tāpēc es esmu gatavojas, lai novērstu to.
Es esmu gatavojas izveidot ģenerators that-- būtībā kas does-- tas ir patiešām
veida sarežģīta syntax-- bet tas ir gatavojas radīt piezīmes par lidot,
un vienkārši sākt spēlēt viņiem tā izvērtē tos.
[Iestarpinot PIANO]
>> Tātad, mēs varam tikai veikt nelielu mūziku šeit.
[Iestarpinot PIANO]
>> Tātad, ko šī komanda ir, piemēram, ir
tas aizņem šos trīs piezīmes par klavieres un tad liek tos uz B3.
Šī sintakse varētu padarīt mazliet vairāk sajūtu
tiem, kuriem ir mūzika fons šeit.
>> Es varu pievienot kick bungas.
ES varu--
>> [Iestarpinot INSTRUMENTI]
>> --just spēlēt aptuveni ar to.
>> Tātad jūs varat make--
[Iestarpinot INSTRUMENTI]
Tas viens ir mazliet vairāk kaitinošas.
[Iestarpinot INSTRUMENTI]
>> Tā, ka nejauši piebilst sausu zvārgulis par katru 16. piezīmi, ar 16%
[Dzirdams].
>> [Iestarpinot INSTRUMENTI]
>> Jā, tā kā šis works-- tas vienmēr ir 4: 4.
[Iestarpinot INSTRUMENTI]
>> Jā, tāpēc četriem ceturkšņiem, un 16/8.
[Iestarpinot INSTRUMENTI]
>> Tātad vidēji, jūs saņemsiet 60% no hits par 16 piezīmēm.
>> Anyways, tas bija tikai veida dižoties
dažas no lietām, jūs varētu veidot ar tīmekļa audio API.
Tas ir tiešām spēcīgs, tas ir ļoti ātri, un jūs varat darīt daudz labas lietas
ar to.
Tātad vēlreiz, visiem jūsu jautājumiem, e-pasts myself-- Hugh-- vai Sam,
un godīgi, Google ir ton labu resursu.
Visus pēdējie jautājumi?
Jā.
>> Mērķauditorija: Tātad jūs varat piekļūt iebūvēto mikrofonu.
Ko darīt, ja jūs vēlaties, lai izmantot labāku mikrofonu?
Hugh Zabriskie: Ja jūs vēlētos lietošanā labāku mikrofonu?
Tātad atkal, tā ir daļa no abstrakcija starp Chrome
un pārējā datorā.
Ja vien tas ir pieejams caur API, piemēram Web MIDI API,
jūs varētu, iespējams atrast dažas hacks, bet parasti nav tik iespējams.
>> SAM GREEN: Jūs varat also-- visi Chrome zina
ir tas, kas jūsu noklusējuma mikrofons ir, un tā piekļūst ka.
Tātad, ja jums bija mikrofons jūs varētu iestatīt kā datora noklusējuma mikrofonu,
jūs varētu tai piekļūt, ka veidā un tas būtu iespējams, strādā.
Hugh Zabriskie: Tas ir labs jautājums.
Es nekad neesmu mēģinājis, taču jūs varētu natūrā
of-- ja jūs novirzīt ievades valoda, jūs varētu to darīt, jā.
>> Visus pēdējie jautājumi?
Cool.
Nu paldies puiši tik daudz, lai skatītos.
Es esmu Hugh.
SAM GREEN: es esmu Sam.
Hugh Zabriskie: Un tas ir CS50.