>> SAM الأخضر: مرحبا، الجميع.
مرحبا بكم في ندوتنا.
اسمي سام.
هيو زابريسكي: أنا هيو.
SAM الأخضر: ونحن في طريقنا للحديث اليوم حول جافا سكريبت وAPI الويب الصوت.
مجرد أن تبدأ، وهذا هو المخطط من جدول أعمالنا للحلقة الدراسية.
ونحن في طريقنا للبدء بالحديث عن لماذا يجب أن تكون مهتمة في الويب
API الصوت، لماذا جافا سكريبت اللغة التي تحتاج لذلك،
ثم الحديث عن جافا سكريبت essentials-- مثل ذلك،
المشي لكم من خلال بعض أساسيات اللغة،
ثم الحديث عن API الصوت على مستوى عال.
ثم، سوف نتحدث عن بعض هيو مراحل الانتاج السمعي
ثم التجريبي هذا التسلسل رهيبة مشروع بنى وتظهر لك التعليمات البرمجية.
وبعد ذلك، سيكون لدينا الوقت ل الأسئلة في نهاية للناس
الذين يعيشون هنا.
>> هيو زابريسكي: بارد.
>> SAM الأخضر: بارد.
>> هيو زابريسكي: بارد.
وسوف نسخ احتياطي.
>> SAM الأخضر: وهكذا، أول الأشياء أولا.
حتى واحد من أشياء عظيمة حول API الصوت الويب
غير أنه لا يوجد ما يصل مجموعة المطلوبة.
يأتي المدمج في ل معظم المتصفحات الحديثة،
بما في ذلك كروم، الحافة، ككل حفنة من بالآخرين كل منها
أجزاء كبيرة من أن الناس يستخدمون اليوم.
لذلك ليس هناك إعداد، جانبا من مجرد الحصول على
خادم الويب تسير، ل لك لتبدأ العمل
على المشروع الخاص بك، وهو أمر عظيم.
>> نوصي جدا بشدة أن عليك أن تنظر
باستخدام كروم ل تطوير الشبكة جافا سكريبت،
لمجرد المطور أدوات قوية حقا.
كمثال فقط ما نعنيه بقوله فتح جافا سكريبت
console-- إذا ذهبت إلى كروم وأنت تنظر في أي صفحة ويب،
وتركت نقرة تفقد العنصر، ثم
تذهب إلى هذا القليل المنسدلة هنا والنقر على حدة،
سترى ما يفتح يتطلع الكثير كأنه موجه الأوامر التي
قد ترى على ماك الخاص بك، أو على ID.
وتماما مثل ذلك، يمكننا نوع الأوامر هنا، مثل واضح،
وأوامر أخرى من هذا القبيل.
يمكننا خلق المتغيرات، كما سنرى لاحقا في جافا سكريبت.
ولذا فان أي شيء يمكننا القيام به في جافا سكريبت، يمكننا أن نفعل مع وحدة التحكم،
وهذا هو وسيلة عظمى في متناول اليد ل بدء اللعب حولها مع واجهات برمجة التطبيقات
والحصول على راحة مع جافا سكريبت الحق قبالة الخفافيش.
لا مجموعة المتابعة المطلوبة، وهو لطيف حقا.
رائع.
>> حتى أكثر شيء واحد فقط لإضافة.
إذا كان لديك أي questions-- هناك الكثير منكم الذين ليسوا هنا العيش،
لا تتردد في الكتابة us-- هذه هي عناوين البريد الإلكتروني لدينا.
إذا كان لديك أسئلة كنت لا تريد أن تطلب منا،
مثل، يا ولدي خلل في قانون بلدي، أو شيء
هذا هو قليلا أكثر تحديدا، ربما جوجل لأول مرة.
هناك الكثير من موارد كبيرة عن الشبكة الصوت API هناك.
انها حقا جيدا وثقت وانها يجري
التي يستخدمها طن من الناس في الصناعة، والناس الذين هم فقط
بناء متعة الأشياء لأنفسهم.
لذلك ينبغي أن يكون هناك الكثير الموارد هناك.
رائع.
>> بارد، فلماذا API الصوت الويب؟
هذا المخطط هو قليلا من التطور من الطريق
صوت على شبكة الإنترنت نمت مع مرور الوقت.
كان Bgsound مثل علامة HTML الأصلية التي تستخدم Internet Explorer لدعم.
وسمحت فقط للأصوات جميلة الأساسية، وكانت وظيفة يست قوية جدا،
وأنت لا تستطيع أن تفعل تسلسل معقد،
أو السيطرة عندما بدأ الصوت وتوقفت بقوة جدا.
لذلك، لم يكن على وجه الخصوص متطورة.
ثم بعد ذلك، فلاش جاء along-- التي،
أنا متأكد من أن اللاعبين كلهم ​​على دراية مع Flash-- ربما ليس كيف يعمل،
ولكن كنت قد رأيت بالتأكيد.
كنت قد حصلت على تحديث الفلاش الخاصة بك في المكونات، وجميع هذا النوع من الاشياء،
وهذا بالتأكيد بمد نطاق من الوظائف التي كانت متاحة.
ولكن جعل المستخدم تثبيت في المكونات هو بالتأكيد
عيب لإدراج فلاش في التطبيق الخاص بك، أليس كذلك؟
لأن ثم كنت تعتمد على المستخدم الذهاب والعثور على هذه المكونات في،
وربما يكون يلتفت قبالة عن طريق هذه خطوة اضافية
لديهم لاتخاذ استخدام التطبيق الخاص بك.
وبعد ذلك يمكن أن يكون هناك تحديث التي سوف كسر تطبيق كله،
وينتهي به الأمر إلى كابوس للمطور، أيضا.
حتى كان ذلك الحاجز.
>> ثم بعد ذلك جاء على طول، العلامة الصوتية HTML، التي
هو سمة من سمات أكثر HTML-- الحديثة التي بالتأكيد سمح للكثير من الأشياء،
ولكن حتى الأشياء التي يمكن أن تفعل كانت هناك قليلا يقتصر
نتيجة من الأشياء كانت تلك HTML قادرة على.
وذلك عندما جافا سكريبت API، وAPI الصوت الويب،
أصبحت معيارا ممارسة عبر المتصفحات،
حقا أن توسيع مجموعة فرص للمطورين
للحصول حقا في بناء الاشياء باردة لشبكة الإنترنت.
لفترة طويلة كان هناك كانت أدوات قوية حقا
لتطبيقات الصوت الأم، like-- يعلم الجميع كاراج،
ثم من الواضح أن هناك أكثر تطبيقات الصوت خلط المهنية،
وهذا النوع من الاشياء.
ولكن لم يكن هناك جيد حقا Cloud-- لا
سحابة، نعم، أعتقد منصة على شبكة الإنترنت Cloud--
التي من شأنها أن تسمح للمطورين ل بناء تطبيقات للناس
للقيام خلط الصوت.
وكما انه سوف تظهر لك في وقت لاحق، وAPI الصوت الويب
يسمح قوية حقا الأشياء أن يحدث ببساطة حقا،
وهو بارد جدا.
لذلك هذا هو تعليمات لماذا ينبغي أن يراقب بقية الندوة،
في الأساس.
>> والآن، أنا بصدد الحديث عن بعض JavaScript-- العناصر الأساسية فقط
للغة، بحيث يمكننا أن نكون على نفس الصفحة
عندما نتحدث عن API في وقت لاحق قليلا.
رائع.
>> لذلك، هذا هو ملخص.
لقد نسيت هذا كان هنا.
نعم.
>> هيو زابريسكي: هناك شريحتين هنا.
>> SAM الأخضر: هذا هو ملخص من بعض القيود
ل، الأساليب القديمة ملزمة أخرى.
ثم الآن، لدينا هذه الأشياء.
رائع.
>> لذلك، أساسيات جافا سكريبت.
أول الأشياء أولا، هناك فرق كبير جدا
في جافا سكريبت مقابل في اللغات مثل C، في الطريق
أن المتغيرات يتم إنشاؤها.
وذلك في C، اعتدنا على وجود لكتابة المتغيرات لدينا، أليس كذلك؟
وأنا لا أقصد نوع مثل اكتب لهم في، أعني نوع
مثل التنازل عنها معنى type-- مثل، عدد صحيح، تعويم، شار.
في C، كنا تستخدم حقا ل الحاجة إلى إنشاء متغير
ومن ثم التمسك هذا النوع ل طوال الوقت أن نستخدم هذا المتغير.
وهذا ليس بالضرورة أسوأ من ذلك، ولكن من المحتمل أن يكون أكثر صعوبة للاستخدام.
واحدة من الميزات الرائعة جافا سكريبت غير
أن المتغيرات هي ما يسمى "كتبته حيوي"، والتي
يعني أنني يمكن أن تخلق متغير مع ذلك التركيب،
varX يساوي 5، على سبيل المثال.
أن يخلق أصلا variable-- صحيح
الحق تحت هود somewhere-- لكنني
يمكن تغيير هذا المتغير للإشارة إلى سلسلة
دون أن تفعل أي شيء مثل إنشاء متغير جديد.
أنا لا داعي للقلق حول نوع التغيير.
جافا سكريبت يعرف أن هذا النوع من تغيرت، وهذا يحدث بشكل حيوي.
>> لذلك، هناك فوائد وعيوب لذلك،
كما أي شخص يعمل في جافا سكريبت لفترة من الوقت قد تعرف.
هناك أوقات عندما كنت قد بطريق الخطأ
تغيير نوع متغير و لا تعامل مع هذا النوع المتغيرة،
ثم لديك جافا سكريبت يمكن crash-- أو استثناء
يتم طرح، لأنه سيكون لديك نوع الخطأ عندما كنت تتوقع نوع واحد.
رائع.
>> لذلك، scoping-- الذي هو مثل، إذا نحن تذكر الأسابيع الأولى في الدورة،
يشير إلى مدى مرئية متغير هو وبأي منطقة من التعليمات البرمجية.
كل ذلك تبدو مشابهة جدا إلى الطريقة التي تبدو في C.
بحيث يتم خاصة بتطبيق المتغيرات عموما داخل الأقواس المعقوفة داخل دالة،
ثم هناك أيضا المتغيرات عالميا راقب ذلك
are-- إذا كنت أكتب متغير خارج وظيفة،
سيكون مرئيا في النص بأكمله.
>> فارق واحد بين جافا سكريبت وC على وجه الخصوص،
غير أنه إذا قمت بتعريف العالمية في أي مكان متغير في ملف نصي
انها واضحة في أي وظيفة ضمن هذا الملف النص.
هذا صحيح، أليس كذلك؟
>> هيو زابريسكي: نعم.
>> SAM الأخضر: هذا أيضا قليلا بت غير تقليدي بالمقارنة مع C،
حيث كان لدينا دائما أن يكون لدينا تعريفات متغير فوق الأماكن
كانت تستخدم.
هذا ليس قاعدة وهذا ما القسري بعد الآن، لذلك، مختلفة قليلا.
ومرة أخرى فقط لاعادة التأكيد، العالمية مقابل variables-- المحلية
تشبه الى حد بعيد C. هل يمكن أن يكون متغيرين بنفس الاسم،
ويكون واحدا من أسمائهم أن مظلل بواسطة متغير محلي إذا واحد منهم
كان العالمية.
ذلك النوع، مماثل لل المشاكل التي بعضكم
قد واجهت في بعض من مشكلتك يحدد حتى الآن.
بارد، حتى أن المتغيرات.
>> التحكم في التدفق، وهذا يعني مثل، إذا، else-- stuff-- منطقية والحلقات.
لذلك في البداية، وهذا هو ما إذا غيرك تصريحات تبدو وكأنها في جافا سكريبت.
وضع الأشياء المختلفة على غرار ليست مهمة.
هذا هو مجرد واحدة من الاتفاقيات لطريقة رمز هيكل لدينا.
مثلما هو الحال في C، لدينا "إذا" بيان قوسين.
ليس هذا ما قصدته القيام به.
فعلت ذلك مرة أخرى.
>> هيو زابريسكي: محاولة للخروج؟
SAM الأخضر: لا، أنا مجرد محاولة للتكبير.
لا يهم.
>> لذلك، لدينا "لو" البيان و لدينا حالة داخل منه
أن تقيم إلى صواب أو خطأ، وأن يحدد ما إذا كان أو لا
ندخل تلك الكتلة من التعليمات البرمجية.
وبالمثل، لدينا آخر، إذا، و لآخر، تماما مثل التي اعتدنا عليها في C.
>> أنت أيضا يجب أن تكون مريحة جدا الحق قبالة الخفافيش مع الحلقات،
لأنها تبدو أيضا الكثير مثل C يبدو.
ولكن ستلاحظ مرة أخرى أننا لديهم، بدلا من الباحث التهيئة،
لدينا التهيئة فار.
وأعتقد أن لديك أن نكون حذرين لجعل
تأكد من أنك لا تتغير قيمة من أنا من عدد صحيح إلى سلسلة،
على سبيل المثال، لأن ذلك سيكون ل تسبب سلوك غريب قد لا يكون ل
توقع.
ولكن هذا ينبغي أن ننظر مألوفة جدا، كذلك.
>> لذلك هذا هو المكان الذي تبدأ الامور في الحصول مجنون قليلا في جافا سكريبت
للشخص الذي يجري من خلفية C. هناك وظائف
في جافا سكريبت، وهناك طريقة واحدة لاعلان وظيفة التي تبدو
نوع من مشابهة لC، و ثم هناك واحد آخر
يبدو من نوع مختلف.
>> النسخة الأولى، ويمكننا أن نرى هنا،
هو نوع من C-مثل، حيث نقول، وهذا هو وظيفة،
إعطائه اسما، وإعطاء عدد من الحجج،
ثم محتويات ظيفة انتقل داخل تلك الأقواس المعقوفة.
سنرى مثال الحجج ثانية فقط.
>> بينما على السطر التالي، ونحن نرى، أوه، وهنا متغير يسمى "myFunction"
ونحن على قدم المساواة إلى هذا function-- thing-- العامة التي
لا يبدو أن لديها أي شيء يحدث.
والسبب في ذلك هو مختلف من C هو أن جافا سكريبت
هو ما يسمى لغة وظيفية، أو يحتوي على عناصر وظيفية، مما يعني
أن وظائف هي في الواقع القيم.
وهذا يعني أننا يمكن أن يحدد متغير على قدم المساواة وظيفة
ثم نقل تلك الوظيفة حولها، وتمرير ذلك كحجة،
تفعل كل أنواع الأشياء كما أن وظائف.
>> الشيء الآخر لnote-- يتم كتابة وظائف
مع عدد معين من الحجج.
سنرى مثال على وظيفة مع حجة على الشريحة التالية.
ولكن سوف لا جافا سكريبت الصراخ إذا كنت محاولة
لاستخدام وظيفة مع عدد خاطئ من الحجج.
انها سوف فقط قصارى جهدها لجعل تفعل، وهذا يعني أنه إذا كنت تمر،
استدعاء دالة التي تتوقع ل مشادة مع أي حجة، كل ذلك
سيحدث هو انها سوف تبذل قصارى جهدها في محاولة لتنفيذ هذا الرمز،
وإذا كان يعمل في نهاية المطاف إلى استثناء أو خطأ،
انها سوف رمي هذا الاستثناء وتبقي فقط going-- الذي هو مجرد واحدة من الطرق
الذي يعمل جافا سكريبت.
نعم.
>> الحضور: ماذا يحدث إذا هناك الكثير من الحجج؟
SAM الأخضر: لذلك كان السؤال، ماذا يحدث
إذا كان هناك الكثير من الحجج؟
والجواب هو أن سوف جافا سكريبت فقط
تجاهل تلك التي هي بعد تلك انها تتوقع.
انها سوف محاولة لتنفيذ وظيفة الدعوة كما لو كان مجرد الأولين.
الصحيح؟
>> هيو زابريسكي: هذا صحيح، نعم.
وبالمثل، إذا كان هناك وعدد قليل جدا من الحجج،
انها مجرد نوع من يعطي فارغة إلى جميع الحجج أنه ليس لديها أي القيم
ل.
>> SAM الأخضر: والتي يمكن يكون في الواقع مفيد، إذا كنت
تريد أن تكتب على دالة يأخذ الحجج عدد المتغيرة.
يمكنك تعيين القيم الافتراضية في تعريف وظيفة،
ويمكن أن نتجاهل حقيقة أن المدخلات ليست هناك.
لذلك أريد أن أتحدث قليلا المزيد حول هذا الموضوع الرصاصة الأخيرة
نقطة، وهي وظائف هي القيم.
هذا هو المثال الذي هو قليلا العقل تهب
إذا كنت تقرأ ذلك فقط، و لا أعتقد حول ما يحدث للمرة الثانية.
لذا، دعونا ننظر فقط في السطر الأول هنا.
لدينا هذا المتغير، F1، أن نقول هي وظيفة أن يفعل هذا الشيء.
ومحتويات وظيفة وconsole.log ('مرحبا').
يمكنك التفكير في console.log باسم جافا سكريبت يعادل printf.
ذلك ما سيحدث هو، إذا كنا تشغيل هذا الرمز في المتصفح لدينا،
انها سوف طباعة سلسلة.
أنا يمكن أن تثبت ذلك.
الحضور: عن طريق السجل، على الرغم من يفعل ذلك يعني يجري تسجيله في مكان ما؟
SAM الأخضر: نعم.
ولذا فإنني سوف تظهر لك ما سيحدث.
لذا فإن السؤال هو، ماذا سجل تعني؟
>> هيو زابريسكي: console.log ذلك هو مثل printf لC.
SAM الأخضر: console.log ذلك هو مثل printf،
حتى لو كان لدي هذا console.log ('مرحبا')، وأدعو أن السلسلة "مرحبا"
يحصل طباعتها إلى وحدة التحكم.
هذا هو وحدة التحكم.
انها مجرد مثل printf، حيث فإنه يطبع إلى خارج القياسية.
وسنرى في دقيقة واحدة، ولكن هذا هو الواقع
مشيرا إلى كائن وحدة التحكم، واستدعاء أسلوب على هذا الكائن.
وهذا سوف يكون أكثر منطقية في دقيقة واحدة عندما كنا
وصول الى الحديث عن الكائنات في جافا سكريبت،
ولكنني اعتقدت أود فقط أن أذكر أن.
هيو زابريسكي: نحن تستخدم في C، right--
نكتب عادة برنامج كبير في main لفعل أي شيء.
ولكن ما هو بارد في جافا سكريبت هو أنت يكون هذا النوع من المترجم أن
يعمل في الوقت الحقيقي، لذلك يأخذ خط فقط عن طريق الخط،
ويمكن فقط تفسير ذلك على الفور.
ويتتبع الأشياء التي تعمل من قبل،
لذلك هو أداة مفيدة جدا ل استخدام console.log، أو وحدة،
عموما، لمجرد اللعب حولها مع جافا سكريبت.
>> SAM الأخضر: ولذا فإن العودة إلى هذا example-- السطر الثاني من التعليمات البرمجية
هنا هي جميلة محيرة للعقل في رأسي.
أول مرة قرأت هذا، انها مثل، ما الذي يحدث؟
فما يحدث هو، وهذا يقول ظيفة الإعلان،
لدي وظيفة تسمى F2 وهذا ما نتوقع وسيطة واحدة، و،
وبعد ذلك المكالمات التي وظيفة، و التي
تم تمريرها إليه كحجة بدون وسائط نفسها.
لذلك، التي قد تكون مربكة.
إذا كان لنا أن نفهم هذا الأمر يأخذ F2 F1 كحجة، ومن ثم داخل F2،
و يحصل called-- التي الوسائل أن هذا سطر من التعليمات البرمجية،
بعد هذين الخطين من كود، والنتائج في "مرحبا"
تتم طباعتها إلى وحدة التحكم.
>> حقيقة أننا يمكن أن تمر وظائف في جميع أنحاء كقيم
ينتهي كونها واحدة من أكثر ميزات قوية من جافا سكريبت
كلغة برمجة.
خارج كل من أشياء رهيبة يمكن أن تفعله،
تماما كما سمة من سمات لغة من حيث الطريق
أنه يجعل الامور سهلة برمجة ويسمح
للأشياء التي لا سيما مناسبة تماما لشبكة الإنترنت،
البرمجة الوظيفية وظيفية جوانب البرمجة جافا سكريبت
هي واحدة من أكثر المفاهيم القوية التي
موجود في JavaScript-- إذا سألتني.
رائع.
>> لذلك، الشيء التالي.
بالإضافة إلى كونها وظيفية، هناك أيضا عناصر جافا سكريبت
التي هي وجوه المنحى، التي تعد واحدة من جدا
العبارات الطنانة شعبية في علوم الكمبيوتر.
البرمجة الشيئية هو شيء حقا شعبية.
جافا سكريبت لديه نسخة من هذا، حيث أعتقد أن كل قيمة هي أيضا
كائن، وهو ما يعني أن كل كائن يلتف معا بعض عدد من القيم.
حتى للقيم التي هي بسيطة، مثل صحيح، مثل varX يساوي 5،
هذا الكائن فقط يلتف أن قيمة واحدة.
>> ولكن يمكننا أيضا أن نتصور الوضع where-- يمكن أن نفكر في الحالات C
حيث أردنا أن نفعله شيء مع البنيات،
على سبيل المثال، التي يلتف عدة القيم معا، ويجعل
من السهل حقا لتمرير بعض الأمور.
وذلك عندما كائن في جافا سكريبت.
>> من المهم أن نتذكر عندما أقول أن الأجسام ملفوفة
بعض عدد من القيم معا، الذي يعمل أيضا
القيم، وهو ما يعني أن وظائف يمكن أيضا يكون داخل كائن جافا سكريبت.
والسبب هو مهم غير أنه، في حين أننا في كثير من الأحيان
التفكير في استدعاء أسلوب على كائن هذا
من المصطلح الشعبي من الآخر وجوه المنحى اللغات الشعبية،
أحد الفروق هنا هو أن كل ذلك وسيلة في جافا سكريبت
هو القيمة المخزنة داخل كائن الذي ينفذ بعض action-- ربما
باستخدام القيم الأخرى الموجودة داخل هذا الكائن، ولكن ليس بالضرورة.
لذلك يمكنك أن تتخيل هذه الحالة، I تخمين في قليلا من وسيلة مجنون،
حيث يمكنك استدعاء أسلوب واحد الاعتراض على كائن آخر، على سبيل المثال.
لذلك، انها قليلا غير تقليدي في هذا الطريق.
>> ويمكنك أيضا تغيير الطرق التي ترتبط مع كائن
عن طريق تعيين هذه الطريقة ل وظيفة جديدة، وهو أيضا
مختلفة جدا عن غيرها وجوه المنحى لغات، حيث
مرة واحدة نعلن كائن ومثيل ذلك،
لا يمكننا تغيير الأساليب التي يرتبط هذا الكائن بعد الآن.
بحيث مختلف جدا.
رائع.
>> حتى هنا على سبيل المثال، لأول مرة، كائن في العمل.
هذا هو ما يسمى كائن عام، والتي
يعني أنه ليس لديها أي اسم معين، لايوجد الصف،
انها مجرد التفاف بعض من القيم.
والطريقة التي تبدو هي، لدينا هذا الزوج الخارجي مجعد الأقواس هنا
التي تشير إلى تشغيل الجافا ويقول: هذا هو كائن.
القيم داخل منه هي كل القيم داخل
الكائن الذي ينبغي أن تكون ملفوفة معا.
وداخل هذا الكائن، لن يكون لدينا أزواج قيمة المفتاح،
حيث يشير المفتاح إلى اسم من قيمة داخل الكائن،
وside-- الآخر مقابل here-- القولون
هي القيمة الفعلية التي يجب تخزينها.
>> لذلك ترى هنا أن لدينا مفتاح يسمى الجبهة الوطنية مع قيمة سام،
تليها فاصلة، قوله على دخول المقبل.
ثم مفتاح يسمى قانون الجنسية، بقيمة الأخضر،
تليها فاصلة، تلاه سهم "طباعة"
التي ستكون لدينا قيمة وظيفة الذي تنوي القيام به هذا الخط من التعليمات البرمجية.
دعونا نلقي خطوة إلى الوراء و فك ما يحدث هنا.
لذلك هذا هو معقد بعض الشيء، ونحن نرى شيئا جديدا
لأول مرة.
في "هذا" الكلمة هي الشيء الجديد نراه هنا، وهذا ما يفعله
هو، يشير إلى تيار الاعتراض في نطاقها، أليس كذلك؟
لذلك عندما نقول، هذا يشير كل في طريق العودة
لهذا object-- كامل عندما نفعل this.fn،
ونحن في طريقنا ليذهب كل في طريق العودة لهذا الكائن، انتقل إلى القيمة FN
والحصول على سام، تسحبه على طول الطريق مرة أخرى، والتمسك بها هنا، وبعد ذلك الانتقال.
>> الحضور: حتى مع استرجاع، هو أن تفعل ذلك لأن المعلمة
تعريف؟
SAM الأخضر: لذا فإن السؤال هو، هو استرجاع عمله بسبب المعلمة
تعريف؟
نعم، بالتأكيد.
ما الذي سيحدث هنا، وتقول هذه النقطة إلى تفعيل جافا،
حسنا، أنا اتلقى بعض القيمة من هذا الكائن من نفسي.
وبعد ذلك سوف نبحث عن إدخال ودعا الجبهة الوطنية، وإذا وجد ذلك،
انها سوف تعود أن value-- ذلك، فإنه سام.
لكنني ويمكن أيضا بكتابة وهو الأمر الذي لم يتم تعريف هنا،
وبعد ذلك سيكون فقط العودة undefined-- التي
هو الشيء الذي يمكن أن جافا سكريبت القيام به، والتي يمكن أن تكون لها فوائد،
لكنه also-- إذا قمت بإجراء الخطأ المطبعي، أنها يمكن أن تؤدي إلى أخطاء غريبة.
لذلك سوف مجرد محاولة للعثور على مهما كنت أقول ذلك لإيجاد
وانها لن شكوى إذا لم تجد.
انها سوف نقول فقط، لم أكن العثور عليه، وبعد ذلك الانتقال.
لذلك سيكون غير معرفة ذلك، بالإضافة فارغة، بالإضافة إلى اسم آخر.
نعم.
وبعد ذلك يمكننا أن نرى أنه إذا كنا ويمكن بعد ذلك النزول وaccess--
وندعو tf.print () مع الأقواس.
انها سوف ندعو إلى أن الطباعة وظيفة بدون وسائط، أليس كذلك؟
ولكن إذا قلنا فقط tf.print () منقوطة، دون الأقواس،
كل ذلك من شأنه أن عمله هو سحب من وظيفة من القيمة،
ولكن لا يسمى فعلا.
رائع.
هيو زابريسكي: ينبغي نحن جعل كائن؟
SAM الأخضر: بالتأكيد، دعونا نفعل ذلك.
حتى أتمكن من نقل هذه المثال إلى وحدة التحكم.
يمكننا أن نتصور أن لدي كائن.
لذلك هذا هو كائن بسيط.
هذا هو الكائن الذي يحتوي على اثنين القيم مع مفتاحين، واثنين من قيمة المفتاح
أزواج.
لذلك وبعد ذلك يمكن الوصول إلى القيمة المخزنة داخل هذا الكائن عن طريق القيام x.x1،
على سبيل المثال، وأحصل على 1 الظهر.
وبالمثل، x.x2، والحصول على هذه القيمة مرة أخرى.
>> والآن شيء رائع حقا هو، لا يسعني في الواقع تضيف شيئا إلى هذا الكائن
بعد أن قمت بإنشائه.
لذلك يمكنك أن تتخيل، دعونا أقول لها وظيفة.
>> هيو زابريسكي: أنت يجب أن تفعل أدخل التحول.
>> SAM الأخضر: أوه، هذا أمر مزعج.
ماذا لا تحب؟
يا.
ها نحن ذا.
رائع.
>> حتى لقد خلقت فقط هذه الوظيفة، و أن
ستذهب إلى التيار وجوه وthis.x1 الطباعة.
حتى لو كنت مجرد دعوة و التي في حد ذاته، لا شيء يسير على ما
أن يحدث، والحق، لأنه لا يوجد X1 حقل في كائن انها اشارة الى.
ولكن، إذا قلت، x.f = و، وبعد ذلك استدعاء x.f ()، وانا ذاهب للحصول على العودة 1.
أن وظيفة و هي الآن المقترنة مع الكائن س،
الذي لديه مفتاح يسمى X1 يرتبط بقيمة 1،
لذلك عندما ندعو this.x1، انها سوف تجد ما انها تبحث عن
وتكون قادرة على طباعة قيمة خارج.
ولهذا مثال واحد فقط من نوع من الأشياء المجنونة
يمكنك القيام به مع الكائنات في جافا سكريبت.
>> لذلك كان هذا الإصدار ل إصدار عام، معنى
أن قمنا بإنشاء كائن باستخدام هذا الأقواس تدوين هدفين notation--،
rather-- وهذا مفيد إذا كنا نريد فقط
مثيل واحد من كائن معين، ولكن ما إذا كنا نريد أن يكون أكثر من واحد
من نفس النوع؟
والجواب على ذلك السؤال هو، هناك أشياء
دعا الطبقات في جافا سكريبت كذلك.
يمكننا إنشاء دالة لا نوعا من التهيئة
لجسم غريب، ونستطيع أن نقول، مثل،
بلدي class-- ذلك اسم من object-- قابلة لإعادة الاستخدام
يساوي ظيفة الذي يحدد ذلك.
فما هذا من شأنه أن يكون معادلا لهو خلق كائن
سيكون تماما مثل، متعرج، شارع، القولون،
هذا هو سلسلة، منقوطة، متعرج.
ومن شأن ذلك أن يكون عام كائن نحن تهيئة،
مع فارق واحد يجري على السطور القادمة نخلق نموذجا أوليا، التي
يعني انها مفتاح الافتراضية التي أضفنا إلى هدفنا أن
لديه القيمة المذكورة هنا.
وهذا يعني أنه عندما خلق جديد مثيل هذا الكائن MyClass،
انه سيكون قد بنيت قبل الداخل انها قيمة تسمى شارع وقيمة أخرى
دعا myPrint، وهو ستكون وظيفة.
رائع.
>> رائعة.
وبالتالي فإن آخر شيء ل يقول عن جافا سكريبت
غير أنه من المفيد حقا لماذا تسمى عمليات متزامنة.
وسائل غير المتزامنة هي أننا يمكن الانتظار لبعض العمليات
لاستكمال قبل أن ننتقل ولكن على هذه الخطوة بينما ننتظر
ويكون بعد ذلك شيء يحدث في وقت لاحق.
وما أعنيه هذا هو، كنت يمكن تخيل الحالة التي تكون فيها
كنت تقوم بإرسال طلب عمل بعض خادم الويب في مكان ما،
وانها سوف نرسل لك مرة أخرى ل بعض قطعة كبيرة من البيانات، أليس كذلك؟
ويمكن للمستخدم الخاص بك الانتظار في الوقت لكي يحدث ذلك،
وليس هناك ما يمكن أن يكون يحدث في ذلك الوقت.
ولكن هذا ليس تصميم كبير، أليس كذلك؟
كنت لا تريد صفحة الويب لتجميد.
ما إذا كان المستخدم يريد أن انقر على القائمة المنسدلة؟
انها ليست نمط تصميم كبير.
بدلا من ذلك، أساسا ما جافا سكريبت لم يتم يقول:
OK، القيام بهذه العملية بشكل غير متزامن.
مثل ذلك، الانتظار في الخلفية، ثم عندما تتم العملية،
استدعاء رد function-- استدعاء بعض من وظيفة،
ماذا بعض action-- للإشارة إلى أن تشغيل كنا ننتظر لانهاء
انتهى.
والسبب هو قوة عظمى هو، يمكننا أن نفعل شيئا، وتمرير حجة،
نفعل شيئا، ثم الانتظار لشيء أن يحدث.
ثم، مرة واحدة أن شيئا يكمل، يمكن أن نطلق معاودة الاتصال بكم.
هذا هو مفيد حقا لأنه يتيح نفعل الأشياء مع API الصوت الويب،
على سبيل المثال، مثل الحمل و ملف صوتي من الملقم البعيد
دون الحاجة إلى الانتظار ل ملف صوتي كامل ليتم تحميلها،
التي من شأنها أن تكون حقا سيئة لتجربة المستخدم.
رائع.
>> ويشير القليلة الماضية حول التصحيح، لأن هذا
هو شيء وأنت تسير لفعله كجزء من المشروع الخاص بك، مضمونة.
ذكرت وحدة جافا سكريبت.
انها سمة من سمات سوبر مفيدة جميع المتصفحات الحديثة،
ونحن حقا نشجعكم على الحصول على مريحة باستخدام وحدة التحكم الخاصة بك،
إذا كنت ترغب في الحصول جيدة في جافا سكريبت.
انها فائقة مفيد ل تصحيح الأخطاء، ولكنه أيضا
من المفيد حقا للكشف على كيفية استخدام API.
لأنها تتيح حقا من السهل التجريب
دون الحاجة إلى كتابة بعض رمز، ومن ثم ترجمة عليه.
لم يكن لديك للقيام بكل تلك الخطوات.
يمكنك كتابة فقط بعض التعليمات البرمجية في الخط،
ومن ثم الحصول على ردود فعل فورية على سواء كان ذلك سطر من التعليمات البرمجية أو لا
worked-- سهل للغاية.
>> وأيضا، note-- تقنية واحدة فقط وحدة جافا سكريبت مثال
من REPL-- ذلك أن R-E-P-L، REPL، والتي تقف على القراءة، وتقييم،
حلقة الطباعة.
وأنت تسير لكتابة بعض الاشياء في، وأنها سوف تقرأ ما كتبته في،
انها سوف تقيم ذلك، وأنها سوف طباعة الإخراج، وبعد ذلك سوف تبدأ مرة أخرى.
التي تسمح لك أن تذهب بسرعة في الدوائر بالتكرار، وهو بارد حقا.
>> أعتقد الأخير الحقيقية note-- هذا غير الفعلية ملاحظة اخيرة، نعم.
كيف يمكننا فعلا استخدام جافا سكريبت؟
أولا لذا، يمكننا أن استيراد باستخدام علامة النصي
في الجزء العلوي أو السفلي من HTML الملف-- في أي مكان داخل ملف HTML،
هل حقا.
وضمن علامة النصي، هناك طريقتان جنوب استيراد جافا سكريبت.
الأول هو من خلال وجود ملف جافا سكريبت منفصل
أننا نستورد في مجملها، أو من خلال وجود مساحة من التعليمات البرمجية مثل النصي
للبدء، ثم النصي مائل إلى النهاية.
ثم نكتب فقط جافا سكريبت داخل ملف HTML.
تلك هي الطريقتين.
لا يمكن أن يكون ذلك داخل HTML.
الحضور: هل أحد أفضل من الآخر؟
SAM الأخضر: وكان السؤال، هو واحد أفضل من الآخر.
لذلك، نعم، كممارسة أسلوب الترميز، وكما انها مثل ممارسة التصميم.
هناك سببان لماذا قد يكون من الأفضل.
الأول هو، فإنه يجعل التعليمات البرمجية ل الكثير أكثر قابلية للقراءة إذا كان كل من HTML الخاص بك
هو في مكان واحد، كل CSS الخاص بك هو في مكان آخر، كل من جافا سكريبت الخاصة بك
هو في المركز الثالث.
الصحيح؟
أعتقد أننا يجب أن سبق ان تحدثت حول هذا الموضوع في مثل sections-- CSS-- ما
أن is-- وغني في كثير من الأحيان في ملف آخر.
لذلك، نوع مماثل من المفهوم هنا.
يمكنك أيضا أن نتصور أن جافا سكريبت سيتم استخدامها على أكثر من واحد
صفحة HTML، أو ربما كبير من صفحات HTML،
وبعد أن جافا سكريبت ريفاكتوريد في واحد
ملف التي يمكن استيرادها في أكثر من مكان واحد
يسمح القانون ليكون طريقة أكثر للصيانة.
يمكنك أن تتخيل صنع واحدة تغيير إلى تشغيل الجافا
والحاجة إلى تغييره في 100 ملفات مختلفة.
وبدلا من ذلك يمكننا تغييره فقط في واحد، وهي طريقة أكثر قوة.
لم أجيب على سؤالك؟
رائع.
>> يمكننا أيضا كتابة إلى وحدة التحكم، ونحن قد ذكرت من قبل.
ومرة أخرى، note-- آخر واحد على شبكة الإنترنت بنيت في الصوت،
لا تحتاج لتحميل أي شيء.
رائع.
هل هناك أي أسئلة، هل لديك أي أسئلة أخرى حول تفعيل جافا،
قبل أن ننتقل؟
>> الحضور: (غير مسموع)
SAM الأخضر: كل الحق، بارد.
وحتى الآن انه ذاهب الى الحديث عن API.
>> هيو زابريسكي: بارد.
شكرا، سام.
>> SAM الأخضر: متأكد.
هيو زابريسكي: ممتاز، لذلك سوف ننتقل من جافا سكريبت.
لذلك تحدثنا عن بعض أساسيات جافا سكريبت،
وتلك هي المتغيرات، وظائف، الأشياء، ووظائفها، والمتغيرات،
تحميل غير متزامن.
هذه هي كل الأشياء التي عليك كما نرى استخدام الويب الصوت.
لذلك نحن ذاهبون لمجرد الحديث حول لأول مرة على مستوى عال.
>> انها API، لذلك شيء المضمن، كما قال سام،
الحق في جافا سكريبت التي تستخدمها في وحدة التحكم.
وانها في الواقع تماما مثل C ++ كود التي بنيت حقا في كروم
وفايرفوكس، وجميع هذه المتصفحات.
وبالتالي فإن الفكرة الرئيسية مع الويب الصوت هو أن لديك
هذا النوع من أنابيب السمعية، أليس كذلك؟
ذلك البيانات الصوتية الخاصة بك يأتي في بشكل أو بآخر.
>> هناك نوع من ثلاث forms-- الرئيسية لديك مذبذب، التي
يخلق موجة جيبية، موجة جيب التمام، ونحن في طريقنا لمعرفة كيف يعمل.
آخر واحد شائع جدا، بطبيعة الحال، هو MP3.
لذلك ربما عليك أن تبدأ مع أغنية، ثم
تريد أن تفعل بعض تصفية إلى ذلك والانتاج
هكذا- يضرب والتي قد تكون مصدرا محتملا.
ثم بارد حقا واحد هو ميكروفون.
بحيث يمكنك استخدام بعض جدا المكالمات الأساسية في جافا سكريبت
للوصول إلى الميكروفون، وحتى إذا كنت
يريد أن يجعل التطبيق مثل كاشف الملعب،
على سبيل المثال، أن يأخذ في صوت وشخصيات من الخاص بك
وpitch-- طريقة سهلة جدا لذلك.
يمكنك مجرد نوع من قراءتها في، معرفة تردد،
ثم عدد إخراج.
ولذا فإننا سوف نرى كيف يعمل، كذلك.
>> الوجهة هي في الأساس حيث البيانات الصوت هو الإخراج.
لذلك عموما، وهذا مثل مكبرات الصوت المحمولة الخاصة بك.
خيارات أخرى مثل وScriptProcessorNode--
أننا سنصل إلى العقد في second-- ولكن في الأساس،
إما أنك تضع الصوت الخروج من خلال جهاز الكمبيوتر الخاص بك من خلال مكبرات الصوت،
أو كنت النوع من تسجيله، لذلك كنت تخزينها كبيانات الصوت.
لذلك ربما اذا كان شخص ما يخلق الموسيقى في التطبيق الخاص بك، ثم
كنت ترغب في تسجيل ذلك وربما مثل تصديره إلى ساوند كلاود، لexample--
التي من شأنها أن تكون طريقة واحدة للقيام بذلك.
كل الاشياء متعة، التي سنتحدث عنها،
يحدث بين هاتين النقطتين، حيث أننا في تحميل الموسيقى
ثم إخراجه.
>> لذلك أنا ذاهب الى الحديث عن الخمسة مراحل الانتاج السمعي في الثانية.
لدينا هذا الشيء يسمى وAudioContext، التي
هذا المجمع الصغير نراه هنا.
أساسا ما AudioContext is-- إذا كنا انتقل إلى وحدة التحكم جافا سكريبت في الوقت الراهن،
يمكننا خلق واحدة الآن.
مجرد مثال من REPL، أليس كذلك؟
إننا نقرأ، تقييم وطباعتها.
>> AudioContext دولة عالمية.
انها لبنية، انها كائن هنا، وأنها تحتفظ المعلومات
حول الأمور التي تجري على الشاشة ذات الصلة الصوت.
أحد الأمثلة على ذلك هو الوقت الحالي.
هذا يخبرك عدد ثانية، بدقة متناهية،
منذ صفحة الويب تحميل.
لذلك هذا هو مفيد حقا الملكية الصغيرة التي يمكنك استخدامها.
لقد قراءتها only-- أعتقد فعلا يمكنك محاولة لتعيين قيمة.
انها سوف اقول لكم تعيينها، ثم إذا كنت طباعته
again-- أنه لم يكن في الواقع العمل تماما.
لذلك للقراءة فقط هناك العقارات في جافا سكريبت.
وهذا مفيد حقا إذا كنت نوع من المزامنة
الكثير من مختلف معلومات، عندما كنت
نوع من اللعب الأصوات المختلفة.
>> آخر مفيد حقا هي الوجهة السياق.
بالتأكيد، إذا كنت مهتما، يكون يحاول هذا في وحدة التحكم الخاصة بك الحق
الآن.
لذلك هذا هو AudioDestinationNode.
أساسا ما يقول هذا، حيث يتم إخراج ذاهب؟
لذلك هناك خياران الحقيقية هنا.
عادة الافتراضي هو فقط لديك مكبرات الصوت،
حتى AudioDestinationNode في الأساس يقول عادل
لا توجد أية مخرجات على صوت المقبلة في، وإرسالها إلى السماعة.
هكذا عموما، كنت لا لديك للعب مع ذلك.
إذا كنت ترغب في استخدام الواقع وScriptProcessorNode للتسجيل،
بالتأكيد تبادل لاطلاق النار لي البريد الإلكتروني في وقت لاحق لأن هذا
أكثر تعقيدا.
ولكن عموما، كنت مجرد نوع من إخراج الصوت بشكل أو بآخر.
حتى تبرد، ونحن سوف القفز إلى هنا.
الحضور: أنا آسف.
هيو زابريسكي: نعم.
الحضور: أنا أعلم أنك ذكرت في الحديث لك في وقت لاحق عن التسجيل.
يمكنك التفاعل مع أن أدوات برو؟
>> هيو زابريسكي: مع أدوات برو؟
دعنا نرى.
أنا لا أعتقد ذلك.
ولذا فإن بين العميل، وهو جافا سكريبت
وحدة التحكم، والفعلية الخاصة بك كمبيوتر، عموما
شيء أن يكون نوع من خارج الحدود، إذا كنت
صح التعبير، نوع من طبيعة the-- انها نوع من الشيء التصميم،
ولكن يمكنك محاولة للحفاظ على متصفح منفصلة من الكمبيوتر الفعلي للمستخدم.
عموما، الشيء الوحيد الذي كنت قادرا على الوصول هو الميكروفون أو الكاميرا.
أنت لست قادرا على، وأنا لا أعتقد، واستخدام أدوات برو.
ومع ذلك، إذا قمت بإنشائه مسار في Pro أدوات،
تصدير ذلك، هل يمكن تحميل هذا هنا، تصفية، على سبيل المثال،
عملية، وسجل ذلك في أحد الصوت Destination-- أو no-- المجال
عقدة المعالج.
ثم من هناك، هل يمكن تصدير إلى أن ساوند كلاود، كنت
يمكن إرسالها في رسالة بالبريد الالكتروني، أو كل ما تريد من هناك.
>> ولكن هناك نوع من الحاجز طفيف بين صنع الموسيقى على الكمبيوتر الخاص بك
وجعل الموسيقى على الانترنت.
>> SAM الأخضر: وهذا هو لا فريدة من نوعها لهذا API.
انها سمة من سمات أمن كروم، و أعتقد أن كل متصفح الحديثة الأخرى.
المتصفح هو مكتفية ذاتيا.
هكذا على سبيل المثال، لا يمكن لصفحة ويب استخدام جافا سكريبت لتشغيل الصوت
على مكبرات الصوت، على سبيل المثال.
أو أنه لا يمكن إيقاف تشغيل الكمبيوتر.
وليس هناك نقطة وسيطة بين هذين الأمرين، والحق،
لذلك إما لديك التجريد الكامل،
أو يمكنك فتح ثغرة أمنية في السماح
مبرمج مع النوايا السيئة تفعل كل ما تريد مع جهاز الكمبيوتر المحمول.
وهذا هو السبب في كروم هو مكتفية ذاتيا.
>> هيو زابريسكي: نعم.
هل هذا منطقي؟
رائع رائع.
كنت مجرد الذهاب الى عرض مثال واحد.
هذا هو الى حد كبير كما بقدر ما تحصل عليه، من حيث
من الوصول إلى جهاز الكمبيوتر الخاص بالمستخدم.
إذا كان لديك توصيل لوحة مفاتيح USB في، يمكنك استخدام ما يسمى الويب
MIDI API، التي لن نكون حقا التحدث عنه هنا،
ولكن هذا هو API آخر هذا في صلب ما لا يقل عن Chrome-- مرة أخرى،
هذا هو السبب في أننا نحب Chrome-- أعتقد فايرفوكس أو سفاري،
هذا هو بالأمر السهل متصفحات مختلفة google-- لها
دعم مختلف عن الذي واجهات برمجة التطبيقات التي نفذت.
ولكن إذا أردت أن سد العجز في لوحة المفاتيح والعمل مع هذه المعلومات،
نوع من إرسال لوحة المفاتيح المعلومات عبر إلى الكمبيوتر
ومن ثم استخدام هذا الخط، وهذا API هو المكان الذي سأعمل ذلك.
>> رائع.
حسنا.
لذلك، سرعان ما تتحرك هنا.
كيف نفعل في الوقت المحدد؟
>> رئيس 1: حوالي 15.
>> هيو زابريسكي: 15 دقيقة من النهاية؟
OK، بارد.
ولذا فإننا سوف السباق متقدما هنا.
>> ذلك أساسا، والنقطة الرئيسية لل التفكير في هذا الأمر خط أنابيب
غير أن كل خطوة في الطريق هو عبارة عن سلسلة من العقد الصوت.
مصدرنا، دعنا نقول، هو المذبذب.
نحن بحاجة إلى خلق عقدة مذبذب.
وهذا هو النوع فقط من function-- قليلا
وانهم على أساس كل من من سياق الصوت هنا.
>> الحضور: عندما يقال مذبذب، فهل هذا يعني
انها في طريقها فعلا حرفيا من قطبين مختلفة ذهابا وإيابا؟
>> هيو زابريسكي: لا، انها مثل تمثيل رقمي.
انها تنفذ فعلا في C ++.
أنا في الواقع لا أعرف المواصفات من كيف انها تنفذ في الواقع،
ولكن كل هذا هو العمل كبيانات ثنائية.
في الواقع، نعم.
سيتم هذا القول لم أستطع في الواقع، إذا كنت مهتما،
ويمكنني أن أرسل لك قليلا أكثر معلومات حول كيفية الطول الموجي
يتم الاحتفاظ جود شكل رقمي.
OK، بارد.
>> لذلك نحن توليد نغمة مثل جيب موجة أو شيء من هذا القبيل، وربما
440 هيرتز.
نخلق المذبذب.
إذا كنا نريد أن ضبط مستوى الصوت، ونحن ربط أي شيء إلى GainNode،
وهو ما يمكن أن تفعله مع .creategain.
الذي يحدد حجم الخاصة بك.
يمكنك أن تمر على أي من البعض جيدا options--،
ذلك مصدر عازلة الصوت العقدة حيث قد
تخزين وMP3 أن كنت قد حملت في.
>> مرشح Biquad هو لتصفية إذا كنت تريد أن تأخذ كل قاعدة من
من أغنية، أو شيء من هذا القبيل.
لا سمح الله كنت تريد أن تأخذ قاعدة من أغنية.
وعقدة AudioDestination هي، مرة أخرى، مثل حيث وضع اللمسات الأخيرة لدينا هو.
إذا كنت مهتما في أي وقت في رؤية جميع الخيارات الممكنة المختلفة،
اذهبوا إلى علامة التبويب والسماح لصناعة السيارات في استكمال الخروج.
وإذا لم خلق، سترى جميع الأشياء المختلفة التي يمكن أن تخلق.
يمكنك إنشاء ديناميكية معالجات النصي،
أنا لا أعرف حتى ما أن هو، لخلط الاندماج قناة
وشق قناة، وأن جميع.
رائع.
>> لذلك هذا هو فقط مثال على خط أنابيب.
لذلك لدينا ثلاثة مصادر القادمة من.
ربما هذه هي الطول الموجي، ربما هذه هي ملفات MP3.
واحد يمر مرشح، وآخر واحد
الحصول على مشوهة أخرى واحد بالغسل اليسار واليمين.
يمكنك أن تفعل كل أنواع الأشياء و أنهم جميعا تختلط حول معا،
ثم يخرج الصوت في النهاية، كما الوجهة.
هذا هو مثال على ما أكثر تعقيدا الويب قانون الصوت يبدو.
كنت خلق كل هذه كائنات مختلفة الحق here--
لست متأكدا من ذلك.
لا، لا تكبير.
حسنا.
>> SAM الأخضر: يمكنك القيام التحكم، انتقل الهاتفي.
هيو زابريسكي: التحكم Scroll--
SAM الأخضر: لا، لا.
التحكم--
>> هيو زابريسكي: أوه، التحكم، انتقل؟
أوه، مسكتك.
نعم.
نجاح باهر، كلا، كلا.
حسنا.
لن أفعل ذلك.
>> لذلك نعم، في هذا أولا القسم هنا، ترى
نحن بصدد إنشاء كل هذه مختلفة العقد خارج السياق.
نحن فقط التفكيك لهم معا في الجزء الثاني
بواسطة هذه الوظيفة يسمى اتصال.
هذا هو مفتاح حقا وظيفة في الويب الصوت.
بل يعني فقط مرة واحدة كنت قد فعلت شيء مع الصوت في عقدة واحدة،
ينقلونه إلى العقدة التالية.
لذلك لدينا مصدر، فإنه يتصل محلل،
محلل يفعل شيئا معها، فإنه يذهب إلى التشويه، وهلم جرا،
وإلى الوجهة في أسفل اليمين هنا.
رائع.
OK، ولذا فإننا سوف تبقي المضي قدما.
>> وpipeline-- مرة أخرى، هذه هي خطوط الأنابيب الأكثر شيوعا،
لذلك نحن نتحدث عن كل هذه الأمور مثل التشويه، بالغسل، كل هذه الأشياء.
إذا كنت مهتما حقا في استخدام أشياء Pro أدوات،
تلك ربما يثير اهتمامك.
إن لم يكن، ربما كنت فقط تريد أن تلعب الصوت،
أو ربما كنت ترغب فقط في ضبط مستوى الصوت على الصوت.
تلك هما من النوع الأكثر شيوعا خطوط الأنابيب في الانتاج السمعي.
>> مرة أخرى، والطرق التي يمكن أن أعتبر في باعتباره oscillator-- ذلك، دعونا
القيام التجريبي من هذا الحق هنا.
لذلك نحن ذاهبون الى خلق السياق الصوت بسيط هنا،
ومنذ ذلك نحن ذاهبون لخلق مذبذب لدينا.
لذلك هذا هو، مرة أخرى، نحن فقط الذهاب لدعوة خلق المذبذب.
ونحن في طريقنا لضبط التردد على أن 440 هيرتز، الجميع المفضل.
ثم ربطنا ذلك إلى الوجهة point-- الذي هو المتكلم، لذلك
الوجهة السياق.
وأخيرا، نقول فقط، تبدأ الصفر ثواني من الآن، ويمكننا أن الصوت؟
>> [رنين]
>> هيو زابريسكي: هنا نذهب.
انها مجرد موجة جيبية.
OK، بارد.
وبعد ذلك سنقوم وقف ذلك.
>> الحضور: أين أن ردود الفعل تأتي من؟
>> هيو زابريسكي: ردود الفعل؟
أوه، ربما لدينا الميكروفونات.
لذلك نعم، هذا كيف يمكنك أن تفعل ذلك.
وفعلا، إذا كان لي أبقى على التوالي، لك
يمكن أن يكون التردد قيمة كما انها تعمل،
لذلك هذا شيء متعة للعب حولها.
رائع.
هذا هو دائما واحد جميل حتى الآن.
>> SAM الأخضر: نحن لم نفكر في ذلك، ونحن لم؟
هيو زابريسكي: نعم، هذا هو واحد في الملعب.
لذلك، العازلة loading-- سوف تظهر مثال على ذلك في النهاية.
وهذا ما تحميل ملف MP3.
وميكروفون، يمكنك استخدام مجرد وظيفة دعا Navigator.getUserMedia ()
لطلب الحصول على المستخدم ميكروفون لتلك المعلومات.
>> هنا هو تصفية، وسوف أكون تبقى مجرد الانتقال من هذا.
هذا هو مستوى عال جدا، ولكن الفلاتر تسمح لك فقط ل
>> [تنبيه]
تصفية كما يسمح لك لخلق أشياء مثل الوردي
الضوضاء والضجيج البني، والضوضاء البيضاء.
إذا كنت ترغب في إنشاء الضوضاء النقي، الذي بعض الناس يحبون أن تسكع مع،
يمكنك استخدام الشبكة أغاني تصفية للقيام بذلك.
>> الصوت Panning-- حتى تخيل إذا كنت تكتب لعبة
وتريد الصوت ل يبدو انها قادمة، مثل،
اطلاق النار عبر الشاشة، كنت يمكن استخدام بالغسل من الصوت
لإنشاء هذا النوع من المخروط، التي like-- انها ماثي جميلة،
ولكنها في الواقع حقا بارد إذا كنت تحصل عليه العمل،
وهناك بعض الخير دروس على ذلك يمكنني أن أرسل لك.
في الأساس، يمكنك النوع من خلق الصوت
من شيء ما يحدث من قبل بطريقة 3D.
وإذا كان لديك مصلحة DJ، يمكنك بدء الخلط وعبور الأغاني يتلاشى.
>> هذا هو مجرد بعض أساسية جدا رمز، أساسا ما فعلت من قبل.
هذا يحدد حجم مذبذب، لذلك نحن خلق مذبذب لدينا
مما يخلق الموجي.
نخلق GainNode لدينا، تعيين تردد لدينا،
ثم ربط مذبذب ل GainNode، الذي ثم يتغير الأساس
كم إشارة غير مسموح بها.
ولكن في الحقيقة، انها الرقمية الشيء، لذلك فمن أكثر just-- نعم.
هذا ليس ما يحدث في الواقع، ولكن هذا ما يحدث في الحياة الحقيقية
مع زيادة.
>> الحضور: --quantization المعلمة حجم؟
هيو زابريسكي: عذرا؟
الجمهور: هل هو المعلمة حجم الكم؟
هيو زابريسكي: نعم.
وهذا هو شيء واحد أنا حقا ناقصة في في معرفتي،
كيف يعمل مكاسب على المستوى الرقمي.
وأنا أعلم مع الفعلية إشارات، انها في الاساس
السيطرة على كم كنت تضخيم الإشارة.
إذن أجل.
سوف نرسل لك المزيد من المعلومات حول ذلك، لأنني سأكون غريبة فعلا
لمعرفة المزيد عن هذا الموضوع.
ولكن أساسا المعلمات هي، واحد هو fold--
وsignal-- أعلى وليس من الصفر إشارة، أو أنك لن تسمع أي صوت.
سنقوم تخطي الوقت تجريبي لذلك ل انها في الاساس ما فعلته من قبل.
ومرة أخرى، Context.Destination هي عقدة الوجهة الصوتية.
رائع، OK.
>> لذلك أنا ذاهب للقيام سريعة اثنين من العروض.
كيف نفعل في الوقت المحدد؟
>> رئيس 1: حوالي 10 دقيقة.
>> هيو زابريسكي: 10 دقائق؟
رائعة!
رائع.
>> لذا فإن أول واحد أنا ذاهب ل لا، انه دعا أغنيتي المفضلة.
لذلك هذا هو مجرد يذكر HTML جافا سكريبت.
ونحن في طريقنا لاثنين من الأزرار على الصفحة لعب أغنيتي المفضلة
ووقف أغنيتي المفضلة لديك.
وأنا تغيير هذا.
>> الحضور: تغطية الميكروفون.
>> هيو زابريسكي: نعم.
ولقد تحميل هنا السيناريو الذي basically--
وهذا هو فعلا مفيد لتحميل ملف MP3،
ولذلك فإن هذا يجعل من مجرد تحميل ملفات MP3 بطريقة أسرع.
انها في الاساس مجرد غلاف.
فإنه يجعل من مجرد عملية تحميل في ملفات MP3 أسرع بكثير،
وإلا كنت تستخدم طلب HTTP، نوع من مثل ما كنا نقوم به
على قطعة الحالي مع مجموعة خادم.
انها قبيحة حقا، كنت لا نريد أن نفعل ذلك.
>> لذلك هذا الرجل، بوريس Smus، كتب حقا أداة مفيدة قليلا دعا BufferLoader.
كل ما عليك القيام به هو مجرد تمريرها السياق، أن يمر عليه list--
أو، نعم، أنها ليست قائمة في جافا سكريبت؟
SAM الأخضر: صفيف.
هيو زابريسكي: أوه، فمن صفيف، هذا صحيح.
انها مجموعة من مسارات لملفات مختلفة.
ثم تمريرها على وظيفة.
هذا هو رد كنا نتحدث حول مع تحميل غير متزامن.
وسوف يطلق ذلك مرة واحدة الملفات المحملة.
وأن الدالة التي يتم استدعاؤها عند الملف تحميلها يأخذ باعتباره محيط
مجموعة من المخازن المحملة.
بحيث يحدث هنا.
في الأساس، هو BufferList سيكون value-- واحد
أو أريد لها أن تكون مجموعة من طول واحد، التي لديها في ذلك في مؤشر
صفر تحميل الملف كامل من MP3.
ذلك ما أقوم به عندما أنتهي التحميل هو، أنا ببساطة
إنشاء مصدر العازلة، التي هي عقدة المصدر عازلة الصوت.
الخطوة التالية هي أنني تحميل في source.buffer باعتبارها منطقة عازلة تحميل كامل
من BufferList-- انها الكثير من buffers--
ثم قمت بتوصيل أن الصوت العازلة إلى الوجهة.
فما انها تنوي القيام به وببساطة وضع MP3
مباشرة من خلال لالإخراج، وتبدأ على الفور
على الحصول على هذه الدعوة.
>> بارد، لذلك دعونا نرى هذا يحدث في العمل.
بلدي (غير مسموع) هنا، دعونا نرى.
لذلك أنا ذاهب لمجرد بدء الخادم الأساسي.
هذا شيء ما عليك القيام به إذا كنت
تقديم طلبات لتحميل الملفات.
أنا ذاهب لبدء الخادم الأساسي.
وهذا هو الأساس الخاص بك كامل PSET الآن في سطر واحد،
لكنها بدأت للتو الخادم على المنفذ 80/80.
لذلك نذهب أكثر من هنا، ونحن الذهاب لتحميل 80/80،
ونحن في طريقنا للذهاب إلى أغنيتي المفضلة.
حتى لو ضرب "العب بلدي الأغنية المفضلة "في الوقت الراهن،
انها سوف تحميل بلدي الأغنية المفضلة واللعب it--
[MUSIC - النسور، "الحياة في FAST خط"]
--which يحدث أن تكون "الحياة في فاست لين "من قبل النسور.
الآن، ويمكنني أن ضرب "أوقفوا بلدي الأغنية المفضلة "وإعادة تشغيله.
>> [MUSIC - النسور، "الحياة في FAST خط"]
>> وإذا ذهبت لأكثر من وحدة التحكم، ل أنا استخدم المتغير العالمي أكثر من هنا
لتتبع هذه القيمة، فإنه في الواقع سيتم الآن معترف بها في وحدة التحكم.
لذلك السيارات يخلق بالنسبة لي.
وهذا ما يلعب في الوقت الراهن، وأستطيع أن مجرد دعوة source.stop ()
على ذلك.
حسنا، أنت تعرف لماذا؟
فقط حتى سمعت يا رفاق هذا أغنية لكنت قد تعترف هذه الأغنية.
>> [MUSIC - RICK ASTLEY، "NEVER GIVE GONNA أنت فوق"]
[MUSIC - النسور، "الحياة في FAST خط"]
لقد تم الآن كل Rickrolled.
OK، عظيم، والانتقال.
رائع.
لذلك هذا هو الأساس مثال كيف يمكن لك تحميل MP3 الملف--
[MUSIC - النسور، "الحياة في FAST خط"]
--and تشغيله، ووقف وبدء تشغيله.
قد فعلت الكثير من [غير مسموع]
>> آخر واحد سأفعل هو، سوف تظهر لك (غير مسموع).
>> [عزف الموسيقى]
>> انها مثل، ogg.wave.mp3.
أعتقد، إذا كنت أتذكر بشكل صحيح، لقد واجهت بعض المشاكل مع .m4a،
لكنني لست متأكدا من ذلك.
أعتقد mp3.wave--
>> [MUSIC - RICK ASTLEY، "NEVER GIVE GONNA أنت فوق"]
>> OK، عظيم.
أنا لا ينبغي أن يكون قال ذلك.
على أي حال، مرحبا.
لذلك لدينا هذا مفتوحة.
وحتى الآن كل ما فعله هو، أنا في الأساس خلق بناء الجملة الأساسية لخلق الموسيقى.
حتى لو كنت تفعل شيئا مثل، إضافة G4 في 1 2، ما يعنيه ذلك هو أن،
إضافة ملاحظة البيانو، G4، وهو G الرابع
حتى على البيانو من القاع.
لذلك هذا هو نوع من MIDI الكلام، حتى بالنسبة لأولئك الذين هم أساس الموسيقى،
هذا هو مجرد ملاحظات ميدي.
>> الجمهور: هذا هو G من C الأوسط، أليس كذلك؟
>> هيو زابريسكي: هذا هو G فوق C الأوسط، هذا صحيح.
>> الحضور: فوق الأوسط C.
>> هيو زابريسكي: نعم.
في الواقع، نعم.
أعتقد أنني فعلا واحدة (غير مسموع)،
ولذلك فإن هذا قد يكون اوكتاف فوق ذلك.
لذلك دعونا نرى.
لو ضرب Play--
[PIANO ملاحظة المتكررة]
--we're الذهاب لسماع ذلك.
والفكرة هي أنه يعمل تماما مثل لو سطر الأوامر،
حتى لو كنت تذهب صعودا وهبوطا على لوحة المفاتيح بلدي، وكنت
يمكن العودة إلى السابق أوامر، وهو أمر مفيد جدا.
وأقل قائمتي من المسارات، وهي كلها تعمل على الحلقة.
>> الحضور: هل تم افتراض 88-مفتاح لوحة المفاتيح على ذلك، أليس كذلك؟
>> هيو زابريسكي: وكان السؤال، أنا على افتراض لوحة مفاتيح 88 مفتاح،
ونعم، أنا.
ما فعلته هو أنني اتخذ أساسا 88 عينات
من العزف على البيانو، واحد لكل المذكرة.
وذلك في كل مرة سماع مذكرة من الآن فصاعدا،
هذا هو في الواقع حلقة التي تبدو like-- هذا هو الحصول على لعبت على حلقة،
لذلك لكل ملاحظة، وهذا قيد التشغيل.
ما يحدث هو، وأنا إنشاء منطقة عازلة مرة أخرى،
I إنشاء عقدة مكاسب لضبط مستوى الصوت.
هذا مجرد حقا طريقة معقدة للقول I
تخزين المخزن المؤقت في source.buffer.
أعطيها الربح، I توصيله إلى الربح،
توصيل كسبا لل الإخراج، وبعد ذلك تشغيله.
بحيث هو نوع من عملية أخذ في مصدر العازلة.
>> الحضور: هل لك أن تأخذ هذا الواقع الصوت الجافة وجعلها رطبة (غير مسموع)؟
>> هيو زابريسكي: يمكنك، نعم.
هناك إعادة الفعل، هناك تأخير، والتشويه.
يمكنك وضع أي شيء أساسا في بين في هذا شطيرة جيدا of--،
خط أنابيب كناية أفضل، ولكن يمكنك إضافة أي شيء في ذلك.
رائع.
>> ولذا فإنني سوف تنتهي التجريبي هنا لتعطيك إحساسا
من مجرد كثرة المرات التي يمكن تشغيل هذه الوظيفة في كل مرة.
لذلك أنا ذاهب إلى إزالة هذا.
انا ذاهب الى خلق مولد هكذا- يضرب أساسا ما does-- هذا هو حقا
نوع من syntax-- تعقيدا ولكنها ل الذهاب لتوليد الملاحظات على الطاير،
ومجرد بداية اللعب لهم كما يقيم لهم.
[فاصلة PIANO]
>> حتى نتمكن من جعل مجرد الموسيقى قليلا هنا.
[فاصلة PIANO]
>> فما هذا الأمر لا، على سبيل المثال،
فإنه يأخذ تلك المذكرات الثلاث ل البيانو ثم تضعهم على B3.
بناء الجملة هذا قد يجعل لمزيد من معنى
لأولئك الذين لديهم الموسيقى الخلفية هنا.
>> ويمكنني أن أضيف طبل ركلة.
استطيع--
>> [فاصلة الأدوات]
>> --just يتلاعب ذلك.
>> حتى تتمكن من make--
[فاصلة الأدوات]
أن المرء قليلا أكثر مزعج.
[فاصلة الأدوات]
>> بحيث يضيف عشوائيا صنجا الجاف على كل ملاحظة ال16، مع 16٪
[غير مسموع].
>> [فاصلة الأدوات]
>> نعم، وبالتالي فإن هذا الطريق works-- انها دائما في 4: 4.
[فاصلة الأدوات]
>> نعم، وبالتالي فإن الفصول الأربعة، و16/8.
[فاصلة الأدوات]
>> حتى في المتوسط، وتحصل على 60٪ من يضرب على الملاحظات ال16.
>> على أي حال، كان هذا فقط نوع من التباهي
بعض الأشياء التي يمكن أن بناء مع API الصوت الويب.
انها قوية حقا، انها سريعة جدا، ويمكنك جعل الكثير من الأشياء باردة
معها.
ذلك مرة أخرى، على أية أسئلة لديك، البريد الإلكتروني myself-- Hugh-- أو سام،
وبصراحة، غوغل طن من موارد جيدة.
أي أسئلة الماضية؟
نعم.
>> الحضور: لذا يمكنك الوصول الميكروفون المدمج في.
ماذا لو أردت استخدام ميكروفون أفضل؟
هيو زابريسكي: إذا أردت لاستخدام أفضل الميكروفون؟
ذلك مرة أخرى، وهذا هو جزء من التجريد بين كروم
وبقية جهاز الكمبيوتر الخاص بك.
ما لم يكن متوفرا من خلال وAPI، مثل الويب MIDI API،
وربما كنت قد تجد بعض الخارقة، ولكن عموما لا ممكن.
>> SAM الأخضر: يمكنك also-- كل يعرف كروم
ما الميكروفون الافتراضي هو، ويستخدم فيها هذا.
حتى إذا كان لديك ميكروفون يمكن لكم على النحو الميكروفون الافتراضي الكمبيوتر،
هل يمكن الوصول إليه بهذه الطريقة وربما العمل.
هيو زابريسكي: هذا هو نقطة جيدة.
لم يسبق لي ان حاولت ذلك، ولكن كنت قد تكون قادرة على النوع
of-- إذا كنت إعادة توجيه رئيس المدخلات، كنت قد تكون قادرة على القيام بذلك، نعم.
>> أي أسئلة الماضية؟
رائع.
حسنا شكرا لك الرجال كثيرا لمشاهدة.
أنا هيو.
SAM الأخضر: أنا سام.
هيو زابريسكي: وهذا هو CS50.