>> सैम ग्रीन: हाय, सब लोग।
हमारे संगोष्ठी में स्वागत है।
मेरा नाम सैम है।
ह्यूग ज़ैब्रिस्की: मैं ह्यूग हूँ।
सैम ग्रीन: और हम आज बात करने के लिए जा रहे हैं जावास्क्रिप्ट और वेब ऑडियो एपीआई के बारे में।
बस बाहर शुरू करने के लिए, यह एक रूपरेखा है संगोष्ठी के लिए हमारे एजेंडे की।
हम इस बारे में बात कर रही द्वारा शुरू करने के लिए जा रहे हैं क्यों आप वेब में रुचि होनी चाहिए
ऑडियो एपीआई, क्यों जावास्क्रिप्ट है आप इसके लिए जरूरत है भाषा,
और फिर जावास्क्रिप्ट के बारे में बात जैसे, इसलिए essentials--
कुछ के माध्यम से चलना भाषा की मूल बातें,
और तब के बारे में बात करते हैं एक उच्च स्तर पर ऑडियो एपीआई।
फिर, ह्यूग कुछ के बारे में बात करेंगे ऑडियो उत्पादन के चरणों की
और फिर इस भयानक Sequencer डेमो परियोजना उन्होंने बनाया है और आप कोड को दिखाने के।
और फिर, हम के लिए समय होगा लोगों के लिए अंत में सवाल
यहां हैं जो रहते हैं।
>> ह्यूग ज़ैब्रिस्की: कूल।
>> सैम ग्रीन: कूल।
>> ह्यूग ज़ैब्रिस्की: कूल।
मैं वापस करेंगे।
>> सैम ग्रीन: तो, सबसे पहली बात।
महान चीज़ों में से एक तो वेब ऑडियो एपीआई के बारे में
कोई आवश्यक सेट अप है कि वहाँ है।
यह निर्मित में आता है सबसे आधुनिक ब्राउज़रों,
क्रोम, एज, एक पूरे सहित others-- सभी लोगों का गुच्छा
की है कि बड़े भाग लोगों को आज का उपयोग कर रहे हैं।
इतना नहीं, वहाँ की स्थापना की है एक तरफ बस से हो रही
एक वेब सर्वर के लिए जा रहा है, आप काम शुरू करने के लिए
महान है जो अपनी परियोजना पर।
>> हम बहुत की सिफारिश भारी कि तुम पर विचार
के लिए क्रोम का उपयोग जावास्क्रिप्ट वेब विकास,
बस अपनी डेवलपर क्योंकि उपकरण वास्तव में मजबूत कर रहे हैं।
हम मतलब सिर्फ एक उदाहरण के रूप में कह कर अपने जावास्क्रिप्ट को खोलने के
आप क्रोम में जाना है, तो console-- और आप किसी भी वेब पेज को देखो,
और आप क्लिक छोड़ा उसके बाद निरीक्षण तत्व, और
आप इस छोटे से ड्रॉप-डाउन करने के लिए जाना यहीं है और आप कंसोल पर क्लिक करें
आप ऊपर एक लग रहा है क्या खोलता देखेंगे एक कमांड प्रॉम्प्ट की तरह बहुत है कि आप
अपने मैक पर देखते हैं, या आईडी पर हो सकता है।
बस ऐसे ही और, हम कर सकते हैं प्रकार, साफ़ की तरह, यहां आदेशों
और उस जैसे अन्य आदेशों।
हम के रूप में, चर बना सकते हैं हम जावास्क्रिप्ट में बाद में देखेंगे।
और तो कुछ भी हम में कर सकते हैं जावास्क्रिप्ट, हम सांत्वना के साथ क्या कर सकते हैं
और उस के लिए एक सुपर आसान तरीका है एपीआई के साथ खेलने के आसपास शुरू
और के साथ सहज हो रही है सही बल्ले से जावास्क्रिप्ट।
कोई सेट अप की आवश्यकता है, जो वास्तव में अच्छा है।
कूल।
भयानक।
>> तो सिर्फ एक और बात जोड़ने के लिए।
यदि आपके पास कोई देखते हैं questions-- यहाँ नहीं कर रहे हैं रहते हैं, जो आप में से कई
us-- इन ईमेल के लिए स्वतंत्र महसूस हो रहा है हमारे ईमेल पते हैं।
यदि आपके पास प्रश्न हैं आप हमें पूछना नहीं करना चाहते हैं,
जैसे, ओह मैं एक बग है अपने कोड में, या कुछ और
कि एक छोटे से अधिक विशिष्ट है शायद यह पहली बार गूगल।
महान संसाधनों का एक बहुत हैं वहाँ से बाहर वेब ऑडियो एपीआई के बारे में।
यह वास्तव में अच्छी तरह से है दस्तावेज और यह किया जा रहा है
लोगों की एक टन में से इस्तेमाल किया बस रहे हैं, जो उद्योग, और लोगों को
खुद के लिए मज़ा सामान का निर्माण।
तो वहाँ एक बहुत होना चाहिए वहाँ से बाहर संसाधनों की।
भयानक।
>> कूल, तो क्यों वेब ऑडियो एपीआई?
यह चित्र एक छोटा सा है जिस तरह के एक विकास की
वेब पर ध्वनि समय अधिक हो गया है।
Bgsound मूल एचटीएमएल टैग की तरह था इंटरनेट एक्सप्लोरर का समर्थन करने के लिए प्रयोग किया जाता है।
यह केवल सुंदर बुनियादी ध्वनियों के लिए अनुमति दी कार्यक्षमता, बहुत मजबूत नहीं था
और यदि आप ऐसा नहीं कर सका जटिल अनुक्रमण,
ध्वनि शुरू कर दिया जब या नियंत्रण और बहुत मजबूती के साथ बंद कर दिया।
इसलिए, यह विशेष रूप से नहीं था अच्छी तरह से विकसित की है।
फिर उसके बाद, फ्लैश , along-- जो आया
मैं तुम लोगों से सभी परिचित हैं कि यकीन Flash-- हो सकता है यह काम करता है नहीं कैसे,
लेकिन आप निश्चित रूप से इसे देखा है।
आप अपने फ़्लैश अद्यतन करने के लिए मिल गया है प्लग में, सामान के सभी उस तरह,
और कहा कि निश्चित रूप से सीमा बढ़ा कार्यक्षमता के लिए उपलब्ध था कि।
लेकिन उपयोगकर्ता बनाने स्थापित एक प्लग में निश्चित रूप से है
सहित फ्लैश करने के लिए एक खामी अपने आवेदन में, है ना?
क्योंकि तब आप पर निर्भर कर रहे हैं उपयोगकर्ता जा रहा है और इस प्लग में खोजने,
और शायद दिया जा रहा है इस अतिरिक्त कदम से बंद
वे अपने अनुप्रयोग का उपयोग करने के लिए ले जाना है।
और फिर वहाँ एक अद्यतन हो सकता है कि अपने पूरे आवेदन तोड़ दूँगा,
और यह एक बुरा सपना समाप्त होता जा रहा बहुत डेवलपर, के लिए।
तो यह है कि एक आड़ था।
>> और फिर उस के साथ आया था के बाद एचटीएमएल ऑडियो टैग, जो
और अधिक आधुनिक HTML-- की एक विशेषता है जो निश्चित रूप से एक बहुत अधिक सामान के लिए अनुमति दी,
लेकिन यहां तक ​​कि चीजें आप कर सकते हैं एक छोटा सा सिर्फ वहाँ सीमित थे
चीजों की एक परिणाम के रूप में कि एचटीएमएल में सक्षम था।
तो जब जावास्क्रिप्ट एपीआई, वेब ऑडियो एपीआई,
एक मानक बन गया ब्राउज़रों भर में अभ्यास,
कि वास्तव में सेट चौड़ी डेवलपर्स के लिए अवसरों की
वास्तव में इमारत में लाने के लिए वेब के लिए शांत सामान।
एक लंबे समय के लिए वहाँ था गया वास्तव में मजबूत उपकरण
देशी ऑडियो अनुप्रयोगों के लिए, हर कोई जानता है GarageBand like--,
और तो जाहिर अधिक कर रहे हैं पेशेवर ऑडियो मिक्सिंग आवेदन,
और सामान की तरह।
लेकिन वहाँ नहीं था एक वास्तव में अच्छा Cloud-- नहीं
बादल, हाँ, मुझे लगता है Cloud-- वेब आधारित मंच
कि डेवलपर्स के लिए अनुमति होगी लोगों के लिए अनुप्रयोगों का निर्माण
ऑडियो मिक्सिंग करने के लिए।
और वह आपको दिखाई देगा के रूप में बाद में, वेब ऑडियो API
वास्तव में शक्तिशाली के लिए अनुमति देता है सामान, वास्तव में बस ऐसा करने के लिए
जो बहुत अच्छा है।
तो यह है कि आप करने के लिए क्यों अनुदेश है संगोष्ठी के बाकी देखना चाहिए,
मूल रूप से।
>> और अब, मैं इस बारे में बात करने जा रहा हूँ कुछ JavaScript-- सिर्फ बुनियादी तत्वों
भाषा की, तो यह है कि हम एक ही पृष्ठ पर जा सकता है
हम के बारे में बात करते हैं एपीआई एक छोटा सा बाद में।
कूल।
>> तो, यह एक सारांश है।
मैं इस यहाँ था भूल गया।
हाँ।
>> ह्यूग ज़ैब्रिस्की: यहाँ दो स्लाइड्स है।
>> सैम ग्रीन: यह सारांश है सीमाओं में से कुछ की
अन्य बाध्यकारी, पुराने तरीकों की।
और फिर अब, हम इन बातों है।
कूल।
भयानक।
>> तो, जावास्क्रिप्ट अनिवार्य है।
सबसे पहली बात, वहाँ एक बहुत महत्वपूर्ण अंतर
में जावास्क्रिप्ट बनाम में एक रास्ते में सी की तरह भाषा,
चर कि बनाई गई हैं।
सी में तो, हम होने के लिए इस्तेमाल कर रहे हैं हमारे चर टाइप करने के लिए, है ना?
और मुझे पसंद प्रकार मतलब नहीं है उन में टाइप करें, मैं प्रकार मतलब
की तरह उन्हें एक type-- अर्थ प्रदान जैसे, एक पूर्णांक, एक नाव, एक चार।
सी में, हम वास्तव में करने के लिए इस्तेमाल किया गया एक चर बनाने के लिए होने
और उसके बाद के लिए उस प्रकार के लिए छड़ी हम चाहते हैं कि चर का उपयोग करने वाले पूरे समय।
और वह है, जरूरी भी बदतर नहीं है लेकिन इसका इस्तेमाल करने के लिए शायद कठिन है।
शांत सुविधाओं में से एक जावास्क्रिप्ट है की
चर कहा जाता है क्या कर रहे हैं कि "गतिशील, टाइप" जो
मैं एक बना सकते हैं कि इसका मतलब है कि वाक्य रचना के साथ चर,
varX उदाहरण के लिए, 5 के बराबर होती है।
यही कारण है कि मूल रूप से बनाता है एक पूर्णांक variable--
सही नीचे हुड somewhere-- लेकिन मैं
उस चर बदल सकते हैं एक स्ट्रिंग का उल्लेख करने के
की तरह कुछ भी कर बिना एक नया चर बनाने।
मुझे चिंता करने की ज़रूरत नहीं है प्रकार बदलने के बारे में।
जावास्क्रिप्ट कि प्रकार के जानता है बदल गया है, और है कि गतिशील होता है।
>> तो, लाभ कर रहे हैं और उस के लिए कमियां
में काम किया है, जो के रूप में किसी को भी थोड़ी देर के लिए जावास्क्रिप्ट को जानते हो।
कई बार जब वहाँ रहे हैं अगर आप गलती से हो सकता है
एक चर का प्रकार बदलने और उस प्रकार के बदलते संभाल नहीं,
और फिर अपने जावास्क्रिप्ट crash-- या एक अपवाद सकते हैं
तुम होगा, क्योंकि फेंक दिया गलत प्रकार आप एक प्रकार की उम्मीद है।
कूल।
>> तो, जो scoping-- हैं, की तरह है हम पाठ्यक्रम में शुरुआती सप्ताह याद है,
कैसे दिखाई एक चर को संदर्भित करता है और कोड के किस क्षेत्र में।
कि सब के सब बहुत इसी तरह लग रहा है यह सी में लगता है जिस तरह करने के लिए
तो चर आम तौर पर scoped रहे हैं एक समारोह के भीतर सर्पाकार भीतर,
और फिर यह भी देखते हैं विश्व स्तर पर scoped चर कि
आप एक चर लिखने यदि are-- एक समारोह के बाहर,
यह पूरे पाठ में दिखाई जाएगी।
>> के बीच एक अंतर विशेष रूप से जावास्क्रिप्ट और सी,
आप एक वैश्विक घोषित करता है, तो वह यह है कि एक पाठ फ़ाइल में चर कहीं भी
यह किसी भी समारोह में दिखाई दे रहा है उस पाठ फ़ाइल के भीतर।
यह सही है, सही है?
>> ह्यूग ज़ैब्रिस्की: हाँ।
>> सैम ग्रीन: इतना है कि यह भी एक छोटी सी है सी की तुलना में कायरता सा है,
हम हमेशा के लिए किया था, जहां हमारे स्थानों ऊपर चर परिभाषा
वे इस्तेमाल किया गया।
यही कारण है कि लागू किया गया है कि एक नियम नहीं है अब, इसलिए, कुछ अलग सा।
और फिर सिर्फ reemphasize करने के लिए, स्थानीय variables-- बनाम वैश्विक
सी के लिए बहुत ही तुम हो सकता एक ही नाम के साथ दो चर,
और उनके नाम से एक छाया किया है एक स्थानीय चर द्वारा उनमें से एक है, तो
वैश्विक था।
की तो, इसी तरह समस्याओं आप में से कुछ है कि
कुछ में चला गया हो सकता आपकी समस्या का अब तक तय करता है।
कूल, इसलिए कि चर है।
>> नियंत्रण प्रवाह की तरह है, जिसका अर्थ यदि-else-- तार्किक stuff-- और छोरों।
तो साथ शुरू करने के लिए, यह क्या है अगर-और बयानों जावास्क्रिप्ट में की तरह लग रही है।
विभिन्न चीजों के स्थान लाइनों पर महत्वपूर्ण नहीं है।
यह सिर्फ सम्मेलनों में से एक है जिस तरह से हम संरचना कोड के लिए।
बस सी में की तरह, हम एक हैं एक कोष्टक बयान "," यदि।
यही कारण है कि मैं क्या करने के लिए क्या मतलब नहीं है।
मैंने इसे फिर से किया।
>> ह्यूग ज़ैब्रिस्की: बाहर निकलने के लिए कोशिश कर रहा?
सैम ग्रीन: नहीं, मैं कर रहा हूँ बस में ज़ूम करने के लिए कोशिश कर रहा है।
इससे कोई फर्क नहीं पड़ता।
>> तो, हम एक "अगर" बयान दिया है और हम इसके अंदर एक शर्त है
कि, सही है या गलत करने के लिए मूल्यांकन और कहा कि क्या है या नहीं निर्धारित करता है
हम कोड की है कि ब्लॉक में प्रवेश।
और इसी तरह, हमारे पास एक और को-, और अगर हम सी में करने के लिए इस्तेमाल कर रहे हैं की तरह सिर्फ एक वरना,
>> तुम भी बहुत सहज होना चाहिए सही छोरों के साथ बल्लेबाजी करना,
उन्होंने यह भी लग रही है क्योंकि सी की तरह एक बहुत लग रहा है।
लेकिन आप फिर से नोटिस कि करेंगे हम बजाय initializations पूर्णांक की, है,
हम वर initializations है।
और मैं तुम्हें लगता है कि बनाने के लिए सावधान रहना होगा
सुनिश्चित करें कि आप मूल्य में परिवर्तन नहीं करते मैं एक पूर्णांक से एक स्ट्रिंग के लिए,
उदाहरण के लिए, कि क्योंकि जा रहा है अजीब व्यवहार के कारण आप नहीं हो सकता है
उम्मीद करते हैं।
लेकिन इस दिखना चाहिए बहुत परिचित, के रूप में अच्छी तरह से।
>> बातें करने के लिए शुरू तो यह है जहां जावास्क्रिप्ट में एक छोटा सा पागल हो
किसी के लिए जो एक से जा रहा है सी की पृष्ठभूमि कार्य कर रहे हैं
जावास्क्रिप्ट में, और एक ही रास्ता है लग रहा है कि एक समारोह की घोषणा करने के लिए
सी के समान की तरह है, और उसके बाद एक और एक है कि
एक तरह से अलग दिखता है।
>> पहले संस्करण हम यहाँ देख सकते हैं, जो
, जहां की तरह सी की तरह है हम इस एक समारोह है, का कहना है
यह एक नाम देना, देना तर्क की संख्या,
समारोह की और तब सामग्री उन सर्पाकार अंदर जाओ।
हम का एक उदाहरण देखेंगे बस एक पल में तर्क।
>> अगली पंक्ति पर जबकि, हम ओह, देखते हैं, यहां एक चर बुलाया "myfunction," चलो
और हम यह करने के लिए यह बराबर सामान्य thing-- function-- कि
कुछ भी चल रहा है प्रतीत नहीं होता है।
अलग है कि कारण से सी है कि जावास्क्रिप्ट
एक कार्यात्मक भाषा क्या कहा जाता है, या जो इसका मतलब है, कार्यात्मक तत्व है
कार्यों वास्तव में मान रहे हैं कि।
और कहा कि हम निर्धारित कर सकते हैं कि इसका मतलब है एक चर एक समारोह के बराबर करने के लिए
और फिर उस समारोह के लिए कदम चारों ओर, एक तर्क के रूप में इसे पारित,
सामान के सभी प्रकार के कर कार्यों के साथ ऐसे ही।
>> एक अन्य बात यह note-- को कार्यों में लिखा जाता है
बहस का एक निश्चित संख्या के साथ।
हम एक समारोह का एक उदाहरण देखेंगे अगली स्लाइड पर एक तर्क के साथ।
लेकिन जावास्क्रिप्ट नहीं होगा आप की कोशिश करता है, तो आप कम से चिल्लाना
के साथ एक समारोह का उपयोग करने के लिए तर्क की गलत संख्या।
यह सिर्फ बनाने के लिए अपनी पूरी कोशिश करूँगा यदि आप गुजारें जिसका अर्थ है कि क्या करना है,
आप एक को उम्मीद है कि एक समारोह कॉल कोई तर्क है, सभी के साथ तर्क है कि
यह अपनी पूरी कोशिश करूँगा है क्या होगा कोशिश है कि कोड को निष्पादित करने के लिए,
और यह अंततः चलाता है एक अपवाद या एक त्रुटि में,
यह है कि अपवाद फेंक और सिर्फ रखेंगे going-- सिर्फ तरीकों में से एक है जो
जावास्क्रिप्ट काम करता है।
हाँ।
>> दर्शकों: क्या होता है अगर भी कई तर्क है?
सैम ग्रीन: तो सवाल क्या होता था,
भी कई बहस कर रहे हैं तो क्या होगा?
और जवाब यह है कि जावास्क्रिप्ट जा सकता है
रहे हैं कि लोगों की उपेक्षा यह उम्मीद है लोगों के बाद।
यह कार्य निष्पादित करने की कोशिश करेंगे यह सिर्फ पहले दो था मानो कहते हैं।
है ना?
>> ह्यूग ज़ैब्रिस्की: यह है कि हाँ, सही है।
इसी तरह, अगर वहाँ बहुत कुछ तर्क हैं,
यह बस की तरह सभी के लिए अशक्त देता है तर्क यह किसी भी मूल्यों के पास नहीं है
के लिए।
>> सैम ग्रीन: जो कर सकते हैं वास्तव में, काम हो अगर आप
एक समारोह में लिखना चाहते है कि एक चर संख्या तर्क लेता है।
आप में मूलभूत मूल्यों सेट कर सकते हैं समारोह की परिभाषा
और यह इस तथ्य की अनदेखी कर सकते हैं कि इनपुट नहीं है।
तो मैं एक छोटा सा बात करना चाहते हैं इस आखिरी गोली के बारे में अधिक
कार्य है जो बात, मान रहे हैं।
यह वह जगह है कि एक उदाहरण है एक छोटा सा मन उड़ाने
आप बस इसे पढ़ा है, और मुझे नहीं लगता कि यदि एक पल के लिए क्या हो रहा है के बारे में।
तो, चलो बस को देखो यहां पहली पंक्ति।
हम हम कहते हैं कि, इस चर, F1 है इस बात करता है कि एक समारोह है।
और समारोह की सामग्री ('हैलो') console.log कर रहे हैं।
आप के रूप में console.log के बारे में सोच सकते हैं Printf का जावास्क्रिप्ट बराबर।
तो क्या होगा, अगर है हम हमारे ब्राउज़र में इस कोड को चलाने के लिए,
यह एक स्ट्रिंग प्रिंट आउट करेंगे।
मुझे लगता है कि प्रदर्शन कर सकते हैं।
दर्शकों: प्रवेश द्वारा, हालांकि, कि करता है यह कहीं दर्ज की जा रही है इसका मतलब?
सैम ग्रीन: हाँ।
तो मैं ऐसा करने के लिए क्या हो रहा है तुम्हें दिखाता हूँ।
तो सवाल यह है कि क्या इसका मतलब यह लॉग करता था?
>> ह्यूग ज़ैब्रिस्की: तो console.log सी के लिए printf की तरह है
सैम ग्रीन: तो console.log , printf की तरह है
इसलिए मुझे लगता है ('हैलो') इस console.log है, और मुझे लगता है कि कॉल, स्ट्रिंग "नमस्ते"
सांत्वना के लिए बाहर मुद्रित हो जाता है।
यह दिलासा है।
यह सिर्फ printf, जहां की तरह है यह मानक बाहर करने के लिए प्रिंट।
और हम एक मिनट में देखेंगे, लेकिन यह वास्तव में है
सांत्वना वस्तु का जिक्र है, और उस वस्तु पर एक विधि बुला रही है।
यही कारण है कि और अधिक समझ कर दूँगा जब एक मिनट में हम
के बारे में बात करने के लिए मिलता है जावास्क्रिप्ट में वस्तुओं,
लेकिन मुझे लगता है कि मैं सिर्फ उल्लेख है कि सोचा था।
ह्यूग ज़ैब्रिस्की: हम कर रहे हैं सी में करने के लिए इस्तेमाल किया, right--
हम आम तौर पर एक बड़ा प्रोग्राम लिखने मुख्य रूप से कुछ भी करने के लिए।
लेकिन क्या जावास्क्रिप्ट में अच्छा है कि आप है दुभाषिया इस तरह का है कि
रन वास्तविक समय में, यह तो लाइन से बस लाइन लेता है,
यह सिर्फ मौके पर कि व्याख्या कर सकते हैं।
और यह का ट्रैक रखता है पहले चला है कि चीजें,
इसलिए यह एक बहुत ही उपयोगी उपकरण है , console.log, या कंसोल का उपयोग
आम तौर पर, सिर्फ खेलने के लिए चारों ओर जावास्क्रिप्ट के साथ।
>> सैम ग्रीन: तो यह करने के लिए वापस जा रहा कोड की दूसरी पंक्ति example--
यहाँ मेरे सिर में बहुत मन- boggling है।
पहली बार मैं इस पढ़ा, यह पसंद है, क्या चल रहा था?
तो क्या हो रहा है यह है, समारोह घोषणा कहते हैं,
मैं एक समारोह में कहा जाता F2 है कि, च एक तर्क की उम्मीद कर रहा है,
और फिर यह कि कॉल समारोह, एफ, जो
एक तर्क के रूप में इसे करने के लिए पारित किया गया था कोई तर्क के साथ ही।
तो, कि भ्रामक हो सकता है।
F2 F1 लेता है के रूप में हम इस बात को समझ तो एक तर्क के रूप में, और फिर F2 के अंदर,
च called-- जो साधन हो जाता है कोड की इस पंक्ति है कि,
के इन दो लाइनों के बाद कोड, "नमस्ते" में परिणाम
कंसोल में छापा जा रहा है।
>> हम पारित कर सकते हैं तथ्य यह है कि आसपास के कार्यों मूल्यों के रूप में
सबसे में से एक समाप्त होता जा रहा जावास्क्रिप्ट के शक्तिशाली सुविधाओं
एक प्रोग्रामिंग भाषा के रूप में।
सभी का बाहर यह कर सकते हैं भयानक बातें,
बस की एक विशेषता के रूप में रास्ते के संदर्भ में भाषा
यह चीजों को आसान बना देता है कि कार्यक्रम और अनुमति देता है
विशेष रूप से नहीं कर रहे हैं कि चीजों के लिए वेब के लिए अच्छी तरह से अनुकूल,
कार्यात्मक प्रोग्रामिंग और कार्यात्मक जावास्क्रिप्ट की प्रोग्रामिंग पहलुओं
सबमें से अधिक है शक्तिशाली अवधारणाओं कि
अगर आप मुझसे पूछें JavaScript-- में मौजूद है।
कूल।
>> तो, अगली बात।
कार्यात्मक होने के अलावा, जावास्क्रिप्ट के तत्वों को भी देखते हैं
वस्तु उन्मुख हैं कि, जो बहुत से एक है
कंप्यूटर विज्ञान के क्षेत्र में लोकप्रिय चर्चा शब्दों।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग वास्तव में एक लोकप्रिय बात है।
जावास्क्रिप्ट इस बात का एक संस्करण है, मैं हर मूल्य भी मानना ​​है कि जहां
हर वस्तु जिसका अर्थ है कि एक वस्तु, मूल्यों के कुछ संख्या में एक साथ लपेटता है।
सरल कर रहे हैं कि मूल्यों, जैसे के लिए तो , varX तरह एक पूर्णांक, 5 के बराबर होती है
उद्देश्य यह है कि सिर्फ एक मूल्य है कि लपेटता है।
>> लेकिन हम यह भी एक स्थिति की कल्पना कर सकते हैं हम सी में स्थितियों के बारे में सोच सकते हैं where--
हम करना चाहते थे जहां structs के साथ कुछ,
उदाहरण के लिए, कि कई लपेटता एक साथ मूल्यों और बनाता है
यह वास्तव में आसान चीजों के आसपास पारित करने के लिए।
एक वस्तु जावास्क्रिप्ट में है कि जब।
>> यह याद रखना महत्वपूर्ण है मैं वस्तुओं लिपटे का कहना है कि जब
एक साथ मूल्यों के कुछ नंबर, कार्य भी कर रहे हैं कि
कार्यों कर सकते हैं जिसका अर्थ है कि मूल्यों, यह भी एक जावास्क्रिप्ट वस्तु के अंदर हो।
और महत्वपूर्ण बात यह है कि कारण है, कि अक्सर हम जबकि
एक पद्धति को कॉल के बारे में सोच है कि एक वस्तु पर
दूसरे से एक लोकप्रिय शब्द का लोकप्रिय वस्तु उन्मुख भाषाओं,
अंतर यह है कि यहां यह है कि एक विधि जावास्क्रिप्ट में है कि सभी को
एक मूल्य एक वस्तु के अंदर संग्रहित है कि संभवतः कुछ action-- करता है
अंदर कर रहे हैं कि अन्य मूल्यों का उपयोग उस वस्तु की, लेकिन जरूरी नहीं कि।
तो तुम मुझे एक स्थिति की कल्पना कर सकते हैं एक पागल रास्ते से एक छोटा सा में लगता है,
आप एक की एक विधि कहा जाता है, जहां उदाहरण के लिए, किसी अन्य वस्तु पर आपत्ति।
इसलिए, यह है कि रास्ते में कायरता एक छोटा सा है।
>> और तुम भी तरीकों को बदल सकते हैं एक वस्तु के साथ जुड़े रहे हैं
कि विधि एक बताए द्वारा जो भी नया कार्य,
दूसरे से बहुत अलग वस्तु उन्मुख भाषाओं, जहां
हम एक वस्तु की घोषणा एक बार और यह इन्स्तांत,
हम कर रहे हैं कि तरीकों को बदल नहीं सकते अब उस वस्तु के साथ जुड़े।
तो यह है कि बहुत अलग है।
कूल।
>> यहाँ तो सबसे पहले, एक उदाहरण है, कार्रवाई में एक वस्तु की।
यह कहा जाता है क्या है एक सामान्य वस्तु, जो
यह कोई भी नहीं है कि इसका मतलब है विशेष रूप से नाम, एक वर्ग के पास नहीं है
यह मूल्यों के कुछ लपेटकर है।
और लग रहा है कि जिस तरह से हम है, है घुंघराले के इस बाहरी जोड़ी यहां ब्रेसेस
जावास्क्रिप्ट इस बात का संकेत है कि और इस एक वस्तु है, कहते हैं।
इसके अंदर मूल्यों प्रत्येक मूल्यों के अंदर हैं
वस्तु की कि ऐसा करना चाहिए एक साथ लिपटे हो।
और उस वस्तु के अंदर, हम तो, कुंजी मान जोड़े
कुंजी का नाम है, जहां वस्तु के अंदर मूल्य की,
और अन्य side-- पेट के here-- विपरीत
वास्तविक मूल्य है कि संग्रहित किया जाना चाहिए।
>> तो आप हम एक है कि यहाँ देखें कुंजी मान सैम के साथ fn कहा जाता है,
एक अल्पविराम के द्वारा पीछा किया, अगले प्रवेश पर कह रही है।
तब एल.एन. नामक एक कुंजी, हरे रंग का एक मूल्य के साथ,
एक अल्पविराम के द्वारा पीछा किया, ", प्रिंट 'के बाद
एक समारोह के मूल्य दिया जा रहा है जो कि कोड की इस पंक्ति में क्या करने जा रहा है।
एक कदम वापस ले चलते हैं और यहाँ पर क्या हो रहा है खोल देना।
तो यह थोड़ा थोड़ा जटिल है और हम कुछ नया देख रहे हैं
पहली बार।
"इस" कीवर्ड नई बात है हम यहाँ देख, और यह क्या करता है, कर रहे हैं
है, वर्तमान को संदर्भित करता है ठीक है, दायरे में वस्तु?
इसलिए हम यह कहना है जब सभी तरह वापस बताते हैं
इस पूरे object-- को हम this.fn करते हैं,
हम सभी तरह वापस जाने के लिए जा रहे हैं इस उद्देश्य के लिए, एफ एन मूल्य के लिए जाना
और सैम मिलता है, यह सभी तरह से खींच पीठ, यहाँ यह छड़ी है, और फिर आगे बढ़ने।
>> दर्शकों: पुनर्प्राप्ति के साथ तो है, कि क्योंकि पैरामीटर का किया
परिभाषा?
सैम ग्रीन: सवाल था तो, है पुनर्प्राप्ति क्योंकि पैरामीटर का किया
परिभाषा?
हाँ, बिल्कुल।
क्या है, यहाँ होने जा रहा है इस डॉट, जावास्क्रिप्ट के लिए कहते हैं
ठीक है, मैं कुछ मूल्य हो रही है अपने आप से यह वस्तु से।
और फिर यह एक प्रविष्टि के लिए लग रही हूँ एफ एन कहा जाता है, और अगर यह पाता है,
यह यह सैम, इसलिए कि value-- वापस कर देंगे।
लेकिन मैं यह भी टाइप कर सकते यहाँ से परिभाषित नहीं किया गया है कि कुछ है,
और तब यह सिर्फ होगा undefined-- जो वापसी
एक बात यह है कि जावास्क्रिप्ट सकते है लाभ हो सकता है, जो करते हैं,
आप एक टाइपो बनाने लेकिन अगर यह also-- है यह अजीब त्रुटियों में परिणाम कर सकते हैं।
तो यह सिर्फ खोजने की कोशिश करेंगे आप पाते हैं यह बताने के लिए जो कुछ भी
और यह करने के लिए नहीं जा रहा है यह पता नहीं चलता है, तो शिकायत करते हैं।
यह सिर्फ मैं नहीं था, कह देंगे यह मिल जाए, और फिर आगे बढ़ने।
तो यह अपरिभाषित किया जाएगा प्लस खाली, प्लस अंतिम नाम।
हाँ।
और फिर हम देख सकते हैं कि यदि हम तब जाकर access-- सका
और हम कोष्ठकों साथ tf.print () कहते हैं।
ऐसा लगता है कि प्रिंट फोन करने के लिए जा रहा है कोई तर्क के साथ समारोह, है ना?
लेकिन अगर हम सिर्फ इतना कहा tf.print () अर्धविराम, कोष्ठकों के बिना,
किया होता है कि सभी खींच है मूल्य से समारोह बाहर,
लेकिन वास्तव में यह नहीं कहा जाता।
कूल।
ह्यूग ज़ैब्रिस्की: चाहिए हम एक वस्तु बनाने के लिए?
सैम ग्रीन: यकीन है, चलो करते हैं।
इसलिए मैं इस स्थानांतरित कर सकते हैं दिलासा देने के लिए उदाहरण है।
हम मैं एक वस्तु है कि कल्पना कर सकते हैं।
तो यह एक साधारण वस्तु है।
यह दो में शामिल है कि एक वस्तु है दो कुंजी के साथ मूल्यों, दो कुंजी मान
जोड़े।
तो मैं तो संग्रहीत मूल्य का उपयोग कर सकते हैं x.x1 कर रही द्वारा इस वस्तु के अंदर,
उदाहरण के लिए, और मैं एक वापस मिलता है।
इसी तरह, x.x2, कि मूल्य वापस मिलता है।
>> और अब वास्तव में अच्छी बात मैं कर सकता है, वास्तव में इस उद्देश्य के लिए कुछ जोड़ने
मैं इसे बनाने के बाद।
तो तुम चलो, कल्पना कर सकते हैं मैं एक समारोह है कहना।
>> ह्यूग ज़ैब्रिस्की: आप -दर्ज शिफ्ट करना है।
>> सैम ग्रीन: ओह, यह कष्टप्रद है।
यह क्या पसंद नहीं आया?
ओह।
ये रहा।
कूल।
>> इसलिए मैं अभी बनाया है इस समारोह में, एफ, कि
चालू करने के लिए जाना जा रहा है वस्तु और प्रिंट this.x1।
तो मैं बस द्वारा च कॉल ही है, कुछ भी नहीं हो रहा है
कोई X1 है क्योंकि वहाँ, ठीक है, ऐसा करने के लिए यह जिक्र है वस्तु में क्षेत्र।
लेकिन, मैं तो x.f = च, और कहते हैं कि अगर मैं x.f () कहते हैं, मैं वापस 1 पाने के लिए जा रहा हूँ।
यही कारण है कि च समारोह अब है वस्तु एक्स के साथ जुड़े,
एक कुंजी कहा जाता X1 है जो मान 1 के साथ जुड़े,
हम this.x1 फोन तो, जब यह है इसके लिए क्या देख रही है खोजने के लिए जा
और एक मूल्य के प्रिंट आउट करने में सक्षम हो।
तो यह है कि सिर्फ एक उदाहरण है पागल बातें की तरह का
आप जावास्क्रिप्ट में वस्तुओं के साथ कर सकते हैं।
>> तो यह है कि संस्करण था जेनेरिक संस्करण है, जिसका अर्थ
हम इस का उपयोग कर एक वस्तु बना लिया है कि , संकेतन ब्रेस संकेतन कोष्ठक
rather-- और है कि काम हम सिर्फ चाहते हैं
एक विशेष वस्तु का एक उदाहरण है, लेकिन क्या हम एक से अधिक करना चाहते हैं
एक ही तरह के?
और लगता है कि जवाब सवाल यह है, बातें कर रहे हैं
के रूप में अच्छी तरह से जावास्क्रिप्ट में कक्षाओं का आह्वान किया।
हम एक समारोह बना सकते हैं आरंभीकरण के कुछ प्रकार करता है
एक विदेशी वस्तु के लिए, और हम, जैसे कह सकता हूँ
नाम तो मेरे class-- पुन: प्रयोज्य object-- की
यह सेट अप है कि समारोह के बराबर होती है।
तो यह बराबर होगा क्या के लिए एक वस्तु पैदा कर रही है कि
बस की तरह होगा, घुंघराले गले लगा, एसटीआर, पेट,
यह एक स्ट्रिंग है, अर्धविराम, घुंघराले ब्रेस।
यही कारण है कि सामान्य हो जाएगा हम से प्रारंभ वस्तु,
एक अंतर पर होने के साथ अगले लाइनों हम, एक प्रोटोटाइप बनाने के जो
यह एक डिफ़ॉल्ट कुंजी है इसका मतलब है कि हम अपने उद्देश्य के लिए जोड़ है कि
यहां सूचीबद्ध मूल्य है।
मतलब, कि मैं एक नया बनाते समय इस MyClass वस्तु का उदाहरण,
इसके अंदर का पूर्व का निर्माण किया जा रहा है यह एक मूल्य एसटीआर कहा जाता है और एक और मूल्य
है, जो कहा जाता myPrint, जा रही एक समारोह हो।
भयानक।
>> अच्छा है।
तो आखिरी बात करने के लिए जावास्क्रिप्ट बारे में क्या कहना
क्या इसके लिए वास्तव में उपयोगी है वह यह है कि अतुल्यकालिक संचालन कहा जाता है।
अतुल्यकालिक साधन है कि हम उस कुछ ऑपरेशन के लिए इंतजार कर सकते हैं
हम आगे बढ़ने से पहले पूरा करने के लिए हम इंतजार करते हुए पर है, लेकिन पर स्थानांतरित
और फिर कुछ पर बाद में होता है।
और मैं उस से क्या मतलब है आप, है एक स्थिति जहां कल्पना कर सकते हैं
आप एक अनुरोध के लिए भेज कहीं न कहीं कुछ वेब सर्वर,
और इसे वापस भेजने के लिए जा रहा है डेटा के कुछ बड़ा हिस्सा है, है ना?
और अपने उपयोगकर्ता में रुक सकता है इस बीच लगता है कि ऐसा करने के लिए,
और कुछ भी नहीं हो सकता है उस समय चल रहा है।
लेकिन यह है कि एक महान डिजाइन है, सही नहीं है?
आप वेब पेज फ्रीज करने के लिए नहीं करना चाहती।
क्या उपयोगकर्ता के लिए चाहता है एक ड्रॉप-डाउन मेनू पर क्लिक करें?
यह एक महान डिजाइन पैटर्न नहीं है।
इसके बजाय, मूल रूप से क्या जावास्क्रिप्ट का कहना है, करता है
ठीक है, asynchronously इस ऑपरेशन करते।
इसलिए पसंद है, पृष्ठभूमि में इंतजार, और फिर ऑपरेशन किया जाता है, जब
कॉलबैक फोन function-- कुछ समारोह कॉल,
कि कुछ action-- संकेत करने के लिए करते हैं हम अंत तक के लिए इंतजार कर रहे थे आपरेशन
खत्म हो गया।
और सुपर शक्तिशाली है कि कारण है, हम कुछ करने के लिए एक तर्क पारित कर सकते हैं,
कुछ करते हैं, और फिर इंतजार कुछ होने के लिए।
फिर, कुछ है कि एक बार , हम एक कॉलबैक कॉल कर सकते हैं पूरा करता है।
यह सुविधा देता है ऐसा इसलिए है क्योंकि वास्तव में आसान है अमेरिका, वेब ऑडियो एपीआई के साथ बातें करते हैं
उदाहरण के लिए, लोड एक तरह एक रिमोट सर्वर से ऑडियो फाइल
के लिए प्रतीक्षा करने के लिए बिना पूरे ऑडियो फ़ाइल लोड करने के लिए,
वास्तव में जो होगा प्रयोक्ता अनुभव के लिए बुरा नहीं है।
कूल।
>> अंतिम जोड़ी के बारे में नोट डीबगिंग, इस के बाद से
आप क्या करने के लिए जा रहे एक बात है अपनी परियोजना के हिस्से के रूप में, गारंटी।
मैं JavaScript कंसोल उल्लेख किया है।
यह एक सुपर उपयोगी सुविधा है सभी आधुनिक ब्राउज़रों की,
और हम वास्तव में प्राप्त करने के लिए प्रोत्साहित अपने कंसोल का उपयोग कर आराम,
आप जावास्क्रिप्ट पर अच्छा प्राप्त करना चाहते हैं।
इसके लिए सुपर आसान है डीबगिंग, लेकिन यह भी है
लगाना के लिए वास्तव में उपयोगी बाहर कैसे एक एपीआई का उपयोग करने के लिए।
यह वास्तव में के लिए अनुमति देता है आसान प्रयोग
कुछ प्रकार के बिना कोड, और फिर यह संकलन।
आप उन सभी चरणों करने की जरूरत नहीं है।
तुम बस लिख सकते हैं एक लाइन में कुछ कोड,
और फिर पर तत्काल प्रतिक्रिया प्राप्त कोड की है कि लाइन किया जाए या नहीं
बहुत ही आसान worked--।
>> और यह भी, सिर्फ एक तकनीकी note-- JavaScript कंसोल एक उदाहरण है
कि, आरईपीएल आर ई पी एल है तो एक REPL-- की, पढ़ने के लिए खड़ा है, जो, का मूल्यांकन
प्रिंट पाश।
आप कुछ सामान टाइप करने के लिए जा रहे हैं में, यह आप में टाइप क्या पढ़ा हूँ,
यह यह मूल्यांकन होगा, और यह प्रिंट हूँ उत्पादन, और फिर इसे फिर से शुरू करेंगे।
यही कारण है कि आप तेजी से अंदर जाने की अनुमति देता है हलकों वास्तव में अच्छा है, जो पुनरावृति।
>> मैं इस note-- वास्तविक पिछले अनुमान हाँ, वास्तविक पिछले नोट है।
कैसे हम वास्तव में जावास्क्रिप्ट का उपयोग करें?
तो पहले, हम आयात कर सकते हैं यह एक स्क्रिप्ट टैग का उपयोग
एक HTML के ऊपर या नीचे file-- कहीं भी एक HTML फ़ाइल के अंदर,
वास्तव में।
और एक स्क्रिप्ट टैग के भीतर, देखते हैं जावास्क्रिप्ट के आयात के दो उप-तरीके।
पहले एक होने से है अलग जावास्क्रिप्ट फ़ाइल
हम अपनी संपूर्णता में आयात, या कि स्क्रिप्ट की तरह कोड का एक क्षेत्र होने से
फिर शुरू करने के लिए और बैकस्लैश स्क्रिप्ट समाप्त करने के लिए।
और फिर हम सिर्फ लिखने एचटीएमएल फाइल के अंदर जावास्क्रिप्ट।
उन दो तरीके हैं।
आप HTML के अंदर यह नहीं हो सकता।
दर्शकों: एक दूसरे से बेहतर है?
सैम ग्रीन: सवाल था, क्या यह दूसरे से बढ़िया है।
तो, हाँ, एक कोडन शैली अभ्यास के रूप में, और यह भी एक डिजाइन अभ्यास की तरह है।
दो कारण हैं यही कारण है कि यह बेहतर हो सकता है।
यह पहली बार अपने कोड एक बनाता है बहुत अधिक पठनीय अपने HTML की अगर सब
है एक ही स्थान में, अपने सीएसएस सब में है एक और जगह है, अपने जावास्क्रिप्ट के सभी
एक तीसरे स्थान पर है।
है ना?
मुझे लगता है हम पहले से ही बात करनी चाहिए लगता है sections-- तरह से इसके बारे में CSS-- क्या
कि है- और यह हो जाता है अक्सर एक और फाइल में।
तो, यहाँ अवधारणा के समान तरह।
आप यह भी सोच सकते हैं कि जावास्क्रिप्ट एक से अधिक पर पुन: उपयोग किया जाएगा
एचटीएमएल पेज, या शायद एक महान कई HTML पृष्ठों,
और कहा कि जावास्क्रिप्ट होने एक में फिर फैक्टर
आप आयात कर सकते हैं कि फ़ाइल एक से अधिक जगह में
कोड की अनुमति देता है जिस तरह से अधिक पोषणीय।
आप एक बनाने की कल्पना कर सकते हैं जावास्क्रिप्ट को बदलने
और होने इसे बदलने के लिए 100 विभिन्न फाइलों में।
और इसके बजाय हम सिर्फ इसे बदल सकते हैं जिस तरह से अधिक शक्तिशाली है, जो एक में।
मैं आपके सवाल का जवाब?
कूल।
>> हम यह भी सांत्वना में टाइप कर सकते हैं हम पहले उल्लेख किया है।
और फिर, एक आखिरी note-- ऑडियो में बनाया गया है वेब,
आप कुछ भी लोड करने की आवश्यकता नहीं है।
कूल।
किसी भी सवाल कर रहे हैं, आप की क्या ज़रूरत है जावास्क्रिप्ट के बारे में किसी भी अधिक प्रश्न,
हम आगे बढ़ने से पहले?
>> दर्शकों: [अश्राव्य]
सैम ग्रीन: ठीक है, शांत।
तो अब वह एपीआई के बारे में बात करने के लिए जा रहा है।
>> ह्यूग ज़ैब्रिस्की: कूल।
धन्यवाद, सैम।
>> सैम ग्रीन: यकीन है।
ह्यूग ज़ैब्रिस्की: बहुत बढ़िया है, इसलिए हम जावास्क्रिप्ट से आगे बढ़ना होगा।
तो हम में से कुछ के बारे में बात की है जावास्क्रिप्ट का अनिवार्य है,
और उन चर, कार्य कर रहे हैं, वस्तुओं, चर के रूप में काम करता है,
अतुल्यकालिक लोड हो रहा है।
ये है कि आप होगी सभी बातें कर रहे हैं आप वेब ऑडियो उपयोग के रूप में देखते हैं।
तो हम सिर्फ बात करने के लिए जा रहे हैं एक उच्च स्तर पर पहली बार इसके बारे में।
>> यह एक एपीआई है, तो यह कुछ है सैम के रूप में कहा कि, बनाया गया है,
सही जावास्क्रिप्ट में आप कंसोल में उपयोग करें।
और यह सिर्फ सी की तरह ++ कोड वास्तव में है कि वास्तव में क्रोम में बनाया गया है
और फ़ायरफ़ॉक्स, और इन ब्राउज़रों के सभी।
वेब के साथ मुख्य विचार तो ऑडियो है कि तुम्हारे पास है
ऑडियो की पाइपलाइन के इस तरह, है ना?
तो अपने ऑडियो डेटा किसी न किसी रूप में आता है।
>> तीन मुख्य forms-- की तरह कर रहे हैं आप थरथरानवाला है, जो
एक साइन लहर पैदा करता है, कोसाइन लहर हम जानते हैं कि कैसे काम करता है यह देखने के लिए जा रहे हैं।
एक और बहुत ही सामान्य से एक है, जाहिर है, एक एमपी 3 है।
इसलिए हो सकता है आप के साथ शुरू एक गाना है, और फिर आप
कुछ छानने करना चाहते हैं कि और उत्पादन करने के लिए
कि that-- एक संभावित स्रोत हो सकता है।
और फिर एक बहुत अच्छा एक माइक्रोफोन है।
तो अगर आप कुछ बहुत उपयोग कर सकते हैं जावास्क्रिप्ट में बुनियादी कॉल
तक पहुँच पाने के माइक्रोफोन, और यदि ऐसा है तो आप
एक app बनाना चाहते थे एक पिच डिटेक्टर की तरह,
उदाहरण के लिए, उस में लेता है अपनी आवाज और बाहर आंकड़े
कि करने के लिए pitch-- बहुत आसान तरीका है।
आप बस की तरह इसे पढ़ सकते हैं में, आवृत्ति यह पता लगाने,
और फिर उत्पादन एक नंबर।
इसलिए हम चाहते हैं कि कैसे काम करता है, के रूप में अच्छी तरह से करेंगे।
>> गंतव्य मूल रूप से है जहां ऑडियो डेटा उत्पादन है।
तो आम तौर पर, इस तरह से है अपने लैपटॉप वक्ताओं।
अन्य विकल्प की तरह हैं एक ScriptProcessorNode--
हम एक में नोड्स के लिए मिल जाएगा second-- लेकिन मूल रूप से,
या तो आप ध्वनि बाहर डाल रहे हैं आपके कंप्यूटर के माध्यम से वक्ताओं के माध्यम से,
या आप की तरह तो, यह रिकॉर्डिंग कर रहे हैं आप ऑडियो डेटा के रूप में यह भंडारण कर रहे हैं।
तो शायद किसी को बनाता है संगीत अपने अनुप्रयोग में और उसके बाद
आप और हो सकता है जैसे कि रिकॉर्ड करना चाहते हैं example-- के लिए, soundcloud के लिए निर्यात
कि ऐसा करने के लिए एक रास्ता होगा।
सभी मज़ा सामान, हम के बारे में बात करेंगे, जो
इन दो बिंदुओं के बीच होता है, हम संगीत में लोड जहां
और यह तो उत्पादन।
>> तो मैं पांच के बारे में बात करने जा रहा हूँ एक दूसरे में ऑडियो उत्पादन के चरणों।
हम इस बात को बुलाया है एक AudioContext, जो
हम यहाँ देखते इस छोटे आवरण है।
अगर हम असल में क्या है- AudioContext अब ठीक JavaScript कंसोल के लिए जाना है,
हम अभी बना सकते हैं।
आरईपीएल का सिर्फ एक उदाहरण है, है ना?
पढ़ाई चल रही थी, मूल्यांकन, और यह प्रिंट।
>> AudioContext एक वैश्विक स्थिति है।
यह है, यह एक वस्तु एक संरचना है है यहाँ है, यह और जानकारी रखता है
चीजों के बारे में पर जा रहे हैं ऑडियो के लिए संबंधित स्क्रीन पर।
एक उदाहरण वर्तमान समय है।
यह आप संख्या बताता है सेकंड की, बहुत ठीक,
वेब पेज के बाद से भरा हुआ है।
तो यह एक बहुत उपयोगी है आप उपयोग कर सकते हैं कि थोड़ा संपत्ति।
यह only-- पढ़ा है कि मैं वास्तव में लगता है कि आप इसे एक मूल्य निर्धारित करने की कोशिश कर सकते हैं।
यह आपको यह सेट बताता हूँ, और फिर आप इसे प्रिंट
again-- यह वास्तव में काफी काम नहीं किया।
तो वहाँ केवल पढ़ने के लिए कर रहे हैं जावास्क्रिप्ट में संपत्ति।
यदि यह वास्तव में उपयोगी है आप की तरह सिंक्रनाइज़ किए जा रहे हैं
अलग से एक बहुत कुछ जानकारी, जब आप कर रहे हैं
एक तरह से विभिन्न ध्वनियों निभा रहा है।
>> एक और सच में उपयोगी एक संदर्भ गंतव्य है।
आप रुचि रखते हैं, तो निश्चित रूप से, हो सकता है, अपने ही सांत्वना सही पर इस कोशिश
अब।
तो यह एक AudioDestinationNode है।
असल में यह है क्या कहते हैं, उत्पादन कहाँ जा रहा है?
तो यहाँ दो असली विकल्प हैं।
आमतौर पर डिफ़ॉल्ट सिर्फ अपने वक्ताओं है,
इसलिए AudioDestinationNode मूल रूप से बस का कहना है
ध्वनि करने के लिए शून्य outputs के देखते हैं में आ रहा है, वक्ता के लिए भेजा।
तो आम तौर पर, यदि आप नहीं करते उस के साथ खेलने के लिए है।
आप वास्तव में उपयोग करने में रुचि रखते हैं रिकॉर्डिंग के लिए ScriptProcessorNode,
निश्चित रूप से मुझे एक गोली मार ईमेल है कि बाद में क्योंकि
एक छोटे से अधिक जटिल है।
लेकिन आम तौर पर, आप बस की तरह कर रहे हैं किसी न किसी रूप में ध्वनि outputting की।
बहुत अच्छा, हम यहाँ वापस कूद जाएगा।
दर्शकों: मैं माफी चाहता हूँ।
ह्यूग ज़ैब्रिस्की: हाँ।
दर्शकों: मैं आप बात करने के लिए कहा पता है आप के लिए बाद में रिकॉर्डिंग के बारे में।
आपको लगता है कि प्रो उपकरण के साथ इंटरफेस कर सकते हैं?
>> ह्यूग ज़ैब्रिस्की: प्रो उपकरण के साथ?
चलो देखते हैं।
मुझे नहीं लगता।
तो ग्राहक के बीच जा रहे हैं, जो जावास्क्रिप्ट है
कंसोल, और अपने वास्तविक कंप्यूटर, आम तौर पर है
तरह है कि कुछ की सीमा बंद है, अगर आप
तरह the-- के स्वभाव से, होगा यह एक डिजाइन बात की तरह है
लेकिन आप अलग ब्राउज़र रखने की कोशिश उपयोगकर्ता की वास्तविक कंप्यूटर से।
आम तौर पर, केवल एक चीज आप करने में सक्षम हो पहुँच माइक्रोफोन या कैमरा है।
आप करने में सक्षम नहीं हो, मैं मुझे नहीं लगता कि, प्रो उपकरण का उपयोग करें।
हालांकि, अगर आप बनाया है प्रो उपकरण में एक ट्रैक,
आपको लगता है कि लोड कर सकता है, कि निर्यात यहाँ में, उदाहरण के लिए, यह फिल्टर,
प्रक्रिया है कि, और एक में है कि रिकॉर्ड ऑडियो Destination-- या एक क्षेत्र no--
प्रोसेसर नोड।
वहाँ से और फिर, तुम सकता है , soundcloud करने के लिए आपको लगता है कि निर्यात
एक ईमेल में भेज सकता है, या जो कुछ भी आप वहां से पसंद है।
>> लेकिन एक मामूली बाधा की तरह नहीं है अपने कंप्यूटर पर संगीत बनाने के बीच
और ऑनलाइन संगीत बना रही है।
>> सैम ग्रीन: और है कि इस एपीआई के लिए अद्वितीय नहीं।
यह क्रोम की एक सुरक्षा सुविधा है, और मैं हर दूसरे आधुनिक ब्राउज़र लगता है।
ब्राउज़र आत्म निहित है।
तो उदाहरण के लिए, एक वेब पेज नहीं कर सकते ध्वनि चालू करने के लिए जावास्क्रिप्ट का उपयोग
उदाहरण के लिए अपने वक्ताओं, पर पर।
या यह आपके कंप्यूटर को बंद नहीं कर सकते।
और कोई मध्यवर्ती मतलब नहीं है उन दो चीजों के बीच, ठीक है,
इसलिए या तो आप एक है पूरा अमूर्त,
या आप ऊपर खुला देने का सुरक्षा दोष
बुरे इरादों के साथ एक प्रोग्रामर करना जो कुछ भी वे अपने लैपटॉप के साथ चाहते हैं।
क्रोम आत्म निहित है और यही कारण है।
>> ह्यूग ज़ैब्रिस्की: हाँ।
समझ आया?
ठंडा ठंडा।
मैं बस करने के लिए जा रहा था एक का एक उदाहरण दिखा।
इस रूप में बहुत ज्यादा है जहाँ तक आप संदर्भ में, मिल के रूप में
के उपयोगकर्ता के कंप्यूटर तक पहुँचने।
यदि आपके पास एक यूएसबी कीबोर्ड, में खामियों को दूर किया आप वेब बुलाया कुछ का उपयोग कर सकते हैं
मिडी एपीआई, जो हम नहीं करेंगे वास्तव में यहाँ के बारे में बात करते हैं,
लेकिन यह है कि एक और एपीआई है फिर कम से कम Chrome-- में बनाया गया है,
हम Chrome-- प्यार यही कारण है मैं, Firefox या सफारी लगता है
इस के लिए एक आसान बात है google-- अलग ब्राउज़रों
जिसके लिए अलग अलग समर्थन एपीआई वे लागू कर दिया है।
अगर तुम चाहते थे लेकिन एक कुंजीपटल में प्लग करने के लिए और उस जानकारी के साथ काम करते हैं,
प्रकार के कीबोर्ड भेजने कंप्यूटर को खत्म करने के बारे में जानकारी
और फिर, इस एपीआई कि ऑनलाइन का उपयोग आपको लगता है कि काम किया जाना चाहते हैं, जहां है।
>> कूल।
ठीक है।
तो, जल्दी से यहाँ पर घूम रहा है।
कैसे हम समय पर कर रहे हो?
>> स्पीकर 1: के बारे में 15।
>> ह्यूग ज़ैब्रिस्की: 15 मिनट छोड़ दिया है?
अच्छा ठीक है।
तो हम यहाँ आगे दौड़ होगी।
>> तो बुनियादी तौर पर, के मुख्य बिंदु एक पाइप लाइन के रूप में इस के बारे में सोच
है कि पाइप लाइन में हर कदम ऑडियो नोड्स की एक श्रृंखला है।
हमारे स्रोत, हम कहते हैं, एक थरथरानवाला है।
हम एक थरथरानवाला नोड बनाने की जरूरत है।
और कहा कि बस की तरह है थोड़ा function-- की
और वे सब बाहर आधारित कर रहे हैं यहां ऑडियो संदर्भ की।
>> दर्शकों: जब यह कहा थरथरानवाला, कि क्या मतलब है
यह वास्तव में सचमुच से हो रहा है आगे और पीछे दो अलग-अलग ध्रुवों?
>> ह्यूग ज़ैब्रिस्की: नहीं, यह पसंद है एक डिजिटल प्रतिनिधित्व।
यह वास्तव में सी ++ में लागू किया है।
मैं वास्तव में चश्मा पता नहीं है यह वास्तव में लागू कैसे की,
लेकिन इस सब के बाइनरी डेटा के रूप में काम कर रहा है।
असल में, हाँ।
यही कारण है कि मैं कर सकता है, कह रही हो जाएगा वास्तव में, यदि आप रुचि रखते हैं,
मैं तुम्हें एक छोटे से अधिक भेज सकता है कैसे waveforms के बारे में जानकारी
एक डिजिटल स्वरूप होने के लिए रखा जाता है।
अच्छा ठीक है।
>> इसलिए हम एक साइन की तरह एक स्वर पैदा कर रहे हैं शायद, वेव या ऐसा कुछ
440 हर्ट्ज।
हम एक थरथरानवाला पैदा करते हैं।
हम मात्रा निर्धारित करने के लिए चाहते हैं, हम एक GainNode करने के लिए कुछ भी कनेक्ट,
जो हम .creategain साथ कर सकता है।
यही कारण है कि अपने मात्रा निर्धारित करता है।
आप किसी भी पर कि पारित कर सकते हैं options-- अच्छी तरह से अन्य की,
इसलिए एक ऑडियो बफर स्रोत नोड जहां तुम हो सकता है
आप में भरी हुई है कि एक एमपी 3 की दुकान।
>> Biquad फिल्टर को छानने के लिए अगर है तुम बाहर सभी का आधार ले जाना चाहता हूँ
इस तरह एक गाना है, या कुछ और।
भगवान आप लेना चाहते हैं न करे एक गीत के बाहर का आधार।
और AudioDestination नोड, फिर से, जैसे हमारे अंतिम रूप दिए जाने कहाँ है।
आप देखने में कभी रुचि रखते हैं सब अलग संभव विकल्पों,
सिर्फ टैब पर जाएं और जाने स्वत: पूर्ण आते हैं।
तुम बनाने के लिए करते हैं, तो आप सब देख लेंगे आप बना सकते हैं कि अलग अलग चीजें हैं।
आप गतिशील बना सकते हैं स्क्रिप्ट प्रोसेसर,
मैं भी क्या पता है कि नहीं चैनल विलय मिश्रण के लिए है,
और चैनल splitters और यह सब।
कूल।
>> तो यह सिर्फ एक है एक पाइप लाइन का उदाहरण है।
इसलिए हम तीन स्रोतों में आ रहा है।
हो सकता है कि इन waveforms हैं, शायद इन MP3s हैं।
एक एक के माध्यम से हो रहा है फिल्टर, एक और एक है
विकृत हो रही एक और किसी के पैनिंग छोड़ दिया और सही।
आप हर तरह की बातें कर सकते हैं और वे सब एक साथ चारों ओर मिश्रित मिल
और फिर बाहर ऑडियो आता है गंतव्य के रूप में अंत में।
यह वही है जो अधिक का एक उदाहरण है जटिल वेब ऑडियो कोड की तरह लग रहा है।
आप इन सभी बना रहे हैं विभिन्न वस्तुओं सही here--
मुझे इस बात का यकीन नहीं है।
नहीं, यह ज़ूम में नहीं है।
ठीक है।
>> सैम ग्रीन: आप नियंत्रण, स्क्रॉल-अप करते हैं।
ह्यूग ज़ैब्रिस्की: नियंत्रण Scroll--
सैम ग्रीन: नहीं, नहीं।
Control--
>> ह्यूग ज़ैब्रिस्की: ओह, नियंत्रण, स्क्रॉल?
पकड़ लिया, ओह।
हाँ।
नहीं, नहीं, वाह।
ठीक है।
मैं उसे नहीं करूँगा।
>> तो हाँ, इस में पहली यहां खंड, जैसा कि आप देख
हम इन सभी विभिन्न बना रहे हैं संदर्भ से बाहर नोड्स।
हम सिर्फ उन्हें piecing रहे एक साथ दूसरे भाग में
कनेक्ट नामक इस समारोह से।
यह एक बहुत महत्वपूर्ण है वेब ऑडियो में कार्य करते हैं।
आप एक बार किया है यह सिर्फ मतलब है एक नोड में ध्वनि के साथ कुछ है,
अगले नोड के लिए उस पर से गुजरती हैं।
इसलिए हम स्रोत है, यह विश्लेषक को जोड़ता है,
विश्लेषक, इसके साथ कुछ भी करता है यह, इतने पर विरूपण करने के लिए चला जाता है, और
और गंतव्य के लिए यहीं तल पर।
कूल।
ठीक है, तो हम पर जाने से रखेंगे।
>> pipeline-- फिर, इन सबसे आम पाइपलाइनों हैं,
इसलिए हम की तरह इन सभी चीजों के बारे में बात करते हैं विरूपण, panning, यह सब सामान।
आप वास्तव में रुचि रखते हैं बातें प्रो उपकरण का उपयोग करने में,
उन शायद आप ब्याज।
यदि नहीं, शायद तुम सिर्फ ध्वनि खेलने के लिए चाहते हैं,
या शायद तुम सिर्फ करना चाहते हैं ध्वनि पर मात्रा निर्धारित किया है।
उन दो सबसे आम प्रकार हैं ऑडियो उत्पादन में पाइपलाइनों की।
>> फिर, तरीके आप इसे ले जा सकते हैं एक oscillator-- तो, ​​चलो के रूप में
एक सही है कि यहाँ का डेमो करते हैं।
तो हम एक बनाने के लिए जा रहे हैं यहाँ सरल ऑडियो संदर्भ,
और उस से हम जा रहे हैं हमारे थरथरानवाला बनाने के लिए।
वह यह है कि तो, फिर से, हम सिर्फ रहे हैं थरथरानवाला बनाएं फोन करने के लिए जा रहा है।
हम पर एक आवृत्ति सेट करने के लिए जा रहे हैं 440 हर्ट्ज, सभी की पसंदीदा है, कि।
तो फिर हम गंतव्य के लिए कि कनेक्ट point-- वक्ता तो, जो है
संदर्भ गंतव्य।
अंत में, हम सिर्फ इतना कहना है, शून्य से शुरू अब से सेकंड, और हम ध्वनि है?
>> [बज]
>> ह्यूग ज़ैब्रिस्की: यहाँ हम चले।
यह सिर्फ एक साइन लहर है।
अच्छा ठीक है।
और फिर हम उस बंद कर देंगे।
>> दर्शकों: कहाँ था कि प्रतिक्रिया से आते हैं?
>> ह्यूग ज़ैब्रिस्की: प्रतिक्रिया?
ओह, शायद हमारे माइक्रोफोन।
आप इसे कैसे करते हैं तो हाँ, कि है।
और वास्तव में मैं था, यह आप रखा चल
आवृत्ति हो सकता था यह चल रहा है के रूप में मूल्य,
तो यह है कि चारों ओर खेलने के लिए एक मजेदार बात है।
कूल।
यही कारण है कि हमेशा पेश करने के लिए एक सुंदर से एक है।
>> सैम ग्रीन: हम नहीं हम उस के बारे में था लगता है?
ह्यूग ज़ैब्रिस्की: हाँ, कि एक बहुत बुरा एक है।
तो, बफर loading-- मैं एक दिखाता हूँ बहुत अंत में इस बात का उदाहरण है।
यही कारण है कि एक एमपी 3 लोड हो रहा है।
और माइक्रोफोन, तो आप सिर्फ एक समारोह का उपयोग ) (Navigator.getUserMedia बुलाया
उपयोगकर्ता के लिए उपयोग के अनुरोध करने के लिए कि जानकारी के लिए माइक्रोफोन।
>> यहाँ छान रही है, मैं हूँ सिर्फ इस से चलते रहो।
यह बहुत ही उच्च स्तर है लेकिन फिल्टर सिर्फ करने के लिए आप की अनुमति
>> [Beeping]
छनन भी आपको अनुमति देता है गुलाबी तरह चीजें बनाने के लिए
शोर, भूरे रंग के शोर, सफेद शोर।
आप शुद्ध शोर, बनाना चाहते हैं, जो कुछ लोगों के साथ आसपास गंदगी के लिए प्यार
आप वेब ऑडियो का उपयोग कर सकते हैं छानने कि क्या करना है।
>> ऑडियो Panning-- तो कल्पना आप एक खेल लिख रहे हैं
और आप ध्वनि करना चाहते हैं यह पसंद आ रहा है, की तरह लग सकता है,
परदे के पार शूटिंग, आप ऑडियो के पैनिंग उपयोग कर सकते हैं
शंकु के इस तरह बनाने के लिए, जो यह बहुत Mathy है like--,
लेकिन यह वास्तव में वास्तव में है शांत तुम यह काम मिलता है,
और कुछ अच्छा भी नहीं है इस पर ट्यूटोरियल मैं तुम्हें भेज सकते हैं।
असल में, आप की तरह कर सकते हैं की ध्वनि पैदा
एक 3 डी रास्ते में से कुछ चल रहा है।
आप एक डीजे दिलचस्पी नहीं है और अगर, आप कर सकते हैं मिश्रण शुरू करते हैं और लुप्त होती गीत पार।
>> यह सिर्फ कुछ बहुत ही बुनियादी है कोड, मैंने पहले किया था मूल रूप से क्या।
इस की मात्रा सेट थरथरानवाला, तो हम अपने थरथरानवाला बनाने
जो तरंग पैदा करता है।
हम अपने GainNode बनाने के लिए, हमारे आवृत्ति सेट,
और उसके बाद के लिए थरथरानवाला कनेक्ट तो मूल रूप से बदलता है जो GainNode,
कितना संकेत के माध्यम से की अनुमति दी है।
लेकिन वास्तव में, यह एक डिजिटल है बात यह है कि हाँ just-- अधिक है इसलिए।
यही कारण है कि वास्तव में क्या हो रहा है नहीं है, लेकिन लगता है कि वास्तविक जीवन में क्या होता है
बढ़त के साथ।
>> दर्शकों: --quantization मात्रा पैरामीटर की?
ह्यूग ज़ैब्रिस्की: क्षमा करें?
दर्शकों: यह एक है quantized मात्रा पैरामीटर?
ह्यूग ज़ैब्रिस्की: हाँ।
और यह मैं वास्तव में हूँ एक बात है मेरी जानकारी में कमी है,
कैसे लाभ एक डिजिटल स्तर पर काम करता है।
मैं वास्तविक साथ पता संकेत है, यह मूल रूप से है
को नियंत्रित करने के लिए कितना आप कर रहे हैं संकेत amplifying।
इसलिए।
मैं तुम्हारे बारे में और अधिक जानकारी भेज देंगे मैं वास्तव में उत्सुक होंगे कि, क्योंकि
इस बारे में अधिक पता करने के लिए।
लेकिन मूल रूप से मानकों को एक fold-- है, कर रहे हैं
जोर से signal-- और शून्य है कोई संकेत हैं, या आप किसी भी ध्वनि नहीं सुना होगा।
हम जानते हैं कि क्योंकि लिए डेमो समय छोड़ देंगे यह मैंने पहले किया था मूल रूप से क्या है।
और फिर, Context.Destination ऑडियो गंतव्य नोड है।
बहुत बढ़िया, ठीक है।
>> तो मैं एक त्वरित दो क़ौम क्या करने जा रहा हूँ।
कैसे हम समय पर कर रहे हो?
>> स्पीकर 1: के बारे में 10 मिनट।
>> ह्यूग ज़ैब्रिस्की: 10 मिनट?
महान!
भयानक।
>> इसलिए मैं जा रहा हूँ, पहले एक , यह मेरा पसंदीदा गीत कहा जाता है है।
तो यह सिर्फ एक है थोड़ा HTML जावास्क्रिप्ट।
हम दो बटन लिए जा रहे हैं पृष्ठ पर अपने पसंदीदा गाना खेल
और मेरा पसंदीदा गाना बंद करो।
मैं इस बदल देंगे।
>> दर्शकों: अपने माइक्रोफोन को कवर किया।
>> ह्यूग ज़ैब्रिस्की: हाँ।
और मैं यहाँ में भरी हुई है basically-- कि एक स्क्रिप्ट
और यह वास्तव में उपयोगी है एक एमपी 3 लोड करने के लिए,
तो यह सिर्फ बनाता है तेजी से MP3s तरह से लोड हो रहा है।
यह मूल रूप से सिर्फ एक आवरण है।
यह बस की प्रक्रिया बनाता है बहुत तेजी से MP3s में लोड हो रहा है,
अन्यथा आप HTTP अनुरोध का उपयोग कर रहे हैं एक तरह से हम क्या कर रहे थे जैसे
सर्वर के साथ सेट वर्तमान टुकड़े पर।
यह वास्तव में बदसूरत है आप यह करने के लिए नहीं करना चाहती।
>> तो इस आदमी, बोरिस Smus, एक सच में लिखा BufferLoader बुलाया उपयोगी छोटे से उपकरण।
तुम सब इसे पारित बस है संदर्भ, आप इसे एक list-- पारित
या, हाँ, यह जावास्क्रिप्ट में एक सूची है?
सैम ग्रीन: एक सरणी।
ह्यूग ज़ैब्रिस्की: ओह, यह है एक सरणी, यह सही है।
यह रास्तों की एक सरणी है अलग फाइल करने के लिए।
और फिर आप इसे एक समारोह से गुजरती हैं।
यह है कि हम बात कर रहे थे कॉलबैक है अतुल्यकालिक लदान के साथ के बारे में।
यही कारण है कि बुलाया जाएगा भरी हुई फाइलें एक बार।
और उस समारोह में जब कहा जाता है कि फ़ाइल की भरी हुई एक परिधि के रूप में लेता है
भरी हुई बफ़र्स की एक सरणी।
तो यह है कि यहां होता है।
असल में, BufferList है एक value-- होने जा रहा
या यह की एक सरणी होने जा रहा है सूचकांक में यह है जो लंबाई में से एक,
एमपी 3 के पूरे लोड फ़ाइल शून्य।
इसलिए जब मैं खत्म मैं क्या कर लोड हो रहा है मैं बस है
एक बफर स्रोत बना जो एक ऑडियो बफर स्रोत नोड है।
अगले कदम के लिए मैं में लोड है पूरा भरा हुआ बफर के रूप में source.buffer
BufferList-- से यह buffers-- का एक बहुत है
और फिर आपको लगता है कि ऑडियो कनेक्ट गंतव्य के लिए बफर।
तो क्या यह करने के लिए जा रहा है बस यूँ ही एमपी 3 डाल दिया जाता है
सीधे उत्पादन के माध्यम से, और इसे तुरंत शुरू
इस कॉल हो रही है पर।
>> कूल, तो चलो देखते हैं इस कार्रवाई में होती हैं।
मेरे [सुनाई] यहाँ, चलो देखते हैं।
तो मैं बस करने के लिए जा रहा हूँ एक मूल सर्वर शुरू करते हैं।
यही कारण है कि कुछ है कि क्या आप कर रहे हैं क्या करने की जरूरत
लोड हो रहा है फ़ाइलों के लिए अनुरोध कर रही है।
मैं एक बुनियादी सर्वर शुरू करने जा रहा हूँ।
यह मूल रूप से अपने पूरे है एक अभी लाइन में pset,
लेकिन यह सिर्फ शुरू हो रहा है पोर्ट 80/80 पर एक सर्वर।
इसलिए हम यहाँ पर जाना है, हम 80/80 लोड करने के लिए जा रहा है,
हम मेरा पसंदीदा गीत के लिए जाने के लिए जा रहे हैं।
मैं मारा तो अगर "खेल मेरी अब ठीक पसंदीदा गीत "
इसे लोड करने के लिए जा रहा है मेरी पसंदीदा गीत और it-- खेलने
तेजी में ईगल्स, "जीवन - [संगीत लेन "]
--which में "जीवन में होने वाला है ईगल्स द्वारा फास्ट लेन "।
अब, मैं बंद करो "हिट हो सकता है मेरी पसंदीदा गीत "और यह फिर से खेलना।
>> तेजी में ईगल्स, "जीवन - [संगीत लेन "]
>> और मुझे लगता है, क्योंकि सांत्वना देने के लिए खत्म हो जाना है, तो मैं यहाँ पर एक वैश्विक चर का इस्तेमाल किया
वास्तव में, इस मूल्य का यह ट्रैक रखने के लिए अब कंसोल में मान्यता प्राप्त हो जाएगा।
इसलिए यह मेरे लिए ऑटो बनाता है।
तो यह है कि अभी खेल क्या है, और मैं बस) (source.stop कॉल कर सकते हैं
उस पर।
ठीक है, तुम जानते हो क्या?
अभी तो तुम लोगों के बारे में सुना है इस song-- आप इस गीत को पहचान सकता है।
>> [संगीत - रिक एस्ले, "कभी नहीं वाली GIVE आप ऊपर"]
तेजी में ईगल्स, "जीवन - [संगीत लेन "]
अब हम सब Rickrolled किया गया है।
ठीक है, महान है, पर घूम रहा है।
कूल।
तो यह मूल रूप से एक उदाहरण है सिर्फ तुम एक एमपी 3 लोड कर सकता कैसे file--
तेजी में ईगल्स, "जीवन - [संगीत लेन "]
चार प्रकार यह खेलते हैं, और बंद करो और इसे शुरू करते हैं।
मैं एक बहुत अधिक किया जा सकता है [सुनाई]
>> मैं कोशिश करूँगा कि पिछले एक है, मैं एक [सुनाई] आपको दिखाता हूँ।
>> [संगीत बजाना]
>> यह तरह ogg.wave.mp3 है।
अगर मुझे सही याद मुझे लगता है, मैं .m4a के साथ कुछ मुद्दों में भाग लिया
लेकिन मैं इस बारे में निश्चित नहीं हूँ।
मैं mp3.wave-- लगता है
>> [संगीत - रिक एस्ले, "कभी नहीं वाली GIVE आप ऊपर"]
>> ठीक है अच्छा है।
मुझे लगता है कि नहीं कहना चाहिए था।
हैलो, वैसे भी।
इसलिए हम इस खुले हैं।
तो अब मुझे क्या करना है सब मैं मूल रूप से बनाया है, संगीत बनाने के लिए एक बुनियादी सिंटेक्स।
मैं ऐसा कुछ करते हैं तो, जी -4 जोड़ने 1 से 2 पर, कि क्या इसका मतलब है कि है,
पियानो नोट, जी -4 जोड़ने जो चौथे जी है
नीचे से पियानो पर।
तो इस मिडी की तरह बात है, इसलिए संगीत आधारित हैं, जो उन लोगों के लिए,
यह सिर्फ मिडी नोट है।
>> दर्शकों: यह है कि जी की मध्य सी की, है ना?
>> ह्यूग ज़ैब्रिस्की: यह जी है मध्य सेल्सियस से ऊपर, यह सही है।
>> दर्शकों: ऊपर मध्यम सी
>> ह्यूग ज़ैब्रिस्की: हाँ।
वास्तव में हाँ।
मैं वास्तव में कर दी है यह एक [सुनाई],
तो यह है कि ऊपर एक सप्तक हो सकता है।
तो चलो देखते हैं।
मैं Play-- मारा
[दोहराए पियानो नोट]
सुना है कि करने के लिए जा --we're।
विचार यह है कि संचालित है बस, एक कमांड लाइन होगा जैसे
इसलिए मैं ऊपर और नीचे जाने के लिए अगर अपने कीबोर्ड पर, आप
पिछले करने के लिए वापस जा सकते हैं बहुत उपयोगी है, जो हासिल है।
और नीचे पटरियों की मेरी सूची में है, जो सब पाश पर चल रहे हैं।
>> दर्शकों: आप यह सोचते थे उस पर कुंजीपटल 88-कुंजी, है ना?
>> ह्यूग ज़ैब्रिस्की: सवाल था, मैं एक 88-कुंजी कुंजीपटल मान रहा हूँ,
और हाँ, मैं हूँ।
क्या मैंने किया था मैं है मूल रूप से 88 नमूने ले लिया
पियानो, प्रत्येक नोट के लिए एक के।
और इसलिए हर बार जब आप अब से एक नोट में सुना है,
कि वास्तव में लग रहा है कि एक पाश है , इस लूप पर खेला जा रहा है like--
इसलिए हर नोट के लिए, यह चल रहा है।
क्या होता है मैं है फिर एक बफर बनाने के लिए,
मैं मात्रा निर्धारित करने के लिए एक लाभ नोड बनाने।
यह सिर्फ एक सच मैं कह रही है की जटिल तरीके
एक source.buffer में बफर दुकान।
मैं यह लाभ दे, मैं हासिल करने के लिए इसे कनेक्ट,
लाभ से जुड़ा है उत्पादन, और फिर मैं इसे खेलते हैं।
तो यह है कि इस प्रक्रिया की तरह है एक बफर स्रोत में ले जाने की।
>> दर्शकों: यदि आप वास्तव में ले जा सकते हैं सूखी ध्वनि और यह गीला [सुनाई] बनाने के लिए?
>> ह्यूग ज़ैब्रिस्की: तुम, हाँ।
फिर से क्रिया है, वहाँ नहीं है देरी, विरूपण।
आप मूल रूप में कुछ भी डाल सकते हैं of-- है कि अच्छी तरह सैंडविच में बीच,
पाइप लाइन, एक बेहतर रूपक है लेकिन आप उस में कुछ भी जोड़ सकते हैं।
कूल।
>> इसलिए मैं इस प्रदर्शन खत्म कर देंगे यहाँ आप भावना देने के लिए
समय का का सिर्फ सरासर संख्या आप सभी को एक बार उस समारोह चला सकते हैं।
इसलिए मैं इस दूर करने के लिए जा रहा हूँ।
मैं एक जनरेटर बनाने जा रहा हूँ that-- मूल रूप से यह सच है does-- क्या
एक जटिल syntax-- की तरह है लेकिन यह है मक्खी पर नोटों उत्पन्न करने के लिए जा रहा है,
और अभी खेल शुरू उन्हें यह उन का मूल्यांकन करता है।
[Interposing पियानो]
>> इसलिए हम यहाँ सिर्फ एक छोटे से संगीत बना सकते हैं।
[Interposing पियानो]
>> तो क्या इस आदेश उदाहरण के लिए, है, करता है
इसके लिए उन तीन नोट्स लेता है पियानो और फिर बी 3 पर उन्हें डालता है।
इस वाक्य रचना कर सकता है एक छोटे से अधिक भावना
एक है जो उन लोगों के लिए यहां संगीत की पृष्ठभूमि।
>> मैं एक किक ड्रम जोड़ सकते हैं।
मै कर सकता हु--
>> [Interposing उपकरणों]
>> --just उस के साथ खेलने के आसपास।
>> तो अगर आप make-- कर सकते हैं
[Interposing उपकरणों]
यही कारण है कि एक एक छोटे से अधिक कष्टप्रद है।
[Interposing उपकरणों]
>> कि बेतरतीब ढंग से एक सूखी झांझ कहते हैं तो एक 16% के साथ हर 16 वीं ध्यान दें, पर
[अश्राव्य]।
>> [Interposing उपकरणों]
>> हाँ, तो जिस तरह से इस यह 4 में हमेशा works--: 4।
[Interposing उपकरणों]
>> हाँ, चार तिमाहियों, और 16/8 इसलिए।
[Interposing उपकरणों]
>> तो औसत पर, आप 60% हो की 16 वीं नोटों पर हिट।
>> वैसे भी, यह सिर्फ था तरह का दिखावा करने के लिए
तुम सकता है चीजों में से कुछ वेब ऑडियो एपीआई के साथ निर्माण।
यह है, यह वास्तव में तेजी से है, वास्तव में शक्तिशाली है और आप ठंडी चीजों का एक बहुत कुछ कर सकते
इसके साथ।
तो फिर, आप किसी भी सवाल का, ईमेल myself-- Hugh-- या सैम,
और ईमानदारी से, गूगल है अच्छा संसाधनों की एक टन।
कोई अंतिम सवाल?
हाँ।
>> दर्शकों: तो आप उपयोग कर सकते हैं निर्मित माइक्रोफोन।
अगर तुम चाहते थे क्या एक बेहतर माइक्रोफोन का उपयोग करें?
ह्यूग ज़ैब्रिस्की: अगर तुम चाहते थे बेहतर माइक्रोफोन का उपयोग करने के लिए?
तो फिर, इस का हिस्सा है क्रोम के बीच अमूर्त
और आपके कंप्यूटर के बाकी।
इसके माध्यम से उपलब्ध है, जब तक एक एपीआई, वेब मिडी एपीआई की तरह,
आप शायद कुछ भाड़े मिल सकता है, लेकिन आम तौर पर के रूप में संभव नहीं।
>> सैम ग्रीन: आप also-- कर सकते हैं सभी क्रोम जानता है
क्या है आपकी डिफ़ॉल्ट माइक्रोफोन है, और यह कि पहुँचता है।
आप एक माइक्रोफोन था कि अगर तुम सकता है तो कंप्यूटर के डिफ़ॉल्ट माइक्रोफोन के रूप में स्थापित है,
आप इसे इस तरह का उपयोग कर सकता और यह शायद काम करेगा।
ह्यूग ज़ैब्रिस्की: यह एक अच्छी बात है।
मैंने कोशिश की है, लेकिन कभी नहीं किया है आप की तरह करने में सक्षम हो सकता है
of-- आप इनपुट वक्ता को दिशानिर्देश हैं, आप हाँ, ऐसा करने में सक्षम हो सकता है।
>> कोई अंतिम सवाल?
कूल।
वैसे आप लोगों को धन्यवाद देखने के लिए बहुत ज्यादा।
मैं ह्यूग हूँ।
सैम ग्रीन: मैं सैम हूँ।
ह्यूग ज़ैब्रिस्की: और इस CS50 है।