1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN: Tere, kõigile. 3 00:00:07,170 --> 00:00:08,640 Tere tulemast meie seminar. 4 00:00:08,640 --> 00:00:10,009 Minu nimi on Sam. 5 00:00:10,009 --> 00:00:11,050 Hugh Zabriskie: ma olen Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM GREEN: Ja me ei kavatse rääkida täna umbes JavaScript ja Web Audio API. 7 00:00:17,420 --> 00:00:21,180 Just hakata läbi, see on ülevaade Meie päevakorra seminar. 8 00:00:21,180 --> 00:00:25,350 Me läheme alustada räägivad miks sa peaksid olema huvitatud Web 9 00:00:25,350 --> 00:00:30,130 Audio API, miks on JavaScript keel, mida vajame seda, 10 00:00:30,130 --> 00:00:32,619 ja siis räägime JavaScript essentials-- nii nagu, 11 00:00:32,619 --> 00:00:34,800 sõelub mõned põhitõdesid keeles 12 00:00:34,800 --> 00:00:37,290 ja siis räägime audio API kõrgel tasemel. 13 00:00:37,290 --> 00:00:41,140 Siis, Hugh räägib mõned etappide audio tootmist 14 00:00:41,140 --> 00:00:45,509 ja siis demo selles awesome sequence Projekti ta ehitas ja näitan sulle koodi. 15 00:00:45,509 --> 00:00:48,050 Ja siis, me peame aeg küsimused lõpus inimestele 16 00:00:48,050 --> 00:00:49,593 kes siin elavad. 17 00:00:49,593 --> 00:00:50,540 >> Hugh Zabriskie: Cool. 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN: Cool. 19 00:00:50,990 --> 00:00:51,383 >> Hugh Zabriskie: Cool. 20 00:00:51,383 --> 00:00:52,170 Ma varundada. 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN: Nii, asjad kõigepealt. 22 00:00:54,960 --> 00:00:57,840 Nii et üks suuri asju umbes Web Audio API 23 00:00:57,840 --> 00:01:00,480 on see, et seal ei ole loodud vajalik. 24 00:01:00,480 --> 00:01:04,230 Ravim sisse ehitatud Kõige kaasaegsete brauseritega, 25 00:01:04,230 --> 00:01:08,630 sealhulgas Chrome, Edge, terve kamp others-- kõik need, 26 00:01:08,630 --> 00:01:12,650 et suur osa inimesed kasutavad täna. 27 00:01:12,650 --> 00:01:14,807 Seega ei ole loodud, kõrvale lihtsalt saada 28 00:01:14,807 --> 00:01:16,890 veebiserver läheb, sest teil alustada tööd 29 00:01:16,890 --> 00:01:18,420 oma projekti, mis on suurepärane. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Soovitame päris tugevalt, et te 32 00:01:24,190 --> 00:01:26,530 Chrome'i kasutamist JavaScript veebi arengut, 33 00:01:26,530 --> 00:01:30,260 lihtsalt sellepärast, et selle arendaja vahendid on tõesti tugev. 34 00:01:30,260 --> 00:01:33,220 Näitena just see, mida me mõtleme öeldes avada Teie JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- kui te lähete Chrome ja te vaatate tahes veebilehe, 36 00:01:38,600 --> 00:01:43,897 ja klõpsata hiire vasaku nupuga Kontrollige Element, ja seejärel 37 00:01:43,897 --> 00:01:46,730 te lähete see väike rippmenüü siin ja klõpsate Console, 38 00:01:46,730 --> 00:01:50,660 näed, mida avab tundub palju nagu käsureale, et sa 39 00:01:50,660 --> 00:01:53,720 võib näha Mac, või ID. 40 00:01:53,720 --> 00:01:59,260 Ja just niimoodi, saame käske siin, nagu Selge 41 00:01:59,260 --> 00:02:01,350 ja teised käsud niimoodi. 42 00:02:01,350 --> 00:02:04,267 Me ei saa luua muutujaid, nagu me näeme hiljem JavaScript. 43 00:02:04,267 --> 00:02:07,100 Ja nii me saame midagi teha JavaScript saame teha konsooli, 44 00:02:07,100 --> 00:02:11,430 ja see on super mugav viis alustada mängides API 45 00:02:11,430 --> 00:02:15,760 ja saada rahul JavaScript õigus ära nahkhiir. 46 00:02:15,760 --> 00:02:18,290 No loodud vajalik, mis on tõesti kena. 47 00:02:18,290 --> 00:02:18,790 Cool. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Awesome. 50 00:02:22,880 --> 00:02:24,780 >> Nii lihtsalt üks asi veel lisada. 51 00:02:24,780 --> 00:02:27,780 Kui teil on mingeid questions-- on paljud teist, kes ei ole siin elada, 52 00:02:27,780 --> 00:02:31,232 emaili us-- neid on meie e-posti aadresse. 53 00:02:31,232 --> 00:02:33,190 Kui teil on küsimusi sa ei taha küsida meilt, 54 00:02:33,190 --> 00:02:36,160 nagu, oh mul viga minu koodi või midagi 55 00:02:36,160 --> 00:02:39,270 see on natuke täpsem, äkki google it esimene. 56 00:02:39,270 --> 00:02:42,340 Seal on palju suuri ressursse umbes Web Audio API seal. 57 00:02:42,340 --> 00:02:44,089 See on tõesti hästi dokumenteeritud ja see on 58 00:02:44,089 --> 00:02:47,194 kasutavad ton inimest tööstuse, ja inimesed, kes on lihtsalt 59 00:02:47,194 --> 00:02:48,610 hoone lõbusaid asju ise. 60 00:02:48,610 --> 00:02:51,306 Nii ei tohiks olla palju ressursse sinna. 61 00:02:51,306 --> 00:02:53,040 Awesome. 62 00:02:53,040 --> 00:02:56,100 >> Cool, miks veebiheli API? 63 00:02:56,100 --> 00:02:59,840 See skeem on natuke eraldumiskoe- viis 64 00:02:59,840 --> 00:03:04,100 heli veebis kasvanud aja jooksul. 65 00:03:04,100 --> 00:03:13,080 Bgsound oli nagu originaal HTML tag et Internet Explorer toetamiseks kasutatakse. 66 00:03:13,080 --> 00:03:16,790 See on lubatud üksnes päris põhi helisid, funktsionaalsust ei olnud väga tugev, 67 00:03:16,790 --> 00:03:19,380 ja sa ei saa seda teha komplitseeritud sekveneerimise 68 00:03:19,380 --> 00:03:21,890 või kontrollida, kui heli hakkas ja lõpetas väga jõuliselt. 69 00:03:21,890 --> 00:03:23,930 Niisiis, see ei olnud eriti hästi arenenud. 70 00:03:23,930 --> 00:03:27,470 Siis pärast seda, Flash tuli along-- mis 71 00:03:27,470 --> 00:03:31,712 Ma olen kindel, et te poisid on kõik tuttavad koos Flash-- võibolla mitte, kuidas see toimib, 72 00:03:31,712 --> 00:03:32,920 aga sa oled kindlasti näinud. 73 00:03:32,920 --> 00:03:35,586 Sa pead uuendama oma Flash Plug-in, kõik sellist kraami, 74 00:03:35,586 --> 00:03:40,110 ja et kindlasti laiendanud funktsionaalsuse, mis oli kättesaadav. 75 00:03:40,110 --> 00:03:45,370 Aga tegemise kasutaja installida plug-in on kindlasti 76 00:03:45,370 --> 00:03:48,480 puuduseks sealhulgas Flash Teie taotlus, eks? 77 00:03:48,480 --> 00:03:52,410 Sest siis oled sõltuvuses kasutaja läheb ja leida seda plug-in, 78 00:03:52,410 --> 00:03:54,660 ja ilmselt on välja välja käesoleva lisatööd 79 00:03:54,660 --> 00:03:56,640 nad peavad võtma, et kasutada oma app. 80 00:03:56,640 --> 00:04:01,270 Ja siis võiks uuendus et sa murda kogu oma taotluse 81 00:04:01,270 --> 00:04:03,880 ja see jõuab on õudusunenägu arendaja, liiga. 82 00:04:03,880 --> 00:04:06,230 Nii et oli barrikaad. 83 00:04:06,230 --> 00:04:10,480 >> Ja siis pärast seda tuli mööda, HTML audio sildi, mis 84 00:04:10,480 --> 00:04:16,579 on iseloomulik moodsam HTML-- mis Kindlasti lubatud palju rohkem asju, 85 00:04:16,579 --> 00:04:20,050 kuid isegi asju, mida võiks teha Oli natuke piiratud ainult 86 00:04:20,050 --> 00:04:22,730 tulemusena asjad et HTML oli võimeline. 87 00:04:22,730 --> 00:04:26,060 Nii et kui JavaScript API, veebiheli API, 88 00:04:26,060 --> 00:04:29,290 sai standard tavad brauserid, 89 00:04:29,290 --> 00:04:32,490 et tõesti laiendanud komplekt võimalusi arendajad 90 00:04:32,490 --> 00:04:36,590 tõesti sattuda hoone cool stuff veebi. 91 00:04:36,590 --> 00:04:39,220 Pikka aega on olnud olnud väga jõuline tööriistad 92 00:04:39,220 --> 00:04:44,360 emakeelena audio rakendusi, like-- igaüks teab Garage, 93 00:04:44,360 --> 00:04:48,360 ja siis ilmselt on rohkem professionaalse audio segamine rakendused 94 00:04:48,360 --> 00:04:49,640 ja sellist kraami. 95 00:04:49,640 --> 00:04:52,690 Aga seal ei olnud väga hea Cloud-- ole 96 00:04:52,690 --> 00:04:55,811 Cloud, jah, ma arvan, Cloud-- veebipõhine platvorm 97 00:04:55,811 --> 00:04:58,310 mis võimaldab arendajatel luua rakendusi inimestele 98 00:04:58,310 --> 00:05:00,570 teha audio segamine. 99 00:05:00,570 --> 00:05:03,960 Ja kui ta näitab teile Hiljem, veebiheli API 100 00:05:03,960 --> 00:05:07,470 võimaldab tõesti võimas asju juhtub tõesti lihtsalt, 101 00:05:07,470 --> 00:05:09,597 mis on päris lahe. 102 00:05:09,597 --> 00:05:12,680 Nii et juhise, miks sa peaks vaatama ülejäänud seminar, 103 00:05:12,680 --> 00:05:14,350 põhimõtteliselt. 104 00:05:14,350 --> 00:05:17,880 >> Ja nüüd, ma lähen rääkima mõned JavaScript-- lihtsalt põhielemendid 105 00:05:17,880 --> 00:05:20,240 keele, nii et me võime olla sama leht 106 00:05:20,240 --> 00:05:22,470 kui me räägime API natuke hiljem. 107 00:05:22,470 --> 00:05:23,260 Cool. 108 00:05:23,260 --> 00:05:26,192 >> Nii, see on kokkuvõte. 109 00:05:26,192 --> 00:05:27,150 Ma unustasin see oli siin. 110 00:05:27,150 --> 00:05:27,510 Jah. 111 00:05:27,510 --> 00:05:27,870 >> Hugh Zabriskie: Seal on kaks slaidid siin. 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN: See on kokkuvõte Mõnede piirangud 113 00:05:30,245 --> 00:05:35,220 teise siduva, vanad meetodid. 114 00:05:35,220 --> 00:05:37,828 Ja siis nüüd on meil neid asju. 115 00:05:37,828 --> 00:05:40,011 Cool. 116 00:05:40,011 --> 00:05:40,510 Awesome. 117 00:05:40,510 --> 00:05:43,200 >> Nii JavaScript tarvilikku. 118 00:05:43,200 --> 00:05:47,230 First things first, seal on päris oluline erinevus 119 00:05:47,230 --> 00:05:49,940 JavaScript versus a keeles nagu C, viisil 120 00:05:49,940 --> 00:05:52,050 et muutujad on loodud. 121 00:05:52,050 --> 00:05:55,634 Nii C, me harjunud kirjuta meie muutujad, eks? 122 00:05:55,634 --> 00:05:57,800 Ja ma ei mõtle tüüp nagu ka need, ma mõtlen tüübist 123 00:05:57,800 --> 00:06:01,900 nagu määrata neile liik-- tähendus nagu, int, float, char. 124 00:06:01,900 --> 00:06:05,210 In C, olime tõesti kasutada võttes luua muutuva 125 00:06:05,210 --> 00:06:09,690 ja siis kinni seda tüüpi jaoks kogu aeg, et me kasutame, et muutuja. 126 00:06:09,690 --> 00:06:13,990 Ja see ei pruugi veel hullem, aga see on ilmselt raskem kasutada. 127 00:06:13,990 --> 00:06:16,190 Üks lahe omadusi JavaScript on 128 00:06:16,190 --> 00:06:19,740 et muutujad, mida nimetatakse "dünaamiliselt trükitud", mis 129 00:06:19,740 --> 00:06:22,500 tähendab, et ma ei saa luua muutuja, mis süntaks, 130 00:06:22,500 --> 00:06:25,800 varX võrdub 5, näiteks. 131 00:06:25,800 --> 00:06:27,790 See algselt loob täisarv variable-- 132 00:06:27,790 --> 00:06:29,870 paremal all kapuuts somewhere-- kuid ma 133 00:06:29,870 --> 00:06:33,040 on võimalik muuta, et muutuja viidata string 134 00:06:33,040 --> 00:06:35,820 ei tee midagi, nagu luua uus muutuja. 135 00:06:35,820 --> 00:06:37,880 Ma ei pea muretsema umbes tüüpi muutmine. 136 00:06:37,880 --> 00:06:45,440 JavaScript teab, et tüüp on muutunud ja see juhtub dünaamiliselt. 137 00:06:45,440 --> 00:06:48,510 >> Nii on kasu ja puudused nagu, 138 00:06:48,510 --> 00:06:51,250 kui keegi, kes on töötanud JavaScript mõneks ajaks võiksid teada. 139 00:06:51,250 --> 00:06:53,600 On aegu, mil Sa võid kogemata 140 00:06:53,600 --> 00:06:57,720 tüübi muutmiseks varieeruva ja ei oska seda tüüpi muutmine, 141 00:06:57,720 --> 00:07:01,120 ja siis teie JavaScript võib crash-- või erand 142 00:07:01,120 --> 00:07:06,070 visata, sest sul on vale tüüpi, kui te ootate ühte tüüpi. 143 00:07:06,070 --> 00:07:07,040 Cool. 144 00:07:07,040 --> 00:07:11,470 >> Nii, scoping-- mis on nagu, kui me mäletan esimestel nädalatel käigus, 145 00:07:11,470 --> 00:07:15,420 viitab sellele, kuidas nähtav muutuv on ja millisel alal kood. 146 00:07:15,420 --> 00:07:18,400 Kõik, mis näeb välja väga sarnane et kuidas tundub C. 147 00:07:18,400 --> 00:07:24,755 Nii muutujad on scoped üldiselt jooksul looksulg jooksul funktsioon, 148 00:07:24,755 --> 00:07:27,005 ja siis on ka ülemaailmselt scoped muutujaid 149 00:07:27,005 --> 00:07:29,171 are-- kui sa kirjutada muutuja väljaspool funktsiooni, 150 00:07:29,171 --> 00:07:31,790 see saab olema nähtav kogu teksti. 151 00:07:31,790 --> 00:07:35,840 >> Üks vahe JavaScript ja C eelkõige 152 00:07:35,840 --> 00:07:40,280 on see, et kui te kuulutada ülemaailmne muutuja kuhugi tekstifaili 153 00:07:40,280 --> 00:07:43,324 see on nähtav igal funktsiooni jooksul, et tekstifaili. 154 00:07:43,324 --> 00:07:44,240 See on õige, eks? 155 00:07:44,240 --> 00:07:46,330 >> Hugh Zabriskie: Yep. 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN: Nii et ka natuke natuke funky võrreldes C, 157 00:07:49,120 --> 00:07:52,660 kus me alati pidi olema meie muutuja definitsioonid eespool kohad 158 00:07:52,660 --> 00:07:53,770 neid kasutati. 159 00:07:53,770 --> 00:07:57,957 See ei ole reegel, mis on jõustatud enam nii, natuke erinev. 160 00:07:57,957 --> 00:08:00,540 Ja jälle just reemphasize, globaalne versus kohalikud variables-- 161 00:08:00,540 --> 00:08:03,457 väga sarnane C. Sa võid olla Kahe muutuja sama nime, 162 00:08:03,457 --> 00:08:06,540 ja on üks nende nimed varjud by kohaliku muutuja kui üks neist 163 00:08:06,540 --> 00:08:07,546 oli ülemaailmne. 164 00:08:07,546 --> 00:08:09,420 Nii sarnane mingi probleeme, et mõned teist 165 00:08:09,420 --> 00:08:11,920 võib olla sattunud ka mõned sinu probleem seab siiani. 166 00:08:11,920 --> 00:08:14,450 Cool, et on muutujad. 167 00:08:14,450 --> 00:08:20,310 >> Kontrolli voolu, mis tähendab nagu, kui-else-- loogiline stuff-- ja silmad. 168 00:08:20,310 --> 00:08:24,510 Nii alustada, see on see, mida, kui-mujal avaldused nägema JavaScript. 169 00:08:24,510 --> 00:08:29,750 Paigutamine erinevaid asju liinidel ei ole oluline. 170 00:08:29,750 --> 00:08:34,409 See on vaid üks konventsioonid sellest, kuidas me struktuuri koodi. 171 00:08:34,409 --> 00:08:38,634 Just nagu C, siis on meil "kui" sulgudes avalduse. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 See ei ole see, mida ma mõtlesin teha. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Ma tegin seda jälle. 176 00:08:45,550 --> 00:08:46,841 >> Hugh Zabriskie: Proovin väljuda? 177 00:08:46,841 --> 00:08:49,770 SAM GREEN: Ei, ma olen lihtsalt üritan suurendada. 178 00:08:49,770 --> 00:08:50,660 See ei ole tähtis. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Niisiis, meil on "kui" avalduse ja meil on tingimus sees on 181 00:08:59,370 --> 00:09:03,130 et tulemus on õige või vale, ja mis määrab, kas või mitte 182 00:09:03,130 --> 00:09:04,510 meil siseneda et blokk koodi. 183 00:09:04,510 --> 00:09:09,860 Ja samuti, meil on teine-kui ja muud, nagu oleme harjunud C. 184 00:09:09,860 --> 00:09:14,010 >> Samuti peaks olema päris mugav õigus ära nahkhiir silmad, 185 00:09:14,010 --> 00:09:16,440 sest nad otsima palju nagu C näeb. 186 00:09:16,440 --> 00:09:19,600 Aga märkad jälle, et me on, selle asemel, et int initsialisatsioonistringi, 187 00:09:19,600 --> 00:09:22,570 meil var initsialisatsioonistringi. 188 00:09:22,570 --> 00:09:24,650 Ja ma arvan, et teil on olema ettevaatlik, et 189 00:09:24,650 --> 00:09:28,460 Kindlasti sa ei saa muuta väärtust I alates int string, 190 00:09:28,460 --> 00:09:31,780 Näiteks sellepärast, et läheb põhjustada veidraid sa ei pruugi 191 00:09:31,780 --> 00:09:32,280 oodata. 192 00:09:32,280 --> 00:09:35,750 Aga see peaks välja nägema päris tuttav, samuti. 193 00:09:35,750 --> 00:09:39,460 >> Nii et see on koht, kus asjad hakkavad saada natuke hull JavaScript 194 00:09:39,460 --> 00:09:44,920 keegi, kes läheb alates tausta C. On funktsioone 195 00:09:44,920 --> 00:09:48,070 JavaScript ja seal on üks viis kuulutada funktsioon, mis näeb välja 196 00:09:48,070 --> 00:09:50,361 omamoodi sarnane C ja siis seal on veel üks, et 197 00:09:50,361 --> 00:09:52,450 meenutab natuke teistsugune. 198 00:09:52,450 --> 00:09:54,930 >> Esimene versioon, mida me näeme siin, 199 00:09:54,930 --> 00:09:59,260 On selline C-like, kus ütleme, et see on funktsioon, 200 00:09:59,260 --> 00:10:01,490 anda talle nimi anda argumentide arv, 201 00:10:01,490 --> 00:10:05,150 ja seejärel sisu funktsiooni sisse minna neid, lokkis traksid. 202 00:10:05,150 --> 00:10:08,850 Me näeme näide argumente lihtsalt teine. 203 00:10:08,850 --> 00:10:13,420 >> Arvestades reale, näeme, oh, siin on muutuja nimega "myFunction" 204 00:10:13,420 --> 00:10:17,546 ja me võrduma selle sellel generic asi-- funktsioon-- et 205 00:10:17,546 --> 00:10:19,170 ei tundu olevat midagi toimub. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Põhjus, mis on erinev kui C on see, et JavaScript 208 00:10:26,080 --> 00:10:30,040 on see, mida nimetatakse funktsionaalne keel, või on funktsionaalsed elemendid, mis tähendab 209 00:10:30,040 --> 00:10:33,510 mis funktsioneerib on tegelikult väärtusi. 210 00:10:33,510 --> 00:10:39,520 Ja see tähendab, et saame Muutuva võrduma funktsioonina 211 00:10:39,520 --> 00:10:43,210 ja siis liigu selle funktsiooni ümber, andke seda argumendina, 212 00:10:43,210 --> 00:10:46,550 teha igasuguseid asju nagu, et funktsioone. 213 00:10:46,550 --> 00:10:49,682 >> Üks teine ​​asi note-- funktsioonid on kirjutatud 214 00:10:49,682 --> 00:10:51,140 teatud hulga argumente. 215 00:10:51,140 --> 00:10:54,056 Me näeme näide funktsiooni koos argument järgmisel slaidil. 216 00:10:54,056 --> 00:10:56,720 Aga JavaScript ei tee kisa, kui üritate 217 00:10:56,720 --> 00:10:59,330 kasutada funktsiooni vale argumentide arv. 218 00:10:59,330 --> 00:11:05,310 Seda saad lihtsalt teha oma parima, et teha teha, mis tähendab, et kui te kaotate, 219 00:11:05,310 --> 00:11:09,410 helistate funktsiooni, mis ootab argument ei argument, kõik, mis 220 00:11:09,410 --> 00:11:13,990 juhtub on see teen oma parima proovida ja täita selle koodi, 221 00:11:13,990 --> 00:11:16,541 ja kui ta lõpuks jookseb arvesse erand või viga, 222 00:11:16,541 --> 00:11:19,790 see viskan selle erandiga ja muudkui going-- mis on lihtsalt üks viise 223 00:11:19,790 --> 00:11:21,070 et JavaScript töötab. 224 00:11:21,070 --> 00:11:21,781 Jah. 225 00:11:21,781 --> 00:11:24,207 >> Sihtrühm: Mis juhtub, kui seal on liiga palju argumente? 226 00:11:24,207 --> 00:11:26,040 SAM GREEN: Nii Küsimus oli, mis juhtub 227 00:11:26,040 --> 00:11:27,380 kui on liiga palju argumente? 228 00:11:27,380 --> 00:11:29,171 Ja vastus on, et JavaScript hakkab lihtsalt 229 00:11:29,171 --> 00:11:32,120 ignoreerida need, mis on pärast need, mida ta ootab. 230 00:11:32,120 --> 00:11:36,420 See püüan täita funktsiooni helistada, nagu oleks see vaid kaks esimest. 231 00:11:36,420 --> 00:11:37,075 Õigus? 232 00:11:37,075 --> 00:11:37,700 >> Hugh Zabriskie: See on õige, jah. 233 00:11:37,700 --> 00:11:39,449 Samuti, kui liiga vähe argumente, 234 00:11:39,449 --> 00:11:42,640 see lihtsalt selline annab null kõigile argumendid ei ole mingit väärtused 235 00:11:42,640 --> 00:11:43,660 eest. 236 00:11:43,660 --> 00:11:45,810 >> SAM GREEN: mida saab tegelikult olla mugav, kui te 237 00:11:45,810 --> 00:11:49,060 tahan kirjutada funktsioon, mis võtab erineva hulga argumente. 238 00:11:49,060 --> 00:11:55,830 Te saate seada vaikimisi väärtused määratlus funktsiooni, 239 00:11:55,830 --> 00:11:59,060 ja see ei saa eirata tõsiasja, et sisend ei ole seal. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Nii et ma tahan rääkida natuke rohkem sellest viimasel kuul 242 00:12:04,000 --> 00:12:05,541 punkti, mis on funktsioonid on väärtused. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 See on näide, mis on natuke Häkellyttävä 245 00:12:11,010 --> 00:12:14,880 kui sa just lugesin seda ja ei usu selle kohta, mis toimub teist. 246 00:12:14,880 --> 00:12:17,910 Nii, vaatame just esimene rida siin. 247 00:12:17,910 --> 00:12:24,360 Meil on see muutuja, f1, et me ütleme on funktsioon, mis teeb selle asja. 248 00:12:24,360 --> 00:12:28,535 Ja sisu funktsiooni on console.log ("Tere!"). 249 00:12:28,535 --> 00:12:32,220 Sa ei mõtle console.log kui JavaScript samaväärne printf. 250 00:12:32,220 --> 00:12:35,510 Mis juhtub on see, kui me käivitada see kood oma brauseri 251 00:12:35,510 --> 00:12:37,530 see saab välja printida string. 252 00:12:37,530 --> 00:12:39,342 Ma ei näidata seda. 253 00:12:39,342 --> 00:12:42,300 Sihtrühm: log, aga ei tee seda tähenda, et see on salvestatud kusagil? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN: Jah. 255 00:12:42,550 --> 00:12:44,216 Nii et ma näitan sulle, mis juhtub. 256 00:12:44,216 --> 00:12:48,085 Nii et küsimus oli, mida ei logi tähendab? 257 00:12:48,085 --> 00:12:51,262 >> Hugh Zabriskie: Nii console.log on nagu printf C. 258 00:12:51,262 --> 00:12:52,970 SAM GREEN: Nii console.log on nagu printf, 259 00:12:52,970 --> 00:12:59,240 nii et kui mul on see console.log ("Tere!"), ja ma nimetan seda, string "tere" 260 00:12:59,240 --> 00:13:00,730 saab välja printida konsooli. 261 00:13:00,730 --> 00:13:03,340 See on konsooli. 262 00:13:03,340 --> 00:13:05,930 See on nagu printf, kus see prindib standard välja. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 Ja me näeme mõne hetke, kuid see on tegelikult 265 00:13:11,230 --> 00:13:16,529 viidates konsooli objekti, ja kutsudes välja viis, et objekti. 266 00:13:16,529 --> 00:13:18,320 Et tulen mõttekam minut, kui me 267 00:13:18,320 --> 00:13:20,660 saada räägime objektide JavaScript, 268 00:13:20,660 --> 00:13:22,509 aga ma arvasin, et ma lihtsalt mainida, et. 269 00:13:22,509 --> 00:13:24,300 Hugh Zabriskie: Oleme kasutatakse C, right-- 270 00:13:24,300 --> 00:13:27,580 me kirjutame suure programmi peamistes midagi teha. 271 00:13:27,580 --> 00:13:30,700 Aga mis on jahe JavaScript on teil on selline tõlk, et 272 00:13:30,700 --> 00:13:33,620 jookseb reaalajas, nii et see võtab vaid rida-realt, 273 00:13:33,620 --> 00:13:35,320 see lihtsalt tõlgendada, et kohapeal. 274 00:13:35,320 --> 00:13:37,403 Ja ta hoiab silma peal asju, mis on käivitada enne, 275 00:13:37,403 --> 00:13:41,620 nii et see on päris kasulik vahend kasuta console.log või konsooli, 276 00:13:41,620 --> 00:13:46,870 üldiselt, vaid mängivad ringi JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM GREEN: Nii läheb tagasi selle example-- teine ​​koodirida 278 00:13:51,420 --> 00:13:55,320 siin on päris Arusaamatu minu peas. 279 00:13:55,320 --> 00:13:59,790 Esimest korda lugesin seda, See oli nagu, mis toimub? 280 00:13:59,790 --> 00:14:04,580 Mis juhtub on see funktsiooni deklaratsioon ütleb, 281 00:14:04,580 --> 00:14:10,170 Mul on funktsioon nimega f2 mis on oodanud üks argument, f, 282 00:14:10,170 --> 00:14:12,990 ja siis nõuab, et Funktsiooni f, mille 283 00:14:12,990 --> 00:14:17,652 võeti vastu, et ta on argument ilma argumentideta ise. 284 00:14:17,652 --> 00:14:19,110 Niisiis, mis oleks võinud tekitada segadust. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Kui me mõistame seda f2 võtab f1 argumendina, ja siis sees F2, 287 00:14:28,400 --> 00:14:31,190 f saab nimetaks mis tähendab, et see koodirida, 288 00:14:31,190 --> 00:14:34,192 Pärast neid kahte rida kood, tulemused "tere" 289 00:14:34,192 --> 00:14:35,400 trükkimist konsooli. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Asjaolu, et me ei liigu funktsioonid umbes nagu väärtused 292 00:14:44,910 --> 00:14:47,870 jõuab on üks kõige võimsaid JavaScript 293 00:14:47,870 --> 00:14:49,700 programmeerimiskeelt. 294 00:14:49,700 --> 00:14:52,782 Väljaspool kõik awesome asju saab teha, 295 00:14:52,782 --> 00:14:54,990 niisama omadus keele poolest teed 296 00:14:54,990 --> 00:14:58,400 et see teeb asjad lihtsaks programmeerida ja võimaldab 297 00:14:58,400 --> 00:15:01,060 asju, mis ei ole eriti sobis hästi veebis 298 00:15:01,060 --> 00:15:04,500 funktsionaalne programmeerimine ja funktsionaalne programmeerimine aspekte JavaScript 299 00:15:04,500 --> 00:15:07,130 on üks kõige Võimas kontseptsioone, mis 300 00:15:07,130 --> 00:15:11,030 eksisteerib JavaScript-- kui te küsite minult. 301 00:15:11,030 --> 00:15:11,960 Cool. 302 00:15:11,960 --> 00:15:13,534 >> Niisiis, järgmine asi. 303 00:15:13,534 --> 00:15:16,450 Lisaks sellele, et funktsionaalne, seal on ka elemendid JavaScript 304 00:15:16,450 --> 00:15:20,510 mis on objektorienteeritud, mis on üks väga 305 00:15:20,510 --> 00:15:23,800 populaarne buzz sõnu infotehnoloogia. 306 00:15:23,800 --> 00:15:27,040 Objektorienteeritud programmeerimine on tõesti populaarne asi. 307 00:15:27,040 --> 00:15:34,210 JavaScript on versioon, et kus ma usun iga väärtus on ka 308 00:15:34,210 --> 00:15:41,475 objekti, mis tähendab, et iga objekti mähib koos mõnede väärtuste arv. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Nii väärtusi, mis on lihtsa ehitusega, nagu täisarv, nagu varX võrdne 5 311 00:15:49,750 --> 00:15:52,250 et objekt lihtsalt mähib et üks väärtus. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Aga me ei saa ka ette kujutada olukorda where-- me ei mõtle olukordi C 314 00:15:59,036 --> 00:16:00,910 kus me tahtsime teha midagi struktuurideks, 315 00:16:00,910 --> 00:16:03,285 näiteks, et mähib mitu väärtused kokku ja muudab 316 00:16:03,285 --> 00:16:05,870 see on tõesti lihtne läbida asju ümber. 317 00:16:05,870 --> 00:16:09,270 See, kui objekt on JavaScript. 318 00:16:09,270 --> 00:16:12,340 >> Oluline on meeles pidada, kui ma ütlen, et objektide pakitud 319 00:16:12,340 --> 00:16:15,330 mõned väärtuste arv kokku, mis funktsioneerib ka 320 00:16:15,330 --> 00:16:21,506 väärtusi, mis tähendab, et funktsioone saab ka sees JavaScript objekti. 321 00:16:21,506 --> 00:16:26,910 Ja sel põhjusel, et on oluline on see, et me sageli 322 00:16:26,910 --> 00:16:30,290 arvan, et kutsuda meetod objektil, mis on 323 00:16:30,290 --> 00:16:35,200 populaarne perspektiivis muudest Populaarseim objektorienteeritud keeles 324 00:16:35,200 --> 00:16:39,330 Üks erinevusi on selles, et kõik, et meetod on JavaScript 325 00:16:39,330 --> 00:16:47,270 on väärtus ladestunud objekti mis täidab mõned action-- võimalik 326 00:16:47,270 --> 00:16:51,850 kasutades muid väärtusi, mis on sees nimetatud objekti, kuid mitte tingimata. 327 00:16:51,850 --> 00:16:56,930 Nii võite ette kujutada olukorda, ma arvan ka natuke hull teed, 328 00:16:56,930 --> 00:17:02,990 kus sa helistasid meetod üks Objekt üheks eesmärgiks, näiteks. 329 00:17:02,990 --> 00:17:06,010 Nii, see on natuke funky niimoodi. 330 00:17:06,010 --> 00:17:09,369 >> Ja saate muuta ka meetodid mis on seotud mingi objektiga 331 00:17:09,369 --> 00:17:13,740 määrates, et meetodilt uue funktsiooni, mis on samuti 332 00:17:13,740 --> 00:17:18,250 päris erineb teistest objektorienteeritud keeles, kus 333 00:17:18,250 --> 00:17:21,410 kui me tunnistada objekt ja instantiate see, 334 00:17:21,410 --> 00:17:25,839 Me ei saa muuta meetodeid, mis on seotud objekti enam. 335 00:17:25,839 --> 00:17:28,680 Nii et on üsna erinevad. 336 00:17:28,680 --> 00:17:29,570 Cool. 337 00:17:29,570 --> 00:17:34,010 >> Nii et siin on näide, esimene, objekti tegevuses. 338 00:17:34,010 --> 00:17:36,390 See on see, mida nimetatakse üldine eesmärk, mis 339 00:17:36,390 --> 00:17:39,460 tähendab, et see ei ole mingit Eelkõige nimi, ei ole klassi, 340 00:17:39,460 --> 00:17:42,190 see on lihtsalt mõned pakkimine väärtusi. 341 00:17:42,190 --> 00:17:49,790 Ja nii, et näeb on meil see välimine paari looksulg siin 342 00:17:49,790 --> 00:17:57,950 mis näitavad, et JavaScript ja öelda, et see on objekt. 343 00:17:57,950 --> 00:18:02,130 Väärtused sees on on iga väärtused sees 344 00:18:02,130 --> 00:18:04,590 Objekti mis peaks pakkida kokku. 345 00:18:04,590 --> 00:18:09,180 Ja sees, et objekt, Siis on põhiväärtus paari, 346 00:18:09,180 --> 00:18:13,880 kus võti viitab nimetus väärtuse sees objekt, 347 00:18:13,880 --> 00:18:16,790 ja teine ​​side-- vastupidine koolon siin-- 348 00:18:16,790 --> 00:18:19,850 on tegelik väärtus et tuleks säilitada. 349 00:18:19,850 --> 00:18:26,210 >> Nii et näete siin, et meil on võti nimega fn koos väärtus sam, 350 00:18:26,210 --> 00:18:29,430 järgneb koma, öeldes peale next entry. 351 00:18:29,430 --> 00:18:33,560 Siis võti nimega ln, mille väärtus on roheline, 352 00:18:33,560 --> 00:18:35,840 järgneb koma, millele järgneb "print" 353 00:18:35,840 --> 00:18:43,209 mis läheb on funktsiooni väärtus et kavatseb teha seda rida koodi. 354 00:18:43,209 --> 00:18:45,500 Võtame samm tagasi ja lahti, mis siin toimub. 355 00:18:45,500 --> 00:18:47,280 Nii et see on natuke keeruline, ja me näeme midagi uut 356 00:18:47,280 --> 00:18:48,071 esimest korda. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 NN "seda" märksõna on uus asi me näeme siin, ja mida see teeb 359 00:18:55,065 --> 00:19:00,540 on, viitab praegune vastuväiteid ulatusega, eks? 360 00:19:00,540 --> 00:19:03,990 Nii et kui me ütleme, see juhib kogu tee tagasi 361 00:19:03,990 --> 00:19:08,140 kogu see object-- kui me teeme this.fn, 362 00:19:08,140 --> 00:19:11,990 me läheme kogu tee tagasi Selle objekti, minge fn väärtus 363 00:19:11,990 --> 00:19:16,471 ja saada sam, tõmba see kõik viis tagasi, jääda siin, ja seejärel liikuda. 364 00:19:16,471 --> 00:19:19,838 >> Sihtrühm: Nii otsinguga, on et teha, sest parameetri 365 00:19:19,838 --> 00:19:20,621 definitsioon? 366 00:19:20,621 --> 00:19:23,870 SAM GREEN: Nii et küsimus oli, on ülekanne teha, sest parameetri 367 00:19:23,870 --> 00:19:24,727 definitsioon? 368 00:19:24,727 --> 00:19:25,435 Jah, kindlasti. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Mis juhtub siin tähendab, Selle dot ütleb, et JavaScript, 371 00:19:32,470 --> 00:19:39,990 OK, ma saan mingi väärtus selle objekti ennast. 372 00:19:39,990 --> 00:19:46,375 Ja siis vaatan kande nimetatakse fn, ja kui ta leiab, 373 00:19:46,375 --> 00:19:48,470 see naasen, et value-- nii, et see on sam. 374 00:19:48,470 --> 00:19:51,540 Aga ma oleks võinud ka kirjutada midagi, mis ei ole siin määratletud, 375 00:19:51,540 --> 00:19:54,090 ja siis oleks lihtsalt tagasi undefined-- mis 376 00:19:54,090 --> 00:19:58,250 on asi, mis JavaScript ei teha, mis võib olla kasu, 377 00:19:58,250 --> 00:20:03,190 aga see on also-- kui teete kirjaviga, see võib põhjustada imelik vigu. 378 00:20:03,190 --> 00:20:05,617 Nii see lihtsalt leidma mida iganes sa ütled seda leida 379 00:20:05,617 --> 00:20:07,700 ja see ei hakka kaevata, kui ei leia seda. 380 00:20:07,700 --> 00:20:11,390 See lihtsalt öelda, ma ei ole leida, ja seejärel liikuda. 381 00:20:11,390 --> 00:20:17,581 Seega oleks defineerimata, pluss tühi, pluss perekonnanimi. 382 00:20:17,581 --> 00:20:18,080 Jah. 383 00:20:18,080 --> 00:20:21,070 Ja siis näeme, et kui me võiks siis minna ja access-- 384 00:20:21,070 --> 00:20:25,450 ja me nimetame tf.print () sulgudesse. 385 00:20:25,450 --> 00:20:30,000 See saab helistada, et print funktsiooni ei argumendid, eks? 386 00:20:30,000 --> 00:20:34,490 Aga kui me lihtsalt ütles tf.print () semikooloniga, ilma sulgudes, 387 00:20:34,490 --> 00:20:37,480 kõik, mis oleks teinud on tõmmata välja funktsiooni väärtus, 388 00:20:37,480 --> 00:20:40,609 aga tegelikult ei nimetanud. 389 00:20:40,609 --> 00:20:41,162 Cool. 390 00:20:41,162 --> 00:20:42,870 Hugh Zabriskie: kas teeme objekti? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: Muidugi, teeme seda. 392 00:20:44,161 --> 00:20:48,750 Nii et ma ei liiguta seda Näiteks konsooli. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Me võime ette kujutada, et mul on objekt. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Nii et see on lihtne objekt. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 See on objekt, mis sisaldab kahte väärtused kaks võtit, kaks peamist väärtust 399 00:21:11,050 --> 00:21:12,710 paari. 400 00:21:12,710 --> 00:21:21,850 Nii et ma ei siis juurde salvestatud väärtuse sees Selle objekti tehes x.x1, 401 00:21:21,850 --> 00:21:23,400 näiteks, ja ma saan 1 tagasi. 402 00:21:23,400 --> 00:21:29,590 Samuti x.x2, saad selle väärtuse tagasi. 403 00:21:29,590 --> 00:21:33,330 >> Ja nüüd tõesti lahe asi on, ma ei saa tegelikult midagi lisada selle objekti 404 00:21:33,330 --> 00:21:34,316 pärast lõin ta. 405 00:21:34,316 --> 00:21:36,315 Nii võite ette kujutada, olgem et mul on funktsioon. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Hugh Zabriskie: Sa pead tegema Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN: Oh, see on tüütu. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Mida see ei meeldi? 411 00:22:04,324 --> 00:22:04,824 Oh. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Siin me läheme. 414 00:22:08,691 --> 00:22:09,190 Cool. 415 00:22:09,190 --> 00:22:12,840 >> Nii et ma olen lihtsalt loodud Selle funktsiooni f, mis 416 00:22:12,840 --> 00:22:17,590 läheb minna praeguse objekti ja printida this.x1. 417 00:22:17,590 --> 00:22:20,330 Nii et kui ma lihtsalt helistada f poolt ise midagi läheb 418 00:22:20,330 --> 00:22:26,970 juhtuda, paremale, sest puudub x1 valdkonnas objekt see viidates. 419 00:22:26,970 --> 00:22:39,710 Aga kui ma ütlen, x.f = f, ja siis ma helistada x.f (), ma lähen tagasi 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 See f funktsioon on nüüd seostatud objekti x, 422 00:22:46,530 --> 00:22:51,800 mis on oluline nimetada x1 seotud väärtus 1, 423 00:22:51,800 --> 00:22:54,570 Nii et kui me nimetame this.x1, see on leiame, mida ta otsib, 424 00:22:54,570 --> 00:22:56,450 ja oleks võimalik printida väärtus välja. 425 00:22:56,450 --> 00:22:58,700 Nii see on lihtsalt üks näide on mingi hull asju 426 00:22:58,700 --> 00:23:01,190 saate teha objektid JavaScript. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Nii et versioon oli geneeriline versioon, tähendus 429 00:23:07,560 --> 00:23:13,780 et oleme loonud objekti, kasutades seda ümarsulgudesse notation-- traksidega märke, 430 00:23:13,780 --> 00:23:16,880 rather-- ja see on mugav, kui me lihtsalt tahame 431 00:23:16,880 --> 00:23:21,440 Ühel juhul konkreetse objekti, kuid Mis siis, kui me tahame olla rohkem kui üks 432 00:23:21,440 --> 00:23:22,210 sama liiki? 433 00:23:22,210 --> 00:23:24,440 Ja vastus sellele Küsimus on, on asju 434 00:23:24,440 --> 00:23:26,760 nimetatakse klasside JavaScript samuti. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Me ei saa luua funktsioon, mis teeb mingi initsialiseerimise 437 00:23:36,420 --> 00:23:41,690 jaoks võõrkeha, ja me tahaks öelda, nagu, 438 00:23:41,690 --> 00:23:44,550 minu class-- nii nime taaskasutatavate object-- 439 00:23:44,550 --> 00:23:47,100 võrdub funktsiooni, mis seab selle üles. 440 00:23:47,100 --> 00:23:52,280 Mis siis oleks see ekvivalentne to loob objekti, mis 441 00:23:52,280 --> 00:23:55,930 oleks lihtsalt meeldib, lokkis traksidega, str, koolon, 442 00:23:55,930 --> 00:23:59,630 see on string, semikooloniga, lokkis traksidega. 443 00:23:59,630 --> 00:24:01,880 See oleks generic objekti me initsialiseerida, 444 00:24:01,880 --> 00:24:06,380 koos ühe erinevusega olemisega Järgmine rida loome prototüüp, mis 445 00:24:06,380 --> 00:24:11,190 tähendab, et see on vaikimisi võti, mis lisame meie objekt, mis 446 00:24:11,190 --> 00:24:13,970 on väärtus loetletud siin. 447 00:24:13,970 --> 00:24:20,570 See tähendab, et kui ma uue Näiteks selle MyClass objekti, 448 00:24:20,570 --> 00:24:27,440 see saab olema eelnevalt loodud sees see väärtus ehk tn ja teine ​​väärtus 449 00:24:27,440 --> 00:24:32,418 nimetatakse MyPrint, mis on saab olema funktsioon. 450 00:24:32,418 --> 00:24:32,918 Awesome. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Hea. 453 00:24:37,990 --> 00:24:40,710 Nii et viimane asi, mida öelda JavaScript 454 00:24:40,710 --> 00:24:46,430 on see, et see on tõesti kasulik, mida nimetatakse asünkroonne operatsioone. 455 00:24:46,430 --> 00:24:52,500 Asynchronous tähendab, et me võib oodata opereerimine 456 00:24:52,500 --> 00:24:57,870 lõpetada enne, kui me liikuma kohta, kuid edasi liikuda, kui me oodata 457 00:24:57,870 --> 00:24:59,690 ja siis on midagi juhtuda hiljem. 458 00:24:59,690 --> 00:25:03,480 Ja mida ma mõtlen, et on, siis Võib ette kujutada olukorda, kus 459 00:25:03,480 --> 00:25:06,850 saadate taotluse mõned web server kusagil, 460 00:25:06,850 --> 00:25:09,670 ja see läheb teile saata tagasi mõned suure tüki andmeid, eks? 461 00:25:09,670 --> 00:25:13,320 Ja teie kasutaja võiks ootama Vahepeal, et see juhtuks, 462 00:25:13,320 --> 00:25:15,200 ja midagi võiks olla toimub sel ajal. 463 00:25:15,200 --> 00:25:18,110 Aga see pole suurepärane disain, eks? 464 00:25:18,110 --> 00:25:20,214 Sa ei taha veebilehe külmutada. 465 00:25:20,214 --> 00:25:22,380 Mis siis, kui kasutaja soovib klõpsa rippmenüüst? 466 00:25:22,380 --> 00:25:24,870 See ei ole suur disain muster. 467 00:25:24,870 --> 00:25:29,290 Selle asemel, põhimõtteliselt mida JavaScript ei ei ütleb, 468 00:25:29,290 --> 00:25:31,870 OK, teeme seda operatsiooni asünkroonselt. 469 00:25:31,870 --> 00:25:36,520 Nii nagu oodake taustal ja siis kui toiming on tehtud, 470 00:25:36,520 --> 00:25:39,420 helistada tagasihelistamise funktsioon-- helistada mõne funktsiooni, 471 00:25:39,420 --> 00:25:43,800 ei mõned action-- märku anda, et operatsioon lootsime lõpetada 472 00:25:43,800 --> 00:25:45,520 on läbi. 473 00:25:45,520 --> 00:25:51,240 Ja põhjus, mis on super võimas on, me saame teha midagi, sooritama argument, 474 00:25:51,240 --> 00:25:54,440 midagi, ja siis ootama et midagi juhtuks. 475 00:25:54,440 --> 00:25:58,970 Siis, kui et midagi lõpetab, me nimetame tagasihelistamise. 476 00:25:58,970 --> 00:26:03,300 See on tõesti mugav, sest see võimaldab meil teha asju Web Audio API, 477 00:26:03,300 --> 00:26:07,490 Näiteks nagu laadige helifaili serveritega 478 00:26:07,490 --> 00:26:11,660 ilma ootama Kogu helifaili koormatud, 479 00:26:11,660 --> 00:26:14,440 mis oleks tõesti halb kasutaja kogemus. 480 00:26:14,440 --> 00:26:17,080 Cool. 481 00:26:17,080 --> 00:26:19,460 >> Paar õppematerjalis silumine, sest see 482 00:26:19,460 --> 00:26:23,682 on asi, mida sa lähed pead tegema osana oma projekti, garanteeritud. 483 00:26:23,682 --> 00:26:25,140 Mainisin JavaScript konsooli. 484 00:26:25,140 --> 00:26:27,550 See on super kasulik funktsioon kõik kaasaegsed brauserid, 485 00:26:27,550 --> 00:26:30,300 Ja meil on tõesti kutsun teid, et saada mugav kasutada oma konsooli, 486 00:26:30,300 --> 00:26:33,660 Kui sa tahad saada head JavaScript. 487 00:26:33,660 --> 00:26:36,320 See on super mugav silumist, kuid see on ka 488 00:26:36,320 --> 00:26:39,440 tõesti kasulik viinud kuidas kasutada API. 489 00:26:39,440 --> 00:26:41,950 See võimaldab tõesti lihtne eksperimenteerimise 490 00:26:41,950 --> 00:26:45,910 ilma et kirjutada mõned koodi ja seejärel kompileerida. 491 00:26:45,910 --> 00:26:47,500 Sa ei pea tegema kõiki neid samme. 492 00:26:47,500 --> 00:26:49,619 Sa võid kirjutada mõned koodi rida, 493 00:26:49,619 --> 00:26:52,410 ja siis saad kohest tagasisidet kas see koodirida 494 00:26:52,410 --> 00:26:55,230 worked-- väga mugav. 495 00:26:55,230 --> 00:26:59,760 >> Ja ka üks tehniline note-- JavaScript konsool on näide 496 00:26:59,760 --> 00:27:05,680 on REPL-- et on R-E-P-L, repl, mis tähistab lugeda, hinnata, 497 00:27:05,680 --> 00:27:06,180 print loop. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Sa lähed kirjutad mõned asjad aastal, siis saad lugeda, mida sa kirjutasid, 500 00:27:12,120 --> 00:27:17,280 see saab hinnata seda, ja see saab printida väljund, ja siis hakkan jälle. 501 00:27:17,280 --> 00:27:22,056 See võimaldab teil kiiresti minema ringid iterating, mis on väga lahe. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Ma arvan, et tõeline viimase note-- seda on tegelik viimase noodi, jah. 504 00:27:28,930 --> 00:27:30,780 Kuidas me tegelikult kasutada JavaScripti? 505 00:27:30,780 --> 00:27:34,040 Nii et kõigepealt saame importida kasutades skripti tag 506 00:27:34,040 --> 00:27:39,500 ülaosas või alaosas HTML file-- kuskil sees HTML-faili, 507 00:27:39,500 --> 00:27:40,440 tõesti. 508 00:27:40,440 --> 00:27:47,390 Ja jooksul script tag on kaks sub-viisid importiva JavaScript. 509 00:27:47,390 --> 00:27:51,370 Esimene on tarvis eraldi JavaScripti faili 510 00:27:51,370 --> 00:27:58,010 et me impordime tervikuna või omades ala koodi nagu skript 511 00:27:58,010 --> 00:28:00,290 alustada, ja siis kurakriips skripti lõppu. 512 00:28:00,290 --> 00:28:02,620 Ja siis me lihtsalt kirjutada JavaScript sees HTML faili. 513 00:28:02,620 --> 00:28:03,790 Need on kaks võimalust. 514 00:28:03,790 --> 00:28:05,165 Sa ei saa seda sees HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 Sihtrühm: Kas üks parem kui teine? 517 00:28:08,126 --> 00:28:10,542 SAM GREEN: Küsimus oli, on üks parem kui teine. 518 00:28:10,542 --> 00:28:18,306 Nii et jah, kui kodeerimine stiilis tava ja ka see on nagu disain tava. 519 00:28:18,306 --> 00:28:20,180 On kaks põhjust miks oleks parem. 520 00:28:20,180 --> 00:28:23,934 Esimene on, see teeb teie koodeksiga palju selgem ja arusaadavam, kui kõik oma HTML 521 00:28:23,934 --> 00:28:27,100 on ühes kohas, kõik oma CSS on teine ​​koht, kõik Teie JavaScript 522 00:28:27,100 --> 00:28:28,420 on kolmanda koha. 523 00:28:28,420 --> 00:28:28,920 Õigus? 524 00:28:28,920 --> 00:28:32,370 Ma arvan, et me oleks pidanud juba rääkisime umbes seda sections-- nagu CSS-- mida 525 00:28:32,370 --> 00:28:35,220 mis on-- ja see läheb Sageli teise faili. 526 00:28:35,220 --> 00:28:37,090 Nii sarnane mingi mõiste siin. 527 00:28:37,090 --> 00:28:42,410 Võite ette kujutada, et JavaScript siiski ka uues rohkem kui ühel 528 00:28:42,410 --> 00:28:47,350 HTML lehele, või ehk palju HTML lehed, 529 00:28:47,350 --> 00:28:49,340 ja võttes, et JavaScript refactored ühte 530 00:28:49,340 --> 00:28:51,950 fail, mida saab importida enam kui ühes kohas 531 00:28:51,950 --> 00:28:54,570 võimaldab kood olla kuidas rohkem hooldatav. 532 00:28:54,570 --> 00:28:57,930 Võite ette kujutada, tehes ühe muuta, et JavaScript 533 00:28:57,930 --> 00:29:00,070 ja võttes seda muuta 100 erinevat faili. 534 00:29:00,070 --> 00:29:04,070 Ja selle asemel, saame lihtsalt muuta ühes, mis on nii võimsam. 535 00:29:04,070 --> 00:29:05,420 Kas ma teie küsimusele vastata? 536 00:29:05,420 --> 00:29:07,950 Cool. 537 00:29:07,950 --> 00:29:10,830 >> Me võime ka kirjutada konsooli, nagu me varem mainitud. 538 00:29:10,830 --> 00:29:15,070 Ja jälle üks viimase note-- Web Audio on ehitatud, 539 00:29:15,070 --> 00:29:16,978 sa ei pea laadida midagi. 540 00:29:16,978 --> 00:29:17,478 Cool. 541 00:29:17,478 --> 00:29:20,519 Kas on mingeid küsimusi, kas sul on lisaküsimusi JavaScript, 542 00:29:20,519 --> 00:29:21,930 Enne astume? 543 00:29:21,930 --> 00:29:24,286 >> Sihtrühm: [kuuldamatu] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN: Okei, lahe. 545 00:29:25,410 --> 00:29:27,200 Nüüd ta läheb rääkima API. 546 00:29:27,200 --> 00:29:28,490 >> Hugh Zabriskie: Cool. 547 00:29:28,490 --> 00:29:28,990 Aitäh, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: Muidugi. 549 00:29:30,184 --> 00:29:32,600 Hugh Zabriskie: Awesome, nii me liikuda edasi JavaScript. 550 00:29:32,600 --> 00:29:35,350 Nii me rääkisime mõned olulised JavaScript, 551 00:29:35,350 --> 00:29:41,105 ja need on muutujad, funktsioonid, esemeid, toimib muutujad, 552 00:29:41,105 --> 00:29:41,980 asünkroonse laadimise. 553 00:29:41,980 --> 00:29:46,100 Need on kõik asjad, et sa vaata kui te kasutate Web Audio. 554 00:29:46,100 --> 00:29:49,230 Nii et me lihtsalt räägi sellest esimene kõrgel tasemel. 555 00:29:49,230 --> 00:29:52,120 >> See on API, nii et see on midagi mis on ehitatud, nagu Sam ütles, 556 00:29:52,120 --> 00:29:57,010 otse JavaScript et te kasutate konsooli. 557 00:29:57,010 --> 00:30:01,020 Ja see on tegelikult nagu C ++ koodi mis on tõesti ehitatud Chrome 558 00:30:01,020 --> 00:30:04,470 Firefox, ja kõik need brauserid. 559 00:30:04,470 --> 00:30:07,060 Seega on peamine idee Web Audio on see, et teil on 560 00:30:07,060 --> 00:30:09,440 selline gaasijuhtme audio, eks? 561 00:30:09,440 --> 00:30:13,670 Nii et teie audio andmeid tuleb mingisugune. 562 00:30:13,670 --> 00:30:16,690 >> Seal on mingi kolm peamist forms-- sul on generaatori, mis 563 00:30:16,690 --> 00:30:21,340 loob siinus, koosinus laine, me näeme, kuidas see toimib. 564 00:30:21,340 --> 00:30:23,890 Teine väga levinud üks, Loomulikult on MP3. 565 00:30:23,890 --> 00:30:25,810 Ehk hakkate koos laul, ja siis 566 00:30:25,810 --> 00:30:28,320 teha mõned filtreerimine seda ja väljund 567 00:30:28,320 --> 00:30:30,605 selle-- et saaks võimalikult allikas. 568 00:30:30,605 --> 00:30:32,480 Ja siis lahedaid üks on mikrofoni. 569 00:30:32,480 --> 00:30:37,230 Nii saate mõned väga põhilised kõned JavaScript 570 00:30:37,230 --> 00:30:39,440 saada ligipääs mikrofon, ja nii et kui sa 571 00:30:39,440 --> 00:30:42,870 tahtsin app nagu pigi detektor, 572 00:30:42,870 --> 00:30:45,290 näiteks mis võtab Sinu hääl ja arvud välja 573 00:30:45,290 --> 00:30:47,740 pitch-- väga lihtne viis, et. 574 00:30:47,740 --> 00:30:50,730 Võite lihtsalt selline lugeda aastal, nuputada, sagedus, 575 00:30:50,730 --> 00:30:52,250 ja siis väljund number. 576 00:30:52,250 --> 00:30:56,080 Nii me näeme, kuidas see töötab, samuti. 577 00:30:56,080 --> 00:30:59,430 >> Sihtkohaks on põhimõtteliselt kus audio andmed on väljund. 578 00:30:59,430 --> 00:31:02,890 Nii üldiselt, see on nagu sülearvuti kõlarid. 579 00:31:02,890 --> 00:31:05,610 Teised valikud on nagu ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 me jõuame tippe second-- kuid põhimõtteliselt, 581 00:31:07,990 --> 00:31:11,939 kas sa oled pannes heli välja läbi arvuti kaudu kõlarid, 582 00:31:11,939 --> 00:31:14,730 või oled selline salvestamist, nii et sa hoiustamisel audio andmeid. 583 00:31:14,730 --> 00:31:18,980 Ehk kui keegi loob muusikat oma app ja siis 584 00:31:18,980 --> 00:31:22,410 mida soovite salvestada, et võib-olla nagu eksportida see SoundCloud, et example-- 585 00:31:22,410 --> 00:31:25,281 et oleks üks võimalus seda teha. 586 00:31:25,281 --> 00:31:27,030 Kõik lõbusaid asju, mis me räägime, 587 00:31:27,030 --> 00:31:29,950 juhtub nende kahe punkti vahel, kus me koormus muusika 588 00:31:29,950 --> 00:31:31,410 ja siis väljund on. 589 00:31:31,410 --> 00:31:36,660 >> Nii et ma lähen rääkima viiest etappidel audio tootmist teine. 590 00:31:36,660 --> 00:31:38,950 Meil on see asi, mida nimetatakse AudioContext, mis 591 00:31:38,950 --> 00:31:41,580 on see väike ümbris näeme siin. 592 00:31:41,580 --> 00:31:49,980 Põhimõtteliselt, mida AudioContext on-- kui me minna JavaScript konsool kohe, 593 00:31:49,980 --> 00:31:52,740 saame luua just nüüd. 594 00:31:52,740 --> 00:31:54,040 Lihtsalt näide repl, eks? 595 00:31:54,040 --> 00:31:57,880 Me loed, hindamise ja ta prindib. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext on ülemaailmne riik. 597 00:32:00,260 --> 00:32:05,500 See on struct, see objekt siin, ja see hoiab info 598 00:32:05,500 --> 00:32:09,960 asju, mis on kestnud Ekraanil on seotud audio. 599 00:32:09,960 --> 00:32:15,220 Üks näide on praegune aeg. 600 00:32:15,220 --> 00:32:18,910 See ütleb teile number sekundi väga täpselt, 601 00:32:18,910 --> 00:32:20,890 kuna veebilehe koormatud. 602 00:32:20,890 --> 00:32:24,110 Nii et see on väga kasulik natuke vara, mida saab kasutada. 603 00:32:24,110 --> 00:32:27,898 See on lugeda ainult-- Ma arvan tegelikult võite proovida, et seada see väärtus. 604 00:32:27,898 --> 00:32:29,856 See ütlen teile seada, ja siis kui te printida 605 00:32:29,856 --> 00:32:31,439 again-- ta ei tegelikult üsna tööd. 606 00:32:31,439 --> 00:32:34,472 Seega on ainult lugemiseks omadused JavaScript. 607 00:32:34,472 --> 00:32:36,430 See on tõesti kasulik, kui sa oled selline sünkroniseerida 608 00:32:36,430 --> 00:32:38,610 palju erinevaid informatsiooni, kui sa oled 609 00:32:38,610 --> 00:32:41,280 Selline mängides erinevaid helisid. 610 00:32:41,280 --> 00:32:43,630 >> Teine väga kasulik üks on seoses alal. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Kindlasti, kui oled huvitatud, siis üritab seda omal konsooli õigus 613 00:32:49,670 --> 00:32:50,980 nüüd. 614 00:32:50,980 --> 00:32:53,150 Nii et see on AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 Põhimõtteliselt, mida see ütleb on, kus on väljund läheb? 616 00:32:56,480 --> 00:32:59,590 Nii on kaks reaalset võimalust siin. 617 00:32:59,590 --> 00:33:01,940 Tavaliselt vaikimisi on lihtsalt oma kõlarid, 618 00:33:01,940 --> 00:33:05,150 nii AudioDestinationNode põhimõtteliselt lihtsalt ütleb 619 00:33:05,150 --> 00:33:09,240 on null väljundid heli tulevad, saadetakse kõneleja. 620 00:33:09,240 --> 00:33:12,050 Nii üldiselt, sa ei pead mängima sellega. 621 00:33:12,050 --> 00:33:15,720 Kui olete huvitatud tegelikult kasutades ScriptProcessorNode salvestamiseks, 622 00:33:15,720 --> 00:33:16,990 kindlasti lase mind Kirjuta hiljem, sest see on 623 00:33:16,990 --> 00:33:18,330 veidi keerulisem. 624 00:33:18,330 --> 00:33:21,590 Aga üldiselt, sa oled lihtsalt lahke ning väljastab heli mingis vormis. 625 00:33:21,590 --> 00:33:24,347 Nii lahe, me hüpata siia tagasi. 626 00:33:24,347 --> 00:33:25,180 Sihtrühm: mul on kahju. 627 00:33:25,180 --> 00:33:26,054 Hugh Zabriskie: Jah. 628 00:33:26,054 --> 00:33:28,770 Sihtrühm: Ma tean, et sa ütlesid, et rääkida sulle hiljem salvestamise puhul. 629 00:33:28,770 --> 00:33:31,550 Kas sa liides, mis koos Pro Tools? 630 00:33:31,550 --> 00:33:33,120 >> Hugh Zabriskie: Mis Pro Tools? 631 00:33:33,120 --> 00:33:35,260 Vaatame. 632 00:33:35,260 --> 00:33:37,220 Ma ei arva nii. 633 00:33:37,220 --> 00:33:41,670 Nii läheb vahel klient, mis on JavaScript 634 00:33:41,670 --> 00:33:44,310 konsooli, ja oma tegelikku arvuti, on üldiselt 635 00:33:44,310 --> 00:33:46,490 midagi, mis on selline on tabu, kui te 636 00:33:46,490 --> 00:33:52,320 tahe, millist laadi tõttu the-- see on selline disain asi, 637 00:33:52,320 --> 00:33:57,770 aga sa püüame hoida brauseri eraldi kasutaja tegeliku arvuti. 638 00:33:57,770 --> 00:34:02,310 Üldiselt on ainus asi, sa oled võimeline ühendus on mikrofoni või kaamera. 639 00:34:02,310 --> 00:34:04,730 Sa ei ole võimalik, ma ei usu, kasuta Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Samas, kui sa loodud pala Pro Tools, 641 00:34:07,480 --> 00:34:12,710 eksporditakse, et võid laadida, et siin, filtreeritakse, näiteks 642 00:34:12,710 --> 00:34:16,820 protsess, mis ja salvestada et arvesse Audio Destination-- või ei-- kera 643 00:34:16,820 --> 00:34:17,870 Protsessor sõlme. 644 00:34:17,870 --> 00:34:20,730 Ja siis sealt võid eksportida, et SoundCloud, siis 645 00:34:20,730 --> 00:34:25,320 võiks saata see talle või iganes soovid sealt. 646 00:34:25,320 --> 00:34:31,159 >> Aga seal on selline kerge barjääri vahel musitseerimine arvutis 647 00:34:31,159 --> 00:34:33,050 ja musitseerimine online. 648 00:34:33,050 --> 00:34:37,940 >> SAM GREEN: Ja see on ei unikaalne selles API. 649 00:34:37,940 --> 00:34:44,060 See on turvaelement Chrome, ja Ma arvan, et iga teine ​​kaasaegne brauser. 650 00:34:44,060 --> 00:34:45,860 Brauser on iseseisev. 651 00:34:45,860 --> 00:34:50,980 Nii näiteks veebilehe saa kasuta JavaScript sisse lülitada heli 652 00:34:50,980 --> 00:34:54,190 kohta oma kõlarid, näiteks. 653 00:34:54,190 --> 00:34:58,120 Või siis ei saa arvuti välja lülitada. 654 00:34:58,120 --> 00:35:01,530 Ja ei ole vahepunkti Nende kahe asja, eks, 655 00:35:01,530 --> 00:35:05,960 nii kas teil on täielik abstraktsioon, 656 00:35:05,960 --> 00:35:10,050 või sa avada turvaprobleem üürile 657 00:35:10,050 --> 00:35:14,440 programmeerija pahatahtlikel teha mida iganes nad tahavad oma sülearvuti. 658 00:35:14,440 --> 00:35:18,104 Ja sellepärast Chrome on iseseisev. 659 00:35:18,104 --> 00:35:19,310 >> Hugh Zabriskie: Jah. 660 00:35:19,310 --> 00:35:20,840 Kas see on mõtet? 661 00:35:20,840 --> 00:35:21,369 Cool, lahe. 662 00:35:21,369 --> 00:35:23,160 Ma lihtsalt lähen näita näide ühe. 663 00:35:23,160 --> 00:35:25,118 See on päris palju kui saad, nii 664 00:35:25,118 --> 00:35:26,950 juurdepääsu kasutaja arvutisse. 665 00:35:26,950 --> 00:35:30,180 Kui teil on USB-klaviatuuri ühendatud, saate midagi, mida nimetatakse Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, mida me ei tõesti siin rääkida, 667 00:35:32,180 --> 00:35:36,330 aga see on teine ​​API, mis on ehitatud vähemalt Chrome-- uuesti, 668 00:35:36,330 --> 00:35:41,570 see on põhjus, miks me armastame Chrome-- Ma arvan, Firefox või Safari 669 00:35:41,570 --> 00:35:44,300 see on lihtne asi, mida google-- erinevad brauserid on 670 00:35:44,300 --> 00:35:46,917 erinevat toetust, mille API nad on rakendatud. 671 00:35:46,917 --> 00:35:49,875 Aga kui sa tahad ühendada klaviatuuri ja töötada, et informatsiooni, 672 00:35:49,875 --> 00:35:52,850 Selline Kirjuta klaviatuuri andmed üle arvutisse 673 00:35:52,850 --> 00:35:57,620 ja siis kasutada, et online, see API on koht, kus sa töötavad selle. 674 00:35:57,620 --> 00:35:58,150 >> Cool. 675 00:35:58,150 --> 00:35:58,710 OKEI. 676 00:35:58,710 --> 00:36:01,320 Nii kiiresti liigub siin. 677 00:36:01,320 --> 00:36:03,310 Kuidas me seda teeme õigel ajal? 678 00:36:03,310 --> 00:36:04,210 >> SPEAKER 1: Umbes 15. 679 00:36:04,210 --> 00:36:05,543 >> Hugh Zabriskie: 15 minutit aega? 680 00:36:05,543 --> 00:36:06,160 OK, lahe. 681 00:36:06,160 --> 00:36:08,170 Nii me rassi ees siin. 682 00:36:08,170 --> 00:36:13,500 >> Ühesõnaga, Peaasi mõtled seda kui gaasijuhe 683 00:36:13,500 --> 00:36:16,430 on see, et iga samm gaasijuhe on rida audio sõlmedes. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Meie allikas, oletame, on generaatori. 686 00:36:20,950 --> 00:36:23,380 Me peame looma ostsillaator sõlme. 687 00:36:23,380 --> 00:36:25,690 Ja see on lihtsalt selline on vähe funktsioon-- 688 00:36:25,690 --> 00:36:30,460 ja nad kõik põhineb välja audio kontekstis siin. 689 00:36:30,460 --> 00:36:32,885 >> Sihtrühm: Kui ta ütles, generaatori, kas see tähendab, 690 00:36:32,885 --> 00:36:37,250 see on tegelikult sõna otseses mõttes läheb kahe erineva pooluse edasi-tagasi? 691 00:36:37,250 --> 00:36:41,170 >> Hugh Zabriskie: Ei, see on nagu digitaalne esitus. 692 00:36:41,170 --> 00:36:42,740 See on tegelikult rakendatud C ++. 693 00:36:42,740 --> 00:36:46,460 Ma tegelikult ei tea näitajad kuidas see tegelikult rakendatud, 694 00:36:46,460 --> 00:36:48,500 Aga see kõik töötab kahendjada. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Tegelikult, jah. 697 00:36:52,370 --> 00:36:53,950 See oleks öelda, et ma võiks tegelikult, kui oled huvitatud, 698 00:36:53,950 --> 00:36:56,533 Ma võiksin sulle saata natuke rohkem Teavet lainekujusid 699 00:36:56,533 --> 00:37:00,181 hoitakse võttes digitaalsel kujul. 700 00:37:00,181 --> 00:37:00,680 OK, lahe. 701 00:37:00,680 --> 00:37:03,120 >> Nii et me tekitama toon nagu sine laine või midagi sellist, võibolla 702 00:37:03,120 --> 00:37:04,190 440 Hz. 703 00:37:04,190 --> 00:37:05,830 Loome ostsillaator. 704 00:37:05,830 --> 00:37:09,180 Kui me tahame, et helitugevust, me ühendada midagi kaasa GainNode, 705 00:37:09,180 --> 00:37:12,500 mida me võiks teha .creategain. 706 00:37:12,500 --> 00:37:14,250 See seab oma mahust. 707 00:37:14,250 --> 00:37:17,820 Te saate andke et peale tahes teiste options-- hästi, 708 00:37:17,820 --> 00:37:20,300 nii audio puhver allikas sõlm on koht, kus te võite 709 00:37:20,300 --> 00:37:23,660 salvestada MP3, et olete laaditud. 710 00:37:23,660 --> 00:37:27,670 >> Biquad filter on filtreerimise kui sa tahad teha kõik põhja välja 711 00:37:27,670 --> 00:37:29,630 laulu, või midagi sellist. 712 00:37:29,630 --> 00:37:32,450 Jumal hoidku soovite teha baasi välja laulu. 713 00:37:32,450 --> 00:37:36,980 Ja AudioDestination sõlm on jällegi nagu kus meie viimistlemist on. 714 00:37:36,980 --> 00:37:39,980 Kui sa oled kunagi huvitatud näha kõiki erinevaid valikuvõimalusi, 715 00:37:39,980 --> 00:37:45,190 minge vahekaardile ja lase auto-complete tulla. 716 00:37:45,190 --> 00:37:48,690 Ja kui sa luua, näete kõiki erinevaid asju, mida saab luua. 717 00:37:48,690 --> 00:37:50,398 Saate luua dünaamilisi script protsessorid, 718 00:37:50,398 --> 00:37:52,940 Ma isegi ei tea, mida see on, segamiseks kanal ühinemised 719 00:37:52,940 --> 00:37:55,930 ja kanal lõhkujad ja kõik. 720 00:37:55,930 --> 00:37:56,430 Cool. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Nii et see on lihtsalt Näiteks torujuhtme. 723 00:38:01,390 --> 00:38:03,580 Nii et meil on kolm allikat tulevad. 724 00:38:03,580 --> 00:38:06,830 Võib-olla on need signaalid, võibolla need MP3. 725 00:38:06,830 --> 00:38:08,740 Üks läheb läbi filter, teine ​​on 726 00:38:08,740 --> 00:38:12,404 saada moonutatud teise üks panoraamimistoimingute vasakule ja paremale. 727 00:38:12,404 --> 00:38:15,320 Seda saab teha igasuguseid asju ja nad kõik segi ümber koos, 728 00:38:15,320 --> 00:38:18,880 ja siis välja jõuab audio lõpus, kui alal. 729 00:38:18,880 --> 00:38:22,720 See on näide sellest, mida rohkem keeruline Web Audio kood välja näeb. 730 00:38:22,720 --> 00:38:26,720 Loote kõik need erinevate objektide siin-- 731 00:38:26,720 --> 00:38:27,706 Ma ei ole kindel, et see. 732 00:38:27,706 --> 00:38:29,120 Ei, see ei ole suumida. 733 00:38:29,120 --> 00:38:29,620 OKEI. 734 00:38:29,620 --> 00:38:31,257 >> SAM GREEN: Sul ei kontrolli, Scroll-Up. 735 00:38:31,257 --> 00:38:32,590 Hugh Zabriskie: kontrolli Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM GREEN: Ei, ei. 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 >> Hugh Zabriskie: Oh, Control leidke? 740 00:38:38,140 --> 00:38:38,780 Oh, gotcha. 741 00:38:38,780 --> 00:38:41,480 Jah. 742 00:38:41,480 --> 00:38:42,240 Wow, nope, nope. 743 00:38:42,240 --> 00:38:42,740 OKEI. 744 00:38:42,740 --> 00:38:46,090 Ma ei tee seda. 745 00:38:46,090 --> 00:38:48,300 >> Nii et jah, see esimene osa siin, sa näed 746 00:38:48,300 --> 00:38:52,720 loome kõik need erinevad sõlmed kontekstist välja. 747 00:38:52,720 --> 00:38:54,980 Me lihtsalt lõikuva neid koos teine ​​osa 748 00:38:54,980 --> 00:38:56,980 mida see funktsioon nimega Connect. 749 00:38:56,980 --> 00:38:58,830 See on tõesti võti funktsiooni Web Audio. 750 00:38:58,830 --> 00:39:01,930 See tähendab lihtsalt, kui sa oled teinud midagi heliga ühe sõlme, 751 00:39:01,930 --> 00:39:03,705 andke seda kellelegi järgmise sõlme. 752 00:39:03,705 --> 00:39:05,830 Nii et meil on allikas, seda ühendab analüsaator, 753 00:39:05,830 --> 00:39:09,140 analüsaator teeb midagi sellega, läheb see moonutusi ja nii edasi, 754 00:39:09,140 --> 00:39:12,725 ja sihtkoha allosas siin. 755 00:39:12,725 --> 00:39:13,225 Cool. 756 00:39:13,225 --> 00:39:14,640 OK, nii et me hoiame liigub. 757 00:39:14,640 --> 00:39:17,180 >> Pipeline-- jälle need on kõige levinumad torujuhtmeid 758 00:39:17,180 --> 00:39:21,300 nii et me räägime kõik need asjad moonutus, liigutamisel, kõik see kraam. 759 00:39:21,300 --> 00:39:24,280 Kui sa oled tõesti huvitatud kasutades asju Pro Tools, 760 00:39:24,280 --> 00:39:25,820 need ilmselt teile huvi pakkuda. 761 00:39:25,820 --> 00:39:27,740 Kui ei, siis äkki sa lihtsalt tahad mängida heli, 762 00:39:27,740 --> 00:39:29,990 või äkki sa lihtsalt tahad seada helitugevus heli. 763 00:39:29,990 --> 00:39:35,270 Need on kaks kõige levinumat omamoodi torujuhtmete audio tootmist. 764 00:39:35,270 --> 00:39:38,640 >> Jällegi, kuidas saate seda aastal kui oscillator-- nii, olgem 765 00:39:38,640 --> 00:39:42,460 teha demo, mis siin. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Nii et me läheme luua lihtne audio kontekstis siin 768 00:39:52,225 --> 00:39:54,350 ja et me läheme luua meie generaatori. 769 00:39:54,350 --> 00:39:58,620 Nii et on taas, me oleme lihtsalt helistame Loo ostsillaator. 770 00:39:58,620 --> 00:40:07,030 Me läheme määrata sageduse kohta et 440 Hertz, igaühe lemmik. 771 00:40:07,030 --> 00:40:13,290 Siis me ühendada, et sihtkohta point-- mis on kõneleja, et 772 00:40:13,290 --> 00:40:15,750 kontekstis kohtades. 773 00:40:15,750 --> 00:40:21,400 Lõpuks, me lihtsalt öelda, alustada nullist sekundit pärast, ja me oleme usaldusväärne? 774 00:40:21,400 --> 00:40:22,400 >> [Helina] 775 00:40:22,400 --> 00:40:24,980 >> Hugh Zabriskie: Läksime. 776 00:40:24,980 --> 00:40:25,940 See on lihtsalt siinus. 777 00:40:25,940 --> 00:40:26,440 OK, lahe. 778 00:40:26,440 --> 00:40:28,274 Ja siis lõpetame selle. 779 00:40:28,274 --> 00:40:30,520 >> Sihtrühm: Kust et tagasiside tulevad? 780 00:40:30,520 --> 00:40:31,250 >> Hugh Zabriskie: tagasiside? 781 00:40:31,250 --> 00:40:32,458 Oh, ilmselt meie mikrofonid. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Nii et jah, see on, kuidas seda teha. 784 00:40:35,470 --> 00:40:37,261 Ja tegelikult, kui ma pidin hoida seda näidata, siis 785 00:40:37,261 --> 00:40:39,540 võib olla sagedus väärtust, kuna see jookseb, 786 00:40:39,540 --> 00:40:43,320 et on tore asi mängida. 787 00:40:43,320 --> 00:40:44,930 Cool. 788 00:40:44,930 --> 00:40:46,600 See on alati väga kauni esitada. 789 00:40:46,600 --> 00:40:48,792 >> SAM GREEN: me ei mõtlema, et kas me oleme? 790 00:40:48,792 --> 00:40:50,500 Hugh Zabriskie: Jah, see on vastik üks. 791 00:40:50,500 --> 00:40:53,249 Nii, puhver loading-- ma näitavad näide, et päris lõpus. 792 00:40:53,249 --> 00:40:55,090 See on asetamise MP3. 793 00:40:55,090 --> 00:40:58,880 Ja mikrofon, saate kasutada vaid funktsiooni nimetatakse Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 taotleda juurdepääsu kasutaja mikrofon, et teave. 795 00:41:03,240 --> 00:41:05,610 >> Siin on filtreerimine, ma muudkui liigub see. 796 00:41:05,610 --> 00:41:08,600 See on päris kõrge, kuid filtrid lihtsalt võimaldab teil 797 00:41:08,600 --> 00:41:16,154 >> [Piiksumine] 798 00:41:16,154 --> 00:41:18,320 Filtreerimine ka saate luua asju nagu roosa 799 00:41:18,320 --> 00:41:20,050 müra, pruun müra, valge müra. 800 00:41:20,050 --> 00:41:24,330 Kui soovite luua puhas müra, mis mõned inimesed armastavad jändama, 801 00:41:24,330 --> 00:41:27,490 mida saab kasutada Web Audio filtreerimine teha. 802 00:41:27,490 --> 00:41:30,039 >> Audio Panning-- nii kujutada kui olete kirjalikult mängu 803 00:41:30,039 --> 00:41:32,330 ja sa tahad heli tunduda see tuleb, nagu, 804 00:41:32,330 --> 00:41:36,090 shooting üle ekraani, siis saavad kasutada panoraamimistoimingute audio 805 00:41:36,090 --> 00:41:39,770 luua selline koonus, mis like-- see on päris mathy, 806 00:41:39,770 --> 00:41:41,850 aga see on tegelikult väga lahe, kui sa seda tööd, 807 00:41:41,850 --> 00:41:44,500 ja seal on mõned head õpetused on võin saata teile. 808 00:41:44,500 --> 00:41:46,400 Põhimõtteliselt saab sellist ning luua heli 809 00:41:46,400 --> 00:41:50,480 midagi läheb teel 3D viis. 810 00:41:50,480 --> 00:41:57,350 Ja kui sul on DJ huvi, saate alustada segamist ja rist pleegib laule. 811 00:41:57,350 --> 00:42:01,260 >> See on lihtsalt mõned väga põhilised kood, põhimõtteliselt mida ma tegin enne. 812 00:42:01,260 --> 00:42:06,140 See määrab maht generaatori, et me loome ostsillaatori 813 00:42:06,140 --> 00:42:07,380 mis loob signaali kuju. 814 00:42:07,380 --> 00:42:09,940 Me loome GainNode, seame oma sagedust, 815 00:42:09,940 --> 00:42:14,170 ja seejärel ühendage generaatori kuni GainNode, mis siis põhimõtteliselt muudab 816 00:42:14,170 --> 00:42:16,760 kui palju signaal on lubatud läbi. 817 00:42:16,760 --> 00:42:20,467 Aga tõesti, see on digitaalne asi, nii et see on rohkem Lihtsalt-- yeah. 818 00:42:20,467 --> 00:42:23,550 See ei ole mis tegelikult toimub, kuid see, mis juhtub reaalses elus 819 00:42:23,550 --> 00:42:24,393 koos kasu. 820 00:42:24,393 --> 00:42:27,258 >> Sihtrühm: --quantization mahust parameetri? 821 00:42:27,258 --> 00:42:28,174 Hugh Zabriskie: Vabandust? 822 00:42:28,174 --> 00:42:30,360 Sihtrühm: Kas see on kvanditud maht parameeter? 823 00:42:30,360 --> 00:42:31,840 Hugh Zabriskie: Jah. 824 00:42:31,840 --> 00:42:34,620 Ja see on üks asi, mida ma olen tõesti Puudulike edasi oma teadmisi, 825 00:42:34,620 --> 00:42:38,010 kuidas tõus töötab digitaalse tasandil. 826 00:42:38,010 --> 00:42:40,140 Ma tean, et tegelike signaale, see on põhimõtteliselt 827 00:42:40,140 --> 00:42:45,120 kontrolli, kui palju sa oled võimendamise signaali. 828 00:42:45,120 --> 00:42:47,017 Niisiis, jah. 829 00:42:47,017 --> 00:42:50,100 Ma saadan sulle rohkem informatsiooni et kuna ma uudishimulik tegelikult 830 00:42:50,100 --> 00:42:51,099 rohkem teada seda. 831 00:42:51,099 --> 00:42:54,090 Aga põhimõtteliselt parameetrid on, üks on fold-- 832 00:42:54,090 --> 00:42:59,690 valjem signal-- ja null ei ole signaali, või sa ei kuule mingit heli. 833 00:42:59,690 --> 00:43:03,150 Me vahele demo aeg, et kuna see on põhimõtteliselt see, mida ma tegin enne. 834 00:43:03,150 --> 00:43:07,630 Ja jälle Context.Destination on audio sihtsõlme. 835 00:43:07,630 --> 00:43:08,360 Awesome, OK. 836 00:43:08,360 --> 00:43:10,470 >> Nii et ma teen kiire kaks demos. 837 00:43:10,470 --> 00:43:11,760 Kuidas me seda teeme õigel ajal? 838 00:43:11,760 --> 00:43:12,640 >> SPEAKER 1: umbes 10 minutit. 839 00:43:12,640 --> 00:43:13,130 >> Hugh Zabriskie: 10 minutit? 840 00:43:13,130 --> 00:43:13,630 Suurepärane! 841 00:43:13,630 --> 00:43:14,320 Awesome. 842 00:43:14,320 --> 00:43:19,010 >> Nii esimene ma lähen ei, seda nimetatakse Minu lemmik laul. 843 00:43:19,010 --> 00:43:22,410 Nii et see on lihtsalt vähe HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Me läheme on kaks nuppu lehel mängida minu lemmik laul 845 00:43:25,510 --> 00:43:29,192 ja lõpetage minu lemmik laul. 846 00:43:29,192 --> 00:43:30,180 Ma muudan seda. 847 00:43:30,180 --> 00:43:32,110 >> Sihtrühm: Kata oma mikrofoni. 848 00:43:32,110 --> 00:43:33,430 >> Hugh Zabriskie: Jah. 849 00:43:33,430 --> 00:43:36,300 Ja ma olen laaditud siin skript basically-- 850 00:43:36,300 --> 00:43:38,520 ja see on tõesti kasulik laadimise MP3, 851 00:43:38,520 --> 00:43:41,820 nii see lihtsalt muudab laadimise MP3 viis kiirem. 852 00:43:41,820 --> 00:43:44,180 See on põhimõtteliselt ainult ümbris. 853 00:43:44,180 --> 00:43:48,737 See muudab protsessi laadimist MP3 palju kiiremini, 854 00:43:48,737 --> 00:43:51,570 muidu sa kasutad HTTP taotlust, selline nagu see, mida me teeme 855 00:43:51,570 --> 00:43:53,950 praeguse tükk komplekt Server. 856 00:43:53,950 --> 00:43:55,950 See on tõesti kole, siis ei taha seda teha. 857 00:43:55,950 --> 00:44:04,110 >> Nii see kutt, Boris VKEd, kirjutas tõesti kasulik väike tööriist nimega BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Kõik, mida teha, on lihtsalt mööda seda kontekstis, te kaotate seda list-- 859 00:44:08,780 --> 00:44:11,327 või, jah, on see nimekiri JavaScript? 860 00:44:11,327 --> 00:44:12,160 SAM GREEN: Array. 861 00:44:12,160 --> 00:44:14,201 Hugh Zabriskie: Oh, see on massiivi, mis on õige. 862 00:44:14,201 --> 00:44:18,660 See on massiivi rajad erinevate faile. 863 00:44:18,660 --> 00:44:21,990 Ja siis andke seda funktsiooni. 864 00:44:21,990 --> 00:44:25,530 See on tagasihelistamise rääkisime umbes koos asünkroonse laadimise. 865 00:44:25,530 --> 00:44:28,720 See saab nimeks kui faili laadida. 866 00:44:28,720 --> 00:44:33,780 Ja see funktsioon, mida nimetatakse kui faili laetud võtab selle ümbermõõt 867 00:44:33,780 --> 00:44:35,840 massiivi koormatud puhvrid. 868 00:44:35,840 --> 00:44:37,990 Nii et tekib siin. 869 00:44:37,990 --> 00:44:41,180 Põhimõtteliselt BufferList on saab olema üks value-- 870 00:44:41,180 --> 00:44:46,380 või see saab olema hulgaliselt pikkus üks, mis on see indeks 871 00:44:46,380 --> 00:44:51,320 null kogu laaditud fail MP3. 872 00:44:51,320 --> 00:44:53,320 Mida teha, kui ma lõpetan Laadimine on, ma lihtsalt 873 00:44:53,320 --> 00:44:57,430 luua puhvri allikast, mille on audio puhver allikas sõlme. 874 00:44:57,430 --> 00:45:03,410 Järgmine samm on mul asetad source.buffer kui täis laetud puhver 875 00:45:03,410 --> 00:45:06,740 alates BufferList-- see on palju buffers-- 876 00:45:06,740 --> 00:45:10,255 ja siis ühendada, et audio puhvrit alal. 877 00:45:10,255 --> 00:45:12,380 Mis siis, et see läheb teha on lihtsalt lihtsalt panna MP3 878 00:45:12,380 --> 00:45:15,260 otse läbi väljund, ja alustada kohe 879 00:45:15,260 --> 00:45:18,010 upon saada see kõne. 880 00:45:18,010 --> 00:45:21,660 >> Cool, et vaatame see juhtuda tegevus. 881 00:45:21,660 --> 00:45:24,490 Minu [kuuldamatu] siin, vaatame. 882 00:45:24,490 --> 00:45:26,430 Nii et ma olen lihtsalt kavatse alustada põhilised server. 883 00:45:26,430 --> 00:45:28,660 See on midagi, mis sa pead tegema kui sa oled 884 00:45:28,660 --> 00:45:32,490 tehes taotlusi failide laadimist. 885 00:45:32,490 --> 00:45:34,140 Ma hakkan põhi server. 886 00:45:34,140 --> 00:45:38,200 See on põhimõtteliselt kogu oma Pset kohe ühes reas, 887 00:45:38,200 --> 00:45:43,930 aga see on lihtsalt hakanud serveri pordi 80/80. 888 00:45:43,930 --> 00:45:47,300 Nii me läheme siia, me läheb koormus 80/80, 889 00:45:47,300 --> 00:45:49,110 me läheme Minu lemmik laul. 890 00:45:49,110 --> 00:45:51,660 Nii et kui ma tabanud "Mängi minu lemmiklaulu "just nüüd, 891 00:45:51,660 --> 00:45:53,964 see saab laadida minu lemmik laul ja mängida see-- 892 00:45:53,964 --> 00:45:55,880 [MUSIC - KOTKAID, "LIFE kiirelt  LANE "] 893 00:45:55,880 --> 00:46:00,490 --which juhtub olema "Life in Fast Lane "The Eagles. 894 00:46:00,490 --> 00:46:06,346 Nüüd, ma ei tabanud "Stop minu lemmik laul "ja kordus see. 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - KOTKAID, "LIFE kiirelt  LANE "] 896 00:46:09,160 --> 00:46:18,340 >> Ja kui ma lähen üle lohutada, sest Ma kasutasin globaalne muutuja siia 897 00:46:18,340 --> 00:46:23,390 jälgida seda väärtust, siis tegelikult Nüüd tunnustatud konsooli. 898 00:46:23,390 --> 00:46:25,160 Nii et see auto-tekitab minu jaoks. 899 00:46:25,160 --> 00:46:29,991 Nii see on, mida mängib just nüüd, ja ma lihtsalt helistada source.stop () 900 00:46:29,991 --> 00:46:30,490 selle peal. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 Noh, sa tead, mida? 903 00:46:35,860 --> 00:46:39,760 Just nii kutid kuulnud seda song-- võite tunda seda laulu. 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - Rick Astley, "mitte kunagi annan  YOU UP "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - KOTKAID, "LIFE kiirelt  LANE "] 907 00:46:44,215 --> 00:46:46,195 Me oleme nüüd kõik on rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, suur, liigub. 909 00:46:50,155 --> 00:46:51,160 Cool. 910 00:46:51,160 --> 00:46:54,554 Nii on see põhiliselt näide kuidas võid laadida MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - KOTKAID, "LIFE kiirelt  LANE "] 912 00:46:56,470 --> 00:46:59,590 --and mängida ja peatada ja käivitada. 913 00:46:59,590 --> 00:47:03,008 Ma oleks võinud teha palju rohkem [kuuldamatu] 914 00:47:03,008 --> 00:47:07,570 >> Viimane teen on, Ma näitan sulle [kuuldamatu]. 915 00:47:07,570 --> 00:47:18,070 >> [Muusika mängib] 916 00:47:18,070 --> 00:47:21,800 >> See on nagu, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Ma arvan, et kui ma õigesti mäletan, Olen sattunud mõned küsimused .m4a, 918 00:47:26,450 --> 00:47:27,721 aga ma ei ole kindel. 919 00:47:27,721 --> 00:47:28,470 Ma arvan mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MUSIC - Rick Astley, "mitte kunagi annan  YOU UP "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK, suur. 924 00:47:36,500 --> 00:47:37,625 Ma ei öelnud seda. 925 00:47:37,625 --> 00:47:40,570 Igatahes, tere. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Nii et meil on see avatud. 928 00:47:45,490 --> 00:47:52,320 Nüüd kõik, mida ma teha, on, ma põhimõtteliselt loodud põhi süntaksi luua muusikat. 929 00:47:52,320 --> 00:47:57,610 Nii et kui ma teen midagi lisada g4 1. 2, mida see tähendab, et 930 00:47:57,610 --> 00:48:00,950 lisada piano märkus, G4, mis on neljas G 931 00:48:00,950 --> 00:48:02,680 kuni klaveril alt. 932 00:48:02,680 --> 00:48:05,930 Nii et see on omamoodi MIDI-öelda nii neile, kes on muusika aluseks, 933 00:48:05,930 --> 00:48:07,860 see on lihtsalt MIDI märkmeid. 934 00:48:07,860 --> 00:48:10,090 >> Sihtrühm: See on G Lähis-C, eks? 935 00:48:10,090 --> 00:48:11,840 >> Hugh Zabriskie: See on G Ülaltoodud Lähis C, mis on õige. 936 00:48:11,840 --> 00:48:12,470 >> Sihtrühm: Üle Lähis C. 937 00:48:12,470 --> 00:48:13,345 >> Hugh Zabriskie: Jah. 938 00:48:13,345 --> 00:48:14,340 Tegelikult, jah. 939 00:48:14,340 --> 00:48:16,131 Ma arvan, et ma tegelikult teha see üks [kuuldamatu] 940 00:48:16,131 --> 00:48:18,860 nii et see võib olla oktaavi kõrgemal. 941 00:48:18,860 --> 00:48:20,070 Vaatame. 942 00:48:20,070 --> 00:48:21,152 Kui ma tabanud Play-- 943 00:48:21,152 --> 00:48:22,110 [Korduvad PIANO MÄRKUS] 944 00:48:22,110 --> 00:48:23,200 --we're läheb kuulda. 945 00:48:23,200 --> 00:48:25,700 Idee on selles, et ta tegutseb nagu käsurea oleks, 946 00:48:25,700 --> 00:48:27,510 nii et kui ma lähen üles ja alla minu klaviatuuri, siis 947 00:48:27,510 --> 00:48:31,550 saab minna tagasi eelmisele käsud, mis on päris kasulik. 948 00:48:31,550 --> 00:48:35,136 Ja allpool on minu nimekirja lugusid, mida kõik töötab loop. 949 00:48:35,136 --> 00:48:38,260 >> Sihtrühm: Sa olid eeldades 88-key klaviatuuri, eks? 950 00:48:38,260 --> 00:48:41,051 >> Hugh Zabriskie: Küsimus oli, ma eeldades 88-key klaviatuur, 951 00:48:41,051 --> 00:48:41,990 ja jah, ma olen. 952 00:48:41,990 --> 00:48:45,030 Mida ma tegin on mul Põhimõtteliselt võttis 88 proovid 953 00:48:45,030 --> 00:48:46,970 Klaveri, üks iga noot. 954 00:48:46,970 --> 00:48:49,180 Ja nii iga kord, kui kuule märkus nüüd, 955 00:48:49,180 --> 00:48:57,550 mis on tegelikult loop, mis näeb välja like-- see muutub mängitakse loop, 956 00:48:57,550 --> 00:49:00,120 nii iga noot, see töötab. 957 00:49:00,120 --> 00:49:02,860 Mis juhtub on see, ma luua puhvri jälle 958 00:49:02,860 --> 00:49:06,010 Ma luua kasu sõlme helitugevust. 959 00:49:06,010 --> 00:49:08,240 See lihtsalt tõesti keeruline viis öelda ma 960 00:49:08,240 --> 00:49:10,550 salvestada puhvris source.buffer. 961 00:49:10,550 --> 00:49:13,160 Ma annan võimenduse, ma ühendage see kasu, 962 00:49:13,160 --> 00:49:15,576 kasum on ühendatud väljund, ja siis ma mängin seda. 963 00:49:15,576 --> 00:49:20,735 Nii et on selline protsess võttes puhvris allikas. 964 00:49:20,735 --> 00:49:24,820 >> Sihtrühm: Kas sa tegelikult võtta, et kuiv heli ja teha see märjaks [kuuldamatu]? 965 00:49:24,820 --> 00:49:26,260 >> Hugh Zabriskie: Saate, yeah. 966 00:49:26,260 --> 00:49:29,260 Seal on re-verb, seal on viivitus, moonutamine. 967 00:49:29,260 --> 00:49:33,260 Võite põhimõtteliselt panna midagi vahel, et võileib of-- hästi, 968 00:49:33,260 --> 00:49:37,660 torujuhtme on parem metafoor, Lisada saab midagi selles. 969 00:49:37,660 --> 00:49:38,200 Cool. 970 00:49:38,200 --> 00:49:40,280 >> Nii et ma lõpetada demo siin teile tunde 971 00:49:40,280 --> 00:49:46,390 vaid õhuke mitu korda sa saab sõita, et funktsiooni korraga. 972 00:49:46,390 --> 00:49:49,280 Nii et ma lähen siis võta see. 973 00:49:49,280 --> 00:49:59,110 Ma lähen luua generaatori selle-- põhimõtteliselt mida does-- see on tõesti 974 00:49:59,110 --> 00:50:04,220 Selline keeruline syntax-- kuid see on läheb tekitada lisades sõita, 975 00:50:04,220 --> 00:50:06,601 ja lihtsalt mängima hakata neid hindab ta neid. 976 00:50:06,601 --> 00:50:07,392 [Astudes PIANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Nii saame lihtsalt teha väike muusika siin. 979 00:50:12,817 --> 00:50:13,608 [Astudes PIANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Mida see käsk teeb, näiteks on 982 00:50:41,470 --> 00:50:46,910 ta võtab kolm märgukirja jaoks klaver ja siis paneb neid B3. 983 00:50:46,910 --> 00:50:48,660 See süntaks võib teha vähe mõttekam 984 00:50:48,660 --> 00:50:50,590 neile, kes on muusika taustal siin. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Võin lisada kick drum. 987 00:50:56,551 --> 00:50:57,050 Ma saan-- 988 00:50:57,050 --> 00:50:58,048 >> [Astudes INSTRUMENTS] 989 00:50:58,048 --> 00:50:59,256 >> --just mängida seda. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Nii saab make-- 992 00:51:13,474 --> 00:51:14,515 [Astudes INSTRUMENTS] 993 00:51:14,515 --> 00:51:15,513 See üks on natuke rohkem tüütu. 994 00:51:15,513 --> 00:51:16,554 [Astudes INSTRUMENTS] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Nii et juhuslikult lisab kuiva taldrik iga 16. märkuse, mille 16% 997 00:51:30,981 --> 00:51:31,481 [Kuuldamatu]. 998 00:51:31,481 --> 00:51:32,522 >> [Astudes INSTRUMENTS] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Jah, nii kuidas see works-- see alati 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Astudes INSTRUMENTS] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Jah, nii nelja kvartali ja 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Astudes INSTRUMENTS] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Nii keskmiselt, saad 60% vaatamiste 16. märkmeid. 1008 00:52:33,780 --> 00:52:35,990 >> Niikuinii, see oli lihtsalt Selline uhkeldama 1009 00:52:35,990 --> 00:52:39,780 mõned asjad, mida võiks ehitada veebiheli API. 1010 00:52:39,780 --> 00:52:43,840 See on tõesti võimas, see on tõesti kiire, ja saate teha palju lahedaid asju 1011 00:52:43,840 --> 00:52:44,340 sellega. 1012 00:52:44,340 --> 00:52:51,260 Nii uuesti, teil on küsimusi, Kirjuta myself-- Hugh-- või Sam, 1013 00:52:51,260 --> 00:52:55,869 ja ausalt, Google on ton head vahendid. 1014 00:52:55,869 --> 00:52:56,660 Iga viimane küsimusi? 1015 00:52:56,660 --> 00:52:57,970 Jah. 1016 00:52:57,970 --> 00:53:00,790 >> Sihtrühm: Nii pääsete sisseehitatud mikrofoni. 1017 00:53:00,790 --> 00:53:03,089 Mis siis, kui sa tahad kasutada parema mikrofoni? 1018 00:53:03,089 --> 00:53:05,380 Hugh Zabriskie: Kui sa tahad kasutada paremini mikrofoni? 1019 00:53:05,380 --> 00:53:11,320 Nii Ka see on osa veevõtu vahel Chrome 1020 00:53:11,320 --> 00:53:12,950 ja ülejäänud arvuti. 1021 00:53:12,950 --> 00:53:18,950 Kui see on saadaval API, nagu Web MIDI API, 1022 00:53:18,950 --> 00:53:22,030 siis võiks ilmselt leida mõned hacks, aga üldiselt ei ole nii võimalik. 1023 00:53:22,030 --> 00:53:25,300 >> SAM GREEN: Võite also-- kõik Chrome'i teab 1024 00:53:25,300 --> 00:53:28,820 on see, mida teie Vaikemikrofon on, ja see ligipääsude. 1025 00:53:28,820 --> 00:53:33,410 Nii et kui teil oli mikrofoni võid seada arvuti vaikimisi mikrofon, 1026 00:53:33,410 --> 00:53:35,990 võid kasutada seda, et tee ja see oleks ilmselt tööd. 1027 00:53:35,990 --> 00:53:37,490 Hugh Zabriskie: See on hea koht. 1028 00:53:37,490 --> 00:53:39,656 Ma pole kunagi proovinud, kuid sa võiksid sellist 1029 00:53:39,656 --> 00:53:45,700 of-- kui te suunata sisend kõneleja, sa võiksid teha, et, jah. 1030 00:53:45,700 --> 00:53:48,360 >> Iga viimane küsimusi? 1031 00:53:48,360 --> 00:53:49,340 Cool. 1032 00:53:49,340 --> 00:53:51,680 Noh aitäh poisid nii palju vaadates. 1033 00:53:51,680 --> 00:53:52,199 Ma olen Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM GREEN: ma olen Sam. 1035 00:53:52,990 --> 00:53:55,410 Hugh Zabriskie: Ja see on CS50. 1036 00:53:55,410 --> 00:53:56,767