1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> Сем ЗЕЛЕНА: Здраво на сите. 3 00:00:07,170 --> 00:00:08,640 Добредојдовте на нашиот семинар. 4 00:00:08,640 --> 00:00:10,009 Моето име е Сем. 5 00:00:10,009 --> 00:00:11,050 Хју Забриски: Јас сум Хју. 6 00:00:11,050 --> 00:00:17,420 Сем ЗЕЛЕНА: И ние ќе зборуваме денес за да вклучите и Веб Аудио API. 7 00:00:17,420 --> 00:00:21,180 Само да се започне, ова е краток преглед од нашата агенда за семинарот. 8 00:00:21,180 --> 00:00:25,350 Ние ќе треба да се започне со зборува за зошто треба да бидат заинтересирани во Веб 9 00:00:25,350 --> 00:00:30,130 Аудио API, зошто го вклучите Javascript- на јазикот на кој е потребно за тоа, 10 00:00:30,130 --> 00:00:32,619 а потоа зборува за JavaScript essentials-- па како, 11 00:00:32,619 --> 00:00:34,800 ви прошетка низ некои основите на јазикот, 12 00:00:34,800 --> 00:00:37,290 а потоа зборува за аудио API на високо ниво. 13 00:00:37,290 --> 00:00:41,140 Тогаш, Хју ќе зборуваме за некои од фазите на аудио продукција 14 00:00:41,140 --> 00:00:45,509 а потоа демо оваа прекрасна sequencer Проектот го изгради и ќе покаже на кодот. 15 00:00:45,509 --> 00:00:48,050 И тогаш, ќе имаме време за Прашањата на крајот за луѓето 16 00:00:48,050 --> 00:00:49,593 кои се тука живеат. 17 00:00:49,593 --> 00:00:50,540 >> Хју Забриски: Кул. 18 00:00:50,540 --> 00:00:50,990 >> Сем ЗЕЛЕНА: Кул. 19 00:00:50,990 --> 00:00:51,383 >> Хју Забриски: Кул. 20 00:00:51,383 --> 00:00:52,170 Јас ќе се врати. 21 00:00:52,170 --> 00:00:54,960 >> Сем ЗЕЛЕНА: Значи, првите нешта прво. 22 00:00:54,960 --> 00:00:57,840 Значи еден од големите нешта за Веб Аудио API 23 00:00:57,840 --> 00:01:00,480 е тоа што не постои воспоставен е потребно. 24 00:01:00,480 --> 00:01:04,230 Таа доаѓа вградени во повеќето современи пребарувачи, 25 00:01:04,230 --> 00:01:08,630 вклучувајќи Хром, EDGE, во целина куп на others-- сите оние 26 00:01:08,630 --> 00:01:12,650 дека големи делови од луѓето се користи денес. 27 00:01:12,650 --> 00:01:14,807 Па затоа не не постави, настрана од само добивање 28 00:01:14,807 --> 00:01:16,890 веб сервер да одам, за можете да започнете да работи 29 00:01:16,890 --> 00:01:18,420 на вашиот проект, што е одлично. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Ние препорачуваме прилично силно да се разгледа 32 00:01:24,190 --> 00:01:26,530 Chrome за користење Го вклучите Javascript-веб развој, 33 00:01:26,530 --> 00:01:30,260 само поради тоа што неговата инвеститорот алатки се навистина силна. 34 00:01:30,260 --> 00:01:33,220 Како пример за само она што ние подразбираме велејќи отвори вашиот вклучите Javascript- 35 00:01:33,220 --> 00:01:38,600 console-- ако одите во Хром и ќе се погледне во која било веб страница, 36 00:01:38,600 --> 00:01:43,897 а вие лев клик Увид елемент, а потоа 37 00:01:43,897 --> 00:01:46,730 одите на ова мало спуштање овде и ќе кликнете на конзола, 38 00:01:46,730 --> 00:01:50,660 ќе видите што се отвора изгледа многу како командна линија да се 39 00:01:50,660 --> 00:01:53,720 Може да се види на вашиот Mac или на проект. 40 00:01:53,720 --> 00:01:59,260 И исто како што, ние можеме тип команди тука, како Ведро, 41 00:01:59,260 --> 00:02:01,350 и други команди како што. 42 00:02:01,350 --> 00:02:04,267 Ние можеме да создадеме променливи, како што ќе видиме подоцна во JavaScript. 43 00:02:04,267 --> 00:02:07,100 И така нешто што може да направи во JavaScript, можеме да направиме со конзолата, 44 00:02:07,100 --> 00:02:11,430 и тоа е супер корисна начин да се почне поигрува со API- 45 00:02:11,430 --> 00:02:15,760 и добивање удобно со JavaScript право надвор од лилјак. 46 00:02:15,760 --> 00:02:18,290 Нема потреба од поставување, што е навистина убаво. 47 00:02:18,290 --> 00:02:18,790 Кул. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Страшни. 50 00:02:22,880 --> 00:02:24,780 >> Па само уште нешто да се додаде. 51 00:02:24,780 --> 00:02:27,780 Ако имате било какви questions-- постојат многумина од вас кои не се тука живеат, 52 00:02:27,780 --> 00:02:31,232 се чувствуваат слободни да е-мејл us-- овие се нашите е-мејл адреси. 53 00:02:31,232 --> 00:02:33,190 Доколку имате прашања не сакате да побарате од нас, 54 00:02:33,190 --> 00:02:36,160 како, о Имам бубачки во мојот код, или нешто 55 00:02:36,160 --> 00:02:39,270 што е малку повеќе специфични, можеби Google. 56 00:02:39,270 --> 00:02:42,340 Постојат многу големи ресурси за Веб Аудио API таму. 57 00:02:42,340 --> 00:02:44,089 Тоа е навистина добро документирани и тоа е се 58 00:02:44,089 --> 00:02:47,194 користи од страна на еден тон на луѓето во индустрија, и луѓе кои се само 59 00:02:47,194 --> 00:02:48,610 градење на забава нешта за себе. 60 00:02:48,610 --> 00:02:51,306 Така треба да има многу на ресурси таму. 61 00:02:51,306 --> 00:02:53,040 Страшни. 62 00:02:53,040 --> 00:02:56,100 >> Кул, па зошто Веб Аудио API? 63 00:02:56,100 --> 00:02:59,840 Овој дијаграм е малку на еволуцијата на патот 64 00:02:59,840 --> 00:03:04,100 звукот на интернет расте со текот на времето. 65 00:03:04,100 --> 00:03:13,080 Bgsound беше како оригиналниот HTML таг дека Internet Explorer се користи за поддршка. 66 00:03:13,080 --> 00:03:16,790 Тоа е дозволено само за многу основни звуци, функционалност не е многу стабилна, 67 00:03:16,790 --> 00:03:19,380 и не би можел да го направи комплицирано секвенционирање, 68 00:03:19,380 --> 00:03:21,890 или контрола на звукот кога започна и престана многу силно. 69 00:03:21,890 --> 00:03:23,930 Значи, тоа не е особено добро развиена. 70 00:03:23,930 --> 00:03:27,470 Флеш потоа по што, дојде along-- кои, 71 00:03:27,470 --> 00:03:31,712 Сигурен сум дека вие момци се познати со Flash-- можеби и не е како тоа функционира, 72 00:03:31,712 --> 00:03:32,920 но сигурно сте го виделе. 73 00:03:32,920 --> 00:03:35,586 Имаш да се ажурира вашиот блиц Plug-in, сите тој вид на работи, 74 00:03:35,586 --> 00:03:40,110 и дека секако продолжен опсег на функционалност што беше на располагање. 75 00:03:40,110 --> 00:03:45,370 Но се прави на корисникот инсталирање plug-in е дефинитивно 76 00:03:45,370 --> 00:03:48,480 одбивност кон вклучувајќи Флеш во вашата апликација, нели? 77 00:03:48,480 --> 00:03:52,410 Бидејќи тогаш сте зависни од корисникот случува и наоѓање на овој plug-in, 78 00:03:52,410 --> 00:03:54,660 и веројатно се вклучен надвор од овој дополнителен чекор 79 00:03:54,660 --> 00:03:56,640 тие треба да ги преземат за да го користите вашиот стан. 80 00:03:56,640 --> 00:04:01,270 И тогаш може да има на ажурирање дека ќе се скрши целиот вашата апликација, 81 00:04:01,270 --> 00:04:03,880 и тоа завршува се кошмар за инвеститорот, исто така. 82 00:04:03,880 --> 00:04:06,230 Така што беше барикада. 83 00:04:06,230 --> 00:04:10,480 >> А потоа по што дојдоа заедно, аудио таг HTML, кои 84 00:04:10,480 --> 00:04:16,579 е одлика на помодерни HTML-- која сигурно е дозволено за многу повеќе работи, 85 00:04:16,579 --> 00:04:20,050 но дури и на работи што можете да направите таму се малку ограничени само 86 00:04:20,050 --> 00:04:22,730 како резултат на работите дека HTML е способен. 87 00:04:22,730 --> 00:04:26,060 Па кога го вклучите Javascript- API, Веб Аудио API-то, 88 00:04:26,060 --> 00:04:29,290 станале стандард практикуваат преку прелистувачи, 89 00:04:29,290 --> 00:04:32,490 што навистина го прошири сет на можности за програмерите 90 00:04:32,490 --> 00:04:36,590 за да навистина се влезе во зградата кул работи за веб. 91 00:04:36,590 --> 00:04:39,220 За долго време имало Беше навистина робустен алатки 92 00:04:39,220 --> 00:04:44,360 за аудио мајчин апликации, like-- секој знае GarageBand, 93 00:04:44,360 --> 00:04:48,360 и тогаш очигледно има повеќе професионална аудио мешање апликации, 94 00:04:48,360 --> 00:04:49,640 и тој вид на работи. 95 00:04:49,640 --> 00:04:52,690 Но, таму не беше навистина добра Cloud-- не 96 00:04:52,690 --> 00:04:55,811 Облак, да, претпоставувам Cloud-- веб-базирана платформа 97 00:04:55,811 --> 00:04:58,310 што ќе им овозможи на програмерите да се изгради апликации за луѓето 98 00:04:58,310 --> 00:05:00,570 да се направи аудио мешање. 99 00:05:00,570 --> 00:05:03,960 И како што тој ќе ви покаже подоцна, Веб Аудио API 100 00:05:03,960 --> 00:05:07,470 овозможува навистина моќна работи да се случуваат навистина едноставно, 101 00:05:07,470 --> 00:05:09,597 која е прилично кул. 102 00:05:09,597 --> 00:05:12,680 Значи тоа е поука за тоа зошто вие треба да го догледа семинарот, 103 00:05:12,680 --> 00:05:14,350 основа. 104 00:05:14,350 --> 00:05:17,880 >> И сега, јас ќе одам да се зборува за некои JavaScript-- само основните елементи 105 00:05:17,880 --> 00:05:20,240 на јазикот, така што можеме да бидеме на истата страница 106 00:05:20,240 --> 00:05:22,470 кога зборуваме за API за малку подоцна. 107 00:05:22,470 --> 00:05:23,260 Кул. 108 00:05:23,260 --> 00:05:26,192 >> Значи, ова е резиме. 109 00:05:26,192 --> 00:05:27,150 Го заборавив ова беше тука. 110 00:05:27,150 --> 00:05:27,510 Је. 111 00:05:27,510 --> 00:05:27,870 >> Хју Забриски: Има две слајдови тука. 112 00:05:27,870 --> 00:05:30,245 >> Сем ЗЕЛЕНА: Ова е резиме на некои од ограничувањата 113 00:05:30,245 --> 00:05:35,220 на други обврзувачки, стари методи. 114 00:05:35,220 --> 00:05:37,828 И тогаш и сега, имаме овие работи. 115 00:05:37,828 --> 00:05:40,011 Кул. 116 00:05:40,011 --> 00:05:40,510 Страшни. 117 00:05:40,510 --> 00:05:43,200 >> Значи, го вклучите Javascript-најважен. 118 00:05:43,200 --> 00:05:47,230 Првите нешта прво, постои прилично значајна разлика 119 00:05:47,230 --> 00:05:49,940 во JavaScript наспроти во јазик како C, во начинот на 120 00:05:49,940 --> 00:05:52,050 дека променливи се создадени. 121 00:05:52,050 --> 00:05:55,634 Па во C, ние сме навикнати да имаат да напишеш нашите променливи, нели? 122 00:05:55,634 --> 00:05:57,800 И не мислам тип како ги напишете, мислам на типот 123 00:05:57,800 --> 00:06:01,900 како нив доделите type-- значење како, int, плови, знак. 124 00:06:01,900 --> 00:06:05,210 Во C, бевме навистина користи за да се има да се создаде променлива 125 00:06:05,210 --> 00:06:09,690 а потоа се држи до овој тип за цело време дека ние ги користиме таа променлива. 126 00:06:09,690 --> 00:06:13,990 И дека не мора да е уште полошо, но тоа е веројатно потешко да се користи. 127 00:06:13,990 --> 00:06:16,190 Еден од супер можности на вклучите Javascript-е 128 00:06:16,190 --> 00:06:19,740 дека променливи се она што се нарекува "динамички отчукува", која 129 00:06:19,740 --> 00:06:22,500 значи дека можам да се создаде променлива со кои синтакса, 130 00:06:22,500 --> 00:06:25,800 varX еднаква на 5, на пример. 131 00:06:25,800 --> 00:06:27,790 Која првично создава цел број variable-- 132 00:06:27,790 --> 00:06:29,870 токму под качулка somewhere-- но јас 133 00:06:29,870 --> 00:06:33,040 може да се промени таа променлива да се однесува на низа 134 00:06:33,040 --> 00:06:35,820 без да правиш ништо како создавање на нова променлива. 135 00:06:35,820 --> 00:06:37,880 Јас не треба да се грижите за типот менува. 136 00:06:37,880 --> 00:06:45,440 JavaScript знае дека типот е менува, и тоа се случи динамично. 137 00:06:45,440 --> 00:06:48,510 >> Значи, постојат бенефиции и недостатоци на тоа, 138 00:06:48,510 --> 00:06:51,250 како секој оној кој работел во JavaScript за некое време може да знам. 139 00:06:51,250 --> 00:06:53,600 Постојат моменти кога Може да случајно 140 00:06:53,600 --> 00:06:57,720 промена на типот на променлива и не се справи со тој тип се менува, 141 00:06:57,720 --> 00:07:01,120 а потоа вашата вклучите Javascript- може crash-- или по исклучок 142 00:07:01,120 --> 00:07:06,070 бидат фрлени, бидејќи ќе имаат погрешен тип кога очекувате еден тип. 143 00:07:06,070 --> 00:07:07,040 Кул. 144 00:07:07,040 --> 00:07:11,470 >> Значи, scoping-- која е како, ако се се сеќавам на првите недели во текот, 145 00:07:11,470 --> 00:07:15,420 однесува на тоа како видливи променлива е и во тоа што областа на кодот. 146 00:07:15,420 --> 00:07:18,400 Сето тоа изгледа многу слично на начинот на кој таа изгледа во В. 147 00:07:18,400 --> 00:07:24,755 Така променливи се scoped генерално во рамките на големи загради во функција, 148 00:07:24,755 --> 00:07:27,005 и потоа, тука се, исто така, глобално scoped променливи кои 149 00:07:27,005 --> 00:07:29,171 are-- ако напишете променлива надвор од функција, 150 00:07:29,171 --> 00:07:31,790 тоа ќе биде видлива во целиот текст. 151 00:07:31,790 --> 00:07:35,840 >> Една разлика помеѓу Го вклучите Javascript-и Ц особено, 152 00:07:35,840 --> 00:07:40,280 е дека ако се изјасни за глобалната променлива насекаде во текстуална датотека 153 00:07:40,280 --> 00:07:43,324 тоа е видливо во која било функција во рамките на тој текст фајл. 154 00:07:43,324 --> 00:07:44,240 Тоа е точно, нели? 155 00:07:44,240 --> 00:07:46,330 >> Хју Забриски: Да. 156 00:07:46,330 --> 00:07:49,120 >> Сем ЗЕЛЕНА: Значи тоа е исто така малку фанки малку во споредба со С, 157 00:07:49,120 --> 00:07:52,660 каде што ние секогаш мораше да си имаме променлива дефиниции над места 158 00:07:52,660 --> 00:07:53,770 тие се користат. 159 00:07:53,770 --> 00:07:57,957 Тоа не е правило дека е извршена повеќе, така, малку поинаква. 160 00:07:57,957 --> 00:08:00,540 И повторно само да reemphasize, глобалната наспроти локалните variables-- 161 00:08:00,540 --> 00:08:03,457 многу сличен на В. Вие би можеле да имаат две променливи со исто име, 162 00:08:03,457 --> 00:08:06,540 и една од нивните имиња ќе биде набљудувано со локална променлива ако еден од нив 163 00:08:06,540 --> 00:08:07,546 е глобален. 164 00:08:07,546 --> 00:08:09,420 Значи, сличен вид на проблемите кои некои од вас 165 00:08:09,420 --> 00:08:11,920 може да се кандидира во во некои на вашиот проблем поставува досега. 166 00:08:11,920 --> 00:08:14,450 Кул, па тоа е променливи. 167 00:08:14,450 --> 00:08:20,310 >> Контрола на проток, што значи како, Ако-else-- логично stuff-- и петелки. 168 00:08:20,310 --> 00:08:24,510 Така да се започне со, тоа е она што-ако друго извештаи изгледа во JavaScript. 169 00:08:24,510 --> 00:08:29,750 Поставување на разни нешта на линиите не е важно. 170 00:08:29,750 --> 00:08:34,409 Ова е само еден од конвенциите за начинот на кој ние структура код. 171 00:08:34,409 --> 00:08:38,634 Исто како и во C, имаме "ако", изјава заграда. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 Тоа не е она што сакав да го направам. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Јас го направив тоа повторно. 176 00:08:45,550 --> 00:08:46,841 >> Хју Забриски: Обидувајќи се да излезете? 177 00:08:46,841 --> 00:08:49,770 Сем ЗЕЛЕНА: Не, јас сум само се обидува да го зголемите. 178 00:08:49,770 --> 00:08:50,660 Тоа не е важно. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Значи, имаме "ако" и изјава имаме состојба во него 181 00:08:59,370 --> 00:09:03,130 дека е точен или неточен, и која го одредува дали или не 182 00:09:03,130 --> 00:09:04,510 ние го внесете тој блок од код. 183 00:09:04,510 --> 00:09:09,860 И, исто така, имаме друг, ако, и на друго место, исто како и ние сме навикнати во В. 184 00:09:09,860 --> 00:09:14,010 >> Можете исто така треба да биде прилично удобно право надвор од лилјак со петелки, 185 00:09:14,010 --> 00:09:16,440 бидејќи тие исто така се погледне многу слични на C изгледа. 186 00:09:16,440 --> 00:09:19,600 Но ќе забележите дека ние повторно има, наместо int initializations, 187 00:09:19,600 --> 00:09:22,570 имаме var initializations. 188 00:09:22,570 --> 00:09:24,650 И претпоставувам дека имате да се биде внимателен да се направи 189 00:09:24,650 --> 00:09:28,460 Дали сте сигурни дека не се промени на вредноста од I од int во низа, 190 00:09:28,460 --> 00:09:31,780 на пример, затоа што се случува да предизвика чудно однесување што не би можело да 191 00:09:31,780 --> 00:09:32,280 очекувате. 192 00:09:32,280 --> 00:09:35,750 Но ова треба да се погледне прилично запознаен, како и. 193 00:09:35,750 --> 00:09:39,460 >> Значи ова е местото каде што работите почнуваат да се добие малку луд во вклучите Javascript- 194 00:09:39,460 --> 00:09:44,920 за некој што се случува од позадината на C. Постојат функции 195 00:09:44,920 --> 00:09:48,070 во JavaScript, и таму е еден начин да се изјасни за функцијата што изгледа 196 00:09:48,070 --> 00:09:50,361 вид на слични на C и потоа, тука е уште еден кој 197 00:09:50,361 --> 00:09:52,450 изгледа вид на различни. 198 00:09:52,450 --> 00:09:54,930 >> Првата верзија, која може да се види тука, 199 00:09:54,930 --> 00:09:59,260 е вид на C-како, каде ние се каже, ова е во функција, 200 00:09:59,260 --> 00:10:01,490 да го даде името, даде бројот на аргументи, 201 00:10:01,490 --> 00:10:05,150 и тогаш содржината на функцијата одат во оние големите загради. 202 00:10:05,150 --> 00:10:08,850 Ќе видите еден пример на аргументи во само една секунда. 203 00:10:08,850 --> 00:10:13,420 >> Со оглед на следната линија, ќе видиме, о, тука е променлива наречена "myFunction" 204 00:10:13,420 --> 00:10:17,546 и ние тоа го изедначи со оваа генерички thing-- function-- дека 205 00:10:17,546 --> 00:10:19,170 не чини да имаат нешто се случува. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Од причина што е различно од C е тоа што го вклучите Javascript- 208 00:10:26,080 --> 00:10:30,040 е она што се нарекува функционална јазик, или има функционални елементи, што значи 209 00:10:30,040 --> 00:10:33,510 кои функции се всушност вредности. 210 00:10:33,510 --> 00:10:39,520 А тоа значи дека ние може да се постави променлива да се изедначи со функција 211 00:10:39,520 --> 00:10:43,210 а потоа се оди на таа функција наоколу, го предадете како аргумент, 212 00:10:43,210 --> 00:10:46,550 направите сите видови на работи како што со функции. 213 00:10:46,550 --> 00:10:49,682 >> Уште една работа да note-- функции се напишани 214 00:10:49,682 --> 00:10:51,140 со одреден број на аргументи. 215 00:10:51,140 --> 00:10:54,056 Ќе видиме еден пример на функција со аргумент на следниот слајд. 216 00:10:54,056 --> 00:10:56,720 Но нема да го вклучите Javascript- развикам ако се обидете 217 00:10:56,720 --> 00:10:59,330 да се користи некоја функција со погрешен број на аргументи. 218 00:10:59,330 --> 00:11:05,310 Тоа само ќе стори сé за да се направи направи, што значи дека ако се помине, 219 00:11:05,310 --> 00:11:09,410 ќе се јавите на функција која очекува аргумент, без аргументи, сето тоа 220 00:11:09,410 --> 00:11:13,990 ќе се случи е дека тоа ќе даде се од себе за да се обиде и да се изврши тој код, 221 00:11:13,990 --> 00:11:16,541 и ако тоа на крајот ќе трае во исклучок или грешка, 222 00:11:16,541 --> 00:11:19,790 тоа ќе го фрли тој исклучок и само чува going-- што е само еден од начините на 223 00:11:19,790 --> 00:11:21,070 дека го вклучите Javascript-дела. 224 00:11:21,070 --> 00:11:21,781 Је. 225 00:11:21,781 --> 00:11:24,207 >> ПУБЛИКАТА: Што се случува ако има премногу аргументи? 226 00:11:24,207 --> 00:11:26,040 Сем ЗЕЛЕНА: Значи, Прашањето е, што се случува 227 00:11:26,040 --> 00:11:27,380 ако има премногу аргументи? 228 00:11:27,380 --> 00:11:29,171 А одговорот е дека Сака да го вклучите Javascript- 229 00:11:29,171 --> 00:11:32,120 игнорираме оние кои се по оние што не очекува. 230 00:11:32,120 --> 00:11:36,420 Тоа ќе се обидам да ја врши функцијата нарекуваме како ако тоа беше само во првите две. 231 00:11:36,420 --> 00:11:37,075 Нели? 232 00:11:37,075 --> 00:11:37,700 >> Хју Забриски: Тоа е право, да. 233 00:11:37,700 --> 00:11:39,449 Слично на тоа, ако има премалку аргументи, 234 00:11:39,449 --> 00:11:42,640 Тоа само вид на дава нула до сите аргументи дека не се имате било какви вредности 235 00:11:42,640 --> 00:11:43,660 за. 236 00:11:43,660 --> 00:11:45,810 >> Сем ЗЕЛЕНА: што може да всушност може да биде корисна, ако 237 00:11:45,810 --> 00:11:49,060 сакате да се напише функција која Потребно е променлива аргументи број. 238 00:11:49,060 --> 00:11:55,830 Можете да го поставите на основните вредности во дефиницијата на функцијата, 239 00:11:55,830 --> 00:11:59,060 а тоа може да се игнорира фактот дека влезот не е таму. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Значи сакам да зборувам малку повеќе за овој последниот куршум 242 00:12:04,000 --> 00:12:05,541 точка, која е функции се вредности. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Ова е пример за тоа е малку ум-дува 245 00:12:11,010 --> 00:12:14,880 ако само ја прочитате, и не мислам во врска со она што се случува за една секунда. 246 00:12:14,880 --> 00:12:17,910 Значи, ајде да погледнеме само во првата линија тука. 247 00:12:17,910 --> 00:12:24,360 Имаме оваа променлива, F1, што го велат е функција која го прави ова работа. 248 00:12:24,360 --> 00:12:28,535 И содржината на функцијата се console.log ("hello"). 249 00:12:28,535 --> 00:12:32,220 Што може да замислите како console.log Го вклучите Javascript-еквивалент на printf. 250 00:12:32,220 --> 00:12:35,510 Така што ќе се случи е, ако ние ја извршите оваа кодот во нашата интернет пребарувач, 251 00:12:35,510 --> 00:12:37,530 тоа ќе се печати низа. 252 00:12:37,530 --> 00:12:39,342 Јас може да се покаже дека. 253 00:12:39,342 --> 00:12:42,300 ПУБЛИКАТА: По најавите, иако, дали тоа значи дека е се снима некаде? 254 00:12:42,300 --> 00:12:42,550 Сем ЗЕЛЕНА: Да. 255 00:12:42,550 --> 00:12:44,216 Па јас ќе ви покаже што ќе се случи. 256 00:12:44,216 --> 00:12:48,085 Значи, прашањето е, што се логирал значи? 257 00:12:48,085 --> 00:12:51,262 >> Хју Забриски: Значи console.log е како printf за C. 258 00:12:51,262 --> 00:12:52,970 Сем ЗЕЛЕНА: Значи console.log е како printf, 259 00:12:52,970 --> 00:12:59,240 па ако имам оваа console.log ("hello"), и јас го нарекувам тоа, стринг "Здраво" 260 00:12:59,240 --> 00:13:00,730 добива отпечатени на конзола. 261 00:13:00,730 --> 00:13:03,340 Тоа е конзолата. 262 00:13:03,340 --> 00:13:05,930 Тоа е исто како printf, каде тоа отпечатоци до стандарден излез. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 И ќе видиме во една минута, но ова е всушност 265 00:13:11,230 --> 00:13:16,529 мислејќи на конзолата објект, и повикување метод на тој објект. 266 00:13:16,529 --> 00:13:18,320 Тоа ќе го направи повеќе смисла во една минута, кога ние 267 00:13:18,320 --> 00:13:20,660 дојде до зборуваме за објекти во JavaScript, 268 00:13:20,660 --> 00:13:22,509 но мислев дека сум само ќе споменеме дека. 269 00:13:22,509 --> 00:13:24,300 Хју Забриски: Ние сме користи за да се во C, right-- 270 00:13:24,300 --> 00:13:27,580 ние обично се пишува голема програма во главниот да се направи нешто. 271 00:13:27,580 --> 00:13:30,700 Но, она што е кул во JavaScript ви е имаат овој вид на преведувач, кој 272 00:13:30,700 --> 00:13:33,620 работи во реално време, така што Потребни се само неколку од ред до ред, 273 00:13:33,620 --> 00:13:35,320 тоа само може да го толкува дека на самото место. 274 00:13:35,320 --> 00:13:37,403 И го следи на работите што се кандидира пред тоа, 275 00:13:37,403 --> 00:13:41,620 па тоа е прилично корисна алатка за да користете console.log, или конзола, 276 00:13:41,620 --> 00:13:46,870 Општо земено, за само игра околу со JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> Сем ЗЕЛЕНА: Значи да се вратам на ова example-- втората линија на кодот 278 00:13:51,420 --> 00:13:55,320 тука е прилично ум-преголема во мојата глава. 279 00:13:55,320 --> 00:13:59,790 Првиот пат кога го читате ова, Тоа беше како, што се случува? 280 00:13:59,790 --> 00:14:04,580 Значи она што се случува е, ова функција декларација вели: 281 00:14:04,580 --> 00:14:10,170 Имам функција наречена F2 дека е очекуваме еден аргумент, F, 282 00:14:10,170 --> 00:14:12,990 и тогаш тоа го нарекоа функцијата, f, која 283 00:14:12,990 --> 00:14:17,652 беше донесен на него како аргумент без самата аргументи. 284 00:14:17,652 --> 00:14:19,110 Значи, тоа би можело да биде збунувачки. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Ако ја сфатиме ова како F2 зема Ф1 како аргумент, а потоа и во внатрешноста на f2, 287 00:14:28,400 --> 00:14:31,190 ѓ добива called-- што значи дека оваа линија код, 288 00:14:31,190 --> 00:14:34,192 По овие две линии на код, резултира со "здраво" 289 00:14:34,192 --> 00:14:35,400 се печатени на конзола. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> На фактот дека ние може да помине функции наоколу како вредности 292 00:14:44,910 --> 00:14:47,870 да се заврши во еден од најпознатите моќни карактеристики на JavaScript 293 00:14:47,870 --> 00:14:49,700 како програмски јазик. 294 00:14:49,700 --> 00:14:52,782 Надвор од сите страшни работи што може да направи, 295 00:14:52,782 --> 00:14:54,990 исто како што е карактеристика на јазик во однос на начинот на 296 00:14:54,990 --> 00:14:58,400 дека тоа го прави работите лесно да се програмира и им овозможува на 297 00:14:58,400 --> 00:15:01,060 за работи кои не се особено добро прилагоден за веб, 298 00:15:01,060 --> 00:15:04,500 функционално програмирање и функционални програмски аспекти на JavaScript 299 00:15:04,500 --> 00:15:07,130 е еден од повеќето моќен концепти кои 300 00:15:07,130 --> 00:15:11,030 постои во JavaScript-- ако мене ме прашувате. 301 00:15:11,030 --> 00:15:11,960 Кул. 302 00:15:11,960 --> 00:15:13,534 >> Значи, следното нешто. 303 00:15:13,534 --> 00:15:16,450 Покрај тоа што е функционална, исто така има и елементи на JavaScript 304 00:15:16,450 --> 00:15:20,510 кои се објектно-ориентирано, кој е еден од многу 305 00:15:20,510 --> 00:15:23,800 популарен зуи зборови во компјутерската наука. 306 00:15:23,800 --> 00:15:27,040 Објектно-ориентирано програмирање е многу популарна работа. 307 00:15:27,040 --> 00:15:34,210 Го вклучите Javascript-има верзија на тоа, каде што верувам секоја вредност е, исто така, 308 00:15:34,210 --> 00:15:41,475 објект, што значи дека секој предмет обвива заедно некои број на вредности. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Така и за вредностите кои се едноставни, како цел број, како varX еднаква на 5, 311 00:15:49,750 --> 00:15:52,250 тој објект само обвива дека една вредност. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Но ние исто така може да се замисли ситуација where-- можеме да размислуваме за ситуации во C 314 00:15:59,036 --> 00:16:00,910 каде што сакавме да се направи нешто со structs, 315 00:16:00,910 --> 00:16:03,285 на пример, што ги обвива неколкуте вредности, заедно и го прави 316 00:16:03,285 --> 00:16:05,870 тоа е навистина лесно да се помине работите. 317 00:16:05,870 --> 00:16:09,270 Тоа е кога објектот е во JavaScript. 318 00:16:09,270 --> 00:16:12,340 >> Важно е да се запамети кога ќе речам дека предметите завиткани 319 00:16:12,340 --> 00:16:15,330 некои број на вредности, заедно, кои функции се, исто така, 320 00:16:15,330 --> 00:16:21,506 вредности, што значи дека функциите може да исто така, да бидат внатре на вклучите Javascript-објект. 321 00:16:21,506 --> 00:16:26,910 И од причина што е важно е во тоа што, додека ние често 322 00:16:26,910 --> 00:16:30,290 мислам на повикување метод на некој објект кој е 323 00:16:30,290 --> 00:16:35,200 на популарен термин од други популарни објектно-ориентирани јазици, 324 00:16:35,200 --> 00:16:39,330 една од разликите е дека сето она што метод е во вклучите Javascript- 325 00:16:39,330 --> 00:16:47,270 се складира вредност во внатрешноста на објектот кој врши некоја action-- можеби 326 00:16:47,270 --> 00:16:51,850 со користење на други вредности кои се внатре на тој предмет, но не е задолжително. 327 00:16:51,850 --> 00:16:56,930 За да можете да се замисли ситуација, јас Претпоставувам дека во малку на еден луд начин, 328 00:16:56,930 --> 00:17:02,990 каде што ќе се нарекува метод на еден објект на друг објект, на пример. 329 00:17:02,990 --> 00:17:06,010 Значи, тоа е малку фанки на тој начин. 330 00:17:06,010 --> 00:17:09,369 >> И исто така можете да го промените методи кои се поврзани со објект 331 00:17:09,369 --> 00:17:13,740 со назначување дека метод нова функција, која е, исто така, 332 00:17:13,740 --> 00:17:18,250 прилично различен од другите објектно-ориентирани јазици, каде што 333 00:17:18,250 --> 00:17:21,410 откако ќе се изјаснат за објектот и показ, 334 00:17:21,410 --> 00:17:25,839 ние не може да се промени на методи кои се поврзани со тој објект повеќе. 335 00:17:25,839 --> 00:17:28,680 Значи тоа е прилично различни. 336 00:17:28,680 --> 00:17:29,570 Кул. 337 00:17:29,570 --> 00:17:34,010 >> Па еве еден пример, прво, на објект во акција. 338 00:17:34,010 --> 00:17:36,390 Ова е она што се нарекува генерички објект, кој 339 00:17:36,390 --> 00:17:39,460 значи дека тоа не било какви посебно име, нема класа, 340 00:17:39,460 --> 00:17:42,190 тоа е само некои завиткување на вредности. 341 00:17:42,190 --> 00:17:49,790 И начинот на кој изгледа е, имаме оваа надворешна пар на големите загради тука 342 00:17:49,790 --> 00:17:57,950 кои укажуваат на тоа да го вклучите Javascript- и да се каже, ова е објект. 343 00:17:57,950 --> 00:18:02,130 Вредностите во него се секој вредности внатре 344 00:18:02,130 --> 00:18:04,590 на објектот што треба да се завитка заедно. 345 00:18:04,590 --> 00:18:09,180 И во внатрешноста на тој предмет, тогаш имаме клучните вредност парови, 346 00:18:09,180 --> 00:18:13,880 каде клучот се однесува на името од вредноста во внатрешноста на објектот, 347 00:18:13,880 --> 00:18:16,790 и други side-- спроти here-- дебелото црево 348 00:18:16,790 --> 00:18:19,850 е вистинската вредност кои треба да се чуваат. 349 00:18:19,850 --> 00:18:26,210 >> Така што гледате тука дека ние имаме клуч наречен fn со вредност Сем, 350 00:18:26,210 --> 00:18:29,430 проследено со запирка, велејќи кон следниот запис. 351 00:18:29,430 --> 00:18:33,560 Тогаш клучен наречен ln, со вредност од зелена, 352 00:18:33,560 --> 00:18:35,840 проследено со запирка, проследено со "печати" 353 00:18:35,840 --> 00:18:43,209 која се случува да имаат вредност на функцијата што се случува да се направи оваа линија код. 354 00:18:43,209 --> 00:18:45,500 Ајде да направиме чекор назад и отпакувајте што се случува тука. 355 00:18:45,500 --> 00:18:47,280 Така што ова е малку комплицирано, и ние сме сведоци на нешто ново 356 00:18:47,280 --> 00:18:48,071 за прв пат. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 На "овој" клучен збор е нова работа што го гледате тука, и што тоа не 359 00:18:55,065 --> 00:19:00,540 е, се однесува на тековната приговор во обем, нели? 360 00:19:00,540 --> 00:19:03,990 Значи, кога ќе се каже, ова укажува на целиот пат назад 361 00:19:03,990 --> 00:19:08,140 за целата оваа object-- кога тоа го правиме this.fn, 362 00:19:08,140 --> 00:19:11,990 ние ќе треба да одат по целиот пат назад на овој објект, оди во вредност фн 363 00:19:11,990 --> 00:19:16,471 и да добијат Сем, повлечете го целиот пат назад, се држи тоа овде, а потоа да продолжат понатаму. 364 00:19:16,471 --> 00:19:19,838 >> ПУБЛИКАТА: Така е и со пронаоѓање, е тоа се направи, бидејќи на параметар 365 00:19:19,838 --> 00:19:20,621 дефиниција? 366 00:19:20,621 --> 00:19:23,870 Сем ЗЕЛЕНА: Значи, прашањето е, е пронаоѓање направи, бидејќи на параметарот 367 00:19:23,870 --> 00:19:24,727 дефиниција? 368 00:19:24,727 --> 00:19:25,435 Да, апсолутно. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Што ќе се случи тука е, оваа точка и вели на JavaScript, 371 00:19:32,470 --> 00:19:39,990 Добро, јас сум добивање на некоја вредност од овој објект од себе. 372 00:19:39,990 --> 00:19:46,375 И тогаш тоа ќе се погледне за влез наречен фн, и ако смета, 373 00:19:46,375 --> 00:19:48,470 тоа ќе се врати тој value-- така, тоа е Сем. 374 00:19:48,470 --> 00:19:51,540 Но јас исто така може да се внесе нешто што не е дефиниран овде, 375 00:19:51,540 --> 00:19:54,090 и тогаш тоа би само врати undefined-- која 376 00:19:54,090 --> 00:19:58,250 е нешто што може да го вклучите Javascript- прават, кои можат да имаат корист, 377 00:19:58,250 --> 00:20:03,190 но тоа е also-- ако се направи грешка, тоа може да резултира со чудни грешки. 378 00:20:03,190 --> 00:20:05,617 Па тоа само ќе се обидам да се најде она што ќе го каже да се најде 379 00:20:05,617 --> 00:20:07,700 и тоа не се случува да го се жалат, ако не го најдат. 380 00:20:07,700 --> 00:20:11,390 Тоа само ќе кажам, јас не го најде, а потоа да продолжат понатаму. 381 00:20:11,390 --> 00:20:17,581 Значи тоа ќе биде дефиниран, плус празно, плус презиме. 382 00:20:17,581 --> 00:20:18,080 Је. 383 00:20:18,080 --> 00:20:21,070 А потоа може да се види дека ако ние тогаш би можеле да одат надолу и access-- 384 00:20:21,070 --> 00:20:25,450 и ние го нарекуваме tf.print () со голема заграда. 385 00:20:25,450 --> 00:20:30,000 Тоа се случува да се јавите дека за печатење функција без аргументи, нели? 386 00:20:30,000 --> 00:20:34,490 Но, ако ние само рече tf.print () запирка, без загради, 387 00:20:34,490 --> 00:20:37,480 сето она што би го направиле е да се повлече на функцијата од вредност, 388 00:20:37,480 --> 00:20:40,609 но не и всушност го нарече. 389 00:20:40,609 --> 00:20:41,162 Кул. 390 00:20:41,162 --> 00:20:42,870 Хју Забриски: Треба ние се направи објект? 391 00:20:42,870 --> 00:20:44,161 Сем ЗЕЛЕНА: Секако, ајде да го направите тоа. 392 00:20:44,161 --> 00:20:48,750 За да можам да се помести ова пример на конзола. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Можеме да ги замислиме дека имам некој предмет. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Значи ова е едноставен објект. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Ова е објект кој содржи два , вредноста на клучните вредности со два клуча две 399 00:21:11,050 --> 00:21:12,710 парови. 400 00:21:12,710 --> 00:21:21,850 Па тогаш да пристапите на вредност се чуваат во внатрешноста на овој објект со правење x.x1, 401 00:21:21,850 --> 00:21:23,400 на пример, и да се добие 1 назад. 402 00:21:23,400 --> 00:21:29,590 Слично на тоа, x.x2, ја добиете таа вредност назад. 403 00:21:29,590 --> 00:21:33,330 >> И сега навистина кул работа е, можам да всушност додадете нешто на овој објект 404 00:21:33,330 --> 00:21:34,316 јас откако го создал. 405 00:21:34,316 --> 00:21:36,315 Па можете да замислите, ајде кажам дека нема функција. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Хју Забриски: Можете треба да направите Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> Сем ЗЕЛЕНА: Ох, тоа е досадно. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Што тоа не е како? 411 00:22:04,324 --> 00:22:04,824 Ох. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Еве ќе одиме. 414 00:22:08,691 --> 00:22:09,190 Кул. 415 00:22:09,190 --> 00:22:12,840 >> Па јас сум само создаде оваа функција, f, дека 416 00:22:12,840 --> 00:22:17,590 се случува да одат на тековната објект и печатење this.x1. 417 00:22:17,590 --> 00:22:20,330 Значи, ако јас само повик ѓ страна себе, ништо не се случува 418 00:22:20,330 --> 00:22:26,970 да се случи, во ред, бидејќи не постои x1 поле во објект што е се однесуваат на. 419 00:22:26,970 --> 00:22:39,710 Но, ако кажам x.f = f, и тогаш јас јавете x.f (), јас ќе одам да се врати назад 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Дека f функција е сега поврзани со предметот x, 422 00:22:46,530 --> 00:22:51,800 кој има клучна наречен x1 поврзани со вредност 1, 423 00:22:51,800 --> 00:22:54,570 па кога ние го нарекуваме this.x1, тоа е случува да се најде она што тоа е во потрага по 424 00:22:54,570 --> 00:22:56,450 и да бидат способни да се печати вредноста надвор. 425 00:22:56,450 --> 00:22:58,700 Па тоа е само еден пример од ваков вид на луди работи 426 00:22:58,700 --> 00:23:01,190 можете да го направите со предмети во JavaScript. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Така што верзија беше генеричка верзија, што значи 429 00:23:07,560 --> 00:23:13,780 дека ние направивме еден објект со користење на овој загради notation-- заграда нотација, 430 00:23:13,780 --> 00:23:16,880 rather-- а тоа е рака, ако ние само сакаме 431 00:23:16,880 --> 00:23:21,440 еден пример на одреден објект, но што ако ние сакаме да имаат повеќе од еден 432 00:23:21,440 --> 00:23:22,210 од ист вид? 433 00:23:22,210 --> 00:23:24,440 И одговорот на тоа Прашањето е, постојат работи 434 00:23:24,440 --> 00:23:26,760 наречен класи во JavaScript, како и. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Ние можеме да создадеме функција што прави некој вид на иницијализација 437 00:23:36,420 --> 00:23:41,690 за странски објект, и ние би рекол, како, 438 00:23:41,690 --> 00:23:44,550 мојата class-- па името на еднократно object-- 439 00:23:44,550 --> 00:23:47,100 еднаква на функција која се поставува. 440 00:23:47,100 --> 00:23:52,280 Така што тоа би било еквивалент да се креира објект кој 441 00:23:52,280 --> 00:23:55,930 ќе биде исто како, кадрава голема заграда, ул, дебелото црево, 442 00:23:55,930 --> 00:23:59,630 ова е стринг, запирка, кадрава голема заграда. 443 00:23:59,630 --> 00:24:01,880 Дека ќе биде на генерички ние го иницијализирам објектот, 444 00:24:01,880 --> 00:24:06,380 со таа разлика што на следните линии ние се создаде прототип, кој 445 00:24:06,380 --> 00:24:11,190 значи дека тоа е клучот за стандардно дека го додадеме на нашиот објект кој 446 00:24:11,190 --> 00:24:13,970 има вредност наведени тука. 447 00:24:13,970 --> 00:24:20,570 Што значи дека, кога ќе се создаде нова пример на оваа MyClass објект, 448 00:24:20,570 --> 00:24:27,440 тоа се случува да имаат пред-изградена во внатрешноста на таа вредност наречена ул и друга вредност 449 00:24:27,440 --> 00:24:32,418 наречен myPrint, што е случува да биде во функција. 450 00:24:32,418 --> 00:24:32,918 Страшни. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Одлично. 453 00:24:37,990 --> 00:24:40,710 Па последното нешто да велат дека за да вклучите 454 00:24:40,710 --> 00:24:46,430 е дека тоа е навистина корисни за она што се нарекуваат асинхрони операции. 455 00:24:46,430 --> 00:24:52,500 Асинхрони значи е дека ние можат да чекаат за некои операција 456 00:24:52,500 --> 00:24:57,870 да се заврши пред да продолжат понатаму на, но се движат натаму додека чекаме 457 00:24:57,870 --> 00:24:59,690 а потоа и да има нешто да се случи подоцна. 458 00:24:59,690 --> 00:25:03,480 И она што мислам со тоа е, вие може да се замисли ситуација каде 459 00:25:03,480 --> 00:25:06,850 ќе испрати барање до некои веб сервер некаде, 460 00:25:06,850 --> 00:25:09,670 и тоа се случува да ве испрати назад некои големи парче на податоци, така? 461 00:25:09,670 --> 00:25:13,320 И вашето корисничко можела да чека во меѓувреме, за тоа да се случи, 462 00:25:13,320 --> 00:25:15,200 и ништо не можеше да биде се случува во тоа време. 463 00:25:15,200 --> 00:25:18,110 Но тоа не е одличен дизајн, нели? 464 00:25:18,110 --> 00:25:20,214 Вие не сакате на веб-страница да се замрзне. 465 00:25:20,214 --> 00:25:22,380 Што ако корисникот сака да кликнете на опаѓачкото мени? 466 00:25:22,380 --> 00:25:24,870 Тоа не е некој голем дизајн шема. 467 00:25:24,870 --> 00:25:29,290 Наместо тоа, во основа она што Го вклучите Javascript-се се вели: 468 00:25:29,290 --> 00:25:31,870 Добро, направи оваа операција асинхроно. 469 00:25:31,870 --> 00:25:36,520 Па како и, се чека во позадина, и тогаш кога работата е завршена, 470 00:25:36,520 --> 00:25:39,420 јавете се на повратен повик function-- јавете се на некои функции, 471 00:25:39,420 --> 00:25:43,800 се некои action-- сигнал за тоа дека операција чекавме за да се стави крај 472 00:25:43,800 --> 00:25:45,520 готово е. 473 00:25:45,520 --> 00:25:51,240 И од причина што е супер моќна е, можеме да сториме нешто, да помине аргумент, 474 00:25:51,240 --> 00:25:54,440 направи нешто, а потоа чекаат нешто да се случи. 475 00:25:54,440 --> 00:25:58,970 Потоа, откако дека нешто заврши, ние може да се јавите за повратен повик. 476 00:25:58,970 --> 00:26:03,300 Тоа е навистина удобен, бидејќи тоа им овозможува на ни прават работите со Веб Аудио API-то, 477 00:26:03,300 --> 00:26:07,490 на пример, како товар на аудио датотека од оддалечен сервер 478 00:26:07,490 --> 00:26:11,660 без да се чека за целиот аудио датотека за да се вчита, 479 00:26:11,660 --> 00:26:14,440 која ќе биде навистина лошо за корисничко искуство. 480 00:26:14,440 --> 00:26:17,080 Кул. 481 00:26:17,080 --> 00:26:19,460 >> Последните неколку белешки за дебагирање, бидејќи ова 482 00:26:19,460 --> 00:26:23,682 е нешто што ви се случува да треба да направите како дел од вашиот проект, загарантирани. 483 00:26:23,682 --> 00:26:25,140 Јас спомнав конзола JavaScript. 484 00:26:25,140 --> 00:26:27,550 Тоа е супер корисна карактеристика на сите современи пребарувачи, 485 00:26:27,550 --> 00:26:30,300 И ние навистина ве охрабруваме да ги добијат удобно користење на вашиот екран, 486 00:26:30,300 --> 00:26:33,660 ако сакате да се добие добар во JavaScript. 487 00:26:33,660 --> 00:26:36,320 Тоа е супер корисна за дебагирање, но тоа е, исто така, 488 00:26:36,320 --> 00:26:39,440 навистина корисни за да пронајдат како да се користи на API. 489 00:26:39,440 --> 00:26:41,950 Тоа овозможува навистина лесно експериментирање 490 00:26:41,950 --> 00:26:45,910 без да напишете некои код, а потоа да го компајлирате. 491 00:26:45,910 --> 00:26:47,500 Вие не мора да го направите сите овие чекори. 492 00:26:47,500 --> 00:26:49,619 Вие само може да се напише некој код во линија, 493 00:26:49,619 --> 00:26:52,410 а потоа се добие брз одговор на дали таа линија код или не 494 00:26:52,410 --> 00:26:55,230 worked-- многу поедноставно. 495 00:26:55,230 --> 00:26:59,760 >> И, исто така, само уште едно техничко note-- конзола го вклучите Javascript-е пример 496 00:26:59,760 --> 00:27:05,680 на REPL-- па тоа е Р-Е-Р-L, repl, која се залага за читање, оцени, 497 00:27:05,680 --> 00:27:06,180 печати јамка. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Си оди за да напишете некои работи во, тоа ќе го прочитате она што сте ја внеле во, 500 00:27:12,120 --> 00:27:17,280 тоа ќе го оцени, и тоа ќе се печати на излез, и тогаш ќе почне повторно. 501 00:27:17,280 --> 00:27:22,056 Која ви овозможува брзо да се оди во кругови процесирањето, што е навистина кул. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Претпоставувам реално последните note-- ова е вистинската последната нота, да. 504 00:27:28,930 --> 00:27:30,780 Како ние всушност ги користат JavaScript? 505 00:27:30,780 --> 00:27:34,040 Значи прво, ние може да се внесуваат тоа со користење на тагот скрипта 506 00:27:34,040 --> 00:27:39,500 на врвот или на дното од една HTML file-- насекаде во внатрешноста на HTML датотека, 507 00:27:39,500 --> 00:27:40,440 навистина. 508 00:27:40,440 --> 00:27:47,390 И во рок од таг скрипта, постојат две под-начини за увоз на JavaScript. 509 00:27:47,390 --> 00:27:51,370 Првиот е по тоа што имаат одделни вклучите Javascript-датотека 510 00:27:51,370 --> 00:27:58,010 кои ги внесуваат во целост, или со тоа што на површина од кодот како скрипта 511 00:27:58,010 --> 00:28:00,290 за да започнете, а потоа обратна коса црта скрипта за да се стави крај. 512 00:28:00,290 --> 00:28:02,620 А потоа ние само напиши Го вклучите Javascript-во внатрешноста на HTML датотека. 513 00:28:02,620 --> 00:28:03,790 Тоа се два начина. 514 00:28:03,790 --> 00:28:05,165 Не можете да го имаат во внатрешноста на HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 ПУБЛИКАТА: Е еден подобар од другите? 517 00:28:08,126 --> 00:28:10,542 Сем ЗЕЛЕНА: Прашањето беше, е еден подобро од другите. 518 00:28:10,542 --> 00:28:18,306 Значи, да, како што практиката на кодирање стил, а исто така и тоа е како еден дизајн пракса. 519 00:28:18,306 --> 00:28:20,180 Постојат две причини зошто тоа би можело да биде подобро. 520 00:28:20,180 --> 00:28:23,934 Првиот е, тоа го прави вашиот код многу повеќе може да се чита и ако сите на HTML 521 00:28:23,934 --> 00:28:27,100 е на едно место, сите од вашиот CSS е во на друго место, на сите ваши вклучите Javascript- 522 00:28:27,100 --> 00:28:28,420 е во третото место. 523 00:28:28,420 --> 00:28:28,920 Нели? 524 00:28:28,920 --> 00:28:32,370 Мислам дека треба да веќе разговаравме за тоа во sections-- како што CSS-- 525 00:28:32,370 --> 00:28:35,220 дека is-- и тоа оди често во друга датотека. 526 00:28:35,220 --> 00:28:37,090 Значи, сличен вид на концепт тука. 527 00:28:37,090 --> 00:28:42,410 Можете исто така да се замисли дека го вклучите Javascript- ќе бидат пренаменети за повеќе од една 528 00:28:42,410 --> 00:28:47,350 HTML страница, или можеби голем број HTML страници, 529 00:28:47,350 --> 00:28:49,340 и ја презеде дека го вклучите Javascript- refactored во една 530 00:28:49,340 --> 00:28:51,950 датотека што ќе може да се внесуваат во повеќе од едно место 531 00:28:51,950 --> 00:28:54,570 им овозможува на кодот да биде начин повеќе одржување. 532 00:28:54,570 --> 00:28:57,930 Можете да замислите што го прави еден промени за да го вклучите Javascript- 533 00:28:57,930 --> 00:29:00,070 и ја да ја промените во 100 различни датотеки. 534 00:29:00,070 --> 00:29:04,070 И наместо тоа, ние само може да го промени во еден, што е начин помоќни. 535 00:29:04,070 --> 00:29:05,420 Никако не можев да одговорам на вашето прашање? 536 00:29:05,420 --> 00:29:07,950 Кул. 537 00:29:07,950 --> 00:29:10,830 >> Исто така можеме да напишеш во конзолата, како што ние си споменато порано. 538 00:29:10,830 --> 00:29:15,070 И повторно, една последна note-- Веб-Аудио е изградена во, 539 00:29:15,070 --> 00:29:16,978 вие не треба да се вчита на ништо. 540 00:29:16,978 --> 00:29:17,478 Кул. 541 00:29:17,478 --> 00:29:20,519 Дали постојат било какви прашања, дали имате повеќе прашања во врска JavaScript, 542 00:29:20,519 --> 00:29:21,930 пред да продолжат понатаму? 543 00:29:21,930 --> 00:29:24,286 >> ПУБЛИКАТА: [Беззвучен] 544 00:29:24,286 --> 00:29:25,410 Сем ЗЕЛЕНА: Добро, кул. 545 00:29:25,410 --> 00:29:27,200 Па сега тој се случува да се зборува за API. 546 00:29:27,200 --> 00:29:28,490 >> Хју Забриски: Кул. 547 00:29:28,490 --> 00:29:28,990 Благодарение, Сем. 548 00:29:28,990 --> 00:29:30,184 >> Сем ЗЕЛЕНА: Секако. 549 00:29:30,184 --> 00:29:32,600 Хју Забриски: Прекрасно, па Се вртиме од JavaScript. 550 00:29:32,600 --> 00:29:35,350 Па ние разговаравме за некои од суштинските работи на JavaScript, 551 00:29:35,350 --> 00:29:41,105 а тоа се променливи, функции, предмети, функции како променливи, 552 00:29:41,105 --> 00:29:41,980 асинхрони вчитување. 553 00:29:41,980 --> 00:29:46,100 Овие се сите работи дека ќе види како ќе го користите веб аудио. 554 00:29:46,100 --> 00:29:49,230 Значи, ние сме само ќе се разговара за тоа прво на високо ниво. 555 00:29:49,230 --> 00:29:52,120 >> Тоа е API-то, па тоа е нешто кој е изграден, како што вели Сем, 556 00:29:52,120 --> 00:29:57,010 право во вклучите Javascript- кои ги користите во конзола. 557 00:29:57,010 --> 00:30:01,020 А тоа е всушност исто како C ++ код која е навистина изграден во Хром 558 00:30:01,020 --> 00:30:04,470 и Firefox, и сите на овие пребарувачи. 559 00:30:04,470 --> 00:30:07,060 Значи главната идеја со Веб Аудио е дека имате 560 00:30:07,060 --> 00:30:09,440 овој вид на гасоводот на аудио, нели? 561 00:30:09,440 --> 00:30:13,670 Па аудио вашите податоци влегува во некоја форма. 562 00:30:13,670 --> 00:30:16,690 >> Постојат три главни видови на forms-- имате осцилатор, кој 563 00:30:16,690 --> 00:30:21,340 создава синус бран, косинус бран, ние ќе треба да се види како тоа работи. 564 00:30:21,340 --> 00:30:23,890 Друга многу заеднички еден, се разбира, е на MP3. 565 00:30:23,890 --> 00:30:25,810 Па можеби ќе почнете со песна, а потоа ќе 566 00:30:25,810 --> 00:30:28,320 сакате да направите некои филтрирање на тоа и излез 567 00:30:28,320 --> 00:30:30,605 that-- тоа може да биде можно извор. 568 00:30:30,605 --> 00:30:32,480 И тогаш навистина кул еден е микрофонот. 569 00:30:32,480 --> 00:30:37,230 За да можете да го користите некои многу основните повици во JavaScript 570 00:30:37,230 --> 00:30:39,440 за да го добиете пристап до микрофон, и така, ако 571 00:30:39,440 --> 00:30:42,870 сакаше да се направи еден стан како детектор на теренот, 572 00:30:42,870 --> 00:30:45,290 на пример, кој ги зема во вашиот глас и фигури 573 00:30:45,290 --> 00:30:47,740 pitch-- на многу лесен начин за тоа. 574 00:30:47,740 --> 00:30:50,730 Можете само вид на го прочита во, дознаам на фреквенција, 575 00:30:50,730 --> 00:30:52,250 а потоа и излез на број. 576 00:30:52,250 --> 00:30:56,080 Па ќе видиме како тоа функционира, како и. 577 00:30:56,080 --> 00:30:59,430 >> Дестинацијата е во основа каде што на аудио податоци е излез. 578 00:30:59,430 --> 00:31:02,890 Па, генерално, тоа е како Вашиот лаптоп звучници. 579 00:31:02,890 --> 00:31:05,610 Други опции се како на ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 ние ќе дојдеме до јазли во second-- но во основа, 581 00:31:07,990 --> 00:31:11,939 или сте ставање надвор звук преку вашиот компјутер преку звучници, 582 00:31:11,939 --> 00:31:14,730 или сте во вид на тоа снимање, па сте чување на тоа што се аудио податоци. 583 00:31:14,730 --> 00:31:18,980 Па можеби и ако некој создава музика во вашиот стан, а потоа 584 00:31:18,980 --> 00:31:22,410 сакате да го снимите и дека можеби како го изнесувате SoundCloud, за example-- 585 00:31:22,410 --> 00:31:25,281 дека ќе биде еден од начините да го направите тоа. 586 00:31:25,281 --> 00:31:27,030 Сите забавни работи, која ќе се зборува за, 587 00:31:27,030 --> 00:31:29,950 се случува помеѓу овие две точки, каде што се вчита во музиката 588 00:31:29,950 --> 00:31:31,410 и тогаш тоа излез. 589 00:31:31,410 --> 00:31:36,660 >> Па јас ќе одам да се зборува за пет фази на аудио продукција во една секунда. 590 00:31:36,660 --> 00:31:38,950 Имаме тоа нешто наречено една AudioContext, која 591 00:31:38,950 --> 00:31:41,580 е оваа мала обвивка гледаме тука. 592 00:31:41,580 --> 00:31:49,980 Во суштина она што AudioContext is-- ако ние одат на вклучите Javascript-конзола, токму сега, 593 00:31:49,980 --> 00:31:52,740 можеме да се создаде една, токму сега. 594 00:31:52,740 --> 00:31:54,040 Само еден пример на repl, нели? 595 00:31:54,040 --> 00:31:57,880 Ние сме читање, оценување и тоа отпечатоци. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext е глобална држава. 597 00:32:00,260 --> 00:32:05,500 Тоа е struct, тоа е објект тука, и се држи информации 598 00:32:05,500 --> 00:32:09,960 за работи што се случуваат во на екранот во врска со аудио. 599 00:32:09,960 --> 00:32:15,220 Еден пример е на денешното време. 600 00:32:15,220 --> 00:32:18,910 Ова ви кажува бројот на секунди, многу прецизно, 601 00:32:18,910 --> 00:32:20,890 Од веб страница вчитан. 602 00:32:20,890 --> 00:32:24,110 Па ова е навистина корисно малку имотот што можете да го користите. 603 00:32:24,110 --> 00:32:27,898 Се читаат only-- сметам дека може да се обидете да го поставите вредност. 604 00:32:27,898 --> 00:32:29,856 Тоа ќе ти каже ќе го поставите, а потоа, ако го печати 605 00:32:29,856 --> 00:32:31,439 again-- тоа не се всушност доста работа. 606 00:32:31,439 --> 00:32:34,472 Па таму се само за читање својства во JavaScript. 607 00:32:34,472 --> 00:32:36,430 Ова е особено корисно ако ти си вид на синхронизирање 608 00:32:36,430 --> 00:32:38,610 многу различни информации, кога ќе бидете 609 00:32:38,610 --> 00:32:41,280 вид на играње различни звуци. 610 00:32:41,280 --> 00:32:43,630 >> Уште една навистина корисен еден е контексно дестинација. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Дефинитивно, ако сте заинтересирани, да биде обидуваат ова на свој конзола право 613 00:32:49,670 --> 00:32:50,980 сега. 614 00:32:50,980 --> 00:32:53,150 Па ова е AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 Во суштина она што вели дека е ова, каде е излезот одиш? 616 00:32:56,480 --> 00:32:59,590 Па така постојат два вистински опции тука. 617 00:32:59,590 --> 00:33:01,940 Обично стандардно е само вашиот јазик, 618 00:33:01,940 --> 00:33:05,150 па AudioDestinationNode во основа, само вели дека 619 00:33:05,150 --> 00:33:09,240 има нула излези на звукот доаѓаат во, испратени на говорникот. 620 00:33:09,240 --> 00:33:12,050 Па, генерално, не се направи Мора да се игра со тоа. 621 00:33:12,050 --> 00:33:15,720 Ако сте заинтересирани за всушност користење на ScriptProcessorNode за евидентирање, 622 00:33:15,720 --> 00:33:16,990 дефинитивно ми е пука е-маил подоцна, бидејќи тоа е 623 00:33:16,990 --> 00:33:18,330 малку посложена. 624 00:33:18,330 --> 00:33:21,590 Но, генерално, ти си само вид Ставање на звук во некоја форма. 625 00:33:21,590 --> 00:33:24,347 Толку кул, ќе скокне назад тука. 626 00:33:24,347 --> 00:33:25,180 ПУБЛИКАТА: Жал ми е. 627 00:33:25,180 --> 00:33:26,054 Хју Забриски: Да. 628 00:33:26,054 --> 00:33:28,770 ПУБЛИКАТА: Знам дека ти рече да се зборува да ви подоцна за снимање. 629 00:33:28,770 --> 00:33:31,550 Може да ви интерфејс, кој со Pro Tools? 630 00:33:31,550 --> 00:33:33,120 >> Хју Забриски: Со Pro Tools? 631 00:33:33,120 --> 00:33:35,260 Ајде да видиме. 632 00:33:35,260 --> 00:33:37,220 Јас не мислам така. 633 00:33:37,220 --> 00:33:41,670 Така одат помеѓу клиентот, која е да го вклучите Javascript 634 00:33:41,670 --> 00:33:44,310 конзола, и вашиот вистински компјутер, е генерално 635 00:33:44,310 --> 00:33:46,490 нешто што е вид на забрането, ако 636 00:33:46,490 --> 00:33:52,320 ќе, вид од страна на природата на the-- тоа е вид на работа на проектирање, 637 00:33:52,320 --> 00:33:57,770 но ќе се обидат да се задржи на прелистувачот одделни од вистинските компјутерот на корисникот. 638 00:33:57,770 --> 00:34:02,310 Генерално, единственото нешто што сте во можност да пристап е микрофонот или фото апарат. 639 00:34:02,310 --> 00:34:04,730 Вие не сте во состојба да, јас Не мисли, користете Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Меѓутоа, ако се создаде песна во Pro Tools, 641 00:34:07,480 --> 00:34:12,710 извезуваат дека, може да се вчита дека овде, филтер, на пример, 642 00:34:12,710 --> 00:34:16,820 процес, кој и евиденција дека во една Аудио Destination-- или, no-- Сфера 643 00:34:16,820 --> 00:34:17,870 Процесор јазол. 644 00:34:17,870 --> 00:34:20,730 А потоа од таму, може да ги извоз, кој да SoundCloud, можете 645 00:34:20,730 --> 00:34:25,320 можеше да го испрати во е-маил, или се што ќе посакате од таму. 646 00:34:25,320 --> 00:34:31,159 >> Но, постои еден вид на мала бариера помеѓу правење музика на вашиот компјутер 647 00:34:31,159 --> 00:34:33,050 и правење на музика онлајн. 648 00:34:33,050 --> 00:34:37,940 >> Сем ЗЕЛЕНА: И тоа е не само за овој API. 649 00:34:37,940 --> 00:34:44,060 Тоа е безбедносна карактеристика на Chrome, и Мислам дека секој друг модерен интернет пребарувач. 650 00:34:44,060 --> 00:34:45,860 Пребарувачот е автономни. 651 00:34:45,860 --> 00:34:50,980 Така на пример, веб-страница може да не користете JavaScript за да го вклучите звукот 652 00:34:50,980 --> 00:34:54,190 на на вашиот јазик, на пример. 653 00:34:54,190 --> 00:34:58,120 Или тоа не може да се претвори вашиот компјутер исклучени. 654 00:34:58,120 --> 00:35:01,530 И не постои средно точка меѓу тие две работи, десно, 655 00:35:01,530 --> 00:35:05,960 па или имате комплетна апстракција, 656 00:35:05,960 --> 00:35:10,050 или ќе се отвори безбедност мааната на допуштајќи 657 00:35:10,050 --> 00:35:14,440 програмер со лоши намери направи што сакаат со вашиот лаптоп. 658 00:35:14,440 --> 00:35:18,104 А тоа е зошто Chrome е автономни. 659 00:35:18,104 --> 00:35:19,310 >> Хју Забриски: Да. 660 00:35:19,310 --> 00:35:20,840 Дали тоа има смисла? 661 00:35:20,840 --> 00:35:21,369 Кул, кул. 662 00:35:21,369 --> 00:35:23,160 Јас бев само ќе покаже пример на еден. 663 00:35:23,160 --> 00:35:25,118 Ова е доста како колку што може да се добие, во смисла 664 00:35:25,118 --> 00:35:26,950 на пристап до компјутерот на корисникот. 665 00:35:26,950 --> 00:35:30,180 Ако имаш USB тастатура вклучен во, можете да го користите нешто што се нарекува Веб 666 00:35:30,180 --> 00:35:32,180 MIDI API-то, од која нема да навистина зборува за тука, 667 00:35:32,180 --> 00:35:36,330 но ова е уште API, што е вградени во најмалку Chrome-- повторно, 668 00:35:36,330 --> 00:35:41,570 тоа е причината зошто ние го сакаме Chrome-- Мислам Firefox или Safari, 669 00:35:41,570 --> 00:35:44,300 ова е лесна работа да се google-- различни прелистувачи имаат 670 00:35:44,300 --> 00:35:46,917 различни поддршка за кои API-тие се имплементираат. 671 00:35:46,917 --> 00:35:49,875 Но, ако си сакал да го приклучиш во тастатура и да работат со таа информација, 672 00:35:49,875 --> 00:35:52,850 вид на прати тастатура информации во текот на компјутер 673 00:35:52,850 --> 00:35:57,620 а потоа ја користат таа на интернет, овој API е местото каде што сакате да се работи тоа. 674 00:35:57,620 --> 00:35:58,150 >> Кул. 675 00:35:58,150 --> 00:35:58,710 ВО РЕД. 676 00:35:58,710 --> 00:36:01,320 Така, брзо се движат тука. 677 00:36:01,320 --> 00:36:03,310 Како ќе се прават на време? 678 00:36:03,310 --> 00:36:04,210 >> ЗВУЧНИЦИ 1: Околу 15. 679 00:36:04,210 --> 00:36:05,543 >> Хју Забриски: 15 минути до крајот? 680 00:36:05,543 --> 00:36:06,160 Добро, кул. 681 00:36:06,160 --> 00:36:08,170 Па ние ќе се трка напред тука. 682 00:36:08,170 --> 00:36:13,500 >> Значи, во основа, главната поента на размислува за тоа како гасоводот 683 00:36:13,500 --> 00:36:16,430 е дека секој чекор во гасоводот е серија на аудио јазли. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Нашиот извор, да речеме, е осцилатор. 686 00:36:20,950 --> 00:36:23,380 Ние треба да се создаде осцилатор јазол. 687 00:36:23,380 --> 00:36:25,690 И дека е само вид на малку function-- 688 00:36:25,690 --> 00:36:30,460 и сите тие се со седиште надвор на аудио контекст тука. 689 00:36:30,460 --> 00:36:32,885 >> ПУБЛИКАТА: Кога го рече осцилатор, значи дека 690 00:36:32,885 --> 00:36:37,250 тоа е всушност буквално одејќи од две различни столбови и назад? 691 00:36:37,250 --> 00:36:41,170 >> Хју Забриски: Не, тоа е како дигитална репрезентација. 692 00:36:41,170 --> 00:36:42,740 Тоа е всушност е имплементирано во C ++. 693 00:36:42,740 --> 00:36:46,460 Јас не знам на очила за тоа како е тоа направено, 694 00:36:46,460 --> 00:36:48,500 Но, сето тоа е да работи како бинарни податоци. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Всушност, да. 697 00:36:52,370 --> 00:36:53,950 Што ќе се рече, можев Всушност, ако сте заинтересирани, 698 00:36:53,950 --> 00:36:56,533 Јас може да ви испрати малку повеќе информации за тоа како бранови 699 00:36:56,533 --> 00:37:00,181 се чуваат имаат дигитален формат. 700 00:37:00,181 --> 00:37:00,680 Добро, кул. 701 00:37:00,680 --> 00:37:03,120 >> Па ние сме генерирање тон како синус бранува или нешто слично, можеби 702 00:37:03,120 --> 00:37:04,190 440 Херц. 703 00:37:04,190 --> 00:37:05,830 Ние создаваме осцилатор. 704 00:37:05,830 --> 00:37:09,180 Ако сакаме да ја наместите јачината, ние поврзувајте ништо на GainNode, 705 00:37:09,180 --> 00:37:12,500 кои би можеле да се прави со .creategain. 706 00:37:12,500 --> 00:37:14,250 Која утврдува вашиот обем. 707 00:37:14,250 --> 00:37:17,820 Можете да го положат дека врз било на други options-- добро, 708 00:37:17,820 --> 00:37:20,300 па извор за аудио тампон јазол е каде што би можеле 709 00:37:20,300 --> 00:37:23,660 чувате МП3 дека сте натоварена во. 710 00:37:23,660 --> 00:37:27,670 >> Biquad филтерот за филтрирање ако сакате да ги преземе сите на база на 711 00:37:27,670 --> 00:37:29,630 на една песна, или нешто слично. 712 00:37:29,630 --> 00:37:32,450 Не дај Боже сакате да се земе база од една песна. 713 00:37:32,450 --> 00:37:36,980 И AudioDestination јазол е, пак, како, каде нашите финализација е. 714 00:37:36,980 --> 00:37:39,980 Ако сте некогаш заинтересирани за гледање сите различни можни опции, 715 00:37:39,980 --> 00:37:45,190 само одете на ливчето и нека на авто-заврши излезе. 716 00:37:45,190 --> 00:37:48,690 И ако не се создаде, ќе видите сите различни работи што можете да направите. 717 00:37:48,690 --> 00:37:50,398 Можете да креирате динамични скрипта процесори, 718 00:37:50,398 --> 00:37:52,940 Јас дури и не знаат што е што е, за мешање на спојувања задржани 719 00:37:52,940 --> 00:37:55,930 и канал трупци и сето тоа. 720 00:37:55,930 --> 00:37:56,430 Кул. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Така што ова е само еден пример на гасоводот. 723 00:38:01,390 --> 00:38:03,580 Па ние имаме три извори пристигнуваат. 724 00:38:03,580 --> 00:38:06,830 Можеби тоа се бранови, Можеби ова се MP3s. 725 00:38:06,830 --> 00:38:08,740 Еден се случува преку филтер, уште една 726 00:38:08,740 --> 00:38:12,404 се искривени друг нечиј поместување лево и десно. 727 00:38:12,404 --> 00:38:15,320 Можете да го направите сите видови на работи и сите тие се измешаат околу заедно, 728 00:38:15,320 --> 00:38:18,880 а потоа да излезе надвор на аудио на крајот, како дестинација. 729 00:38:18,880 --> 00:38:22,720 Ова е пример за тоа што повеќе комплицирани Веб Аудио кодот личи. 730 00:38:22,720 --> 00:38:26,720 Сте создавање на сите овие различни предмети право here-- 731 00:38:26,720 --> 00:38:27,706 Не сум сигурен за тоа. 732 00:38:27,706 --> 00:38:29,120 Не, тоа не зумирате. 733 00:38:29,120 --> 00:38:29,620 ВО РЕД. 734 00:38:29,620 --> 00:38:31,257 >> Сем ЗЕЛЕНА: Вие го контролирате, дојдете Ап. 735 00:38:31,257 --> 00:38:32,590 Хју Забриски: Контрола Scroll-- 736 00:38:32,590 --> 00:38:33,000 Сем ЗЕЛЕНА: Не, не. 737 00:38:33,000 --> 00:38:33,500 Control-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> Хју Забриски: О, контрола, дојдете? 740 00:38:38,140 --> 00:38:38,780 Ох, gotcha. 741 00:38:38,780 --> 00:38:41,480 Је. 742 00:38:41,480 --> 00:38:42,240 Леле, бе, бе. 743 00:38:42,240 --> 00:38:42,740 ВО РЕД. 744 00:38:42,740 --> 00:38:46,090 Јас нема да го направи тоа. 745 00:38:46,090 --> 00:38:48,300 >> Така да, во оваа прва секција тука, ќе го видите 746 00:38:48,300 --> 00:38:52,720 ние сме создавање на сите овие различни јазли надвор од контекст. 747 00:38:52,720 --> 00:38:54,980 Ние сме само нив piecing заедно во вториот дел 748 00:38:54,980 --> 00:38:56,980 од оваа функција наречена Поврзи. 749 00:38:56,980 --> 00:38:58,830 Тоа е навистина клучот функција во веб-аудио. 750 00:38:58,830 --> 00:39:01,930 Тоа само значи дека сте го направиле нешто со звукот во еден јазол, 751 00:39:01,930 --> 00:39:03,705 да го давате на следниот јазол. 752 00:39:03,705 --> 00:39:05,830 Значи ние треба на изворот, се поврзува со анализатор, 753 00:39:05,830 --> 00:39:09,140 анализаторот прави нешто со неа, тоа оди на дисторзија, и така натаму, 754 00:39:09,140 --> 00:39:12,725 и до дестинацијата на дното во право тука. 755 00:39:12,725 --> 00:39:13,225 Кул. 756 00:39:13,225 --> 00:39:14,640 Добро, така што ние ќе продолжиме понатаму. 757 00:39:14,640 --> 00:39:17,180 >> На pipeline-- повторно, овие се најчестите цевководи, 758 00:39:17,180 --> 00:39:21,300 па ние се зборува за сите овие работи како изобличување, panning, сите овие работи. 759 00:39:21,300 --> 00:39:24,280 Ако сте навистина заинтересирани со користење на нешта Pro Tools, 760 00:39:24,280 --> 00:39:25,820 тие веројатно ќе ве интересира. 761 00:39:25,820 --> 00:39:27,740 Ако не, можеби само сакате да го пуштите звукот, 762 00:39:27,740 --> 00:39:29,990 или можеби само сакаат да наместите јачината на звукот. 763 00:39:29,990 --> 00:39:35,270 Тоа се двете најчести вид на цевководи во аудио продукција. 764 00:39:35,270 --> 00:39:38,640 >> Повторно, на начини можете да го земе во како oscillator-- така, ајде 765 00:39:38,640 --> 00:39:42,460 направи демонстрација на тоа право овде. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Па ние ќе треба да се создаде едноставна аудио контекст тука, 768 00:39:52,225 --> 00:39:54,350 и од тоа што ние ќе да се создаде нашиот осцилатор. 769 00:39:54,350 --> 00:39:58,620 Така што е, пак, ние сме само требаше да се јавите Креирај осцилатор. 770 00:39:58,620 --> 00:40:07,030 Ние ќе треба да се постави на фреквенција кои, 440 херци, омилена на сите. 771 00:40:07,030 --> 00:40:13,290 Тогаш ние се поврзете дека до дестинацијата point-- кој е на говорникот, па 772 00:40:13,290 --> 00:40:15,750 контекст дестинација. 773 00:40:15,750 --> 00:40:21,400 Конечно, ние само да кажам, започнете со нула секунди од сега, и ние сме звучи? 774 00:40:21,400 --> 00:40:22,400 >> [ЅВОНЕЊЕ] 775 00:40:22,400 --> 00:40:24,980 >> Хју Забриски: Еве ќе одиме. 776 00:40:24,980 --> 00:40:25,940 Тоа е само синус бран. 777 00:40:25,940 --> 00:40:26,440 Добро, кул. 778 00:40:26,440 --> 00:40:28,274 А потоа ние ќе го сопрам тоа. 779 00:40:28,274 --> 00:40:30,520 >> ПУБЛИКАТА: Каде повратни информации дека доаѓаат од? 780 00:40:30,520 --> 00:40:31,250 >> Хју Забриски: На повратни информации? 781 00:40:31,250 --> 00:40:32,458 Ох, веројатно нашата микрофони. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Така да, тоа е како да го направи тоа. 784 00:40:35,470 --> 00:40:37,261 А всушност, ако имав Продолжив да го оперираат, можете 785 00:40:37,261 --> 00:40:39,540 би можеле да имаат фреквенција вредност како тој работи, 786 00:40:39,540 --> 00:40:43,320 па тоа е нешто забавно да се игра наоколу. 787 00:40:43,320 --> 00:40:44,930 Кул. 788 00:40:44,930 --> 00:40:46,600 Тоа е секогаш една прекрасна еден да се претстават. 789 00:40:46,600 --> 00:40:48,792 >> Сем ЗЕЛЕНА: Ние не мислам за тоа, не ние? 790 00:40:48,792 --> 00:40:50,500 Хју Забриски: Да, тоа е грозно еден. 791 00:40:50,500 --> 00:40:53,249 Така, тампон loading-- јас ќе се покаже Пример за тоа на самиот крај. 792 00:40:53,249 --> 00:40:55,090 Кој товари MP3. 793 00:40:55,090 --> 00:40:58,880 И микрофон, можете да користите само функција наречен Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 да побара пристап до на корисникот микрофон за таа информација. 795 00:41:03,240 --> 00:41:05,610 >> Еве филтрирање, јас ќе само да се движат од тоа. 796 00:41:05,610 --> 00:41:08,600 Ова е прилично високо ниво, но филтри само ви овозможи да се 797 00:41:08,600 --> 00:41:16,154 >> [Beeping] 798 00:41:16,154 --> 00:41:18,320 Филтрирање, исто така, ви овозможува да се создаде нешта како розева 799 00:41:18,320 --> 00:41:20,050 бучава, кафеава бучава, бел шум. 800 00:41:20,050 --> 00:41:24,330 Ако сакате да се создаде чиста бучава, која некои луѓе сакаат да се плеткаме околу со, 801 00:41:24,330 --> 00:41:27,490 можете да го користите Веб Аудио филтрирање за да го направите тоа. 802 00:41:27,490 --> 00:41:30,039 >> Аудио Panning-- па замислете ако сте пишување игра 803 00:41:30,039 --> 00:41:32,330 и сакате на звук за да звучи како што доаѓа, како, 804 00:41:32,330 --> 00:41:36,090 снимањето низ екранот, можете можете да го користите на швенк на аудио 805 00:41:36,090 --> 00:41:39,770 да се создаде овој вид на конус, која like-- тоа е прилично mathy, 806 00:41:39,770 --> 00:41:41,850 но тоа е всушност навистина кул ако добиете тоа не функционира, 807 00:41:41,850 --> 00:41:44,500 и има некои добри упатства за тоа можам да ти го испратам. 808 00:41:44,500 --> 00:41:46,400 Во суштина, можете да вид на создавање на звук 809 00:41:46,400 --> 00:41:50,480 нешто се случува од страна на во 3D начин. 810 00:41:50,480 --> 00:41:57,350 И ако имаш диџеј интерес, може да почне мешање и крстот бледнее песни. 811 00:41:57,350 --> 00:42:01,260 >> Ова е само некои многу основни код, во основа она што беше порано. 812 00:42:01,260 --> 00:42:06,140 Ваквото ограничување на обемот на осцилатор, за да можеме да се создаде нашиот осцилатор 813 00:42:06,140 --> 00:42:07,380 што создава бранови. 814 00:42:07,380 --> 00:42:09,940 Ние создаваме наша GainNode, постави нашиот фреквенција, 815 00:42:09,940 --> 00:42:14,170 а потоа поврзување на осцилатор на GainNode, кои потоа во основа менува 816 00:42:14,170 --> 00:42:16,760 колку сигнал е дозволено преку. 817 00:42:16,760 --> 00:42:20,467 Но, навистина, тоа е дигитален работа, така што е повеќе just-- је. 818 00:42:20,467 --> 00:42:23,550 Тоа не е она што всушност се случува, но тоа е она што се случува во реалниот живот 819 00:42:23,550 --> 00:42:24,393 со добивка. 820 00:42:24,393 --> 00:42:27,258 >> ПУБЛИКАТА: --quantization на параметарот волумен? 821 00:42:27,258 --> 00:42:28,174 Хју Забриски: Жал ми е? 822 00:42:28,174 --> 00:42:30,360 ПУБЛИКАТА: тоа е quantized параметар волумен? 823 00:42:30,360 --> 00:42:31,840 Хју Забриски: Да. 824 00:42:31,840 --> 00:42:34,620 И ова е една работа, јас сум навистина дефицитарни на мое знаење, 825 00:42:34,620 --> 00:42:38,010 како функционира добивка на дигитален ниво. 826 00:42:38,010 --> 00:42:40,140 Знам со реалните сигнали, тоа е во основа 827 00:42:40,140 --> 00:42:45,120 контролирање на тоа колку сте засилување на сигналот. 828 00:42:45,120 --> 00:42:47,017 Па, да. 829 00:42:47,017 --> 00:42:50,100 Јас ќе ви испратиме повеќе информации за тоа, бидејќи јас ќе бев љубопитна, всушност, 830 00:42:50,100 --> 00:42:51,099 да знаете повеќе за тоа. 831 00:42:51,099 --> 00:42:54,090 Но во основа на параметри се, еден е fold-- 832 00:42:54,090 --> 00:42:59,690 погласно signal-- и нула постои сигнали, или не ќе слушне секој звук. 833 00:42:59,690 --> 00:43:03,150 Ние ќе го прескокне демо време за тоа, бидејќи тоа е во основа она што беше порано. 834 00:43:03,150 --> 00:43:07,630 И повторно, Context.Destination е аудио дестинација јазол. 835 00:43:07,630 --> 00:43:08,360 Страшни, ОК. 836 00:43:08,360 --> 00:43:10,470 >> Па јас ќе одам да направите брзо две демо снимки. 837 00:43:10,470 --> 00:43:11,760 Како ќе се прават на време? 838 00:43:11,760 --> 00:43:12,640 >> ЗВУЧНИЦИ 1: околу 10 минути. 839 00:43:12,640 --> 00:43:13,130 >> Хју Забриски: 10 минути? 840 00:43:13,130 --> 00:43:13,630 Одлично! 841 00:43:13,630 --> 00:43:14,320 Страшни. 842 00:43:14,320 --> 00:43:19,010 >> Значи првиот Одам да не, се вика Мојата омилена песна. 843 00:43:19,010 --> 00:43:22,410 Значи ова е само еден малку HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Ние ќе треба да се имаат две копчиња на оваа страница се игра мојата омилена песна 845 00:43:25,510 --> 00:43:29,192 и да престане мојата омилена песна. 846 00:43:29,192 --> 00:43:30,180 Јас ќе го промени тоа. 847 00:43:30,180 --> 00:43:32,110 >> ПУБЛИКАТА: Покријте вашиот микрофон. 848 00:43:32,110 --> 00:43:33,430 >> Хју Забриски: Да. 849 00:43:33,430 --> 00:43:36,300 И јас сум натоварен овде скрипта која basically-- 850 00:43:36,300 --> 00:43:38,520 и ова е навистина корисно за вчитување на MP3, 851 00:43:38,520 --> 00:43:41,820 така што ова го прави само вчитувањето MP3s начин побрзо. 852 00:43:41,820 --> 00:43:44,180 Тоа е во основа, само обвивка. 853 00:43:44,180 --> 00:43:48,737 Тоа само го прави процесот на поставувате во MP3s многу побрзо, 854 00:43:48,737 --> 00:43:51,570 инаку сте со користење на HTTP барањето, нешто како она што го правевте 855 00:43:51,570 --> 00:43:53,950 на тековната парче сет со серверот. 856 00:43:53,950 --> 00:43:55,950 Тоа е навистина грди, можете не сакам да го направи тоа. 857 00:43:55,950 --> 00:44:04,110 >> Па овој човек, Борис Smus, напиша навистина корисна малку алатка наречена BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Сите да направите е само да го положат контекст, ќе го помине list-- 859 00:44:08,780 --> 00:44:11,327 или, да, тоа е листа во JavaScript? 860 00:44:11,327 --> 00:44:12,160 Сем ЗЕЛЕНА: Низа. 861 00:44:12,160 --> 00:44:14,201 Хју Забриски: Ах, тоа е низа, тоа е во право. 862 00:44:14,201 --> 00:44:18,660 Тоа е низа на патеки за различни датотеки. 863 00:44:18,660 --> 00:44:21,990 А потоа ќе го помине во функција. 864 00:44:21,990 --> 00:44:25,530 Ова е повратен повик ние се зборува во врска со асинхрони вчитување. 865 00:44:25,530 --> 00:44:28,720 Дека ќе се вика еднаш датотеките вчитан. 866 00:44:28,720 --> 00:44:33,780 И таа функција што е повикана кога датотеката натоварени зема како периметарот 867 00:44:33,780 --> 00:44:35,840 низа на натоварен амортизери. 868 00:44:35,840 --> 00:44:37,990 Така што се случува тука. 869 00:44:37,990 --> 00:44:41,180 Во суштина, BufferList е ќе биде еден value-- 870 00:44:41,180 --> 00:44:46,380 или тоа се случува да биде низа Најпосле еден, што има во него во индексот 871 00:44:46,380 --> 00:44:51,320 нула целиот Loaded датотеката на MP3. 872 00:44:51,320 --> 00:44:53,320 Па што да правам кога ќе заврши вчитување е, јас едноставно 873 00:44:53,320 --> 00:44:57,430 создаде извор на пуфер, која е аудио тампон изворот јазол. 874 00:44:57,430 --> 00:45:03,410 Следниот чекор е јас се вчита во source.buffer како полно Loaded тампон 875 00:45:03,410 --> 00:45:06,740 од BufferList-- тоа е многу buffers-- 876 00:45:06,740 --> 00:45:10,255 а потоа да се поврзете дека аудио тампон до дестинацијата. 877 00:45:10,255 --> 00:45:12,380 Значи она што се случува да се направи е само едноставно да се стави на MP3 878 00:45:12,380 --> 00:45:15,260 директно преку на излезот, и тоа да почне веднаш 879 00:45:15,260 --> 00:45:18,010 по добивање на овој повик. 880 00:45:18,010 --> 00:45:21,660 >> Кул, ќе видиме тоа да се случи во акција. 881 00:45:21,660 --> 00:45:24,490 Моето [Беззвучен] тука, ајде да видиме. 882 00:45:24,490 --> 00:45:26,430 Па јас сум само ќе започне основните серверот. 883 00:45:26,430 --> 00:45:28,660 Тоа е нешто што што треба да направите ако сте 884 00:45:28,660 --> 00:45:32,490 Изработка на барањата за вчитување на датотеки. 885 00:45:32,490 --> 00:45:34,140 Одам да се започне со основни серверот. 886 00:45:34,140 --> 00:45:38,200 Ова е во основа го комплетниот Pset моментов во една линија, 887 00:45:38,200 --> 00:45:43,930 но тоа е само почеток сервер на порт 80/80. 888 00:45:43,930 --> 00:45:47,300 Значи одиме овде, ние ќе се вчита 80/80, 889 00:45:47,300 --> 00:45:49,110 ние ќе треба да се оди на Мојата Омилена песна. 890 00:45:49,110 --> 00:45:51,660 Значи, ако јас хит "Пушти ми Омилена песна "Токму сега, 891 00:45:51,660 --> 00:45:53,964 тоа се случува да се вчита на мојот Омилена песна и игра it-- 892 00:45:53,964 --> 00:45:55,880 [Музика - орлите "во брзите  Лејн "] 893 00:45:55,880 --> 00:46:00,490 --which се случува да биде "Животот во Брз Лејн "на орлите. 894 00:46:00,490 --> 00:46:06,346 Сега, јас може да го погоди "Стоп на мојот Омилена песна "и го повторувате. 895 00:46:06,346 --> 00:46:09,160 >> [Музика - орлите "во брзите  Лејн "] 896 00:46:09,160 --> 00:46:18,340 >> И ако јас одам во текот на конзола, бидејќи Се користи за глобалната променлива овде 897 00:46:18,340 --> 00:46:23,390 да ги пратите на оваа вредност, тоа всушност сега ќе биде призната во конзола. 898 00:46:23,390 --> 00:46:25,160 Така што автоматски создава за мене. 899 00:46:25,160 --> 00:46:29,991 Значи, тоа е игра во моментов, и јас едноставно може да се јавите source.stop () 900 00:46:29,991 --> 00:46:30,490 на тоа. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 Па, знаеш што? 903 00:46:35,860 --> 00:46:39,760 Само така вие момци сте слушнале ова song-- може да го препознаете оваа песна. 904 00:46:39,760 --> 00:46:41,801 >> [Музика - Рик Astley ", никогаш не е ќе ДАЈТЕ  ВИЕ СЕ "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [Музика - орлите "во брзите  Лејн "] 907 00:46:44,215 --> 00:46:46,195 Сега сме сите биле Rickrolled. 908 00:46:46,195 --> 00:46:50,155 Ред, одлично, се движат натаму. 909 00:46:50,155 --> 00:46:51,160 Кул. 910 00:46:51,160 --> 00:46:54,554 Така што ова е во основа на примерот на само како може да се вчита на MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [Музика - орлите "во брзите  Лејн "] 912 00:46:56,470 --> 00:46:59,590 --and го игра, и да престане и да го пушти. 913 00:46:59,590 --> 00:47:03,008 Јас би можеле да имаат направено многу повеќе [Беззвучен] 914 00:47:03,008 --> 00:47:07,570 >> За последен пат јас ќе се направи е, Јас ќе ви покажам еден [Беззвучен]. 915 00:47:07,570 --> 00:47:18,070 >> [Музички] 916 00:47:18,070 --> 00:47:21,800 >> Тоа е како, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Мислам дека, ако се сеќавам точно, Сум се кандидира во некои проблеми со .m4a, 918 00:47:26,450 --> 00:47:27,721 но не сум сигурен за тоа. 919 00:47:27,721 --> 00:47:28,470 Мислам mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [Музика - Рик Astley ", никогаш не е ќе ДАЈТЕ  ВИЕ СЕ "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> Ред, одлично. 924 00:47:36,500 --> 00:47:37,625 Не треба да се рече дека. 925 00:47:37,625 --> 00:47:40,570 Како и да е, здраво. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Па ние имаме овој отворен. 928 00:47:45,490 --> 00:47:52,320 Па сега сите го правам е, јас во основа создадена основна синтакса за креирање на музика. 929 00:47:52,320 --> 00:47:57,610 Значи, ако јас се направи такво нешто, да додадете Г4 на 1-2, што значи тоа е дека, 930 00:47:57,610 --> 00:48:00,950 додадете забелешка на пијано, Г4, кој е четвртата G 931 00:48:00,950 --> 00:48:02,680 Регистрација на пијано од дното. 932 00:48:02,680 --> 00:48:05,930 Значи ова е вид на MIDI зборува, така и за оние кои се музички базирани, 933 00:48:05,930 --> 00:48:07,860 ова е само MIDI белешки. 934 00:48:07,860 --> 00:48:10,090 >> ПУБЛИКАТА: Тоа е Г на Блискиот Ц, нели? 935 00:48:10,090 --> 00:48:11,840 >> Хју Забриски: Ова е Г над средно Ц, кој е во право. 936 00:48:11,840 --> 00:48:12,470 >> ПУБЛИКАТА: Над Блискиот Ц. 937 00:48:12,470 --> 00:48:13,345 >> Хју Забриски: Да. 938 00:48:13,345 --> 00:48:14,340 Всушност, да. 939 00:48:14,340 --> 00:48:16,131 Мислам дека јас всушност направени тоа е една [Беззвучен], 940 00:48:16,131 --> 00:48:18,860 па ова би можело да биде една октава над тоа. 941 00:48:18,860 --> 00:48:20,070 Ќе видиме. 942 00:48:20,070 --> 00:48:21,152 Ако јас хит Play-- 943 00:48:21,152 --> 00:48:22,110 [ПОВТОРЕНО ПИЈАНО ЗАБЕЛЕШКА] 944 00:48:22,110 --> 00:48:23,200 --we're ќе го слушаме ова. 945 00:48:23,200 --> 00:48:25,700 Идејата е дека тоа работи исто како и командната линија би, 946 00:48:25,700 --> 00:48:27,510 па ако одам нагоре и надолу на мојата тастатура, можете 947 00:48:27,510 --> 00:48:31,550 да се вратиш на претходната команди, што е многу корисно. 948 00:48:31,550 --> 00:48:35,136 А подолу е мојата листа на песни, кои се сите работи на јамка. 949 00:48:35,136 --> 00:48:38,260 >> ПУБЛИКАТА: Сте биле преземање на 88 Копче за тоа, нели? 950 00:48:38,260 --> 00:48:41,051 >> Хју Забриски: Прашањето беше, Јас сум претпоставувајќи 88 клучните тастатура, 951 00:48:41,051 --> 00:48:41,990 и да, јас сум. 952 00:48:41,990 --> 00:48:45,030 Она што го направив е што во основа се 88 примероци 953 00:48:45,030 --> 00:48:46,970 на пијано, по еден за секоја нота. 954 00:48:46,970 --> 00:48:49,180 И така секој пат ви слушнете некоја белешка од сега па натаму, 955 00:48:49,180 --> 00:48:57,550 кој е всушност јамка што изгледа like-- Ова е добивање одигра на јамка, 956 00:48:57,550 --> 00:49:00,120 па за секоја нота, ова се извршува. 957 00:49:00,120 --> 00:49:02,860 Што се случува е, јас создаде тампон повторно, 958 00:49:02,860 --> 00:49:06,010 Јас создаде профит јазол на јачината на гласот. 959 00:49:06,010 --> 00:49:08,240 Ова само навистина комплициран начин да се каже јас 960 00:49:08,240 --> 00:49:10,550 чување на тампон во source.buffer. 961 00:49:10,550 --> 00:49:13,160 Јас го даде на добивка, јас поврзете го на добивка, 962 00:49:13,160 --> 00:49:15,576 на зголемување на телесната е поврзан со излез, а потоа јас ќе ја играат. 963 00:49:15,576 --> 00:49:20,735 Па тоа е вид на процесот за преземање на изворот на тампон. 964 00:49:20,735 --> 00:49:24,820 >> ПУБЛИКАТА: Може да ви навистина се земе дека сува на звукот и да ја направат влажни [Беззвучен]? 965 00:49:24,820 --> 00:49:26,260 >> Хју Забриски: Можете да, да. 966 00:49:26,260 --> 00:49:29,260 Има ре-глагол, има одлагање, дисторзија. 967 00:49:29,260 --> 00:49:33,260 Вие во основа може да се стави нешто во помеѓу со тоа, што сендвич of-- добро, 968 00:49:33,260 --> 00:49:37,660 Нафтоводот е подобра метафора, но можете да додадете нешто во тоа. 969 00:49:37,660 --> 00:49:38,200 Кул. 970 00:49:38,200 --> 00:49:40,280 >> Па јас ќе се стави крај на демонстрациите тука да ви даде чувство 971 00:49:40,280 --> 00:49:46,390 на само чиста бројот на пати можете може да работи таа функција на сите одеднаш. 972 00:49:46,390 --> 00:49:49,280 Па јас ќе одам да се отстрани оваа. 973 00:49:49,280 --> 00:49:59,110 Одам да се создаде генератор that-- во основа она does-- ова е навистина 974 00:49:59,110 --> 00:50:04,220 вид на комплицирани syntax-- но тоа е ќе генерира белешки на мува, 975 00:50:04,220 --> 00:50:06,601 и само да започнете ја репродукцијата како што им ги евалуира. 976 00:50:06,601 --> 00:50:07,392 [Interposing ПИЈАНО] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Па ние само може да се направи малку музика тука. 979 00:50:12,817 --> 00:50:13,608 [Interposing ПИЈАНО] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Па што оваа команда прави тоа, на пример, е 982 00:50:41,470 --> 00:50:46,910 што е потребно за оние три белешки за пијано, а потоа ги става на Б3. 983 00:50:46,910 --> 00:50:48,660 Оваа синтакса може да го направи малку повеќе смисла 984 00:50:48,660 --> 00:50:50,590 на оние кои имаат музичка подлога тука. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Можам да додадете тапан удар. 987 00:50:56,551 --> 00:50:57,050 Јас можам-- 988 00:50:57,050 --> 00:50:58,048 >> [Interposing ИНСТРУМЕНТИ] 989 00:50:58,048 --> 00:50:59,256 >> --just позанимавам со тоа. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> За да можете да make-- 992 00:51:13,474 --> 00:51:14,515 [Interposing ИНСТРУМЕНТИ] 993 00:51:14,515 --> 00:51:15,513 Што е малку повеќе досадни. 994 00:51:15,513 --> 00:51:16,554 [Interposing ИНСТРУМЕНТИ] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Така што случајно се додава сув кимвал на секој 16-ти белешка, со 16% 997 00:51:30,981 --> 00:51:31,481 [Беззвучен]. 998 00:51:31,481 --> 00:51:32,522 >> [Interposing ИНСТРУМЕНТИ] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Да, па на овој начин works-- тоа е секогаш во 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Interposing ИНСТРУМЕНТИ] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Да, па четири четвртини, и 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Interposing ИНСТРУМЕНТИ] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Значи во просек, ќе добиете 60% на прегледи на 16-то белешки. 1008 00:52:33,780 --> 00:52:35,990 >> Относнотова, ова беше само вид за да ја покажат 1009 00:52:35,990 --> 00:52:39,780 некои работи што можете да изгради со веб Аудио API. 1010 00:52:39,780 --> 00:52:43,840 Тоа е навистина моќна, тоа е навистина брзо, и можете да направите многу интересни нешта 1011 00:52:43,840 --> 00:52:44,340 со тоа. 1012 00:52:44,340 --> 00:52:51,260 Значи, повторно, било какви прашања што ги имате, Е-myself-- Hugh-- или Сем, 1013 00:52:51,260 --> 00:52:55,869 и искрено, Google има еден тон добри ресурси. 1014 00:52:55,869 --> 00:52:56,660 Последни прашања? 1015 00:52:56,660 --> 00:52:57,970 Је. 1016 00:52:57,970 --> 00:53:00,790 >> ПУБЛИКАТА: Значи, можете да пристапите до со вграден микрофон. 1017 00:53:00,790 --> 00:53:03,089 Што ако си сакал да користете подобар микрофон? 1018 00:53:03,089 --> 00:53:05,380 Хју Забриски: Ако сакаше за подобрување на користењето микрофон? 1019 00:53:05,380 --> 00:53:11,320 Значи, повторно, ова е дел од апстракција помеѓу Хром 1020 00:53:11,320 --> 00:53:12,950 и остатокот од вашиот компјутер. 1021 00:53:12,950 --> 00:53:18,950 Освен ако тоа е на располагање преку на API, како веб-MIDI API-то, 1022 00:53:18,950 --> 00:53:22,030 што веројатно може да се најдат некои хакови, но генерално не како изводливо. 1023 00:53:22,030 --> 00:53:25,300 >> Сем ЗЕЛЕНА: Можете да also-- сите Хром знае 1024 00:53:25,300 --> 00:53:28,820 е она што вашиот микрофон стандардно е, и пристапи кои. 1025 00:53:28,820 --> 00:53:33,410 Значи, ако сте имале микрофон би можеле поставени како микрофон стандардно компјутерот, 1026 00:53:33,410 --> 00:53:35,990 можете да имате пристап до него на тој начин и тоа најверојатно ќе работи. 1027 00:53:35,990 --> 00:53:37,490 Хју Забриски: Тоа е добра поента. 1028 00:53:37,490 --> 00:53:39,656 Јас никогаш не сум пробал, но можеби ќе можете да се вид 1029 00:53:39,656 --> 00:53:45,700 of-- ако ви се пренасочува на внесување на звучници, можеби ќе можете да го стори тоа, да. 1030 00:53:45,700 --> 00:53:48,360 >> Последни прашања? 1031 00:53:48,360 --> 00:53:49,340 Кул. 1032 00:53:49,340 --> 00:53:51,680 И ви благодарам момци толку многу за гледање. 1033 00:53:51,680 --> 00:53:52,199 Јас сум Хју. 1034 00:53:52,199 --> 00:53:52,990 Сем ЗЕЛЕНА: Јас сум Сем. 1035 00:53:52,990 --> 00:53:55,410 Хју Забриски: И ова е CS50. 1036 00:53:55,410 --> 00:53:56,767