SAM GREEN: Hi, kulħadd. Merħba għall seminar tagħna. Jisimni Sam. HUGH ZABRISKIE: Ninsab Hugh. SAM GREEN: U aħna qed tmur biex jitkellmu llum dwar JavaScript u l-API Web Audio. Just biex tibda, dan huwa deskrizzjoni tal-aġenda tagħna għall-seminar. Aħna ser tibda billi jitkellem dwar għalfejn inti għandek tkun interessati fil-Web API awdjo, għaliex hija JavaScript il-lingwa li għandek bżonn għal dan, u mbagħad jitkellmu dwar JavaScript essentials-- hekk simili, jimxu miegħek permezz ta 'xi baŜi tal-lingwa, u mbagħad jitkellmu dwar il- API awdjo fuq livell għoli. Imbagħad, Hugh se jitkellmu dwar xi wħud mill-istadji tal-produzzjoni awdjo u mbagħad demo dan sequencer biża proġett huwa mibni u jurik l-kodiċi. U allura, aħna ser ikollhom ħin biex mistoqsijiet fl-aħħar għall-persuni li huma hawn jgħixu. HUGH ZABRISKIE: Kessaħ. SAM GREEN: Kessaħ. HUGH ZABRISKIE: Kessaħ. I se back up. SAM GREEN: Allura, l-ewwel affarijiet ewwel. Allura wieħed mill-affarijiet kbar dwar il-Web Audio API hija li hemm l-ebda twaqqif meħtieġa. Jidħol mibnija fil lill browsers aktar moderni, inklużi Chrome, Xifer, kollu kemm hu mazz ta others-- 'dawk kollha porzjonijiet li kbar ta ' nies qed jużaw illum. Hekk hemm ebda stabbilit, apparti minn ftit jkollna a web server għaddejjin, għal inti biex tibda taħdem fuq il-proġett tiegħek, li huwa kbir. Nirrakkomandaw pretty ħafna li inti tqis użu Chrome għall JavaScript web iżvilupp, biss minħabba iżviluppatur tagħha għodod huma verament b'saħħtu. Bħala eżempju ta 'ftit dak li jfisser billi qal jiftħu tiegħek JavaScript console-- jekk inti tmur fis Chrome u inti tħares lejn xi paġna tal-web, u inti xellug ikklikkja Spezzjona Element, u mbagħad inti tmur għal dan ftit drop-down dritt hawn u tikklikkja fuq Console, tkun taf tara dak li jiftaħ jistenna ħafna bħal kmand pront li inti tista 'tara fuq Mac tiegħek, jew fuq il-ID. U biss bħal dik, nistgħu tip jikkmanda hawn, bħal ċari, u jikkmanda oħra bħal dik. Nistgħu noħolqu varjabbli, kif Ser naraw aktar tard fl JavaScript. U hekk xi ħaġa li nistgħu nagħmlu fil JavaScript, nistgħu nagħmlu mal-console, u li l-mod super handy biex tibda playing madwar mal APIs u jkollna komdu ma JavaScript dritt barra l-BAT. Ebda sett up meħtieġ, li huwa tassew sbieħ. Kessaħ. Tal-biża. Hekk biss ħaġa waħda aktar li jżid. Jekk għandek xi questions-- hemm ħafna minnkom li ma jkunux hawn jgħixu, tħossok liberu li email us-- dawn huma indirizzi email tagħna. Jekk għandek xi mistoqsijiet inti ma tridx li jitlob minna, bħal, oh I jkollhom bug fil-kodiċi tiegħi, jew xi ħaġa li l-ftit aktar speċifiku, forsi Google ewwel. Hemm ħafna ta 'riżorsi kbira dwar il-Web Audio API hemmhekk. Huwa verament tajjeb dokumentati u huwa qed użati minn ton ta 'nies fil industrija, u nies li huma biss bini Jittieħed gost għalihom infushom. Għalhekk għandu jkun hemm ħafna tar-riżorsi hemmhekk. Tal-biża. Kessaħ, hekk għaliex il-Web Audio API? Din id-dijagramma huwa ftit ta 'evoluzzjoni tal-mod ħoss fuq il-web kibret matul iż-żmien. Bgsound kien simili l-tikketta HTML oriġinali li Internet Explorer tintuża biex tappoġġja. Hija permessa biss għal ħsejjes pretty bażiċi, l-funzjonalità ma kienx robust ħafna, u inti ma setgħux jagħmlu sekwenzar ikkumplikata, jew kontroll meta ħoss beda u waqaf robust ħafna. Allura, ma kienx partikolarment żviluppat sew. Imbagħad wara li, Flash daħal along-- li, Jien ċert li inti guys huma kollha familjari ma Flash-- forsi mhux kif taħdem, imma inti stajt ċertament jaraha. You ħadthom ltqajna biex taġġorna Flash tiegħek Plug-in, dak kollu li tip ta 'għalf, u li ċertament estendiet il-firxa ta 'funzjonalità li kien disponibbli. Iżda t-teħid tal-utent jinstallaw plug-in hija definittivament żvantaġġ għall-inklużjoni tal Flash fl-applikazzjoni tiegħek, id-dritt? Għaliex imbagħad int dipendenti fuq il- utent għaddejjin u jsibu dan plug-in, u probabbilment qed jiġu ttrasformati off minn dan il-pass addizzjonali huma għandhom jieħdu biex jużaw app tiegħek. U mbagħad jista 'jkun hemm aġġornament li ser break-applikazzjoni tiegħek kollu, u dan jispiċċa jkun ħmarillejl għall-iżviluppatur, wisq. Allura li kien Barricade. U mbagħad wara li daħlet tul, il-lametta awdjo HTML, li hija karatteristika ta HTML-- aktar moderna li ċertament permess għal ħafna aktar Jittieħed, iżda anki l-affarijiet li inti tista 'tagħmel kien hemm ftit limitata biss bħala riżultat ta 'l-affarijiet li HTML kien kapaċi. Allura meta l-JavaScript API, il-Web Audio API, sar standard prattika madwar browsers, li verament mwessa s-sett ta 'opportunitajiet għall-iżviluppaturi li verament jsibu rwieħhom bini Jittieħed jibred għall-web. Għal żmien twil kien hemm kien għodda verament robusti għall-applikazzjonijiet awdjo nattivi, like-- kulħadd jaf GarageBand, u allura ovvjament hemm aktar professjonali awdjo taħlit applikazzjonijiet, u dak it-tip ta 'għalf. Iżda ma kienx hemm Cloud-- verament tajba mhux Cloud, yeah, I raden Pjattaforma fuq l-internet Cloud-- li tippermetti lill-iżviluppaturi biex jibnu l-applikazzjonijiet għal nies tagħmel taħlit awdjo. U kif hu ser nuruk aktar tard, il-Web Audio API jippermetti verament b'saħħtu Jittieħed jiġri verament sempliċi, li huwa pjuttost jibred. Allura dak l-istruzzjoni li għaliex inti għandhom jaraw il-bqija tas-seminar, bażikament. U issa, jien ser jitkellmu dwar xi JavaScript-- elementi biss bażiċi tal-lingwa, b'tali mod li nistgħu nkunu fuq l-istess paġna meta nitkellmu dwar l- API ftit aktar tard. Kessaħ. Allura, dan huwa sommarju. I nesa dan kien hawn. Yeah. HUGH ZABRISKIE: Hemm żewġ slides hawn. SAM GREEN: Dan huwa sommarju ta 'xi wħud mil-limitazzjonijiet mill-, metodi oħra li jorbtu qodma. U allura issa, għandna dawn l-affarijiet. Kessaħ. Tal-biża. Allura, JavaScript essenzjali. L-ewwelnett, hemm differenza pretty sinifikanti fl JavaScript versus fil- lingwa bħal C, bil-metodu li varjabbli huma maħluqa. Għalhekk fl C, aħna qed jintużaw biex wara tip varjabbli tagħna, id-dritt? U jien ma jfissirx tip bħal tip fi, I tfisser tip bħal jassenjawhom tifsira type-- bħal, l int, float, char. Fl C, konna verament użati biex jkollhom joħolqu varjabbli u mbagħad stick għal dak it-tip għall- ħin kollu li nużaw dak il-varjabbli. U li mhix neċessarjament agħar, iżda huwa probabbilment aktar diffiċli għall-użu. Waħda mill-karatteristiċi jibred tal JavaScript huwa li varjabbli dak li sejjaħ "dinamiku ittajpjat," li ifisser li I tista 'toħloq varjabbli li sintassi, varX ugwali 5, per eżempju. Li toħloq oriġinarjament integer variable-- dritt taħtha l- hood somewhere-- imma I jistgħux jibdlu din varjabbli li jirreferu għal string mingħajr ma jsir xi ħaġa bħal ħolqien ta 'varjabbli ġdida. I m'għandhomx bżonn ninkwetaw dwar il-bidla tat-tip. JavaScript jaf li l--tip nbidlu, u li jiġri dinamiku. Allura, hemm benefiċċji u żvantaġġi għal dan, kif xi ħadd li ħadem fil JavaScript għal waqt tista 'know. Hemm drabi meta inti tista 'aċċidentalment tibdel it-tip ta 'varjabbli u mhux jimmaniġġaw li t-tibdil tip, u mbagħad tiegħek JavaScript tista crash-- jew eċċezzjoni jiġu mitfugħa, għaliex inti ser ikollok l- tip żbaljata meta inti tistenna tip wieħed. Kessaħ. Allura, scoping-- li huwa simili, jekk aħna tiftakar l-ewwel ġimgħat fil-kors, tirreferi għal kif viżibbli varjabbli huwa u f'liema qasam tal-kodiċi. Kollha ta 'li jistenna simili ħafna għall-mod kif jidher fil C. Allura varjabbli huma scoped ġeneralment fi ħdan braces kaboċċi fi ħdan funzjoni, u allura hemm ukoll varjabbli globalment scoped li are-- jekk tikteb varjabbli barra ta 'funzjoni, se jkun viżibbli fit-test kollu. Wieħed differenza bejn JavaScript u C b'mod partikolari, hija li jekk inti tiddikjara globali kullimkien varjabbli fil-fajl test huwa viżibbli fi kwalunkwe funzjoni fi ħdan dan il-fajl test. Li korretta, id-dritt? HUGH ZABRISKIE: Yep. SAM GREEN: Allura dak ukoll ftit bit funky meta mqabbla mal C, fejn aħna dejjem kellhom ikollhom tagħna definizzjonijiet varjabbli fuq mill-postijiet dawn kienu użati. Li mhux regola li l-infurzata aktar, hekk, xi ftit differenti. U għal darb'oħra biss biex reemphasize, globali kontra variables-- lokali simili ħafna għal C. Jista 'jkollok żewġ varjabbli bl-istess isem, u jkollhom waħda mill isimhom shadowed minn varjabbli lokali jekk wieħed minnhom kien globali. Tip Allura, simili ta ' problemi li xi wħud minnkom jista 'jkollhom run fis f'xi tal-problema tiegħek settijiet s'issa. Kessaħ, b'tali mod li fatturi varjabbli. Fluss Kontroll, li jfisser simili, jekk-else-- stuff-- loġiku u loops. Allura biex tibda, dan huwa dak li jekk inkella- dikjarazzjonijiet look like fil JavaScript. It-tqegħid mill-affarijiet varji dwar il-linji mhix importanti. Dan huwa biss wieħed mill-konvenzjonijiet għall-mod kif kodiċi istruttura aħna. Eżatt bħal fil-C, għandna "jekk," dikjarazzjoni parentesi. Li mhux dak I fisser li tagħmel. I ma kien għal darb'oħra. HUGH ZABRISKIE: Jippruvaw ħruġ? SAM GREEN: Le, jien biss tipprova li zoom. Ma jimpurtax. Allura, għandna "jekk" id-dikjarazzjoni u għandna kundizzjoni ġewwa ta 'dan li jevalwa sa vera jew falza, u li jiddetermina jekk jew le aħna jidħol li blokk ta 'kodiċi. U bl-istess mod, għandna inkella 'jekk, u l oħra, bħad aħna qed użati fl C. Inti wkoll tkun pjuttost komda dritt barra l-BAT ma 'linji, għaliex huma wkoll tħares ħafna bħall C jistenna. Imma inti ser ikollok avviż mill-ġdid li aħna jkollhom, minflok int initializations, għandna initializations var. UI raden inti għandek joqgħod attent li jagħmlu żgur li int ma jbiddlux il-valur ta I minn int biex string, per eżempju, minħabba li għaddej biex jikkawża imġieba stramb inti ma tista jistennew. Iżda dan għandu jagħti ħarsa pretty familjari, kif ukoll. Allura dan huwa fejn affarijiet jibdew jiksbu xi ftit crazy fil JavaScript għal xi ħadd li huwa għaddej minn isfond ta 'C. Hemm funzjonijiet fl JavaScript, u ​​hemm mod wieħed li tiddikjara funzjoni li jistenna tip ta 'simili għal C, u allura hemm ieħor li jistenna tip ta 'differenti. L-ewwel verżjoni, li nistgħu naraw hawn, huwa tip ta 'C-like, fejn ngħidu, dan huwa funzjoni, tagħtiha isem, jagħtu in-numru ta 'argumenti, U allura l-kontenut tal-funzjoni mur ġewwa dawk ċineg kaboċċi. Ser naraw eżempju ta argumenti ftit tieni. Billi fuq il-linja li jmiss, naraw, oh, Heres varjabbli imsejjaħ "myFunction," u aħna ugwali għal dan ir function-- thing-- ġeneriċi li ma jidhirx li jkollhom xejn għaddej. Ir-raġuni li l differenti minn C hija li JavaScript huwa dak li sejjaħ lingwa funzjonali, jew ikollu elementi funzjonali, li jfisser li l-funzjonijiet huma attwalment valuri. U dan ifisser li nistgħu stabbilit varjabbli biex ikunu ugwali għal funzjoni u mbagħad jimxu dik il-funzjoni madwar, jgħaddu bħala argument, jagħmlu kull tip ta 'għalf bħal dik ma 'funzjonijiet. Ħaġa waħda oħra li note-- funzjonijiet huma miktuba ma 'ċertu numru ta' argumenti. Ser naraw eżempju ta 'funzjoni ma 'argument fuq il-pjastra jmiss. Iżda JavaScript mhux se Yell fi inti jekk inti tipprova għall-użu funzjoni mal- numru ħażin ta 'argumenti. Hija ser biss tagħmel ħilitha biex tagħmel do, li jfisser li jekk inti tgħaddi, inti sejħa funzjoni li tistenna argument bl-ebda argument, dak kollu li se jiġri huwa li ser tagħmel mill-aħjar li tipprova tesegwixxi dan il-kodiċi, u jekk eventwalment tmur fi eċċezzjoni jew żball, dan ser tarmi din l-eċċezzjoni u biss iżommu going-- li huwa biss wieħed mill-modi li JavaScript jaħdem. Yeah. UDJENZA: X'jiġri jekk hemm wisq argumenti? SAM GREEN: Allura l- kwistjoni kienet, dak li jiġri jekk ikun hemm wisq argumenti? U t-tweġiba hija li JavaScript se biss jinjora dawk li huma wara dawk li qed tistenna. Hija ser jippruvaw biex tesegwixxi l-funzjoni sejħa bħallikieku kien biss l-ewwel tnejn. Dritt? HUGH ZABRISKIE: Dak id-dritt, yeah. Bl-istess mod, jekk hemm huma ftit wisq argumenti, hija biss tip ta 'jagħti null għal kull argumenti ma jkollu ebda valur għall. SAM GREEN: Liema jista attwalment jiġi handy, jekk inti jridu jiktbu funzjoni li tieħu Numru argumenti varjabbli. Tista 'tissettja valuri awtomatiċi fil id-definizzjoni tal-funzjoni, u tista 'tinjora l-fatt li l-input mhux hemm. So I trid titkellem ftit aktar dwar dan l-aħħar bullet punt, li huwa l-funzjonijiet huma valuri. Dan huwa eżempju li hija xi ftit mind-blowing jekk inti biss taqraha, u ma naħsibx dwar x'inhu għaddej għat-tieni. Allura, ejja nħarsu biss fil l-ewwel linja hawn. Għandna din varjabbli, f1, li aħna ngħidu hija funzjoni li ma dan ħaġa. U l-kontenut tal-funzjoni huma console.log ("bonjour"). Inti tista 'taħseb console.log bħala l- JavaScript ekwivalenti ta 'printf. Allura x'se jiġri huwa, jekk aħna run dan il-kodiċi fil-browser tagħna, dan ser jistampa string. I jista 'juri li. UDJENZA: Billi log, għalkemm, ma li jfissirx li huwa jkun hemm riżultat negattiv x'imkien? SAM GREEN: Yeah. So I ser nuruk dak li jiġri. Għalhekk il-kwistjoni kienet, dak ma log medju? HUGH ZABRISKIE: Allura console.log huwa simili printf għall C. SAM GREEN: Allura console.log huwa simili printf, hekk jekk I jkollhom din console.log ("bonjour"), u I-sejħa li, l-sekwenza "Hello" gets stampata mal-console. Dan huwa l-console. Huwa biss bħal printf, fejn prints li l-istandard. U aħna ser tara fil-minuta, iżda dan huwa fil-fatt jirreferu għall-console oġġett, u ssejjaħ metodu fuq dak l-oġġett. Li ser jagħmel aktar sens fil-minuta meta aħna jasal sal jitkellem dwar oġġetti fl JavaScript, imma ħsibt nixtieq biss isemmu dan. HUGH ZABRISKIE: Aħna użati fl C, right-- aħna normalment jikteb programm big fl ewlenija li tagħmel xejn. Imma x'hemm jibred JavaScript huwa inti dan it-tip ta 'interpretu li runs fil-ħin reali, u għalhekk tieħu biss linja b'linja, hija tista 'biss tinterpreta dan fuq il-post. U żżomm kont ta ' affarijiet li jimxu qabel, dan huwa għodda pretty utli li użu console.log, jew il-console, ġenerali, għal biss playing madwar mal JavaScript. SAM GREEN: Allura jmorru lura għal din example---tieni linja tal-kodiċi hawnhekk hija pjuttost mind boggling in my head. L-ewwel darba I taqra dan, Kien simili, x'inhu għaddej? Allura dak li qed jiġri huwa, dan dikjarazzjoni funzjoni jgħid, I jkollhom funzjoni msejħa f2 li l-argument jistennew wieħed, f, u mbagħad jitlob li , il-funzjoni f, li kien għadda lilha bħala argument bl-ebda argumenti stess. Allura, li seta 'kien konfuża. Jekk aħna nifhmu dan bħala f2 f1 jieħu bħala argument, u mbagħad ġewwa ta 'f2, f gets called-- b'liema mezzi li din il-linja ta 'kodiċi, wara dawn iż-żewġ linji ta ' kodiċi, jirriżulta "Hello" jiġi stampat għall-console. Il-fatt li aħna jistgħu jgħaddu funzjonijiet madwar bħala valuri jispiċċa jkun wieħed mill-aktar karatteristiċi b'saħħithom ta JavaScript bħala lingwa ta 'programmar. Barra ta 'kollha ta' l- affarijiet tal-biża li tista 'tagħmel, biss bħala karatteristika tal- lingwa f'termini tal-mod li jagħmel l-affarijiet faċli għall-programm u tippermetti għal affarijiet li mhumiex partikolarment jixraq ferm tajjeb lill-web, programmazzjoni funzjonali u funzjonali aspetti ta 'programmazzjoni ta JavaScript hija waħda mill-aktar kunċetti qawwija li teżisti fil JavaScript-- jekk inti ssaqsi me. Kessaħ. Allura, ħaġa li jmiss. Minbarra li jkunu funzjonali, hemm ukoll elementi ta 'JavaScript li huma oġġett orjentati lejn, li hija waħda mill-ħafna buzz kliem popolari fix-xjenza tal-kompjuter. Programmazzjoni oġġett orjentati lejn hija ħaġa verament popolari. JavaScript għandu verżjoni ta 'dan, fejn Nemmen kull valur huwa wkoll oġġett, li jfisser li kull oġġett garżi flimkien xi numru ta 'valuri. Allura għal valuri li huma sempliċi, bħal integer, bħal varX ugwali 5, dak l-oġġett biss garżi dak il-valur wieħed. Iżda nistgħu wkoll jimmaġina sitwazzjoni where-- nistgħu naħsbu ta 'sitwazzjonijiet fis-C fejn ridna li tagħmel xi ħaġa ma structs, per eżempju, li garżi diversi Valuri flimkien u jagħmel huwa verament faċli biex jgħaddu l-affarijiet madwar. Li meta l-oġġett huwa fil JavaScript. Huwa importanti li wieħed jiftakar meta ngħid li l-oġġetti mgeżwra xi numru ta 'valuri flimkien, li l-funzjonijiet huma wkoll valuri, li jfisser li l-funzjonijiet tista jkun ukoll ġewwa ta 'oġġett JavaScript. U r-raġuni li l-importanti hija li, filwaqt aħna sikwit think ta 'sejħa ta' metodu fuq oġġett li l- ta 'terminu popolari minn oħrajn lingwi popolari oġġett orjentati lejn, Waħda mid-differenzi hawnhekk hija li dak kollu li metodu ma jkunx fil JavaScript huwa valur maħżun ġewwa ta 'oġġett li jwettaq xi action-- possibilment użu tal-valuri l-oħra li huma ġewwa ta 'dak l-oġġett, iżda mhux neċessarjament. Allura tista 'timmaġina sitwazzjoni, I raden fi ftit ta 'mod crazy, fejn inti imsejħa metodu ta 'wieħed joġġezzjona fuq oġġett ieħor, per eżempju. Għalhekk, huwa ftit funky b'dan il-mod. U tista 'wkoll jibdlu l-metodi li huma assoċjati ma 'xi oġġett billi jassenja dan il-metodu ta ' funzjoni ġdida, li hija wkoll pretty differenti minn oħra lingwi oġġett orjentati lejn, fejn ladarba aħna niddikjaraw oġġett u instantiate dan, aħna ma tistax tbiddel il-metodi li huma assoċjati ma 'dak l-oġġett aktar. Allura dak pjuttost differenti. Kessaħ. So here eżempju, minn naħa, ta 'oġġett fl-azzjoni. Dan huwa dak li sejjaħ oġġett ġeneriku, li ifisser li ma jkollhom l-ebda isem partikolari, ma jkollux klassi, huwa biss ftit tgeżwir ta 'valuri. U l-mod li jistenna huwa, għandna dan il-par ta 'barra tal kaboċċi ċineg hawn li jindikaw lill JavaScript u jgħidu, dan huwa oġġett. Il-valuri ġewwa ta 'dan huma kull valuri ġewwa tal-oġġett li għandu jiġu mgeżwra flimkien. U ġewwa ta 'dak l-oġġett, aħna mbagħad ikollhom pari b'valur ewlenin, fejn l-muftieħ jirreferi għall-isem tal-valur ġewwa tal-oġġett, u l side-- oħra biswit il-here-- kolon huwa l-valur attwali li għandhom ikunu maħżuna. Allura inti tara hawn li għandna ewlieni imsejħa FN b'valur sam, segwita minn virgola, qal fuq id-dħul li jmiss. Imbagħad ewlieni msejjaħ ln, b'valur ta 'aħdar, segwita minn virgola, segwit minn "print," li se jkollhom valur funzjoni li se tagħmel din il-linja tal-kodiċi. Ejja tieħu pass lura u unpack x'inhu għaddej hawn. Allura dan huwa ftit kumplikata, u aħna qed tara xi ħaġa ġdida għall-ewwel darba. Il- "dan" keyword huwa l-ħaġa ġdida aħna qed jaraw hawn, u dak li dan ma huwa, jirreferi għall-kurrent joġġezzjonaw fl-ambitu, id-dritt? Allura meta ngħidu, dan turi t-triq kollha lura għal dan object-- kollu meta nagħmlu this.fn, aħna qed tmur biex tmur it-triq lura għal dan l-oġġett, mur l-valur fn u jiksbu sam, iġbdu it-triq kollha lura, stick hawn, u mbagħad jimxu fuq. UDJENZA: Allura bl-irkupru, huwa li jsir minħabba l-parametru definizzjoni? SAM GREEN: Għalhekk il-kwistjoni kienet, hija l- irkupru jsir minħabba l-parametru definizzjoni? Yeah, assolutament. X'hemm jiġri hawn jiġifieri, dan dot jgħid li l-JavaScript, OK, jien jkollna xi valur minn dan l-oġġett mill myself. U allura ser tħares għal dħul imsejħa fn, u jekk hija tqis, dan ser jirritorna li value-- hekk, huwa sam. Imma I setgħet ukoll ittajpjat xi ħaġa li ma kienx definit hawn, u allura biss ritorn undefined-- li hija ħaġa li tista JavaScript do, li jista 'jkollu benefiċċji, imma hija also-- jekk inti tagħmel typo, din tista 'tirriżulta fi żbalji stramb. Għalhekk ser biss tipprova ssib tkun xi tkun għid li ssib u mhuwiex ser jilmentaw jekk ma jsibuha. Hija ser biss jgħidu, I ma jsibuha, u mbagħad jimxu fuq. Għalhekk ikun undefined, plus vojt, plus isem l-aħħar. Yeah. U allura nistgħu naraw li jekk aħna imbagħad tista 'tmur isfel u access-- u nitolbu tf.print () bil-parentesi. Huwa ser sejħa li jistampaw funzjoni bl-ebda argumenti, id-dritt? Imma jekk aħna biss qal tf.print () punto virgola, mingħajr il-parentesi, li kollha kien jagħmel huwa pull il-funzjoni mill-valur, iżda mhux attwalment imsejħa. Kessaħ. HUGH ZABRISKIE: Jekk nagħmlu oġġett? SAM GREEN: Sure, ejja tagħmel dan. So I tista 'timxi dan Eżempju mal-console. Nistgħu nimmaġinaw li għandi oġġett. Allura dan huwa oġġett sempliċi. Dan huwa oġġett li fih tnejn Valuri b'żewġ ċwievet, żewġ valur ewlieni pari. So I imbagħad jistgħu jaċċedu għall-valur maħżun ġewwa ta 'dan l-oġġett billi tagħmel x.x1, per eżempju, u niġi 1 lura. Bl-istess mod, x.x2, nikseb dak il-valur lura. U issa l-ħaġa verament jibred huwa, I jista attwalment żżid xi ħaġa għal dan l-oġġett wara Stajt maħluqa minnha. Allura tista 'timmaġina, ejja jgħidu I għandhom funzjoni. HUGH ZABRISKIE: You għandek tagħmel Shift-Ikteb. SAM GREEN: Oh, dan huwa annoying. What did li ma simili? Oh. Here we go. Kessaħ. Hekk stajt biss maħluqa din il-funzjoni, f, li se jmorru għall-kurrent oġġett u this.x1 print. Mela jekk jien biss sejħa f billi innifsu, xejn għaddej li jiġri, id-dritt, għaliex m'hemmx x1 qasam fl-oġġett huwa jirreferu għall. Iżda, jekk ngħid, x.f = f, u mbagħad I sejħa x.f (), jien ser terġa 'lura 1. Li f funzjoni issa huwa assoċjati mal-oġġett x, li għandha ċavetta tissejjaħ x1 assoċjati mal-valur 1, hekk meta aħna sejħa this.x1, huwa ser issib dak li qed ifittxu għall u jkunu kapaċi li jistampa valur out. Allura li jinsab biss eżempju wieħed tax-xorta mill-affarijiet crazy inti tista 'tagħmel ma' oġġetti fil JavaScript. Allura dik il-verżjoni kienet l verżjoni ġenerika, tifsira li ħloqna oġġett jużaw dan parentesi notazzjoni Brace notation--, rather-- u li handy jekk aħna biss jixtiequ eżempju wieħed ta 'oġġett partikolari, iżda dak jekk irridu li jkollna aktar minn waħda tal-istess tip? U r-risposta għal din kwistjoni hija, hemm affarijiet imsejħa klassijiet fl JavaScript ukoll. Nistgħu noħolqu funzjoni li ma xi tip ta 'inizjalizzazzjoni għal oġġett barrani, u aħna jgħidu, bħal, class-- tiegħi hekk l-isem tal-object-- jistgħu jerġgħu jintużaw ugwali funzjoni li tistabbilixxi it up. Allura dak li dan ikun ekwivalenti li qed toħloq oġġett li ikun biss tixtieq, kaboċċi Brace, str, kolon, dan huwa spag, punto virgola, kaboċċi Brace. Dan ikun il-ġeneriku oġġett aħna initialize, bid-differenza wieħed minnhom fuq il- linji li ġejjin aħna joħolqu prototip, li ifisser li huwa ċ-ċavetta default li aħna żid għal oġġett tagħna li għandu l-valur elenkati hawn. Li jfisser li, meta I joħolqu ġdida eżempju ta 'dan l-oġġett MyClass, li għaddej biex tkun pre-mibnija ġewwa ta dan valur imsejħa str u l-valur ieħor imsejħa myPrint, li hija se tkun funzjoni. Tal-biża. Great. Allura l-aħħar ħaġa li jgħidu dwar JavaScript hija li huwa verament utli għal dak li huma msejħa operazzjonijiet mhux sinkroniku. Mezzi Asinkronika hija li aħna jistax jistenna xi operazzjoni biex jitlesta qabel nimxu fuq, iżda jimxu fuq filwaqt li qed nistennew u mbagħad ikollhom xi ħaġa jiġri aktar tard. U dak I jfisser minn dak huwa, inti jista 'jimmaġina sitwazzjoni fejn inti tibgħat talba lill xi web server x'imkien, u li għaddej biex inti tibgħat lura xi blokki kbar ta 'data, id-dritt? U l-utent tiegħek setgħux jistennew fil- frattemp għal dak li jiġri, u xejn ma jista 'jkun għaddej f'dak il-ħin. Iżda li mhux disinn kbir, id-dritt? Inti ma tridx il-paġna web li jiffriżaw. X'jiġri jekk l-utent irid ikklikkja fuq menu drop-down? Mhuwiex mudell tad-disinn kbir. Minflok, bażikament dak JavaScript ma huwa jgħid, OK, tagħmel din l-operazzjoni asynchronously. Allura simili, stenna fl-isfond, u mbagħad meta l-operazzjoni isir, sejħa tal-callback function-- sejħa xi funzjoni, Do xi action-- li sinjal li l- operazzjoni aħna kienu qed jistennew sa l-aħħar huwa fuq. U r-raġuni li l-super qawwija hija, nistgħu nagħmlu xi ħaġa, jgħaddu argument, tagħmel xi ħaġa, u mbagħad stenna għal xi ħaġa li jiġri. Imbagħad, ladarba li xi ħaġa jikkompleta, nistgħu sejħa callback. Li tassew handy għaliex tikri us do affarijiet ma Web Audio API, per eżempju, bħal tagħbija audio file minn server remot mingħajr ma jkollhom għalfejn jistennew l- audio file kollu li titgħabba, li tkun verament ħażin għal esperjenza utent. Kessaħ. Aħħar ftit noti dwar debugging, peress li dan hija ħaġa int ser ikollhom jagħmlu bħala parti mill-proġett tiegħek, garantiti. Semmejt il JavaScript console. Huwa fattur super utli ta browsers moderni kollha, U aħna verament ninkoraġġukom biex tikseb komdu tuża tiegħek console, jekk inti tixtieq li tikseb tajba fil JavaScript. Huwa super handy għall debugging, imma hija wkoll verament utli għall jidhru kif jużaw API. Hija tippermetti tassew esperimentazzjoni faċli mingħajr ma jkollhom tip xi kodiċi, u mbagħad josservawha. Inti ma għandekx tagħmel dawk il-passi kollha. Tista 'biss jiktbu xi kodiċi fis-linja, u mbagħad tieħu rispons immedjat fuq jekk dik il-linja ta 'kodiċi jew le worked-- ferm handy. U wkoll, biss note-- teknika waħda il JavaScript console huwa eżempju ta 'REPL-- b'tali mod li R-E-P-L, repl, li stands għall read, jevalwaw, loop print. Int ser tip xi għalf fl-ilma għax taf taqra dak li inti ittajpjat fil, dan ser tevalwa, u dan ser jistampaw il- output, u mbagħad dan ser jerġa 'jibda. Li jippermettilek li tmur malajr fil ċrieki mtennija, li huwa verament jibred. I raden aħħar reali note-- dan huwa l-aħħar nota attwali, iva. Kif nistgħu attwalment jużaw JavaScript? Allura l-ewwel, nistgħu importazzjoni billi tuża tag iskrittura fil-quċċata jew fil-qiegħ ta 'HTML file-- kullimkien ġewwa ta 'fajl HTML, verament. U fi ħdan tag iskrittura, hemm żewġ sub-modi ta 'importazzjoni JavaScript. L-ewwel huwa billi jkun hemm fajl JavaScript separat li aħna l-importazzjoni fl-intier tiegħu, jew billi kejl ta 'kodiċi bħal iskrittura biex tibda, u mbagħad iskrittura backslash sat-tmiem. U allura aħna biss jiktbu JavaScript ġewwa l-fajl HTML. Dawk huma l-żewġ modi. Ma jistax ikollok dan ġewwa ta HTML. UDJENZA: Huwa wieħed aħjar mill-oħra? SAM GREEN: Il-kwistjoni kienet, hija waħda aħjar mill-oħra. Allura, iva, bħala prattika stil kodifikazzjoni, u wkoll huwa simili prattika disinn. Hemm żewġ raġunijiet għaliex jista 'jkun aħjar. L-ewwel huwa, jagħmel kodiċi tiegħek ħafna aktar tinqara jekk il HTML tiegħek huwa f'post wieħed, kollha CSS tiegħek huwa fi post ieħor, kollha ta 'tiegħek JavaScript huwa fil-tielet post. Dritt? Naħseb li għandna diġà tkellem dwar dan fl sections-- bħal CSS-- dak li is-- u din tmur spiss fil-fajl ieħor. Allura, tip simili ta 'kunċett hawn. Tista 'wkoll jimmaġina li JavaScript se jerġgħu jintużaw fuq aktar minn waħda Paġna HTML, jew forsi paġni HTML kbir ħafna, u li dan JavaScript refactored f'waħda fajl li inti tista 'importazzjoni fis f'aktar minn post wieħed tippermetti l-kodiċi li b'mod aktar maintainable. Tista 'timmaġina għamel wieħed bidla fil-JavaScript u ma jbiddlu dan f'100 fajls differenti. U minflok nistgħu biss jibdlu dan wieħed, li huwa mod aktar qawwija. Did I iwieġeb il-mistoqsija tiegħek? Kessaħ. Nistgħu wkoll tip fil-console, kif konna imsemmi qabel. U għal darb'oħra, l-aħħar note-- wieħed Web Audio hija mibnija, inti m'għandekx bżonn tagħbija xejn. Kessaħ. Hemm xi mistoqsijiet, għandek kwalunkwe aktar mistoqsijiet dwar JavaScript, qabel nimxu fuq? UDJENZA: [inaudible] SAM GREEN: Kull dritt, berred. Allura issa huwa għaddej biex jitkellmu dwar l-API. HUGH ZABRISKIE: Kessaħ. Grazzi, Sam. SAM GREEN: Sure. HUGH ZABRISKIE: biża, so aħna ser jimxu fuq minn JavaScript. Allura konna tkellimna dwar xi wħud l-essenzjali ta 'JavaScript, u dawk huma l-varjabbli, il-funzjonijiet, oġġetti, il-funzjonijiet kif varjabbli, tagħbija mhux sinkroniku. Dawn huma kollha affarijiet li inti ser tara kif tuża l-Web Audio. Allura aħna qed biss ser jitkellmu dwar l-ewwel fuq livell għoli. Huwa ta 'API, dan huwa xi ħaġa li mibni, kif Sam qal, dritt fil-JavaScript li tuża fil-console. U huwa attwalment bħad C ++ kodiċi li huwa verament mibnija fis Chrome u Firefox, u kollha ta 'dawn browsers. Allura l-idea prinċipali mal-Web Audio huwa li inti għandek dan it-tip ta 'pipeline ta' awdjo, right? Allura data audio tiegħek taqa 'fil f'xi forma. Hemm tip ta 'tlieta forms-- prinċipali inti għandek il-ossillatur, li joħloq mewġa sinusojdali, mewġa cosine, aħna qed tmur biex tara kif din taħdem. Ieħor wieħed komuni ħafna, naturalment, huwa MP3. Allura forsi inti tibda bil kanzunetta, u allura inti trid tagħmel xi filtrazzjoni għal dak u l-produzzjoni that-- li jista 'jkun sors possibbli. U mbagħad verament jibred waħda hija l-mikrofonu. Allura inti tista 'tuża xi ħafna sejħiet bażiċi fil JavaScript biex jiksbu aċċess għall- mikrofonu, u hekk jekk inti riedu jagħmlu app bħal detector grawnd, per eżempju, li jieħu fil vuċi tiegħek u l-figuri barra l pitch-- mod faċli ħafna għal dan. Tista 'biss tip ta' taqrah in, insemmu l-frekwenza, u mbagħad output numru. Allura aħna ser tara kif din taħdem, kif ukoll. Id-destinazzjoni hija bażikament fejn id-data awdjo huwa output. Allura ġenerali, li huwa simili kelliema laptop tiegħek. Għażliet oħra huma simili a ScriptProcessorNode-- aħna ser tingħata biex nodes ' second-- imma bażikament, jew int tqegħid ħoss out permezz tal-kompjuter tiegħek permezz kelliema, jew int tip ta 'reġistrazzjoni li, hekk int maħżuna bħala data awdjo. Hekk forsi jekk xi ħadd toħloq mużika fil app tiegħek u mbagħad inti tixtieq li tirreġistra dik u forsi bħal esportazzjoni lill SoundCloud, għall example-- li jkun mod wieħed biex tagħmel dan. L-għalf gost, li aħna ser nitkellmu dwar, jiġri bejn dawn iż-żewġ punti, fejn aħna tagħbija fil-mużika u mbagħad output dan. Hekk jien ser jitkellmu dwar il-ħames stadji ta 'produzzjoni awdjo fit-tieni. Għandna din ħaġa imsejħa l AudioContext, li huwa dan ippakkjar ftit naraw hawn. Bażikament dak AudioContext is-- jekk aħna mur l-JavaScript console dritt issa, nistgħu noħolqu wieħed dritt issa. Just eżempju ta repl, id-dritt? Aħna qed taqra, evalwazzjoni, u prints. AudioContext hija stat globali. Huwa Struct, huwa oġġett hawn, u din iżżomm informazzjoni dwar affarijiet li huma għaddejjin fuq l-iskrin relatati mal awdjo. Eżempju wieħed huwa l-ħin kurrenti. Dan jgħidlek in-numru ta 'sekonda, b'mod preċiż ħafna, peress li l-paġna web mgħobbija. Allura dan huwa verament utli ftit proprjetà li tista 'tuża. Huwa aqra only-- I think attwalment inti tista 'tipprova li din valur. Hija ser jgħidlek tissettja, u mbagħad jekk inti jistampaw again-- hija ma attwalment pjuttost xogħol. Allura hemm read-only proprjetajiet JavaScript. Dan huwa verament utli jekk int tip ta 'syncing ħafna differenti informazzjoni, meta int tip ta 'playing ħsejjes differenti. Ieħor verament utli hija d-destinazzjoni kuntest. Żgur, jekk int interessat, ikun tipprova dan fil stess console tiegħek dritt issa. Allura dan huwa AudioDestinationNode. Bażikament dak li dan jgħid hu, fejn il-produzzjoni tmur? Allura hemm żewġ għażliet reali hawn. Normalment l-inadempjenza huwa biss kelliema tiegħek, hekk AudioDestinationNode bażikament biss jgħid hemm żero outputs għall-ħoss ġejjin fi, mibgħuta lill-kelliem. Allura ġeneralment, inti ma għandek biex tilgħab ma 'dak. Jekk int interessat fil attwalment qed jużaw l ScriptProcessorNode għar-reġistrazzjoni, definittivament rimja me email aktar tard minħabba li l ftit aktar kumplikata. Iżda ġeneralment, int biss tip outputting ħoss f'xi forma. Hekk jibred, aħna ser jaqbżu lura hawn. UDJENZA: Jien sorry. HUGH ZABRISKIE: Yeah. UDJENZA: Naf li inti qal li nitkellmu lilek aktar tard dwar reġistrazzjoni. Inti tista 'interface li ma Pro Għodod? HUGH ZABRISKIE: Bil Pro Għodod? Ejja naraw. I do not think so. Allura jmorru bejn il-klijent, li hija l-JavaScript console, u attwali tiegħek kompjuter, huwa ġeneralment xi ħaġa li xorta ta barra mill-limiti, jekk inti se, tip min-natura tal the-- huwa tip ta 'ħaġa disinn, imma inti jippruvaw iżommu l-browser separat mill-kompjuter attwali tal-utent. Ġeneralment, l-unika ħaġa int kapaċi aċċess huwa l-mikrofonu jew l-kamera. Int mhux kapaċi, I ma naħsibx, l-użu Pro Għodod. Madankollu, jekk inti maħluqa track fil Pro Għodod, esportati li, inti tista 'tagħbija li fil hawn, iffiltra, per eżempju, proċess li, u tirreġistra dik fi Audio Destination-- jew, no-- Sfera Node proċessur. U allura minn hemm, inti tista ' esportazzjoni li biex SoundCloud, inti tista 'tibgħat fl-istess email, jew tkun xi tkun tixtieq minn hemm. Iżda hemm tip ta 'ostaklu żgħir bejn li jagħmlu mużika fuq il-kompjuter tiegħek u jagħmlu mużika online. SAM GREEN: U li uniċi għal din API. Huwa fattur sigurtà tal Chrome, u Naħseb li kull browser oħra moderna. Il-browser huwa self-contained. Hekk per eżempju, paġna web ma jistgħux użu JavaScript biex inbiddlu l-ħoss fuq fuq kelliema tiegħek, per eżempju. Jew ma tistax iddawwar il-kompjuter tiegħek off. U ma hemm ebda punt intermedju bejn dawn iż-żewġ affarijiet, id-dritt, dan jew ikollok estrazzjoni sħiħa, jew inti tiftaħ il- difett sigurtà ta 'kiri programmer intenzjonijiet ħżiena jagħmlu kull ma trid ma laptop tiegħek. U hu għalhekk Chrome huwa self-contained. HUGH ZABRISKIE: Yeah. Does li jagħmel sens? Kessaħ, berred. I kien biss se juru eżempju ta 'wieħed. Dan huwa pretty ħafna bħala kemm ikollok, f'termini ta 'aċċess utent tal-kompjuter. Jekk ikollok xi USB tastiera pplaggjata, inti tista 'tuża xi ħaġa imsejjaħ il-Web MIDI API, li aħna mhux se verament jitkellmu dwar hawn, iżda dan huwa API ieħor li l- mibnija fis-inqas Chrome-- darb'oħra, dan huwa għaliex aħna imħabba Chrome-- I think Firefox jew Safari, din hija ħaġa faċli biex browsers differenti google-- jkollhom appoġġ differenti li għalihom APIs li jkunu implimentati. Imma jekk int riedu plagg fil tastiera u taħdem ma dik l-informazzjoni, tip ta 'jibgħat il-keyboard informazzjoni fuq il-kompjuter u mbagħad jużaw dan online, din API huwa fejn youd tkun taħdem dan. Kessaħ. KOLLOX SEW. Allura, malajr jimxu fuq hawn. Kif aħna nagħmlu fil-ħin? SPEAKER 1: About 15. HUGH ZABRISKIE: 15-il minuta xellug? OK, berred. Allura aħna ser razza quddiem hawnhekk. Allura bażikament, il-punt ewlieni ta ' ħsieb ta dan bħala pipeline huwa li kull pass fil-pipeline hija serje ta 'punti ta' konġunzjoni awdjo. Sors tagħna, ejja ngħidu, huwa oxxillatur. Għandna bżonn li jinħoloq node oxxillatur. U li huwa biss it-tip tal-function-- ftit u dawn qed kollha bbażati barra tal-kuntest awdjo hawn. UDJENZA: Meta qal oxxillatur, ma jfissirx li Huwa fil-fatt litteralment jmorru minn żewġ poli differenti u lura? HUGH ZABRISKIE: Le, huwa simili rappreżentazzjoni diġitali. Huwa fil-fatt implimentati C ++. I attwalment do not know-specs ta 'kif huwa attwalment implimenta, iżda dan kollu qed taħdem bħala data binarja. Attwalment, yeah. Dan ikun qal, I jistgħu fil-fatt, jekk int interessat, I inti tista 'tibgħat aktar ftit informazzjoni dwar kif f'forom ta 'mewġ jinżammu jkollhom format diġitali. OK, berred. Allura aħna qed jiġġeneraw tone bħal sine mewġa jew xi ħaġa bħal dik, forsi 440 Hertz. Aħna joħolqu oxxillatur. Jekk irridu nistabbilixxu l-volum, aħna qabbad xejn għal GainNode, li stajna nagħmlu ma '.creategain. Li tistabbilixxi volum tiegħek. Inti tista 'tgħaddi dik fuq kwalunkwe l-oħra options-- tajjeb, hekk sors buffer awdjo node huwa fejn inti tista ' jaħżnu MP3 li inti stajt mgħobbija fil. Filtru Biquad huwa għall-iffiltrar jekk inti tixtieq li tieħu l-bażi out ta 'kanzunetta, jew xi ħaġa bħal dik. Alla jipprojbixxu inti tixtieq li tieħu il-bażi out ta 'kanzunetta. U node AudioDestination huwa, għal darb'oħra, bħal fejn finalizzazzjoni tagħna huwa. Jekk int qatt interessat li jaraw l-għażliet possibbli differenti, biss jmorru għall-tab u let l-auto komplet toħroġ. U jekk inti toħloq, inti ser tara l- affarijiet differenti li inti tista 'toħloq. Tista 'toħloq dinamika proċessuri iskrittura, I lanqas biss jafu dak li hija, għat-taħlit mergers kanal u splitters kanal u dak kollu. Kessaħ. Allura dan huwa biss Eżempju ta 'pipeline. Allura aħna għandna tliet sorsi li ġejjin fil. Forsi dawn huma f'forom ta 'mewġ, forsi dawn huma MP3s. Wieħed għaddej minn filtru, tat xulxin jkollna mgħawġa ieħor panning wieħed xellug u lemin. Tista 'tagħmel kull xorta ta' affarijiet u dawn kollha jiksbu mħallta madwar flimkien, u mbagħad mill jasal l-awdjo fl-aħħar, bħala d-destinazzjoni. Dan huwa eżempju ta 'x'jista' jsir iktar ikkumplikat Web kodiċi Audio Dehra. Int ħolqien dawn kollha oġġetti differenti dritt here-- M'inix ċert ta 'dan. Le, ma zoom. KOLLOX SEW. SAM GREEN: You do Kontroll, Skrollja Up. HUGH ZABRISKIE: Kontroll Scroll-- SAM GREEN: No, no. Control-- HUGH ZABRISKIE: Oh, Kontroll, Skrollja? Oh, gotcha. Yeah. Ara naqra, Nope, Nope. KOLLOX SEW. I mhux se tagħmel dan. Allura yeah, f'dan l-ewwel taqsima hawn, inti tara aħna qed joħolqu dawn kollha differenti lymph barra mill-kuntest. Aħna biss piecing minnhom flimkien fit-tieni parti minn din il-funzjoni tissejjaħ Connect. Li verament importanti funzjoni Web Audio. Dan ifisser biss ladarba inti ghamilt xi ħaġa bil-ħoss fl node wieħed, tgħaddiha lill-node li jmiss. Allura aħna għandna l-sors, hija jgħaqqad lill-analizzatur, l-analizzatur ma xi ħaġa ma 'dan, din tmur għal distorsjoni, u l-bqija, u lejn id-destinazzjoni fil-qiegħ dritt hawn. Kessaħ. OK, hekk aħna ser iżommu miexja fuq. Il pipeline-- darb'oħra, dawn huma l-pajpijiet l-aktar komuni, hekk aħna nitkellmu dwar dawn l-affarijiet simili distorsjoni, panning, dan kollu Jittieħed. Jekk int verament interessat fl-użu affarijiet Pro Għodod, dawk probabbilment jinteressawk. Jekk le, forsi inti biss tixtieq li jilagħbu l-ħoss, jew forsi inti biss tixtieq li tistabbilixxi l-volum fuq il-ħoss. Dawk huma ż-żewġ tip l-aktar komuni ta 'pajpijiet fil-produzzjoni awdjo. Għal darb'oħra, il-modi kif inti tista 'tieħu fi bħala oscillator-- iva, ejja tagħmel l-demo ta 'dak id-dritt hawn. Allura aħna qed tmur biex jinħoloq kuntest awdjo sempliċi hawn, u minn li aħna qed tmur biex joħolqu oxxillatur tagħna. Allura dan huwa, għal darb'oħra, aħna qed biss ser sejħa Oħloq Oxxillatur. Aħna qed tmur biex jistabbilixxu frekwenza fuq li, 440 Hertz, favoriti kulħadd. Imbagħad aħna jgħaqqdu li lejn id-destinazzjoni point-- li huwa l-kelliem, hekk kuntest id-destinazzjoni. Fl-aħħarnett, aħna biss jgħidu, bidu żero sekondi minn issa, u ma għandna ħoss? [Żarżir] HUGH ZABRISKIE: Here we go. Huwa biss mewġa sinusojdali. OK, berred. U allura aħna ser tieqaf dik. UDJENZA: Fejn ma li feedback jiġu minn? HUGH ZABRISKIE: Il-feedback? Oh, probabbilment mikrofoni tagħna. Allura yeah, dan huwa kif inti tagħmel dan. U fil-fatt, kieku kelli żammha taħdem, inti jista 'jkollu l-frekwenza valur kif huwa taħdem, hekk li l-ħaġa gost li jkollhom madwar. Kessaħ. Li dejjem waħda sabiħ biex tippreżenta. SAM GREEN: Aħna ma jaħsbu dwar dan, ma we? HUGH ZABRISKIE: Yeah, li l-waħda diżgustanti. Allura, buffer loading-- I ser juru Eżempju ta 'dan fl-aħħar nett. Li tagħbija MP3. U l-mikrofonu, tuża biss funzjoni imsejħa Navigator.getUserMedia () li jitlob aċċess għall-utent tal mikrofonu għal dik l-informazzjoni. Hawn filtrazzjoni, I ser biss iżommu jiċċaqalqu minn dan. Dan huwa livell pjuttost għoli, iżda filtri biss jippermetti li inti [Beeping] Filtrazzjoni tippermetti wkoll li inti biex joħolqu affarijiet simili roża istorbju, l-istorbju kannella, ħoss abjad. Jekk inti tixtieq li toħloq ħoss pur, li xi nies imħabba li mess mal-madwar, inti tista 'tuża Web Audio filtrazzjoni biex tagħmel dan. Audio Panning-- hekk jimmaġina jekk int bil-miktub logħba u trid li l-ħoss li ħoss bħal huwa li ġejjin, bħal, isparar madwar l-iskrin, inti jistgħu jużaw l panning tal-awdjo biex joħolqu dan it-tip ta 'konu, li like-- huwa pjuttost mathy, iżda huwa attwalment verament jiksaħ jekk inti ġġibu taħdem, u hemm xi tajba tutorials fuqha I tista 'tibgħat inti. Bażikament, inti tista tip tal toħloq il-ħoss ta 'xi ħaġa tmur permezz b'mod 3D. U jekk għandek interess DJ, inti tista tibda taħlit u jaqsmu kanzunetti fading. Dan huwa biss ftit bażika ħafna kodiċi, bażikament dak li għamilt qabel. Dan jistabbilixxi l-volum tal- oxxillatur, hekk aħna joħolqu oxxillatur tagħna li joħloq l-mewġa. Aħna joħolqu GainNode tagħna, sett frekwenza tagħna, u mbagħad waħħal l-ossillatur li l- GainNode, li mbagħad bażikament bidliet kemm sinjal huwa permess permezz. Imma verament, huwa diġitali ħaġa, dan huwa aktar just-- yeah. Li mhux dak li verament jiġri, iżda li dak li jiġri fil-ħajja reali bi qligħ. UDJENZA: --quantization tal-parametru volum? HUGH ZABRISKIE: Jiddispjacini? UDJENZA: Huwa ta ' parametru volum quantized? HUGH ZABRISKIE: Yeah. U dan huwa ħaġa waħda jien verament defiċjenti fuq fl-għarfien tiegħi, kif jiksbu xogħlijiet fuq livell diġitali. Naf mal attwali sinjali, huwa bażikament kontroll kemm int amplifikazzjoni-sinjal. Allura, yeah. I ser nibaghtulek aktar informazzjoni dwar li, minħabba I d jkun kurjużi fil-fatt tkun taf aktar dwar dan. Imma bażikament il-parametri huma, wieħed huwa l-fold-- l signal-- louder u żero ebda sinjal, jew inti mhux se tisma 'kull ħoss. Aħna ser skip ħin demo għal dak għaliex huwa bażikament dak li għamilt qabel. U għal darb'oħra, il-Context.Destination huwa l-node destinazzjoni awdjo. Biża ', OK. Hekk jien ser tagħmel malajr żewġ demos. Kif aħna nagħmlu fil-ħin? SPEAKER 1: Madwar 10 minuti. HUGH ZABRISKIE: 10 minuti? Great! Tal-biża. Allura l-ewwel waħda jien ser do, huwa msejjaħ kanzunetta favorita tiegħi. Allura din hija biss ftit HTML JavaScript. Aħna ser ikollhom żewġ buttuni fuq il-paġna play kanzunetta favorita tiegħi u jieqfu kanzunetta favorita tiegħi. I ser tbiddel dan. UDJENZA: Għatti mikrofonu tiegħek. HUGH ZABRISKIE: Yeah. U stajt mgħobbija fil hawn b'kitba li basically-- u dan huwa verament utli għal tagħbija MP3, sabiex dan biss jagħmel tagħbija mod MP3s aktar malajr. Huwa bażikament biss tgeżwir. Hija biss tagħmel il-proċess ta ' tagħbija fil MP3s ħafna aktar mgħaġġla, inkella inti qed tuża talba HTTP, tip simili dak li kienu qed jagħmlu fuq il-biċċa attwali stabbiliti bl Server. Huwa tassew ikrah, inti ma jridux jagħmlu dan. Allura dan Guy, Boris SMUs, kiteb verament utli ftit għodda msejħa BufferLoader. Kulma għandek tagħmel huwa sempliċement tgħaddiha l kuntest, inti tgħaddiha a list-- jew, yeah, huwa f'lista JavaScript? SAM GREEN: Firxa. HUGH ZABRISKIE: Oh, huwa firxa, li d-dritt. Huwa ta 'firxa ta' mogħdijiet għall-fajls differenti. U allura inti tgħaddih funzjoni. Dan huwa l-callback konna nitkellmu dwar b'tagħbija mhux sinkroniku. Li se tissejjaħ ladarba l-fajls mgħobbija. U dik il-funzjoni li tissejjaħ meta IT-fajl mgħobbija jieħu bħala perimetru firxa ta 'buffers mgħobbija. Allura li jseħħ hawnhekk. Bażikament, BufferList huwa se tkun value-- wieħed jew li għaddej biex tkun firxa ta ' tul wieħed, li għandu fiha fl-indiċi żero fajl mgħobbija kollu tal-MP3. Allura dak I do meta I finish tagħbija, I sempliċiment toħloq sors buffer, li huwa node sors buffer awdjo. Il-pass li jmiss huwa I tagħbija fil- source.buffer bħala l-buffer mgħobbija sħiħa mill-BufferList-- huwa ħafna ta buffers-- u allura inti tqabbad awdjo buffer lejn id-destinazzjoni. Allura dak li għaddej biex tagħmel huwa biss sempliċement tpoġġi l-MP3 straight sa l-output, u tibda immedjatament fuq jkollna din is-sejħa. Kessaħ, so ejja naraw dan jiġri fl-azzjoni. My [inaudible] hawn, ejja ara. Hekk jien biss se tibda server bażiku. Dik xi ħaġa li għandek bżonn tagħmel jekk int jagħmlu talbiet għal fajls tagħbija. Jien ser tibda server bażiku. Dan huwa bażikament kollu tiegħek PSET dritt issa f'linja waħda, imma hija biss bidu server fuq il-port 80/80. Allura aħna jmorru fuq hawn, aħna se tagħbija 80/80, aħna qed tmur biex tmur kanzunetta favorita tiegħi. Mela jekk I hit "Play tiegħi kanzunetta favorita "dritt issa, li għaddej biex tagħbija tiegħi kanzunetta favorita u play it-- [MUSIC - IL EAGLES, "LIFE FIL-FAST  LANE "] --which jiġri li jkun "Ħajja fl il Lane Fast "minn The Eagles. Issa, I jistgħu hit "Ieqaf tiegħi kanzunetta favorita "u replay. [MUSIC - IL EAGLES, "LIFE FIL-FAST  LANE "] U jekk immur fuq console, minħabba I użati varjabbli globali minn hawn li jżommu rekord ta 'dan il-valur, fil-fatt issa se tiġi rikonoxxuta fl-console. Għalhekk l-awto-joħloq għalija. Allura dak hu li playing dritt issa, u I tista 'sempliċiment sejħa source.stop () fuq dan. Well, inti taf liema? Just hekk inti guys smajt dan song-- inti tista jirrikonoxxu din il-kanzunetta. [MUSIC - Rick Astley, "QATT gonna jagħti  INTI UP "] [MUSIC - IL EAGLES, "LIFE FIL-FAST  LANE "] Imxejna issa kollha ġew Rickrolled. OK, kbira, jimxu fuq. Kessaħ. Allura dan huwa bażikament eżempju ta ' kemm inti tista 'tagħbija MP3 file-- [MUSIC - IL EAGLES, "LIFE FIL-FAST  LANE "] --and play, u waqfien u jibda dan. I seta 'jsir ħafna aktar [inaudible] L-aħħar wieħed I ser tagħmel hu, I ser nuruk [inaudible]. [Daqq tal-mużika] Huwa simili, ogg.wave.mp3. I think, jekk niftakar sewwa, Stajt run fis xi kwistjonijiet mal .m4a, imma jien mhux ċert dwar dan. I think mp3.wave-- [MUSIC - Rick Astley, "QATT gonna jagħti  INTI UP "] OK, kbir. I ma għandu jkollhom qal dan. Xorta waħda, bonjour. Allura aħna għandna dan miftuħa. Allura issa kollha li nagħmel huwa, I bażikament maħluqa sintassi bażika għall-ħolqien mużika. Mela jekk jien tagħmel xi ħaġa simili, żid g4 fl-1 ta 2, dak li tfisser hija li, żid in-nota piano, G4, li huwa r-raba G fuq il-pjanu mill-qiegħ. Allura dan huwa tip ta 'MIDI jitkellmu, hekk għal dawk li huma bbażati fuq mużika, dan huwa jinnota biss MIDI. UDJENZA: Dik hija l-G tal-Lvant C, right? HUGH ZABRISKIE: Dan huwa l-G hawn fuq Nofsani C, li d-dritt. UDJENZA: Fuq Nofsani C. HUGH ZABRISKIE: Yeah. Attwalment, iva. I think I attwalment magħmula waħda [inaudible], għalhekk dan jista 'jkun ottava aktar minn dak. Mela ejja ara. Jekk I hit Play-- [NOTA PJANU ripetittivi] --we're se tisma li. L-idea hija li topera bħad linja tal-kmand ikun, hekk jekk I jitla 'u' l isfel fuq it-tastiera tiegħi, inti tista 'tmur lura għall-preċedenti jikkmanda, li huwa pjuttost utli. U hawn taħt hija lista tiegħi ta 'binarji, li huma kollha timxi fuq linja. UDJENZA: Inti kienu qed jassumu l- Keyboard 88 ewlenin fuq dik, id-dritt? HUGH ZABRISKIE: Il-kwistjoni kienet, am I jassumi tastiera 88-ewlenin, u iva, I am. Dak li għamilt hija I bażikament ħadu 88 kampjuni tal-pjanu, waħda għal kull nota. U hekk kull darba li inti tisma 'nota minn issa', li huwa attwalment loop li jistenna like-- dan huwa jkollna tindaqq fuq loop, hekk għal kull nota, dan qed taħdem. Dak li jiġri huwa, I toħloq buffer mill-ġdid, I joħolqu node qligħ li tiffissa l-volum. Dan biss verament mod kkumplikata ta 'tgħid I jaħżnu l-buffer f 'source.buffer. I tagħtiha l-qligħ, I qabbad lill-qligħ, il-qligħ huwa konness mal- output, u mbagħad I play. Allura li huwa tip tal-proċess ta 'teħid f'sors buffer. UDJENZA: Tista realtà din ħoss niexef u jagħmilha wet [inaudible]? HUGH ZABRISKIE: Tista ', yeah. Hemm-verb mill-ġdid, hemm dewmien, tfixkil. Tista 'bażikament tpoġġi xejn bejn f'dak sandwich of-- ukoll, pipeline hija metafora aħjar, imma int tista 'żżid kwalunkwe ħaġa f'dak l. Kessaħ. So I ser jintemm l-demo hawn biex jagħtuk sens ta 'ftit in-numru kbir ħafna ta' drabi li int tista 'taħdem dik il-funzjoni kollha f'daqqa. So I m ser tneħħi dan. Jien ser toħloq ġeneratur that-- bażikament dak does-- dan huwa verament tip ta 'syntax-- kkumplikata iżda huwa se jiġġeneraw noti fuq il-fly, u biss tibda playing minnhom kif jevalwahom. [PJANU INTERPOSING] Allura nistgħu biss tagħmel mużika ftit hawn. [PJANU INTERPOSING] Allura dak li dan il-kmand ma, per eżempju, huwa hija tieħu dawk tliet noti għall- piano u mbagħad jpoġġihom fuq B3. Dan sintassi jista 'jagħmel ftit sens aktar lil dawk li jkollhom isfond mużika hawn. I tista 'żżid kick drum. Nista-- [INTERPOSING STRUMENTI] --just play madwar ma 'dak. Allura inti tista 'make-- [INTERPOSING STRUMENTI] Li wieħed l-ftit aktar annoying. [INTERPOSING STRUMENTI] Allura li saltwarjament żżid Cymbal xott fuq kull nota 16, bil-16% [Inaudible]. [INTERPOSING STRUMENTI] Yeah, sabiex il-mod kif dan works-- huwa dejjem fil 4: 4. [INTERPOSING STRUMENTI] Yeah, hekk l-erba 'kwarti, u 16/8. [INTERPOSING STRUMENTI] Allura fuq medja, ikollok 60% tal hits fuq in-noti 16TH. Anyways, dan kien biss tip ta 'juru off uħud mill-affarijiet li inti tista ' jibnu bil-Web Audio API. Huwa tassew qawwija, huwa verament mgħaġġel, u inti tista 'tagħmel ħafna affarijiet jibred magħha. Għalhekk għal darb'oħra, xi mistoqsijiet li għandek, email myself-- Hugh-- jew Sam, u onestament, Google għandha ton ta 'riżorsi tajbin. Kwalunkwe aħħar kwistjonijiet? Yeah. UDJENZA: Allura inti tista 'aċċess il-mikrofonu built-in. X'jiġri jekk int riedu użu ta 'mikrofonu aħjar? HUGH ZABRISKIE: Jekk int riedu għall-użu mikrofonu aħjar? Għalhekk għal darb'oħra, dan huwa parti mill- estrazzjoni bejn Chrome u l-bqija tal-kompjuter tiegħek. Sakemm huwa disponibbli permezz API, bħal Web MIDI API, inti tista 'probabbilment issib xi hacks, iżda ġeneralment mhux bħala fattibbli. SAM GREEN: Tista 'also-- l-Chrome jaf huwa dak mikrofonu default tiegħek huwa, u dan aċċessi li. Mela jekk kellek mikrofonu inti tista stabbiliti bħala mikrofonu default kompjuter, inti tista 'aċċess dan il-mod u x'aktarx li taħdem. HUGH ZABRISKIE: Li l-punt tajjeb. Stajt qatt ma pprovaw li, iżda inti tista 'tkun kapaċi tip of-- jekk inti idawwru l-kelliem input, inti tista 'tkun kapaċi li jagħmlu dan, yeah. Kwalunkwe aħħar kwistjonijiet? Kessaħ. Well nirringrazzjak guys tant għall-ħars. Jien Hugh. SAM GREEN: Ninsab Sam. HUGH ZABRISKIE: U dan huwa CS50.