1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM ЗЕЛЕНЫЙ: Привет, всем. 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 SAM ЗЕЛЕНЫЙ И мы собираемся говорить сегодня о JavaScript и 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 а затем демо этот удивительный секвенсор Проект он построил и показать вам код. 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 >> SAM ЗЕЛЕНЫЙ: Прохладный. 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 >> SAM ЗЕЛЕНЫЙ: Итак, первое, что в первую очередь. 22 00:00:54,960 --> 00:00:57,840 Так один из великих вещей о Web Audio 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 в том числе Chrome, 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-- если вы идете в Chrome и вы посмотрите на любой веб-странице, 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, или на ID. 40 00:01:53,720 --> 00:01:59,260 И просто так, мы можем тип команды здесь, как Clear, 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 Есть много больших ресурсов о Web Audio 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-в, все такого рода вещи, 74 00:03:35,586 --> 00:03:40,110 и что, безусловно, расширил спектр функциональности, который был доступен. 75 00:03:40,110 --> 00:03:45,370 Но сделать пользователю установить плагин, безусловно, 76 00:03:45,370 --> 00:03:48,480 Недостаток в том числе Flash, в вашем приложении, не так ли? 77 00:03:48,480 --> 00:03:52,410 Потому что тогда вы на иждивении Пользователь происходит и найти этот плагин, 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 И, как он покажет вам Через Web Audio 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 >> SAM ЗЕЛЕНЫЙ: Это краткое некоторые из ограничений 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 Это изначально создает целое переменная-- 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 Так переменные области видимости, как правило в фигурные скобки внутри функции, 148 00:07:24,755 --> 00:07:27,005 а затем Есть также глобально контекстные переменные, которые 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 и C в частности, 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 >> SAM ЗЕЛЕНЫЙ: Так это тоже немного немного напуганный, по сравнению с C, 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 И снова только, чтобы еще раз подчеркнуть, Глобальный против местного variables-- 161 00:08:00,540 --> 00:08:03,457 очень похож на C. Вы могли бы две переменные с тем же именем, 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 SAM ЗЕЛЕНЫЙ: Нет, я просто пытается увеличить. 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 инициализации, 187 00:09:19,600 --> 00:09:22,570 у нас есть VAR инициализации. 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 для кого-то, кто собирается от А фон С. Есть функции 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 >> В то время как на следующей строке, мы видим, ах, вот переменная называется "туРипсЫоп," 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 Причина того, что отличается чем С, что 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 SAM ЗЕЛЕНЫЙ: Так Вопрос был, что происходит 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 >> SAM ЗЕЛЕНЫЙ: Который может на самом деле быть удобно, если вы 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 ("привет"). 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 SAM ЗЕЛЕНЫЙ: Да. 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 SAM ЗЕЛЕНЫЙ: Так console.log это как Printf, 259 00:12:52,970 --> 00:12:59,240 так что если у меня есть эта console.log ("привет"), и я призываю, что строка "привет" 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 >> SAM ЗЕЛЕНЫЙ: Так возвращаясь к этому 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 f1 занимает в качестве аргумента, а затем внутри 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 где мы хотели сделать что-то с структур, 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 Затем ключ называется Л.Н., со значением зеленый, 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 мы собираемся пройти весь путь обратно к этому объекту, перейдите к значению FN 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 SAM ЗЕЛЕНЫЙ: Таким образом, вопрос был, есть поиск делается из-за параметра 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 И тогда это будет выглядеть для входа называется Fn, и если он находит его, 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 SAM ЗЕЛЕНЫЙ: Конечно, давайте сделаем это. 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 >> SAM ЗЕЛЕНЫЙ: О, это раздражает. 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 теперь связано с объекта х, 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 Таким образом, последнее, что говорят о JavaScript 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 Это действительно удобно, потому что это позволяет нам сделать вещи с веб-Audio 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-- так что это Р-Е-Р-Л, 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 SAM ЗЕЛЕНЫЙ: Вопрос был, один лучше, чем другие. 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 Первый, это делает ваш код A много более читабельным, если все ваши 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 реструктурировать в один 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-- Web Audio встроена, 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 SAM ЗЕЛЕНЫЙ: Ладно, круто. 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 >> SAM ЗЕЛЕНЫЙ: Конечно. 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 Это все, что вы будете видите, как вы использовать Web Audio. 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 ++ код что на самом деле построен в Chrome 558 00:30:01,020 --> 00:30:04,470 и Firefox, и все эти браузеры. 559 00:30:04,470 --> 00:30:07,060 Таким образом, главная идея с Web Аудио, что вы должны 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 Это структура, это объект здесь, и он хранит информацию 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 >> SAM ЗЕЛЕНЫЙ: И это не только в этом 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 И вот почему Хром является самодостаточным. 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 хранить MP3, что вы загрузили в. 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 Может быть, это сигналы, может быть, это МР3. 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 >> SAM ЗЕЛЕНЫЙ: Вы делаете Control, прокрутки вверх. 735 00:38:31,257 --> 00:38:32,590 Хью Забриски: Управление Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM ЗЕЛЕНЫЙ: Нет, нет. 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 О, Гоча. 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 Мы просто складывая их вместе во второй части 748 00:38:54,980 --> 00:38:56,980 с помощью этой функции под названием Connect. 749 00:38:56,980 --> 00:38:58,830 Это действительно ключ функция в Web Audio. 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 таким образом, мы говорим о всех этих вещах, как искажения, панорамирование, все это мелочи. 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 >> SAM ЗЕЛЕНЫЙ: Мы не сделали думаю о том, сделал ли? 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 >> [ЗВУКОВОЙ СИГНАЛ] 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 Вы можете использовать веб-Audio Фильтрация сделать. 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 И если у вас есть интерес DJ, вы можете начать смешивания и пересечь выцветания песни. 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 Но на самом деле, это цифровой вещь, так что это более просто-- да. 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 АУДИТОРИЯ: Это квантованный параметр объем? 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 так что это просто делает загрузкой файлов MP3 способ быстрее. 852 00:43:41,820 --> 00:43:44,180 Это в основном только обертка. 853 00:43:44,180 --> 00:43:48,737 Он просто делает процесс погрузки в МР3 гораздо быстрее, 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 SAM ЗЕЛЕНЫЙ: массив. 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 нулю всю загруженную файл в формате 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 как полный загруженного буфера 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 бывает "Жизнь в Фаст Лейн "на The Eagles. 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 >> [МУЗЫКА - Rick 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 --и играть, и остановить и запустить его. 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 >> [МУЗЫКА - Rick 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 Так что, если я что-то подобное, добавить g4 1 2, то, что это означает, что, 930 00:47:57,610 --> 00:48:00,950 добавить пианино к сведению, G4, что является четвертым 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 >> АУДИТОРИЯ: Это G на Ближнем C, верно? 935 00:48:10,090 --> 00:48:11,840 >> Хью Забриски: Это G выше средней С, это верно. 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 [ПОВТОРЯЮЩИХСЯ PIANO ПРИМЕЧАНИЕ] 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 [Реле PIANO] 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 [Реле PIANO] 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 он принимает эти три ноты для фортепиано, а затем помещает их на B3. 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 >> [Реле ИНСТРУМЕНТЫ] 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 [Реле ИНСТРУМЕНТЫ] 993 00:51:14,515 --> 00:51:15,513 Тот немного больше раздражает. 994 00:51:15,513 --> 00:51:16,554 [Реле ИНСТРУМЕНТЫ] 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 >> [Реле ИНСТРУМЕНТЫ] 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 [Реле ИНСТРУМЕНТЫ] 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 [Реле ИНСТРУМЕНТЫ] 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 некоторые из вещей, которые вы могли бы строить с веб-Audio 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 Итак, еще раз, любые вопросы, у вас, E-mail 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 Итак, еще раз, это является частью абстракция между Chrome 1020 00:53:11,320 --> 00:53:12,950 и остальная часть вашего компьютера. 1021 00:53:12,950 --> 00:53:18,950 Если это не доступно через АНИ, как веб-MIDI API, 1022 00:53:18,950 --> 00:53:22,030 Вы, вероятно, может найти некоторые хаки, но, как правило, не, как это осуществимо. 1023 00:53:22,030 --> 00:53:25,300 >> SAM ЗЕЛЕНЫЙ: Вы можете 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 SAM ЗЕЛЕНЫЙ: Я Сэм. 1035 00:53:52,990 --> 00:53:55,410 Хью Забриски: И это CS50. 1036 00:53:55,410 --> 00:53:56,767