SAM ŽALIOJI: Sveiki, visi. Sveiki atvykę į mūsų seminarą. Mano vardas Sam. Hugh Zabriskie: Aš Hugh. SAM Žalia: Ir mes ketiname kalbėti šiandien apie JavaScript ir interneto Audio API. Tiesiog pradėti, tai yra kontūrai mūsų darbotvarkėje seminaro. Mes ketiname pradėti kalbėti apie kodėl jums turėtų būti suinteresuotos internete Garso API kodėl Javaskriptą kalba jums reikia už jį, ir tada kalbėti apie JavaScript essentials-- taip patinka, jums per keletą pagrindai kalba, ir tada kalbėti apie garso API aukšto lygio. Tada Hugh kalbės apie kai iš garso gamybos etapuose ir tada demo šį awesome sekwencer Projektas jis pastatė ir parodyti jums kodą. Ir tada, mes turime laiko klausimai ne už žmonių pabaigoje kurie čia gyvena. Hugh Zabriskie: cool. SAM Žalia: cool. Hugh Zabriskie: cool. Aš atsargines kopijas. SAM Žalia: Taigi, Pirmasis dalykus. Taigi vienas iš svarbiausių dalykų Apie interneto Audio API yra tai, kad nėra nustatytas iki reikalingas. Jis ateina built-in į Dauguma šiuolaikinių naršyklių, įskaitant "Chrome", EDGE, visuma krūva tarnauja kitiems visiems tie kad didelės porcijos žmonių naudoja šiandien. Todėl nėra įsteigtas, nuošalyje nuo tiesiog gauti interneto serverio vyksta, už jums pradėti dirbti Jūsų projektą, kuris yra puikus. Rekomenduojame gana labai, kad jūs apsvarstyti naudojant "Chrome" JavaScript interneto svetainių kūrimas, tik todėl, kad jo kūrėjas įrankiai yra tikrai stipri. Kaip iš ką mes turime omenyje, pavyzdžiui sakydamas atverti savo JavaScript console--, jei jūs einate į "Chrome" ir jums pažvelgti į bet kurį interneto puslapį, ir jūs kairėje spustelėkite Tikrinti Elementas, ir tada jūs einate į šį mažai išskleidžiamajame čia ir paspausite ant konsolės, pamatysite, ką atveria atrodo daug, kaip komandų eilutės, kad jus gali pamatyti jūsų Mac arba ant ID. Ir kaip, kad mes galime tipo komandas čia kaip tyra, ir kitas komandas, pavyzdžiui, kad. Mes galime sukurti kintamuosius, kaip matysime vėliau JavaScript. Ir taip nieko mes galime padaryti JavaScript mes galime padaryti su konsolės, ir tai super patogus būdas pradėti žaisti aplink su API ir gauti patogiai JavaScript Iškart. Nėra Įsteigtas reikia, kuri yra tikrai gražus. Saunus. Nuostabus. Taigi tik vienas dalykas pridėti. Jei turite kokių nors questions-- yra daugelis iš jūsų, kurie nėra čia gyventi, nedvejodami rašykite us-- šias yra mūsų elektroninio pašto adresus. Jei turite klausimų jūs nenorite kreipkitės į mus, kaip, oi Turiu klaidą mano kodas ar kažkas kad šiek tiek daugiau specifinių, gal "Google" ji pirmą kartą. Yra daug puikių daug išteklių Apie interneto Audio API ten. Tai tikrai gerai dokumentais ir tai yra naudojamas žmonių toną Pramonė, ir žmonės, kurie tiesiog statybos atrakcionus už save. Taigi turėtų būti daug išteklių ten. Nuostabus. Cool, tad kodėl Web Garso API? Ši schema yra šiek tiek iš kurio kelyje raida Garso internete išaugo per tam tikrą laiką. Bgsound buvo kaip originalaus HTML tegus Internet Explorer naudojama remti. Tai leidžiama tik gana pagrindinių garsų, funkcionalumas nebuvo labai tvirtas, ir tu negali padaryti sudėtinga sekos, arba kontroliuoti, kai garsas pradėjo ir sustojo labai tvirtai. Taigi, tai nebuvo ypač gerai išvystyta. Tada po to, Flash atėjo along--, kuris, Aš tikiu, kad jus vaikinai visi susipažinę su Flash-- gal ir ne, kaip ji veikia, bet jūs tikrai matė. Jūs turite atnaujinti savo flash Plug-in, visi, kad daiktų rūšis, ir kad tikrai išplėtė asortimentą funkcionalumo, kad buvo galima. Tačiau priimant vartotojui įdiegti plug-in yra tikrai trūkumas, kad įskaitant Flash jūsų paraiška, tiesa? Nes tada jūs priklausomi nuo vartotojas vyksta ir kad rastume šią plug-in, ir tikriausiai yra įjungtas išjungti šį papildomą žingsnį jie turi imtis, kad naudoti savo programą. Ir tada ten gali būti atnaujinimas kad bus pertrauka visą savo prašymą, ir jis galų gale buvo košmaras kūrėjas, taip pat. Taigi, tai buvo barikada. Ir tada po to atėjo kartu, HTML garso žymeles, kurios yra daugiau modernios HTML-- funkcija, kuri tikrai leido daug daugiau dalykų, bet net ir tai, ką galite padaryti ten buvo šiek tiek ribojamas tik kaip dalykų rezultatas kad HTML buvo pajėgi. Taigi, kai JavaScript API Web Garso API tapo standartas praktikuoti visoje naršyklių, kad tikrai praplėtė rinkinį galimybių kūrėjams tikrai gauti į pastatą kietas Daiktai internete. Ilgą laiką čia buvo buvo tikrai tvirti įrankiai gimtoji garso programas, like-- visi žino, GarageBand, ir tada akivaizdu, yra daugiau Profesionali garso maišymo programas, ir kad daiktų rūšis. Bet ten buvo ne tikrai geras Cloud-- nėra Debesis, taip, aš manau, Cloud-- internetinė platforma kuri leistų kūrėjams kurti programas žmonėms daryti garso susimaišytų. Ir kaip jis jums parodysiu vėliau, interneto Garso API leidžia tikrai galingas Daiktai atsitikti tikrai paprasta, kuri yra gana kietas. Taigi, kad į kodėl jūs instrukcija turėtų žiūrėti seminaro pailsėti, iš esmės. Ir dabar, aš ruošiuosi kalbėti apie kai JavaScript-- tik pagrindiniai elementai kalbos, taip, kad galime būti tame pačiame puslapyje kai kalbame apie API šiek tiek vėliau. Saunus. Taigi, tai yra, santrauka. Aš pamiršau tai buvo čia. Taip. Hugh Zabriskie: Yra dvi skaidres čia. SAM ŽALIOJI: Tai santrauka kai kurie iš apribojimų kitų privalomų, senų metodų. Ir tai dabar, mes turime šiuos dalykus. Saunus. Nuostabus. Taigi, JavaScript pagrindai. Pirmasis ko pirma, ten gana reikšmingas skirtumas JavaScript palyginti A kalba, tokia kaip C, tokiu būdu, kad kintamieji yra sukurta. Taigi C, esame įpratę, turintys įveskite savo kintamuosius, tiesa? Ir aš neturiu galvoje tipą, pavyzdžiui, įrašykite juos, aš turiu galvoje tipą kaip priskirti jiems type-- prasmę kaip, int, plūduras, char. C, mes tikrai buvo naudojami turintys sukurti kintamąjį ir tada klijuoti į tą tipo, visą laiką, kad mes naudojame, kad kintamasis. Ir tai nebūtinai blogiau, bet tai tikriausiai sunkiau naudoti. Vienas iš įdomių funkcijų JavaScript yra kad kintamieji yra tai, kas vadinama "dinamiškai įvedėte", kuris tai reiškia, kad galiu sukurti kintamasis su ta sintakse, varX lygus 5, pavyzdžiui. Tai iš pradžių sukuria sveikasis skaičius variable-- teisę po gaubtas somewhere-- bet aš galite pakeisti, kad kintamasis perduoti į eilutę be daryti nieko panašaus sukurti naują kintamąjį. Man nereikia jaudintis apie tipo keičiasi. JavaScript žino, kad tipo s pasikeitė, ir tai atsitiks dinamiškai. Taigi, yra nauda ir trūkumų, kad kaip visiems, kurie manimi dirbo JavaScript tam tikrą laiką gali žinoti. Yra laikai, kai jums gali netyčia pakeisti kintamojo tipas ir netvarko, kad tipo keičiasi, ir tada jūsų "JavaScript" gali crash-- ar išimtis būti išmestas, nes jūs turėsite neteisingas tipas, kai tikitės vieną tipą. Saunus. Taigi, scoping-- kuris yra tarsi, jei mes prisiminti ankstyvieji savaites kurso, nurodo, kaip matomos kintamojo yra ir kokiu ploto kodu. Visa tai atrodo labai panašus į tai, kaip jis atrodo C Taigi kintamieji scoped paprastai per garbanotas petnešos per funkcija, ir tada taip pat yra globaliai scoped kintamieji, are-- jei rašote kintamąjį už funkcija, jis bus matomas ir į visą tekstą. Vienas skirtumas tarp JavaScript ir C ypač yra tai, kad jei deklaruoti pasaulinė kintamasis niekur tekstinį failą tai matoma bet kokia funkcija per tą tekstinį failą. Tai teisinga, tiesa? Hugh Zabriskie: Yep. SAM Žalia: Štai taip pat šiek tiek tiek funky, palyginti su C, kur mes visada turėjo turime kintamųjų apibrėžimai virš vietose jie buvo naudojami. Tai ne taisyklė, kad manimi vykdomas nebėra, todėl, šiek tiek skiriasi. Ir vėl tik reemphasize, Pasaulinė prieš vietos variables-- labai panašus į C. Jūs galite turėti du kintamieji su tuo pačiu pavadinimu, ir turi vienas iš jų pavadinimų bus mokomasi vietinio kintamojo jeigu vienas iš jų buvo pasauliniu mastu. Taigi, panašios rūšies problemos, kad kai kurie iš jūsų gali paleisti į kai Jūsų problemos nustato iki šiol. Šaunu, kad yra kintamieji. Valdymo srautas, o tai reiškia, kaip, jei-else-- logiška stuff-- ir kilpos. Taigi, norint pradėti, tai ką daryti, jei-kitur pareiškimai atrodys JavaScript. Įvairių daiktų vieta linijose nėra svarbu. Tai tik vienas iš konvencijų už tai, kaip mes struktūra kodą. Tiesiog kaip ir C, turime "Jei" Parenthesis pareiškimas. Tai ne tai, ką aš reiškė daryti. Aš tai padariau dar kartą. Hugh Zabriskie: Bandymas išeiti? SAM Žalia: Ne, aš tiesiog bando priartinti. Tai nesvarbu. Taigi, mes turime "jei" pareiškimą ir turime būklę viduje ji kuri įvertina true arba false, ir kad nustato, ar mes įvesti tą kodą bloką. Ir taip pat, mes turime dar-jei ir kitur, kaip esame įpratę prie C Jūs taip pat turėtų būti gana patogu Iškart su kilpomis, nes jie taip pat atrodo panašus C daug atrodo. Bet jūs vėl pastebėti, kad mes turi, o ne int Initializations, turime var Initializations. Ir aš manau, jūs turite būti atsargūs, kad tikrai nekeičia vertę I iš int į eilutę, Pavyzdžiui, nes tai vyksta sukelti keistą elgesį galbūt ne tikėtis. Bet tai turėtų atrodyti gana pažįstamas, taip pat. Taigi, tai yra, kai ko pradėti gauti šiek tiek crazy JavaScript Tiems, kurie vyksta iš fonas C. Yra funkcijos JavaScript ir yra vienas iš būdų paskelbti funkciją, kuri atrodo rūšiuoti panašus į C, o tada ten dar vienas, kad atrodo rūšies skirtingi. Pirmoji versija, kurioje mes galime pamatyti čia yra rūšies C-kaip, kur mes pasakyti, tai yra funkcija, suteikti jai pavadinimą, suteikti iš argumentų skaičius, Ir tada iš pareigų turinys vidun tų klamrami. Pamatysime, kurio pavyzdys argumentai tik sekundę. Kadangi į kitą eilutę, matome, OH, čia kintamasis vadinamas "myFunction" ir mes lygus jį tai bendrinis thing-- function-- kad Neatrodo, kad nieko vyksta. Priežasties, kad skiriasi nei C yra tai, kad "JavaScript" yra tai, kas vadinama funkcinis kalba, arba turi funkciniai elementai, o tai reiškia, kad funkcijos yra iš tikrųjų verčių. Ir tai reiškia, kad galėtume nustatyti kintamasis lygus funkciją ir tada pereiti šią funkciją aplink, perduoti jį kaip argumentą, daryti visus dalykus rūšių kaip kad su funkcijų. Vienas kitas dalykas, note-- funkcijos yra parašyta su tam tikru skaičiumi argumentais. Pamatysime, kurio funkcijos pavyzdys su apie kitą skaidrę argumentas. Bet JavaScript nebus klykauti ne jums, jei jūs bandote naudoti funkciją su negerai skaičius argumentais. Tai bus tiesiog daryti viską, kad daryti, o tai reiškia, kad jei jūs praeiti, skambinate funkciją, kuri tikisi, kad argumentas, be argumentu, visi, kad įvyks tai jis bus daryti viską pabandyti ir vykdyti tą kodą, ir, jei jis galiausiai veikia į išimtį ar klaidos, jis bus mesti tą išimtį ir tiesiog laikyti going-- kuris yra tik vienas iš būdų, kad Javaskriptą veikia. Taip. Auditorija: Kas atsitiks, jei yra per daug argumentų? SAM Žalia: Taigi klausimas buvo, kas atsitinka, Jei yra per daug argumentų? Ir atsakymas yra, kad JavaScript tiesiog ignoruoti tuos, kurie yra po kurių ji tikisi. Tai bandysiu vykdyti funkciją skambinti kaip jei ji buvo tik pirmas dvi. Teisė? Hugh Zabriskie: Tai tiesa, taip. Panašiai, jei yra per mažai argumentų, tai tiesiog rūšies suteikia null į visus argumentai ji neturi jokios vertės už. SAM Žalia: Kuris gali tikrai bus patogu, jeigu jūs norite parašyti funkciją, kuri trunka kintamas skaičius argumentus. Galite nustatyti numatytąsias reikšmes iš funkcijos apibrėžimas, ir ji gali ignoruoti tai, kad įvesties ten nėra. Taigi noriu kalbėti šiek tiek daugiau apie šį paskutinio kulka taškas, kuris yra funkcijos yra vertės. Tai yra pavyzdys, kad yra šiek tiek proto-pučia jei jūs tiesiog perskaityti, ir nemanau, kad apie tai, kas vyksta už sekundę. Taigi, pažiūrėkime kaip tik tuo pirmoji eilutė čia. Mes turime šį kintamąjį, F1, kad mes sakome yra funkcija, kuri daro šį dalyką. Ir funkcijos turinys yra console.log ("Hello"). Jūs galite galvoti console.log kaip ir JavaScript ekvivalentas printf. Taigi, kas nutiks yra, jei mes paleisti šį kodą į mūsų naršyklę, jis bus išspausdinti eilutę. Galiu įrodyti, kad. AUDITORIJA: Pagal žurnale, nors daro, kad reiškia, kad jis manimi įrašomi kažkur? SAM ŽALIOJI: Taip. Taigi, aš jums parodysiu, kas nutiks. Taigi klausimas buvo, ką log reiškia? Hugh Zabriskie: Taigi console.log yra kaip printf C. SAM ŽALIOJI: Taigi console.log yra kaip printf, Taigi, jei aš turiu šį console.log ("Hello"), ir aš vadinu, kad eilutė "labas" gauna atspausdintas prie konsolės. Tai konsolės. Tai kaip printf, kur jis spausdina standartą out. Ir mes pamatysime per minutę, bet iš tikrųjų tai yra nuoroda į konsolės objektą, ir raginama dėl šio objekto metodą. Tai bus padaryti daugiau prasmės per minutę, kai mes gauti kalbame apie objektų JavaScript, bet aš maniau aš norėčiau tik paminėti, kad. Hugh Zabriskie: Mes naudojamas C, right-- mes paprastai parašyti didelį programą Į pradžią nieko daryti. Bet kas vėsu JavaScript yra jums turi šį vertėją natūra, kad veikia realiu laiku, todėl jį trunka tik po eilutę, ji gali tik aiškinti, kad vietoje. Ir tai stebi dalykų, kurie bėgtų pirma, todėl tai yra gana naudinga priemonė naudoti console.log arba konsolę, prasme, tiesiog žaisti aplink su JavaScript. SAM ŽALIOJI: Taigi grįžta į šią example-- antrą eilutę kodo čia yra gana proto-neįtikėtinas, mano galva. Pirmą kartą aš perskaičiau tai, Tai buvo tarsi, kas vyksta? Taigi, kas vyksta yra, tai funkcija deklaracija sako, Turiu funkcija vadinama f2 kad manimi tikisi vieną argumentą, F, ir tada ji ragina, kad funkcija, f, kuris buvo priimtas į jį kaip argumentą su savimi jokių argumentų. Taigi, tai galėjo būti painu. Jei mes suprantame, kad tai F2 trunka f1 kaip argumentas, ir tada viduje f2, f gauna called-- o tai reiškia, kad šio kodo linija, Po šių dviejų linijų kodas, rezultatai "labas" spausdinamas prie konsolės. Tai, kad mes gali praeiti funkcijos aplink, vertybių galų gale buvo vienas iš labiausiai galingų funkcijų JavaScript kaip programavimo kalba. Ne visi iš awesome dalykų jis gali padaryti, tiesiog kaip funkcija kalbos požiūriu kelyje kad ji daro ką lengva programuoti ir leidžia dalykų, kurie nėra ypač puikiai tinka prie interneto, Funkcinis programavimas ir funkcionalus programavimo aspektai JavaScript yra vienas iš labiausiai galingi sąvokos, kurios egzistuoja JavaScript--, jei paprašykite manęs. Saunus. Taigi, kitas dalykas. Be to, yra funkcinis, taip pat yra elementai JavaScript kad yra objektinės, kuris yra vienas iš labai lankytinos Buzz žodžiai kompiuterių mokslo. Objektinis programavimas yra tikrai populiarus dalykas. JavaScript turi, kad versija, kur aš tikiu, kas vertė yra objektas, tai reiškia, kad kiekvieną objektą apsiaustas kartu šiek tiek reikšmių skaičių. Taigi vertybių, kurios yra paprastas, kaip sveikasis skaičius, pavyzdžiui, varX lygus 5, kad objektas tik antklodės, kad vieną reikšmę. Bet mes taip pat galime įsivaizduoti situaciją where-- mes galime galvoti apie situacijas C kur mes norėjome padaryti kažkas su structs, kad, pavyzdžiui, įvyniojimo kelis vertės kartu ir daro tai tikrai lengva praeiti dalykų aplink. Štai kai objektas yra JavaScript. Svarbu prisiminti kai sakau, kad objektai suvynioti kai verčių skaičius kartu, kad funkcijos yra taip pat vertės, o tai reiškia, kad funkcijos gali taip pat viduje JavaScript objektą. Ir todėl, kad labai svarbu yra tai, kad, kadangi mes dažnai manau, iš kurios skambinama metodą ant objekto, kad manimi populiarios laikotarpiu nuo kitų lankytinos objektinių kalbų, vienas iš skirtumų, kad čia yra visi, kad metodas yra JavaScript yra saugoma vertė viduje objekto , kuri atlieka tam tikrą action-- galbūt naudojant kitas reikšmes, kurios yra viduje tos objekto, bet nebūtinai. Taigi galite įsivaizduoti situaciją, aš atspėti trupučiu crazy būdu, kur vadinamas vienas metodas prieštarauti ant kito objekto, pavyzdžiui. Taigi, tai šiek tiek funky tokiu būdu. Ir jūs taip pat galite pakeisti metodus , kurios yra susijusios su objektu, priskiriant kad metodas nauja funkcija, kuri taip pat yra gana skiriasi nuo kitų objektinių kalbų, kur kai mes pareiškiame objektą ir instancija ją, Mes negalime pakeisti metodus, kurie susijęs su tuo objektu nebėra. Taigi tai gana skirtingi. Saunus. Taigi čia yra pavyzdys, pirma, AN veiksmų objektas. Tai, kas vadinama bendrinis objektas, kuris reiškia, kad ji neturi jokio pirma vardas, neturi klasę, tai tik keletas vertybių vyniojimo. Ir taip, kad atrodo yra, mes turime tai išorinis pora vingiuotus skliaustus čia kad nurodyti JavaScript ir pasakyti, tai yra objektas. Viduje jos vertybės kiekvienas yra vertybės viduje objekto, kad turėtų būti suvynioti kartu. Ir viduje tą objektą, tada mes turime rakto poras, kur raktas nurodo vardo iš vidaus objekto verte, ir kitas side-- priešais gaubtinės žarnos here-- yra tikroji vertė kurie turėtų būti saugomi. Taigi matote, kad čia turime raktas vadinamas fn, kurių vertė SAM, po kablelio, sakydamas į kitą įrašą. Tada pagrindinis vadinamas LN, kurių vertė yra žalia, po kablelio, Po "Print" kurie ketina turėti funkciją vertę kad ketina tai padaryti kodo eilutę. Paimkime vieną žingsnį atgal ir išpakuokite, kas vyksta čia. Taigi, tai yra šiek tiek sudėtingesnis, ir mes matome kažką naujo pirmą kartą. "This" žodį yra naujas dalykas mes matome čia, ir kas tai daro yra, reiškia, kad srovės paprieštarauti taikymo sritį, tiesa? Taigi, kai mes sakome, tai atkreipia visą kelią atgal visai šio object-- kai mes darome this.fn, mes ketiname pereiti visą kelią atgal šiam objektui, eikite į fn vertės ir gauti Sam, ištraukite jį visą kelią atgal, klijuoti jį čia, ir tada pereiti. Auditorija: Taigi su paieška, yra kad padaryta dėl to, kad parametro apibrėžimas? SAM Žalia: Taigi klausimas buvo, yra atgaminimas padaryta dėl to, kad parametro apibrėžimas? Taip, absoliučiai. Kas nutiks čia, Tai taškas sako JavaScript, Gerai, aš gaunu šiek tiek vertę iš šio objekto iš savęs. Ir tada jis bus surasti įrašą vadinamas fn, ir jei ji nustato, kad, jis bus grįžti, kad value-- taip, tai Sam. Bet aš taip pat galėjo įvedėte kažkas, kad buvo ne čia apibrėžta, ir tada jis tiesiog grįžti undefined-- kuris yra dalykas, kad "JavaScript" gali daryti, o tai gali turėti naudos, bet tai also-- jei jūs padarote typo, tai gali sukelti keistų klaidų. Taigi jis bus tiesiog pabandykite rasti ką pasakyti, rasti ir jis nesiruošia skundžiasi, jei ne jį rasti. Tai tiesiog pasakyti, aš ne rasti, ir tada pereiti. Taigi būtų undefined, plius tuščias, plius pavardė. Taip. Ir tada mes galime matyti, kad, jei mes gali tada eikite žemyn ir access-- ir mes vadiname tf.print () su skliausteliuose. Ji ketina skambinti, kad Spausdinti funkcija be argumentų, tiesa? Bet jei mes ką tik pasakė tf.print () kabliataškis, be skliausteliuose, visa tai būtų padaręs tai ištraukti iš iš vertės funkcija, bet ne iš tikrųjų pavadino jį. Saunus. Hugh Zabriskie: Jei mes objektą? SAM Žalia: Žinoma, tegul tai padaryti. Taigi aš galiu perkelti tai pavyzdys konsolės. Galime įsivaizduoti, kad aš turiu daiktą. Taigi tai yra paprastas daiktas. Tai yra, kad objektas yra du vertės su dviem raktais, du rakto poromis. Taigi, aš tada gali prieiti prie vertei, saugomai viduje atlikdami x.x1 šis objektas, Pavyzdžiui, ir gaunu 1 atgal. Be to, x.x2, gauti tą vertę atgal. Ir dabar tikrai cool dalykas yra, aš galiu iš tikrųjų ką nors pridėti prie šio objekto kai aš sukūrėme ją. Taigi galite įsivaizduoti, tegul pasakyti, kad aš turėti funkciją. Hugh Zabriskie: Jūs daryti Shift klavišą Enter. SAM Žalia: Oi, tai erzina. Ką jis nemėgsta? Oh. Čia mes einame. Saunus. Taigi, aš ką tik sukūrėte ši funkcija, f, kad ketina eiti į srovės objektas ir spausdinimo this.x1. Taigi, jei aš tiesiog paskambinkite F iki pati, nieko vyksta atsitikti, tiesa, nes nėra x1 laukas objekte tai nuoroda į. Tačiau, jei aš sakau, x.f = f, ir tada aš skambinti x.f (), aš ruošiuosi grįžti 1 d. Tai f funkcija yra dabar susijusios su objekto x, kuris turi pagrindinį vadinamas x1 susijęs su verte, 1, Taigi, kai mes vadiname this.x1, tai ketinate rasti ką jis ieško ir gebėti spausdinti vertę iš. Štai tik vienas pavyzdys nuo rūšies crazy dalykų jūs galite padaryti su objektų JavaScript. Taigi, kad versija buvo bendrinis versija, reikšmė kad mes sukūrėme objektą naudojant šį skliausteliuose notation-- petnešomis notacijos, rather-- ir tai naudinga, jei mes tiesiog norime vienas atvejis konkretaus objekto, bet Ką daryti, jei mes norime turėti daugiau nei vieną tos pačios rūšies? Ir atsakymas į šį Kyla klausimas, yra dalykų, vadinamas klases JavaScript, taip pat. Mes galime sukurti funkciją, kuri daro tam tikrą iniciacijos rūšiuoti už užsienio objektą, ir mes norime pasakyti, kaip, mano class-- todėl vardo iš daugkartinio naudojimo object-- lygus funkcija, kuri nustato jį. Taigi, kas tai būtų lygiavertis kad yra sukurti objektą, kuris Būtų tiesiog patinka, garbanotas petnešomis, g, storosios žarnos, tai yra eilutė, kabliataškis, garbanotas petnešomis. Tai būtų bendrinis objektas mes inicijuoti, su vienas skirtumas yra dėl Kitas linijos mes sukurti prototipą, kuris reiškia, kad jis yra numatytasis raktas, mes įtraukiame į mūsų objektas, turi išvardyti čia vertę. Tai reiškia, kad, kai aš sukurti naują instancija šio myClass objektą, jis ketina jau iš anksto pastatytas viduje tai yra, vertės vadinamas g ir kitą vertę vadinamas myPrint, kuris yra bus funkcija. Nuostabus. Didysis. Taigi paskutinis dalykas pasakyti apie JavaScript yra tai, kad tai tikrai naudinga ką yra vadinami asinchroninis operacijas. Asinchroninis reiškia, kad mes gali laukti tam tikrą operaciją užbaigti, kol mes judėti , tačiau judėti, o mes laukiame ir tada kažkas atsitiks vėliau. Ir ką reiškia, kad yra, jūs Galima įsivaizduoti situaciją, kur siųsti prašymą Kai kurie interneto serveris kažkur, ir jis ketina išsiųsti jums atgal kai didelis riekė duomenimis, tiesa? Ir jūsų vartotojas gali laukti Tuo tarpu, kad taip įvyktų, ir niekas negali būti vyksta tuo metu. Bet tai dar ne puikus dizainas, tiesa? Jūs nenorite, kad interneto puslapis užšaldyti. Kas, jei vartotojas nori spustelėkite išplečiamojo meniu? Tai ne puikus dizainas modelis. Vietoj to, iš esmės, ką JavaScript daro, yra sako, Gerai, tai šią operaciją asinchroniškai. Taigi kaip, palaukite fone, ir tada, kai operacija atliekama, skambinkite atg function-- skambinti tam tikrą funkciją, do kai action-- signalas, kad operacija laukėme pabaigos pasibaigė. Ir todėl, kad super galingas yra, mes galime padaryti kažką, išlaikyti argumentą, kažką daryti, o tada laukti kažko atsitikti. Tada, kai to kažko baigia, mes galime skambinti atg. Tai tikrai patogu, nes jis leidžia mums daryti tai, ko su interneto Audio API Pavyzdžiui, kaip padėjimas garso failą iš nuotolinio serverio nelaukiant už Visa garso failas turi būti pakrautas, kuris būtų tikrai blogai vartotojo patirtį. Saunus. Paskutinis pora pažymi apie derinimo, nes tai yra dalykas, kad jūs ketinate daryti kaip dalį savo projekto garantuojamas. Minėjau "JavaScript" konsolė. Tai super naudinga funkcija visų šiuolaikinių naršyklių, Ir mes tikrai rekomenduojame jums gauti patogiai naudojant savo konsolę, jei norite gauti gerai JavaScript. Tai itin patogu derinimo, tačiau jis taip pat tikrai naudinga suprasti , kaip naudoti API. Tai leidžia tikrai lengva eksperimentavimas nerinkdami kai kodas, o po to kaupia ją. Jūs neturite daryti visus tuos veiksmus. Jūs galite tiesiog parašyti kai kodas į liniją, ir tada nedelsiant atsiliepimus apie ar kad kodo eilutę, ar ne worked-- labai patogu. Ir taip pat, tik viena techninė note-- JavaScript konsolės yra pavyzdys iš REPL-- Štai R-El-P-L, repl, kuris reiškia skaityti, vertinti, Spausdinti kilpa. Jūs ketinate įvesti kai kurių dalykų į, jis bus skaityti tai, ką jūs įvedėte, jis bus įvertinti ją, ir ji bus spausdinti produkcija, ir tada jis bus pradėti iš naujo. Tai leidžia jums greitai eiti apskritimai Iteracja, kuris yra tikrai cool. Manau, nekilnojamojo Paskutiniai note-- tai yra tikrasis paskutinė pastaba, taip. Kaip mes iš tikrųjų naudoti "JavaScript? Taigi, pirmiausia, mes galime importuoti jį naudojant scenarijaus žymą viršuje arba apačioje HTML file-- bet viduje HTML failą, tikrai. Ir per scenarijų žymeles, yra dvi posistemės būdų importuoti "JavaScript". Pirma, galima turintys atskiras failas JavaScript kad mes importuojame visas arba turėdami kodo, kaip scenarijaus plotas pradėti, ir tada Backslash scenarijų iki galo. Ir tada mes tiesiog parašyti JavaScript viduje HTML failą. Tai yra du būdai. Jūs negalite turėti jį viduje HTML. Auditorija: Ar vienas geresnis už kitą? SAM ŽALIOJI: Klausimas, yra vienas geriau nei kitos. Taigi, taip, kaip kodavimo stiliaus praktikoje, ir taip pat tai kaip projektavimo praktikoje. Yra dvi priežastys Kodėl jis gali būti geriau. Pirmasis yra, tai daro savo kodas A Daug lengviau skaityti, jei visi jūsų HTML yra vienoje vietoje, visi jūsų CSS yra kita vieta, visi jūsų "JavaScript" yra trečiojoje vietoje. Teisė? Manau, kad turime jau kalbėjome apie tai sections-- kaip CSS-- ką kad is-- ir jis eina dažnai kitoje failą. Taigi, panašios rūšies sąvoka čia. Taip pat galite įsivaizduoti, kad "JavaScript" būtų panaudota ant daugiau nei vieną HTML puslapis, arba galbūt labai daug HTML puslapiai, ir turintys tą JavaScript išimant į vieną failą, galite importuoti į daugiau nei vienoje vietoje leidžia kodas turi būti būdas daugiau aptarnavimo. Galite įsivaizduoti, todėl vieną pakeisti į "JavaScript" ir turintys jį pakeisti 100 skirtingų failų. Ir vietoj mes galime tik pakeisti jį vienoje, kuri yra taip daugiau galingas. Ar aš atsakyti į jūsų klausimą? Saunus. Mes taip pat galite įvesti į konsolę, kaip mes minėta anksčiau. Ir vėl, paskutinis note-- Interneto Garso pastatytas, Jums nereikia krauti nieko. Saunus. Ar yra kokių nors klausimų, ar turite daugiau klausimų apie JavaScript, kol mes pereiti? Auditorija: [nesigirdi] SAM Žalia: Gerai, gerai. Taigi dabar jis ketina kalbėti apie API. Hugh Zabriskie: cool. Ačiū, Inga. SAM Žalia: Žinoma. Hugh Zabriskie: Nuostabus, todėl mes pereiti nuo "JavaScript". Taigi, mes kalbėjome apie kai kurias pagalbines "JavaScript pagrindai, ir tie, kurie kintamieji, funkcijos, objektus, veikia kaip kintamųjų, asinchroninis pakrovimo. Tai yra viskas, kad jums pamatyti, kaip jūs naudojate Web garso. Taigi mes tiesiog ketiname kalbėti apie tai, pirmasis aukšto lygio. Tai API, todėl kažkas kad pastatytas, kaip sakė Samas, tiesiai į "JavaScript" kad jūs naudojate konsolės. Ir tai tikrai kaip C ++ kodas kad tikrai pastatytas į "Chrome" Firefox, ir visų šių naršyklių. Taigi pagrindinės idėjos su Web Garso, kad jūs turite Šis dujotiekis garso rūšis, tiesa? Taigi jūsų garso duomenys ateina tam tikra forma. Yra natūra iš trijų pagrindinių forms-- Jūs turite osciliatorius, kuris sukuria sinusinė banga, kosinusas banga, mes ketiname pamatyti, kaip tai veikia. Kitas labai paplitęs, Žinoma, yra mp3. Taigi gal jums pradėti su daina, ir tada jūs norite ką nors filtravimas į tai ir produkcijos that--, kad gali būti įmanoma šaltinis. Ir tada tikrai cool vienas mikrofonas. Taigi, galite naudoti kai labai pagrindiniai skambučiai JavaScript gauti prieigą prie mikrofonas, ir tt Jei norėjo padaryti programą kaip pikis detektoriumi, kad, pavyzdžiui, trunka Jūsų balsas ir duomenys iš pitch-- labai paprastas būdas, kad. Jūs galite tiesiog rūšies jį perskaityti į, išsiaiškinti dažnį, ir tada išėjimo numeris. Taigi mes pamatyti, kaip tai veikia, taip pat. Paskirties yra iš esmės kur garso duomenys yra produkcija. Taigi apskritai, tai kaip Jūsų Laptop garsiakalbiai. Kiti variantai yra tarsi ScriptProcessorNode-- mes gauti mazgų A second-- bet iš esmės, arba jūs pateikėte garsą iš per kompiuterį per garsiakalbius, ar jūs rūšies įrašymo, taigi jūs ją saugoti kaip garso duomenis. Taigi gal kas nors sukuria, jei Muzika jūsų app ir tada norite įrašyti, kad o gal kaip eksportuoti į SoundCloud, už example-- kad būtų vienas iš būdų, kaip tai padaryti. Visi atrakcionus, kuri mes kalbame apie, vyksta tarp šių dviejų taškų, kur mes įkelti į muziką ir tada išėjimą. Taigi, aš ruošiuosi kalbėti apie penkis etapai garso produkcijos sekundę. Mes turime tai, ką vadinamą AudioContext, kuris tai tiek įvynioti matome čia. Iš esmės tai, ką AudioContext is-- jei mes eiti į "JavaScript" konsolė dabar, mes galime sukurti vieną dabar. Tiesiog iš repl pavyzdys, tiesa? Mes skaityti, vertinant ir jis spausdina. AudioContext yra pasaulinė valstybė. Tai konstrukto, tai objektas čia, ir ji išlaiko informaciją apie dalykus, kurie vyksta ekrane, susijusios su garso. Vienas pavyzdys yra dabartinis laikas. Tai jums pasakys skaičių sekundžių, labai tiksliai, nuo tinklalapį įkeltas. Taigi tai yra tikrai naudinga tiek turto, kad jūs galite naudoti. Tai skaityti jei jums reikia galvoti iš tikrųjų aš galite pabandyti jį nustatyti vertę. Jis pasakys, jūs nustatysite jį, ir tada, jei ją spausdinti again-- ji nėra iš tikrųjų gana darbui. Taigi yra tik skaitymui savybės "JavaScript". Tai tikrai naudinga, jei esate rūšies sinchronizavimą įvairių aikštelė informacija, kai esate rūšies žaisti įvairius garsus. Kitas tikrai naudinga vienas yra kontekstas paskirties. Tikrai, jei jus domina, bus bando tai jūsų pačių konsolės teisė dabar. Taigi tai yra AudioDestinationNode. Iš esmės, ką šis sako yra, kur yra išėjimas vyksta? Taigi yra du variantai Nekilnojamasis čia. Paprastai numatytasis yra tik jūsų garsiakalbiai, taip AudioDestinationNode iš esmės tik sako yra nulis išėjimai į garso deja, siunčiami į garsiakalbį. Taigi apskritai, jūs neturite turite žaisti su tuo. Jei jus domina faktiškai naudojant ScriptProcessorNode įrašymo, tikrai šaudyti man siųsti vėliau, nes tai šiek tiek sudėtingiau. Bet apskritai, jūs tiesiog rūšies išvedė garsą tam tikra forma. So cool, mes šokinėti grįžti čia. Auditorija: aš atsiprašau. Hugh Zabriskie: Taip. Auditorija: Aš žinau, jūs sakėte, pasikalbėti jums vėliau apie įrašymą. Ar galite sąsaja, su Pro Tools? Hugh Zabriskie: Su Pro Tools? Pažiūrėkim. Aš taip nemanau. Taigi vyksta tarp kliento, kuri yra Javaskriptą Konsolės ir jūsų faktinis kompiuteris, paprastai yra kažkas, kad tipo off ribos, jei jums , natūra pagal the-- gamta tai tipo dizaino dalykas, bet jūs pabandykite išlaikyti naršyklę atskiras iš vartotojo faktinį kompiuteryje. Apskritai, vienintelis dalykas, jūs galėsite prieiga mikrofonas ar kamera. Jūs negalite aš nemanau, naudokite Pro Tools. Tačiau, jei jūs sukūrė Pro Tools trasa, eksportuojama, kad galėtumėte įkelti, kad čia, filtruoti, pavyzdžiui, procesas, ir įrašyti, kad į Garso Destination-- arba no-- sferos Procesorius mazgas. Ir tada iš ten, jūs galite eksportuoti, kad į SoundCloud, jums gali išsiųsti ją elektroniniu paštu arba whatever you like iš ten. Tačiau yra rūšies nežymiu barjero tarp kurti muziką ant jūsų kompiuterio ir kurti muziką internete. SAM Žalia: Ir tai nėra unikalus šio API. Tai apsaugos funkcija "Chrome", ir Manau, kas antrą modernią naršyklę. Naršyklė įmontuotu. Taigi, pavyzdžiui, interneto puslapis negali naudoti JavaScript įjungti garsą ant jūsų garsiakalbius, pavyzdžiui. Arba ji negali išjunkite kompiuterį. Ir nėra tarpinio punkto tarp šių dviejų dalykų, į dešinę, Taigi, arba turite pilnas abstrakcija, ar jums atverti saugumo trūkumas nuomos programuotojas su blogais ketinimais padaryti ką nori su savo nešiojamas. Ir štai kodėl Chrome įmontuotu. Hugh Zabriskie: Taip. Ar tai prasminga? Cool, kietas. Aš tik ketina rodo vieną pavyzdį. Tai yra gana daug, kaip kiek jūs gaunate, kalbant pasiekiant vartotojo kompiuterį. Jei turite USB klaviatūra prijungtas, galite naudoti kažką vadinama interneto MIDI API kurią mes ne tikrai kalbame apie čia bet tai yra dar vienas API tai pastatytas į bent Chrome-- vėl, tai kodėl mums patinka Chrome-- Manau Firefox ar Safari Tai paprastas dalykas, google-- skirtingų naršyklių skiriasi parama, kuri API jie įgyvendinami. Bet jei jūs norėjo prijungti klaviatūrą ir dirbti su šia informacija, rūšies siųsti klaviatūra informacija per į kompiuterį ir tada naudoti, kad internete, šį API kur norite dirbti, kad. Saunus. GERAI. Taigi, greitai juda čia. Kaip mes darome laiku? GARSIAKALBIS 1: Apie 15. Hugh Zabriskie: 15 minučių liko? Gerai. Taigi mes lenktyniauti priekį čia. Taigi, iš esmės, pagrindinis taškas galvoju apie tai, kaip vamzdyno yra tai, kad kiekvienas į vamzdyną žingsnis yra garso mazgų serijos. Mūsų šaltinis, tarkim, yra generatorius. Turime sukurti osciliatoriaus mazgas. Ir tai yra tik rūšies iš mažai function-- ir jie visi kurių iš iš garso kontekste čia. Auditorija: Kai jis pasakė osciliatorius, ar tai reiškia, tai tikrai tiesiog vyksta nuo du skirtingi poliai ir atgal? Hugh Zabriskie: Ne, tai kaip skaitmeninis atstovavimas. Tai tikrai įgyvendinama C ++. Aš iš tikrųjų nežinau Specifikacijos kaip ji realiai įgyvendinamas, bet visa tai veikia, kaip dvejetainiai duomenys. Tiesą sakant, taip. Tai sakydamas, galėjau Tiesą sakant, jei jus domina, Galėčiau atsiųsti šiek tiek daugiau informacija apie tai, kaip signalų yra laikomi turintys skaitmeninį formatą. Gerai. Taigi mes generuojant kaip sine tonas bangų ar kažkas panašaus, o gal 440 Hz. Mes sukurti osciliatorius. Jei norime nustatyti garsumą, mes prisijungti nieko į GainNode, kurį mes galime padaryti su .creategain. Tai nustato garsumą. Galite pereiti, kad ant bet nuo kito options-- gerai, taip garso buferis šaltinis mazgas yra kur galite saugoti MP3, kad jūs įdėto. Biquad filtras filtravimo jei norite priimti visus bazę iš iš dainos, ar kažkas panašaus. Neduok Dieve norite priimti pagrindas iš dainos. Ir AudioDestination mazgas yra, vėlgi, kaip, kur mūsų užbaigimas yra. Jei esate kada nors įdomu pamatyti visi skirtingi galimi variantai, tiesiog eikite į skirtuką ir tegul auto-pilnas sugalvoti. Ir jei jūs sukurti, pamatysite visus įvairių dalykų, kad jūs galite sukurti. Jūs galite kurti dinamiškas scenarijų procesoriai, Aš net nežinau, kas tai yra, maišymo kanalų susijungimų ir kanalų skaldymo, pjovimo ir visa kita. Saunus. Taigi tai yra tik pavyzdys vamzdynu. Taigi, mes turime trijų šaltinių ateina. Gal tai yra signalų, gal tai yra mp3. Vienas manimi išgyvena filtro, kitas s gauti iškreiptas kitą kieno panning kairę ir į dešinę. Jūs galite padaryti įvairių dalykų ir jie visi įsipainioti aplink kartu, ir tada iš ateina garso pabaigoje, kaip paskirties vietą. Tai yra, kas daugiau pavyzdys sudėtinga interneto Garso kodas atrodo. Kuriate visa tai skirtingi objektai teisę here-- Aš nesu įsitikinęs, apie tai. Ne, tai nėra priartinti. GERAI. SAM Žalia: Jūs darote kontrolė, pereikite į viršų. Hugh Zabriskie: Valdymo Scroll-- SAM Žalia: Ne, ne. Control-- Hugh Zabriskie: Oi, valdymas, pereikite? Oi, kabliuko. Taip. Oho, nope, nope. GERAI. Aš to nedarysiu. Taigi, taip, kad šis pirmasis skyriuje čia matote mes sukurti visa tai skiriasi mazgai iš konteksto. Užtenka tik susegimas juos kartu į antrą dalį šios funkcijos vadinamos Prijunkite. Štai tikrai raktas funkcija Web Audio. Tai tiesiog reiškia, kai baigsite kažkas su vienoje mazgo garso, ją perduoti kitą mazgą. Taigi, mes turime šaltinį, ją jungia į analizatorių, analizatorius daro kažką su juo, jis eina į iškraipymo, ir tt, ir į paskirties vietą apačioje čia. Saunus. Gerai, kad mes nuolat juda toliau. Pipeline-- Vėlgi, tai yra dažniausi vamzdynai, taip mes kalbame apie visų šių dalykų, pavyzdžiui, iškraipymas, panning, visa tai stuff. Jei esate tikrai domina naudojant dalykų PRO TOOLS, tie tikriausiai jus domina. Jei ne, gal tiesiog norite žaisti garsą, arba gal tiesiog norite nustatyti garsą tūrį. Tai yra du labiausiai paplitusių Rūšiuoti Vamzdynų garso gamybos. Vėlgi, būdų, galite jį į kaip oscillator-- Taigi, galime padaryti iš demo, kad čia. Taigi mes ketiname sukurti paprastas garso kontekstas čia ir nuo to, mes ketiname sukurti mūsų osciliatorius. Taigi tai yra, vėlgi, mes tik ketina skambinti Sukurti osciliatorius. Mes ketiname nustatyti dažnį kad 440 Hz, visiems mėgstamiausia. Tada mes prisijungti, kad į paskirties vietą point-- kuri yra garsiakalbis, taip, kontekstas paskirties. Galiausiai, mes tiesiog pasakyti, pradėti nulį sekundžių nuo dabar, ir mes turime atrodyti? [Skambantys] Hugh Zabriskie: Čia mes einame. Tai tiesiog sinusinės bangos. Gerai. Ir tada mes sustabdyti tai. Auditorija: Kur kad grįžtamasis ryšys atsirado? Hugh Zabriskie: atsiliepimai? Oi, tikriausiai mūsų mikrofonai. Taigi, taip, tai kaip tai padaryti. Ir iš tiesų, jei aš turėjo nuolat jį veikia, gali turėti dažnį vertė, kaip tai veikia, kad yra įdomus dalykas, pažaisti. Saunus. Tai visada miela vienas pristatyti. SAM Žalia: mes neturėjome galvoti apie tai, ar mes? Hugh Zabriskie: Taip, tai bjaurus vienas. Taigi, buferio loading-- aš jums parodysiu pavyzdys, kad tuo pat pabaigos. Štai pakrovimo MP3. Ir mikrofonas, jūs naudojate tik tam tikrą funkciją vadinamas Navigator.getUserMedia () prašyti prieigos prie vartotojo anketa mikrofonas už šią informaciją. Štai filtravimo, aš tiesiog nuolat juda iš šio. Tai yra gana aukšto lygio, bet filtrai tiesiog leidžia į [Pypsėjimas] Filtravimas taip pat leidžia jums sukurti tokius dalykus kaip rožinė triukšmo, ruda triukšmas, baltas triukšmas. Jei norite sukurti gryną triukšmą, kuris Kai kurie žmonės mėgsta pažaisti su, galite naudoti žiniatinklio Audio filtravimo daryti. Garso Panning-- taip įsivaizduoti jei rašote žaidimą ir norite, kad skambėtų skamba kaip ji ateina, kaip, šaudymo per ekraną, galite galima naudoti su garso panning sukurti šį kūgio natūra, kuri like-- tai gana Mathy, bet tai tikrai tikrai cool, jei jūs gaunate jį dirbti, ir ten kai geras samouczków juo galiu atsiųsti. Iš esmės, galite natūra Create garsą kažkas vyksta per 3D būdu. Ir jei turite DJ susidomėjimą, galite pradėti maišyti ir kirsti blukimas dainas. Tai tik keletas labai paprastas kodas, iš esmės, ką aš padariau anksčiau. Tai nustato tūrio osciliatorius, todėl mes sukurti mūsų osciliatorius kuri sukuria signalo. Mes sukursime savo GainNode, nustatyti savo dažnį, ir tada prijunkite į osciliatoriaus GainNode, kuris vėliau iš esmės keičia kiek signalas leidžiama per. Bet iš tikrųjų, tai yra skaitmeninis dalykas, todėl tai daugiau just-- taip. Tai ne tai, ką iš tikrųjų vyksta, bet tai, kas vyksta realiame gyvenime su pelnu. Auditorija: --quantization tūrio parametro? Hugh Zabriskie: Atsiprašome? Auditorija: Ar tai Kvantas tūris parametras? Hugh Zabriskie: Taip. Ir tai yra vienas dalykas, aš tikrai netobuli ant mano žiniomis, kaip prieaugis veikia skaitmeninio lygiu. Aš žinau, su tikro signalai, tai iš esmės kontroliuoti, kiek jūs esate amplifikavimą signalą. Taigi, taip. Aš atsiųsime jums daugiau informacijos apie kad, nes aš būčiau įdomu iš tikrųjų sužinoti daugiau apie tai. Bet iš esmės parametrai yra, viena yra fold-- garsiau signal-- ir nulinės nėra signalas, ar jums nebus išgirsti bet kokį garsą. Mes praleisti demo laiko, kad dėl tai iš esmės, ką aš padariau anksčiau. Ir vėl, Context.Destination yra garso paskirties mazgas. Nuostabus, Gerai. Taigi, aš ruošiuosi padaryti greitai du demo. Kaip mes darome laiku? GARSIAKALBIS 1: Apie 10 min. Hugh Zabriskie: 10 minučių? Puiku! Nuostabus. Taigi pirmasis aš ruošiuosi do, tai vadinama Mano mėgstamiausia daina. Taigi tai yra tik mažai HTML JavaScript. Mes ketiname turėti du mygtukai puslapyje žaisti savo mėgstamą dainą ir sustabdyti Mano mėgstamiausia daina. Aš tai pakeisti. Auditorija: Uždenkite savo mikrofoną. Hugh Zabriskie: Taip. Ir aš įdėtas čia scenarijų, kuris basically-- ir tai yra tikrai naudinga pakrovimo MP3, todėl tai tiesiog daro pakrovimo MP3s kelią greičiau. Tai iš esmės tik įvynioti. Jis tiesiog daro procesą pakrovimo MP3 daug greičiau, kitaip jūs naudojate HTTP užklausą, lyg ką mes darome dėl dabartinės dalių rinkinys su serveriu. Tai tikrai negraži, galite nenoriu to daryti. Taigi šis vaikinas, Borisas Smus, parašė tikrai Naudinga mažai įrankis, vadinamas BufferLoader. Visi jūs darote, yra tiesiog perduoti jį į kontekstas, pereisite tai list-- arba, taip, ar tai JavaScript sąrašas? SAM Žalia: Masyvas. Hugh Zabriskie: O, tai masyvas, tai tiesa. Tai trajektorijų masyvo prie skirtingų failus. Ir tada jums perduoti tai funkcija. Tai atgalinių mes kalbame apie su asinchroniniu pakrovimo. Tai bus vadinamas Kai failai įkelti. Ir tai funkcija, kuri yra vadinama, kai failas pakrautas trunka kaip perimetrą AN pakrauti buferių masyvo. Taigi, kad atsiranda čia. Iš esmės, BufferList yra bus vienas value-- ar jis ketina būti iš masyvo ilgis viena, kad turi į jį į indeksą nulio visą užtaisytą failą MP3. Taigi, ką aš galiu padaryti, kai aš apdaila pakrovimo, aš tiesiog sukurti buferinę šaltinį, kuris yra garso buferis šaltinis mazgas. Kitas žingsnis yra man apkrova source.buffer kaip visiškai pakrauta buferio nuo BufferList-- Tai iš buffers-- daug ir tada prisijungti, kad garso buferio į paskirties vietą. Taigi, ką jis ketina daryti yra tiesiog įdėti MP3 tiesiai per prie išėjimo, ir pradėti jį iš karto nuo gaunate šį kvietimą. Cool, todėl pažiūrėkime tai įvyktų veiksmų. Mano [nesigirdi] čia pažiūrėkime. Taigi, aš tik ketina pradėti pagrindinį serverį. Štai kažkas, kad jums reikia padaryti, jei esate priėmimo prašymus dėl pakrovimo failus. Aš ruošiuosi pradėti pagrindinį serverį. Tai iš esmės visą savo PSET dabar vienoje eilutėje, bet jis tik pradeda ant uoste 80/80 serveris. Taigi, mes eiti per čia, mes ketina įkelti 80/80, mes ketiname eiti į Mano mėgstamiausia daina. Taigi, jei aš paspauskite "Play mano mėgstamiausia daina "dabar, jis ketina įkelti Mano mėgstamiausia daina ir žaisti it-- [Muzika - The Eagles ", gyvenimas greitai  LANE "] --which atsitinka būti "Gyvenimas Fast Lane "Eagles. Dabar galėčiau paspausti "Stop Mano mėgstamiausia daina ", ir pakartoti tai. [Muzika - The Eagles ", gyvenimas greitai  LANE "] Ir jei aš einu per paguosti, nes Aš panaudojau pasaulinį kintamąjį per čia sekti šios vertės, ji iš tikrųjų dabar bus pripažintas konsolės. Taigi auto sukuria man. Taigi tai, kas groja dabar, ir aš galiu tiesiog paskambinkite source.stop () apie tai. Na, žinote, ką? Tiesiog taip, jūs vaikinai girdėjote tai song-- galite pripažinti šią dainą. [Muzika - RICK Astley, "niekada Gonna Give  Jus "] [Muzika - The Eagles ", gyvenimas greitai  LANE "] Mes dabar visi buvo Rickrolled. Gerai, puiku, pereinant. Saunus. Taigi tai iš esmės yra pavyzdys tiesiog kaip galėtumėte įkelti MP3 file-- [Muzika - The Eagles ", gyvenimas greitai  LANE "] --and žaisti, o sustoti ir pradėti jį. Aš galėjo padaryti daug daugiau [nesigirdi] Paskutinis aš padaryti, tai, Aš jums parodysiu [nesigirdi]. [Muzikos grojimo] Tai kaip, ogg.wave.mp3. Manau, jei aš atsimenu teisingai, Aš paleisti į kai kuriuos klausimus su m4a, bet aš nesu tikras apie tai. Manau mp3.wave-- [Muzika - RICK Astley, "niekada Gonna Give  Jus "] Gerai, puiku. Aš ne sakė, kad. Šiaip ar taip, labas. Taigi, mes turime tai atvira. Taigi, dabar visi man yra, aš iš esmės sukūrė pagrindinis sintaksė kurti muziką. Taigi, jei aš kažką panašaus, pridėti G4 1 2, kas reiškia, kad yra tai, kad, pridėti fortepijono įrašą, G4, kuris yra ketvirtasis G ant iš apačios fortepijonui. Taigi tai yra rūšies MIDI kalbėti, Tad tiems, kurie yra muzikos pagrindu, tai tik MIDI pastabos. Auditorija: Štai G Artimųjų C, tiesa? Hugh Zabriskie: Tai G virš Artimųjų C, tai tiesa. Auditorija: Virš Vidurio C. Hugh Zabriskie: Taip. Tiesą sakant, taip. Manau, kad iš tikrųjų padarė tai vienas [nesigirdi], todėl tai gali būti anksčiau, kad oktavos. Taigi pažiūrėkime. Jei aš paspauskite Play-- [PASIKARTOJANTIS PIANO PASTABA] --we're vyksta girdėti, kad. Idėja yra tai, kad ji veikia kaip komandinės eilutės būtų, Taigi, jei aš einu aukštyn ir žemyn ant mano klaviatūros, jūs galite grįžti į ankstesnį komandas, kuri yra gana naudinga. Ir toliau yra mano sąrašas takelius, kurie visi yra paleista kilpa. Auditorija: Jūs buvote darant prielaidą, 88-raktas klaviatūra apie tai, tiesa? Hugh Zabriskie: Klausimas, aš darant prielaidą, kad 88-klavišą klaviatūra, Ir taip, aš esu. Ką aš padariau tai aš iš esmės buvo 88 mėginių fortepijono, po vieną kiekvienam rašte. Ir taip kiekvieną kartą, kai jūs išgirsite dėmesį nuo šiol kad iš tikrųjų yra kilpa, kuris atrodo like-- tai vis žaidžiamas ant kilpos, Taigi, kiekvieną pastabą, tai veikia. Kas atsitinka, aš sukurti buferį vėl, Sukurti įgyti mazgas nustatyti garsumą. Tai tiesiog tikrai sudėtingas būdas pasakyti, kad aš laikykite source.buffer buferį. Aš suteikti jai pelnas, aš prijungti jį prie naudos, šviesinimo yra prijungtas prie produkcija, ir tada aš jį žaisti. Taip, kad yra rūšies proceso imtis buferio šaltinio. Auditorija: Ar jūs iš tikrųjų imtis, kad sausas garsas ir padaryti jį drėgna [nesigirdi]? Hugh Zabriskie: Jūs galite, taip. Yra naujo veiksmažodis, yra vėlavimas iškraipymas. Jūs iš esmės gali įdėti nieko tarp toje sumuštinis of-- gerai, Vamzdynas yra geresnis metafora, bet jūs galite pridėti ką nors, kad. Saunus. Taigi aš baigsiu demo Čia jums jausmas tiesiog gausos laikais jums gali paleisti šią funkciją vienu metu. Taigi, aš ruošiuosi pašalinti tai. Aš ruošiuosi sukurti generatorių that-- Iš esmės tai, ką does-- tai tikrai rūšies sudėtinga syntax-- bet tai ketina kurti užrašus skristi, ir tiesiog pradėti žaisti jiems, kaip ji juos įvertina. [Tarpines PIANO] Taigi, mes galime tiesiog padaryti šiek tiek muzikos čia. [Tarpines PIANO] Taigi, ką ši komanda daro, pavyzdžiui, yra užtrunka šiuos tris RAŠTAS UŽ fortepijonas ir tada iškelia juos ant B3. Ši sintaksė gali padaryti šiek tiek daugiau prasmės tiems, kurie turi muzikinis fonas čia. Galiu pridėti smūgį būgną. Aš galiu-- [Tarpines PRIEMONĖS] --just pažaisti su tuo. Taigi galite make-- [Tarpines PRIEMONĖS] Tai vienas šiek tiek labiau erzina. [Tarpines PRIEMONĖS] Taigi, kad atsitiktinai prideda sauso cimbolai ant kiekvieno 16 pastaboje, kurių 16% [Nesigirdi]. [Tarpines PRIEMONĖS] Taip, taip, taip, kaip tai works-- tai visada 4: 4. [Tarpines PRIEMONĖS] Taip, taip, keturis ketvirčius, ir 16/8. [Tarpines PRIEMONĖS] Taigi vidutiniškai gausite 60% paspaudimų ant 16 pastabose. Anyways, tai buvo tik rūšies parodyti keletas dalykų, jums gali statyti su interneto Audio API. Tai tikrai galingas, tai tikrai greitai, ir jūs galite padaryti cool dalykų su tuo. Taigi dar kartą, turite klausimų, siųsti myself-- Hugh-- SAM, ir sąžiningai, "Google" turi gerų išteklių t. Bet paskutiniai klausimai? Taip. Auditorija: Taigi, galite prieiti prie built-in mikrofoną. Ką daryti, jei norėjo naudoti geresnį mikrofoną? Hugh Zabriskie: Jei nori naudoti geresnį mikrofoną? Taigi dar kartą, šis yra dalis abstrakcija tarp Chrome ir kompiuterio poilsio. Nebent tai galima per API, pavyzdžiui, interneto MIDI API jūs turbūt galėtų rasti keletą hacks, bet paprastai ne kaip įmanoma. SAM ŽALIOJI: Jūs galite also-- visi žino, "Chrome" yra tai, ką jūsų numatytoji mikrofonas yra, ir ji turi prieigą, kad. Taigi, jei jums turėjo mikrofoną galėtumėte nustatyti kaip kompiuterio numatytąjį mikrofoną, galėtumėte ja naudotis, kad taip ir tai tikriausiai dirbti. Hugh Zabriskie: Tai gera vieta. Aš niekada bandė, kad bet Jums gali būti suteikta galimybė natūra of-- jei nukreipti įvesties garsiakalbis, Jums gali būti suteikta galimybė tai padaryti, taip. Bet paskutiniai klausimai? Saunus. Na ačiū jums, vaikinai tiek daug žiūri. Aš Hugh. SAM Žalia: Aš Samas. Hugh Zabriskie: Ir tai yra CS50.