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 [МУЗИКА - орли, "Життя в Фаст  LANE "] 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 >> [МУЗИКА - орли, "Життя в Фаст  LANE "] 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 [МУЗИКА - орли, "Життя в Фаст  LANE "] 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 [МУЗИКА - орли, "Життя в Фаст  LANE "] 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