Сем ЗЕЛЕНА: Здраво на сите. Добредојдовте на нашиот семинар. Моето име е Сем. Хју Забриски: Јас сум Хју. Сем ЗЕЛЕНА: И ние ќе зборуваме денес за да вклучите и Веб Аудио API. Само да се започне, ова е краток преглед од нашата агенда за семинарот. Ние ќе треба да се започне со зборува за зошто треба да бидат заинтересирани во Веб Аудио API, зошто го вклучите Javascript- на јазикот на кој е потребно за тоа, а потоа зборува за JavaScript essentials-- па како, ви прошетка низ некои основите на јазикот, а потоа зборува за аудио API на високо ниво. Тогаш, Хју ќе зборуваме за некои од фазите на аудио продукција а потоа демо оваа прекрасна sequencer Проектот го изгради и ќе покаже на кодот. И тогаш, ќе имаме време за Прашањата на крајот за луѓето кои се тука живеат. Хју Забриски: Кул. Сем ЗЕЛЕНА: Кул. Хју Забриски: Кул. Јас ќе се врати. Сем ЗЕЛЕНА: Значи, првите нешта прво. Значи еден од големите нешта за Веб Аудио API е тоа што не постои воспоставен е потребно. Таа доаѓа вградени во повеќето современи пребарувачи, вклучувајќи Хром, EDGE, во целина куп на others-- сите оние дека големи делови од луѓето се користи денес. Па затоа не не постави, настрана од само добивање веб сервер да одам, за можете да започнете да работи на вашиот проект, што е одлично. Ние препорачуваме прилично силно да се разгледа Chrome за користење Го вклучите Javascript-веб развој, само поради тоа што неговата инвеститорот алатки се навистина силна. Како пример за само она што ние подразбираме велејќи отвори вашиот вклучите Javascript- console-- ако одите во Хром и ќе се погледне во која било веб страница, а вие лев клик Увид елемент, а потоа одите на ова мало спуштање овде и ќе кликнете на конзола, ќе видите што се отвора изгледа многу како командна линија да се Може да се види на вашиот Mac или на проект. И исто како што, ние можеме тип команди тука, како Ведро, и други команди како што. Ние можеме да создадеме променливи, како што ќе видиме подоцна во JavaScript. И така нешто што може да направи во JavaScript, можеме да направиме со конзолата, и тоа е супер корисна начин да се почне поигрува со API- и добивање удобно со JavaScript право надвор од лилјак. Нема потреба од поставување, што е навистина убаво. Кул. Страшни. Па само уште нешто да се додаде. Ако имате било какви questions-- постојат многумина од вас кои не се тука живеат, се чувствуваат слободни да е-мејл us-- овие се нашите е-мејл адреси. Доколку имате прашања не сакате да побарате од нас, како, о Имам бубачки во мојот код, или нешто што е малку повеќе специфични, можеби Google. Постојат многу големи ресурси за Веб Аудио API таму. Тоа е навистина добро документирани и тоа е се користи од страна на еден тон на луѓето во индустрија, и луѓе кои се само градење на забава нешта за себе. Така треба да има многу на ресурси таму. Страшни. Кул, па зошто Веб Аудио API? Овој дијаграм е малку на еволуцијата на патот звукот на интернет расте со текот на времето. Bgsound беше како оригиналниот HTML таг дека Internet Explorer се користи за поддршка. Тоа е дозволено само за многу основни звуци, функционалност не е многу стабилна, и не би можел да го направи комплицирано секвенционирање, или контрола на звукот кога започна и престана многу силно. Значи, тоа не е особено добро развиена. Флеш потоа по што, дојде along-- кои, Сигурен сум дека вие момци се познати со Flash-- можеби и не е како тоа функционира, но сигурно сте го виделе. Имаш да се ажурира вашиот блиц Plug-in, сите тој вид на работи, и дека секако продолжен опсег на функционалност што беше на располагање. Но се прави на корисникот инсталирање plug-in е дефинитивно одбивност кон вклучувајќи Флеш во вашата апликација, нели? Бидејќи тогаш сте зависни од корисникот случува и наоѓање на овој plug-in, и веројатно се вклучен надвор од овој дополнителен чекор тие треба да ги преземат за да го користите вашиот стан. И тогаш може да има на ажурирање дека ќе се скрши целиот вашата апликација, и тоа завршува се кошмар за инвеститорот, исто така. Така што беше барикада. А потоа по што дојдоа заедно, аудио таг HTML, кои е одлика на помодерни HTML-- која сигурно е дозволено за многу повеќе работи, но дури и на работи што можете да направите таму се малку ограничени само како резултат на работите дека HTML е способен. Па кога го вклучите Javascript- API, Веб Аудио API-то, станале стандард практикуваат преку прелистувачи, што навистина го прошири сет на можности за програмерите за да навистина се влезе во зградата кул работи за веб. За долго време имало Беше навистина робустен алатки за аудио мајчин апликации, like-- секој знае GarageBand, и тогаш очигледно има повеќе професионална аудио мешање апликации, и тој вид на работи. Но, таму не беше навистина добра Cloud-- не Облак, да, претпоставувам Cloud-- веб-базирана платформа што ќе им овозможи на програмерите да се изгради апликации за луѓето да се направи аудио мешање. И како што тој ќе ви покаже подоцна, Веб Аудио API овозможува навистина моќна работи да се случуваат навистина едноставно, која е прилично кул. Значи тоа е поука за тоа зошто вие треба да го догледа семинарот, основа. И сега, јас ќе одам да се зборува за некои JavaScript-- само основните елементи на јазикот, така што можеме да бидеме на истата страница кога зборуваме за API за малку подоцна. Кул. Значи, ова е резиме. Го заборавив ова беше тука. Је. Хју Забриски: Има две слајдови тука. Сем ЗЕЛЕНА: Ова е резиме на некои од ограничувањата на други обврзувачки, стари методи. И тогаш и сега, имаме овие работи. Кул. Страшни. Значи, го вклучите Javascript-најважен. Првите нешта прво, постои прилично значајна разлика во JavaScript наспроти во јазик како C, во начинот на дека променливи се создадени. Па во C, ние сме навикнати да имаат да напишеш нашите променливи, нели? И не мислам тип како ги напишете, мислам на типот како нив доделите type-- значење како, int, плови, знак. Во C, бевме навистина користи за да се има да се создаде променлива а потоа се држи до овој тип за цело време дека ние ги користиме таа променлива. И дека не мора да е уште полошо, но тоа е веројатно потешко да се користи. Еден од супер можности на вклучите Javascript-е дека променливи се она што се нарекува "динамички отчукува", која значи дека можам да се создаде променлива со кои синтакса, varX еднаква на 5, на пример. Која првично создава цел број variable-- токму под качулка somewhere-- но јас може да се промени таа променлива да се однесува на низа без да правиш ништо како создавање на нова променлива. Јас не треба да се грижите за типот менува. JavaScript знае дека типот е менува, и тоа се случи динамично. Значи, постојат бенефиции и недостатоци на тоа, како секој оној кој работел во JavaScript за некое време може да знам. Постојат моменти кога Може да случајно промена на типот на променлива и не се справи со тој тип се менува, а потоа вашата вклучите Javascript- може crash-- или по исклучок бидат фрлени, бидејќи ќе имаат погрешен тип кога очекувате еден тип. Кул. Значи, scoping-- која е како, ако се се сеќавам на првите недели во текот, однесува на тоа како видливи променлива е и во тоа што областа на кодот. Сето тоа изгледа многу слично на начинот на кој таа изгледа во В. Така променливи се scoped генерално во рамките на големи загради во функција, и потоа, тука се, исто така, глобално scoped променливи кои are-- ако напишете променлива надвор од функција, тоа ќе биде видлива во целиот текст. Една разлика помеѓу Го вклучите Javascript-и Ц особено, е дека ако се изјасни за глобалната променлива насекаде во текстуална датотека тоа е видливо во која било функција во рамките на тој текст фајл. Тоа е точно, нели? Хју Забриски: Да. Сем ЗЕЛЕНА: Значи тоа е исто така малку фанки малку во споредба со С, каде што ние секогаш мораше да си имаме променлива дефиниции над места тие се користат. Тоа не е правило дека е извршена повеќе, така, малку поинаква. И повторно само да reemphasize, глобалната наспроти локалните variables-- многу сличен на В. Вие би можеле да имаат две променливи со исто име, и една од нивните имиња ќе биде набљудувано со локална променлива ако еден од нив е глобален. Значи, сличен вид на проблемите кои некои од вас може да се кандидира во во некои на вашиот проблем поставува досега. Кул, па тоа е променливи. Контрола на проток, што значи како, Ако-else-- логично stuff-- и петелки. Така да се започне со, тоа е она што-ако друго извештаи изгледа во JavaScript. Поставување на разни нешта на линиите не е важно. Ова е само еден од конвенциите за начинот на кој ние структура код. Исто како и во C, имаме "ако", изјава заграда. Тоа не е она што сакав да го направам. Јас го направив тоа повторно. Хју Забриски: Обидувајќи се да излезете? Сем ЗЕЛЕНА: Не, јас сум само се обидува да го зголемите. Тоа не е важно. Значи, имаме "ако" и изјава имаме состојба во него дека е точен или неточен, и која го одредува дали или не ние го внесете тој блок од код. И, исто така, имаме друг, ако, и на друго место, исто како и ние сме навикнати во В. Можете исто така треба да биде прилично удобно право надвор од лилјак со петелки, бидејќи тие исто така се погледне многу слични на C изгледа. Но ќе забележите дека ние повторно има, наместо int initializations, имаме var initializations. И претпоставувам дека имате да се биде внимателен да се направи Дали сте сигурни дека не се промени на вредноста од I од int во низа, на пример, затоа што се случува да предизвика чудно однесување што не би можело да очекувате. Но ова треба да се погледне прилично запознаен, како и. Значи ова е местото каде што работите почнуваат да се добие малку луд во вклучите Javascript- за некој што се случува од позадината на C. Постојат функции во JavaScript, и таму е еден начин да се изјасни за функцијата што изгледа вид на слични на C и потоа, тука е уште еден кој изгледа вид на различни. Првата верзија, која може да се види тука, е вид на C-како, каде ние се каже, ова е во функција, да го даде името, даде бројот на аргументи, и тогаш содржината на функцијата одат во оние големите загради. Ќе видите еден пример на аргументи во само една секунда. Со оглед на следната линија, ќе видиме, о, тука е променлива наречена "myFunction" и ние тоа го изедначи со оваа генерички thing-- function-- дека не чини да имаат нешто се случува. Од причина што е различно од C е тоа што го вклучите Javascript- е она што се нарекува функционална јазик, или има функционални елементи, што значи кои функции се всушност вредности. А тоа значи дека ние може да се постави променлива да се изедначи со функција а потоа се оди на таа функција наоколу, го предадете како аргумент, направите сите видови на работи како што со функции. Уште една работа да note-- функции се напишани со одреден број на аргументи. Ќе видиме еден пример на функција со аргумент на следниот слајд. Но нема да го вклучите Javascript- развикам ако се обидете да се користи некоја функција со погрешен број на аргументи. Тоа само ќе стори сé за да се направи направи, што значи дека ако се помине, ќе се јавите на функција која очекува аргумент, без аргументи, сето тоа ќе се случи е дека тоа ќе даде се од себе за да се обиде и да се изврши тој код, и ако тоа на крајот ќе трае во исклучок или грешка, тоа ќе го фрли тој исклучок и само чува going-- што е само еден од начините на дека го вклучите Javascript-дела. Је. ПУБЛИКАТА: Што се случува ако има премногу аргументи? Сем ЗЕЛЕНА: Значи, Прашањето е, што се случува ако има премногу аргументи? А одговорот е дека Сака да го вклучите Javascript- игнорираме оние кои се по оние што не очекува. Тоа ќе се обидам да ја врши функцијата нарекуваме како ако тоа беше само во првите две. Нели? Хју Забриски: Тоа е право, да. Слично на тоа, ако има премалку аргументи, Тоа само вид на дава нула до сите аргументи дека не се имате било какви вредности за. Сем ЗЕЛЕНА: што може да всушност може да биде корисна, ако сакате да се напише функција која Потребно е променлива аргументи број. Можете да го поставите на основните вредности во дефиницијата на функцијата, а тоа може да се игнорира фактот дека влезот не е таму. Значи сакам да зборувам малку повеќе за овој последниот куршум точка, која е функции се вредности. Ова е пример за тоа е малку ум-дува ако само ја прочитате, и не мислам во врска со она што се случува за една секунда. Значи, ајде да погледнеме само во првата линија тука. Имаме оваа променлива, F1, што го велат е функција која го прави ова работа. И содржината на функцијата се console.log ("hello"). Што може да замислите како console.log Го вклучите Javascript-еквивалент на printf. Така што ќе се случи е, ако ние ја извршите оваа кодот во нашата интернет пребарувач, тоа ќе се печати низа. Јас може да се покаже дека. ПУБЛИКАТА: По најавите, иако, дали тоа значи дека е се снима некаде? Сем ЗЕЛЕНА: Да. Па јас ќе ви покаже што ќе се случи. Значи, прашањето е, што се логирал значи? Хју Забриски: Значи console.log е како printf за C. Сем ЗЕЛЕНА: Значи console.log е како printf, па ако имам оваа console.log ("hello"), и јас го нарекувам тоа, стринг "Здраво" добива отпечатени на конзола. Тоа е конзолата. Тоа е исто како printf, каде тоа отпечатоци до стандарден излез. И ќе видиме во една минута, но ова е всушност мислејќи на конзолата објект, и повикување метод на тој објект. Тоа ќе го направи повеќе смисла во една минута, кога ние дојде до зборуваме за објекти во JavaScript, но мислев дека сум само ќе споменеме дека. Хју Забриски: Ние сме користи за да се во C, right-- ние обично се пишува голема програма во главниот да се направи нешто. Но, она што е кул во JavaScript ви е имаат овој вид на преведувач, кој работи во реално време, така што Потребни се само неколку од ред до ред, тоа само може да го толкува дека на самото место. И го следи на работите што се кандидира пред тоа, па тоа е прилично корисна алатка за да користете console.log, или конзола, Општо земено, за само игра околу со JavaScript. Сем ЗЕЛЕНА: Значи да се вратам на ова example-- втората линија на кодот тука е прилично ум-преголема во мојата глава. Првиот пат кога го читате ова, Тоа беше како, што се случува? Значи она што се случува е, ова функција декларација вели: Имам функција наречена F2 дека е очекуваме еден аргумент, F, и тогаш тоа го нарекоа функцијата, f, која беше донесен на него како аргумент без самата аргументи. Значи, тоа би можело да биде збунувачки. Ако ја сфатиме ова како F2 зема Ф1 како аргумент, а потоа и во внатрешноста на f2, ѓ добива called-- што значи дека оваа линија код, По овие две линии на код, резултира со "здраво" се печатени на конзола. На фактот дека ние може да помине функции наоколу како вредности да се заврши во еден од најпознатите моќни карактеристики на JavaScript како програмски јазик. Надвор од сите страшни работи што може да направи, исто како што е карактеристика на јазик во однос на начинот на дека тоа го прави работите лесно да се програмира и им овозможува на за работи кои не се особено добро прилагоден за веб, функционално програмирање и функционални програмски аспекти на JavaScript е еден од повеќето моќен концепти кои постои во JavaScript-- ако мене ме прашувате. Кул. Значи, следното нешто. Покрај тоа што е функционална, исто така има и елементи на JavaScript кои се објектно-ориентирано, кој е еден од многу популарен зуи зборови во компјутерската наука. Објектно-ориентирано програмирање е многу популарна работа. Го вклучите Javascript-има верзија на тоа, каде што верувам секоја вредност е, исто така, објект, што значи дека секој предмет обвива заедно некои број на вредности. Така и за вредностите кои се едноставни, како цел број, како varX еднаква на 5, тој објект само обвива дека една вредност. Но ние исто така може да се замисли ситуација where-- можеме да размислуваме за ситуации во C каде што сакавме да се направи нешто со structs, на пример, што ги обвива неколкуте вредности, заедно и го прави тоа е навистина лесно да се помине работите. Тоа е кога објектот е во JavaScript. Важно е да се запамети кога ќе речам дека предметите завиткани некои број на вредности, заедно, кои функции се, исто така, вредности, што значи дека функциите може да исто така, да бидат внатре на вклучите Javascript-објект. И од причина што е важно е во тоа што, додека ние често мислам на повикување метод на некој објект кој е на популарен термин од други популарни објектно-ориентирани јазици, една од разликите е дека сето она што метод е во вклучите Javascript- се складира вредност во внатрешноста на објектот кој врши некоја action-- можеби со користење на други вредности кои се внатре на тој предмет, но не е задолжително. За да можете да се замисли ситуација, јас Претпоставувам дека во малку на еден луд начин, каде што ќе се нарекува метод на еден објект на друг објект, на пример. Значи, тоа е малку фанки на тој начин. И исто така можете да го промените методи кои се поврзани со објект со назначување дека метод нова функција, која е, исто така, прилично различен од другите објектно-ориентирани јазици, каде што откако ќе се изјаснат за објектот и показ, ние не може да се промени на методи кои се поврзани со тој објект повеќе. Значи тоа е прилично различни. Кул. Па еве еден пример, прво, на објект во акција. Ова е она што се нарекува генерички објект, кој значи дека тоа не било какви посебно име, нема класа, тоа е само некои завиткување на вредности. И начинот на кој изгледа е, имаме оваа надворешна пар на големите загради тука кои укажуваат на тоа да го вклучите Javascript- и да се каже, ова е објект. Вредностите во него се секој вредности внатре на објектот што треба да се завитка заедно. И во внатрешноста на тој предмет, тогаш имаме клучните вредност парови, каде клучот се однесува на името од вредноста во внатрешноста на објектот, и други side-- спроти here-- дебелото црево е вистинската вредност кои треба да се чуваат. Така што гледате тука дека ние имаме клуч наречен fn со вредност Сем, проследено со запирка, велејќи кон следниот запис. Тогаш клучен наречен ln, со вредност од зелена, проследено со запирка, проследено со "печати" која се случува да имаат вредност на функцијата што се случува да се направи оваа линија код. Ајде да направиме чекор назад и отпакувајте што се случува тука. Така што ова е малку комплицирано, и ние сме сведоци на нешто ново за прв пат. На "овој" клучен збор е нова работа што го гледате тука, и што тоа не е, се однесува на тековната приговор во обем, нели? Значи, кога ќе се каже, ова укажува на целиот пат назад за целата оваа object-- кога тоа го правиме this.fn, ние ќе треба да одат по целиот пат назад на овој објект, оди во вредност фн и да добијат Сем, повлечете го целиот пат назад, се држи тоа овде, а потоа да продолжат понатаму. ПУБЛИКАТА: Така е и со пронаоѓање, е тоа се направи, бидејќи на параметар дефиниција? Сем ЗЕЛЕНА: Значи, прашањето е, е пронаоѓање направи, бидејќи на параметарот дефиниција? Да, апсолутно. Што ќе се случи тука е, оваа точка и вели на JavaScript, Добро, јас сум добивање на некоја вредност од овој објект од себе. И тогаш тоа ќе се погледне за влез наречен фн, и ако смета, тоа ќе се врати тој value-- така, тоа е Сем. Но јас исто така може да се внесе нешто што не е дефиниран овде, и тогаш тоа би само врати undefined-- која е нешто што може да го вклучите Javascript- прават, кои можат да имаат корист, но тоа е also-- ако се направи грешка, тоа може да резултира со чудни грешки. Па тоа само ќе се обидам да се најде она што ќе го каже да се најде и тоа не се случува да го се жалат, ако не го најдат. Тоа само ќе кажам, јас не го најде, а потоа да продолжат понатаму. Значи тоа ќе биде дефиниран, плус празно, плус презиме. Је. А потоа може да се види дека ако ние тогаш би можеле да одат надолу и access-- и ние го нарекуваме tf.print () со голема заграда. Тоа се случува да се јавите дека за печатење функција без аргументи, нели? Но, ако ние само рече tf.print () запирка, без загради, сето она што би го направиле е да се повлече на функцијата од вредност, но не и всушност го нарече. Кул. Хју Забриски: Треба ние се направи објект? Сем ЗЕЛЕНА: Секако, ајде да го направите тоа. За да можам да се помести ова пример на конзола. Можеме да ги замислиме дека имам некој предмет. Значи ова е едноставен објект. Ова е објект кој содржи два , вредноста на клучните вредности со два клуча две парови. Па тогаш да пристапите на вредност се чуваат во внатрешноста на овој објект со правење x.x1, на пример, и да се добие 1 назад. Слично на тоа, x.x2, ја добиете таа вредност назад. И сега навистина кул работа е, можам да всушност додадете нешто на овој објект јас откако го создал. Па можете да замислите, ајде кажам дека нема функција. Хју Забриски: Можете треба да направите Shift-Enter. Сем ЗЕЛЕНА: Ох, тоа е досадно. Што тоа не е како? Ох. Еве ќе одиме. Кул. Па јас сум само создаде оваа функција, f, дека се случува да одат на тековната објект и печатење this.x1. Значи, ако јас само повик ѓ страна себе, ништо не се случува да се случи, во ред, бидејќи не постои x1 поле во објект што е се однесуваат на. Но, ако кажам x.f = f, и тогаш јас јавете x.f (), јас ќе одам да се врати назад 1. Дека f функција е сега поврзани со предметот x, кој има клучна наречен x1 поврзани со вредност 1, па кога ние го нарекуваме this.x1, тоа е случува да се најде она што тоа е во потрага по и да бидат способни да се печати вредноста надвор. Па тоа е само еден пример од ваков вид на луди работи можете да го направите со предмети во JavaScript. Така што верзија беше генеричка верзија, што значи дека ние направивме еден објект со користење на овој загради notation-- заграда нотација, rather-- а тоа е рака, ако ние само сакаме еден пример на одреден објект, но што ако ние сакаме да имаат повеќе од еден од ист вид? И одговорот на тоа Прашањето е, постојат работи наречен класи во JavaScript, како и. Ние можеме да создадеме функција што прави некој вид на иницијализација за странски објект, и ние би рекол, како, мојата class-- па името на еднократно object-- еднаква на функција која се поставува. Така што тоа би било еквивалент да се креира објект кој ќе биде исто како, кадрава голема заграда, ул, дебелото црево, ова е стринг, запирка, кадрава голема заграда. Дека ќе биде на генерички ние го иницијализирам објектот, со таа разлика што на следните линии ние се создаде прототип, кој значи дека тоа е клучот за стандардно дека го додадеме на нашиот објект кој има вредност наведени тука. Што значи дека, кога ќе се создаде нова пример на оваа MyClass објект, тоа се случува да имаат пред-изградена во внатрешноста на таа вредност наречена ул и друга вредност наречен myPrint, што е случува да биде во функција. Страшни. Одлично. Па последното нешто да велат дека за да вклучите е дека тоа е навистина корисни за она што се нарекуваат асинхрони операции. Асинхрони значи е дека ние можат да чекаат за некои операција да се заврши пред да продолжат понатаму на, но се движат натаму додека чекаме а потоа и да има нешто да се случи подоцна. И она што мислам со тоа е, вие може да се замисли ситуација каде ќе испрати барање до некои веб сервер некаде, и тоа се случува да ве испрати назад некои големи парче на податоци, така? И вашето корисничко можела да чека во меѓувреме, за тоа да се случи, и ништо не можеше да биде се случува во тоа време. Но тоа не е одличен дизајн, нели? Вие не сакате на веб-страница да се замрзне. Што ако корисникот сака да кликнете на опаѓачкото мени? Тоа не е некој голем дизајн шема. Наместо тоа, во основа она што Го вклучите Javascript-се се вели: Добро, направи оваа операција асинхроно. Па како и, се чека во позадина, и тогаш кога работата е завршена, јавете се на повратен повик function-- јавете се на некои функции, се некои action-- сигнал за тоа дека операција чекавме за да се стави крај готово е. И од причина што е супер моќна е, можеме да сториме нешто, да помине аргумент, направи нешто, а потоа чекаат нешто да се случи. Потоа, откако дека нешто заврши, ние може да се јавите за повратен повик. Тоа е навистина удобен, бидејќи тоа им овозможува на ни прават работите со Веб Аудио API-то, на пример, како товар на аудио датотека од оддалечен сервер без да се чека за целиот аудио датотека за да се вчита, која ќе биде навистина лошо за корисничко искуство. Кул. Последните неколку белешки за дебагирање, бидејќи ова е нешто што ви се случува да треба да направите како дел од вашиот проект, загарантирани. Јас спомнав конзола JavaScript. Тоа е супер корисна карактеристика на сите современи пребарувачи, И ние навистина ве охрабруваме да ги добијат удобно користење на вашиот екран, ако сакате да се добие добар во JavaScript. Тоа е супер корисна за дебагирање, но тоа е, исто така, навистина корисни за да пронајдат како да се користи на API. Тоа овозможува навистина лесно експериментирање без да напишете некои код, а потоа да го компајлирате. Вие не мора да го направите сите овие чекори. Вие само може да се напише некој код во линија, а потоа се добие брз одговор на дали таа линија код или не worked-- многу поедноставно. И, исто така, само уште едно техничко note-- конзола го вклучите Javascript-е пример на REPL-- па тоа е Р-Е-Р-L, repl, која се залага за читање, оцени, печати јамка. Си оди за да напишете некои работи во, тоа ќе го прочитате она што сте ја внеле во, тоа ќе го оцени, и тоа ќе се печати на излез, и тогаш ќе почне повторно. Која ви овозможува брзо да се оди во кругови процесирањето, што е навистина кул. Претпоставувам реално последните note-- ова е вистинската последната нота, да. Како ние всушност ги користат JavaScript? Значи прво, ние може да се внесуваат тоа со користење на тагот скрипта на врвот или на дното од една HTML file-- насекаде во внатрешноста на HTML датотека, навистина. И во рок од таг скрипта, постојат две под-начини за увоз на JavaScript. Првиот е по тоа што имаат одделни вклучите Javascript-датотека кои ги внесуваат во целост, или со тоа што на површина од кодот како скрипта за да започнете, а потоа обратна коса црта скрипта за да се стави крај. А потоа ние само напиши Го вклучите Javascript-во внатрешноста на HTML датотека. Тоа се два начина. Не можете да го имаат во внатрешноста на HTML. ПУБЛИКАТА: Е еден подобар од другите? Сем ЗЕЛЕНА: Прашањето беше, е еден подобро од другите. Значи, да, како што практиката на кодирање стил, а исто така и тоа е како еден дизајн пракса. Постојат две причини зошто тоа би можело да биде подобро. Првиот е, тоа го прави вашиот код многу повеќе може да се чита и ако сите на HTML е на едно место, сите од вашиот CSS е во на друго место, на сите ваши вклучите Javascript- е во третото место. Нели? Мислам дека треба да веќе разговаравме за тоа во sections-- како што CSS-- дека is-- и тоа оди често во друга датотека. Значи, сличен вид на концепт тука. Можете исто така да се замисли дека го вклучите Javascript- ќе бидат пренаменети за повеќе од една HTML страница, или можеби голем број HTML страници, и ја презеде дека го вклучите Javascript- refactored во една датотека што ќе може да се внесуваат во повеќе од едно место им овозможува на кодот да биде начин повеќе одржување. Можете да замислите што го прави еден промени за да го вклучите Javascript- и ја да ја промените во 100 различни датотеки. И наместо тоа, ние само може да го промени во еден, што е начин помоќни. Никако не можев да одговорам на вашето прашање? Кул. Исто така можеме да напишеш во конзолата, како што ние си споменато порано. И повторно, една последна note-- Веб-Аудио е изградена во, вие не треба да се вчита на ништо. Кул. Дали постојат било какви прашања, дали имате повеќе прашања во врска JavaScript, пред да продолжат понатаму? ПУБЛИКАТА: [Беззвучен] Сем ЗЕЛЕНА: Добро, кул. Па сега тој се случува да се зборува за API. Хју Забриски: Кул. Благодарение, Сем. Сем ЗЕЛЕНА: Секако. Хју Забриски: Прекрасно, па Се вртиме од JavaScript. Па ние разговаравме за некои од суштинските работи на JavaScript, а тоа се променливи, функции, предмети, функции како променливи, асинхрони вчитување. Овие се сите работи дека ќе види како ќе го користите веб аудио. Значи, ние сме само ќе се разговара за тоа прво на високо ниво. Тоа е API-то, па тоа е нешто кој е изграден, како што вели Сем, право во вклучите Javascript- кои ги користите во конзола. А тоа е всушност исто како C ++ код која е навистина изграден во Хром и Firefox, и сите на овие пребарувачи. Значи главната идеја со Веб Аудио е дека имате овој вид на гасоводот на аудио, нели? Па аудио вашите податоци влегува во некоја форма. Постојат три главни видови на forms-- имате осцилатор, кој создава синус бран, косинус бран, ние ќе треба да се види како тоа работи. Друга многу заеднички еден, се разбира, е на MP3. Па можеби ќе почнете со песна, а потоа ќе сакате да направите некои филтрирање на тоа и излез that-- тоа може да биде можно извор. И тогаш навистина кул еден е микрофонот. За да можете да го користите некои многу основните повици во JavaScript за да го добиете пристап до микрофон, и така, ако сакаше да се направи еден стан како детектор на теренот, на пример, кој ги зема во вашиот глас и фигури pitch-- на многу лесен начин за тоа. Можете само вид на го прочита во, дознаам на фреквенција, а потоа и излез на број. Па ќе видиме како тоа функционира, како и. Дестинацијата е во основа каде што на аудио податоци е излез. Па, генерално, тоа е како Вашиот лаптоп звучници. Други опции се како на ScriptProcessorNode-- ние ќе дојдеме до јазли во second-- но во основа, или сте ставање надвор звук преку вашиот компјутер преку звучници, или сте во вид на тоа снимање, па сте чување на тоа што се аудио податоци. Па можеби и ако некој создава музика во вашиот стан, а потоа сакате да го снимите и дека можеби како го изнесувате SoundCloud, за example-- дека ќе биде еден од начините да го направите тоа. Сите забавни работи, која ќе се зборува за, се случува помеѓу овие две точки, каде што се вчита во музиката и тогаш тоа излез. Па јас ќе одам да се зборува за пет фази на аудио продукција во една секунда. Имаме тоа нешто наречено една AudioContext, која е оваа мала обвивка гледаме тука. Во суштина она што AudioContext is-- ако ние одат на вклучите Javascript-конзола, токму сега, можеме да се создаде една, токму сега. Само еден пример на repl, нели? Ние сме читање, оценување и тоа отпечатоци. AudioContext е глобална држава. Тоа е struct, тоа е објект тука, и се држи информации за работи што се случуваат во на екранот во врска со аудио. Еден пример е на денешното време. Ова ви кажува бројот на секунди, многу прецизно, Од веб страница вчитан. Па ова е навистина корисно малку имотот што можете да го користите. Се читаат only-- сметам дека може да се обидете да го поставите вредност. Тоа ќе ти каже ќе го поставите, а потоа, ако го печати again-- тоа не се всушност доста работа. Па таму се само за читање својства во JavaScript. Ова е особено корисно ако ти си вид на синхронизирање многу различни информации, кога ќе бидете вид на играње различни звуци. Уште една навистина корисен еден е контексно дестинација. Дефинитивно, ако сте заинтересирани, да биде обидуваат ова на свој конзола право сега. Па ова е AudioDestinationNode. Во суштина она што вели дека е ова, каде е излезот одиш? Па така постојат два вистински опции тука. Обично стандардно е само вашиот јазик, па AudioDestinationNode во основа, само вели дека има нула излези на звукот доаѓаат во, испратени на говорникот. Па, генерално, не се направи Мора да се игра со тоа. Ако сте заинтересирани за всушност користење на ScriptProcessorNode за евидентирање, дефинитивно ми е пука е-маил подоцна, бидејќи тоа е малку посложена. Но, генерално, ти си само вид Ставање на звук во некоја форма. Толку кул, ќе скокне назад тука. ПУБЛИКАТА: Жал ми е. Хју Забриски: Да. ПУБЛИКАТА: Знам дека ти рече да се зборува да ви подоцна за снимање. Може да ви интерфејс, кој со Pro Tools? Хју Забриски: Со Pro Tools? Ајде да видиме. Јас не мислам така. Така одат помеѓу клиентот, која е да го вклучите Javascript конзола, и вашиот вистински компјутер, е генерално нешто што е вид на забрането, ако ќе, вид од страна на природата на the-- тоа е вид на работа на проектирање, но ќе се обидат да се задржи на прелистувачот одделни од вистинските компјутерот на корисникот. Генерално, единственото нешто што сте во можност да пристап е микрофонот или фото апарат. Вие не сте во состојба да, јас Не мисли, користете Pro Tools. Меѓутоа, ако се создаде песна во Pro Tools, извезуваат дека, може да се вчита дека овде, филтер, на пример, процес, кој и евиденција дека во една Аудио Destination-- или, no-- Сфера Процесор јазол. А потоа од таму, може да ги извоз, кој да SoundCloud, можете можеше да го испрати во е-маил, или се што ќе посакате од таму. Но, постои еден вид на мала бариера помеѓу правење музика на вашиот компјутер и правење на музика онлајн. Сем ЗЕЛЕНА: И тоа е не само за овој API. Тоа е безбедносна карактеристика на Chrome, и Мислам дека секој друг модерен интернет пребарувач. Пребарувачот е автономни. Така на пример, веб-страница може да не користете JavaScript за да го вклучите звукот на на вашиот јазик, на пример. Или тоа не може да се претвори вашиот компјутер исклучени. И не постои средно точка меѓу тие две работи, десно, па или имате комплетна апстракција, или ќе се отвори безбедност мааната на допуштајќи програмер со лоши намери направи што сакаат со вашиот лаптоп. А тоа е зошто Chrome е автономни. Хју Забриски: Да. Дали тоа има смисла? Кул, кул. Јас бев само ќе покаже пример на еден. Ова е доста како колку што може да се добие, во смисла на пристап до компјутерот на корисникот. Ако имаш USB тастатура вклучен во, можете да го користите нешто што се нарекува Веб MIDI API-то, од која нема да навистина зборува за тука, но ова е уште API, што е вградени во најмалку Chrome-- повторно, тоа е причината зошто ние го сакаме Chrome-- Мислам Firefox или Safari, ова е лесна работа да се google-- различни прелистувачи имаат различни поддршка за кои API-тие се имплементираат. Но, ако си сакал да го приклучиш во тастатура и да работат со таа информација, вид на прати тастатура информации во текот на компјутер а потоа ја користат таа на интернет, овој API е местото каде што сакате да се работи тоа. Кул. ВО РЕД. Така, брзо се движат тука. Како ќе се прават на време? ЗВУЧНИЦИ 1: Околу 15. Хју Забриски: 15 минути до крајот? Добро, кул. Па ние ќе се трка напред тука. Значи, во основа, главната поента на размислува за тоа како гасоводот е дека секој чекор во гасоводот е серија на аудио јазли. Нашиот извор, да речеме, е осцилатор. Ние треба да се создаде осцилатор јазол. И дека е само вид на малку function-- и сите тие се со седиште надвор на аудио контекст тука. ПУБЛИКАТА: Кога го рече осцилатор, значи дека тоа е всушност буквално одејќи од две различни столбови и назад? Хју Забриски: Не, тоа е како дигитална репрезентација. Тоа е всушност е имплементирано во C ++. Јас не знам на очила за тоа како е тоа направено, Но, сето тоа е да работи како бинарни податоци. Всушност, да. Што ќе се рече, можев Всушност, ако сте заинтересирани, Јас може да ви испрати малку повеќе информации за тоа како бранови се чуваат имаат дигитален формат. Добро, кул. Па ние сме генерирање тон како синус бранува или нешто слично, можеби 440 Херц. Ние создаваме осцилатор. Ако сакаме да ја наместите јачината, ние поврзувајте ништо на GainNode, кои би можеле да се прави со .creategain. Која утврдува вашиот обем. Можете да го положат дека врз било на други options-- добро, па извор за аудио тампон јазол е каде што би можеле чувате МП3 дека сте натоварена во. Biquad филтерот за филтрирање ако сакате да ги преземе сите на база на на една песна, или нешто слично. Не дај Боже сакате да се земе база од една песна. И AudioDestination јазол е, пак, како, каде нашите финализација е. Ако сте некогаш заинтересирани за гледање сите различни можни опции, само одете на ливчето и нека на авто-заврши излезе. И ако не се создаде, ќе видите сите различни работи што можете да направите. Можете да креирате динамични скрипта процесори, Јас дури и не знаат што е што е, за мешање на спојувања задржани и канал трупци и сето тоа. Кул. Така што ова е само еден пример на гасоводот. Па ние имаме три извори пристигнуваат. Можеби тоа се бранови, Можеби ова се MP3s. Еден се случува преку филтер, уште една се искривени друг нечиј поместување лево и десно. Можете да го направите сите видови на работи и сите тие се измешаат околу заедно, а потоа да излезе надвор на аудио на крајот, како дестинација. Ова е пример за тоа што повеќе комплицирани Веб Аудио кодот личи. Сте создавање на сите овие различни предмети право here-- Не сум сигурен за тоа. Не, тоа не зумирате. ВО РЕД. Сем ЗЕЛЕНА: Вие го контролирате, дојдете Ап. Хју Забриски: Контрола Scroll-- Сем ЗЕЛЕНА: Не, не. Control-- Хју Забриски: О, контрола, дојдете? Ох, gotcha. Је. Леле, бе, бе. ВО РЕД. Јас нема да го направи тоа. Така да, во оваа прва секција тука, ќе го видите ние сме создавање на сите овие различни јазли надвор од контекст. Ние сме само нив piecing заедно во вториот дел од оваа функција наречена Поврзи. Тоа е навистина клучот функција во веб-аудио. Тоа само значи дека сте го направиле нешто со звукот во еден јазол, да го давате на следниот јазол. Значи ние треба на изворот, се поврзува со анализатор, анализаторот прави нешто со неа, тоа оди на дисторзија, и така натаму, и до дестинацијата на дното во право тука. Кул. Добро, така што ние ќе продолжиме понатаму. На pipeline-- повторно, овие се најчестите цевководи, па ние се зборува за сите овие работи како изобличување, panning, сите овие работи. Ако сте навистина заинтересирани со користење на нешта Pro Tools, тие веројатно ќе ве интересира. Ако не, можеби само сакате да го пуштите звукот, или можеби само сакаат да наместите јачината на звукот. Тоа се двете најчести вид на цевководи во аудио продукција. Повторно, на начини можете да го земе во како oscillator-- така, ајде направи демонстрација на тоа право овде. Па ние ќе треба да се создаде едноставна аудио контекст тука, и од тоа што ние ќе да се создаде нашиот осцилатор. Така што е, пак, ние сме само требаше да се јавите Креирај осцилатор. Ние ќе треба да се постави на фреквенција кои, 440 херци, омилена на сите. Тогаш ние се поврзете дека до дестинацијата point-- кој е на говорникот, па контекст дестинација. Конечно, ние само да кажам, започнете со нула секунди од сега, и ние сме звучи? [ЅВОНЕЊЕ] Хју Забриски: Еве ќе одиме. Тоа е само синус бран. Добро, кул. А потоа ние ќе го сопрам тоа. ПУБЛИКАТА: Каде повратни информации дека доаѓаат од? Хју Забриски: На повратни информации? Ох, веројатно нашата микрофони. Така да, тоа е како да го направи тоа. А всушност, ако имав Продолжив да го оперираат, можете би можеле да имаат фреквенција вредност како тој работи, па тоа е нешто забавно да се игра наоколу. Кул. Тоа е секогаш една прекрасна еден да се претстават. Сем ЗЕЛЕНА: Ние не мислам за тоа, не ние? Хју Забриски: Да, тоа е грозно еден. Така, тампон loading-- јас ќе се покаже Пример за тоа на самиот крај. Кој товари MP3. И микрофон, можете да користите само функција наречен Navigator.getUserMedia () да побара пристап до на корисникот микрофон за таа информација. Еве филтрирање, јас ќе само да се движат од тоа. Ова е прилично високо ниво, но филтри само ви овозможи да се [Beeping] Филтрирање, исто така, ви овозможува да се создаде нешта како розева бучава, кафеава бучава, бел шум. Ако сакате да се создаде чиста бучава, која некои луѓе сакаат да се плеткаме околу со, можете да го користите Веб Аудио филтрирање за да го направите тоа. Аудио Panning-- па замислете ако сте пишување игра и сакате на звук за да звучи како што доаѓа, како, снимањето низ екранот, можете можете да го користите на швенк на аудио да се создаде овој вид на конус, која like-- тоа е прилично mathy, но тоа е всушност навистина кул ако добиете тоа не функционира, и има некои добри упатства за тоа можам да ти го испратам. Во суштина, можете да вид на создавање на звук нешто се случува од страна на во 3D начин. И ако имаш диџеј интерес, може да почне мешање и крстот бледнее песни. Ова е само некои многу основни код, во основа она што беше порано. Ваквото ограничување на обемот на осцилатор, за да можеме да се создаде нашиот осцилатор што создава бранови. Ние создаваме наша GainNode, постави нашиот фреквенција, а потоа поврзување на осцилатор на GainNode, кои потоа во основа менува колку сигнал е дозволено преку. Но, навистина, тоа е дигитален работа, така што е повеќе just-- је. Тоа не е она што всушност се случува, но тоа е она што се случува во реалниот живот со добивка. ПУБЛИКАТА: --quantization на параметарот волумен? Хју Забриски: Жал ми е? ПУБЛИКАТА: тоа е quantized параметар волумен? Хју Забриски: Да. И ова е една работа, јас сум навистина дефицитарни на мое знаење, како функционира добивка на дигитален ниво. Знам со реалните сигнали, тоа е во основа контролирање на тоа колку сте засилување на сигналот. Па, да. Јас ќе ви испратиме повеќе информации за тоа, бидејќи јас ќе бев љубопитна, всушност, да знаете повеќе за тоа. Но во основа на параметри се, еден е fold-- погласно signal-- и нула постои сигнали, или не ќе слушне секој звук. Ние ќе го прескокне демо време за тоа, бидејќи тоа е во основа она што беше порано. И повторно, Context.Destination е аудио дестинација јазол. Страшни, ОК. Па јас ќе одам да направите брзо две демо снимки. Како ќе се прават на време? ЗВУЧНИЦИ 1: околу 10 минути. Хју Забриски: 10 минути? Одлично! Страшни. Значи првиот Одам да не, се вика Мојата омилена песна. Значи ова е само еден малку HTML JavaScript. Ние ќе треба да се имаат две копчиња на оваа страница се игра мојата омилена песна и да престане мојата омилена песна. Јас ќе го промени тоа. ПУБЛИКАТА: Покријте вашиот микрофон. Хју Забриски: Да. И јас сум натоварен овде скрипта која basically-- и ова е навистина корисно за вчитување на MP3, така што ова го прави само вчитувањето MP3s начин побрзо. Тоа е во основа, само обвивка. Тоа само го прави процесот на поставувате во MP3s многу побрзо, инаку сте со користење на HTTP барањето, нешто како она што го правевте на тековната парче сет со серверот. Тоа е навистина грди, можете не сакам да го направи тоа. Па овој човек, Борис Smus, напиша навистина корисна малку алатка наречена BufferLoader. Сите да направите е само да го положат контекст, ќе го помине list-- или, да, тоа е листа во JavaScript? Сем ЗЕЛЕНА: Низа. Хју Забриски: Ах, тоа е низа, тоа е во право. Тоа е низа на патеки за различни датотеки. А потоа ќе го помине во функција. Ова е повратен повик ние се зборува во врска со асинхрони вчитување. Дека ќе се вика еднаш датотеките вчитан. И таа функција што е повикана кога датотеката натоварени зема како периметарот низа на натоварен амортизери. Така што се случува тука. Во суштина, BufferList е ќе биде еден value-- или тоа се случува да биде низа Најпосле еден, што има во него во индексот нула целиот Loaded датотеката на MP3. Па што да правам кога ќе заврши вчитување е, јас едноставно создаде извор на пуфер, која е аудио тампон изворот јазол. Следниот чекор е јас се вчита во source.buffer како полно Loaded тампон од BufferList-- тоа е многу buffers-- а потоа да се поврзете дека аудио тампон до дестинацијата. Значи она што се случува да се направи е само едноставно да се стави на MP3 директно преку на излезот, и тоа да почне веднаш по добивање на овој повик. Кул, ќе видиме тоа да се случи во акција. Моето [Беззвучен] тука, ајде да видиме. Па јас сум само ќе започне основните серверот. Тоа е нешто што што треба да направите ако сте Изработка на барањата за вчитување на датотеки. Одам да се започне со основни серверот. Ова е во основа го комплетниот Pset моментов во една линија, но тоа е само почеток сервер на порт 80/80. Значи одиме овде, ние ќе се вчита 80/80, ние ќе треба да се оди на Мојата Омилена песна. Значи, ако јас хит "Пушти ми Омилена песна "Токму сега, тоа се случува да се вчита на мојот Омилена песна и игра it-- [Музика - орлите "во брзите  Лејн "] --which се случува да биде "Животот во Брз Лејн "на орлите. Сега, јас може да го погоди "Стоп на мојот Омилена песна "и го повторувате. [Музика - орлите "во брзите  Лејн "] И ако јас одам во текот на конзола, бидејќи Се користи за глобалната променлива овде да ги пратите на оваа вредност, тоа всушност сега ќе биде призната во конзола. Така што автоматски создава за мене. Значи, тоа е игра во моментов, и јас едноставно може да се јавите source.stop () на тоа. Па, знаеш што? Само така вие момци сте слушнале ова song-- може да го препознаете оваа песна. [Музика - Рик Astley ", никогаш не е ќе ДАЈТЕ  ВИЕ СЕ "] [Музика - орлите "во брзите  Лејн "] Сега сме сите биле Rickrolled. Ред, одлично, се движат натаму. Кул. Така што ова е во основа на примерот на само како може да се вчита на MP3 file-- [Музика - орлите "во брзите  Лејн "] --and го игра, и да престане и да го пушти. Јас би можеле да имаат направено многу повеќе [Беззвучен] За последен пат јас ќе се направи е, Јас ќе ви покажам еден [Беззвучен]. [Музички] Тоа е како, ogg.wave.mp3. Мислам дека, ако се сеќавам точно, Сум се кандидира во некои проблеми со .m4a, но не сум сигурен за тоа. Мислам mp3.wave-- [Музика - Рик Astley ", никогаш не е ќе ДАЈТЕ  ВИЕ СЕ "] Ред, одлично. Не треба да се рече дека. Како и да е, здраво. Па ние имаме овој отворен. Па сега сите го правам е, јас во основа создадена основна синтакса за креирање на музика. Значи, ако јас се направи такво нешто, да додадете Г4 на 1-2, што значи тоа е дека, додадете забелешка на пијано, Г4, кој е четвртата G Регистрација на пијано од дното. Значи ова е вид на MIDI зборува, така и за оние кои се музички базирани, ова е само MIDI белешки. ПУБЛИКАТА: Тоа е Г на Блискиот Ц, нели? Хју Забриски: Ова е Г над средно Ц, кој е во право. ПУБЛИКАТА: Над Блискиот Ц. Хју Забриски: Да. Всушност, да. Мислам дека јас всушност направени тоа е една [Беззвучен], па ова би можело да биде една октава над тоа. Ќе видиме. Ако јас хит Play-- [ПОВТОРЕНО ПИЈАНО ЗАБЕЛЕШКА] --we're ќе го слушаме ова. Идејата е дека тоа работи исто како и командната линија би, па ако одам нагоре и надолу на мојата тастатура, можете да се вратиш на претходната команди, што е многу корисно. А подолу е мојата листа на песни, кои се сите работи на јамка. ПУБЛИКАТА: Сте биле преземање на 88 Копче за тоа, нели? Хју Забриски: Прашањето беше, Јас сум претпоставувајќи 88 клучните тастатура, и да, јас сум. Она што го направив е што во основа се 88 примероци на пијано, по еден за секоја нота. И така секој пат ви слушнете некоја белешка од сега па натаму, кој е всушност јамка што изгледа like-- Ова е добивање одигра на јамка, па за секоја нота, ова се извршува. Што се случува е, јас создаде тампон повторно, Јас создаде профит јазол на јачината на гласот. Ова само навистина комплициран начин да се каже јас чување на тампон во source.buffer. Јас го даде на добивка, јас поврзете го на добивка, на зголемување на телесната е поврзан со излез, а потоа јас ќе ја играат. Па тоа е вид на процесот за преземање на изворот на тампон. ПУБЛИКАТА: Може да ви навистина се земе дека сува на звукот и да ја направат влажни [Беззвучен]? Хју Забриски: Можете да, да. Има ре-глагол, има одлагање, дисторзија. Вие во основа може да се стави нешто во помеѓу со тоа, што сендвич of-- добро, Нафтоводот е подобра метафора, но можете да додадете нешто во тоа. Кул. Па јас ќе се стави крај на демонстрациите тука да ви даде чувство на само чиста бројот на пати можете може да работи таа функција на сите одеднаш. Па јас ќе одам да се отстрани оваа. Одам да се создаде генератор that-- во основа она does-- ова е навистина вид на комплицирани syntax-- но тоа е ќе генерира белешки на мува, и само да започнете ја репродукцијата како што им ги евалуира. [Interposing ПИЈАНО] Па ние само може да се направи малку музика тука. [Interposing ПИЈАНО] Па што оваа команда прави тоа, на пример, е што е потребно за оние три белешки за пијано, а потоа ги става на Б3. Оваа синтакса може да го направи малку повеќе смисла на оние кои имаат музичка подлога тука. Можам да додадете тапан удар. Јас можам-- [Interposing ИНСТРУМЕНТИ] --just позанимавам со тоа. За да можете да make-- [Interposing ИНСТРУМЕНТИ] Што е малку повеќе досадни. [Interposing ИНСТРУМЕНТИ] Така што случајно се додава сув кимвал на секој 16-ти белешка, со 16% [Беззвучен]. [Interposing ИНСТРУМЕНТИ] Да, па на овој начин works-- тоа е секогаш во 4: 4. [Interposing ИНСТРУМЕНТИ] Да, па четири четвртини, и 16/8. [Interposing ИНСТРУМЕНТИ] Значи во просек, ќе добиете 60% на прегледи на 16-то белешки. Относнотова, ова беше само вид за да ја покажат некои работи што можете да изгради со веб Аудио API. Тоа е навистина моќна, тоа е навистина брзо, и можете да направите многу интересни нешта со тоа. Значи, повторно, било какви прашања што ги имате, Е-myself-- Hugh-- или Сем, и искрено, Google има еден тон добри ресурси. Последни прашања? Је. ПУБЛИКАТА: Значи, можете да пристапите до со вграден микрофон. Што ако си сакал да користете подобар микрофон? Хју Забриски: Ако сакаше за подобрување на користењето микрофон? Значи, повторно, ова е дел од апстракција помеѓу Хром и остатокот од вашиот компјутер. Освен ако тоа е на располагање преку на API, како веб-MIDI API-то, што веројатно може да се најдат некои хакови, но генерално не како изводливо. Сем ЗЕЛЕНА: Можете да also-- сите Хром знае е она што вашиот микрофон стандардно е, и пристапи кои. Значи, ако сте имале микрофон би можеле поставени како микрофон стандардно компјутерот, можете да имате пристап до него на тој начин и тоа најверојатно ќе работи. Хју Забриски: Тоа е добра поента. Јас никогаш не сум пробал, но можеби ќе можете да се вид of-- ако ви се пренасочува на внесување на звучници, можеби ќе можете да го стори тоа, да. Последни прашања? Кул. И ви благодарам момци толку многу за гледање. Јас сум Хју. Сем ЗЕЛЕНА: Јас сум Сем. Хју Забриски: И ова е CS50.