SAM GREEN: Hi, tout moun. Byenveni nan seminè nou an. Non mwen se Sam. HUGH Zabriskie: Mwen Hugh. SAM GREEN: E nou pwal pale jodi a sou JavaScript ak API la Web Audio. Jis yo kòmanse soti, sa a se yon deskripsyon nan ajanda nou an pou seminè a. Nou pral kòmanse pa pale de poukisa ou ta dwe ka enterese nan entènèt la Audio API, poukisa se JavaScript lang a ou bezwen pou li, ak Lè sa a pale sou JavaScript essentials-- konsa tankou, mache ou atravè kèk Basics nan lang lan, ak Lè sa a pale sou la API odyo nan yon nivo segondè. Lè sa a, Hugh pral pale sou kèk nan premye etap yo nan pwodiksyon odyo ak Lè sa a Demo sekansyèl sa a awizom pwojè li bati epi montre w kòd la. Lè sa a,, nou pral gen tan pou kesyon nan fen an pou moun ki gen isit la ap viv la. HUGH Zabriskie: Cool. SAM GREEN: Cool. HUGH Zabriskie: Cool. Mwen pral tounen moute. SAM GREEN: Se konsa, premye bagay premye. Se konsa, youn nan gwo bagay sa yo sou entènèt Audio API la se ke gen nan pa gen moute seri yo mande yo. Li vini bati-an nan pi navigatè modèn, ki gen ladan Chrome, Edge, yon antye pakèt moun sou others-- tout yo menm ki pòsyon ki gwo nan moun ki ap itilize jodi a. Se konsa, gen nan pa gen okenn mete kanpe, sou kote nan men jis ap resevwa yon sèvè sit entènèt prale a, pou ou jwenn te kòmanse k ap travay sou pwojè ou a, ki se gwo. Nou rekòmande bèl lou ke ou konsidere lè l sèvi avèk Chrome pou JavaScript devlopman sou sit wèb ★ jis paske pwomotè li yo zouti yo se reyèlman fò. Kòm yon egzanp nan jis sa nou vle di lè li di louvri moute JavaScript ou console-- si ou ale nan Chrome epi ou gade nan nenpòt ki paj entènèt, epi ou kite klike sou Enspekte Eleman, ak Lè sa ou ale nan sa a ti kras gout-desann dwa isit la, epi ou klike sou Console, ou pral wè sa ki ouvè sanble yon sanble anpil ak yon èd memwa lòd ke ou ta ka wè sou Mac ou, oswa sou ID a. Epi jis tankou sa yo, nou kapab kalite kòmande isit la, tankou Klè, ak lòt kòmandman tankou sa. Nou ka kreye varyab, kòm nou pral wè pita nan JavaScript. Se konsa, anyen nou ka fè nan JavaScript, nou kapab fè avèk konsole a, e ke sa a yon fason super sou la men kòmanse jwe otou ak APIs ak ap resevwa konfòtab ak JavaScript dwa koupe baton an. Se pa mete kanpe obligatwa, ki se reyèlman bèl. Fre. Pè. Se konsa, jis yon sèl bagay plis yo ajoute. Si w gen nenpòt questions-- gen anpil nan nou ki pa isit la ap viv la, santi yo lib yo voye yon imèl ba sa yo fi Fiziyad Kous se adrès imel nou an. Si w gen kesyon ou pa vle mande nou, tankou, oh mwen gen yon ensèk nan kòd m 'yo, oswa yon bagay sa a, se yon ti kras plis espesifik, petèt Google li an premye. Gen yon anpil nan resous gwo sou entènèt Audio API la yo deyò. Li nan vrèman byen dokimante ak li a ke yo te itilize pa yon tòn moun nan endistri yo, ak moun ki yo se jis bati plezi bagay pou tèt yo. Se konsa, ta dwe gen yon anpil nan resous yo deyò. Pè. Cool, konsa poukisa Web Audio API la? Dyagram sa a se yon ti jan nan yon evolisyon nan wout la son sou entènèt la te cultivées sou tan. Bgsound te tankou tag nan HTML orijinal ki Internet Explorer itilize yo sipòte. Li sèlman pèmèt pou son bèl debaz yo, fonksyonalite a pa t 'trè gaya, epi ou pa t 'kapab fè konplike sekans, oswa kontwole lè son te kòmanse ak sispann trè Robuste. Se konsa, li pa t 'patikilyèman byen devlope. Lè sa a, apre sa, Fè yan rive along-- ki, Mwen si ke ke ou nèg, yo tout yo konnen yo ak Flash-- petèt pa ki jan li fonksyone, men ou te sètènman wè li. Ou te gen yo mete ajou Flash ou Ploge nan, tout sa ki kalite bagay, e ke sètènman pwolonje seri a nan fonctionnalités ki te disponib. Men, fè itilizatè a enstale yon ploge nan se definitivman yon dezavantaj ki gen ladan Flash nan aplikasyon ou, dwa? Paske lè sa a ou se depann sou la itilizatè pral jwenn sa a ak ploge nan, ak pwobableman te vire koupe pa etap siplemantè sa a yo gen pou pran pou sèvi ak app ou yo. Lè sa a, ta kapab genyen yon ajou ki pral kraze aplikasyon antye ou, epi li fini moute ke yo te yon kochma pou pwomotè a, tou. Se konsa, sa ki te yon barikad. Lè sa a, apre yo fin ki te vin ansanm, HTML odyo tag a, ki se yon karakteristik ki gen plis HTML-- modèn ki sètènman pèmèt pou yon anpil plis bagay, men menm bagay sa yo ou ta ka fè te gen yon ti jan limite jis kòm yon rezilta nan bagay ki ki HTML te kapab nan. Se konsa, lè JavaScript nan API, Web Audio API la, te vin tounen yon estanda pratike atravè navigatè, ki vrèman mete nan elaji nan opòtinite pou devlopè reyèlman jwenn nan bilding fre bagay pou entènèt la. Pou yon tan long gen te gen te zouti vrèman gaya pou aplikasyon pou odyo natal, like-- tout moun konnen GarageBand, ak Lè sa a evidamman gen plis odyo melanje aplikasyon pwofesyonèl, ak ki kalite bagay. Men, gen pa t 'yon pa reyèlman bon Cloud-- Cloud, yeah, mwen devine Cloud-- platfòm ki baze sou wèb ki ta pèmèt devlopè yo bati aplikasyon pou moun ki fè odyo melanje. Antan l 'te pral montre w apre, Web Audio API la pèmèt pou vrèman pwisan bagay rive reyèlman tou senpleman, ki se trè fre. Se konsa, sa a, se enstriksyon an poukisa ou ta dwe gade rès la nan seminè a, fondamantalman. Epi, koulye a, mwen pral pale sou kèk JavaScript eleman jis debaz nan lang lan, se konsa ke nou kapab nan paj la menm lè nou pale sou nan API yon ti kras pita. Fre. Se konsa, sa a se yon rezime. Mwen bliye sa a te isit la. Yeah. HUGH Zabriskie: Genyen de glisad isit la. SAM GREEN: Sa a se rezime a nan kèk nan limit yo a obligatwa ak lòt, metòd yo fin vye granmoun. Lè sa a, kounye a, nou gen bagay sa yo. Fre. Pè. Se konsa, JavaScript esansyèl. Bagay sa yo premye premye, gen nan yon bèl siyifikatif diferans nan JavaScript kont nan yon lang tankou C, nan chemen an ki varyab yo kreye. Se konsa, nan C, nou ap itilize yo gen tape varyab nou an, dwa? Apre sa, mwen pa vle di kalite tankou tape yo nan, mwen vle di di ki tankou plase yo yon siyifikasyon type-- tankou, yon int, yon flote, se yon Char. Nan C, nou te reyèlman itilize yo gen yo kreye yon varyab ak Lè sa a bwa nan ki kalite pou nan tout tan ke nou itilize ki varyab. E ke se pa nesesèman pi mal, men li la pwobableman pi rèd yo sèvi ak. Youn nan karakteristik yo fre a JavaScript se ki varyab yo se sa ki yo rele "dynamique tape," ki vle di ke mwen kapab kreye yon varyab ak sa sentaks, varX egal 5, pou egzanp. Sa orijinal kreye yon nonb antye relatif variable-- dwat anba a kapo somewhere-- men mwen kapab chanje varyab sa , al gade nan yon fisèl san yo pa fè yon bagay tankou kreye yon varyab nouvo. Mwen pa bezwen enkyete sou chanje nan kalite. JavaScript konnen ke kalite a nan chanje yo, epi sa rive dynamique. Se konsa, gen benefis ak dezavantaj yo fè sa, kòm nenpòt moun ki ki moun ki nan te travay nan JavaScript pou yon ti tan ta ka konnen. Gen kèk fwa yo ou ta ka aksidantèlman chanje kalite a nan yon varyab ak Pa manyen ki chanje kalite, ak Lè sa a JavaScript ou ka crash-- oswa yon eksepsyon pral kraze nèt vide, paske ou pral gen nan mal di ki lè ou ap atann yon sèl kalite. Fre. Se konsa, scoping-- ki se tankou, si nou sonje semèn yo byen bonè nan kou a, refere a ki jan vizib yon varyab se ak nan sa ki zòn nan kòd la. Tout moun nan ki sanble trè menm jan nan wout la li sanble nan C. Se konsa, varyab yo scoped jeneralman nan aparèy òtopedik Curly ki nan yon fonksyon, ak Lè sa a, gen tou varyab globalman-scoped ki sont- si ou ekri yon varyab deyò nan yon fonksyon, li pral vizib nan tèks la tout antye. Youn diferans ki genyen ant JavaScript ak C an patikilye, se ke si ou deklare yon mondyal varyab nenpòt kote nan yon dosye tèks li a vizib nan nenpòt fonksyon nan ki dosye tèks. Sa a kòrèk, dwa? HUGH Zabriskie: Oui. SAM GREEN: Se konsa, sa a, se tou yon ti kras ti jan fenki nan konparezon a C, kote nou toujou te gen yo gen nou an definisyon varyab pi wo a tout tanp zidòl yo yo te itilize. Sa a pa yon règ ki nan fè respekte restriksyon ankò, se konsa, yon ti kras diferan. Epi ankò jis yo Renfòse, mondyal kont variables-- lokal trè menm jan ak C. Ou te kapab gen de varyab ak non an menm, epi yo gen youn nan non yo dwe kouvri pa yon varyab lokal si youn nan yo te mondyal. Se konsa, menm jan kalite pwoblèm ki anpil nan nou ka te kouri antre nan nan kèk a pwoblèm ou kouche byen lwen tèlman. Cool, se konsa sa a, se varyab. Koule kontwòl, sa vle di tankou, si-else-- stuff-- ki lojik e ki pasan. Se konsa, kòmanse ak, sa a se sa ki si-lòt bagay deklarasyon gade tankou nan JavaScript. Plasman an nan bagay sa yo sa yo divès kalite sou liy ki se pa enpòtan. Sa a se jis youn nan konvansyon ki pou fason nou estrikti kòd la. Jis tankou nan C, nou gen yon "si," yon deklarasyon parantèz. Sa a pa sa mwen vle di ke yo fè. M 'te fè l' ankò. HUGH Zabriskie: Ap eseye sòti? SAM GREEN: Non, mwen se jis ap eseye rale nan. Li pa gen pwoblèm. Se konsa, nou gen yon "si" deklarasyon ak nou gen yon kondisyon andedan nan li ki evalye nan vrè oswa fo, ak ki detèmine si wi ou non nou antre nan ki blòk nan kòd. Konsa tou, nou gen yon lòt bagay-si, ak yon lòt bagay, jis tankou nou ap itilize yo nan C. Ou menm tou yo ta dwe bèl konfòtab dwa koupe baton an ak pasan, paske yo gade tou yon sanble anpil ak C sanble. Men, ou pral avi ke nou ankò genyen, olye pou yo int inisyalizasyon, nou gen inisyalizasyon var. Apre sa, mwen devine ou gen dwe fè atansyon fè w ke ou pa chanje valè la nan mwen soti nan yon int nan yon fisèl, pou egzanp, paske sa k ap pase yo lakòz konpòtman etranj ou ta ka pa atann. Men, sa a ta dwe gade bèl yo konnen yo, kòm byen. Se konsa, sa a se kote bagay sa yo kòmanse jwenn yon ti jan fou nan JavaScript pou yon moun ki moun ki pral soti nan yon background nan C. Gen fonksyon nan JavaScript, ak gen nan yon fason deklare yon fonksyon ki sanble sòt de menm jan ak C, ak Lè sa a, gen nan yon lòt youn ki sanble kalite diferan. Vèsyon an premye, ki nou ka wè isit la, se kalite C-tankou, kote nou di, sa a se yon fonksyon, bay li yon non, bay ki kantite agiman, ak Lè sa a sa ki nan fonksyon an ale andedan sa yo aparèy òtopedik Curly. Nou pwal wè yon egzanp sou agiman nan jis yon dezyèm fwa. Lè nou konsidere ke sou liy kap vini an, nou wè, oh, isit la nan yon varyab rele "myFunction," epi nou egal l 'bay sa a jenerik fonksyon-bagay-- ki pa sanble yo gen anyen pral sou. Rezon ki fè la sa a, se diferan pase C se ke JavaScript se sa yo rele yon lang fonksyonèl, oswa si li gen eleman fonksyonèl, ki vle di ki fonksyon yo aktyèlman valè. Lè sa vle di ke nou ka mete yon varyab egal yon fonksyon ak lè sa a deplase ki fonksyon alantou li, pase li kòm yon agiman, fè tout kalite bagay tankou ke ak fonksyon. Yon lòt bagay yo note-- fonksyon sa ekri ak yon sèten kantite agiman. Nou pwal wè yon egzanp sou yon fonksyon ak yon agiman sou pwochen glise la. Men, JavaScript pa pral rele nan ou si ou eseye yo sèvi ak yon fonksyon ak nan mal kantite agiman. Li pral jis fè pi byen li yo fè fè, sa vle di ke si ou pase, ou rele yon fonksyon ki espere yon agiman ki pa gen okenn agiman, tout sa ki pral rive se li pral fè pi byen li yo eseye ak egzekite ki kòd, epi si li evantyèlman kouri nan yon eksepsyon oswa yon erè, li pral voye jete ki eksepsyon ak jis kenbe going-- ki se jis youn nan fason ki ki JavaScript fonksyone. Yeah. ODYANS: Kisa kap rive si gen nan twò anpil agiman? SAM GREEN: Se konsa, nan kesyon te, sa k ap pase si gen twò anpil agiman? Apre sa, repons lan se ke JavaScript pral jis inyore sa yo ki yo apre yo menm ki li espere. Li ap eseye egzekite fonksyon an rele kòm si li te jis de a an premye. Dwa? HUGH Zabriskie: Sa a dwat, yeah. Menm jan an tou, si gen yo twò kèk agiman, li jis kalite bay null nan tout agiman li pa gen okenn valè pou. SAM GREEN: Ki kapab aktyèlman ap sou la men, si ou vle ekri yon fonksyon ki pran yon varyab agiman kantite. Ou ka mete valè default nan definisyon an nan fonksyon an, epi li ka inyore lefèt ki D 'a nan pa la. Se konsa, mwen vle pale yon ti kras plis sou sa bal dènye pwen, ki se fonksyon yo valè. Sa se yon egzanp se sa ki yon ti kras lide-mouche si ou jis li li l ', epi yo pa panse sou sa k ap pase sou pou yon dezyèm fwa. Se konsa, kite pou yo gade jis nan liy lan premye isit la. Nou gen varyab sa a, F1, ki nou di se yon fonksyon ki fè bagay sa a. Apre sa, sa ki nan fonksyon an yo console.log ('alo'). Ou ka panse a kòm console.log nan JavaScript ekivalan nan printf. Se konsa, sa ki pral rive se, si nou kouri kòd sa a nan navigatè nou an, li pral enprime soti yon kòd. Mwen kapab demontre sa. ODYANS: Lè boutèy demi lit, menm si, fè sa vle di li nan ke yo te anrejistre yon kote? SAM GREEN: Yeah. Se konsa, mwen pral montre w sa k pral rive. Se konsa, kesyon an te, ki sa louvri sesyon vle di? HUGH Zabriskie: Se konsa, console.log se tankou printf pou C. SAM GREEN: Se konsa, console.log se tankou printf, Se konsa, si mwen gen console.log sa a ('alo'), ak mwen rele sa, fisèl la "alo" vin enprime soti nan konsole a. Sa a se konsole la. Li nan jis tankou printf, kote li simagri nan estanda deyò. Epitou, n ap wè nan yon minit, men sa a se aktyèlman refere li a konsole objè a, ak rele yon metòd sou sa objè. Sa pral fè plis sans nan yon minit lè nou li ale nan pale sou objè ki nan JavaScript, men mwen te panse mwen ta jis mansyone sa. HUGH Zabriskie: Nou itilize yo nan C, regleman anjeneral nou ekri yon pwogram gwo nan prensipal fè anyen. Men, sa ki nan fre nan JavaScript se ou gen sa a kalite entèprèt ki kouri nan tan reyèl, se konsa li pran jis liy pa liy, li ka jis entèprete ke sou tèren an. Epi, se kenbe yon dosye sou bagay sa yo ki te kouri anvan, se konsa li a yon zouti itil nan bèl itilize console.log, oswa konsole a, jeneralman, pou jis jwe otou ak JavaScript. SAM GREEN: Se konsa, pral tounen nan sa a example-- liy nan dezyèm nan Kòd isit la se trè lide-boggling nan tèt mwen. A premye fwa mwen li sa a, li te tankou, sa k ap pase sou? Se konsa, sa k ap pase sa ki, sa a deklarasyon fonksyon di, Mwen gen yon fonksyon rele F2 ki nan tann yon sèl agiman, f, ak Lè sa a li rele ki fonksyon, f, ki te pase nan li kòm yon agiman ki pa gen okenn agiman tèt li. Se konsa, ki ta ka yo te konfizyon. Si nou konprann sa a kòm F2 pran F1 kòm yon agiman, ak Lè sa andedan nan F2, f vin called-- ki vle di ke sa a liy nan kòd, apre de liy sa yo nan Kòd, rezilta nan "alo" ke yo te enprime nan konsole a. Lefèt ke nou ka pase fonksyon alantou kòm valè fini moute yo te youn nan pi plis nan karakteristik pwisan nan JavaScript kòm yon lang programmation. Deyò nan tout nan nan bagay awizom li ka fè, menm jan yon karakteristik nan la ak lang nan tèm de wout la ke li fè bagay sa yo fasil nan pwogram ak pèmèt pou bagay sa yo ki pa patikilyèman ki byen adapte nan entènèt la, pwogram fonksyonèl ak fonksyonèl aspè pwogram nan JavaScript se youn nan pi plis nan konsèp pwisan ki egziste nan JavaScript si ou mande m '. Fre. Se konsa, bagay kap vini an. Anplis de sa ke yo te fonksyonèl, genyen tou eleman nan JavaScript ki objè-oryante, ki se youn nan trè an Mo Buzz popilè nan syans òdinatè. Pwogram objè-oryante se yon bagay reyèlman popilè. JavaScript gen yon vèsyon nan sa, kote mwen kwè chak valè tou se yon objè, ki vle di ke chak objè vlope ansanm kèk nimewo nan valè. Se konsa, pou valè ki yo se senp, tankou yon nonb antye relatif, tankou varX egal 5, ki objè jis vlope ke youn valè. Men, nou kapab tou imajine yon sitiyasyon where-- nou ka panse nan sitiyasyon nan C kote nou te vle fè yon bagay ki gen strukt, pou egzanp, ki vlope plizyè valè yo ansanm ak fait li vrèman fasil yo pase bagay alantou. Sa a lè yon objè se an JavaScript. Li nan enpòtan sonje lè m 'di ke objè vlope kèk nimewo nan valè yo ansanm, ki fonksyon yo tou valè, ki vle di ke fonksyon kapab tou ap andedan nan yon objè ki JavaScript. Ak rezon an sa a, se enpòtan se ke, Lè nou konsidere ke nou souvan panse a rele yon metòd sou yon objè sa a, se nan yon tèm popilè ki soti nan lòt popilè objè-oryante lang, youn nan diferans ki genyen isit la se ke tout sa ki yon metòd se nan JavaScript se yon valè ki estoke andedan nan yon objè ki fè kèk action-- pètèt lè l sèvi avèk lòt valè yo ki andedan nan ki objè, men se pa nesesèman. Se konsa, ou ka imajine yon sitiyasyon, mwen devine nan yon ti kras nan yon fason fou, kote ou rele yon metòd pou yon sèl objè sou yon lòt objè, pou egzanp. Se konsa, li nan yon ti jan fenki nan fason sa a. Epi ou ka tou chanje metòd yo ki yo asosye avèk yon objè pa plase ke metòd yon fonksyon nouvo, ki se tou bèl diferan de lòt objè-oryante lang, kote yon fwa nou deklare yon objè ak enstansye li, nou pa ka chanje metòd yo ki ki asosye ak ki objè ankò. Se konsa, sa a, se bèl diferan. Fre. Se konsa, isit la nan yon egzanp, an premye, yon objè nan aksyon. Sa a se sa yo rele yon objè ki jenerik, ki vle di ke li pa gen okenn Non patikilye, pa gen yon klas, li nan jis kèk anbalaj nan valè. Ak wout la ki sanble se, nou gen sa a pè deyò nan aparèy òtopedik Curly isit la ki endike JavaScript ak di, sa a se yon objè. Valè yo andedan nan li yo chak valè andedan nan objè a ki ta dwe dwe vlope yo ansanm. Apre sa, andedan nan ki objè, nou Lè sa a gen valè kle pè, kote kle a refere a non an ki gen valè nan andedan nan objè a, ak lòt side-- nan opoze isit lan-- a kolon se valè aktyèl la ki ta dwe estoke. Se konsa, ou wè isit la nou gen yon kle rele FN ak valè sam, ki te swiv pa yon vigil, li di sou antre nan kap vini an. Lè sa a, yon kle rele LN, ki gen yon valè nan vèt, ki te swiv pa yon vigil, ki te swiv pa "ekri an lèt detache," ki se ale nan gen yon valè fonksyon ki pral fè liy sa a nan kòd. Se pou nou pran yon etap retounen lakay yo epi defèr sa k ap pase isit la. Se konsa, sa a se yon ti jan konplike, epi nou ap wè yon bagay nouvo la pou premye fwa a. "Sa a" mo kle a se bagay ki nouvo nou ap wè isit la, e ki sa sa fè se, refere a aktyèl la objè nan sijè ki abòde, dwa? Se konsa, lè nou di, sa a pwen tout wout la tounen object-- sa a tout antye lè nou fè this.fn, nou ap ale nan ale tout wout la tounen nan sa a objè, ale nan valè a fn epi pou yo jwenn Sam, rale li tout wout la tounen, bwa l 'isit la, ak Lè sa deplase sou. ODYANS: Se konsa, avèk Rekipere an, se ki fè paske yo te paramèt la definisyon? SAM GREEN: Se konsa, kesyon an te ye a, se la Rekipere fè paske yo te paramèt la definisyon? Yeah, absoliman. Ki sa ki nan pral rive isit la se, sa a dot di JavaScript a, OK, Mwen ap resevwa kèk valè soti nan objè sa a soti nan tèt mwen. Lè sa a, li pral gade pou yon antre rele fn, epi si li jwenn li, li pral retounen ki value-- konsa, li nan Sam. Men, mwen ta ka tou te tape yon bagay ki pa te defini isit la, ak Lè sa a li ta jis retounen undefined-- ki se yon bagay ki ka JavaScript fè, sa ki ka gen benefis yo, men li la also-- si ou fè yon Typo, li ka rezilta nan erè etranj. Se konsa, li pral jis eseye jwenn tou sa ou di l 'bay jwenn epi li pa k ap pase yo pote plent si se pa jwenn li ankò. Li pral jis di, mwen pa t ' jwenn li, ak Lè sa a deplase sou. Se konsa, li ta dwe undefined, plis vid, plis siyati. Yeah. Lè sa a, nou ka wè ke si nou te kapab Lè sa a, v al access-- epi nou rele tf.print () ak parantèz. Li nan ale nan rele ke ekri an lèt detache fonksyon ki pa gen okenn agiman, dwa? Men, si nou jis di tf.print () virgules, san yo pa parantèz yo, tout sa ki ta te fè se rale soti fonksyon nan soti nan valè a, men se pa aktyèlman rele l '. Fre. HUGH Zabriskie: yo ta dwe nou fè yon objè? SAM GREEN: Asire w, se pou yo fè sa. Se konsa, mwen ka deplase sa a egzanp nan konsole a. Nou ka imajine ke mwen gen yon objè. Se konsa, sa a se yon objè ki senp. Sa a se yon bagay ki gen de valè ak de kle, de kle valè pè. Se konsa, mwen ka Lè sa a aksè a ki estoke valè andedan nan sa a objè pa fè x.x1, pou egzanp, ak mwen jwenn 1 tounen. Menm jan an tou, x.x2, jwenn ke valè tounen. Epi, koulye a bagay la vrèman fre se, mwen kapab aktyèlman ajoute yon bagay nan sa a objè apre mwen te kreye li. Se konsa, ou ka imajine, se pou yo di mwen gen yon fonksyon. HUGH Zabriskie: Ou dwe fè chanjman-Antre nan. SAM GREEN: Oh, sa a, se anmèdan. Ki sa li pa renmen? Oh. Isit la nou ale. Fre. Se konsa, mwen te jis kreye sa a fonksyon, f, ki ki pral pou yo ale nan aktyèl la objè epi enprime this.x1. Se konsa, si mwen jis rele f pa tèt li, pa gen anyen k ap pase rive, dwa, paske li pa gen x1 jaden an objè a li nan refere li a. Men, si mwen di, x.f = f, ak Lè sa a mwen rele x.f (), mwen pral jwenn tounen 1. Sa fonksyon f se kounye a ki asosye ak objè x la, ki te gen yon kle rele x1 ki asosye ak valè a 1, Se konsa, lè nou rele this.x1, li nan ale nan jwenn sa li a kap chèche epi yo dwe kapab enprime yon valè deyò. Se konsa, sa se sèlman yon egzanp nan kalite nan bagay ki fou ou kapab fè avèk objè ki nan JavaScript. Se konsa, ke vèsyon te nan jenerik vèsyon, siyifikasyon ke nou te kreye lè l sèvi avèk sa a yon objè parantèz notasyon atèl Notasyon, rather-- e ke sa a sou la men si nou jis vle yon sèl egzanp nan yon objè patikilye, men sa ki si nou vle gen plis pase yon nan kalite la menm? Apre sa, repons lan nan kesyon se, gen bagay rele klas nan JavaScript kòm byen. Nou ka kreye yon fonksyon ki fè kèk sòt de inisyalizasyon pou yon objè etranje yo, epi nou ta di, tankou, class-- m 'konsa non an a object-- nan ki kapab itilize ankò egal fonksyon ki kouche li. Se konsa, sa sa a ta ka ekivalan ap kreye yon bagay ki ta dwe jis renmen, Curly atèl, str, kolon, sa a se yon fisèl, virgules, Curly atèl. Ki ta ka jenerik nan objè nou inisyalize, ak diferans nan yon sèl ke yo te sou mòn lan liy pwochen nou kreye yon pwototip, ki vle di li yon kle default ki nou ajoute nan objè nou an ki gen valè nan ki nan lis isit la. Sa vle di, lè m 'kreye yon nouvo egzanp nan sa a objè MyClass, li k ap pase yo gen pre-bati andedan nan li se yon valè rele str ak yon lòt valè rele myPrint, ki se pral gen yon fonksyon. Pè. Great. Se konsa, bagay ki sot pase a di sou JavaScript se ke li nan reyèlman itil pou sa yo rele operasyon asenkron. Asynchrone vle di se ke nou ka tann pou kèk operasyon ranpli anvan nou deplase sou, men deplase sou pandan ke nou rete tann ak Lè sa a gen yon bagay rive pita sou. Ak sa ki mwen vle di pa se sa ki, ou ka imajine yon sitiyasyon kote ou voye yon demann yo voye kèk sèvè wèb yon kote, epi li k ap pase yo voye ba ou tounen kèk moso gwo nan done, dwa? Apre sa, itilizatè ou te kapab rete tann nan nan Antretan pou sa rive, e pa gen anyen ta ka ale sou nan moman sa. Men, sa a pa yon gwo konsepsyon, dwa? Ou pa vle paj wèb la friz. E si itilizatè a vle klike sou yon meni drop-desann? Li pa yon modèl konsepsyon gwo. Olye de sa, fondamantalman sa JavaScript di, OK, fè operasyon sa a asenkron. Se konsa, tankou, rete tann nan background nan, ak Lè sa a lè se operasyon an fè, rele kalbak nan fonksyon- rele kèk fonksyon, kèk action-- yo fè siyal ki nan operasyon nou te ap tann pou nan fen se sou. Ak rezon an sa a, se super pwisan se, nou ka fè yon bagay, pase yon agiman, fè yon bagay, Lè sa a, rete tann ak pou yon bagay rive. Lè sa a, yon fwa ke yon bagay konplete, nou ka rele yon kalbak. Sa ki nan vrèman sou la men paske li pèmèt nou fè bagay sa yo ak Web Audio API, pou egzanp, tankou chaj yon odyo dosye soti nan yon sèvè aleka san yo pa gen pou ret tann pou a tout dosye odyo yo dwe chaje, ki ta dwe reyèlman move pou eksperyans itilizatè. Fre. Denye koup nòt sou debogaj, depi sa a se yon bagay w ap ale nan dwe fè kòm yon pati nan pwojè ou, garanti. Mwen mansyone konsole a JavaScript. Li se yon karakteristik super itil nan tout navigatè modèn, Apre sa, nou vrèman ankouraje w yo ka resevwa konfòtab lè l sèvi avèk konsole ou, si ou vle jwenn bon nan JavaScript. Li nan super sou la men pou debogaj, men li la tou reyèlman itil pou lè n ap kalkile konnen kouman ou kapab sèvi ak yon API. Li pèmèt pou reyèlman eksperimantasyon fasil san yo pa gen tape kèk kòd, ak Lè sa a konpile li. Ou pa dwe fè tout moun sa yo etap. Ou ka jis ekri kèk kòd nan yon liy, ak Lè sa a jwenn fidbak imedya sou si wi ou non ke liy nan kòd worked-- trè sou la men. Epi tou, sèlman yon sèl note-- teknik konsole a JavaScript se yon egzanp nan yon REPL-- konsa sa a, se R-E-P-L, REPL, ki vle di pou Li, evalye, ekri an lèt detache riban. W ap ale nan tape kèk bagay an, li pral li sa ou tape nan, li pral evalye l ', li li pral enprime nan pwodiksyon, ak Lè sa a li pral kòmanse ankò. Ki pèmèt ou byen vit ale nan ti sèk iteration, ki se vrèman fre. Mwen devine reyèl dènye note-- sa a se aktyèl nòt ki sot pase a, wi. Ki jan nou aktyèlman sèvi ak JavaScript? Se konsa, premye, nou ka enpòte li lè l sèvi avèk yon tag script nan tèt la oswa anba nan yon HTML file-- nenpòt kote andedan nan yon dosye HTML, vrèman. E nan lespas de yon tag script, gen de sub-fason pou importation JavaScript. Premye a se pa gen yon separe dosye JavaScript ke nou enpòte nan antye li yo, oswa pa gen yon zòn nan Kòd tankou script yo kòmanse, ak Lè sa a script antislach nan fen. Lè sa a, nou jis ekri JavaScript andedan dosye a HTML. Moun sa yo se de fason yo. Ou pa ka genyen li andedan nan HTML. ODYANS: Se youn pi bon pase lòt la? SAM GREEN: Kesyon an te, se youn pi bon pase lòt la. Se konsa, repons lan se wi, kòm yon pratik style kodaj, epi tou li li a tankou yon pratik konsepsyon. Gen de rezon poukisa li ta kapab pi bon. Premye a se, li fè yon ou Kòd anpil plis lizib si tout nan HTML ou se nan yon sèl kote, nan tout CSS ou a nan yon lòt kote, nan tout JavaScript ou se nan yon twazyèm plas la. Dwa? Mwen panse ke nou ta dwe te deja pale sou li nan sections-- tankou CSS-- sa ki is-- ak li ale souvan nan yon lòt dosye. Se konsa, menm jan kalite konsèp isit la. Ou kapab tou imajine ke JavaScript ta dwe reyitilize sou plis pase yon Paj HTML, oswa petèt yon gwo anpil paj HTML, epi ki gen ki JavaScript refactored nan yon sèl ranpli ke ou ka enpòte nan plis pase yon sèl kote pèmèt kòd la yo dwe fason pi plis soutnabl. Ou ka imajine fè yon sèl chanje nan JavaScript nan epi ki gen mande chanje li nan 100 dosye diferan. Ak olye pou nou ka jis chanje li nan yon sèl, ki se yon fason plis pouvwa anpil. Èske mwen reponn kesyon ou a? Fre. Nou kapab tou tape nan konsole a, kòm nou te mansyone anvan an. Epi ankò, yon dènye note-- Web Audio se bati nan, ou pa bezwen chaje anyen. Fre. Èske gen nenpòt kesyon, ou gen nenpòt ki plis kesyon sou JavaScript, anvan nou deplase sou? ODYANS: [fèbl] SAM GREEN: Tout dwa, fre. Se konsa, kounye li te ale nan pale sou API la. HUGH Zabriskie: Cool. Mèsi, Sam. SAM GREEN: Asire w. HUGH Zabriskie: Awesome, se konsa nou pral deplase sou soti nan JavaScript. Se konsa, nou te pale sou kèk nan esansyèl yo nan JavaScript, ak sa yo se varyab yo, fonksyon, objè, fonksyon kòm varyab, asenkron loading. Sa yo se tout bagay sa yo ke ou pral wè kòm ou itilize entènèt la Audio. Se konsa, nou ap jis pral pale sou li premye nan yon nivo segondè. Se yon API, se konsa li nan yon bagay ki nan bati, kòm Sam te di, dwa nan JavaScript nan ke ou itilize nan konsole a. Apre sa, li la aktyèlman jis tankou C ++ Kòd ki se reyèlman bati nan Chrome ak Firefox, ak tout nan navigatè sa yo. Se konsa, lide nan prensipal ak Web Audio se ke ou gen sa a kalite tiyo nan odyo, dwa? Se konsa, done odyo ou vini nan nan kèk fòm. Gen kalite twa forms-- prensipal ou gen osilator a, ki kreye yon vag sinis, kosinis vag, nou ap ale nan wè ki jan ki travay. Yon lòt yon sèl trè komen, nan kou, se yon MP3. Se konsa, petèt ou kòmanse ak yon chan, ak Lè sa a ou vle fè kèk filtraj ak sa yo ki ak pwodiksyon that-- ki te kapab yon sous posib. Lè sa a, yon vrèman fre se yon sèl mikwofòn la. Se konsa, ou ka sèvi ak kèk trè apèl debaz yo genyen nan JavaScript jwenn aksè nan la mikwofòn, ak kidonk si w te vle fè yon app tankou yon detektè goudwon, pou egzanp, ki pran an vwa ou ak figi soti pitch-- wout la trè fasil yo sa. Ou ka jis kalite li li l ' nan, figi konnen frekans lan, ak Lè sa a pwodiksyon yon nimewo. Se konsa, nou pral wè ki jan ki travay, tankou byen. Destinasyon an se fondamantalman kote done a odyo se pwodiksyon. Se konsa, jeneralman, sa a, se tankou natif laptop ou. Lòt opsyon yo tankou yon ScriptProcessorNode-- nou pral ale nan nœuds nan yon second-- men fondamantalman, swa w ap mete son soti a òdinatè w lan atravè moun kap pale, oswa w ap kalite anrejistreman li, se konsa w ap estoke li kòm done odyo. Se konsa, petèt si yon moun kreye mizik nan app ou ak Lè sa a ou vle nan dosye ki e petèt tankou ekspòtasyon li nan SoundCloud, pou example-- ki ta ka yon fason fè sa. Tout bagay la plezi, ki nou pral pale sou, k ap pase ant de pwen sa yo, kote nou chaje nan mizik la ak Lè sa a pwodiksyon li. Se konsa, mwen pral pale sou senk an etap nan pwodiksyon odyo nan yon dezyèm fwa. Nou gen bagay sa yo rele yon AudioContext, ki se sa a ti kras pakè nou wè isit la. Fondamantalman sa AudioContext is-- si nou ale nan JavaScript konsole a kounye a, nou ka kreye youn kounye a. Jis yon egzanp sou REPL, dwa? Nou ap lekti, evalye, epi li simagri. AudioContext se yon eta mondyal. Li nan yon struct, li nan yon objè isit la, ak li kenbe enfòmasyon sou bagay sa yo ke yo ale sou sou ekran an ki gen rapò ak odyo. Yon egzanp se tan aktyèl la. Sa a di ou nimewo a de segonn, trè jisteman, depi paj wèb la chaje. Se konsa, sa a se yon reyèlman itil ti kras pwopriyete ke ou ka itilize. Li nan li only-- Mwen panse ke aktyèlman ou ka eseye mete l 'se yon valè. Li pral di ou mete l ', ak Lè sa a si ou enprime li again-- li pa t 'aktyèlman byen travay. Se konsa, gen li-sèlman pwopriyete nan JavaScript. Sa a se vrèman itil si w ap kalite senkronize yon anpil nan diferan enfòmasyon, lè w ap kalite jwe son diferan. Yon lòt yon sèl reyèlman itil se destinasyon an kontèks. Definitivman, si w ap enterese, se pou ap eseye sa a nan pwòp ou a dwat konsole kounye a. Se konsa, sa a se yon AudioDestinationNode. Fondamantalman ki sa sa a di se, ki kote pwodiksyon an prale? Se konsa, gen de opsyon reyèl isit la. Anjeneral default a se jis ki pale natif ou, se konsa AudioDestinationNode fondamantalman jis di gen zewo rezilta son an vini nan, voye moun k ap pale a. Se konsa, jeneralman, ou pa fè sa gen yo jwe ak sa. Si w ap enterese nan lè l sèvi avèk aktyèlman ScriptProcessorNode a pou anrejistreman, definitivman tire m 'yon imel pita paske se sa yon ti kras plis konplike. Men, jeneralman, w ap jis kalite a sorti son nan kèk fòm. Se konsa, fre, nou pral so tounen isit la. ODYANS: Mwen regrèt. HUGH Zabriskie: Yeah. ODYANS: Mwen konnen ou te di yo pale bay ou pita sou anrejistreman. Èske ou ka koòdone ke ak Pro Zouti? HUGH Zabriskie: Avèk Pro Zouti? Ann we. Mwen pa panse sa. Se konsa, ale ant kliyan an, ki se JavaScript nan konsole, ak aktyèl ou òdinatè, se jeneralman yon bagay ki nan kalite a koupe limit, si ou pral, kalite pa nati a nan the-- li nan kalite yon bagay konsepsyon, men ou eseye kenbe navigatè a separe soti nan itilizatè a aktyèl òdinatè. Anjeneral, bagay la sèlman w ap kapab aksè se mikwofòn la oswa kamera a. Ou pa kapab, mwen pa panse, sèvi ak Pro Zouti. Sepandan, si ou te kreye yon tras nan Pro zouti, ekspòte sa, ou te kapab chaje ki nan isit la, filtre li, pou egzanp, pwosesis sa a, epi ekri ki nan yon Audio Destination-- oswa, no-- yon esfè Processeur neu. Lè sa a, soti nan la, ou te kapab ekspòtasyon ke yo SoundCloud, ou te kapab voye l 'nan yon imèl, oswa tou sa ou renmen soti nan la. Men, gen se kalite yon baryè ti tay ant fè mizik sou òdinatè ou ak fè mizik sou entènèt. SAM GREEN: Epi sa a, pa inik nan API sa a. Li se yon karakteristik sekirite nan Chrome, ak Mwen panse ke tout lòt navigatè modèn. Navigatè a se endepandan. Se konsa, pou egzanp, yon paj entènèt pa kapab itilize JavaScript yo vire son an sou sou ki pale natif ou, pou egzanp. Oswa li pa ka vire òdinatè w lan nan. Apre sa, pa gen okenn pwen entèmedyè ant de bagay sa yo, dwa, se konsa swa ou gen yon konplè distraksyon, oswa ou louvri moute nan defo sekirite nan kite yon pwogramè ak move entansyon fè tou sa yo vle ak laptop ou. Epi sa a, poukisa Chrome se endepandan. HUGH Zabriskie: Yeah. Ki fè sans? Cool, fre. Mwen te jis ale nan montre yon egzanp sou yon sèl. Sa a se bèl anpil kòm lwen ke ou jwenn, nan tèm a aksè òdinatè itilizatè a la. Si ou gen yon klavye USB ploge nan, ou ka itilize yon bagay yo rele entènèt la MIDI API, nou pa pral reyèlman pale sou isit la, men sa a se yon lòt API sa a, se bati nan omwen Chrome-- ankò, sa a se poukisa nou renmen Chrome-- Mwen panse ke Firefox oswa Safari, sa a se yon bagay fasil yo google-- navigatè diferan gen diferan sipò pou ki APIs yo te aplike. Men, si ou te vle ploge nan yon klavye epi travay ak enfòmasyon sa a, kalite voye klavye a enfòmasyon sou nan òdinatè a ak Lè sa a sèvi ak sa sou entènèt, sa a API se kote ou ta dwe ap travay sa. Fre. OK. Se konsa, byen vit deplase sou isit la. Kouman yo nou fè sou tan? Oratè 1: Sou 15. HUGH Zabriskie: 15 minit rete? OK, fre. Se konsa, nou pral ras devan yo isit la. Se konsa, fondamantalman, pwen prensipal la nan panse a sa a kòm yon tiyo se ke chak etap nan tiyo a se yon seri de nœuds odyo. Sous nou an, se pou yo di, se yon osilator. Nou bezwen yo kreye yon ne osilator. Apre sa se jis kalite a fonksyon-la ti kras epi yo ap tout ki baze soti nan kontèks la odyo isit la. ODYANS: Lè li di osilator, ki vle di li la aktyèlman pral soti nan literalman de poto diferan dèyè, yo soti? HUGH Zabriskie: Non, li la tankou yon reprezantasyon dijital. Li nan aktyèlman aplike nan C ++. Mwen aktyèlman pa konnen karakteristik yo nan ki jan li la aktyèlman aplike, Men, tou sa ap travay kòm done binè. Aktyèlman, yeah. Ki ta ka di: mwen te kapab aktyèlman, si w ap enterese, Mwen te kapab voye ba ou yon ti kras plis enfòmasyon sou ki jan trase yo kenbe li te gen yon fòma dijital. OK, fre. Se konsa, nou ap génération yon ton tankou yon sinis balanse oswa yon bagay tankou sa yo, petèt 440 Hertz. Nou kreye yon osilator. Si nou vle yo mete volim nan, nou konekte anyen nan yon GainNode, nou ta ka fè ak .creategain. Ki kouche volim ou yo. Ou ka konsa, sou nenpòt ki nan lòt la options-- byen, se konsa yon sous tanpon odyo ne se kote ou ta ka magazen yon MP3 ke ou te chaje nan. Biquad filtre se pou filtraj si ou vle pran tout baz la soti nan yon chante, oswa yon bagay tankou sa. Bondye padon ou vle pran baz la soti nan yon chante. Apre sa, AudioDestination ne se, ankò, tankou kote finaliser nou an, se. Si ou se tout tan tout tan enterese nan wè tout diferan opsyon ki disponib nan posib, jis ale nan tab la epi kite oto a-konplè vini. Men, si ou kreye, ou pral wè nan tout bagay sa yo diferan ke ou ka kreye. Ou ka kreye dinamik processeurs script, Mwen pa menm konnen ki sa ki se, pou melanje chanèl fusions ak chanèl repartiteur ak tou sa. Fre. Se konsa, sa a se jis yon egzanp sou yon tiyo. Se konsa, nou gen twa sous vini nan. Petèt sa yo, se trase, petèt sa yo, se MP3s. Youn k ap pase nan yon filtre, yon lòt yon sèl la ap resevwa yon lòt defòme balances yon sèl la kite la ak dwa. Ou ka fè tout kalite bagay sa yo ak yo tout jwenn melanje alantou ansanm, ak Lè sa a soti vini odyo a nan fen a, menm jan destinasyon. Sa a se yon egzanp sou sa ki plis konplike Web Audio Kòd sanble. W ap kreye tout bagay sa yo diferan objè ki dwat isit lan-- Mwen pa si nan sa a. Non, li pa rale nan. OK. SAM GREEN: Ou fè kontwòl, Scroll-Up. HUGH Zabriskie: kontwòl Scroll-- SAM GREEN: Non, pa gen okenn. Control-- HUGH Zabriskie: Oh, kontwòl, Scroll? Oh, gotcha. Yeah. Wow, Non, Nope. OK. Mwen p'ap fè sa. Se konsa, yeah, nan sa a premye seksyon isit la, ou wè nou ap kreye tout bagay sa yo diferan nœuds soti nan kontèks la. Nou jis ap piecing yo ansanm nan dezyèm pati a pa sa a fonksyon rele konekte. Sa se yon reyèlman kle fonksyon nan Web Audio. Li jis vle di yon fwa ou te fè yon bagay ki gen son an nan yon sèl ne, pase l bay ne kap vini an. Se konsa, nou gen sous la, li konekte nan analyser la, analyser nan fè yon bagay ak li, li ale nan deformation, ak sou sa, ak nan destinasyon an nan pati anba a isit la menm. Fre. OK, se konsa nou pral kenbe deplase sou. Pipeline-- a ankò, sa yo se tuyaux ki pi komen, se konsa nou pale sou tout bagay sa yo tankou distòsyon, balances yo, tout bagay sa a. Si ou se reyèlman enterese nan lè l sèvi avèk bagay sa yo Pro zouti, moun pwobableman enterese w. Si ou pa, petèt ou jis vle jwe son an, oswa petèt ou jis vle mete volim nan sou son an. Moun sa yo ki yo se de sòt nan pi komen nan tuyaux nan pwodiksyon odyo. Yon fwa ankò, fason yo ou ka pran li nan kòm yon oscillator-- konsa, se pou yo fè yon Demo a nan ki dwa isit la. Se konsa, nou ap ale nan kreye yon senp kontèks odyo isit la, ak pou soti nan ke nou ap ale yo kreye osilator nou an. Se konsa, se sa ki, ankò, nou ap jis pral rele Kreye osilateur. Nou pral mete yon frekans sou sa, 440 Hertz, pi renmen tout moun. Apre sa, nou konekte ki nan destinasyon an point-- ki se oratè a, se konsa kontèks destinasyon an. Finalman, nou jis di, kòmanse zewo segonn nan kounye a, epi nou te son? [K ap sonnen] HUGH Zabriskie: Isit la nou ale. Se jis yon vag sinis. OK, fre. Lè sa a, nou pral sispann sa. ODYANS: Ki kote te fè ki fidbak soti? HUGH Zabriskie: fidbak la? Oh, pwobableman mikro nou an. Se konsa, yeah, sa a, se ki jan ou fè li. Apre sa, aktyèlman, si mwen te gen kenbe li kouri, ou te kapab gen frekans lan valè kòm li nan kouri, se konsa sa a, se yon bagay plezi yo jwe alantou. Fre. Sa a toujou yon sèl bèl yo prezante. SAM GREEN: Nou pa t ' panse osijè de sa, èske nou ye? HUGH Zabriskie: Yeah, sa a, se yon yon sèl anbarasan. Se konsa, pezib loading-- mwen pral montre yon egzanp sou ke nan fen an anpil. Sa a chaje yon MP3. Apre sa, mikwofòn, ou itilize jis yon fonksyon rele Navigator.getUserMedia () pou mande pou aksè nan lan nan itilizatè mikwofòn pou enfòmasyon sa. Isit la nan filtraj, mwen pral jis kenbe k ap soti nan sa a. Sa a se trè wo nivo, men filtè jis pèmèt ou [Bip] Filtraj pèmèt ou tou yo kreye bagay sa yo tankou woz bri, bri mawon, bri blan. Si ou vle kreye pi bon kalite bri, ki gen kèk moun ki renmen dezòd otou ak, ou ka itilize Web Audio filtraj fè sa. Audio Panning-- konsa imajine si w ap ekri yon jwèt epi ou vle son an son tankou li nan ap vini, tankou, tire nan tout ekran an, ou ka itilize balances nan odyo a yo kreye sa a jan de kòn, ki like-- li a trè mathy, men li la aktyèlman vrèman fre si ou jwenn li travay, ak gen nan kèk bon tutoryèl sou li mwen ka voye ba ou. Fondamantalman, ou kapab kalite a kreye son an nan yon bagay ap pase nan yon fason 3D. Men, si ou gen yon enterè DJ, ou ka kòmanse melanje ak travèse manyak chante. Sa a se jis kèk anpil debaz kòd, fondamantalman sa m 'te ye anvan an. Sa a kouche volim nan nan osilator, se konsa nou kreye osilator nou an ki kreye ond lan. Nou kreye GainNode nou an, mete frekans nou an, ak Lè sa a konekte osilator la nan GainNode, ki Lè sa a fondamantalman chanje konbyen lajan siyal pèmèt nan. Men, reyèlman, li nan yon dijital bagay, se konsa li nan plis just-- yeah. Sa a pa sa k ap aktyèlman pase, men sa a sa k ap pase nan lavi reyèl ak yon byen yo. ODYANS: --quantization a paramèt nan volim? HUGH Zabriskie: Padon? ODYANS: Èske se yon kantifye paramèt volim? HUGH Zabriskie: Yeah. Lè sa a se yon sèl bagay Mwen vrèman ensufizant sou nan mwen konnen, ki jan pran travay sou yon nivo dijital. Mwen konnen ak aktyèl siyal, li nan fondamantalman kontwole konbyen lajan ou ap anplifikasyon siyal la. Se konsa, yeah. Mwen pral voye ba ou plis enfòmasyon sou sa, paske mwen ta dwe kirye aktyèlman konnen plis sou sa. Men, fondamantalman paramèt yo ye a, se yon sèl fold-- nan signal-- nan pi fò ak zewo gen okenn siyal, oswa ou pa pral tande nenpòt son. Nou pral sote tan Demo pou sa paske li nan fondamantalman sa m 'te ye anvan an. Epi ankò, an Context.Destination se ne la destinasyon odyo. Awesome, OK. Se konsa, mwen pral fè yon rapid de Demonstrasyon. Kouman yo nou fè sou tan? Oratè 1: Sou 10 minit. HUGH Zabriskie: 10 minit? Gwo! Pè. Se konsa, yon sèl nan premye mwen pral , sa yo rele chante pi renmen mwen. Se konsa, sa a se jis yon ti kras HTML JavaScript. Nou ap ale nan gen de bouton sou paj la jwe chante pi renmen m ' epi yo sispann chante pi renmen m 'yo. Mwen pral chanje sa a. ODYANS: Kouvri mikwofòn ou yo. HUGH Zabriskie: Yeah. Apre sa, mwen te chaje nan isit la yon script ki basically-- ak sa a se reyèlman itil pou loading yon MP3, kidonk sa a jis fè loading MP3s fason pi vit. Li nan fondamantalman jis yon pakè. Li jis fè pwosesis la nan loading nan MP3s anpil pi vit, sinon ou ap itilize demann HTTP, kalite tankou sa nou te fè sou pyès la kounye a mete ak sèvè. Li nan reyèlman lèd, ou pa vle fè li. Se konsa, sa a Guy, Boris SMUs, te ekri yon vrèman itil zouti ti kras rele BufferLoader. Tout sa ou fè se tou senpleman pase l nan kontèks, ou pase l 'yon list-- oswa, yeah, se li yon lis nan JavaScript? SAM GREEN: Yon etalaj. HUGH Zabriskie: Oh, li se yon etalaj, ki nan dwa. Li nan yon etalaj de chemen nan dosye diferan. Lè sa a, ou pase l 'yon fonksyon. Sa a se kalbak a nou te pale sou ak asenkron loading. Ki pral dwe rele yon fwa dosye yo chaje. Epi sa fonksyon ki yo rele lè nan nan dosye chaje pran kòm yon perimèt yon etalaj de tanpon chaje. Se konsa, ki fèt isit la. Fondamantalman, se BufferList ale nan fè yon sèl value-- oswa li k ap pase yo dwe yon etalaj de longè yon sèl, ki gen ladan l 'nan endèks zewo tout dosye a chaje nan MP3 a. Se konsa, sa m 'fè lè m' fini loading se, Mwen tou senpleman kreye yon sous tanpon, ki se yon odyo sous tanpon ne. Pwochen etap la se mwen chaje nan la source.buffer kòm tanpon an plen chaje soti nan BufferList-- nan li nan yon anpil nan buffers-- ak Lè sa a ou konekte ki odyo pezib nan destinasyon an. Se konsa, sa li a pral fè se jis tou senpleman mete MP3 a tou dwat nan nan pwodiksyon an, epi yo kòmanse li imedyatman sou ap resevwa apèl sa a. Cool, se konsa kite a wè sa a rive nan aksyon. Mwen [fèbl] isit la, se pou yo wè. Se konsa, mwen jis ale nan kòmanse yon sèvè de baz yo. Sa a yon bagay ki sa ou bezwen fè si w ap fè demann pou dosye loading. Mwen pral kòmanse yon sèvè de baz yo. Sa a se fondamantalman ou tout antye PSET kounye a nan yon sèl liy, men li la jis kòmanse yon sèvè sou pò 80/80. Se konsa, nou ale sou isit la, nou ale nan chaje 80/80, nou ap ale nan ale nan chante pi renmen mwen. Se konsa, si mwen frape "Jwe mwen pi renmen chante "kounye a, li k ap pase yo chaje mwen chante pi renmen ak jwe l-- [MIZIK - Eagles yo, "LIFE NAN vit la  LANE "] --which k ap pase yo dwe "Lavi nan Lane a vit "pa Eagles yo. Koulye a, mwen te kapab frape "One Stop mwen pi renmen chante "ak reparèt li. [MIZIK - Eagles yo, "LIFE NAN vit la  LANE "] Men, si m 'ale sou nan konsole, paske Mwen itilize yon varyab mondyal sou isit la nan kenbe tras nan sa a valè, li aktyèlman pral kounye a dwe rekonèt nan konsole a. Se konsa, li oto-kreye pou mwen. Se konsa, sa a, se sa k ap jwe kounye a, e mwen ka tou senpleman rele source.stop () sou sa. Oke, ou konnen ki sa? Jis pou ou nèg te tande sa a song-- ou ta ka rekonèt chante sa a. [MIZIK - Rick Astley, "PA JANM BAY pral  Ou leve "] [MIZIK - Eagles yo, "LIFE NAN vit la  LANE "] Nou te kounye a tout te Rickrolled. OK, gwo, k ap deplase sou. Fre. Se konsa, sa a se fondamantalman yon egzanp sou jis ki jan ou te kapab chaje yon MP3 file-- [MIZIK - Eagles yo, "LIFE NAN vit la  LANE "] --and jwe li, epi yo sispann epi yo kòmanse li. Mwen te kapab te fè yon anpil plis [fèbl] Yon sèl nan dènye mwen pral fè se, Mwen pral montre w yon [fèbl]. [MIZIK jwe] Se tankou, ogg.wave.mp3. Mwen panse ke, si mwen sonje kòrèkteman, Mwen te kouri antre nan kèk pwoblèm ak .m4a, men mwen pa fin sèten sou sa. Mwen panse ke mp3.wave-- [MIZIK - Rick Astley, "PA JANM BAY pral  Ou leve "] OK, gwo. Mwen pa ta dwe te di ke. De tout fason, hello. Se konsa, nou gen sa a louvri. Se konsa, kounye a tout mwen fè se, mwen fondamantalman kreye yon sentaks debaz pou kreye mizik. Se konsa, si m 'fè yon bagay tankou, ajoute g4 sou 1 2, ki sa sa vle di se ke, ajoute nòt la pyano, G4, ki se katriyèm G a moute sou pyano a anba nan fon an. Se konsa, sa a se kalite MIDI pale, se konsa pou moun ki mizik ki baze sou, sa a se nòt jis MIDI. ODYANS: Sa a G a nan Mwayen C a, dwa? HUGH Zabriskie: Sa a se G a pi wo a Middle C, sa a, se dwa. ODYANS: Pi wo pase Middle C. HUGH Zabriskie: Yeah. Aktyèlman, repons lan se wi. Mwen panse ke mwen aktyèlman te fè li se youn [fèbl], kidonk sa a ta kapab yon oktav pi wo a sa. Se konsa, kite a wè. Si m 'frape Play-- [Repetitif Piano REMAK] --we're ale nan tande sa. Lide a se ke li opere jis tankou yon liy lòd ta, Se konsa, si m 'ale leve, li desann sou klavye m 'yo, ou ka ale tounen nan anvan yo kòmande, ki se trè itil. Apre sa, anba a se lis mwen an nan tren, ki fè yo tout kouri sou riban. ODYANS: Ou te an konsideran la 88-kle klavye sou sa, dwa? HUGH Zabriskie: Kesyon an te, Mwen an konsideran yon kap klavye 88-kle, ak repons lan se wi, se mwen. Ki sa ki m 'te fè se mwen fondamantalman pran 88 echantiyon nan pyano a, yonn pou chak nòt. Se konsa, chak fwa ou tande yon nòt, depi koulye a, ki se aktyèlman yon bouk ki sanble like-- sa a se ap resevwa te jwe sou riban, se konsa pou chak nòt, sa a ap kouri. Kisa k ap pase se, Mwen kreye yon zòn de defans ankò, Mwen kreye yon ne pran yo mete volim nan. Sa a jis yon reyèlman konplike fason pou li di mwen magazen tanpon an nan yon source.buffer. Mwen bay li pran an, mwen konekte li nan genyen an, se benefis la ki konekte nan la pwodiksyon, ak Lè sa a mwen jwe li. Se konsa, ki se kalite pwosesis la nan pran nan yon sous tanpon. ODYANS: Èske ou ka aktyèlman pran ki son sèk, epi fè li mouye [fèbl]? HUGH Zabriskie: Ou kapab, yeah. Genyen re-vèb, gen nan reta, deformation. Ou ka fondamantalman mete anyen nan ant nan ki sandwich de- byen, tiyo se yon pi bon metafò, men ou ka ajoute anyen nan sa. Fre. Se konsa, mwen pral fini Demo a la a yo ba ou yon sans nan jis nimewo a absoli nan fwa ou ka kouri ki fonksyon tout nan yon fwa. Se konsa, mwen pral retire sa a. Mwen pral kreye yon dèlko that-- fondamantalman sa does-- sa a se reyèlman kalite yon sentaks konplike men li la ale nan jenere nòt sou vole a, ak jis kòmanse jwe yo kòm li evalye yo. [Entèrpozisyon Piano] Se konsa, nou ka jis fè yon ti kras mizik isit la. [Entèrpozisyon Piano] Se konsa, sa kòmandman sa a fè sa, pou egzanp, se li pran moun twa nòt pou la pyano ak Lè sa a mete yo sou B3. Sentaks sa a ta ka fè yon sans ti kras pi plis bay moun yo ki gen yon jan nou koumanse mizik isit la. Mwen kapab ajoute yon tanbou choute. Mwen can-- [Entèrpozisyon ENSTRIMAN] --just jwe otou ak sa. Se konsa, ou ka make-- [Entèrpozisyon ENSTRIMAN] Ke yon moun nan yon ti kras pi plis anmèdan. [Entèrpozisyon ENSTRIMAN] Se konsa, ki ajoute yon owaza senbal sèk sou chak nòt 16th, ak yon 16% [Fèbl]. [Entèrpozisyon ENSTRIMAN] Yeah, se konsa wout la sa a fonctionne-l 'la toujou nan 4: 4. [Entèrpozisyon ENSTRIMAN] Yeah, se konsa kat kwen yo, ak 16/8. [Entèrpozisyon ENSTRIMAN] Se konsa, an mwayèn, ou jwenn 60% a frape sou nòt yo 16th. Aniwe, sa a te jis kalite yo montre nan kèk nan bagay sa yo ou te kapab bati ak Web Audio API la. Li nan reyèlman pwisan, li vrèman vit, epi ou ka fè yon anpil nan bagay sa yo fre ak li. Se konsa, ankò, nenpòt kesyon ou genyen, imel moi Hugh-- oswa Sam, e franchman, Google gen yon tòn resous bon. Nenpòt kesyon sot pase a? Yeah. ODYANS: Se konsa, ou kapab jwenn aksè nan bati-an mikwofòn la. E si ou te vle sèvi ak yon pi bon mikwofòn? HUGH Zabriskie: Si ou te vle yo sèvi ak pi bon mikwofòn? Se konsa, ankò, sa a se yon pati nan la distraksyon ant Chrome ak rès la nan òdinatè w lan. Sòf si li nan disponib atravè yon API, tankou Web MIDI API, ou te kapab pwobableman jwenn kèk antay, men jeneralman pa tankou sa posib. SAM GREEN: Ou ka also-- tout Chrome a konnen se sa ki mikwofòn default ou se, epi li jwenn aksè sa. Se konsa, si ou te gen yon mikwofòn ou te kapab mete kòm mikwofòn default òdinatè a, , ou te kapab jwenn aksè nan li fason sa a epi li ta pwobableman travay. HUGH Zabriskie: Sa se yon pwen bon. Mwen pa janm te eseye sa, men ou ta ka kapab kalite de- si ou redireksyon oratè a D ', ou ka kapab fè sa, yeah. Nenpòt kesyon sot pase a? Fre. Oke di ou mèsi mesye anpil pou l ap gade. Mwen se Hugh. SAM GREEN: Mwen Sam. HUGH Zabriskie: Lè sa a se CS50.