1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN: Hi, të gjithë. 3 00:00:07,170 --> 00:00:08,640 Mirë se vini në seminarin tonë. 4 00:00:08,640 --> 00:00:10,009 Emri im është Sam. 5 00:00:10,009 --> 00:00:11,050 Hugh Zabriskie: Jam Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM GREEN: Dhe ne jemi duke shkuar për të folur sot për JavaScript dhe API Web Audio. 7 00:00:17,420 --> 00:00:21,180 Vetëm për të filluar, ky është një skicë e agjendës sonë për seminar. 8 00:00:21,180 --> 00:00:25,350 Ne jemi duke shkuar për të filluar duke folur për pse ju duhet të jenë të interesuar në Web 9 00:00:25,350 --> 00:00:30,130 Audio API, pse është JavaScript gjuha që ju duhet për të, 10 00:00:30,130 --> 00:00:32,619 dhe pastaj të flasim për JavaScript essentials-- kështu si, 11 00:00:32,619 --> 00:00:34,800 të ecin nëpër disa bazat e gjuhës, 12 00:00:34,800 --> 00:00:37,290 dhe pastaj të flasim për API Audio në nivel të lartë. 13 00:00:37,290 --> 00:00:41,140 Pastaj, Hugh do të flasim për disa nga fazat e prodhimit audio 14 00:00:41,140 --> 00:00:45,509 dhe pastaj demo këtë sequencer tmerrshëm Projekti ai ndërtoi dhe ju tregojnë kodin. 15 00:00:45,509 --> 00:00:48,050 Dhe pastaj, ne do të kemi kohë për Pyetjet në fund për njerëzit 16 00:00:48,050 --> 00:00:49,593 që janë këtu jetojnë. 17 00:00:49,593 --> 00:00:50,540 >> Hugh Zabriskie: Best. 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN: Best. 19 00:00:50,990 --> 00:00:51,383 >> Hugh Zabriskie: Best. 20 00:00:51,383 --> 00:00:52,170 Unë do të të mbështetur. 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN: Pra, gjërat e para të parë. 22 00:00:54,960 --> 00:00:57,840 Pra, një nga gjërat e mëdha në lidhje me Web Audio API 23 00:00:57,840 --> 00:01:00,480 është se nuk ka asnjë set deri nevojshme. 24 00:01:00,480 --> 00:01:04,230 Ajo vjen ndërtuar në të shfletuesit më moderne, 25 00:01:04,230 --> 00:01:08,630 duke përfshirë Chrome, EDGE, një e tërë bandë e others-- gjithë atyre 26 00:01:08,630 --> 00:01:12,650 pjesë që të mëdha të njerëzit janë duke përdorur sot. 27 00:01:12,650 --> 00:01:14,807 Kështu që nuk ka ngritur asnjë, përveç vetëm duke u 28 00:01:14,807 --> 00:01:16,890 një web server shkuar, për ju të merrni filluar punën 29 00:01:16,890 --> 00:01:18,420 në projektin tuaj, i cili është i madh. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Ne rekomandojmë goxha rëndë që ju e konsideroni 32 00:01:24,190 --> 00:01:26,530 duke përdorur Chrome për Mjete Zhvillimi JavaScript, 33 00:01:26,530 --> 00:01:30,260 vetëm për shkak se zhvilluesi i saj Mjetet janë me të vërtetë të fortë. 34 00:01:30,260 --> 00:01:33,220 Si një shembull të vetëm atë që ne do të thotë duke thënë hapur tuaj JavaScript 35 00:01:33,220 --> 00:01:38,600 console-- në qoftë se ju shkoni në Chrome dhe ju shikoni në ndonjë web faqe, 36 00:01:38,600 --> 00:01:43,897 dhe ju la klikoni Inspect Element, dhe pastaj 37 00:01:43,897 --> 00:01:46,730 ju shkoni në këtë pak drop-down të drejtë këtu dhe ju klikoni mbi tastierë, 38 00:01:46,730 --> 00:01:50,660 ju do të shihni se çfarë hap duket shumë si një komandë të shpejtë që ju 39 00:01:50,660 --> 00:01:53,720 mund të shihni në Mac tuaj, ose në ID. 40 00:01:53,720 --> 00:01:59,260 Dhe vetëm si kjo, ne mund të lloj urdhëron këtu, si të qarta, 41 00:01:59,260 --> 00:02:01,350 dhe komandat e tjera si kjo. 42 00:02:01,350 --> 00:02:04,267 Ne mund të krijojë variablave, si ne do të shohim më vonë në JavaScript. 43 00:02:04,267 --> 00:02:07,100 Dhe kështu që çdo gjë që ne mund të bëjmë në JavaScript, ne mund të bëjmë me tastierë, 44 00:02:07,100 --> 00:02:11,430 dhe kjo është një mënyrë super të dobishëm për të fillojnë të luajnë rreth me TV 45 00:02:11,430 --> 00:02:15,760 dhe duke u kënaqur me JavaScript drejtë të fjalës. 46 00:02:15,760 --> 00:02:18,290 Nuk ka ngritur kërkohet, e cila është me të vërtetë e bukur. 47 00:02:18,290 --> 00:02:18,790 Ftohtë. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Mbresëlënës. 50 00:02:22,880 --> 00:02:24,780 >> Pra, vetëm një gjë më shumë për të shtuar. 51 00:02:24,780 --> 00:02:27,780 Nëse keni ndonjë questions-- ka shumë prej jush që nuk janë këtu jetojnë, 52 00:02:27,780 --> 00:02:31,232 të ndjehen të lirë të email us-- këto janë adresat tona email. 53 00:02:31,232 --> 00:02:33,190 Nëse keni pyetje ju nuk doni të na pyesin, 54 00:02:33,190 --> 00:02:36,160 si, oh unë kam një bug në kodin tim, apo diçka 55 00:02:36,160 --> 00:02:39,270 kjo është pak më specifike, ndoshta Google atë më parë. 56 00:02:39,270 --> 00:02:42,340 Nuk janë një shumë e burimeve të mëdha në lidhje me Web Audio API atje. 57 00:02:42,340 --> 00:02:44,089 Është me të vërtetë mirë dokumentuar dhe ajo e të qenit 58 00:02:44,089 --> 00:02:47,194 përdorur nga një ton të njerëzve në industrisë, dhe njerëz të cilët janë vetëm 59 00:02:47,194 --> 00:02:48,610 ndërtuar gjëra zbavitëse për veten e tyre. 60 00:02:48,610 --> 00:02:51,306 Pra, nuk duhet të jetë shumë e burimeve atje. 61 00:02:51,306 --> 00:02:53,040 Mbresëlënës. 62 00:02:53,040 --> 00:02:56,100 >> I ftohtë, kështu që pse Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Ky diagram është pak e një evoluimin e rrugës 64 00:02:59,840 --> 00:03:04,100 shëndoshë në web është rritur me kalimin e kohës. 65 00:03:04,100 --> 00:03:13,080 Bgsound ishte si HTML tag origjinale se Internet Explorer përdoren për të mbështetur. 66 00:03:13,080 --> 00:03:16,790 Është e lejuar vetëm për tingëllon mjaft themelore, funksionalitetin nuk ishte shumë e fuqishme, 67 00:03:16,790 --> 00:03:19,380 dhe ju nuk mund të bëjë sekuenca e komplikuar, 68 00:03:19,380 --> 00:03:21,890 ose kontroll kur zë filluar dhe u ndal shumë fuqishëm. 69 00:03:21,890 --> 00:03:23,930 Pra, kjo nuk ishte veçanërisht zhvilluar mirë. 70 00:03:23,930 --> 00:03:27,470 Pastaj, pas kësaj, Flash erdhi along-- cili, 71 00:03:27,470 --> 00:03:31,712 Unë jam i sigurt se ju djema janë të gjithë të njohur me Flash-- ndoshta jo se si funksionon, 72 00:03:31,712 --> 00:03:32,920 por ju keni parë me siguri atë. 73 00:03:32,920 --> 00:03:35,586 Ju keni marrë për të rinovuar Flash tuaj Plug-në, gjithë atë lloj stuff, 74 00:03:35,586 --> 00:03:40,110 dhe që sigurisht zgjeruar gamën i funksionalitetit që ishte në dispozicion. 75 00:03:40,110 --> 00:03:45,370 Por duke e bërë përdoruesit të instaluar një plug-in është definitivisht 76 00:03:45,370 --> 00:03:48,480 një pengesë për të përfshirë Flash në aplikimin tuaj, apo jo? 77 00:03:48,480 --> 00:03:52,410 Sepse atëherë ju jeni i varur nga përdorues shkuar dhe gjetur këtë plug-in, 78 00:03:52,410 --> 00:03:54,660 dhe ndoshta duke u shndërruar nga jashtë këtë hap shtesë 79 00:03:54,660 --> 00:03:56,640 ata duhet të marrin për të përdorur app tuaj. 80 00:03:56,640 --> 00:04:01,270 Dhe pastaj nuk mund të jetë një update që do të thyejnë të gjithë aplikimin tuaj, 81 00:04:01,270 --> 00:04:03,880 dhe ai përfundon duke qenë një makth për zhvilluesi i saj, too. 82 00:04:03,880 --> 00:04:06,230 Kështu që ishte një barrikadë. 83 00:04:06,230 --> 00:04:10,480 >> Dhe pas kësaj erdhi së bashku, tag audio HTML, i cili 84 00:04:10,480 --> 00:04:16,579 është një tipar i HTML-- më moderne në të cilën sigurisht lejuar për shumë më tepër gjëra, 85 00:04:16,579 --> 00:04:20,050 por edhe gjëra që ju mund të bëni Ka qenë një pak të kufizuara vetëm 86 00:04:20,050 --> 00:04:22,730 si rezultat i gjërave se HTML ishte në gjendje të. 87 00:04:22,730 --> 00:04:26,060 Pra, kur të aktivizoni Java API, Web Audio API, 88 00:04:26,060 --> 00:04:29,290 u bë një standard praktikë në të gjithë shfletuesit, 89 00:04:29,290 --> 00:04:32,490 që me të vërtetë zgjeruar vendosur e mundësive për zhvilluesit 90 00:04:32,490 --> 00:04:36,590 të vërtetë të marrë në ndërtimin e gjëra të ftohtë për web. 91 00:04:36,590 --> 00:04:39,220 Për një kohë të gjatë nuk kishte qenë mjetet me të vërtetë të fuqishme 92 00:04:39,220 --> 00:04:44,360 për aplikime të native speakers audio, like-- të gjithë e dinë GarageBand, 93 00:04:44,360 --> 00:04:48,360 dhe atëherë padyshim ka më shumë Audio përzierjen kërkesat profesionale, 94 00:04:48,360 --> 00:04:49,640 dhe atë lloj stuff. 95 00:04:49,640 --> 00:04:52,690 Por nuk ka pasur një Cloud-- të vërtetë të mirë nuk 96 00:04:52,690 --> 00:04:55,811 Cloud, vërtet, unë mendoj Cloud-- platformë web-based 97 00:04:55,811 --> 00:04:58,310 që do të lejojë zhvilluesve të të ndërtuar aplikime për njerëzit 98 00:04:58,310 --> 00:05:00,570 për të bërë audio përzierjen. 99 00:05:00,570 --> 00:05:03,960 Dhe, ndërsa ai do t'ju tregojë më vonë, Web Audio API 100 00:05:03,960 --> 00:05:07,470 lejon për të vërtetë i fuqishëm gjëra të ndodhë me të vërtetë thjesht, 101 00:05:07,470 --> 00:05:09,597 e cila është pretty cool. 102 00:05:09,597 --> 00:05:12,680 Pra, kjo është udhëzim për pse ju duhet të ndiqte vazhdimin e seminarit, 103 00:05:12,680 --> 00:05:14,350 në thelb. 104 00:05:14,350 --> 00:05:17,880 >> Dhe tani, unë jam duke shkuar për të folur për disa elemente themelore vetëm JavaScript-- 105 00:05:17,880 --> 00:05:20,240 e gjuhës, në mënyrë që ne mund të jetë në të njëjtën faqe 106 00:05:20,240 --> 00:05:22,470 kur ne flasim për API pak më vonë. 107 00:05:22,470 --> 00:05:23,260 Ftohtë. 108 00:05:23,260 --> 00:05:26,192 >> Pra, kjo është një përmbledhje. 109 00:05:26,192 --> 00:05:27,150 Harrova kjo ishte këtu. 110 00:05:27,150 --> 00:05:27,510 Po. 111 00:05:27,510 --> 00:05:27,870 >> Hugh Zabriskie: Ka dy slides këtu. 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN: Kjo është përmbledhje e disa prej kufizimeve 113 00:05:30,245 --> 00:05:35,220 e detyrueshme, metodat e tjera të vjetra. 114 00:05:35,220 --> 00:05:37,828 Dhe pastaj tani, ne kemi këto gjëra. 115 00:05:37,828 --> 00:05:40,011 Ftohtë. 116 00:05:40,011 --> 00:05:40,510 Mbresëlënës. 117 00:05:40,510 --> 00:05:43,200 >> Pra, të domosdoshme JavaScript. 118 00:05:43,200 --> 00:05:47,230 Së pari gjërat parë, ka një ndryshim mjaft i rëndësishëm 119 00:05:47,230 --> 00:05:49,940 në JavaScript kundrejt në një gjuhë si C, në mënyrë 120 00:05:49,940 --> 00:05:52,050 se variablat janë krijuar. 121 00:05:52,050 --> 00:05:55,634 Pra në C, ne jemi të përdoret për të pasur të tipit variablave tona, e drejtë? 122 00:05:55,634 --> 00:05:57,800 Dhe unë nuk do të thotë lloj si shkruani ato në, unë do të thotë lloj 123 00:05:57,800 --> 00:06:01,900 si të caktojë atyre një kuptim type-- si, një int, një noton, një char. 124 00:06:01,900 --> 00:06:05,210 Në C, ishim mësuar me të vërtetë për pasur nevojë të krijojë një ndryshore 125 00:06:05,210 --> 00:06:09,690 dhe pastaj rrinë në atë tip për Gjithë kohës që ne i përdorim këtë ndryshore. 126 00:06:09,690 --> 00:06:13,990 Dhe kjo nuk është domosdoshmërisht e keqe, por kjo është ndoshta më e vështirë për t'u përdorur. 127 00:06:13,990 --> 00:06:16,190 Një nga karakteristikat e ftohtë JavaScript është e 128 00:06:16,190 --> 00:06:19,740 se variablat janë atë që e quajti "shtypur dinamike", e cila 129 00:06:19,740 --> 00:06:22,500 do të thotë se unë mund të krijojë një ndryshueshme me atë sintaksë, 130 00:06:22,500 --> 00:06:25,800 varX barabartë me 5, për shembull. 131 00:06:25,800 --> 00:06:27,790 Që krijon fillimisht një numër të plotë variable-- 132 00:06:27,790 --> 00:06:29,870 drejtë nën individualitet somewhere-- por unë 133 00:06:29,870 --> 00:06:33,040 mund ta ndryshojë këtë variabël për t'iu referuar një varg 134 00:06:33,040 --> 00:06:35,820 pa bërë asgjë si duke krijuar një ndryshore të re. 135 00:06:35,820 --> 00:06:37,880 Unë nuk kam nevojë për t'u shqetësuar për tipit ndryshimin. 136 00:06:37,880 --> 00:06:45,440 JavaScript e di se lloji të ndryshuar, dhe kjo ndodh dinamike. 137 00:06:45,440 --> 00:06:48,510 >> Pra, ka përfitime dhe të meta në atë, 138 00:06:48,510 --> 00:06:51,250 si të gjithë ata që ka punuar në JavaScript për një kohë mund të dini. 139 00:06:51,250 --> 00:06:53,600 Ka raste kur ju mund të aksidentalisht 140 00:06:53,600 --> 00:06:57,720 të ndryshojë llojin e një variable dhe Nuk trajtuar këtë lloj ndryshimi, 141 00:06:57,720 --> 00:07:01,120 dhe pastaj juaj JavaScript mund të crash-- ose një përjashtim 142 00:07:01,120 --> 00:07:06,070 t'u hedhur, sepse ju do të keni llojin e gabuar kur ju presin një lloj. 143 00:07:06,070 --> 00:07:07,040 Ftohtë. 144 00:07:07,040 --> 00:07:11,470 >> Pra, scoping-- cila është si, në qoftë se ne kujtoj javët e para në kurs, 145 00:07:11,470 --> 00:07:15,420 referohet si dukshme një variable është dhe në atë zonë të kodit. 146 00:07:15,420 --> 00:07:18,400 E gjithë kjo duket shumë e ngjashme për mënyrën se si ajo duket në C. 147 00:07:18,400 --> 00:07:24,755 Pra, variablat janë scoped në përgjithësi brenda formatimin e teksteve kaçurrel brenda një funksion, 148 00:07:24,755 --> 00:07:27,005 dhe pastaj ka edhe Variablat globalisht-scoped se 149 00:07:27,005 --> 00:07:29,171 are-- në qoftë se ju shkruani një ndryshore jashtë funksionit, 150 00:07:29,171 --> 00:07:31,790 ajo do të jetë i dukshëm në tërë tekstin. 151 00:07:31,790 --> 00:07:35,840 >> Një dallim në mes JavaScript dhe C në mënyrë të veçantë, 152 00:07:35,840 --> 00:07:40,280 është se në qoftë se ju të deklarojë një globale kudo ndryshueshme në një skedar teksti 153 00:07:40,280 --> 00:07:43,324 kjo është e dukshme në çdo funksion brenda këtij file teksti. 154 00:07:43,324 --> 00:07:44,240 Kjo është e saktë, e drejtë? 155 00:07:44,240 --> 00:07:46,330 >> Hugh Zabriskie: Po. 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN: Pra, kjo është gjithashtu një pak bit i shokuar në krahasim me C, 157 00:07:49,120 --> 00:07:52,660 ku ne gjithmonë duhet të kishte tonë përkufizime ndryshueshme mësipërme vendet 158 00:07:52,660 --> 00:07:53,770 ato janë përdorur. 159 00:07:53,770 --> 00:07:57,957 Kjo nuk është një rregull që është zbatuar më, kështu, një pak të ndryshme. 160 00:07:57,957 --> 00:08:00,540 Dhe përsëri vetëm për të ritheksoj, globale kundrejt variables-- lokale 161 00:08:00,540 --> 00:08:03,457 shumë të ngjashme me C. Ju mund të keni dy variabla me të njëjtin emër, 162 00:08:03,457 --> 00:08:06,540 dhe kanë një nga emrat e tyre të hije nga një variabël lokale, nëse njëri prej tyre 163 00:08:06,540 --> 00:08:07,546 ishte globale. 164 00:08:07,546 --> 00:08:09,420 Lloj Pra, i ngjashëm i Problemet se disa prej jush 165 00:08:09,420 --> 00:08:11,920 mund të kandidojë në në disa e problemit tuaj vendos deri tani. 166 00:08:11,920 --> 00:08:14,450 Ftohtë, kështu që është variablave. 167 00:08:14,450 --> 00:08:20,310 >> Flow Control, që do të thotë si, nëse-else-- stuff-- logjik dhe sythe. 168 00:08:20,310 --> 00:08:24,510 Pra, për të filluar me, kjo është ajo që nëse-tjetër deklarata duket si në JavaScript. 169 00:08:24,510 --> 00:08:29,750 Vendosja e gjërave të ndryshme në linjat nuk është e rëndësishme. 170 00:08:29,750 --> 00:08:34,409 Kjo është vetëm një prej konventave për mënyrën se si ne strukturën kodi. 171 00:08:34,409 --> 00:08:38,634 Ashtu si në C, ne kemi një "në qoftë se," një deklaratë kllapë. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 Kjo nuk është ajo që unë do të thotë të bëj. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Unë e bëri atë përsëri. 176 00:08:45,550 --> 00:08:46,841 >> Hugh Zabriskie: Tentimi për të dalë? 177 00:08:46,841 --> 00:08:49,770 SAM GREEN: Jo, unë jam vetëm duke u përpjekur për të zmadhuar. 178 00:08:49,770 --> 00:08:50,660 Kjo nuk ka rëndësi. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Pra, ne kemi një "nëse" deklaratë dhe ne kemi një gjendje brenda saj 181 00:08:59,370 --> 00:09:03,130 që vlerëson të vërtetë apo e rreme, dhe që përcakton ose jo 182 00:09:03,130 --> 00:09:04,510 ne hyjmë në atë bllok i kodit. 183 00:09:04,510 --> 00:09:09,860 Dhe gjithashtu, ne kemi një tjetër-nëse, dhe një tjetër, ashtu si ne jemi duke përdorur për të në C. 184 00:09:09,860 --> 00:09:14,010 >> Ju gjithashtu duhet të jetë goxha të rehatshme të drejtën off bat me sythe, 185 00:09:14,010 --> 00:09:16,440 sepse ata gjithashtu duken shumë si C duket. 186 00:09:16,440 --> 00:09:19,600 Por ju do të vëreni edhe një herë se ne kanë, në vend të int initializations, 187 00:09:19,600 --> 00:09:22,570 ne kemi initializations var. 188 00:09:22,570 --> 00:09:24,650 Dhe unë mendoj se ju keni të jenë të kujdesshëm për të bërë 189 00:09:24,650 --> 00:09:28,460 i sigurt që ju nuk do të ndryshojë vlerën e unë nga një int në një varg, 190 00:09:28,460 --> 00:09:31,780 për shembull, për shkak se kjo do të të shkaktojë sjellje të çuditshme që ju nuk mund 191 00:09:31,780 --> 00:09:32,280 presin. 192 00:09:32,280 --> 00:09:35,750 Por kjo duhet të shikoni goxha e njohur, po ashtu. 193 00:09:35,750 --> 00:09:39,460 >> Pra, kjo është ajo ku gjërat fillojnë të të marrë një pak i çmendur në JavaScript 194 00:09:39,460 --> 00:09:44,920 për dikë që është duke shkuar nga një sfond i C. Ka funksione 195 00:09:44,920 --> 00:09:48,070 në JavaScript, dhe ka një mënyrë për të deklaruar një funksion që duket 196 00:09:48,070 --> 00:09:50,361 lloj i ngjashëm me C, dhe atëherë ka një tjetër që 197 00:09:50,361 --> 00:09:52,450 duket lloj i ndryshëm. 198 00:09:52,450 --> 00:09:54,930 >> Versioni i parë, të cilat ne mund të shohim këtu, 199 00:09:54,930 --> 00:09:59,260 është lloj i C-si, ku të themi, kjo është një funksion, 200 00:09:59,260 --> 00:10:01,490 t'i jepte një emër, të dhënë numri i argumenteve, 201 00:10:01,490 --> 00:10:05,150 dhe pastaj përmbajtja e funksionit shkoni brenda këtyre formatimin e teksteve kaçurrel. 202 00:10:05,150 --> 00:10:08,850 Ne do të shohim një shembull të Argumentet në vetëm një sekondë. 203 00:10:08,850 --> 00:10:13,420 >> Ndërsa në rreshtin tjetër, ne shohim, oh, këtu është një ndryshore të quajtur "myFunction" 204 00:10:13,420 --> 00:10:17,546 dhe ne barabartë atë për këtë function-- gjenerik thing-- se 205 00:10:17,546 --> 00:10:19,170 nuk duket të ketë ndonjë gjë në vazhdim e sipër. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Arsyeja që është e ndryshme se C është se JavaScript 208 00:10:26,080 --> 00:10:30,040 është ajo që quhet një gjuhë funksionale, ose ka elemente funksionale, që do të thotë 209 00:10:30,040 --> 00:10:33,510 që funksionet janë në fakt vlera. 210 00:10:33,510 --> 00:10:39,520 Dhe kjo do të thotë që ne mund të vënë një ndryshore të barabartë një funksion 211 00:10:39,520 --> 00:10:43,210 dhe më pas të shkojë atë funksion rreth, të kalojë atë si argument, 212 00:10:43,210 --> 00:10:46,550 të bëjë të gjitha llojet e gjëra si kjo me funksione. 213 00:10:46,550 --> 00:10:49,682 >> Një gjë tjetër për të note-- Funksionet janë të shkruara 214 00:10:49,682 --> 00:10:51,140 me një numër të caktuar të argumenteve. 215 00:10:51,140 --> 00:10:54,056 Ne do të shohim një shembull i një funksioni me një argument në rrëshqitje të ardhshëm. 216 00:10:54,056 --> 00:10:56,720 Por JavaScript nuk do të çirrem në ju, nëse ju përpiqeni 217 00:10:56,720 --> 00:10:59,330 për të përdorur një funksion me të Numri i gabuar i argumenteve. 218 00:10:59,330 --> 00:11:05,310 Ajo thjesht do të bëjë çmos për të bërë bëjnë, do të thotë se në qoftë se ju të kalojë, 219 00:11:05,310 --> 00:11:09,410 ju e quani një funksion që pret një Argumenti pa argumentin, të gjitha që 220 00:11:09,410 --> 00:11:13,990 do të ndodhë është se do të bëjë çmos për të përpiqen dhe të ekzekutuar atë kod, 221 00:11:13,990 --> 00:11:16,541 dhe në qoftë se ai përfundimisht shkon në një përjashtim apo një gabim, 222 00:11:16,541 --> 00:11:19,790 ajo do të hedhin se përjashtim dhe vetëm i mbajnë going-- e cila është vetëm një nga mënyrat 223 00:11:19,790 --> 00:11:21,070 se JavaScript punon. 224 00:11:21,070 --> 00:11:21,781 Po. 225 00:11:21,781 --> 00:11:24,207 >> Audienca: Çfarë ndodh nëse ka shumë argumente? 226 00:11:24,207 --> 00:11:26,040 SAM GREEN: Pra, Pyetja ishte, çfarë ndodh 227 00:11:26,040 --> 00:11:27,380 nëse ka shumë argumente? 228 00:11:27,380 --> 00:11:29,171 Dhe përgjigja është se JavaScript do të vetëm 229 00:11:29,171 --> 00:11:32,120 injorojnë ato që janë pas atyre se pret. 230 00:11:32,120 --> 00:11:36,420 Ajo do të përpiqen për të ekzekutuar funksionin e quajnë si në qoftë se ajo ishte vetëm dy të parët. 231 00:11:36,420 --> 00:11:37,075 E drejtë? 232 00:11:37,075 --> 00:11:37,700 >> Hugh Zabriskie: Kjo është e drejtë, vërtet. 233 00:11:37,700 --> 00:11:39,449 Në mënyrë të ngjashme, në qoftë se ka janë shumë pak argumente, 234 00:11:39,449 --> 00:11:42,640 ajo vetëm lloj i jep null të gjithë Argumentet ajo nuk ka ndonjë vlerat 235 00:11:42,640 --> 00:11:43,660 për. 236 00:11:43,660 --> 00:11:45,810 >> SAM GREEN: Cili mund të në fakt të jetë i dobishëm, në qoftë se ju 237 00:11:45,810 --> 00:11:49,060 dua të shkruaj një funksion që merr argumente numër të ndryshueshëm. 238 00:11:49,060 --> 00:11:55,830 Ju mund të vendosni vlerat e prezgjedhura në përkufizimi i funksionit, 239 00:11:55,830 --> 00:11:59,060 dhe kjo mund të injorojë faktin se input nuk është atje. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Kështu që unë dua të flas pak më shumë në lidhje me këtë plumbin e fundit 242 00:12:04,000 --> 00:12:05,541 Pika, e cila është funksione janë vlera. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Ky është një shembull që është i një pak mendje-defekt 245 00:12:11,010 --> 00:12:14,880 në qoftë se ju vetëm lexuar atë, dhe nuk mendoj në lidhje me atë që po ndodh për një të dytë. 246 00:12:14,880 --> 00:12:17,910 Pra, le të shohim vetëm në rreshtin e parë këtu. 247 00:12:17,910 --> 00:12:24,360 Ne e kemi këtë ndryshueshme, f1, që ne themi është një funksion që e bën këtë gjë. 248 00:12:24,360 --> 00:12:28,535 Dhe përmbajtjen e funksionit janë console.log ('hello'). 249 00:12:28,535 --> 00:12:32,220 Ju mund të mendoj për console.log si më të JavaScript ekuivalent i printf. 250 00:12:32,220 --> 00:12:35,510 Pra, çfarë do të ndodhë është, në qoftë se ne drejtuar këtë kod në shfletuesin tonë, 251 00:12:35,510 --> 00:12:37,530 ajo do të shtypura nga një varg. 252 00:12:37,530 --> 00:12:39,342 Unë mund të tregojë se. 253 00:12:39,342 --> 00:12:42,300 Audienca: Me log, edhe pse, bën që thotë se është duke u regjistruar diku? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN: Po. 255 00:12:42,550 --> 00:12:44,216 Kështu që unë do të ju tregojnë se çfarë do të ndodhë. 256 00:12:44,216 --> 00:12:48,085 Pra, pyetja është, çfarë do të thotë Identifikohu? 257 00:12:48,085 --> 00:12:51,262 >> Hugh Zabriskie: Pra console.log është si printf për C. 258 00:12:51,262 --> 00:12:52,970 SAM GREEN: Pra console.log është si printf, 259 00:12:52,970 --> 00:12:59,240 kështu që në qoftë se unë kam këtë console.log ('hello'), dhe unë e quaj se, string "hello" 260 00:12:59,240 --> 00:13:00,730 merr shtypura jashtë në tastierë. 261 00:13:00,730 --> 00:13:03,340 Kjo është konsol. 262 00:13:03,340 --> 00:13:05,930 Është vetëm si printf, ku ajo printon për jashtë standardit. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 Dhe ne do të shohim në një minutë, por kjo është në fakt 265 00:13:11,230 --> 00:13:16,529 duke iu referuar konsol objektin, dhe duke e quajtur një metodë në atë objekt. 266 00:13:16,529 --> 00:13:18,320 Kjo do të bëjë më shumë kuptim në një minutë, kur ne 267 00:13:18,320 --> 00:13:20,660 merrni për të folur për objekteve në JavaScript, 268 00:13:20,660 --> 00:13:22,509 por unë mendova se do të përmend vetëm se. 269 00:13:22,509 --> 00:13:24,300 Hugh Zabriskie: Ne jemi të përdoret për të në C, right-- 270 00:13:24,300 --> 00:13:27,580 ne zakonisht shkruani një program të madh në kryesore për të bërë asgjë. 271 00:13:27,580 --> 00:13:30,700 Por ajo që është e ftohtë në JavaScript është që ju kanë këtë lloj përkthyesi që 272 00:13:30,700 --> 00:13:33,620 Shkon në kohë reale, kështu që merr vetëm rresht pas rreshti, 273 00:13:33,620 --> 00:13:35,320 ajo vetëm mund të interpretojë se në vend. 274 00:13:35,320 --> 00:13:37,403 Dhe ajo mban gjurmët e gjëra që kanë drejtuar më parë, 275 00:13:37,403 --> 00:13:41,620 kështu që kjo është një mjet mjaft i dobishëm për përdorni console.log, ose konsol, 276 00:13:41,620 --> 00:13:46,870 në përgjithësi, për vetëm duke luajtur rreth me JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM GREEN: Pra, duke shkuar prapa në këtë example-- rreshtin e dytë të kodit 278 00:13:51,420 --> 00:13:55,320 këtu është shumë marramendëse në kokën time. 279 00:13:55,320 --> 00:13:59,790 Hera e parë që kam lexuar këtë, ajo ishte si, çfarë po ndodh? 280 00:13:59,790 --> 00:14:04,580 Pra, çfarë po ndodh është, kjo Deklarata funksion thotë: 281 00:14:04,580 --> 00:14:10,170 Unë kam një funksion të quajtur F2 që është duke pritur një argument, f, 282 00:14:10,170 --> 00:14:12,990 dhe pastaj ajo e quan se funksion, f, e cila 283 00:14:12,990 --> 00:14:17,652 u miratua në atë si një argument pa argumente vetë. 284 00:14:17,652 --> 00:14:19,110 Pra, kjo mund të ketë qenë konfuze. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Nëse ne e kuptojmë këtë si F2 merr f1 si një argumenti, dhe pastaj brenda f2, 287 00:14:28,400 --> 00:14:31,190 f merr called-- që do të thotë se këtë linjë të kodit, 288 00:14:31,190 --> 00:14:34,192 pas këtyre dy linjave të Kodi, rezulton në "hello" 289 00:14:34,192 --> 00:14:35,400 duke shtypur në tastierë. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Fakti që ne mund të kalojë Funksionet e rreth si vlera 292 00:14:44,910 --> 00:14:47,870 përfundon duke qenë një nga më të Karakteristika të fuqishme të JavaScript 293 00:14:47,870 --> 00:14:49,700 si një gjuhë programimi. 294 00:14:49,700 --> 00:14:52,782 Jashtë të gjitha të gjëra të tmerrshme mund të bëjë, 295 00:14:52,782 --> 00:14:54,990 ashtu si një tipar i gjuha në aspektin e mënyrës 296 00:14:54,990 --> 00:14:58,400 se ajo bën gjërat lehtë të programit dhe lejon 297 00:14:58,400 --> 00:15:01,060 për gjëra që nuk janë veçanërisht të i përshtatshëm për web, 298 00:15:01,060 --> 00:15:04,500 programimit funksional dhe funksionale Aspektet programimin e JavaScript 299 00:15:04,500 --> 00:15:07,130 është një nga të më koncepte të fuqishme që 300 00:15:07,130 --> 00:15:11,030 ekziston në JavaScript-- nëse ju pyesni mua. 301 00:15:11,030 --> 00:15:11,960 Ftohtë. 302 00:15:11,960 --> 00:15:13,534 >> Pra, gjë tjetër. 303 00:15:13,534 --> 00:15:16,450 Përveç kësaj për të qenë funksional, ka edhe elemente të JavaScript 304 00:15:16,450 --> 00:15:20,510 që janë object-oriented, i cili është një shumë 305 00:15:20,510 --> 00:15:23,800 fjalë popullore lëvizje në shkenca kompjuterike. 306 00:15:23,800 --> 00:15:27,040 Programimit object-oriented është një gjë me të vërtetë popullor. 307 00:15:27,040 --> 00:15:34,210 Java ka një version të që, ku unë besoj se çdo vlerë është edhe 308 00:15:34,210 --> 00:15:41,475 një objekt, që do të thotë se çdo objekt përfundon së bashku disa numrin e vlerave. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Pra, për vlerat që janë të thjeshta, si një numër i plotë, si varX barabartë me 5, 311 00:15:49,750 --> 00:15:52,250 se objekti vetëm përfundon se një vlerë. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Por ne mund të imagjinojmë një situatë where-- ne mund të mendojmë për situatat në C 314 00:15:59,036 --> 00:16:00,910 ku kemi dashur të bëjmë diçka me structs, 315 00:16:00,910 --> 00:16:03,285 për shembull, që përfundon disa Vlerat së bashku dhe bën 316 00:16:03,285 --> 00:16:05,870 të vërtetë e lehtë për të kaluar gjërat rreth. 317 00:16:05,870 --> 00:16:09,270 Kjo është kur një objekt është në JavaScript. 318 00:16:09,270 --> 00:16:12,340 >> Është e rëndësishme të kujtoni kur them se objekte përfundoi 319 00:16:12,340 --> 00:16:15,330 disa numri i vlerave së bashku, që funksionet janë gjithashtu 320 00:16:15,330 --> 00:16:21,506 vlerat, që do të thotë se funksionon mund të jetë brenda një objekti JavaScript. 321 00:16:21,506 --> 00:16:26,910 Dhe arsyeja që është e rëndësishme është se, ndërsa ne shpesh 322 00:16:26,910 --> 00:16:30,290 mendoj se e quajtur një metodë në një objekt që është 323 00:16:30,290 --> 00:16:35,200 e një afat popullore nga tjetri gjuhë popullore object-oriented, 324 00:16:35,200 --> 00:16:39,330 një nga diferencave është se të gjitha që një metodë është në JavaScript 325 00:16:39,330 --> 00:16:47,270 është një vlerë e ruajtur në brendësi të një objekti që kryen disa action-- ndoshta 326 00:16:47,270 --> 00:16:51,850 duke përdorur vlerat e tjera që janë brenda e atë objekt, por jo domosdoshmërisht. 327 00:16:51,850 --> 00:16:56,930 Kështu që ju mund të imagjinohet një situatë, unë mendoj në një pak e një mënyrë të çmendur, 328 00:16:56,930 --> 00:17:02,990 ku ju quajti një metodë të një kundërshtojnë në një tjetër objekt, për shembull. 329 00:17:02,990 --> 00:17:06,010 Pra, kjo është pak i shokuar në këtë mënyrë. 330 00:17:06,010 --> 00:17:09,369 >> Dhe ju gjithashtu mund të ndryshojë metodat e që janë të lidhur me një objekt 331 00:17:09,369 --> 00:17:13,740 duke caktuar se metoda A funksion i ri, i cili eshte gjithashtu 332 00:17:13,740 --> 00:17:18,250 mjaft i ndryshëm nga tjetri gjuhë object-oriented, ku 333 00:17:18,250 --> 00:17:21,410 dikur ne të deklarojë një objekt dhe ilustroj me shembull konkret atë, 334 00:17:21,410 --> 00:17:25,839 ne nuk mund të ndryshojë metodat që janë lidhur me atë objekt më. 335 00:17:25,839 --> 00:17:28,680 Pra, kjo është mjaft e ndryshme. 336 00:17:28,680 --> 00:17:29,570 Ftohtë. 337 00:17:29,570 --> 00:17:34,010 >> Kështu që këtu është një shembull, së pari, e një objekti në veprim. 338 00:17:34,010 --> 00:17:36,390 Kjo është ajo që quhet një objekt i përgjithshëm, i cili 339 00:17:36,390 --> 00:17:39,460 do të thotë se nuk ka asnjë Emri veçanti, nuk ka një klasë, 340 00:17:39,460 --> 00:17:42,190 kjo është vetëm një mbështjellës i vlerave. 341 00:17:42,190 --> 00:17:49,790 Dhe mënyra që duket është, ne kemi kjo palë e jashtme e kaçurrel formatimin e teksteve këtu 342 00:17:49,790 --> 00:17:57,950 që tregojnë për JavaScript dhe thonë se, kjo është një objekt. 343 00:17:57,950 --> 00:18:02,130 Vlerat brenda saj janë secili vlera brenda 344 00:18:02,130 --> 00:18:04,590 e objektit që duhet të të palosur. 345 00:18:04,590 --> 00:18:09,180 Dhe brenda këtij objekti, ne pastaj kemi palë kryesore me vlerë, 346 00:18:09,180 --> 00:18:13,880 ku çelësi i referohet emrit të vlerës brenda e objektit, 347 00:18:13,880 --> 00:18:16,790 dhe side-- tjetër përballë here-- zorrës së trashë 348 00:18:16,790 --> 00:18:19,850 është vlera aktuale që duhet të ruhen. 349 00:18:19,850 --> 00:18:26,210 >> Kështu që ju shihni këtu se ne kemi një Çelësi i quajtur fn me vlerës Sam, 350 00:18:26,210 --> 00:18:29,430 i ndjekur nga një presje, duke thënë se mbi hyrjen e ardhshme. 351 00:18:29,430 --> 00:18:33,560 Pastaj një kyç të quajtur ln, me një vlerë prej gjelbër, 352 00:18:33,560 --> 00:18:35,840 i ndjekur nga një presje, e ndjekur nga "print" 353 00:18:35,840 --> 00:18:43,209 e cila do të ketë një vlerë funksion që do të bëjë këtë linjë të kodit. 354 00:18:43,209 --> 00:18:45,500 Le të bëjmë një hap prapa dhe shpaketoj çfarë po ndodh këtu. 355 00:18:45,500 --> 00:18:47,280 Pra, kjo është pak e komplikuar, dhe ne jemi duke parë diçka të re 356 00:18:47,280 --> 00:18:48,071 për herë të parë. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 E "kjo" Keyword është gjë e re ne jemi duke parë këtu, dhe çfarë kjo e bën 359 00:18:55,065 --> 00:19:00,540 është, i referohet aktuale kundërshtojë në fushëveprimin, e drejtë? 360 00:19:00,540 --> 00:19:03,990 Pra, kur themi, kjo tregon të gjithë rrugën prapa 361 00:19:03,990 --> 00:19:08,140 për tërë këtë object-- kur ne bëjmë this.fn, 362 00:19:08,140 --> 00:19:11,990 ne jemi duke shkuar për të shkuar gjatë gjithë rrugës prapa në këtë objekt, të shkojnë në vlerën fn 363 00:19:11,990 --> 00:19:16,471 dhe për të marrë Sam, të tërheqë atë gjatë gjithë rrugës prapa, ngjit atë këtu, dhe pastaj të lëvizë. 364 00:19:16,471 --> 00:19:19,838 >> Audienca: Pra, me rikthim, është që bëhet për shkak të parametri 365 00:19:19,838 --> 00:19:20,621 përkufizim? 366 00:19:20,621 --> 00:19:23,870 SAM GREEN: Pra pyetja ishte, është rikthim bëhet për shkak të parametri 367 00:19:23,870 --> 00:19:24,727 përkufizim? 368 00:19:24,727 --> 00:19:25,435 Po, absolutisht. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Çfarë do të ndodhë këtu është, kjo dot thotë në JavaScript, 371 00:19:32,470 --> 00:19:39,990 OK, unë jam marrë disa vlera nga ky objekt nga vetja ime. 372 00:19:39,990 --> 00:19:46,375 Dhe atëherë ajo do të shikoni për një hyrje quajtur FN, dhe nëse e gjen atë, 373 00:19:46,375 --> 00:19:48,470 ajo do të kthehet se value-- kështu, është sam. 374 00:19:48,470 --> 00:19:51,540 Por unë mund të keni shtypur diçka që nuk është përcaktuar këtu, 375 00:19:51,540 --> 00:19:54,090 dhe pastaj ajo do të vetëm kthehen undefined-- që 376 00:19:54,090 --> 00:19:58,250 është një gjë që mund të aktivizoni Java bërë, të cilat mund të kenë përfitime, 377 00:19:58,250 --> 00:20:03,190 por kjo është also-- në qoftë se ju bëni një typo, ajo mund të rezultojë në gabime pazakontë. 378 00:20:03,190 --> 00:20:05,617 Pra, kjo vetëm do të përpiqemi për të gjetur çdo gjë që ju thoni atë për të gjetur 379 00:20:05,617 --> 00:20:07,700 dhe kjo nuk do të ankohen në qoftë se nuk e gjejnë atë. 380 00:20:07,700 --> 00:20:11,390 Ajo do të them vetëm, unë nuk e bëri gjeni atë, dhe pastaj të lëvizë. 381 00:20:11,390 --> 00:20:17,581 Pra, kjo do të jetë e pacaktuar, plus bosh, plus mbiemri. 382 00:20:17,581 --> 00:20:18,080 Po. 383 00:20:18,080 --> 00:20:21,070 Dhe pastaj ne mund të shohim se në qoftë se ne atëherë mund të shkojë poshtë dhe access-- 384 00:20:21,070 --> 00:20:25,450 dhe ne e quajmë tf.print () me kllapa. 385 00:20:25,450 --> 00:20:30,000 Ajo do të thërrasë atë shtypura Funksioni pa argumente, e drejtë? 386 00:20:30,000 --> 00:20:34,490 Por në qoftë se ne vetëm tha tf.print () pikëpresje, pa kllapa, 387 00:20:34,490 --> 00:20:37,480 të gjitha ato që do të kishte bërë është tërhequr jashtë funksionit nga vlera, 388 00:20:37,480 --> 00:20:40,609 por nuk quhet në të vërtetë atë. 389 00:20:40,609 --> 00:20:41,162 Ftohtë. 390 00:20:41,162 --> 00:20:42,870 Hugh Zabriskie: Nëse ne kemi bërë një objekt? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: Sigurisht, le të bëjë atë. 392 00:20:44,161 --> 00:20:48,750 Kështu që unë mund të lëvizin këtë shembull për konsol. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Ne mund të imagjinojmë se unë kam një objekt. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Pra, kjo është një objekt i thjeshtë. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Ky është një objekt i cili përmban dy Vlerat me dy çelësat, dy vlera kryesore 399 00:21:11,050 --> 00:21:12,710 çifte. 400 00:21:12,710 --> 00:21:21,850 Kështu që unë pastaj mund të hyni në vlerën e ruajtur brenda këtij objekti duke bërë x.x1, 401 00:21:21,850 --> 00:21:23,400 për shembull, dhe të shkoj 1 mbrapa. 402 00:21:23,400 --> 00:21:29,590 Gjithashtu, x.x2, të merrni atë vlerë mbrapa. 403 00:21:29,590 --> 00:21:33,330 >> Dhe tani gjë me të vërtetë ftohtë është, unë mund të në fakt shtoni diçka për këtë objekt 404 00:21:33,330 --> 00:21:34,316 pasi unë e kam krijuar atë. 405 00:21:34,316 --> 00:21:36,315 Kështu që ju mund të imagjinoni, le të thonë se unë kam një funksion. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Hugh Zabriskie: Ju duhet të bëni Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN: Oh, kjo është i bezdisshëm. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Çfarë e bëri atë nuk pëlqen? 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 Këtu ne do të shkojmë. 414 00:22:08,691 --> 00:22:09,190 Ftohtë. 415 00:22:09,190 --> 00:22:12,840 >> Kështu që unë kam krijuar vetëm ky funksion, f, që 416 00:22:12,840 --> 00:22:17,590 do të shkojë në tanishme objekt dhe this.x1 shtypura. 417 00:22:17,590 --> 00:22:20,330 Pra, nëse unë vetëm thirrje f nga në vetvete, asgjë nuk po ndodh 418 00:22:20,330 --> 00:22:26,970 të ndodhë, të drejtë, sepse nuk ka x1 fushë në objektin është e referuar. 419 00:22:26,970 --> 00:22:39,710 Por, në qoftë se unë them, x.f = f, dhe pastaj unë quajnë x.f (), unë jam duke shkuar për të marrë përsëri 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Se funksioni f është tani lidhur me objekt x, 422 00:22:46,530 --> 00:22:51,800 e cila ka një kyç të quajtur x1 lidhur me vlere 1, 423 00:22:51,800 --> 00:22:54,570 kështu që kur ne e quajmë this.x1, është do të gjeni atë që është në kërkim të 424 00:22:54,570 --> 00:22:56,450 dhe të jetë në gjendje për të shtypur një vlerë jashtë. 425 00:22:56,450 --> 00:22:58,700 Pra, kjo është vetëm një shembull këtij lloji të gjërave çmendur 426 00:22:58,700 --> 00:23:01,190 ju mund të bëni me objekte në JavaScript. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Kështu që versioni ishte version gjenerik, kuptimi 429 00:23:07,560 --> 00:23:13,780 që ne kemi krijuar një objekt duke përdorur këtë kllapa simbol notation-- Braçe, 430 00:23:13,780 --> 00:23:16,880 rather-- dhe kjo është dobishëm në qoftë se ne vetëm duam 431 00:23:16,880 --> 00:23:21,440 një shembull i një objekt të veçantë, por çfarë nëse ne duam të kemi më shumë se një 432 00:23:21,440 --> 00:23:22,210 të të njëjtit lloj? 433 00:23:22,210 --> 00:23:24,440 Dhe përgjigja për këtë Pyetja është, ka shumë gjëra të 434 00:23:24,440 --> 00:23:26,760 quajtur klasa në JavaScript, si dhe. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Ne mund të krijojë një funksion që ka një lloj të inicializimit 437 00:23:36,420 --> 00:23:41,690 për një objekt të huaj, dhe ne do të themi, si, 438 00:23:41,690 --> 00:23:44,550 class-- im kështu emrin i object-- reusable 439 00:23:44,550 --> 00:23:47,100 është e barabartë me funksion që përcakton atë. 440 00:23:47,100 --> 00:23:52,280 Pra, çfarë kjo do të jetë e barabartë të po krijon një objekt që 441 00:23:52,280 --> 00:23:55,930 do të jetë vetëm donte, mbajtëse kaçurrel, rr, zorrës së trashë, 442 00:23:55,930 --> 00:23:59,630 kjo është një varg, pikëpresje, mbajtëse kaçurrel. 443 00:23:59,630 --> 00:24:01,880 Që do të jetë i përgjithshëm objekt ne nisja, 444 00:24:01,880 --> 00:24:06,380 me një ndryshim të qenë në Linjat e ardhshëm ne kemi krijuar një prototip, i cili 445 00:24:06,380 --> 00:24:11,190 do të thotë se është një çelës që parazgjedhur shtojmë objektin tonë 446 00:24:11,190 --> 00:24:13,970 ka vlerën më të listuara këtu. 447 00:24:13,970 --> 00:24:20,570 Do të thotë se, kur unë krijuar një të re shembull i këtij objekti MyClass, 448 00:24:20,570 --> 00:24:27,440 ajo do të ketë para-ndërtuar brenda ajo një vlerë quajtur str dhe një tjetër vlerë 449 00:24:27,440 --> 00:24:32,418 quajtur myPrint, i cili është do të jetë një funksion. 450 00:24:32,418 --> 00:24:32,918 Mbresëlënës. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> I madh. 453 00:24:37,990 --> 00:24:40,710 Pra, gjëja e fundit për të thonë se rreth JavaScript 454 00:24:40,710 --> 00:24:46,430 është se ajo është me të vërtetë e dobishme për çfarë quhen operacionet asinkron. 455 00:24:46,430 --> 00:24:52,500 Do të thotë asinkron është se ne mund të presin për disa operacion 456 00:24:52,500 --> 00:24:57,870 për të përfunduar para se të shkojë në, por lëvizin në ndërkohë që ne presim 457 00:24:57,870 --> 00:24:59,690 dhe pastaj të ketë diçka të ndodhë më vonë. 458 00:24:59,690 --> 00:25:03,480 Dhe ajo që dua të them me këtë është, ju mund të imagjinohet një situatë ku 459 00:25:03,480 --> 00:25:06,850 ju të dërgoni një kërkesë për disa web server diku, 460 00:25:06,850 --> 00:25:09,670 dhe ajo do të të ju dërgojnë prapa disa copë të madhe të të dhënave, e drejtë? 461 00:25:09,670 --> 00:25:13,320 Dhe përdoruesit tuaj mund të presim në ndërkohë që kjo të ndodhë, 462 00:25:13,320 --> 00:25:15,200 dhe asgjë nuk mund të jetë ndodh në atë kohë. 463 00:25:15,200 --> 00:25:18,110 Por kjo nuk është një dizajn të madh, e drejtë? 464 00:25:18,110 --> 00:25:20,214 Ju nuk duan web faqe për të ngrirë. 465 00:25:20,214 --> 00:25:22,380 Çfarë ndodh nëse përdoruesi dëshiron të klikoni mbi një drop-down menu? 466 00:25:22,380 --> 00:25:24,870 Kjo nuk është një model i madh të projektimit. 467 00:25:24,870 --> 00:25:29,290 Në vend të kësaj, në thelb ajo JavaScript nuk është thotë: 468 00:25:29,290 --> 00:25:31,870 OK, bëj këtë operacion asynchronously. 469 00:25:31,870 --> 00:25:36,520 Pra si, prisni në sfond, dhe pastaj kur operacioni është bërë, 470 00:25:36,520 --> 00:25:39,420 telefononi callback function-- e quajnë disa funksion, 471 00:25:39,420 --> 00:25:43,800 e disa action-- për të sinjalizuar se Operacioni ne ishim duke pritur për t'i dhënë fund 472 00:25:43,800 --> 00:25:45,520 mbaroi. 473 00:25:45,520 --> 00:25:51,240 Dhe arsyeja që është super i fuqishëm është, ne mund të bëjmë diçka, të kalojë një argument, 474 00:25:51,240 --> 00:25:54,440 të bëjë diçka, dhe pastaj të presin për diçka të ndodhë. 475 00:25:54,440 --> 00:25:58,970 Pastaj, pasi që diçka përfundon, ne mund ta quajmë një callback. 476 00:25:58,970 --> 00:26:03,300 Kjo është me të vërtetë i dobishëm për shkak se ajo lejon bëjmë gjëra me Web Audio API, 477 00:26:03,300 --> 00:26:07,490 për shembull, si të ngarkesës një file audio nga një server në distancë 478 00:26:07,490 --> 00:26:11,660 pa pasur nevojë të presin për tërë audio file të ngarkuar, 479 00:26:11,660 --> 00:26:14,440 e cila do të jetë me të vërtetë keq për user experience. 480 00:26:14,440 --> 00:26:17,080 Ftohtë. 481 00:26:17,080 --> 00:26:19,460 >> Çift i fundit vë në dukje në lidhje me debugging, pasi kjo 482 00:26:19,460 --> 00:26:23,682 është një gjë që ju jeni do të duhet të bëni si pjesë e projektit tuaj, e garantuar. 483 00:26:23,682 --> 00:26:25,140 Kam përmendur JavaScript konsol. 484 00:26:25,140 --> 00:26:27,550 Kjo është një tipar i dobishëm super të gjithë shfletuesit modern, 485 00:26:27,550 --> 00:26:30,300 Dhe ne me të vërtetë ju inkurajojmë që të marrë të rehatshëm duke përdorur tuaj konsol, 486 00:26:30,300 --> 00:26:33,660 në qoftë se ju doni të merrni mirë në JavaScript. 487 00:26:33,660 --> 00:26:36,320 Kjo është super i dobishëm për debugging, por është edhe 488 00:26:36,320 --> 00:26:39,440 të vërtetë e dobishme për zbulimin se si të përdorin një API. 489 00:26:39,440 --> 00:26:41,950 Kjo lejon për të vërtetë eksperimentimi lehtë 490 00:26:41,950 --> 00:26:45,910 pa pasur nevojë të shkruani disa Kodi, dhe pastaj përpilojnë atë. 491 00:26:45,910 --> 00:26:47,500 Ju nuk keni për të bërë të gjitha këto hapa. 492 00:26:47,500 --> 00:26:49,619 Ju vetëm mund të shkruani kod në një linjë, 493 00:26:49,619 --> 00:26:52,410 dhe pastaj të marrë reagime të menjëhershme në nëse janë apo jo ajo linjë e kodit 494 00:26:52,410 --> 00:26:55,230 worked-- shumë i dobishëm. 495 00:26:55,230 --> 00:26:59,760 >> Dhe gjithashtu, vetëm një note-- teknik JavaScript konsol është një shembull 496 00:26:59,760 --> 00:27:05,680 e një REPL-- kështu që është R-E-P-L, repl, i cili qëndron për të lexuar, të vlerësojë, 497 00:27:05,680 --> 00:27:06,180 loop shtypura. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Ju jeni do të shkruani disa sende në, ajo do të lexoni se çfarë keni shtypur në, 500 00:27:12,120 --> 00:27:17,280 ajo do të vlerësojë atë, dhe ajo do të printoni prodhimit, dhe pastaj ajo do të fillojë përsëri. 501 00:27:17,280 --> 00:27:22,056 Kjo ju lejon për të shkuar me shpejtësi në qarqe iterating, e cila është me të vërtetë cool. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> I guess Last vërtetë note-- kjo është shënim aktual fundit, po. 504 00:27:28,930 --> 00:27:30,780 Si nuk kemi në fakt përdorin JavaScript? 505 00:27:30,780 --> 00:27:34,040 Pra, së pari, ne mund të importojë ajo duke përdorur një tag script 506 00:27:34,040 --> 00:27:39,500 në krye ose në fund të një HTML file-- kudo brenda një skedar HTML, 507 00:27:39,500 --> 00:27:40,440 me të vërtetë. 508 00:27:40,440 --> 00:27:47,390 Dhe brenda një tag script, ka dy nën-mënyra e importimit JavaScript. 509 00:27:47,390 --> 00:27:51,370 I pari është nga të paturit e një veçantë skedar JavaScript 510 00:27:51,370 --> 00:27:58,010 se ne import në tërësinë e saj, ose nga që ka një sipërfaqe prej kodit si shkrimit 511 00:27:58,010 --> 00:28:00,290 për të filluar, dhe pastaj script backslash për t'i dhënë fund. 512 00:28:00,290 --> 00:28:02,620 Dhe pastaj ne thjesht shkruani JavaScript brenda file HTML. 513 00:28:02,620 --> 00:28:03,790 Këto janë dy mënyra. 514 00:28:03,790 --> 00:28:05,165 Ju nuk mund të keni atë brenda HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 Audienca: A është një më të mirë se sa të tjera? 517 00:28:08,126 --> 00:28:10,542 SAM GREEN: Pyetja ishte, më mirë është një se tjetri. 518 00:28:10,542 --> 00:28:18,306 Pra, po, si një praktikë stil coding, dhe gjithashtu është si një praktikë e projektimit. 519 00:28:18,306 --> 00:28:20,180 Ka dy arsye pse ajo mund të jetë më mirë. 520 00:28:20,180 --> 00:28:23,934 E para është, kjo e bën Kodi tuaj një shumë më i lexueshëm në qoftë se të gjitha të HTML tuaj 521 00:28:23,934 --> 00:28:27,100 është në një vend, të gjithë CSS tuaj është në një vend tjetër, të gjithë e juaj JavaScript 522 00:28:27,100 --> 00:28:28,420 është në një vend të tretë. 523 00:28:28,420 --> 00:28:28,920 E drejtë? 524 00:28:28,920 --> 00:28:32,370 Unë mendoj se ne duhet të kemi folur tashmë në lidhje me atë në sections-- si CSS-- çfarë 525 00:28:32,370 --> 00:28:35,220 se is-- dhe ajo shkon shpesh në një tjetër fotografi. 526 00:28:35,220 --> 00:28:37,090 Pra, lloj i ngjashëm i konceptit këtu. 527 00:28:37,090 --> 00:28:42,410 Ju gjithashtu mund të imagjinoni se JavaScript do të ripërdoren në më shumë se një 528 00:28:42,410 --> 00:28:47,350 Faqe HTML, ose ndoshta një shumë faqe të mëdha HTML, 529 00:28:47,350 --> 00:28:49,340 dhe të kesh atë JavaScript refactored në një 530 00:28:49,340 --> 00:28:51,950 fotografi që ju mund të importojë në më shumë se një vend 531 00:28:51,950 --> 00:28:54,570 lejon kodi të jetë Mënyra më maintainable. 532 00:28:54,570 --> 00:28:57,930 Ju mund të imagjinoni bërë një të ndryshojë në JavaScript 533 00:28:57,930 --> 00:29:00,070 dhe të kesh për të ndryshuar atë në 100 fotografi të ndryshme. 534 00:29:00,070 --> 00:29:04,070 Dhe në vend ne vetëm mund të ndryshojë atë në një, e cila është mënyra më e fuqishme. 535 00:29:04,070 --> 00:29:05,420 A e kam të përgjigjem pyetjes tuaj? 536 00:29:05,420 --> 00:29:07,950 Ftohtë. 537 00:29:07,950 --> 00:29:10,830 >> Ne gjithashtu mund të shtypni në tastierë, siç e kemi përmendur më parë. 538 00:29:10,830 --> 00:29:15,070 Dhe përsëri, një note-- fundit Web Audio është ndërtuar në, 539 00:29:15,070 --> 00:29:16,978 ju nuk keni nevojë të ngarkesës ndonjë gjë. 540 00:29:16,978 --> 00:29:17,478 Ftohtë. 541 00:29:17,478 --> 00:29:20,519 A ka ndonjë pyetje, a keni ndonjë shumë pyetje në lidhje me JavaScript, 542 00:29:20,519 --> 00:29:21,930 para se të shkojë në? 543 00:29:21,930 --> 00:29:24,286 >> Audienca: [padëgjueshme] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN: Në rregull, i ftohtë. 545 00:29:25,410 --> 00:29:27,200 Pra, tani ai do të flasim për API. 546 00:29:27,200 --> 00:29:28,490 >> Hugh Zabriskie: Best. 547 00:29:28,490 --> 00:29:28,990 Thanks, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: Sigurisht. 549 00:29:30,184 --> 00:29:32,600 Hugh Zabriskie: mbresëlënës, kështu ne do të lëvizë nga JavaScript. 550 00:29:32,600 --> 00:29:35,350 Pra, ne kemi biseduar për disa nga bazat e JavaScript, 551 00:29:35,350 --> 00:29:41,105 dhe ata janë variablat, funksionet, objekte, funksionon si variablave, 552 00:29:41,105 --> 00:29:41,980 ngarkimit asinkron. 553 00:29:41,980 --> 00:29:46,100 Këto janë të gjitha gjërat që ju do të shohin si ju përdorni Web Audio. 554 00:29:46,100 --> 00:29:49,230 Pra, ne jemi vetëm do të flasim në lidhje me atë për herë të parë në një nivel të lartë. 555 00:29:49,230 --> 00:29:52,120 >> Kjo është një API, kështu që kjo është diçka që është ndërtuar, siç ka thënë Sam: 556 00:29:52,120 --> 00:29:57,010 drejtë në JavaScript që ju përdorni në tastierë. 557 00:29:57,010 --> 00:30:01,020 Dhe kjo është në fakt vetëm si C ++ kodi që është ndërtuar me të vërtetë në Chrome 558 00:30:01,020 --> 00:30:04,470 dhe Firefox, dhe të gjitha këto shfletues. 559 00:30:04,470 --> 00:30:07,060 Pra, ideja kryesore me Web Audio është se ju keni 560 00:30:07,060 --> 00:30:09,440 ky lloj i tubacionit të audio, e drejtë? 561 00:30:09,440 --> 00:30:13,670 Pra, të dhënat tuaja audio vjen në në një formë. 562 00:30:13,670 --> 00:30:16,690 >> Nuk janë lloj i tre forms-- kryesore ju keni oshilator, e cila 563 00:30:16,690 --> 00:30:21,340 krijon një valë sine, valë kosinus, ne jemi duke shkuar për të parë se si punon kjo. 564 00:30:21,340 --> 00:30:23,890 Një tjetër shumë e zakonshme, natyrisht, është një MP3. 565 00:30:23,890 --> 00:30:25,810 Pra, ndoshta ju filloni me një këngë, dhe pastaj ju 566 00:30:25,810 --> 00:30:28,320 dëshironi të bëni disa filtrim për atë dhe prodhimit 567 00:30:28,320 --> 00:30:30,605 that-- që mund të jetë një burim i mundshëm. 568 00:30:30,605 --> 00:30:32,480 Dhe pastaj një të vërtetë cool një është mikrofon. 569 00:30:32,480 --> 00:30:37,230 Kështu që ju mund të përdorni disa shumë thirrjet themelore në JavaScript 570 00:30:37,230 --> 00:30:39,440 për të marrë qasje në mikrofon, dhe kështu që nëse ju 571 00:30:39,440 --> 00:30:42,870 kërkuar për të bërë një app si një detektor katran, 572 00:30:42,870 --> 00:30:45,290 për shembull, që merr në zëri juaj dhe figura nga 573 00:30:45,290 --> 00:30:47,740 pitch-- mënyra shumë e lehtë për atë. 574 00:30:47,740 --> 00:30:50,730 Ju mund vetëm lloji i lexojnë atë në, të kuptoj se frekuencën, 575 00:30:50,730 --> 00:30:52,250 dhe pastaj të prodhimit një numër. 576 00:30:52,250 --> 00:30:56,080 Pra, ne do të shohim se si punon që, po ashtu. 577 00:30:56,080 --> 00:30:59,430 >> Destinacioni është në thelb ku të dhënat audio. 578 00:30:59,430 --> 00:31:02,890 Pra në përgjithësi, kjo është si folësit tuaj laptopë. 579 00:31:02,890 --> 00:31:05,610 Mundësi të tjera janë si një ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 ne do të merrni për nyjet në një second-- por në thelb, 581 00:31:07,990 --> 00:31:11,939 ose ju jeni vënë tingull jashtë përmes kompjuterit tuaj përmes folësit, 582 00:31:11,939 --> 00:31:14,730 ose ju jeni lloji i regjistrimit atë, kështu që ju jeni ruajtjen atë si të dhëna audio. 583 00:31:14,730 --> 00:31:18,980 Pra, ndoshta, nëse dikush krijon muzikë në app tuaj dhe pastaj 584 00:31:18,980 --> 00:31:22,410 ju doni të regjistroni atë dhe ndoshta si eksportojë atë në SoundCloud, për example-- 585 00:31:22,410 --> 00:31:25,281 që do të jetë një mënyrë për të bërë këtë. 586 00:31:25,281 --> 00:31:27,030 Të gjitha fun stuff, të cilat ne do të flasim, 587 00:31:27,030 --> 00:31:29,950 ndodh në mes të këtyre dy pikave, ku ne ngarkesës në muzikë 588 00:31:29,950 --> 00:31:31,410 dhe pastaj të prodhimit ajo. 589 00:31:31,410 --> 00:31:36,660 >> Kështu që unë jam duke shkuar për të folur për pesë fazat e prodhimit audio në një të dytë. 590 00:31:36,660 --> 00:31:38,950 Ne kemi këtë gjë të quajtur një AudioContext, e cila 591 00:31:38,950 --> 00:31:41,580 është kjo këmishë pak ne shohim këtu. 592 00:31:41,580 --> 00:31:49,980 Në thelb ajo që AudioContext is-- nëse ne shkoni në JavaScript konsol tani, 593 00:31:49,980 --> 00:31:52,740 ne mund të krijojmë një të drejtë tani. 594 00:31:52,740 --> 00:31:54,040 Vetëm një shembull i repl, e drejtë? 595 00:31:54,040 --> 00:31:57,880 Ne jemi duke lexuar, vlerësimin, dhe printime. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext është një shtet globale. 597 00:32:00,260 --> 00:32:05,500 Është një struct, është një objekt këtu, dhe ajo mban informacion 598 00:32:05,500 --> 00:32:09,960 për gjërat që janë në vazhdim e sipër në ekran në lidhje me audio. 599 00:32:09,960 --> 00:32:15,220 Një shembull është koha e tanishme. 600 00:32:15,220 --> 00:32:18,910 Kjo ju tregon numrin e sekondave, shumë saktësisht, 601 00:32:18,910 --> 00:32:20,890 që nga ueb faqja e ngarkuar. 602 00:32:20,890 --> 00:32:24,110 Pra, kjo është një të vërtetë të dobishme pak pronë që ju mund të përdorni. 603 00:32:24,110 --> 00:32:27,898 Është lexuar only-- Unë mendoj në fakt ju mund të përpiquni për të vendosur atë një vlerë. 604 00:32:27,898 --> 00:32:29,856 Ajo do të tregoni ju vendosur atë, dhe pastaj në qoftë se keni shkruar atë 605 00:32:29,856 --> 00:32:31,439 again-- ai nuk e bëri në fakt mjaft punë. 606 00:32:31,439 --> 00:32:34,472 Pra, nuk janë vetëm për lexim Pronat në JavaScript. 607 00:32:34,472 --> 00:32:36,430 Kjo është me të vërtetë e dobishme në qoftë se ju jeni lloj i syncing 608 00:32:36,430 --> 00:32:38,610 një shumë të ndryshme informacion, kur ju jeni 609 00:32:38,610 --> 00:32:41,280 lloj i luajtur tinguj të ndryshëm. 610 00:32:41,280 --> 00:32:43,630 >> Një tjetër të vërtetë të dobishme është destinacioni konteksti. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Definitely, në qoftë se ju jeni të interesuar, të jetë duke u përpjekur për këtë në vetë të drejtën tuaj konsol 613 00:32:49,670 --> 00:32:50,980 tani. 614 00:32:50,980 --> 00:32:53,150 Pra, kjo është një AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 Në thelb ajo që ky thotë është, ku prodhimi shkon? 616 00:32:56,480 --> 00:32:59,590 Pra, ka dy opsione të vërtetë këtu. 617 00:32:59,590 --> 00:33:01,940 Zakonisht default është vetëm folësit tuaj, 618 00:33:01,940 --> 00:33:05,150 kështu AudioDestinationNode në thelb vetëm thotë 619 00:33:05,150 --> 00:33:09,240 ka zero rezultate të shëndosha që vijnë në, ka dërguar për të folësit. 620 00:33:09,240 --> 00:33:12,050 Pra në përgjithësi, ju nuk e bëni duhet të luajë me atë. 621 00:33:12,050 --> 00:33:15,720 Nëse jeni të interesuar në fakt duke përdorur ScriptProcessorNode për regjistrim, 622 00:33:15,720 --> 00:33:16,990 patjetër të xhiruar mua një email më vonë, sepse kjo është 623 00:33:16,990 --> 00:33:18,330 pak më e komplikuar. 624 00:33:18,330 --> 00:33:21,590 Por në përgjithësi, ju jeni vetëm lloji e kompjuteri tingull në disa forma. 625 00:33:21,590 --> 00:33:24,347 Pra ftohtë, ne do të hidhen përsëri këtu. 626 00:33:24,347 --> 00:33:25,180 Audienca: Më vjen keq. 627 00:33:25,180 --> 00:33:26,054 Hugh Zabriskie: Po. 628 00:33:26,054 --> 00:33:28,770 Audienca: Unë e di që ju thënë për të folur për ju më vonë në lidhje me regjistrimin. 629 00:33:28,770 --> 00:33:31,550 A mund të ndërfaqe që me Pro Tools? 630 00:33:31,550 --> 00:33:33,120 >> Hugh Zabriskie: Me Tools Pro? 631 00:33:33,120 --> 00:33:35,260 Le të shohim. 632 00:33:35,260 --> 00:33:37,220 Nuk ma ha mendja. 633 00:33:37,220 --> 00:33:41,670 Pra, duke shkuar në mes të klientit, që është JavaScript 634 00:33:41,670 --> 00:33:44,310 konsol, dhe aktuale tuaj kompjuter, në përgjithësi është 635 00:33:44,310 --> 00:33:46,490 diçka që është lloj e jashtë kufijve, në qoftë se ju 636 00:33:46,490 --> 00:33:52,320 do, lloj nga natyra e the-- kjo është lloj i një gjë të projektimit, 637 00:33:52,320 --> 00:33:57,770 por ju përpiqen për të mbajtur shfletuesin veçantë nga kompjuteri aktual e përdoruesit. 638 00:33:57,770 --> 00:34:02,310 Në përgjithësi, e vetmja gjë që ju jeni në gjendje për të qasja është mikrofon ose kamera. 639 00:34:02,310 --> 00:34:04,730 Ju nuk jeni në gjendje për të, unë nuk mendoj, përdorni Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Megjithatë, nëse ju krijoi një udhë në Pro Tools, 641 00:34:07,480 --> 00:34:12,710 eksportohen se, ju mund të ngarkesës që këtu, filtruar atë, për shembull, 642 00:34:12,710 --> 00:34:16,820 proces i cili, dhe rekord atë në një Audio Destination-- ose, no-- një sferë 643 00:34:16,820 --> 00:34:17,870 Nyja procesor. 644 00:34:17,870 --> 00:34:20,730 Dhe pastaj nga atje, ju mund të eksportit që të SoundCloud, ju 645 00:34:20,730 --> 00:34:25,320 mund të dërgoni atë në një e-mail, ose çdo gjë që ju pëlqen nga atje. 646 00:34:25,320 --> 00:34:31,159 >> Por nuk është lloj i një pengesë të vogël në mes të bërë muzikë në kompjuterin tuaj 647 00:34:31,159 --> 00:34:33,050 dhe duke e bërë muzikë në internet. 648 00:34:33,050 --> 00:34:37,940 >> SAM GREEN: Dhe kjo është jo unike për këtë API. 649 00:34:37,940 --> 00:34:44,060 Kjo është një tipar sigurinë e Chrome, dhe Unë mendoj se çdo shfletues tjetër modern. 650 00:34:44,060 --> 00:34:45,860 Shfletuesi është vetë-përmbante. 651 00:34:45,860 --> 00:34:50,980 Kështu për shembull, një faqe interneti nuk mund të përdorin JavaScript për ta kthyer shëndoshë 652 00:34:50,980 --> 00:34:54,190 në në folësit tuaj, për shembull. 653 00:34:54,190 --> 00:34:58,120 Ose ajo nuk mund të kthehet kompjuterin tuaj off. 654 00:34:58,120 --> 00:35:01,530 Dhe nuk ka asnjë pikë e ndërmjetme në mes këtyre dy gjërave, e drejtë, 655 00:35:01,530 --> 00:35:05,960 kështu që ose ju keni një abstragim i plotë, 656 00:35:05,960 --> 00:35:10,050 ose keni hapur deri krisje sigurinë e lënë 657 00:35:10,050 --> 00:35:14,440 një programues me qëllime të këqija të bëjë çdo gjë që ata duan me laptop. 658 00:35:14,440 --> 00:35:18,104 Dhe kjo është arsyeja pse Chrome është vetë-përmbante. 659 00:35:18,104 --> 00:35:19,310 >> Hugh Zabriskie: Po. 660 00:35:19,310 --> 00:35:20,840 A ka kjo kuptim? 661 00:35:20,840 --> 00:35:21,369 Ftohtë, të ftohtë. 662 00:35:21,369 --> 00:35:23,160 Unë kam qenë vetëm duke shkuar për të tregojnë një shembull të një. 663 00:35:23,160 --> 00:35:25,118 Kjo është shumë e shumë si më shumë ju të merrni, në terma të 664 00:35:25,118 --> 00:35:26,950 i qasja në kompjuterin e përdoruesit. 665 00:35:26,950 --> 00:35:30,180 Nëse keni një tastierë USB mbyllën në, ju mund të përdorni diçka që quhet Web 666 00:35:30,180 --> 00:35:32,180 API MIDI, të cilat ne nuk do të me të vërtetë flasim për këtu, 667 00:35:32,180 --> 00:35:36,330 por kjo është një tjetër API kjo është ndërtuar në të paktën Chrome-- përsëri, 668 00:35:36,330 --> 00:35:41,570 kjo është arsyeja pse ne duam Chrome-- Unë mendoj Firefox ose Safari, 669 00:35:41,570 --> 00:35:44,300 kjo është një gjë e lehtë për të shfletues google-- ndryshme kanë 670 00:35:44,300 --> 00:35:46,917 mbështetje të ndryshme për të cilat TV ata kanë zbatuar. 671 00:35:46,917 --> 00:35:49,875 Por në qoftë se ju të kërkuar për të vihet në prizë një tastierë dhe të punojnë me këtë informacion, 672 00:35:49,875 --> 00:35:52,850 lloj i dërgoni tastierë informacion mbi kompjuter 673 00:35:52,850 --> 00:35:57,620 dhe pastaj të përdorin atë online, këtë API është ajo ku ju do të jetë duke punuar se. 674 00:35:57,620 --> 00:35:58,150 >> Ftohtë. 675 00:35:58,150 --> 00:35:58,710 NE RREGULL. 676 00:35:58,710 --> 00:36:01,320 Pra, shpejt duke lëvizur këtu. 677 00:36:01,320 --> 00:36:03,310 Si po e bëjmë në kohë? 678 00:36:03,310 --> 00:36:04,210 >> SPEAKER 1: Rreth 15. 679 00:36:04,210 --> 00:36:05,543 >> Hugh Zabriskie: 15 minuta u largua? 680 00:36:05,543 --> 00:36:06,160 OK, i ftohtë. 681 00:36:06,160 --> 00:36:08,170 Pra, ne do të racës përpara këtu. 682 00:36:08,170 --> 00:36:13,500 >> Pra, në thelb, pika kryesore e duke menduar për këtë si një tubacion 683 00:36:13,500 --> 00:36:16,430 është se çdo hap në tubacion është një seri e nyjeve audio. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Burimi ynë, le të themi, është një oshilator. 686 00:36:20,950 --> 00:36:23,380 Ne kemi nevojë për të krijuar një nyje oshilator. 687 00:36:23,380 --> 00:36:25,690 Dhe kjo është vetëm lloji i function-- vogël 688 00:36:25,690 --> 00:36:30,460 dhe ata janë të bazuara të gjitha jashtë e kontekstit audio këtu. 689 00:36:30,460 --> 00:36:32,885 >> Audienca: Kur ai tha oshilator, nuk do të thotë 690 00:36:32,885 --> 00:36:37,250 kjo është në të vërtetë fjalë për fjalë duke shkuar nga dy pole të ndryshme dhe andej 691 00:36:37,250 --> 00:36:41,170 >> Hugh Zabriskie: Jo, kjo është si një përfaqësim dixhitale. 692 00:36:41,170 --> 00:36:42,740 Është zbatuar aktualisht në C ++. 693 00:36:42,740 --> 00:36:46,460 Unë në fakt nuk e di syze se si është e zbatuar në të vërtetë, 694 00:36:46,460 --> 00:36:48,500 Por e gjithë kjo është duke punuar si të dhëna binare. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Në fakt, po. 697 00:36:52,370 --> 00:36:53,950 Që do të thotë, unë mund të në fakt, në qoftë se ju jeni të interesuar, 698 00:36:53,950 --> 00:36:56,533 Unë mund t'ju dërgojë një më të vogël informacion në lidhje me se si waveforms 699 00:36:56,533 --> 00:37:00,181 janë mbajtur të paturit e një format dixhital. 700 00:37:00,181 --> 00:37:00,680 OK, i ftohtë. 701 00:37:00,680 --> 00:37:03,120 >> Pra, ne jemi duke gjeneruar një ton si një sine valë ose diçka të tillë, ndoshta 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Ne krijimin e një oshilator. 704 00:37:05,830 --> 00:37:09,180 Në qoftë se ne duam të cilësuar volumin, ne lidheni asgjë për një GainNode, 705 00:37:09,180 --> 00:37:12,500 që ne mund të bëjmë me .creategain. 706 00:37:12,500 --> 00:37:14,250 Që përcakton vëllimin tuaj. 707 00:37:14,250 --> 00:37:17,820 Ju mund të ndodhë që mbi çdo e të tjera options-- mirë, 708 00:37:17,820 --> 00:37:20,300 kështu një burim audio tampon Nyja është ajo ku ju fuqia 709 00:37:20,300 --> 00:37:23,660 ruajtur një MP3 që keni ngarkuar në. 710 00:37:23,660 --> 00:37:27,670 >> Biquad filtër është për filtrimin nëse ju doni të merrni të gjithë bazën e jashtë 711 00:37:27,670 --> 00:37:29,630 e një këngë, ose diçka të tillë. 712 00:37:29,630 --> 00:37:32,450 Zoti na ruajt ju doni të merrni baza nga një këngë. 713 00:37:32,450 --> 00:37:36,980 Dhe nyje AudioDestination është, përsëri, si ku përfundimi ynë është. 714 00:37:36,980 --> 00:37:39,980 Nëse jeni të interesuar ndonjëherë të shohim të gjitha opsionet e ndryshme të mundshme, 715 00:37:39,980 --> 00:37:45,190 thjesht shkoni në tab dhe le të auto-plotë të dalë. 716 00:37:45,190 --> 00:37:48,690 Dhe në qoftë se ju do të krijoni, ju do të shihni të gjitha gjëra të ndryshme që ju mund të krijojë. 717 00:37:48,690 --> 00:37:50,398 Ju mund të krijoni dinamikë procesorë script, 718 00:37:50,398 --> 00:37:52,940 Unë nuk e di edhe se çka është, për përzierjen bashkimet channel 719 00:37:52,940 --> 00:37:55,930 dhe splitters channel dhe të gjitha atë. 720 00:37:55,930 --> 00:37:56,430 Ftohtë. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Pra, kjo është vetëm një shembull i një tubacioni. 723 00:38:01,390 --> 00:38:03,580 Pra, ne kemi tre burime që vijnë në. 724 00:38:03,580 --> 00:38:06,830 Ndoshta këto janë waveforms, Ndoshta këto janë MP3s. 725 00:38:06,830 --> 00:38:08,740 Një që po ndodh përmes një filtër, një tjetër s 726 00:38:08,740 --> 00:38:12,404 duke u shtrembëruar tjetër dikujt Humor majtë dhe të djathtë. 727 00:38:12,404 --> 00:38:15,320 Ju mund të bëni të gjitha llojet e gjërave dhe ata të gjithë të përziera rreth së bashku, 728 00:38:15,320 --> 00:38:18,880 dhe pastaj nga vjen audio në fund, si destinacion. 729 00:38:18,880 --> 00:38:22,720 Ky është një shembull i asaj që më shumë komplikuar Web Kodi Audio duket si. 730 00:38:22,720 --> 00:38:26,720 Ju jeni duke krijuar të gjitha këto objekte të ndryshme drejtë here-- 731 00:38:26,720 --> 00:38:27,706 Unë nuk jam i sigurt për këtë. 732 00:38:27,706 --> 00:38:29,120 Jo, kjo nuk do të zmadhuar. 733 00:38:29,120 --> 00:38:29,620 NE RREGULL. 734 00:38:29,620 --> 00:38:31,257 >> SAM GREEN: Ju bëni Kontrolli, lëvizni-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: Jo, jo. 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, Kontrollit, shkoni? 740 00:38:38,140 --> 00:38:38,780 Oh, Gotcha. 741 00:38:38,780 --> 00:38:41,480 Po. 742 00:38:41,480 --> 00:38:42,240 Wow, Jo, Jo. 743 00:38:42,240 --> 00:38:42,740 NE RREGULL. 744 00:38:42,740 --> 00:38:46,090 Unë nuk do të bëjë atë. 745 00:38:46,090 --> 00:38:48,300 >> Pra, vërtet, në këtë së pari Seksioni këtu, ju shihni 746 00:38:48,300 --> 00:38:52,720 ne jemi duke krijuar të gjitha këto të ndryshëm nyjet jashtë kontekstit. 747 00:38:52,720 --> 00:38:54,980 Ne jemi vetëm piecing ato së bashku në pjesën e dytë 748 00:38:54,980 --> 00:38:56,980 nga ky funksion të quajtur Connect. 749 00:38:56,980 --> 00:38:58,830 Kjo është një të vërtetë kyç funksion në Web Audio. 750 00:38:58,830 --> 00:39:01,930 Kjo thjesht do të thotë një herë ju kam bërë diçka me zë në një nyje, 751 00:39:01,930 --> 00:39:03,705 të kalojë atë të nyjen e ardhshëm. 752 00:39:03,705 --> 00:39:05,830 Pra, ne kemi burimin, atë lidhet me analyzer, 753 00:39:05,830 --> 00:39:09,140 analyzer bën diçka me të, ajo shkon për shtrembërim, dhe kështu me radhë, 754 00:39:09,140 --> 00:39:12,725 dhe në destinacionin në pjesën e poshtme të drejtë këtu. 755 00:39:12,725 --> 00:39:13,225 Ftohtë. 756 00:39:13,225 --> 00:39:14,640 OK, kështu që ne do të vazhdojmë të lëvizin. 757 00:39:14,640 --> 00:39:17,180 >> Pipeline-- përsëri, këto janë tubacionet më të zakonshme, 758 00:39:17,180 --> 00:39:21,300 kështu që ne flasim për të gjitha këto gjëra të tilla si shtrembërim, Humor, të gjitha këto gjëra. 759 00:39:21,300 --> 00:39:24,280 Nëse jeni të vërtetë të interesuar në duke përdorur gjëra Pro Tools, 760 00:39:24,280 --> 00:39:25,820 ata ndoshta ju interesojnë. 761 00:39:25,820 --> 00:39:27,740 Nëse jo, ndoshta ju vetëm duan të luajnë të shëndoshë, 762 00:39:27,740 --> 00:39:29,990 Apo ndoshta ju doni vetëm për të të cilësuar volumin në zë. 763 00:39:29,990 --> 00:39:35,270 Ata janë dy lloj më të zakonshme e tubacioneve në prodhim audio. 764 00:39:35,270 --> 00:39:38,640 >> Përsëri, mënyrat që ju mund të merrni atë në si një oscillator-- Pra, le të 765 00:39:38,640 --> 00:39:42,460 të bëjë një demo e që këtu. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Pra, ne jemi duke shkuar për të krijuar një Konteksti i thjeshtë Audio këtu, 768 00:39:52,225 --> 00:39:54,350 dhe nga se ne jemi duke shkuar për të krijuar oshilator tonë. 769 00:39:54,350 --> 00:39:58,620 Kështu që është, përsëri, ne jemi vetëm do të thërrasë Krijo oshilator. 770 00:39:58,620 --> 00:40:07,030 Ne jemi duke shkuar për të vendosur një frekuencë në se, 440 Hertz, preferuar të gjithëve. 771 00:40:07,030 --> 00:40:13,290 Pastaj ne të lidheni atë në destinacionin e point-- që është Gjuha, kështu 772 00:40:13,290 --> 00:40:15,750 destinacioni konteksti. 773 00:40:15,750 --> 00:40:21,400 Së fundi, ne vetëm të themi, të fillojë zero sekonda nga tani, dhe nuk e kemi të shëndosha? 774 00:40:21,400 --> 00:40:22,400 >> [Kumbues] 775 00:40:22,400 --> 00:40:24,980 >> Hugh Zabriskie: Këtu ne do të shkojmë. 776 00:40:24,980 --> 00:40:25,940 Është vetëm një valë sine. 777 00:40:25,940 --> 00:40:26,440 OK, i ftohtë. 778 00:40:26,440 --> 00:40:28,274 Dhe pastaj ne do të ndalet atë. 779 00:40:28,274 --> 00:40:30,520 >> Audienca: Ku ka që reagimet vijnë nga? 780 00:40:30,520 --> 00:40:31,250 >> Hugh Zabriskie: Reagime? 781 00:40:31,250 --> 00:40:32,458 Oh, ndoshta mikrofona tona. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Pra, vërtet, kjo është se si ju bëni atë. 784 00:40:35,470 --> 00:40:37,261 Dhe në fakt, në qoftë se unë kam mbajtur atë running, ju 785 00:40:37,261 --> 00:40:39,540 mund të ketë frekuencën Vlera derisa është i aktivizuar, 786 00:40:39,540 --> 00:40:43,320 kështu që është një gjë e bukur për të luajtur rreth. 787 00:40:43,320 --> 00:40:44,930 Ftohtë. 788 00:40:44,930 --> 00:40:46,600 Kjo është gjithmonë një e bukur për të paraqitur. 789 00:40:46,600 --> 00:40:48,792 >> SAM GREEN: Ne nuk u bëmë mendoj për këtë, nuk kemi? 790 00:40:48,792 --> 00:40:50,500 Hugh Zabriskie: Po, kjo është një e keqe. 791 00:40:50,500 --> 00:40:53,249 Pra, tampon loading-- unë do të tregoj një shembull i kësaj në fund. 792 00:40:53,249 --> 00:40:55,090 Kjo është ngarkimit të një MP3. 793 00:40:55,090 --> 00:40:58,880 Dhe mikrofon, ju përdorni vetëm një funksion quajtur Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 të kërkojë qasje në përdorues të mikrofon për këtë informacion. 795 00:41:03,240 --> 00:41:05,610 >> Ja filtrim, unë do vetëm i mbajnë duke lëvizur nga kjo. 796 00:41:05,610 --> 00:41:08,600 Ky është niveli shumë e lartë, por filtra vetëm të ju lejojnë për të 797 00:41:08,600 --> 00:41:16,154 >> [Beeping] 798 00:41:16,154 --> 00:41:18,320 Filtrim gjithashtu ju lejon të për të krijuar gjëra të tilla si trëndafili 799 00:41:18,320 --> 00:41:20,050 zhurmë, zhurmë kafe, zhurmë të bardhë. 800 00:41:20,050 --> 00:41:24,330 Nëse ju doni të krijoni zhurmë të pastër, e cila disa njerëz duan të bela rreth me, 801 00:41:24,330 --> 00:41:27,490 ju mund të përdorni Web Audio filtrim për të bërë këtë. 802 00:41:27,490 --> 00:41:30,039 >> Audio Panning-- kështu imagjinojmë në qoftë se ju jeni duke shkruar një lojë 803 00:41:30,039 --> 00:41:32,330 dhe ju doni të shëndosha për tingëllojë si ajo vjen, si, 804 00:41:32,330 --> 00:41:36,090 shtënat nëpër ekran, ju mund të përdorin zhvendosjen e audio 805 00:41:36,090 --> 00:41:39,770 për të krijuar këtë lloj të kon, që like-- kjo është goxha Mathy, 806 00:41:39,770 --> 00:41:41,850 por është e vërtetë me të vërtetë ftohtë në qoftë se ju merrni atë punë, 807 00:41:41,850 --> 00:41:44,500 dhe ka disa të mira mësime mbi të unë mund të ju dërgojnë. 808 00:41:44,500 --> 00:41:46,400 Në thelb, ju mund të lloj të krijuar tingullin 809 00:41:46,400 --> 00:41:50,480 e diçka ndodh me në një mënyrë 3D. 810 00:41:50,480 --> 00:41:57,350 Dhe në qoftë se ju keni një interes DJ, ju mund të të fillojë përzierjen dhe kryq venitje këngë. 811 00:41:57,350 --> 00:42:01,260 >> Kjo është vetëm disa shumë themelore Kodi, në thelb ajo që kam bërë më parë. 812 00:42:01,260 --> 00:42:06,140 Kjo përcakton volumin e oshilator, kështu që ne krijojmë oshilator tonë 813 00:42:06,140 --> 00:42:07,380 e cila krijon waveform. 814 00:42:07,380 --> 00:42:09,940 Ne krijojmë GainNode tonë, të vendosur frekuencën tonë, 815 00:42:09,940 --> 00:42:14,170 dhe pastaj lidheni oshilator në GainNode, e cila më pas në thelb ndryshon 816 00:42:14,170 --> 00:42:16,760 sa sinjal është i lejuar përmes. 817 00:42:16,760 --> 00:42:20,467 Por me të vërtetë, kjo është një dixhital gjë, kështu që është më shumë just-- vërtet. 818 00:42:20,467 --> 00:42:23,550 Kjo nuk është ajo që ndodh në të vërtetë, por kjo është ajo që ndodh në jetën e vërtetë 819 00:42:23,550 --> 00:42:24,393 me një fitim. 820 00:42:24,393 --> 00:42:27,258 >> Audienca: --quantization i parametri vëllimit? 821 00:42:27,258 --> 00:42:28,174 Hugh Zabriskie: Na vjen keq? 822 00:42:28,174 --> 00:42:30,360 Audienca: A është kjo një kuantizuar parametri vëllim? 823 00:42:30,360 --> 00:42:31,840 Hugh Zabriskie: Po. 824 00:42:31,840 --> 00:42:34,620 Dhe kjo është një gjë që unë jam me të vërtetë mangët në në njohuritë e mia, 825 00:42:34,620 --> 00:42:38,010 si fitim punon në një nivel dixhitale. 826 00:42:38,010 --> 00:42:40,140 Unë e di me aktual Sinjalet, kjo është në thelb 827 00:42:40,140 --> 00:42:45,120 kontrollin se sa ju jeni amplifikimin sinjal. 828 00:42:45,120 --> 00:42:47,017 Pra, vërtet. 829 00:42:47,017 --> 00:42:50,100 Unë do të ju dërgojnë më shumë informacion në lidhje me kjo, sepse unë do të jetë në fakt kurioz 830 00:42:50,100 --> 00:42:51,099 të dini më shumë në lidhje me atë. 831 00:42:51,099 --> 00:42:54,090 Por në thelb parametrat janë, një është fold-- 832 00:42:54,090 --> 00:42:59,690 signal-- louder dhe zero nuk është sinjal, ose ju nuk do të dëgjoni ndonjë tingull. 833 00:42:59,690 --> 00:43:03,150 Ne do të kaloni kohë të demo për këtë shkak kjo është në thelb ajo që kam bërë më parë. 834 00:43:03,150 --> 00:43:07,630 Dhe një herë, Context.Destination është nyja audio destinacion. 835 00:43:07,630 --> 00:43:08,360 Awesome, OK. 836 00:43:08,360 --> 00:43:10,470 >> Kështu që unë jam duke shkuar për të bërë një të shpejtë dy popull. 837 00:43:10,470 --> 00:43:11,760 Si po e bëjmë në kohë? 838 00:43:11,760 --> 00:43:12,640 >> SPEAKER 1: Rreth 10 minuta. 839 00:43:12,640 --> 00:43:13,130 >> Hugh Zabriskie: 10 minuta? 840 00:43:13,130 --> 00:43:13,630 E madhe! 841 00:43:13,630 --> 00:43:14,320 Mbresëlënës. 842 00:43:14,320 --> 00:43:19,010 >> Pra, i pari unë jam duke shkuar për bëni, ajo që quhet kënga ime e preferuar. 843 00:43:19,010 --> 00:43:22,410 Pra, kjo është vetëm një pak HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Ne do të kemi dy butona në faqe të luajnë këngën time të preferuar 845 00:43:25,510 --> 00:43:29,192 dhe ndalojnë këngën time të preferuar. 846 00:43:29,192 --> 00:43:30,180 Unë do të ndryshojë këtë. 847 00:43:30,180 --> 00:43:32,110 >> Audienca: Cover mikrofonin tuaj. 848 00:43:32,110 --> 00:43:33,430 >> Hugh Zabriskie: Po. 849 00:43:33,430 --> 00:43:36,300 Dhe unë e kam ngarkuar në këtu një skenar që basically-- 850 00:43:36,300 --> 00:43:38,520 dhe kjo është me të vërtetë e dobishme për ngarkimin e një MP3, 851 00:43:38,520 --> 00:43:41,820 kështu që kjo vetëm e bën ngarkimit mënyrë MP3s shpejtë. 852 00:43:41,820 --> 00:43:44,180 Kjo është në thelb vetëm një këmishë. 853 00:43:44,180 --> 00:43:48,737 Kjo vetëm e bën procesin e ngarkimit në MP3s shumë më të shpejtë, 854 00:43:48,737 --> 00:43:51,570 përndryshe ju jeni duke përdorur HTTP kërkesë, lloj si ajo që ne ishim duke bërë 855 00:43:51,570 --> 00:43:53,950 në copë tanishme vendosur me Server. 856 00:43:53,950 --> 00:43:55,950 Është me të vërtetë e shëmtuar, ju nuk duan të bëhet kjo. 857 00:43:55,950 --> 00:44:04,110 >> Pra ky djalë, Boris njësitë ndërkomunale, shkroi një të vërtetë mjet i dobishëm i vogël i quajtur BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Të gjithë ju bëni është thjesht të kalojë atë të konteksti, ju të kalojë atë një list-- 859 00:44:08,780 --> 00:44:11,327 apo, vërtet, ajo është një listë në JavaScript? 860 00:44:11,327 --> 00:44:12,160 SAM GREEN: Një grup. 861 00:44:12,160 --> 00:44:14,201 Hugh Zabriskie: Oh, kjo është e një grup, kjo është e drejtë. 862 00:44:14,201 --> 00:44:18,660 Është një grup i shtigjeve në fotografi të ndryshme. 863 00:44:18,660 --> 00:44:21,990 Dhe pastaj ju të kalojë atë një funksion. 864 00:44:21,990 --> 00:44:25,530 Kjo është callback ne ishim duke folur në lidhje me ngarkimin asinkron. 865 00:44:25,530 --> 00:44:28,720 Që do të quhet Pasi fotografi ngarkuar. 866 00:44:28,720 --> 00:44:33,780 Dhe kjo funksion që quhet kur dosja e ngarkuar e merr si një perimetër 867 00:44:33,780 --> 00:44:35,840 një sërë mbulesë ngarkuar. 868 00:44:35,840 --> 00:44:37,990 Kështu që ndodh këtu. 869 00:44:37,990 --> 00:44:41,180 Në thelb, BufferList është do të jetë një value-- 870 00:44:41,180 --> 00:44:46,380 ose ajo do të jetë një grup i gjatësi një, që e ka në të në indeksin 871 00:44:46,380 --> 00:44:51,320 zero të gjithë dosjen ngarkuar e MP3. 872 00:44:51,320 --> 00:44:53,320 Pra, çfarë të bëj kur unë të përfunduar ngarkimit është, unë thjesht 873 00:44:53,320 --> 00:44:57,430 të krijojë një burim tampon, e cila është një audio nyje tampon burim. 874 00:44:57,430 --> 00:45:03,410 Hapi tjetër është i ngarkesës në source.buffer si tampon plotë ngarkuar 875 00:45:03,410 --> 00:45:06,740 nga BufferList-- kjo është një shumë e buffers-- 876 00:45:06,740 --> 00:45:10,255 dhe pastaj ju lidhë atë audio tampon në destinacion. 877 00:45:10,255 --> 00:45:12,380 Pra, atë që do të bëjë është thjesht vënë MP3 878 00:45:12,380 --> 00:45:15,260 direkt përmes të prodhimit, dhe të fillojnë atë menjëherë 879 00:45:15,260 --> 00:45:18,010 me marrjen e kësaj thirrjeje. 880 00:45:18,010 --> 00:45:21,660 >> I ftohtë, kështu që le të shohim kjo të ndodhë në veprim. 881 00:45:21,660 --> 00:45:24,490 My [e padëgjueshme] këtu, le të shohim. 882 00:45:24,490 --> 00:45:26,430 Kështu që unë jam vetëm do të të fillojë një server bazë. 883 00:45:26,430 --> 00:45:28,660 Kjo është diçka që ju duhet të bëni nëse ju jeni 884 00:45:28,660 --> 00:45:32,490 bërjen e kërkesave për fotografi ngarkimit. 885 00:45:32,490 --> 00:45:34,140 Unë jam duke shkuar për të filluar një server bazë. 886 00:45:34,140 --> 00:45:38,200 Kjo është në thelb tërë tuaj Pset tani në një linjë, 887 00:45:38,200 --> 00:45:43,930 por kjo është vetëm fillimi një server në portin 80/80. 888 00:45:43,930 --> 00:45:47,300 Pra, ne do të shkojmë këtu, ne do të ngarkesës 80/80, 889 00:45:47,300 --> 00:45:49,110 ne jemi duke shkuar për të shkuar në kënga ime e preferuar. 890 00:45:49,110 --> 00:45:51,660 Pra, nëse unë goditi "Luaj tim Kënga e preferuar "Tani për tani, 891 00:45:51,660 --> 00:45:53,964 ajo do të ngarkesës tim Kënga e preferuar dhe luajnë it-- 892 00:45:53,964 --> 00:45:55,880 [MUSIC - shqiponjat, "Jeta në FAST  LANE "] 893 00:45:55,880 --> 00:46:00,490 që bën të ndodh të jetë "Jeta në korsi të shpejtë "nga The Eagles. 894 00:46:00,490 --> 00:46:06,346 Tani, unë mund të godiste "Stop tim Kënga e preferuar "dhe sërish atë. 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - shqiponjat, "Jeta në FAST  LANE "] 896 00:46:09,160 --> 00:46:18,340 >> Dhe kur të shkoj mbi të ngushëlluar, sepse I përdorur një ndryshore globale gjatë këtu 897 00:46:18,340 --> 00:46:23,390 të mbajnë gjurmët e kësaj vlere, ai në fakt tani do të njihet në tastierë. 898 00:46:23,390 --> 00:46:25,160 Pra, kjo auto-krijon për mua. 899 00:46:25,160 --> 00:46:29,991 Pra, kjo është ajo që është duke luajtur tani, dhe unë thjesht mund të telefononi source.stop () 900 00:46:29,991 --> 00:46:30,490 në atë. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 E pra, ju e dini se çfarë? 903 00:46:35,860 --> 00:46:39,760 Vetëm kështu që ju djema keni dëgjuar këtë song-- ju mund të njohin këtë këngë. 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - Rick Astley "Never Gonna JAP  Ju lart "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - shqiponjat, "Jeta në FAST  LANE "] 907 00:46:44,215 --> 00:46:46,195 Ne kemi tani të gjithë janë Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, i madh, duke lëvizur në. 909 00:46:50,155 --> 00:46:51,160 Ftohtë. 910 00:46:51,160 --> 00:46:54,554 Pra, kjo është në thelb një shembull i se sa ju mund të ngarkesës një MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - shqiponjat, "Jeta në FAST  LANE "] 912 00:46:56,470 --> 00:46:59,590 --and luajnë atë, dhe të ndaluar dhe të fillojnë atë. 913 00:46:59,590 --> 00:47:03,008 Unë mund të ketë bërë shumë më [e padëgjueshme] 914 00:47:03,008 --> 00:47:07,570 >> E fundit unë do të bëj është, Unë do t'ju tregoj një [e padëgjueshme]. 915 00:47:07,570 --> 00:47:18,070 >> [Muzika] 916 00:47:18,070 --> 00:47:21,800 >> Është si, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Unë mendoj se, nëse më kujtohet saktë, Unë e kam drejtuar në disa çështje me .m4a, 918 00:47:26,450 --> 00:47:27,721 por unë nuk jam i sigurt për këtë. 919 00:47:27,721 --> 00:47:28,470 Unë mendoj mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MUSIC - Rick Astley "Never Gonna JAP  Ju lart "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK, e madhe. 924 00:47:36,500 --> 00:47:37,625 Unë nuk duhet të ketë thënë se. 925 00:47:37,625 --> 00:47:40,570 Gjithsesi, përshëndetje. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Pra, ne kemi hapur këtë. 928 00:47:45,490 --> 00:47:52,320 Pra, tani të gjitha unë bëj është, unë krijuar në thelb një sintaksë bazë për krijimin e muzikë. 929 00:47:52,320 --> 00:47:57,610 Pra, nëse unë bëj diçka si, shtoni G4 më 1 2, çka do të thotë është se, 930 00:47:57,610 --> 00:48:00,950 shtoni shënim piano, G4, i cili është i katërt G 931 00:48:00,950 --> 00:48:02,680 deri në piano nga poshtë. 932 00:48:02,680 --> 00:48:05,930 Pra, kjo është lloj i MIDI flasin, kështu që për ata që janë të bazuara muzikë, 933 00:48:05,930 --> 00:48:07,860 kjo është vetëm shënime MIDI. 934 00:48:07,860 --> 00:48:10,090 >> Audienca: Kjo është G e Mesme C, e drejtë? 935 00:48:10,090 --> 00:48:11,840 >> Hugh Zabriskie: Kjo është G sipër Mesme C, kjo është e drejtë. 936 00:48:11,840 --> 00:48:12,470 >> Audienca: Mbi Mesme C. 937 00:48:12,470 --> 00:48:13,345 >> Hugh Zabriskie: Po. 938 00:48:13,345 --> 00:48:14,340 Në fakt, po. 939 00:48:14,340 --> 00:48:16,131 Unë mendoj se unë në fakt e bëri atë një [e padëgjueshme], 940 00:48:16,131 --> 00:48:18,860 kështu që kjo mund të jetë një oktavë më lart se. 941 00:48:18,860 --> 00:48:20,070 Pra, le të shohim. 942 00:48:20,070 --> 00:48:21,152 Nëse unë goditi Play-- 943 00:48:21,152 --> 00:48:22,110 [SHËNIM e përsëritura bukurise] 944 00:48:22,110 --> 00:48:23,200 --we're shkuar për të dëgjuar se. 945 00:48:23,200 --> 00:48:25,700 Ideja është se ajo vepron vetëm si një linjë komande do, 946 00:48:25,700 --> 00:48:27,510 kështu që nëse unë shkoj lart e poshtë në tastierën time, 947 00:48:27,510 --> 00:48:31,550 mund të shkoni përsëri në mëparshme urdhëron, e cila është shumë e dobishme. 948 00:48:31,550 --> 00:48:35,136 Dhe më poshtë është lista ime e këngë, të cilat janë të gjitha të vrapojnë në lak. 949 00:48:35,136 --> 00:48:38,260 >> Audienca: Ju keni qenë duke supozuar 88-kyç keyboard për atë, e drejtë? 950 00:48:38,260 --> 00:48:41,051 >> Hugh Zabriskie: Pyetja ishte, Unë jam duke supozuar një tastierë 88-kyç, 951 00:48:41,051 --> 00:48:41,990 dhe po, unë jam. 952 00:48:41,990 --> 00:48:45,030 Ajo që kam bërë është që unë në thelb mori 88 mostra 953 00:48:45,030 --> 00:48:46,970 e piano, një për çdo shënim. 954 00:48:46,970 --> 00:48:49,180 Dhe kështu çdo herë që dëgjojë një shënim nga tani e tutje, 955 00:48:49,180 --> 00:48:57,550 që është në fakt një lak që duket like-- kjo është duke u luajtur në lak, 956 00:48:57,550 --> 00:49:00,120 kështu që për çdo shënim, kjo po kandidon. 957 00:49:00,120 --> 00:49:02,860 Çfarë ndodh është, unë të krijojë një tampon përsëri, 958 00:49:02,860 --> 00:49:06,010 Unë krijoj një nyje të fitojë Për të cilësuar volumin. 959 00:49:06,010 --> 00:49:08,240 Kjo vetëm një të vërtetë mënyrë e komplikuar për të thënë unë 960 00:49:08,240 --> 00:49:10,550 ruajtur tampon në një source.buffer. 961 00:49:10,550 --> 00:49:13,160 I jepte fitimin, unë lidhë atë me fitim, 962 00:49:13,160 --> 00:49:15,576 përfitimi është i lidhur me prodhimit, dhe pastaj kam luajtur atë. 963 00:49:15,576 --> 00:49:20,735 Pra, kjo është lloj i procesit të të marrë në një burim tampon. 964 00:49:20,735 --> 00:49:24,820 >> Audienca: A mund të vërtetë të marrë atë shëndoshë të thatë dhe të bëjë atë të lagësht [e padëgjueshme]? 965 00:49:24,820 --> 00:49:26,260 >> Hugh Zabriskie: Ju mund të, vërtet. 966 00:49:26,260 --> 00:49:29,260 Ka ri-folje, nuk ka vonesë, shtrembërim. 967 00:49:29,260 --> 00:49:33,260 Ju në thelb mund të vënë çdo gjë në në mes në atë sanduiç of-- mirë, 968 00:49:33,260 --> 00:49:37,660 Tubacioni është një metaforë e mirë, por ju mund të shtoni ndonjë gjë në atë. 969 00:49:37,660 --> 00:49:38,200 Ftohtë. 970 00:49:38,200 --> 00:49:40,280 >> Kështu që unë do të përfundojë demo këtu për të ju jap një kuptim 971 00:49:40,280 --> 00:49:46,390 i vetëm numri i madh i herë ju mund të kandidojë atë funksion të gjitha përnjëherë. 972 00:49:46,390 --> 00:49:49,280 Kështu që unë jam duke shkuar për të hequr këtë. 973 00:49:49,280 --> 00:49:59,110 Unë jam duke shkuar për të krijuar një gjenerator that-- në thelb ajo që does-- kjo është me të vërtetë 974 00:49:59,110 --> 00:50:04,220 lloj i një syntax-- komplikuar, por kjo është duke shkuar për të gjeneruar shënime të fluturojnë, 975 00:50:04,220 --> 00:50:06,601 dhe vetëm të fillojnë të luajnë ato siç i vlerëson ato. 976 00:50:06,601 --> 00:50:07,392 [Ndërhynte bukurise] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Pra, ne mund të bëjë vetëm një muzikë pak këtu. 979 00:50:12,817 --> 00:50:13,608 [Ndërhynte bukurise] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Pra, çfarë kjo komandë bën, për shembull, është 982 00:50:41,470 --> 00:50:46,910 ajo merr ato tre shënime për piano dhe pastaj i vë ata në B3. 983 00:50:46,910 --> 00:50:48,660 Kjo sintaksë mund të bëjë një kuptim pak më shumë 984 00:50:48,660 --> 00:50:50,590 për ata që kanë një sfond muzikë këtu. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Unë mund të shtoni një goditje daulle. 987 00:50:56,551 --> 00:50:57,050 Unë mundem-- 988 00:50:57,050 --> 00:50:58,048 >> [Ndërhynte INSTRUMENTET] 989 00:50:58,048 --> 00:50:59,256 >> --just luajnë rreth me atë. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Kështu që ju mund make-- 992 00:51:13,474 --> 00:51:14,515 [Ndërhynte INSTRUMENTET] 993 00:51:14,515 --> 00:51:15,513 Kjo është pak më shumë i bezdisshëm. 994 00:51:15,513 --> 00:51:16,554 [Ndërhynte INSTRUMENTET] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Kështu që rastësisht shton një cimbali thatë në çdo shënim 16, me një 16% 997 00:51:30,981 --> 00:51:31,481 [Padëgjueshme]. 998 00:51:31,481 --> 00:51:32,522 >> [Ndërhynte INSTRUMENTET] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Yeah, kështu që mënyra kjo works-- është gjithmonë në 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Ndërhynte INSTRUMENTET] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Yeah, kështu që të katër anët, dhe 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Ndërhynte INSTRUMENTET] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Pra mesatarisht, ju merrni 60% e godet në shënimet 16. 1008 00:52:33,780 --> 00:52:35,990 >> Anyways, kjo ishte vetëm lloj i të nxjerr 1009 00:52:35,990 --> 00:52:39,780 disa nga gjërat që ju mund të ndërtuar me Web Audio API. 1010 00:52:39,780 --> 00:52:43,840 Është me të vërtetë i fuqishëm, kjo është me të vërtetë i shpejtë, dhe ju mund të bëni shumë gjëra të ftohtë 1011 00:52:43,840 --> 00:52:44,340 me të. 1012 00:52:44,340 --> 00:52:51,260 Pra, përsëri, çdo pyetje që keni, email myself-- Hugh-- apo Sam, 1013 00:52:51,260 --> 00:52:55,869 dhe sinqerisht, Google ka një ton të burimeve të mira. 1014 00:52:55,869 --> 00:52:56,660 Çdo pyetje të fundit? 1015 00:52:56,660 --> 00:52:57,970 Po. 1016 00:52:57,970 --> 00:53:00,790 >> Audienca: Pra, ju mund të hyni ndërtuar në mikrofon. 1017 00:53:00,790 --> 00:53:03,089 Çfarë nëse do të donit të përdorni një mikrofon të mirë? 1018 00:53:03,089 --> 00:53:05,380 Hugh Zabriskie: Në qoftë se ju të kërkuar për të përdorur mikrofon të mirë? 1019 00:53:05,380 --> 00:53:11,320 Pra, përsëri, kjo është pjesë e abstraksion në mes Chrome 1020 00:53:11,320 --> 00:53:12,950 dhe pjesa tjetër e kompjuterit tuaj. 1021 00:53:12,950 --> 00:53:18,950 Përveç nëse kjo është në dispozicion përmes një API, si Web MIDI API, 1022 00:53:18,950 --> 00:53:22,030 ju ndoshta mund të gjeni disa hacks, por në përgjithësi jo të jetë e mundur. 1023 00:53:22,030 --> 00:53:25,300 >> SAM GREEN: Ju mund also-- të gjitha Chrome di 1024 00:53:25,300 --> 00:53:28,820 është ajo që mikrofon tuaj parazgjedhje është, dhe kjo akseson se. 1025 00:53:28,820 --> 00:53:33,410 Pra, nëse keni pasur një mikrofon ju mund të vendosur si default mikrofon kompjuterit, 1026 00:53:33,410 --> 00:53:35,990 ju mund të hyni në atë në këtë mënyrë dhe kjo ndoshta do të punojë. 1027 00:53:35,990 --> 00:53:37,490 Hugh Zabriskie: Kjo është një pikë e mirë. 1028 00:53:37,490 --> 00:53:39,656 Unë kurrë nuk e kam provuar atë, por ju mund të jetë në gjendje të llojit 1029 00:53:39,656 --> 00:53:45,700 of-- nëse ju përcjellim folësin input, ju mund të jetë në gjendje të bëjë atë, po. 1030 00:53:45,700 --> 00:53:48,360 >> Çdo pyetje të fundit? 1031 00:53:48,360 --> 00:53:49,340 Ftohtë. 1032 00:53:49,340 --> 00:53:51,680 E pra faleminderit djema aq shumë për të shikuar. 1033 00:53:51,680 --> 00:53:52,199 Unë jam Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM GREEN: Unë jam Sam. 1035 00:53:52,990 --> 00:53:55,410 Hugh Zabriskie: Dhe kjo është CS50. 1036 00:53:55,410 --> 00:53:56,767