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, тое, што гэта азначае, што, 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 Я can-- 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