1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM YEŞİL: Merhaba, herkes. 3 00:00:07,170 --> 00:00:08,640 Bizim seminer hoşgeldiniz. 4 00:00:08,640 --> 00:00:10,009 Benim adım Sam. 5 00:00:10,009 --> 00:00:11,050 HUGH Zabriskie: Ben Hugh değilim. 6 00:00:11,050 --> 00:00:17,420 SAM YEŞİL: Ve bugün konuşacağız JavaScript ve Web Ses API hakkında. 7 00:00:17,420 --> 00:00:21,180 Sadece işe başlamak, bu bir taslak Seminerin için gündem. 8 00:00:21,180 --> 00:00:25,350 Biz bahsediyoruz başlamak için gidiyoruz Neden Web ilgi olmalıdır 9 00:00:25,350 --> 00:00:30,130 Ses API, neden JavaScript Bunun için ihtiyacınız olan dil, 10 00:00:30,130 --> 00:00:32,619 ve sonra JavaScript hakkında konuşmak , gibi pek essentials-- 11 00:00:32,619 --> 00:00:34,800 Bazı size yol Dilin temelleri, 12 00:00:34,800 --> 00:00:37,290 ve daha sonra hakkında konuşmak yüksek düzeyde ses API. 13 00:00:37,290 --> 00:00:41,140 Ardından, Hugh bazı bahsedeceğiz Ses üretim aşamaları 14 00:00:41,140 --> 00:00:45,509 ve sonra bu müthiş sequencer demo Proje kurdu ve size kodu gösterir. 15 00:00:45,509 --> 00:00:48,050 Ve sonra, biz zaman olacak insanlar için sonunda sorular 16 00:00:48,050 --> 00:00:49,593 burada yaşayan. 17 00:00:49,593 --> 00:00:50,540 >> HUGH Zabriskie: Serin. 18 00:00:50,540 --> 00:00:50,990 >> SAM YEŞİL: Serin. 19 00:00:50,990 --> 00:00:51,383 >> HUGH Zabriskie: Serin. 20 00:00:51,383 --> 00:00:52,170 Ben yedeklemek olacak. 21 00:00:52,170 --> 00:00:54,960 >> SAM YEŞİL: Yani, ilk ilk şeyler. 22 00:00:54,960 --> 00:00:57,840 Büyük şeylerden biri So Web Audio API hakkında 23 00:00:57,840 --> 00:01:00,480 Gerekli hiçbir set orada olmasıdır. 24 00:01:00,480 --> 00:01:04,230 Bu yerleşik olarak geliyor en modern tarayıcılar, 25 00:01:04,230 --> 00:01:08,630 Chrome, Edge, bir bütün olmak üzere diğerlerini bütün olanları demet 26 00:01:08,630 --> 00:01:12,650 bu büyük bölümlerini insanlar bugün kullanıyor. 27 00:01:12,650 --> 00:01:14,807 Yani hayır, orada ayarlanır kenara sadece dan getting 28 00:01:14,807 --> 00:01:16,890 Bir web sunucusu için, gidiş Eğer çalışmaya başlamak için 29 00:01:16,890 --> 00:01:18,420 büyük projeniz üzerinde. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Biz güzel tavsiye ağır sen düşünün 32 00:01:24,190 --> 00:01:26,530 Chrome kullanarak JavaScript web geliştirme, 33 00:01:26,530 --> 00:01:30,260 sadece kendi geliştirici çünkü araçları gerçekten güçlü. 34 00:01:30,260 --> 00:01:33,220 Ne demek sadece ne bir örnek olarak diyerek senin JavaScript açılır 35 00:01:33,220 --> 00:01:38,600 Chrome'da giderseniz konsolunda, ve herhangi bir web sayfasında bakmak, 36 00:01:38,600 --> 00:01:43,897 ve sol tıklayın Daha sonra Elemanı kontrol edin ve 37 00:01:43,897 --> 00:01:46,730 Bu küçük açılan gitmek Burada ve Konsolu tıklayın 38 00:01:46,730 --> 00:01:50,660 Eğer yukarı göründüğünü açar görürsünüz Komut isteminde gibi çok size 39 00:01:50,660 --> 00:01:53,720 Mac bakın veya kimliği olabilir. 40 00:01:53,720 --> 00:01:59,260 Sadece böyle, biz can tipi, Temizle gibi, burada komutları 41 00:01:59,260 --> 00:02:01,350 ve bunun gibi diğer komutlar. 42 00:02:01,350 --> 00:02:04,267 Biz, değişkenler oluşturabilirsiniz Biz JavaScript sonra görürsünüz. 43 00:02:04,267 --> 00:02:07,100 Ve böylece her şey biz yapabiliriz JavaScript, biz konsolda yapabilirsiniz 44 00:02:07,100 --> 00:02:11,430 ve bir süper kullanışlı bir yoldur API ile etrafında oynamaya başlayın 45 00:02:11,430 --> 00:02:15,760 ve rahat alıyorum Yarasa kapalı JavaScript. 46 00:02:15,760 --> 00:02:18,290 Hiçbir kurulum gereklidir, hangi gerçekten güzel. 47 00:02:18,290 --> 00:02:18,790 Güzel. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Başar. 50 00:02:22,880 --> 00:02:24,780 >> Yani sadece bir şey daha eklemek için. 51 00:02:24,780 --> 00:02:27,780 Eğer herhangi vardır questions-- Burada değil yaşayan bir çoğunuz 52 00:02:27,780 --> 00:02:31,232 us-- bu e-posta çekinmeyin Bizim e-posta adresleri bulunmaktadır. 53 00:02:31,232 --> 00:02:33,190 Sorularınız varsa Bize sormak istemiyorum, 54 00:02:33,190 --> 00:02:36,160 gibi oh bir hata var benim kod falan 55 00:02:36,160 --> 00:02:39,270 Bu, biraz daha özel olduğunu Belki ilk Google'dan. 56 00:02:39,270 --> 00:02:42,340 Büyük kaynakların bir yeri vardır Orada Web Audio API hakkında. 57 00:02:42,340 --> 00:02:44,089 Gerçekten de var belgelenmiş ve davranıyor 58 00:02:44,089 --> 00:02:47,194 insanların bir ton tarafından kullanılan Sadece olan sanayi ve insanlar 59 00:02:47,194 --> 00:02:48,610 kendileri için eğlenceli şeyler inşa. 60 00:02:48,610 --> 00:02:51,306 Yani bir sürü olmalı Orada kaynakların. 61 00:02:51,306 --> 00:02:53,040 Başar. 62 00:02:53,040 --> 00:02:56,100 >> Serin, neden Web Audio API? 63 00:02:56,100 --> 00:02:59,840 Bu diyagram küçük bir parçasıdır Bu arada bir evrim 64 00:02:59,840 --> 00:03:04,100 Web'de ses zamanla büyüdü. 65 00:03:04,100 --> 00:03:13,080 Bgsound orijinal HTML etiketi gibi oldu Internet Explorer desteklemek için kullanılan söyledi. 66 00:03:13,080 --> 00:03:16,790 Sadece, oldukça basit sesler için izin işlevselliği, çok sağlam değildi, 67 00:03:16,790 --> 00:03:19,380 ve yapamadık karmaşık sıralama, 68 00:03:19,380 --> 00:03:21,890 Ses başladığında ya da kontrol ve çok sağlam durdu. 69 00:03:21,890 --> 00:03:23,930 Bu nedenle, özellikle değildi gelişmiş. 70 00:03:23,930 --> 00:03:27,470 Ondan sonra Flaş , along-- hangi geldi 71 00:03:27,470 --> 00:03:31,712 Ben hepiniz bildiğiniz eminim Flash-- belki çalıştığını değil nasıl, 72 00:03:31,712 --> 00:03:32,920 ama kesinlikle gördüm. 73 00:03:32,920 --> 00:03:35,586 Sen Flash'ı güncellemek lazım Plug-in, şeyler her bu tür, 74 00:03:35,586 --> 00:03:40,110 ve kesinlikle yelpazesini genişletmiştir işlevselliğin mevcut olduğunu. 75 00:03:40,110 --> 00:03:45,370 Ama kullanıcı yapma yüklemek bir plug-in kesinlikle 76 00:03:45,370 --> 00:03:48,480 dahil olmak üzere Flash bir dezavantajı uygulamanızda, değil mi? 77 00:03:48,480 --> 00:03:52,410 O Çünkü bağımlı konum Kullanıcı gidiyor ve bu plug-in bulma, 78 00:03:52,410 --> 00:03:54,660 ve muhtemelen kapatılmasını Bu ekstra adım uzakta 79 00:03:54,660 --> 00:03:56,640 onlar uygulamasını kullanmak için almak zorunda. 80 00:03:56,640 --> 00:04:01,270 Ve sonra bir güncelleme olabilir senin bütün uygulama kırarım, 81 00:04:01,270 --> 00:04:03,880 ve bir kabus olmak biter Çok geliştirici için. 82 00:04:03,880 --> 00:04:06,230 Yani bir barikat oldu. 83 00:04:06,230 --> 00:04:10,480 >> Ve o, gelip sonra HTML ses etiketi, hangi 84 00:04:10,480 --> 00:04:16,579 Daha modern HTML-- bir özelliği olan kesinlikle çok daha fazla şeyler için izin 85 00:04:16,579 --> 00:04:20,050 ancak bu bile şeyler yapabileceğini biraz sadece orada sınırlı 86 00:04:20,050 --> 00:04:22,730 şeylerin bir sonucu olarak HTML yeteneğine sahip oldu. 87 00:04:22,730 --> 00:04:26,060 Peki ne zaman JavaScript API, Web Audio API 88 00:04:26,060 --> 00:04:29,290 Bir standart oldu tarayıcılar arasında pratik, 89 00:04:29,290 --> 00:04:32,490 Bu gerçekten set genişletti Geliştiriciler için fırsat 90 00:04:32,490 --> 00:04:36,590 Gerçekten bina içine almak için web için güzel şeyler. 91 00:04:36,590 --> 00:04:39,220 Uzun bir süre orada vardı hiç gerçekten sağlam araçlar 92 00:04:39,220 --> 00:04:44,360 Yerli ses uygulamaları için, Herkesin bildiği GarageBand da--, 93 00:04:44,360 --> 00:04:48,360 ve o zaman tabii ki daha vardır profesyonel ses karıştırma uygulamaları, 94 00:04:48,360 --> 00:04:49,640 ve bu tür şeyler. 95 00:04:49,640 --> 00:04:52,690 Ama orada değildi bir Gerçekten iyi Cloud-- değil 96 00:04:52,690 --> 00:04:55,811 Bulut, evet, sanırım Cloud-- web tabanlı bir platform 97 00:04:55,811 --> 00:04:58,310 Bu geliştiriciler için izin verecek insanlar için uygulamalar oluşturmak 98 00:04:58,310 --> 00:05:00,570 Ses karıştırma yapmak. 99 00:05:00,570 --> 00:05:03,960 Ve seni göstereceğim gibi Daha sonra, Web Audio API 100 00:05:03,960 --> 00:05:07,470 gerçekten güçlü sağlar şeyler, gerçekten sadece gerçekleşmesi 101 00:05:07,470 --> 00:05:09,597 hangi oldukça serin. 102 00:05:09,597 --> 00:05:12,680 Böylece sana neden talimat var Seminerin geri kalanını izlemek gerekir, 103 00:05:12,680 --> 00:05:14,350 temelde. 104 00:05:14,350 --> 00:05:17,880 >> Ve şimdi, ben hakkında konuşmak için gidiyorum Bazı JavaScript-- sadece temel unsurları 105 00:05:17,880 --> 00:05:20,240 dil, böylece biz aynı sayfada olabilir 106 00:05:20,240 --> 00:05:22,470 biz hakkında konuşmak zaman API biraz sonra. 107 00:05:22,470 --> 00:05:23,260 Güzel. 108 00:05:23,260 --> 00:05:26,192 >> Yani, bu bir özetidir. 109 00:05:26,192 --> 00:05:27,150 Ben bu burada unutmuşum. 110 00:05:27,150 --> 00:05:27,510 Evet. 111 00:05:27,510 --> 00:05:27,870 >> HUGH Zabriskie: Burada iki slaytlar var. 112 00:05:27,870 --> 00:05:30,245 >> SAM YEŞİL: Bu özetidir sınırlamaları bazı 113 00:05:30,245 --> 00:05:35,220 Diğer bağlayıcı, eski yöntemler. 114 00:05:35,220 --> 00:05:37,828 Ve sonra şimdi biz bu şeyleri var. 115 00:05:37,828 --> 00:05:40,011 Güzel. 116 00:05:40,011 --> 00:05:40,510 Başar. 117 00:05:40,510 --> 00:05:43,200 >> Yani, JavaScript şartları. 118 00:05:43,200 --> 00:05:47,230 İlk şeyler ilk, orada bir Oldukça anlamlı bir fark 119 00:05:47,230 --> 00:05:49,940 JavaScript karşı bir şekilde C gibi dil, 120 00:05:49,940 --> 00:05:52,050 Bu değişkenler oluşturulur. 121 00:05:52,050 --> 00:05:55,634 C Yani, biz sahip alıştığınız Bizim değişkenleri yazmak için, değil mi? 122 00:05:55,634 --> 00:05:57,800 Ve ben böyle türünü kastetmiyorum Onları yazın, ben tipini demek 123 00:05:57,800 --> 00:06:01,900 gibi onlara type-- anlam atamak gibi, bir int, float, char. 124 00:06:01,900 --> 00:06:05,210 C, biz gerçekten kullanıldı bir değişken oluşturmak zorunda 125 00:06:05,210 --> 00:06:09,690 ve daha sonra da bu tür sopa biz bu değişkeni kullanın süre boyunca. 126 00:06:09,690 --> 00:06:13,990 Ve bu, mutlaka kötü değil ancak kullanmak için muhtemelen zor. 127 00:06:13,990 --> 00:06:16,190 Serin özelliklerinden biri JavaScript ve 128 00:06:16,190 --> 00:06:19,740 değişkenler denen olduğunu "dinamik, yazdığınız" hangi 129 00:06:19,740 --> 00:06:22,500 Ben oluşturmak anlamına gelir Bu sözdizimi ile değişken, 130 00:06:22,500 --> 00:06:25,800 varX örneğin 5 eşittir. 131 00:06:25,800 --> 00:06:27,790 Bu aslında oluşturur bir tamsayıdır variable-- 132 00:06:27,790 --> 00:06:29,870 Sağ altında Kaput somewhere-- ama ben 133 00:06:29,870 --> 00:06:33,040 bu değişken değiştirebilirsiniz bir dize başvurmak için 134 00:06:33,040 --> 00:06:35,820 Böyle bir şey yapmadan yeni bir değişken yaratır. 135 00:06:35,820 --> 00:06:37,880 Ben endişelenmenize gerek yok tipi değiştirme hakkında. 136 00:06:37,880 --> 00:06:45,440 JavaScript bu tür en bilir değişti ve bu dinamik olur. 137 00:06:45,440 --> 00:06:48,510 >> Yani, faydaları vardır ve mahzurlar 138 00:06:48,510 --> 00:06:51,250 çalışmış oluyor da herkes Bir süre JavaScript biliyor olabilir. 139 00:06:51,250 --> 00:06:53,600 Zaman zaman vardır Yanlışlıkla olabilir 140 00:06:53,600 --> 00:06:57,720 Bir değişkenin türünü değiştirmek ve Bu tip değişen işlemez, 141 00:06:57,720 --> 00:07:01,120 ve sonra JavaScript crash-- veya bir istisna olabilir 142 00:07:01,120 --> 00:07:06,070 Eğer gerekecek çünkü atılır Yanlış türü bir tür beklediğiniz. 143 00:07:06,070 --> 00:07:07,040 Güzel. 144 00:07:07,040 --> 00:07:11,470 >> Bu nedenle, burada scoping-- eğer gibi biz Tabii erken hafta hatırlıyorum, 145 00:07:11,470 --> 00:07:15,420 nasıl görünür bir değişkene ifade eder ve kod hangi alanda. 146 00:07:15,420 --> 00:07:18,400 Tüm bu çok benzer o C görünüyor şekilde 147 00:07:18,400 --> 00:07:24,755 Yani değişkenler genellikle kapsamına eklenir Bir işlev içinde küme parantezi içinde, 148 00:07:24,755 --> 00:07:27,005 ve daha sonra da vardır küresel Scoped değişkenler olduğunu 149 00:07:27,005 --> 00:07:29,171 Bir değişken yazarsanız mudur Bir fonksiyon dışında, 150 00:07:29,171 --> 00:07:31,790 o tüm metin görünür olacaktır. 151 00:07:31,790 --> 00:07:35,840 >> Arasında bir fark Özellikle JavaScript ve C, 152 00:07:35,840 --> 00:07:40,280 Eğer küresel bildirirseniz olduğunu bir metin dosyasında değişken her yerde 153 00:07:40,280 --> 00:07:43,324 herhangi bir işlev görebilir var: Bu metin dosyası içinde. 154 00:07:43,324 --> 00:07:44,240 Doğru, doğru değil mi? 155 00:07:44,240 --> 00:07:46,330 >> HUGH Zabriskie: Evet. 156 00:07:46,330 --> 00:07:49,120 >> SAM YEŞİL: Yani bu da biraz var C ile karşılaştırmalı olarak funky bit 157 00:07:49,120 --> 00:07:52,660 biz her zaman olması gerekiyordu nerede bizim yerlerde yukarıda değişken tanımları 158 00:07:52,660 --> 00:07:53,770 için kullanılmıştır. 159 00:07:53,770 --> 00:07:57,957 Yani zorunlu oluyor bir kural değil, Artık, bu yüzden, biraz farklı. 160 00:07:57,957 --> 00:08:00,540 Ve yine sadece bir kez daha vurgulamak, Yerel variables-- karşı küresel 161 00:08:00,540 --> 00:08:03,457 -C'ye çok benzer Eğer olabilir Aynı isimde iki değişken, 162 00:08:03,457 --> 00:08:06,540 ve bunların isimlerinden biri gölgeli var Yerel bir değişken tarafından onlardan biri varsa 163 00:08:06,540 --> 00:08:07,546 Global oldu. 164 00:08:07,546 --> 00:08:09,420 Yani, benzer bir tür sorunlar bazılarınız o 165 00:08:09,420 --> 00:08:11,920 Bazı çalıştırmak olabilir senin sorunun şimdiye kadar ayarlar. 166 00:08:11,920 --> 00:08:14,450 Serin, böylece değişkenleri var. 167 00:08:14,450 --> 00:08:20,310 >> Kontrol akış gibi yani if-else-- mantıksal stuff-- ve döngüler. 168 00:08:20,310 --> 00:08:24,510 Yani başlamak, bu ne if-else ifadeleri JavaScript benziyor. 169 00:08:24,510 --> 00:08:29,750 Çeşitli şeyler yerleştirme hatlarda önemli değildir. 170 00:08:29,750 --> 00:08:34,409 Bu sadece sözleşmelerin biridir yolu, yapı kodu. 171 00:08:34,409 --> 00:08:38,634 Sadece C gibi, biz var Bir parantez ifadesi ", eğer". 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 Ben de bunu yapmaya demek istemedim. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Bunu tekrar yaptım. 176 00:08:45,550 --> 00:08:46,841 >> HUGH Zabriskie: Çıkmak için çalışıyorsunuz? 177 00:08:46,841 --> 00:08:49,770 SAM YEŞİL: Hayır, ben Sadece yakınlaştırmak için çalışıyor. 178 00:08:49,770 --> 00:08:50,660 It does not matter. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Yani, biz bir "eğer" bir bildirimde bulunmamış ve biz bunun içinde bir şartım var 181 00:08:59,370 --> 00:09:03,130 Bu, doğru veya yanlış olarak değerlendirir ve bu olup olmadığını belirler 182 00:09:03,130 --> 00:09:04,510 Biz o kod bloğunu girin. 183 00:09:04,510 --> 00:09:09,860 Ve aynı şekilde, biz bir else-if ve Biz C. alıştığınız gibi bir else, 184 00:09:09,860 --> 00:09:14,010 >> Sen de oldukça rahat olmalıdır Doğru döngüler ile yarasa kapalı, 185 00:09:14,010 --> 00:09:16,440 onlar da bakmak çünkü C gibi bir sürü görünüyor. 186 00:09:16,440 --> 00:09:19,600 Ama yine dikkat edin edeceksiniz biz yerine başlatımlar int bölgesinin sahip 187 00:09:19,600 --> 00:09:22,570 Biz var baþlatma var. 188 00:09:22,570 --> 00:09:24,650 Ve ben var sanırım yapmak için dikkatli olmak 189 00:09:24,650 --> 00:09:28,460 emin değerini değiştirmek yok I int bir dizeye, 190 00:09:28,460 --> 00:09:31,780 Örneğin, çünkü gidiyor garip davranışlara neden sen olmayabilir 191 00:09:31,780 --> 00:09:32,280 bekliyoruz. 192 00:09:32,280 --> 00:09:35,750 Ama bu görünmelidir Oldukça tanıdık, hem de. 193 00:09:35,750 --> 00:09:39,460 >> Şeyler başlar nerede Yani bu JavaScript biraz deli olsun 194 00:09:39,460 --> 00:09:44,920 birisi için kim den gidiyor C. arka plan fonksiyonları vardır 195 00:09:44,920 --> 00:09:48,070 JavaScript ve tek yolu var görünen bir işlev bildirmek için 196 00:09:48,070 --> 00:09:50,361 C benzer tür ve Sonra bir tane daha var ki 197 00:09:50,361 --> 00:09:52,450 Biraz farklı görünüyor. 198 00:09:52,450 --> 00:09:54,930 >> İlk sürümü, Burada görebileceğiniz, 199 00:09:54,930 --> 00:09:59,260 nerede tür C-gibi Biz bu bir fonksiyondur, demek 200 00:09:59,260 --> 00:10:01,490 bir ad verin, verin argüman sayısı, 201 00:10:01,490 --> 00:10:05,150 fonksiyon ve daha sonra içeriğinin Bu küme parantezi içinde gitmek. 202 00:10:05,150 --> 00:10:08,850 Biz bir örnek göreceksiniz Bir saniye içinde argümanlar. 203 00:10:08,850 --> 00:10:13,420 >> Bir sonraki satırda Oysa, biz oh, bak, Burada adı verilen bir değişken "myFunction," var: 204 00:10:13,420 --> 00:10:17,546 ve biz bu onu eşit genel thing-- function-- bu 205 00:10:17,546 --> 00:10:19,170 bir şey oluyor olması görünmüyor. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Farklı nedeni daha Cı olmasıdır JavaScript 208 00:10:26,080 --> 00:10:30,040 işlevsel bir dil olarak adlandırılan şeydir, ya da bunun anlamı, fonksiyonel elemanları vardır 209 00:10:30,040 --> 00:10:33,510 işlevleri aslında değerler söyledi. 210 00:10:33,510 --> 00:10:39,520 Ve biz ayarlayabilirsiniz anlamına gelir Değişken bir işlev eşit 211 00:10:39,520 --> 00:10:43,210 ve o işlevi taşımak etrafında, bir argüman olarak geçmek, 212 00:10:43,210 --> 00:10:46,550 şeyler her türlü yapmak fonksiyonları ile böyle. 213 00:10:46,550 --> 00:10:49,682 >> Bir şey note-- için işlevleri yazılır 214 00:10:49,682 --> 00:10:51,140 argümanların belirli sayıda. 215 00:10:51,140 --> 00:10:54,056 Biz bir işlev bir örnek göreceksiniz Bir sonraki slaytta bir argüman. 216 00:10:54,056 --> 00:10:56,720 Ama JavaScript olmaz Eğer çalışırsanız sen bağırma 217 00:10:56,720 --> 00:10:59,330 bir fonksiyonu kullanmak için argümanların yanlış numara. 218 00:10:59,330 --> 00:11:05,310 Sadece yapmak için elinden geleni yapacağım eğer geçerseniz, yani do, 219 00:11:05,310 --> 00:11:09,410 Bir bekler bir işlevi çağırmak hiçbir argüman, tüm argüman olduğunu 220 00:11:09,410 --> 00:11:13,990 onun geleni yapacağız olduğunu olacak denemek ve bu kod yürütmesine, 221 00:11:13,990 --> 00:11:16,541 ve sonunda çalışıyorsa Bir istisna veya bir hata içine 222 00:11:16,541 --> 00:11:19,790 o istisna sadece tutacağız going-- gibi yollardan biri olan 223 00:11:19,790 --> 00:11:21,070 JavaScript çalışır. 224 00:11:21,070 --> 00:11:21,781 Evet. 225 00:11:21,781 --> 00:11:24,207 >> HEDEF KİTLE: Ne olur Çok fazla argüman var? 226 00:11:24,207 --> 00:11:26,040 SAM YEŞİL: So Soru ne olur, oldu 227 00:11:26,040 --> 00:11:27,380 Çok sayıda argüman varsa? 228 00:11:27,380 --> 00:11:29,171 Ve cevap olduğunu JavaScript sadece olacak 229 00:11:29,171 --> 00:11:32,120 olanları görmezden o beklediğini olanlar sonra. 230 00:11:32,120 --> 00:11:36,420 Bu işlevi yürütmek için çalışacağım Sadece ilk iki sanki diyoruz. 231 00:11:36,420 --> 00:11:37,075 Sağ? 232 00:11:37,075 --> 00:11:37,700 >> HUGH Zabriskie: Bu doğru, evet. 233 00:11:37,700 --> 00:11:39,449 Benzer şekilde, eğer orada Çok az argümanlar vardır, 234 00:11:39,449 --> 00:11:42,640 sadece tür tüm null verir argümanlar herhangi bir değeri yoktur 235 00:11:42,640 --> 00:11:43,660 için. 236 00:11:43,660 --> 00:11:45,810 >> SAM YEŞİL: can Aslında, kullanışlı olabilir eğer 237 00:11:45,810 --> 00:11:49,060 fonksiyon yazmak istiyorum Değişken sayı argüman alır. 238 00:11:49,060 --> 00:11:55,830 Siz varsayılan değerler ayarlayabilirsiniz Fonksiyonun tanımı, 239 00:11:55,830 --> 00:11:59,060 ve gerçeğini göz ardı edebilirsiniz Bu girdi yok. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Yani biraz konuşmak istiyorum bu son mermi hakkında daha fazla bilgi 242 00:12:04,000 --> 00:12:05,541 fonksiyonları nokta değerlerdir. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Bu bir örnektir Biraz üfleme 245 00:12:11,010 --> 00:12:14,880 Sadece okumak ve düşünmek istemiyorsanız Bir saniye ne oluyor hakkında. 246 00:12:14,880 --> 00:12:17,910 Yani, sadece bakalım Burada ilk satırı. 247 00:12:17,910 --> 00:12:24,360 Biz demek, bu değişken, f1 var Bu şeyi yapan bir işlevdir. 248 00:12:24,360 --> 00:12:28,535 Ve fonksiyonun içeriği ('merhaba') console.log vardır. 249 00:12:28,535 --> 00:12:32,220 Sen console.log düşünebilirsiniz Printf JavaScript eşdeğer. 250 00:12:32,220 --> 00:12:35,510 Peki ne olacak, eğer, biz Bizim tarayıcıda bu kodu çalıştırın, 251 00:12:35,510 --> 00:12:37,530 Bir dize yazdırmak olacak. 252 00:12:37,530 --> 00:12:39,342 Bunu göstermek olabilir. 253 00:12:39,342 --> 00:12:42,300 HEDEF KİTLE: log olarak, olsa da, bunu yapar bir yerde kaydedilen ediliyor demek? 254 00:12:42,300 --> 00:12:42,550 SAM YEŞİL: Evet. 255 00:12:42,550 --> 00:12:44,216 Yani ne olacak size göstereceğim. 256 00:12:44,216 --> 00:12:48,085 Yani soru ne anlama geliyor günlüğü oldu? 257 00:12:48,085 --> 00:12:51,262 >> HUGH Zabriskie: So console.log C için printf gibi 258 00:12:51,262 --> 00:12:52,970 SAM YEŞİL: So console.log , printf gibi 259 00:12:52,970 --> 00:12:59,240 bu yüzden ('Merhaba') bu console.log varsa, ve ben diyoruz, string "merhaba" 260 00:12:59,240 --> 00:13:00,730 konsola yazdırılır alır. 261 00:13:00,730 --> 00:13:03,340 Bu konsoludur. 262 00:13:03,340 --> 00:13:05,930 Bu sadece printf, gibi standart dışı yazdırır. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 Ve biz bir dakika içinde göreceksiniz, ama bu aslında 265 00:13:11,230 --> 00:13:16,529 Konsol nesnesine atıfta bulunarak, ve o nesne üzerinde bir yöntemi çağırmak. 266 00:13:16,529 --> 00:13:18,320 Bu daha mantıklı olacak ne zaman bir dakika içinde biz 267 00:13:18,320 --> 00:13:20,660 bahsediyoruz olsun JavaScript nesneleri, 268 00:13:20,660 --> 00:13:22,509 ama ben sadece söz düşündüm. 269 00:13:22,509 --> 00:13:24,300 HUGH Zabriskie: Bizler C için kullanılan haklıydın-- 270 00:13:24,300 --> 00:13:27,580 Biz genellikle büyük bir program yazmak Ana şey yapmak. 271 00:13:27,580 --> 00:13:30,700 Ama ne JavaScript serin sensin tercümanın bu tür var 272 00:13:30,700 --> 00:13:33,620 ishal gerçek zamanlı olarak, o yüzden satır satır sadece alır, 273 00:13:33,620 --> 00:13:35,320 sadece yerinde olduğunu yorumlayabiliriz. 274 00:13:35,320 --> 00:13:37,403 Ve bu izler daha önce çalıştırmak şeyler 275 00:13:37,403 --> 00:13:41,620 bu yüzden bir oldukça yararlı bir araçtır , console.log veya konsol kullanmak 276 00:13:41,620 --> 00:13:46,870 Genellikle, sadece oynamak için etrafında JavaScript ile. 277 00:13:46,870 --> 00:13:51,420 >> SAM YEŞİL: Yani bu kadar geri gidiyor İkinci kod satırı example-- 278 00:13:51,420 --> 00:13:55,320 Burada kafamda oldukça boggling olduğunu. 279 00:13:55,320 --> 00:13:59,790 İlk kez bu okudum, o gibi ne oluyor ki? 280 00:13:59,790 --> 00:14:04,580 Peki ne oluyor bu, bir fonksiyon beyanı diyor 281 00:14:04,580 --> 00:14:10,170 Ben bir işlevi çağrılır f2 var Bu, f bir argüman bekliyor, 282 00:14:10,170 --> 00:14:12,990 ve daha sonra bu çağrıları fonksiyonu, f, hangi 283 00:14:12,990 --> 00:14:17,652 argüman olarak kendisine geçildi hiçbir argüman kendisi. 284 00:14:17,652 --> 00:14:19,110 Yani, bu kafa karıştırıcı olabilirdi. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 F2 f1 alır gibi biz bu anlamak bir argüman olarak ve daha sonra f2 içinde, 287 00:14:28,400 --> 00:14:31,190 f called-- bu araç alır Bu kod satırı olduğu, 288 00:14:31,190 --> 00:14:34,192 Bu iki satır sonra Kod, "merhaba" sonuçları 289 00:14:34,192 --> 00:14:35,400 konsola basılıyor. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Biz geçebilir gerçeği etrafında işlevler değerler olarak 292 00:14:44,910 --> 00:14:47,870 En biri olmak biter JavaScript güçlü özellikleri 293 00:14:47,870 --> 00:14:49,700 Bir programlama dili olarak. 294 00:14:49,700 --> 00:14:52,782 Her dışında yapabilirim müthiş şeyler, 295 00:14:52,782 --> 00:14:54,990 Sadece bir özelliği olarak şekilde açısından dili 296 00:14:54,990 --> 00:14:58,400 bu işler kolay hale getirdiğini programlamak ve izin verir 297 00:14:58,400 --> 00:15:01,060 özellikle olmayan şeyler için Web'de için çok uygundur, 298 00:15:01,060 --> 00:15:04,500 Fonksiyonel programlama ve fonksiyonel JavaScript programlama yönleri 299 00:15:04,500 --> 00:15:07,130 En biridir Güçlü kavramlar olduğunu 300 00:15:07,130 --> 00:15:11,030 Bana sorarsanız JavaScript-- bulunmaktadır. 301 00:15:11,030 --> 00:15:11,960 Güzel. 302 00:15:11,960 --> 00:15:13,534 >> Yani, bir sonraki şey. 303 00:15:13,534 --> 00:15:16,450 Fonksiyonel olmasının yanı sıra, JavaScript unsurları vardır 304 00:15:16,450 --> 00:15:20,510 nesne yönelimli olduğu, olduğu çok biridir 305 00:15:20,510 --> 00:15:23,800 bilgisayar bilimi popüler vızıltı kelime. 306 00:15:23,800 --> 00:15:27,040 Nesne yönelimli programlama gerçekten popüler bir şeydir. 307 00:15:27,040 --> 00:15:34,210 JavaScript bunun bir sürümü var, Ben her değeri de olduğuna inanıyorum nerede 308 00:15:34,210 --> 00:15:41,475 Her nesne anlamına gelir bir nesne, değerlerin bazılarını dizi araya sarar. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Basit değerler gibi Yani , varX gibi bir tam sayıdır, = 5 311 00:15:49,750 --> 00:15:52,250 bu nesne sadece tek bir değer sarar. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Ama biz de bir durum hayal edebiliyorum Biz C durumlara düşünebilirsiniz Nere 314 00:15:59,036 --> 00:16:00,910 biz yapmak istedim yapılar ile bir şey, 315 00:16:00,910 --> 00:16:03,285 Örneğin, bu birkaç sarar Birlikte değerler ve yapar 316 00:16:03,285 --> 00:16:05,870 gerçekten kolay şeyler etrafında geçmek. 317 00:16:05,870 --> 00:16:09,270 Bir nesne JavaScript olduğunda budur. 318 00:16:09,270 --> 00:16:12,340 >> Bu hatırlamak önemlidir Ben nesnelerin sarılı olduğunu söylerken 319 00:16:12,340 --> 00:16:15,330 Birlikte bazı değerlerin sayısı, işlevleri de olduğu 320 00:16:15,330 --> 00:16:21,506 fonksiyonları olabilir ki değerler Ayrıca bir JavaScript nesnesinin içinde olması. 321 00:16:21,506 --> 00:16:26,910 Ve önemli sebebi olduğunu, sık sık biz ise 322 00:16:26,910 --> 00:16:30,290 bir yöntemi çağırmak düşünüyorum var bir nesne üzerinde 323 00:16:30,290 --> 00:16:35,200 Diğer bir popüler terim Popüler nesne yönelimli diller, 324 00:16:35,200 --> 00:16:39,330 farklardan biri burada olduğunu Bir yöntem, JavaScript içinde tüm bu 325 00:16:39,330 --> 00:16:47,270 değeri bir nesne içinde saklanır bu muhtemelen bazı action-- gerçekleştirir 326 00:16:47,270 --> 00:16:51,850 içinde diğer değerleri kullanarak o nesnenin, ama mutlaka. 327 00:16:51,850 --> 00:16:56,930 Yani ben, bir durum hayal edebiliyorum çılgın bir şekilde biraz sanırım, 328 00:16:56,930 --> 00:17:02,990 Eğer biri bir yöntem denilen yerde Örneğin, başka bir nesne üzerinde nesne. 329 00:17:02,990 --> 00:17:06,010 Yani, bu şekilde korkak biraz öyle. 330 00:17:06,010 --> 00:17:09,369 >> Ve ayrıca yöntemleri değiştirebilirsiniz Bir nesne ile ilişkili olduğu 331 00:17:09,369 --> 00:17:13,740 bu yöntem a atayarak aynı zamanda, yeni fonksiyon, 332 00:17:13,740 --> 00:17:18,250 diğerinden oldukça farklı nesne yönelimli diller, 333 00:17:18,250 --> 00:17:21,410 Biz bir nesne bildirmek kez ve örneğini, 334 00:17:21,410 --> 00:17:25,839 biz yöntemleri değiştiremezsiniz artık o nesne ile ilişkili. 335 00:17:25,839 --> 00:17:28,680 Yani oldukça farklı. 336 00:17:28,680 --> 00:17:29,570 Güzel. 337 00:17:29,570 --> 00:17:34,010 >> Yani burada ilk olarak, bir örnek, eylem bir nesnenin. 338 00:17:34,010 --> 00:17:36,390 Bu ne denir olduğunu Bir genel nesne, hangi 339 00:17:36,390 --> 00:17:39,460 herhangi bir yok demektir Özellikle isim, bir sınıf yok 340 00:17:39,460 --> 00:17:42,190 bu değerlerin sadece bazı sarma var. 341 00:17:42,190 --> 00:17:49,790 Ve görünen şekilde biz var olan Kıvırcık bu dış çifti burada parantez 342 00:17:49,790 --> 00:17:57,950 JavaScript göstermektedir ki ve bu bir nesne olduğunu söylüyorlar. 343 00:17:57,950 --> 00:18:02,130 Bunun içinde değerleri Her değerler içerde 344 00:18:02,130 --> 00:18:04,590 nesnesinin gerektiği Birlikte sarılır. 345 00:18:04,590 --> 00:18:09,180 Ve o nesnenin içinde, biz o zaman, anahtar değer çiftleri var 346 00:18:09,180 --> 00:18:13,880 Anahtar adını gösterir nerede nesnesinin iç değer, 347 00:18:13,880 --> 00:18:16,790 ve diğer için-- Kolon burada-- karşısında 348 00:18:16,790 --> 00:18:19,850 Gerçek değer Bu muhafaza edilmelidir. 349 00:18:19,850 --> 00:18:26,210 >> Yani biz var burada göremiyor anahtar değeri sam ile fn denilen, 350 00:18:26,210 --> 00:18:29,430 Ardından bir virgül, sonraki giriş üzerine söyleyerek. 351 00:18:29,430 --> 00:18:33,560 Daha sonra ln adı verilen bir anahtar Yeşil bir değeri olan, 352 00:18:33,560 --> 00:18:35,840 Ardından bir virgül, "baskı" ve ardından 353 00:18:35,840 --> 00:18:43,209 Bir fonksiyon değerine sahip olacak olan Bu kod satırını yapacak. 354 00:18:43,209 --> 00:18:45,500 En bir adım geri atalım ve Burada neler oluyor açmak. 355 00:18:45,500 --> 00:18:47,280 Yani bu, biraz karmaşık ve biz yeni bir şey görüyorsanız 356 00:18:47,280 --> 00:18:48,071 ilk kez. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 "Bu" anahtar kelime yeni bir şey Burada görme ve bu ne konum 359 00:18:55,065 --> 00:19:00,540 olduğu akımı anlamına gelmektedir Doğru, kapsamı itiraz? 360 00:19:00,540 --> 00:19:03,990 Bu yüzden, bu derken tüm yolu geri işaret 361 00:19:03,990 --> 00:19:08,140 Tüm bu object-- için Biz this.fn ne zaman, 362 00:19:08,140 --> 00:19:11,990 biz geri tüm yol gitmek için gidiyoruz Bu nesneye, fn değerine gitmek 363 00:19:11,990 --> 00:19:16,471 ve sam olsun, o tüm yol çekme Geri buraya sopa ve sonra hareket. 364 00:19:16,471 --> 00:19:19,838 >> HEDEF KİTLE: alma Yani, bir çünkü parametrenin yapılan 365 00:19:19,838 --> 00:19:20,621 tanım? 366 00:19:20,621 --> 00:19:23,870 SAM YEŞİL: soru Yani olduğunu alma nedeniyle parametrenin yapılan 367 00:19:23,870 --> 00:19:24,727 tanım? 368 00:19:24,727 --> 00:19:25,435 Evet, kesinlikle. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Ne isimli burada ne olacak Bu nokta, JavaScript diyor 371 00:19:32,470 --> 00:19:39,990 Tamam, bazı değer alıyorum Kendimden bu nesneden. 372 00:19:39,990 --> 00:19:46,375 Ve sonra bir giriş için bakacağız fn denir ve onu bulursa, 373 00:19:46,375 --> 00:19:48,470 o sam var, böylece value-- dönersiniz. 374 00:19:48,470 --> 00:19:51,540 Ama aynı zamanda yazdığınız olabilirdi Burada tanımlanan değildi bir şey, 375 00:19:51,540 --> 00:19:54,090 ve sonra sadece olurdu undefined-- geri dönme 376 00:19:54,090 --> 00:19:58,250 Bir şey JavaScript yapabilirsiniz olduğunu faydaları, hangi do, 377 00:19:58,250 --> 00:20:03,190 Eğer bir yazım hatası yaparsanız ama, also-- var garip hatalara neden olabilir. 378 00:20:03,190 --> 00:20:05,617 Yani sadece bulmaya çalışacağım Bulmak için bunu söylemek ne 379 00:20:05,617 --> 00:20:07,700 ve gitmiyor Onu bulmak yoksa şikayetçi. 380 00:20:07,700 --> 00:20:11,390 Sadece ben yapmadım, söyleyeceğim Onu bulmak ve sonra hareket. 381 00:20:11,390 --> 00:20:17,581 Bu yüzden, tanımsız olur artı boş artı soyadı. 382 00:20:17,581 --> 00:20:18,080 Evet. 383 00:20:18,080 --> 00:20:21,070 Ve sonra biz görebilirsiniz eğer Daha sonra aşağı inip access-- olabilir 384 00:20:21,070 --> 00:20:25,450 ve biz parantez ile tf.print () diyoruz. 385 00:20:25,450 --> 00:20:30,000 O baskı arayacak hiçbir argüman ile fonksiyon, değil mi? 386 00:20:30,000 --> 00:20:34,490 Ama eğer biz sadece söz konusu tf.print () noktalı virgül, parantez olmadan, 387 00:20:34,490 --> 00:20:37,480 yapardı tüm çekme olduğunu değerden fonksiyonu dışında, 388 00:20:37,480 --> 00:20:40,609 ama aslında adı değil. 389 00:20:40,609 --> 00:20:41,162 Güzel. 390 00:20:41,162 --> 00:20:42,870 HUGH Zabriskie: Should Biz bir nesne yapmak? 391 00:20:42,870 --> 00:20:44,161 SAM YEŞİL: Elbette, öyle yapalım. 392 00:20:44,161 --> 00:20:48,750 Yani bu taşıyabilirsiniz konsola örneğin. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Biz bir nesne olduğunu hayal edebiliyorum. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Yani bu basit bir nesnedir. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Bu iki içeren bir nesnedir İki tuşları ile değerleri iki anahtar değeri 399 00:21:11,050 --> 00:21:12,710 çiftleri. 400 00:21:12,710 --> 00:21:21,850 Yani o zaman saklanan değere erişebilirsiniz x.x1 yaparak bu nesnenin içinde, 401 00:21:21,850 --> 00:21:23,400 Örneğin, ben 1 geri almak. 402 00:21:23,400 --> 00:21:29,590 Aynı şekilde, x.x2, bu değeri geri almak. 403 00:21:29,590 --> 00:21:33,330 >> Ve şimdi gerçekten harika bir şey yapabilirim olduğunu Aslında bu nesneye şeyler eklemek 404 00:21:33,330 --> 00:21:34,316 Bunu oluşturduktan sonra. 405 00:21:34,316 --> 00:21:36,315 Yani diyelim, hayal edebiliyorum Ben bir işlevi var ki. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> HUGH Zabriskie: Sen -Enter Shift yapmak zorundayız. 408 00:21:46,352 --> 00:21:47,643 >> SAM YEŞİL: Oh, bu sinir bozucu. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Ne gibi değil mi? 411 00:22:04,324 --> 00:22:04,824 Ah. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 İşte başlıyoruz. 414 00:22:08,691 --> 00:22:09,190 Güzel. 415 00:22:09,190 --> 00:22:12,840 >> Yani sadece yarattım Bu fonksiyon, f, o 416 00:22:12,840 --> 00:22:17,590 akım gidecek Nesne ve baskı this.x1. 417 00:22:17,590 --> 00:22:20,330 Yani sadece tarafından f ararsanız kendisi, hiçbir şey gidiyor 418 00:22:20,330 --> 00:22:26,970 Hiçbir x1 olmadığından, doğru, ne o atıfta bulunuyor nesne alan. 419 00:22:26,970 --> 00:22:39,710 Ama, ben o zaman, x.f = f ve derseniz ben x.f () çağrısı, geri 1 alacağım. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Bu f fonksiyonu artık Nesne x ile ilişkili 422 00:22:46,530 --> 00:22:51,800 anahtar olarak adlandırılan x1 olan değeri 1 ile ilişkili 423 00:22:51,800 --> 00:22:54,570 Biz this.x1 çağırdığınızda bu nedenle, bu kadar o aradığını bulmak için gidiyor 424 00:22:54,570 --> 00:22:56,450 ve bir değer yazdırmak mümkün. 425 00:22:56,450 --> 00:22:58,700 Yani bu sadece bir örnek çılgın şeyler tür 426 00:22:58,700 --> 00:23:01,190 Eğer JavaScript nesneleri ile yapabilirsiniz. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Yani versiyonu oldu genel sürümü, anlamı 429 00:23:07,560 --> 00:23:13,780 Bu kullanarak nesneyi oluşturduk olduğunu , olarak göstermek kaşlı notasyonu parantez 430 00:23:13,780 --> 00:23:16,880 rather-- ve bu Kullanışlı biz sadece isterseniz 431 00:23:16,880 --> 00:23:21,440 Belirli bir nesnenin bir örneği, ancak ne Birden fazla olmasını istiyorsanız 432 00:23:21,440 --> 00:23:22,210 Aynı türden? 433 00:23:22,210 --> 00:23:24,440 Ve bu cevabı soru, şeyler vardır 434 00:23:24,440 --> 00:23:26,760 hem de JavaScript dersleri çağırdı. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Biz bir işlev yaratabilir başlatma çeşit yapar 437 00:23:36,420 --> 00:23:41,690 yabancı bir nesne için, ve biz gibi derdim 438 00:23:41,690 --> 00:23:44,550 isim yüzden benim class-- yeniden kullanılabilir object-- arasında 439 00:23:44,550 --> 00:23:47,100 Onu kurar fonksiyonu eşittir. 440 00:23:47,100 --> 00:23:52,280 Yani bu eşdeğer olacağını Bir nesneyi yaratıyor ki 441 00:23:52,280 --> 00:23:55,930 tıpkı olurdu, kaşlı ayraç, str, kolon, 442 00:23:55,930 --> 00:23:59,630 Bu bir dizedir, noktalı virgül, kaşlı ayraç. 443 00:23:59,630 --> 00:24:01,880 Bu jenerik olurdu Biz başlatmak nesne, 444 00:24:01,880 --> 00:24:06,380 tek fark olmak ile Bir sonraki satırlar biz bir prototip oluşturmak hangi 445 00:24:06,380 --> 00:24:11,190 bir varsayılan anahtar anlamına gelir Bizim nesneye eklemek 446 00:24:11,190 --> 00:24:13,970 Burada listelenen değeri vardır. 447 00:24:13,970 --> 00:24:20,570 Anlamı, ben yeni bir oluşturduğunuzda Bu Sınıfım nesne örneği, 448 00:24:20,570 --> 00:24:27,440 bunun içinde önceden inşa gidiyor Bir değer str olarak adlandırılır ve başka bir değer 449 00:24:27,440 --> 00:24:32,418 adı verilen MyPrint, gidiş bir işlev olması. 450 00:24:32,418 --> 00:24:32,918 Başar. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Büyük. 453 00:24:37,990 --> 00:24:40,710 Yani son şey için JavaScript hakkında ne söylüyor 454 00:24:40,710 --> 00:24:46,430 Ne için gerçekten yararlı olmasıdır asenkron işlemleri denir. 455 00:24:46,430 --> 00:24:52,500 Asenkron araçtır biz o Bazı işlem için bekleyebilir 456 00:24:52,500 --> 00:24:57,870 Biz taşınmadan önce tamamlamak için Biz beklerken, aynı hareket 457 00:24:57,870 --> 00:24:59,690 ve sonra bir şey daha sonra gerçekleşmesi. 458 00:24:59,690 --> 00:25:03,480 Ve ne o demek sen olduğunu bir durum nerede hayal edebiliyorum 459 00:25:03,480 --> 00:25:06,850 Eğer bir istek göndermek bir yerde bazı web sunucusu, 460 00:25:06,850 --> 00:25:09,670 ve geri göndermek için gidiyor verilerin bazıları büyük bir yığın, değil mi? 461 00:25:09,670 --> 00:25:13,320 Ve kullanıcı beklemek olabilir Bu arada bunun gerçekleşmesi için, 462 00:25:13,320 --> 00:25:15,200 ve hiçbir şey olabilir o zaman oluyor. 463 00:25:15,200 --> 00:25:18,110 Ama bu büyük bir tasarım hakkı, değil mi? 464 00:25:18,110 --> 00:25:20,214 Eğer web sayfası dondurmak istemiyorum. 465 00:25:20,214 --> 00:25:22,380 Ne kullanıcı istiyorsa Bir açılır menüden üzerine tıklayarak? 466 00:25:22,380 --> 00:25:24,870 Bu büyük bir tasarım modeli değil. 467 00:25:24,870 --> 00:25:29,290 Bunun yerine, temelde ne JavaScript diyor does 468 00:25:29,290 --> 00:25:31,870 Tamam, zaman uyumsuz bu işlemi yapmak. 469 00:25:31,870 --> 00:25:36,520 Yani böyle, arka planda bekleyin ve daha sonra işlem yapılır, ne zaman 470 00:25:36,520 --> 00:25:39,420 Geri arama çağrı function-- Bazı işlev çağrısı, 471 00:25:39,420 --> 00:25:43,800 Bazı action-- sinyal yok Biz bitmesini bekliyorlardı operasyon 472 00:25:43,800 --> 00:25:45,520 bitti. 473 00:25:45,520 --> 00:25:51,240 Ve süper güçlü nedeni, biz bir şeyler yapmak bir tartışma geçebilir 474 00:25:51,240 --> 00:25:54,440 bir şeyler yapmak, ve sonra bekle Bir şey için. 475 00:25:54,440 --> 00:25:58,970 Sonra, bir şeye kez Biz bir geri arama çağırabilirsiniz tamamlandıktan. 476 00:25:58,970 --> 00:26:03,300 O sağlar, çünkü bu gerçekten kullanışlı Bize, Web Audio API ile şeyler 477 00:26:03,300 --> 00:26:07,490 Örneğin, yük An gibi Uzak bir sunucudan ses dosyası 478 00:26:07,490 --> 00:26:11,660 için beklemek zorunda kalmadan Tüm ses dosyası yüklenecek, 479 00:26:11,660 --> 00:26:14,440 Gerçekten olurdu bir kullanıcı deneyimi için kötü. 480 00:26:14,440 --> 00:26:17,080 Güzel. 481 00:26:17,080 --> 00:26:19,460 >> Son birkaç hakkında notlar hata ayıklama, bu yana 482 00:26:19,460 --> 00:26:23,682 Yapmanız gereken gidiyoruz bir şeydir senin projenin bir parçası olarak, garantili. 483 00:26:23,682 --> 00:26:25,140 JavaScript konsolunu bahsetti. 484 00:26:25,140 --> 00:26:27,550 Bu süper yararlı bir özellik var tüm modern tarayıcılar, 485 00:26:27,550 --> 00:26:30,300 Ve biz gerçekten almak için teşvik konsolu kullanarak rahat, 486 00:26:30,300 --> 00:26:33,660 JavaScript iyi olsun istiyorum. 487 00:26:33,660 --> 00:26:36,320 Bu süper kullanışlı ayıklama, ama aynı zamanda bu 488 00:26:36,320 --> 00:26:39,440 endam için gerçekten yararlı dışarı nasıl bir API kullanmak için. 489 00:26:39,440 --> 00:26:41,950 Gerçekten sağlar Kolay deney 490 00:26:41,950 --> 00:26:45,910 Bazı yazmak zorunda kalmadan Kod ve sonra derleyin. 491 00:26:45,910 --> 00:26:47,500 Bütün bu adımları yapmak zorunda değilsiniz. 492 00:26:47,500 --> 00:26:49,619 Sadece yazabilirsiniz bir çizgi içine bazı kod, 493 00:26:49,619 --> 00:26:52,410 ve sonra anında geri bildirim almak kod bu hat olsun veya olmasın 494 00:26:52,410 --> 00:26:55,230 çok kullanışlı worked--. 495 00:26:55,230 --> 00:26:59,760 >> Ve ayrıca, sadece bir teknik note-- JavaScript konsolu bir örnektir 496 00:26:59,760 --> 00:27:05,680 Bu, Çoğaltma R-E-P-L yüzden bir REPL-- bölgesinin okuma açılımı, değerlendirmek 497 00:27:05,680 --> 00:27:06,180 Baskı döngü. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Bazı şeyler yazın gidiyoruz olarak, bu yazdığınız Ne okuyacağım, 500 00:27:12,120 --> 00:27:17,280 onu değerlendirecek, ve basalım Çıktı ve sonra tekrar başlayacağız. 501 00:27:17,280 --> 00:27:22,056 Yani hızla gitmek için izin verir çevreler gerçekten iyidir, hangi yineleme. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Ben bu note-- real son tahmin evet, gerçek son nottur. 504 00:27:28,930 --> 00:27:30,780 Nasıl biz aslında JavaScript kullanabilirim? 505 00:27:30,780 --> 00:27:34,040 Yani ilk, biz alabilirsiniz Bir komut dosyası etiketini kullanarak 506 00:27:34,040 --> 00:27:39,500 Bir HTML üst veya alt kısmında file-- herhangi bir yerde bir HTML dosyası içinde, 507 00:27:39,500 --> 00:27:40,440 gerçekten. 508 00:27:40,440 --> 00:27:47,390 Ve bir betik etiketi içinde vardır JavaScript ithal iki alt yolu. 509 00:27:47,390 --> 00:27:51,370 Ilk sahip olmasıyla Ayrı JavaScript dosyası 510 00:27:51,370 --> 00:27:58,010 Biz bütünüyle içe ya da bu komut gibi kod bir alana sahip olarak 511 00:27:58,010 --> 00:28:00,290 Daha sonra başlatmak ve ters eğik çizgi komut bitirmek için. 512 00:28:00,290 --> 00:28:02,620 Ve sonra biz sadece yazmak HTML dosyası içinde JavaScript. 513 00:28:02,620 --> 00:28:03,790 Bu iki yolu vardır. 514 00:28:03,790 --> 00:28:05,165 Sen HTML içine olamaz. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 HEDEF KİTLE: biri diğerinden daha iyi midir? 517 00:28:08,126 --> 00:28:10,542 SAM YEŞİL: soruydu, biri diğerinden daha iyidir. 518 00:28:10,542 --> 00:28:18,306 Yani, evet, bir kodlama stili uygulama olarak, ve aynı zamanda bir tasarım uygulaması gibi. 519 00:28:18,306 --> 00:28:20,180 Bunun iki sebebi vardır Neden daha iyi olabilir. 520 00:28:20,180 --> 00:28:23,934 İlk sizin kod a yapar, bir çok daha okunabilir HTML eğer tüm 521 00:28:23,934 --> 00:28:27,100 tek bir yerde, CSS tüm olan Başka bir yerde, senin JavaScript tüm 522 00:28:27,100 --> 00:28:28,420 Üçüncü sırada yer alıyor. 523 00:28:28,420 --> 00:28:28,920 Sağ? 524 00:28:28,920 --> 00:28:32,370 Ben zaten konuştum gerektiğini düşünüyorum sections-- benzeri bu konuda CSS-- Ne 525 00:28:32,370 --> 00:28:35,220 Bu o-- ve gider genellikle başka bir dosyada. 526 00:28:35,220 --> 00:28:37,090 Yani, burada kavramın benzer bir tür. 527 00:28:37,090 --> 00:28:42,410 Ayrıca hayal edebiliyorum JavaScript birden fazla üzerine yeniden olurdu 528 00:28:42,410 --> 00:28:47,350 HTML sayfası, ya da belki bir pek çok HTML sayfaları, 529 00:28:47,350 --> 00:28:49,340 ve JavaScript sahip içine tekrar elden 530 00:28:49,340 --> 00:28:51,950 içe olduğunu dosyası birden fazla yere 531 00:28:51,950 --> 00:28:54,570 Kod olmaya sağlar yol daha rahat. 532 00:28:54,570 --> 00:28:57,930 Sen bir yapım hayal edebiliyorum JavaScript değiştirmek 533 00:28:57,930 --> 00:29:00,070 ve sahip değiştirmek için 100 farklı dosyalarda. 534 00:29:00,070 --> 00:29:04,070 Ve bunun yerine sadece değiştirebilirsiniz yol daha güçlü birinde. 535 00:29:04,070 --> 00:29:05,420 Ben sorunuza cevap vermedi? 536 00:29:05,420 --> 00:29:07,950 Güzel. 537 00:29:07,950 --> 00:29:10,830 >> Biz de, konsolun içine yazabilirsiniz Daha önce söz ettik olarak. 538 00:29:10,830 --> 00:29:15,070 Ve yine, son bir note-- Ses inşa Web, 539 00:29:15,070 --> 00:29:16,978 Eğer bir şey yüklemek gerekmez. 540 00:29:16,978 --> 00:29:17,478 Güzel. 541 00:29:17,478 --> 00:29:20,519 Herhangi bir sorunuz var mı sen var JavaScript hakkında daha fazla soru, 542 00:29:20,519 --> 00:29:21,930 Biz geçmeden önce? 543 00:29:21,930 --> 00:29:24,286 >> HEDEF KİTLE: [duyulamaz] 544 00:29:24,286 --> 00:29:25,410 SAM YEŞİL: Pekala, serin. 545 00:29:25,410 --> 00:29:27,200 Yani şimdi o API hakkında konuşmak için gidiyor. 546 00:29:27,200 --> 00:29:28,490 >> HUGH Zabriskie: Serin. 547 00:29:28,490 --> 00:29:28,990 Teşekkürler, Sam. 548 00:29:28,990 --> 00:29:30,184 >> SAM YEŞİL: Elbette. 549 00:29:30,184 --> 00:29:32,600 Hugh Zabriskie: Korku, yani Biz JavaScript itibaren hareket edeceğiz. 550 00:29:32,600 --> 00:29:35,350 Bu yüzden bazıları hakkında konuştuk JavaScript şartları, 551 00:29:35,350 --> 00:29:41,105 ve bu değişkenler, fonksiyonlar, nesneler, değişkenler olarak fonksiyonlar, 552 00:29:41,105 --> 00:29:41,980 asenkron yükleme. 553 00:29:41,980 --> 00:29:46,100 Bunlar, o sen olacak her şey vardır Web'de Ses kullanmanız olarak görüyorum. 554 00:29:46,100 --> 00:29:49,230 Yani biz sadece konuşmak için gidiyoruz yüksek bir düzeyde ilk olarak bu konuda. 555 00:29:49,230 --> 00:29:52,120 >> Bu bir API, bu yüzden bir şey Sam dediği gibi bu, yerleşik, 556 00:29:52,120 --> 00:29:57,010 Sağ JavaScript içine Eğer konsolda kullandığınız. 557 00:29:57,010 --> 00:30:01,020 Ve bu sadece C ++ kod gibi aslında Bu gerçekten Chrome'da yerleşik olarak 558 00:30:01,020 --> 00:30:04,470 Firefox ve bu tarayıcıların tüm. 559 00:30:04,470 --> 00:30:07,060 Web ile ana fikir Yani Audio olması 560 00:30:07,060 --> 00:30:09,440 ses boru hattının bu tür, değil mi? 561 00:30:09,440 --> 00:30:13,670 Yani ses verileri bazı şeklinde gelir. 562 00:30:13,670 --> 00:30:16,690 >> Üç ana forms-- tür vardır Eğer osilatör, sahip olduğu 563 00:30:16,690 --> 00:30:21,340 Bir sinüs dalga oluşturur kosinüs dalga, biz nasıl çalıştığını görmek için gidiyoruz. 564 00:30:21,340 --> 00:30:23,890 Başka bir çok yaygın olanı, Elbette, bir MP3 olduğunu. 565 00:30:23,890 --> 00:30:25,810 Böylece belki başlamak Bir şarkı, ve sonra 566 00:30:25,810 --> 00:30:28,320 Bazı filtreleme yapmak istiyorum Bu ve çıkış 567 00:30:28,320 --> 00:30:30,605 Bu ki- olası bir kaynağı olabilir. 568 00:30:30,605 --> 00:30:32,480 Ve sonra çok güzel bir tek mikrofon. 569 00:30:32,480 --> 00:30:37,230 Yani bazı çok kullanabilirsiniz JavaScript temel aramalar 570 00:30:37,230 --> 00:30:39,440 erişmek için Mikrofon ve eğer öyleyse sen 571 00:30:39,440 --> 00:30:42,870 Bir uygulamayı yapmak istedim pitch dedektörü gibi, 572 00:30:42,870 --> 00:30:45,290 Örneğin, bu alır Sesli ve dışarı rakamlar 573 00:30:45,290 --> 00:30:47,740 Buna pitch-- çok kolay bir yol. 574 00:30:47,740 --> 00:30:50,730 Sadece biraz okuyabilirsiniz olarak, frekans anlamaya, 575 00:30:50,730 --> 00:30:52,250 ve ardından çıkış bir sayı. 576 00:30:52,250 --> 00:30:56,080 Yani biz o nasıl çalıştığını görmek, hem de edeceğiz. 577 00:30:56,080 --> 00:30:59,430 >> Hedef temelde Nerede ses veri çıkışıdır. 578 00:30:59,430 --> 00:31:02,890 Yani genel olarak, bu gibi dizüstü hoparlörleri. 579 00:31:02,890 --> 00:31:05,610 Diğer seçenekler gibi Bir ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 Biz düğümleri alırsınız saniyedir-- ancak temelde, 581 00:31:07,990 --> 00:31:11,939 Ya ses çıkışı koyuyorlar bilgisayarınız aracılığıyla hoparlörler aracılığıyla, 582 00:31:11,939 --> 00:31:14,730 veya ne tür, o yüzden kayıt konum ses veri olarak saklayarak ediyoruz. 583 00:31:14,730 --> 00:31:18,980 Yani belki birisi oluşturursa müzik app ve sonra 584 00:31:18,980 --> 00:31:22,410 sen ve belki gibi bu kaydetmek istediğiniz example-- için SoundCloud için dışa 585 00:31:22,410 --> 00:31:25,281 o yapmanın bir yolu olacaktır. 586 00:31:25,281 --> 00:31:27,030 Tüm eğlenceli şeyler, biz bahsedeceğiz hangi 587 00:31:27,030 --> 00:31:29,950 Bu iki nokta arasında olur, Biz müzik yüklemek nerede 588 00:31:29,950 --> 00:31:31,410 ve ardından çıkış. 589 00:31:31,410 --> 00:31:36,660 >> Yani beş hakkında konuşmak için gidiyorum Bir saniye içinde ses üretim aşamaları. 590 00:31:36,660 --> 00:31:38,950 Biz denen şeyi var Bir AudioContext, burada 591 00:31:38,950 --> 00:31:41,580 Burada gördüğümüz bu küçük sarıcı. 592 00:31:41,580 --> 00:31:49,980 Biz eğer Temelde ne o-- AudioContext Şu anda Javascript konsoluna gidin 593 00:31:49,980 --> 00:31:52,740 şu anda bir tane yaratabilirsiniz. 594 00:31:52,740 --> 00:31:54,040 Çoğaltma sadece bir örnektir, değil mi? 595 00:31:54,040 --> 00:31:57,880 Biz okuyorlar, değerlendirmek ve yazdırır. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext küresel bir devlettir. 597 00:32:00,260 --> 00:32:05,500 Bu, bir nesne bir yapı olduğunu var Burada, bu ve bilgi tutar 598 00:32:05,500 --> 00:32:09,960 şeyleri devam etmektedir Ses ile ilgili ekranda. 599 00:32:09,960 --> 00:32:15,220 Bir örnek, geçerli zamanı. 600 00:32:15,220 --> 00:32:18,910 Bu size numarayı söyler saniye, çok hassas, 601 00:32:18,910 --> 00:32:20,890 web sayfası beri yüklendi. 602 00:32:20,890 --> 00:32:24,110 Yani bu gerçekten yararlı kullanabileceğiniz küçük mülk. 603 00:32:24,110 --> 00:32:27,898 Bu Sadece-- okumuş Aslında düşünüyorum bunu bir değeri ayarlamak için deneyebilirsiniz. 604 00:32:27,898 --> 00:32:29,856 Bu ayarlayın söyleyeceğim, ve sonra onu yazdırmak 605 00:32:29,856 --> 00:32:31,439 vasıtasıyla yine aslında oldukça işe vermedi. 606 00:32:31,439 --> 00:32:34,472 Yani orada salt okunur JavaScript özellikleri. 607 00:32:34,472 --> 00:32:36,430 Bu eğer gerçekten yararlı olduğunu ne tür senkronize ediyoruz 608 00:32:36,430 --> 00:32:38,610 Farklı bir sürü bilgi, ne zaman sen 609 00:32:38,610 --> 00:32:41,280 tür farklı sesler oynuyor. 610 00:32:41,280 --> 00:32:43,630 >> Başka gerçekten faydalı bir Bağlam yeridir. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Eğer ilgileniyorsanız kesinlikle olmak Kendi konsol sağda bu çalışıyor 613 00:32:49,670 --> 00:32:50,980 şimdi. 614 00:32:50,980 --> 00:32:53,150 Yani bu bir AudioDestinationNode olduğunu. 615 00:32:53,150 --> 00:32:56,480 Temelde bu ne diyor, Çıktı nereye gidiyor? 616 00:32:56,480 --> 00:32:59,590 Yani burada iki gerçek seçenek vardır. 617 00:32:59,590 --> 00:33:01,940 Genellikle varsayılan sadece hoparlör olduğunu 618 00:33:01,940 --> 00:33:05,150 Böylece AudioDestinationNode temelde sadece diyor 619 00:33:05,150 --> 00:33:09,240 ses sıfır çıkış vardır geliyor, hoparlör gönderildi. 620 00:33:09,240 --> 00:33:12,050 Yani genel olarak, değil mi Bununla oynamak zorunda. 621 00:33:12,050 --> 00:33:15,720 Aslında kullanarak ilgileniyorsanız kayıt ScriptProcessorNode, 622 00:33:15,720 --> 00:33:16,990 Kesinlikle beni bir ateş E-posta işte sonradan çünkü 623 00:33:16,990 --> 00:33:18,330 Biraz daha karmaşık. 624 00:33:18,330 --> 00:33:21,590 Ama genelde, sadece naziksiniz bazı şeklinde ses çıktısı. 625 00:33:21,590 --> 00:33:24,347 So cool, biz buraya atlamak olacak. 626 00:33:24,347 --> 00:33:25,180 İZLEYİCİ: Üzgünüm. 627 00:33:25,180 --> 00:33:26,054 HUGH Zabriskie: Evet. 628 00:33:26,054 --> 00:33:28,770 İZLEYİCİ: Ben konuşmak söyledi biliyorum Size daha sonra kayıt konusunda. 629 00:33:28,770 --> 00:33:31,550 O Pro Tools ile arayüz miyim? 630 00:33:31,550 --> 00:33:33,120 >> HUGH Zabriskie: Pro Tools mı? 631 00:33:33,120 --> 00:33:35,260 Görelim. 632 00:33:35,260 --> 00:33:37,220 Sanmıyorum. 633 00:33:37,220 --> 00:33:41,670 Yani müşteri arasında gidiş, Hangi JavaScript 634 00:33:41,670 --> 00:33:44,310 Konsol ve gerçek Bilgisayar, genellikle 635 00:33:44,310 --> 00:33:46,490 tür şeyler sınırları kapalı, eğer 636 00:33:46,490 --> 00:33:52,320 tür Şeyin doğası gereği, olacak o, bir tasarım çeşitşey 637 00:33:52,320 --> 00:33:57,770 ancak ayrı bir tarayıcı tutmaya çalışın kullanıcının gerçek bilgisayardan çıkarın. 638 00:33:57,770 --> 00:34:02,310 Genellikle tek şey mümkün olacaktır erişim mikrofon ya da kamera. 639 00:34:02,310 --> 00:34:04,730 Sen mümkün değil, ben sanmıyorum, Pro Tools kullanın. 640 00:34:04,730 --> 00:34:07,480 Ancak, oluşturduğunuz takdirde Pro Tools bir parça, 641 00:34:07,480 --> 00:34:12,710 Bunu yük olabilir, bu ihraç Burada, örneğin, bu filtre, 642 00:34:12,710 --> 00:34:16,820 süreç olduğunu ve bir içine kayıt Ses Destination-- veya bir Sphere hayır-- 643 00:34:16,820 --> 00:34:17,870 İşlemci Düğüm. 644 00:34:17,870 --> 00:34:20,730 Oradan Ve sonra, sen-ebil , SoundCloud sizi o ihracat 645 00:34:20,730 --> 00:34:25,320 bir e-posta gönderebilir, ya da olabilir ne oradan gibi. 646 00:34:25,320 --> 00:34:31,159 >> Ama hafif bir bariyer tür var Bilgisayarınızdaki müzik yapma arasında 647 00:34:31,159 --> 00:34:33,050 ve çevrimiçi müzik yapma. 648 00:34:33,050 --> 00:34:37,940 >> SAM YEŞİL: Ve bu Bu API özgü değildir. 649 00:34:37,940 --> 00:34:44,060 Bu Chrome'un bir güvenlik özelliğidir, ve Her diğer modern tarayıcı düşünüyorum. 650 00:34:44,060 --> 00:34:45,860 Tarayıcı kendi kendine yeten olduğunu. 651 00:34:45,860 --> 00:34:50,980 Yani, örneğin, bir web sayfası yapamaz Sesi açmak için JavaScript kullanmak 652 00:34:50,980 --> 00:34:54,190 Örneğin sizin hoparlörler, üzerine. 653 00:34:54,190 --> 00:34:58,120 Yoksa bilgisayarınızı kapatmak olamaz. 654 00:34:58,120 --> 00:35:01,530 Ve hiçbir ara nokta yoktur Bu iki şey arasındaki, sağ, 655 00:35:01,530 --> 00:35:05,960 Peki ya sen var tam soyutlama, 656 00:35:05,960 --> 00:35:10,050 veya açmak icar güvenlik kusur 657 00:35:10,050 --> 00:35:14,440 Kötü niyetli bir programcı yapmak ne olursa olsun onlar senin laptop ile istediğiniz. 658 00:35:14,440 --> 00:35:18,104 Krom kendi kendine yeten Ve bu yüzden. 659 00:35:18,104 --> 00:35:19,310 >> HUGH Zabriskie: Evet. 660 00:35:19,310 --> 00:35:20,840 bu mantıklı mı? 661 00:35:20,840 --> 00:35:21,369 Vay canına. 662 00:35:21,369 --> 00:35:23,160 Ben sadece gidiyordu birinin bir örneğini gösterir. 663 00:35:23,160 --> 00:35:25,118 Bu durum oldukça fazla kadarıyla açısından, olsun 664 00:35:25,118 --> 00:35:26,950 kullanıcının bilgisayarınıza erişmesini. 665 00:35:26,950 --> 00:35:30,180 Eğer varsa bir USB klavye, takılı Web denen şey kullanabilirsiniz 666 00:35:30,180 --> 00:35:32,180 MIDI API, hangi biz olmaz Gerçekten burada hakkında konuşmak, 667 00:35:32,180 --> 00:35:36,330 ama bu var başka API Yine, en azından Chrome-- yerleşik, 668 00:35:36,330 --> 00:35:41,570 Biz Chrome-- seviyorum bu yüzden Ben, Firefox veya Safari düşünüyorum 669 00:35:41,570 --> 00:35:44,300 Bu kolay bir şey google-- farklı tarayıcılar var 670 00:35:44,300 --> 00:35:46,917 için farklı destek API'ler onlar hayata geçirdik. 671 00:35:46,917 --> 00:35:49,875 Eğer isteseydi Ama klavyeye takmak için ve bu bilgilerle çalışmak, 672 00:35:49,875 --> 00:35:52,850 tür klavyeyi göndermek Bilgisayara üzerinden bilgi 673 00:35:52,850 --> 00:35:57,620 ve daha sonra, bu API bu çevrimiçi kullanın Bunu çalışıyor olurdum yerdir. 674 00:35:57,620 --> 00:35:58,150 >> Güzel. 675 00:35:58,150 --> 00:35:58,710 TAMAM. 676 00:35:58,710 --> 00:36:01,320 Yani, hızlı bir şekilde burada hareketli. 677 00:36:01,320 --> 00:36:03,310 Nasıl zamanında yapıyoruz? 678 00:36:03,310 --> 00:36:04,210 >> KONUŞMACI 1: Yaklaşık 15. 679 00:36:04,210 --> 00:36:05,543 >> HUGH Zabriskie: 15 dakika kaldı? 680 00:36:05,543 --> 00:36:06,160 Tamam iyi. 681 00:36:06,160 --> 00:36:08,170 Yani biz burada önde yarış olacak. 682 00:36:08,170 --> 00:36:13,500 >> Yani temelde, ana noktası bir boru hattı olarak düşünme 683 00:36:13,500 --> 00:36:16,430 olduğu boru hattı her adımı Ses düğüm dizisidir. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Bizim kaynak, diyelim ki, bir osilatör olduğunu. 686 00:36:20,950 --> 00:36:23,380 Biz bir osilatör düğümü oluşturmanız gerekir. 687 00:36:23,380 --> 00:36:25,690 Ve bu sadece türüdür Küçük function-- arasında 688 00:36:25,690 --> 00:36:30,460 ve hepsi dışarı tabanlı konum Burada ses bağlamda. 689 00:36:30,460 --> 00:36:32,885 >> HEDEF KİTLE: Bu dediğim zaman osilatör, demek 690 00:36:32,885 --> 00:36:37,250 Aslında tam anlamıyla gelen gidiyor ileri geri iki farklı kutup? 691 00:36:37,250 --> 00:36:41,170 >> HUGH Zabriskie: Hayır, gibi Dijital gösterimi. 692 00:36:41,170 --> 00:36:42,740 Aslında C ++ uygulanacağı. 693 00:36:42,740 --> 00:36:46,460 Aslında gözlük bilmiyorum aslında hayata nasıl bölgesinin 694 00:36:46,460 --> 00:36:48,500 ama tüm bu ikili veri olarak çalışmaktadır. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Aslında, evet. 697 00:36:52,370 --> 00:36:53,950 Yani I could diyerek olurdu Aslında, eğer ilgilenirseniz, 698 00:36:53,950 --> 00:36:56,533 Ben biraz daha gönderebilir nasıl dalga formları hakkında bilgiler 699 00:36:56,533 --> 00:37:00,181 Bir dijital formatta olması tutulur. 700 00:37:00,181 --> 00:37:00,680 Tamam iyi. 701 00:37:00,680 --> 00:37:03,120 >> Yani biz bir sinüs gibi bir ton üreten ediyoruz belki dalga ya da böyle bir şey 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Biz bir osilatör oluşturmak. 704 00:37:05,830 --> 00:37:09,180 Biz seviyesini ayarlamak istiyorsanız, biz Bir GainNode şey bağlamak, 705 00:37:09,180 --> 00:37:12,500 hangi biz .creategain ile yapabilirdi. 706 00:37:12,500 --> 00:37:14,250 Bu senin seviyesini ayarlar. 707 00:37:14,250 --> 00:37:17,820 Herhangi üzerine bu iletebilirsiniz options-- iyi diğer, 708 00:37:17,820 --> 00:37:20,300 yani bir ses tampon kaynağı düğüm nereye belki olduğunu 709 00:37:20,300 --> 00:37:23,660 Eğer yüklü ettik bir MP3 saklayın. 710 00:37:23,660 --> 00:37:27,670 >> Süzgecinin filtre filtreleme eğer içindir Eğer bütün baz almak istiyorum 711 00:37:27,670 --> 00:37:29,630 Böyle bir şarkı, ya da bir şey. 712 00:37:29,630 --> 00:37:32,450 Tanrı almak istiyorum korusun Bir şarkının dışında tabanı. 713 00:37:32,450 --> 00:37:36,980 Ve AudioDestination düğümü, yine, gibi bizim sonuçlandırılması olduğu. 714 00:37:36,980 --> 00:37:39,980 Gördüğünüz hiç ilgileniyorsanız Tüm farklı olası seçenekler, 715 00:37:39,980 --> 00:37:45,190 Sadece sekmesine gidin ve izin Otomatik tamamlama buluyor. 716 00:37:45,190 --> 00:37:48,690 Oluşturduğunuz yoksa Ve, tüm görürsünüz oluşturabilirsiniz farklı şeyler. 717 00:37:48,690 --> 00:37:50,398 Sen dinamiğini oluşturmak komut işlemciler, 718 00:37:50,398 --> 00:37:52,940 Ben bile ne bilmiyorum Kanal birleşme karıştırma için, bir 719 00:37:52,940 --> 00:37:55,930 ve kanal yarma ve hepsi bu. 720 00:37:55,930 --> 00:37:56,430 Güzel. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Yani bu sadece bir olduğunu Bir boru hattının, örneğin. 723 00:38:01,390 --> 00:38:03,580 Yani biz üç kaynaktan geliyor olması. 724 00:38:03,580 --> 00:38:06,830 Belki bu dalga vardır, Belki bu MP3 vardır. 725 00:38:06,830 --> 00:38:08,740 Biri geçiyor Filtre, başka kimse 726 00:38:08,740 --> 00:38:12,404 çarpık alıyorum başka Kişinin kaydırma sol ve sağ. 727 00:38:12,404 --> 00:38:15,320 Siz her türlü şeyi yapabilirsiniz ve hepsi birlikte etrafında karışık olsun 728 00:38:15,320 --> 00:38:18,880 ve sonra dışarı ses geliyor Hedef olarak sonunda. 729 00:38:18,880 --> 00:38:22,720 Bu daha ne bir örnektir karmaşık Web Audio kodu gibi görünüyor. 730 00:38:22,720 --> 00:38:26,720 Tüm bu yaratıyorsun farklı nesneler sağ burada-- 731 00:38:26,720 --> 00:38:27,706 Ben bu emin değilim. 732 00:38:27,706 --> 00:38:29,120 Hayır, bu yakınlaştırmak değil. 733 00:38:29,120 --> 00:38:29,620 TAMAM. 734 00:38:29,620 --> 00:38:31,257 >> SAM YEŞİL: Sen Kontrolü, gelin-up yapmak. 735 00:38:31,257 --> 00:38:32,590 HUGH Zabriskie: Denetim Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM YEŞİL: Hayır, hayır. 737 00:38:33,000 --> 00:38:33,500 Kontrol-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> HUGH Zabriskie: Oh, Kontrol, gidin? 740 00:38:38,140 --> 00:38:38,780 Yakaladım, evet. 741 00:38:38,780 --> 00:38:41,480 Evet. 742 00:38:41,480 --> 00:38:42,240 Hayır, hayır, Wow. 743 00:38:42,240 --> 00:38:42,740 TAMAM. 744 00:38:42,740 --> 00:38:46,090 Ben bunu yapmayacağım. 745 00:38:46,090 --> 00:38:48,300 >> Yani evet, bu ilk Burada bölüm, gördüğünüz 746 00:38:48,300 --> 00:38:52,720 Biz bütün bu farklı yaratıyoruz bağlam dışında düğümler. 747 00:38:52,720 --> 00:38:54,980 Biz sadece onları ekleme ediyoruz Birlikte ikinci bölümde 748 00:38:54,980 --> 00:38:56,980 Bağlan denilen bu fonksiyon ile. 749 00:38:56,980 --> 00:38:58,830 Bu gerçekten çok önemli olduğunu Web Audio işlevi. 750 00:38:58,830 --> 00:39:01,930 Yaptığın bir kez sadece anlamına gelir tek düğüm ses ile bir şey, 751 00:39:01,930 --> 00:39:03,705 sonraki düğüme onu geçmek. 752 00:39:03,705 --> 00:39:05,830 Bu yüzden kaynak var, o analizörü bağlanır, 753 00:39:05,830 --> 00:39:09,140 analizörü, onunla bir şey yapar o, böylece bozulma gider ve 754 00:39:09,140 --> 00:39:12,725 ve hedefe Burada altta. 755 00:39:12,725 --> 00:39:13,225 Güzel. 756 00:39:13,225 --> 00:39:14,640 Tamam, bu yüzden biz ilerlemeye devam edeceğiz. 757 00:39:14,640 --> 00:39:17,180 >> Pipeline-- yine bu En yaygın boru hatları, 758 00:39:17,180 --> 00:39:21,300 bu yüzden gibi bütün bu şeyler hakkında konuşmak bozulma, kaydırma, tüm bu şeyler. 759 00:39:21,300 --> 00:39:24,280 Eğer gerçekten ilgileniyorsanız şeyler Pro Tools kullanarak, 760 00:39:24,280 --> 00:39:25,820 Bu muhtemelen size ilgi. 761 00:39:25,820 --> 00:39:27,740 Değilse, belki sadece Sesi oynamak istiyorum, 762 00:39:27,740 --> 00:39:29,990 ya da belki sadece istediğiniz Sesi seviyesini ayarlamak. 763 00:39:29,990 --> 00:39:35,270 Bu en yaygın iki tür vardır Ses üretimi boru hatlarının. 764 00:39:35,270 --> 00:39:38,640 >> Yine, yollar bunu alabilir Bir oscillator-- yüzden, haydi olarak 765 00:39:38,640 --> 00:39:42,460 sağ burada demo yapmak. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Yani biz bir oluşturmak için gidiyoruz Burada basit ses bağlam, 768 00:39:52,225 --> 00:39:54,350 ve biz gidiyoruz Bizim osilatör oluşturmak için. 769 00:39:54,350 --> 00:39:58,620 Bu yüzden, yine, biz sadece konum Osilatör oluştur arayacak. 770 00:39:58,620 --> 00:40:07,030 Biz bir frekansı ayarlamak için gidiyoruz 440 Hertz, herkesin favori ki. 771 00:40:07,030 --> 00:40:13,290 Sonra hedefe o bağlamak point-- hoparlör yani hangi 772 00:40:13,290 --> 00:40:15,750 Bağlam hedef. 773 00:40:15,750 --> 00:40:21,400 Son olarak, biz sadece söylemek, sıfır başlangıç Bundan saniye ve biz ses var mı? 774 00:40:21,400 --> 00:40:22,400 >> [Çınlayan] 775 00:40:22,400 --> 00:40:24,980 >> HUGH Zabriskie: İşte başlıyoruz. 776 00:40:24,980 --> 00:40:25,940 Bu sadece bir sinüs dalgası var. 777 00:40:25,940 --> 00:40:26,440 Tamam iyi. 778 00:40:26,440 --> 00:40:28,274 Ve sonra biz durdurmak olacak. 779 00:40:28,274 --> 00:40:30,520 >> İZLEYİCİ: yaptım Bu geribildirim geliyor? 780 00:40:30,520 --> 00:40:31,250 >> HUGH Zabriskie: geribildirim? 781 00:40:31,250 --> 00:40:32,458 Ah, muhtemelen bizim mikrofonlar. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Bunu nasıl Yani evet, bu. 784 00:40:35,470 --> 00:40:37,261 Ve aslında, olsaydı Seni tuttu çalışan 785 00:40:37,261 --> 00:40:39,540 frekansa sahip olabilir o çalışıyor gibi değer, 786 00:40:39,540 --> 00:40:43,320 böylece oynamak için eğlenceli bir şey. 787 00:40:43,320 --> 00:40:44,930 Güzel. 788 00:40:44,930 --> 00:40:46,600 Bu her zaman sunmak için güzel bir biri. 789 00:40:46,600 --> 00:40:48,792 >> SAM YEŞİL: Biz vermedi Biz bu konuda mi düşünüyorsun? 790 00:40:48,792 --> 00:40:50,500 HUGH Zabriskie: Evet, Bu kötü bir biri. 791 00:40:50,500 --> 00:40:53,249 Yani, tampon loading-- ben göstereceğim en sonunda bu örneği. 792 00:40:53,249 --> 00:40:55,090 Bu bir MP3 yüklüyor. 793 00:40:55,090 --> 00:40:58,880 Ve mikrofon, sadece bir fonksiyonu kullanmak () Navigator.getUserMedia adı 794 00:40:58,880 --> 00:41:03,240 kullanıcının erişim istemek için Bu bilgi için mikrofon. 795 00:41:03,240 --> 00:41:05,610 >> İşte filtreleme var, ben olacak Sadece bu hareket edin. 796 00:41:05,610 --> 00:41:08,600 Bu, oldukça yüksek seviyede ama filtreler sadece size izin 797 00:41:08,600 --> 00:41:16,154 >> [Bipliyor] 798 00:41:16,154 --> 00:41:18,320 Filtreleme de yapmanıza olanak sağlar pembe gibi şeyler oluşturmak için 799 00:41:18,320 --> 00:41:20,050 gürültü, kahverengi gürültü, beyaz gürültü. 800 00:41:20,050 --> 00:41:24,330 Saf gürültü oluşturmak istiyorsanız, hangi Bazı insanlar, etrafında karışıklık aşk 801 00:41:24,330 --> 00:41:27,490 Web Audio kullanabilirsiniz filtreleme yapmak. 802 00:41:27,490 --> 00:41:30,039 >> Ses Panning-- yüzden hayal Bir oyun yazıyorsanız 803 00:41:30,039 --> 00:41:32,330 ve sesi istediğiniz o gibi geliyor gibi ses, 804 00:41:32,330 --> 00:41:36,090 ekran boyunca çekim, sen ses kaydırma kullanabilir 805 00:41:36,090 --> 00:41:39,770 koni bu tür oluşturmak için, hangi oldukça Mathy var da--, 806 00:41:39,770 --> 00:41:41,850 ama gerçekten aslında Serin o iş olsun, 807 00:41:41,850 --> 00:41:44,500 ve bazı iyi var Bunun üzerine öğreticiler Seni gönderebilirsiniz. 808 00:41:44,500 --> 00:41:46,400 Temelde, ne tür can sesi oluşturmak 809 00:41:46,400 --> 00:41:50,480 3D şekilde giderek bir şey. 810 00:41:50,480 --> 00:41:57,350 Eğer bir DJ ilgi varsa, you can Karıştırma başlar ve solmaya şarkıları çapraz. 811 00:41:57,350 --> 00:42:01,260 >> Bu sadece bazı çok temel Kod, daha önce yaptım temelde neyi. 812 00:42:01,260 --> 00:42:06,140 Bu hacmini ayarlar osilatör, bu yüzden bizim osilatör oluşturmak 813 00:42:06,140 --> 00:42:07,380 bu dalga biçimini oluşturur. 814 00:42:07,380 --> 00:42:09,940 Bizim GainNode oluşturmak, Bizim frekansı ayarlamak, 815 00:42:09,940 --> 00:42:14,170 ve ardından osilatör bağlamak Daha sonra temel değişiklikler GainNode, 816 00:42:14,170 --> 00:42:16,760 ne kadar sinyal aracılığıyla izin verilir. 817 00:42:16,760 --> 00:42:20,467 Ama gerçekten, bu bir dijital bulunuyor şey, evet sadece-- fazlası var yani. 818 00:42:20,467 --> 00:42:23,550 Bu aslında ne oluyor değil, ama bu gerçek hayatta ne olur 819 00:42:23,550 --> 00:42:24,393 Bir kazanç. 820 00:42:24,393 --> 00:42:27,258 >> İZLEYİCİ: --quantization hacim parametresinin? 821 00:42:27,258 --> 00:42:28,174 HUGH Zabriskie: Üzgünüm? 822 00:42:28,174 --> 00:42:30,360 HEDEF KİTLE: Bunu bir mi nicelenmiş hacim parametresi? 823 00:42:30,360 --> 00:42:31,840 HUGH Zabriskie: Evet. 824 00:42:31,840 --> 00:42:34,620 Ve bu gerçekten ben bir şey Benim bilgi üzerinde yoksun, 825 00:42:34,620 --> 00:42:38,010 nasıl kazanç dijital düzeyde çalışır. 826 00:42:38,010 --> 00:42:40,140 Ben gerçek ile biliyorum sinyalleri, temelde var 827 00:42:40,140 --> 00:42:45,120 kontrol ne kadar sen sinyali amplifiye edilmesi. 828 00:42:45,120 --> 00:42:47,017 Yani evet. 829 00:42:47,017 --> 00:42:50,100 Sana hakkında daha fazla bilgi göndereceğiz Aslında merak olurdu, çünkü, o 830 00:42:50,100 --> 00:42:51,099 Bu konuda daha fazla bilgi için. 831 00:42:51,099 --> 00:42:54,090 Ama temelde parametreler Bir fold-- olan vardır 832 00:42:54,090 --> 00:42:59,690 yüksek sesle signal-- ve sıfır hiçbir sinyal, ya da herhangi bir ses duymayacaksınız. 833 00:42:59,690 --> 00:43:03,150 Biz çünkü demo süresi atlamak ben daha önce yaptım temelde budur. 834 00:43:03,150 --> 00:43:07,630 Ve yine, Context.Destination Ses hedef düğümdür. 835 00:43:07,630 --> 00:43:08,360 Başar, tamam. 836 00:43:08,360 --> 00:43:10,470 >> Yani hızlı bir iki demo yapmak için gidiyorum. 837 00:43:10,470 --> 00:43:11,760 Nasıl zamanında yapıyoruz? 838 00:43:11,760 --> 00:43:12,640 >> KONUŞMACI 1: Yaklaşık 10 dakika. 839 00:43:12,640 --> 00:43:13,130 >> HUGH Zabriskie: 10 dakika? 840 00:43:13,130 --> 00:43:13,630 Büyük! 841 00:43:13,630 --> 00:43:14,320 Başar. 842 00:43:14,320 --> 00:43:19,010 >> Yani gidiyorum ilki bu Favori Şarkısı deniyor yoktur. 843 00:43:19,010 --> 00:43:22,410 Yani bu sadece bir olduğunu Küçük bir HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Biz iki düğme var gidiyoruz sayfadaki sevdiğim şarkıyı çalmak 845 00:43:25,510 --> 00:43:29,192 ve benim en sevdiğim şarkıyı durdurmak. 846 00:43:29,192 --> 00:43:30,180 Ben bunu değiştirmek gerekir. 847 00:43:30,180 --> 00:43:32,110 >> HEDEF KİTLE: mikrofon örtün. 848 00:43:32,110 --> 00:43:33,430 >> HUGH Zabriskie: Evet. 849 00:43:33,430 --> 00:43:36,300 Ve ben buraya yükledim basically-- bir komut dosyası 850 00:43:36,300 --> 00:43:38,520 ve bu gerçekten yararlı Bir MP3 yüklemek için, 851 00:43:38,520 --> 00:43:41,820 Bu yüzden sadece yapar Daha hızlı MP3 şekilde yükleniyor. 852 00:43:41,820 --> 00:43:44,180 Bu temelde sadece bir sarıcı var. 853 00:43:44,180 --> 00:43:48,737 Sadece işlemi yapar çok daha hızlı MP3 yükleniyor, 854 00:43:48,737 --> 00:43:51,570 aksi takdirde, HTTP isteği kullanıyorsanız tür ne yaptığımızı gibi 855 00:43:51,570 --> 00:43:53,950 Server ile belirlenen cari parçası üzerinde. 856 00:43:53,950 --> 00:43:55,950 O, gerçekten çirkin sen Bunu yapmak istemiyorum. 857 00:43:55,950 --> 00:44:04,110 >> Yani bu adam, Boris Smus, gerçekten yazdı BufferLoader denilen kullanışlı küçük araç. 858 00:44:04,110 --> 00:44:08,780 Tüm yapmanız gereken, geçmek basitçe Bağlam, bunu bir list-- geçmesi 859 00:44:08,780 --> 00:44:11,327 ya da, evet, JavaScript listesidir? 860 00:44:11,327 --> 00:44:12,160 SAM YEŞİL: bir dizi. 861 00:44:12,160 --> 00:44:14,201 HUGH Zabriskie: Ah, öyle bir dizi, bu doğru. 862 00:44:14,201 --> 00:44:18,660 Bu yolları bir dizi var Farklı dosyalara. 863 00:44:18,660 --> 00:44:21,990 Ve o zaman bir işlev geçmektedir. 864 00:44:21,990 --> 00:44:25,530 Bu, konuşuyorduk geri olduğunu asenkron yükleme ile ilgili. 865 00:44:25,530 --> 00:44:28,720 Yani adı verilecek Yüklenen dosyalar bir kez. 866 00:44:28,720 --> 00:44:33,780 Ve bu fonksiyon zaman denir dosyanın yüklü bir çevre olarak alır 867 00:44:33,780 --> 00:44:35,840 Yüklenen tamponların bir dizi. 868 00:44:35,840 --> 00:44:37,990 Yani burada meydana gelir. 869 00:44:37,990 --> 00:44:41,180 Temel olarak, bir BufferList tek value-- olacak 870 00:44:41,180 --> 00:44:46,380 ya da bir dizi olacak endeksinde içinde yer alır uzunluğu on, 871 00:44:46,380 --> 00:44:51,320 MP3 bütün yüklenen dosya sıfır. 872 00:44:51,320 --> 00:44:53,320 Yani bitirmek ne yaparım Yükleme Ben sadece, bir 873 00:44:53,320 --> 00:44:57,430 bir tampon kaynağı oluşturmak hangi Bir ses bir tampon kaynağı düğümdür. 874 00:44:57,430 --> 00:45:03,410 Bir sonraki adım Ben yüklemek olduğunu Tam yüklü tampon olarak source.buffer 875 00:45:03,410 --> 00:45:06,740 BufferList-- adlı bu buffers-- bir sürü var 876 00:45:06,740 --> 00:45:10,255 ve sonra o ses bağlamak hedefe tampon. 877 00:45:10,255 --> 00:45:12,380 Peki bunu yapmak için gidiyor sadece basit MP3 koymak 878 00:45:12,380 --> 00:45:15,260 Düz çıkışı kadar, ve hemen başlayın 879 00:45:15,260 --> 00:45:18,010 Bu aramayı alma üzerine. 880 00:45:18,010 --> 00:45:21,660 >> Serin, bu yüzden görelim Bu eylem oluyor. 881 00:45:21,660 --> 00:45:24,490 Benim [duyulamaz] burada, görelim. 882 00:45:24,490 --> 00:45:26,430 Ben sadece gidiyorum Temel sunucusunu başlatmak. 883 00:45:26,430 --> 00:45:28,660 O bir şey olduğunu Eğer iseniz yapmanız gereken 884 00:45:28,660 --> 00:45:32,490 Yükleme dosyaları için istekte bulunmak. 885 00:45:32,490 --> 00:45:34,140 Ben bir temel sunucusunu başlatmak için gidiyorum. 886 00:45:34,140 --> 00:45:38,200 Bu temelde tüm olan Şu anda tek bir satırda PSET 887 00:45:38,200 --> 00:45:43,930 ama sadece başlıyor port 80/80 tarihinde bir sunucu. 888 00:45:43,930 --> 00:45:47,300 Yani biz buraya gitmek, biz 80/80 yüklemek için gidiyoruz, 889 00:45:47,300 --> 00:45:49,110 Biz Favori Şarkısı gitmek için gidiyoruz. 890 00:45:49,110 --> 00:45:51,660 Ben isabet Yani eğer "Play benim Şu anda en sevdiğiniz şarkı ", 891 00:45:51,660 --> 00:45:53,964 bu yükü gidiyor benim sevdiğim şarkı ve Durdur-- oynamak 892 00:45:53,964 --> 00:45:55,880 HIZLI IN EAGLES, "YAŞAM - [MÜZİK  LANE"] 893 00:45:55,880 --> 00:46:00,490 --which in "Hayat olur Eagles Fast Lane ". 894 00:46:00,490 --> 00:46:06,346 Şimdi, ben Dur "vurabilecek benim sevdiğim şarkı "ve tekrar. 895 00:46:06,346 --> 00:46:09,160 >> HIZLI IN EAGLES, "YAŞAM - [MÜZİK  LANE"] 896 00:46:09,160 --> 00:46:18,340 >> Ve ben, çünkü teselli etmeye üzerinde giderseniz Buraya bir küresel değişkeni kullanılır 897 00:46:18,340 --> 00:46:23,390 Aslında, bu değerin onu takip etmek Şimdi konsolunda kabul edilecektir. 898 00:46:23,390 --> 00:46:25,160 Bu yüzden benim için otomatik olarak oluşturur. 899 00:46:25,160 --> 00:46:29,991 Yani şu anda oynuyor ne, ve ben sadece) (source.stop çağırabilir 900 00:46:29,991 --> 00:46:30,490 Bu konuda. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 Peki, biliyor musun? 903 00:46:35,860 --> 00:46:39,760 Sadece bu yüzden siz duymuş bu song-- Bu şarkıyı tanıyabilir. 904 00:46:39,760 --> 00:46:41,801 >> [MÜZİK - Rick Astley, "Asla bırakmayacağım  SİZ UP "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 HIZLI IN EAGLES, "YAŞAM - [MÜZİK  LANE"] 907 00:46:44,215 --> 00:46:46,195 Biz şimdi tüm Rickrolled oldum. 908 00:46:46,195 --> 00:46:50,155 Tamam, harika, hareketli. 909 00:46:50,155 --> 00:46:51,160 Güzel. 910 00:46:51,160 --> 00:46:54,554 Yani bu temelde bir örnektir sadece bir MP3 yüklemek nasıl file-- 911 00:46:54,554 --> 00:46:56,470 HIZLI IN EAGLES, "YAŞAM - [MÜZİK  LANE"] 912 00:46:56,470 --> 00:46:59,590 --ve oynamak ve durdurmak ve başlatın. 913 00:46:59,590 --> 00:47:03,008 Ben çok daha fazla yapmış olabilir [duyulamaz] 914 00:47:03,008 --> 00:47:07,570 >> Ben yapacağım sonuncusu olan Ben [duyulamaz] size göstereceğim. 915 00:47:07,570 --> 00:47:18,070 >> [MÜZİK OYUN] 916 00:47:18,070 --> 00:47:21,800 >> Bu gibi ogg.wave.mp3 var. 917 00:47:21,800 --> 00:47:26,450 Yanlış hatırlamıyorsam ben, bence, Ben, .m4a bazı sorunları çalıştırmak 918 00:47:26,450 --> 00:47:27,721 ama bu konuda emin değilim. 919 00:47:27,721 --> 00:47:28,470 Ben mp3.wave-- düşünüyorum 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MÜZİK - Rick Astley, "Asla bırakmayacağım  SİZ UP "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> Tamam harika. 924 00:47:36,500 --> 00:47:37,625 Bunu söylememem gerekirdi. 925 00:47:37,625 --> 00:47:40,570 Merhaba, neyse. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Yani biz bu açık var. 928 00:47:45,490 --> 00:47:52,320 Yani şimdi ben yaptığım Ben temelde oluşturulan bir müzik oluşturmak için temel bir sözdizimi. 929 00:47:52,320 --> 00:47:57,610 Ben böyle bir şey yapmak eğer öyleyse, g4'ü eklemek 1 2, bu ne demektir olduğunu, 930 00:47:57,610 --> 00:48:00,950 piyano notu G4 ekleyin bu dördüncü G 931 00:48:00,950 --> 00:48:02,680 alttan piyano üzerinde. 932 00:48:02,680 --> 00:48:05,930 Yani bu MIDI tür konuşuyoruz olduğunu böylece müzik tabanlı olanlar için, 933 00:48:05,930 --> 00:48:07,860 Bu sadece MIDI notlar. 934 00:48:07,860 --> 00:48:10,090 >> HEDEF KİTLE: Bu G bulunuyor Orta C, değil mi? 935 00:48:10,090 --> 00:48:11,840 >> Hugh Zabriskie Bu G Orta C'nin üzerinde, bu doğru. 936 00:48:11,840 --> 00:48:12,470 >> HEDEF KİTLE: Yukarıda Middle C. 937 00:48:12,470 --> 00:48:13,345 >> HUGH Zabriskie: Evet. 938 00:48:13,345 --> 00:48:14,340 Aslında evet. 939 00:48:14,340 --> 00:48:16,131 Ben aslında yaptığımı düşünüyorum o tek [duyulamaz], 940 00:48:16,131 --> 00:48:18,860 bu nedenle bu yukarıda bir oktav olabilir. 941 00:48:18,860 --> 00:48:20,070 Yani görelim. 942 00:48:20,070 --> 00:48:21,152 Ben Play-- vurursanız 943 00:48:21,152 --> 00:48:22,110 [TEKRARLI PIANO NOT] 944 00:48:22,110 --> 00:48:23,200 Bu duyacak --we're. 945 00:48:23,200 --> 00:48:25,700 Fikir faaliyet olduğunu Sadece, bir komut satırı yaptığınız gibi 946 00:48:25,700 --> 00:48:27,510 bu yüzden yukarı ve aşağı giderseniz Benim klavyede, sen 947 00:48:27,510 --> 00:48:31,550 Önceki geri dönebilirsiniz Oldukça kullanışlı olan komutları. 948 00:48:31,550 --> 00:48:35,136 Ve aşağıda parça benim listesi, hangi tüm döngü üzerinde çalışıyor. 949 00:48:35,136 --> 00:48:38,260 >> HEDEF KİTLE: Sen varsayarak edildi Bu klavye 88 tuşlu, değil mi? 950 00:48:38,260 --> 00:48:41,051 >> HUGH Zabriskie: soruydu, Ben bir 88 tuşlu klavye varsayarak yaşıyorum, 951 00:48:41,051 --> 00:48:41,990 ve evet, öyleyim. 952 00:48:41,990 --> 00:48:45,030 Ne yaptım ben ise temelde 88 numune aldı 953 00:48:45,030 --> 00:48:46,970 piyano, her not için biri. 954 00:48:46,970 --> 00:48:49,180 Ve böylece her zaman size Şu andan itibaren bir not duymak, 955 00:48:49,180 --> 00:48:57,550 aslında görünen bir döngü Bu döngü üzerinde oynanan oluyor da-- 956 00:48:57,550 --> 00:49:00,120 yani her not için, bu çalışıyor. 957 00:49:00,120 --> 00:49:02,860 Ne olur ki, ben Yine bir tampon oluşturmak, 958 00:49:02,860 --> 00:49:06,010 Ben seviyesini ayarlamak için bir kazanç düğümü oluşturmak. 959 00:49:06,010 --> 00:49:08,240 Bu sadece gerçekten I söyleyerek karmaşık yolu 960 00:49:08,240 --> 00:49:10,550 Bir source.buffer arabelleği saklayın. 961 00:49:10,550 --> 00:49:13,160 Ben o kazanç vermek, ben kazanç bağlayın, 962 00:49:13,160 --> 00:49:15,576 kazancı bağlı Çıktı, sonra ben onu çalmak. 963 00:49:15,576 --> 00:49:20,735 Yani bu sürecin tür bir tampon kaynağı alarak. 964 00:49:20,735 --> 00:49:24,820 >> HEDEF KİTLE: aslında o alabilir miyim Kuru ses ve ıslak [duyulamaz] yapmak? 965 00:49:24,820 --> 00:49:26,260 >> HUGH Zabriskie: You can, evet. 966 00:49:26,260 --> 00:49:29,260 Yeniden fiil var, var gecikme, bozulma. 967 00:49:29,260 --> 00:49:33,260 Temelde bir şey koyabilirsiniz of-- de bu sandviç arasında, 968 00:49:33,260 --> 00:49:37,660 Boru hattı, daha iyi bir metafordur ama bunu bir şey ekleyebilirsiniz. 969 00:49:37,660 --> 00:49:38,200 Güzel. 970 00:49:38,200 --> 00:49:40,280 >> Yani demo bitireceğim Burada size bir fikir vermek için 971 00:49:40,280 --> 00:49:46,390 kez sadece sayısının çokluğu seni tek seferde bu işlevi çalıştırabilirsiniz. 972 00:49:46,390 --> 00:49:49,280 Yani bu kaldırmak için gidiyorum. 973 00:49:49,280 --> 00:49:59,110 Ben bir jeneratör oluşturmak için gidiyorum ki- Temelde bu gerçekten does-- nedir 974 00:49:59,110 --> 00:50:04,220 Karmaşık bir syntax-- tür ama var anında notlar oluşturmak için gidiyor, 975 00:50:04,220 --> 00:50:06,601 ve sadece oynamaya başlayın Onları onları değerlendirir olarak. 976 00:50:06,601 --> 00:50:07,392 [Interposing PİYANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Yani biz sadece burada biraz müzik yapabilirsiniz. 979 00:50:12,817 --> 00:50:13,608 [Interposing PİYANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Peki bu komut örneğin, yapar 982 00:50:41,470 --> 00:50:46,910 onun için bu üç notlar alır Piyano ve ardından B3 koyar. 983 00:50:46,910 --> 00:50:48,660 Bu sözdizimi neden olabilir Biraz daha mantıklı 984 00:50:48,660 --> 00:50:50,590 Bir olanlara Burada müzik arka plan. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Ben bir tekme davul ekleyebilirsiniz. 987 00:50:56,551 --> 00:50:57,050 Yapabilirim-- 988 00:50:57,050 --> 00:50:58,048 >> [Interposing ARAÇLAR] 989 00:50:58,048 --> 00:50:59,256 >> --just o ile oynamak. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Yani make-- edebilirsiniz 992 00:51:13,474 --> 00:51:14,515 [Interposing ARAÇLAR] 993 00:51:14,515 --> 00:51:15,513 Bu bir biraz daha sinir bozucu. 994 00:51:15,513 --> 00:51:16,554 [Interposing ARAÇLAR] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Bu rastgele bir kuru zil ekler Yani 16 ile% 16 her nota üzerinde 997 00:51:30,981 --> 00:51:31,481 [Duyulamaz]. 998 00:51:31,481 --> 00:51:32,522 >> [Interposing ARAÇLAR] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Evet, bu yüzden yol bu o 4'te hep works--: 4. 1001 00:51:50,400 --> 00:51:51,441 [Interposing ARAÇLAR] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Evet, dört çeyrek ve 16/8 yani. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Interposing ARAÇLAR] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Yani ortalama olarak 60% indirim 16. notları vurur. 1008 00:52:33,780 --> 00:52:35,990 >> Neyse, bu sadece oldu tür göstermek için 1009 00:52:35,990 --> 00:52:39,780 yapabildin bazı şeyler Web Audio API ile inşa. 1010 00:52:39,780 --> 00:52:43,840 O, gerçekten hızlı, gerçekten güçlü ve serin bir çok şey yapabilirsiniz 1011 00:52:43,840 --> 00:52:44,340 Bununla. 1012 00:52:44,340 --> 00:52:51,260 Yani yine, herhangi bir soru, E-posta myself-- Hugh-- veya Sam, 1013 00:52:51,260 --> 00:52:55,869 ve dürüstçe, Google var İyi kaynakların bir ton. 1014 00:52:55,869 --> 00:52:56,660 Herhangi bir son soru? 1015 00:52:56,660 --> 00:52:57,970 Evet. 1016 00:52:57,970 --> 00:53:00,790 >> HEDEF KİTLE: Yani erişebilirsiniz Dahili mikrofon. 1017 00:53:00,790 --> 00:53:03,089 Eğer istedim ne Daha iyi bir mikrofon kullanın? 1018 00:53:03,089 --> 00:53:05,380 HUGH Zabriskie: Eğer isteseydim Daha iyi mikrofonu kullanmak için? 1019 00:53:05,380 --> 00:53:11,320 Yani yine, bu parçasıdır Chrome arasındaki soyutlama 1020 00:53:11,320 --> 00:53:12,950 ve bilgisayarınıza geri kalanı. 1021 00:53:12,950 --> 00:53:18,950 Içinden kullanılabilir olmadığı sürece bir API, Web MIDI API gibi, 1022 00:53:18,950 --> 00:53:22,030 muhtemelen bazı kesmek bulabiliriz, ancak genel olarak mümkün değildir. 1023 00:53:22,030 --> 00:53:25,300 >> SAM YEŞİL: Sen also-- edebilirsiniz Tüm Chrome bilir 1024 00:53:25,300 --> 00:53:28,820 ne Varsayılan mikrofon ve bu erişir. 1025 00:53:28,820 --> 00:53:33,410 Eğer bir mikrofon olsaydı yapabildin yüzden bilgisayarınızın varsayılan mikrofonu olarak ayarlanır, 1026 00:53:33,410 --> 00:53:35,990 Eğer bu şekilde erişebilir ve muhtemelen çalışmaya devam eder. 1027 00:53:35,990 --> 00:53:37,490 HUGH Zabriskie: Bu iyi bir nokta. 1028 00:53:37,490 --> 00:53:39,656 Ben denedim, ama hiç Eğer tür mümkün olabilir 1029 00:53:39,656 --> 00:53:45,700 of-- giriş hoparlör yönlendirmek durumunda, evet, bunu mümkün olabilir. 1030 00:53:45,700 --> 00:53:48,360 >> Herhangi bir son soru? 1031 00:53:48,360 --> 00:53:49,340 Güzel. 1032 00:53:49,340 --> 00:53:51,680 Peki teşekkür ederim çocuklar izlemek için çok. 1033 00:53:51,680 --> 00:53:52,199 Ben Hugh değilim. 1034 00:53:52,199 --> 00:53:52,990 SAM YEŞİL: Ben Sam. 1035 00:53:52,990 --> 00:53:55,410 Hugh Zabriskie: ve bu CS50 olup. 1036 00:53:55,410 --> 00:53:56,767