SAM سبز: سلام بر همه. به سمینار ما خوش آمدید. اسم من سم است. HUGH ZABRISKIE: من هیو هستم. SAM سبز: و ما قصد داریم به بحث امروز در مورد جاوا اسکریپت و API وب صوتی. فقط برای شروع، این یک طرح کلی است از دستور کار ما برای سمینار. ما قصد داریم به شروع شده توسط صحبت کردن در مورد چرا شما باید علاقه مند به وب باشد API صوتی، چرا جاوا اسکریپت است زبانی که برای آن نیاز دارید، و پس از آن در مورد جاوا اسکریپت صحبت essentials-- بنابراین مانند، شما را از طریق برخی راه رفتن اصول اولیه زبان، و سپس در مورد صحبت API های صوتی در سطح بالا است. پس از آن، هیو در مورد برخی از صحبت از مراحل تولید صوتی و پس از آن نسخه ی نمایشی این ترتیب سنج عالی پروژه او ساخته شده است و به شما کد نشان می دهد. و پس از آن، ما هم باید برای سوال در پایان برای مردم که در اینجا زندگی می کنند. HUGH ZABRISKIE: داغ. SAM GREEN: داغ. HUGH ZABRISKIE: داغ. من خواهد شد. SAM سبز: بنابراین، چیزهایی اول اول. بنابراین یکی از کارهای بسیار خوبی در مورد API صوتی وب این است که هیچ راه اندازی مورد نیاز وجود دارد. که می آید به ساخته شده در ترین مرورگرهای مدرن، از جمله کروم، لبه، یک کل دسته از others-- همه آنهایی که بخش زیادی از که مردم با استفاده از امروز. بنابراین وجود ندارد راه اندازی، گذشته از فقط گرفتن یک وب سرور رفتن، برای شما برای شروع کار بر روی پروژه خود را، که بزرگ است. ما توصیه می کنیم بسیار به شدت که شما در نظر با استفاده از Chrome برای توسعه وب جاوا اسکریپت، فقط به خاطر اینکه توسعه دهنده آن ابزار واقعا قوی است. به عنوان مثال تنها چیزی است که ما با گفتن باز کردن جاوا اسکریپت خود را console-- اگر شما را به کروم بروید و شما در هر صفحه وب نگاه کنید، و شما سمت چپ کلیک کنید بازرسی عنصر، و سپس شما را به این کمی کشویی رفتن در اینجا شما را بر روی کنسول و کلیک کنید، شما خواهید دید آنچه به نظر می رسد باز می شود تا بسیاری مانند یک فرمان را که شما ممکن است بر روی مک خود را در ID ببینید، و یا. و درست مانند آن، ما می توانیم نوع دستورات در اینجا، مانند پاک کردن، و دستورات دیگر مانند آن. ما می توانیم متغیر ایجاد کنید، به عنوان ما بعدا در جاوا اسکریپت خواهید دید. و به این ترتیب هر چیزی که ما می توانید انجام دهید در جاوا اسکریپت، ما می توانیم با کنسول انجام دهید، و این که راه فوق العاده مفید است به شروع به بازی در اطراف با رابط های برنامه کاربردی و گرفتن راحت با جاوا اسکریپت راست کردن خفاش. ندارد و راه اندازی مورد نیاز، که است که واقعا خوب است. خنک. عالی. پس فقط یک چیز بیشتر به اضافه کنید. اگر شما هر گونه questions-- وجود دارد بسیاری از شما که اینجا هستید زندگی نمی کنند، در صورت تمایل به us-- این ایمیل آدرس ایمیل ما هستند. اگر سوالی دارید شما نمی خواهید از ما بخواهید، مانند، آه من یک اشکال در کد من، و یا چیزی که کمی مشخص تر، شاید برای اولین بار آن را گوگل. هستند بسیاری از منابع بزرگ وجود دارد در مورد API صوتی وب خارج وجود دارد. این واقعا خوب مستند و آن را در حال استفاده شده توسط یک تن از مردم در صنعت، و افرادی که فقط می ساخت چیزهای سرگرم کننده برای خود. بنابراین باید مقدار زیادی وجود داشته باشد منابع خارج وجود دارد. عالی. سرد، پس چرا API صوتی وب؟ این نمودار یک کمی است یک تکامل از راه صدا بر روی وب در طول زمان رشد کرده است. Bgsound مانند تگ HTML اصلی بود که اینترنت اکسپلورر استفاده برای حمایت از. این فقط برای تلفن های موبایل بسیار اساسی اجازه داده، قابلیت بسیار قوی نیست، و شما نمی تواند انجام تعیین توالی پیچیده، و یا کنترل زمانی که صدا آغاز شده و متوقف بسیار قوی. بنابراین، آن بود به خصوص نیست به خوبی توسعه یافته. بعد از آن، فلش along-- که آمد، من مطمئن هستم که شما بچه ها همه آشنا هستند هستم با Flash-- شاید نه چگونه کار می کند، اما شما قطعا آن دیده می شود. شما رو به روز رسانی فلش خود را پلاگین، تمام این نوع از مسائل، و که قطعا گسترش محدوده از قابلیت های که در دسترس بود. اما ساخت کاربران نصب یک پلاگین در است یک نقطه ضعف از جمله فلش به در برنامه خود، درست است؟ چون شما وابسته به ما کاربران رفتن و پیدا کردن این پلاگین، و احتمالا تبدیل خاموش توسط این گام اضافی آنها را به استفاده از نرم افزار خود را. و پس از آن وجود دارد می تواند به روز رسانی است که به شما تمام نرم افزار خود را شکستن، و آن را پایان می رسد تا یک کابوس برای توسعه دهنده، TOO. به طوری که یک مانع بود. و سپس بعد از آن آمد همراه، برچسب صوتی HTML، که یکی از ویژگی های HTML-- مدرن تر است که قطعا برای چیزهای بسیار بیشتری مجاز اما حتی چیزهایی که شما می تواند انجام وجود دارد شد کمی فقط محدود به عنوان یک نتیجه از چیزهایی که HTML قادر بود. بنابراین، هنگامی که جاوا اسکریپت API، API صوتی وب، یک استاندارد تبدیل شد تمرین در سراسر مرورگرها، که واقعا گسترش مجموعه از فرصت ها برای توسعه دهندگان واقعا به ساختمان چیزهای جالب برای وب. برای یک مدت طولانی وجود داشته است ابزار واقعا قوی شده برای برنامه های صوتی بومی، like-- هر کس می داند GARAGEBAND، و پس از آن به وضوح بیشتر وجود دارد حرفه ای صوتی مخلوط برنامه های کاربردی، و این نوع از مسائل. اما وجود ندارد واقعا خوب Cloud-- نیست ابر، آره، من حدس می زنم پلت فرم مبتنی بر وب Cloud-- که توسعه دهندگان اجازه می دهد تا ساخت برنامه های کاربردی برای مردم به انجام اختلاط صوتی. و او به عنوان شما نشان می دهد بعد، API صوتی وب اجازه می دهد تا برای واقعا قدرتمند چیزهای اتفاق می افتد واقعا به سادگی، که خیلی جالب است. به طوری که آموزش به همین دلیل شما باید به بقیه سمینار تماشا، اساسا. و در حال حاضر، من قصد دارم به بحث در مورد برخی JavaScript-- عناصر فقط پایه از زبان، به طوری که ما می توانیم در همان صفحه باشد وقتی ما در مورد صحبت API کمی بعد. خنک. بنابراین، این خلاصه است. من را فراموش کرده این جا بود. آره. HUGH ZABRISKIE: دو اسلاید در اینجا وجود دارد. SAM سبز: این خلاصه است برخی از محدودیت از سوی دیگر، روش اتصال است. و پس از آن در حال حاضر، ما باید این چیزها. خنک. عالی. بنابراین، ملزومات جاوا اسکریپت. چیزهایی اول اول، وجود دارد یک تفاوت بسیار مهم در جاوا اسکریپت در مقابل در یک زبان مانند C، در راه که متغیرهای ایجاد می کند. بنابراین در C، ما به داشتن استفاده به نوع متغیرها، درست است؟ و من نوع مانند معنی نیست نوع آنها را در، منظور من نوع مانند آنها به معنی type-- اختصاص مانند، یک int، شناور، یک کاراکتر. در C، ما واقعا به مورد استفاده قرار گرفت نیاز به ایجاد یک متغیر و سپس به آن نوع برای چوب تمام مدت که ما با استفاده از آن متغیر است. و این است که لزوما بدتر نیست، اما احتمالا سخت تر استفاده کنید. یکی از ویژگی های سرد از جاوا اسکریپت است که متغیرها آنچه به نام "پویا تایپ"، که بدان معنی است که من می توانم یک ایجاد متغیر با نحو، VARX برابر با 5، برای مثال. که در اصل ایجاد یک عدد صحیح variable-- درست در زیر هود somewhere-- اما من می توانید آن متغیر تغییر برای اشاره به یک رشته بدون انجام کاری مانند ایجاد یک متغیر جدید. من لازم نیست که به نگرانی در در مورد تغییر نوع است. جاوا اسکریپت می داند که نوع است تغییر، و که به صورت پویا اتفاق می افتد. بنابراین، مزایای وجود دارد و اشکالاتی از آن، هر کسی که به کار در جاوا اسکریپت در حالی که برای ممکن است بدانید. بار زمانی که وجود دارد شما ممکن است به طور تصادفی تغییر نوع یک متغیر و که نوع تغییر رسیدگی نمی کند، و سپس جاوا اسکریپت خود را می توانید crash-- و یا یک استثنا پرتاب می شود، چرا که شما باید نوع اشتباه زمانی که شما انتظار یک نوع. خنک. بنابراین، scoping-- که مانند است، اگر ما به یاد داشته باشید هفته در اوایل دوره، اشاره دارد که چگونه یک متغیر قابل مشاهده است و در چه منطقه ای از کد. همه از آن به نظر می رسد بسیار شبیه به راه آن در C. به نظر می رسد بنابراین متغیرهای مورد نظر به طور کلی در آکولاد در یک تابع، و پس از آن نیز وجود دارد متغیر در سطح جهانی محدود شده است که are-- اگر شما یک متغیر ارسال در خارج از یک تابع، آن در کل متن قابل مشاهده خواهد بود. یکی از تفاوت های بین جاوا اسکریپت و C به طور خاص، این است که اگر شما یک جهانی اعلام در هر نقطه متغیر در یک فایل متنی آن را در هر تابع قابل مشاهده است که در آن فایل متنی. این درست است، درست است؟ HUGH ZABRISKIE: بله. SAM سبز: پس این نیز کمی کمی بد بو در مقایسه با C، جایی که ما همیشه به حال به ما تعاریف متغیر بالا مکان آنها استفاده شد. این یک قاعده است که اجرا نمی دیگر، بنابراین، کمی متفاوت است. و دوباره فقط به مجددا تاکید، جهانی در برابر variables-- محلی بسیار شبیه به C. شما می تواند دو متغیر با همین نام، و یکی از نام خود را سایه می شود توسط یک متغیر محلی اگر یکی از آنها جهانی بود. نوع بنابراین، مشابه مشکلاتی که برخی از شما ممکن است به برخی از اجرا در از مشکل خود را مجموعه تا کنون. سرد، به طوری که متغیرها. کنترل جریان، به این معنی مانند، اگر-else-- stuff-- منطقی و حلقه. بنابراین برای شروع با، این چیزی است که اگر دیگری، گفته هایی از قبیل در جاوا اسکریپت است. قرار دادن چیزهای مختلف در خطوط مهم نیست. این فقط یکی از قراردادهای برای راه کد ساختار ما. درست مانند C، ما یک "اگر"، بیانیه ای پرانتز. این چیزی است که من به معنای نیست. من دوباره آن را انجام داد. HUGH ZABRISKIE: تلاش برای خروج؟ SAM سبز: نه، من تنها در تلاش برای بزرگنمایی شود. مهم نیست. بنابراین، ما باید یک "اگر" بیانیه و ما یک شرایط در داخل از آن که ارزیابی به درست یا غلط، و که تعیین اینکه آیا یا نه ما را وارد کنید که بلوک کد است. و به همین ترتیب، ما باید دیگری اگر، و یک else، درست مثل ما به در C. استفاده شما همچنین باید خیلی راحت باشد حق کردن خفاش با حلقه، چرا که آنها نیز نگاه بسیار شبیه C به نظر می رسد. اما شما دوباره متوجه خواهید شد که ما ، به جای INT initializations، ما initializations VAR. و من حدس می زنم شما مراقب باشید به مطمئن شوید که شما ارزش تغییر دهید از من از نوع int به یک رشته، برای مثال، به دلیل که رفتن به باعث رفتار عجیب و غریب شما ممکن است انتظار. اما این باید نگاه بسیار آشنا، و همچنین. پس این است که همه چیز شروع به یک کمی دیوانه در جاوا اسکریپت برای کسی که در حال رفتن از پس زمینه C. توابع وجود دارد در جاوا اسکریپت، و یک راه وجود دارد اعلام یک تابع است که به نظر می رسد مرتب کردن بر اساس شبیه به C و پس از آن یکی دیگر وجود دارد که به نظر می رسد نوع متفاوت است. نسخه اول، که ما در اینجا می توانید ببینید، نوع C مانند، که در آن ما می گویند، این یک تابع باشد، آن یک نام را، به تعدادی از استدلال، و سپس محتویات از تابع به داخل آن آکولاد. ما یک نمونه از خواهید دید مباحث مطرح شده در یک ثانیه. در حالی که در خط بعدی، ما می بینیم، آه، در اینجا یک متغیر به نام "myFunction،" و ما آن را برابر با این تابع thing-- عمومی است که به نظر نمی رسد که هر چیزی در جریان است. به این دلیل که متفاوت از C است که جاوا اسکریپت همان چیزی است که یک زبان تابعی به نام، و یا عناصر عملکردی، که به معنی که توابع در واقع ارزش ها. و این بدان معناست که ما می توانیم مجموعه ای یک متغیر را برابر یک تابع و سپس حرکت آن تابع در اطراف، با تصویب آن به عنوان آرگومان، انجام همه نوع از مسائل می خواهم که با توابع. یک چیز دیگر به note-- توابع نوشته شده با تعداد معینی از استدلال است. ما یک مثال از یک تابع را ببینید با یک استدلال در اسلاید بعدی. اما جاوا اسکریپت نیست فریاد زدن در شما اگر شما سعی کنید به استفاده از یک تابع با شماره را اشتباه از استدلال. آن را فقط بهترین حالت آن به انجام، به این معنی که اگر شما منتقل می کند، شما یک تابع است که انتظار می رود پاسخ بحث با هیچ استدلال، که خواهد افتاد آن است آن را بهترین حالت آن را امتحان کنید و اجرا که کد، و اگر آن را در نهایت اجرا می شود به یک استثنا و یا خطا، آن را که استثنا و فقط نگه داشتن going-- است که فقط یکی از راه های که کار می کند جاوا اسکریپت. آره. رسید چه اتفاقی می افتد اگر بیش از حد بسیاری استدلال وجود دارد؟ SAM سبز: پس از سوال این بود که چه اتفاقی می افتد اگر بیش از حد بسیاری از استدلال وجود دارد؟ و پاسخ این است که جاوا اسکریپت فقط به چشم پوشی از آنهایی هستند که پس از آنهایی که آن را انتظار دارد. آن را امتحان کنید خواهید برای اجرای تابع پاسخ به عنوان اگر آن را فقط در دو مورد اول بود. درست؟ HUGH ZABRISKIE: درست است، آره. به طور مشابه، اگر وجود دارد بیش از حد چند استدلال هستند، آن را فقط نوع می دهد تهی به همه استدلال آن را از هیچ ارزش ندارد برای. SAM سبز: که می تواند در واقع مفید باشد، اگر شما می خواهم برای نوشتن یک تابع است که استدلالهایی تعداد متغیر طول می کشد. شما می توانید مقادیر پیش فرض در مجموعه تعریف تابع، و می تواند این واقعیت که ورودی وجود ندارد. بنابراین من می خواهم به بحث کمی بیشتر در مورد این گلوله آخرین نقطه است که توابع ارزش هستند. این یک نمونه است که کمی ذهن دمیدن اگر شما فقط آن را بخوانید، و فکر نمی کنم در مورد آنچه که در برای یک ثانیه. بنابراین، اجازه دهید نگاهی فقط در خط اول در اینجا. ما این متغیر، F1، که ما می گویند یک تابع است که این چیز است. و محتویات تابع می console.log ("سلام"). شما می توانید از console.log به عنوان فکر می کنم معادل جاوا اسکریپت از printf است. بنابراین چه اتفاقی خواهد افتاد است، اگر ما اجرای این کد در مرورگر ما، آن را چاپ یک رشته است. من می توانم نشان می دهد که. مخاطبان: توسط ورود به سیستم، هر چند، می کند که میانگین آن را در حال جایی ثبت شده؟ SAM GREEN: آره. بنابراین من به شما چه اتفاقی خواهد افتاد نشان می دهد. بنابراین سوال این بود، چه ورود به سیستم چیست؟ HUGH ZABRISKIE: پس console.log است مانند printf برای C. SAM سبز: پس console.log است مانند printf، بنابراین اگر من این console.log ("سلام")، و من پاسخ آن، رشته "Hello" می شود به کنسول چاپ کرد. این کنسول است. این درست مثل تابع () printf، که در آن آن را به بیرون استاندارد چاپ می کند. و ما در یک دقیقه را مشاهده کنید، اما این در واقع با اشاره به شی کنسول، و فراخوانی متد که شی. است که به شما حس تر در یک دقیقه هنگامی که ما به صحبت کردن در مورد اشیاء در جاوا اسکریپت، اما من فکر کردم من فقط می ذکر است که. HUGH ZABRISKIE: ما در C استفاده می شود، right-- ما معمولا نوشتن یک برنامه بزرگ در اصلی را به انجام هر کاری است. اما چه سرد در جاوا اسکریپت شما است این نوع از مفسر است که اجرا می شود در زمان واقعی، پس از آن طول می کشد فقط خط به خط، آن را میتوانید تفسیر است که در نقطه ای. و آن را نگه می دارد ردیابی چیزهایی که قبل از اجرا کرده اند، پس از آن یک ابزار بسیار مفید برای استفاده console.log، یا کنسول، به طور کلی، برای فقط بازی در اطراف با جاوا اسکریپت. SAM سبز: بنابراین رفتن به این example-- خط دوم از کد در اینجا بسیار ذهن ترا درهم میشکنند در سر من است. اولین بار من این را بخوانید، مثل این بود که، چه خبر است؟ بنابراین آنچه اتفاق می افتد این است که این اعلان تابع می گوید، من یک تابع به نام F2 که انتظار یک آرگومان، F، و سپس آن را که خواستار تابع، F، که به آن به عنوان یک استدلال به تصویب رسید بدون آرگومان است. بنابراین، ممکن است گیج کننده است که بوده است. اگر ما این را درک به عنوان F2 F1 طول می کشد به عنوان یک استدلال، و سپس داخل F2، F می شود که به معنای called-- که این خط از کد، پس از این دو خط از کد، نتایج در "سلام" به کنسول چاپ شده است. این واقعیت که ما می تواند عبور توابع اطراف به عنوان ارزش پایان می رسد تا یکی از مهم ترین ویژگی های قدرتمند از جاوا اسکریپت به عنوان یک زبان برنامه نویسی. خارج از همه از چیز عالی آن می توانید انجام، فقط به عنوان یکی از ویژگی های زبان از نظر راه که آن را می سازد همه چیز را آسان به برنامه اجازه می دهد تا برای چیزهایی که به خصوص به خوبی مناسب به وب، برنامه نویسی تابعی و کاربردی جنبه های برنامه نویسی جاوا اسکریپت یکی از مهمترین است مفاهیم قدرتمند است که در JavaScript-- وجود دارد اگر شما از من بپرسید. خنک. بنابراین، چیزی که بعد از. علاوه بر کاربردی بودن، همچنین عناصر جاوا اسکریپت وجود دارد که شی گرا، که یکی از بسیار است کلمات وزوز محبوب در علم کامپیوتر است. برنامه نویسی شی گرا یک چیز واقعا محبوب است. جاوا اسکریپت دارای یک نسخه از آن، که در آن به اعتقاد من هر ارزش است یک شی، که بدان معنی است که هر شی با هم کاری ادامه داده اند برخی از تعدادی از ارزش ها است. بنابراین برای ارزش هایی که ساده هستند، مانند یک عدد صحیح، مانند VARX برابر با 5، که جسم فقط کاری ادامه داده اند که یک مقدار است. اما ما همچنین می تواند یک وضعیت تصور where-- ما می توانیم از شرایط در C فکر می کنم که در آن ما می خواستیم به انجام چیزی را با ساختمانها، برای مثال، چند کاری ادامه داده اند ارزش و باعث می شود با هم آن را واقعا آسان به تصویب همه چیز در اطراف. این زمانی است که یک شی است در جاوا اسکریپت. این مهم است به یاد داشته باشید وقتی که من می گویند که اشیاء پیچیده برخی از تعدادی از مقادیر با هم، که توابع نیز ارزش ها، که بدان معنی است که توابع را می همچنین در داخل یک شی جاوا اسکریپت می باشد. و به همین دلیل است که مهم این است که، در حالی که ما اغلب از فراخوانی متد فکر می کنم بر روی یک شی که از مدت های محبوب از دیگر زبان های شی گرا محبوب، یکی از تفاوت های اینجا این است که که یک روش در جاوا اسکریپت است یک مقدار ذخیره شده در داخل یک شی که انجام برخی از action-- احتمالا با استفاده از ارزش های دیگر که در داخل آن شی، اما نه لزوما. بنابراین شما می توانید یک وضعیت تصور کنید، من حدس می زنم در یک کمی از راه دیوانه، که در آن شما یک روش به نام شی در شی دیگری، برای مثال. بنابراین، آن را کمی بد بو را در آن راه است. و شما همچنین می توانید از روش های تغییر که با یک شی مرتبط با اختصاص که روش تابع جدید، که آن هم بسیار متفاوت از سایر زبان های شی گرا، که در آن زمانی که ما یک شی اعلام و نمونه آن، ما می توانیم از روش های که تغییر نمی مرتبط با آن شی نیست. به طوری که خیلی متفاوت است. خنک. بنابراین در اینجا یک مثال است، برای اولین بار، از یک شی در عمل است. این چیزی است که به نام یک شیء عمومی، که بدان معنی است که آن را از هیچ ندارد نام خاص، یک کلاس را نداشته باشند، این فقط برخی از بسته بندی از ارزش است. و راهی که به نظر می رسد، ما این جفت بیرونی در اشکال مختلف طبی در اینجا که نشان می دهد به جاوا اسکریپت و می گویند، این یک شی است. ارزش در داخل از آن هر مقدار در داخل از جسم است که باید با هم پیچیده می شود. و در داخل آن شی، ما پس از آن جفت کلید، که در آن کلید اشاره به نام از ارزش در داخل از جسم، و side-- دیگر مخالف here-- روده بزرگ ارزش واقعی است که باید ذخیره شود. بنابراین شما اینجا را ببینید که ما یک کلیدی به نام fn را با ارزش سام، توسط یک کاما، گفت بر روی ورودی بعدی. سپس یک کلید به نام LN، با ارزش سبز، توسط یک کاما، به دنبال "چاپ" که رفتن به یک مقدار تابع است که رفتن به این خط از کد. اجازه دهید یک گام به عقب و باز کردن آنچه که در اینجا. پس این است که کمی پیچیده، و ما شاهد چیزی جدید برای اولین بار. "این" کلمه کلیدی چیزی که جدید است ما در اینجا دیدن، و چه می کند این است، اشاره به جریان شی در دامنه، درست است؟ بنابراین، هنگامی که ما می گویند، این اشاره تمام راه برگشت به کل این object-- هنگامی که ما انجام this.fn، ما قصد داریم به رفتن تمام راه را برگشت به این شیء، به ارزش FN رفتن و سام، آن را بکشید تمام راه تماس، چوب آن در اینجا، و سپس حرکت. مخاطبان: بنابراین با بازیابی، است که به دلیل پارامتر انجام تعریف؟ SAM GREEN: بنابراین سوال این بود، است بازیابی به دلیل پارامتر انجام تعریف؟ آره، کاملا. چه چیزی در اینجا اتفاق می افتد، این نقطه می گوید به جاوا اسکریپت، خوب، من گرفتن برخی از ارزش از این شی از خودم. و سپس آن را برای ورود نگاه نام FN، و اگر آن را در آن می یابد، آن را value-- بازگشت که، آن را سام. اما من هم می تواند تایپ چیزی نیست که از اینجا تعریف نشده است، و سپس آن را فقط بازگشت undefined-- که چیزی است که جاوا اسکریپت می تواند انجام دهید، که می تواند منافع دارند، اما آن را also-- اگر شما یک تایپی، آن را می توانید در خطاهای عجیب و غریب است. بنابراین آن را فقط سعی کنید برای پیدا هر آنچه که شما آن را به پیدا و آن را به رفتن نیست شکایت اگر آن را پیدا کند. آن را فقط می گویند، من نیست پیدا کردن آن، و سپس حرکت. پس از آن خواهد تعریف نشده، به علاوه خالی، به علاوه نام خانوادگی آره. و پس از آن ما می توانید ببینید که اگر ما پس از آن می تواند به پایین و access-- و ما tf.print () با پرانتز پاسخ. آن را به پاسخ که چاپ تابع بدون آرگومان، درست است؟ اما اگر ما فقط گفت tf.print () نقطه و ویرگول، بدون پرانتز، همه که انجام داده اند جلو از تابع از ارزش، اما در واقع آن به نام نیست. خنک. HUGH ZABRISKIE: باید ما را یک شی؟ SAM GREEN: مطمئنا، اجازه دهید که. بنابراین من می تواند این حرکت به عنوان مثال برای کنسول. ما می توانید تصور کنید که من یک شی. بنابراین این یک هدف ساده است. این جسم است که شامل دو است ارزش ها را با دو کلید، دو ارزش کلیدی جفت. بنابراین من و سپس می توانید مقدار ذخیره شده دسترسی در داخل این شی با انجام x.x1، برای مثال، و من 1 تماس. به همین ترتیب، x.x2، دریافت که ارزش برگشت. و در حال حاضر چیزی که واقعا جالب است، من می توانم در واقع چیزی به این شی اضافه پس از من آن ایجاد کرده اید. بنابراین شما می توانید تصور کنید، اجازه دهید می گویند من یک تابع است. HUGH ZABRISKIE: شما باید انجام دهید SHIFT-را وارد کنید. SAM سبز: اوه، که آزار دهنده است. چه آن را دوست ندارم؟ آه. در اینجا ما به. خنک. بنابراین من فقط ایجاد کرده اید این تابع، F، که است که برای رفتن به جریان جسم و this.x1 چاپ. بنابراین اگر من فقط F پاسخ توسط خود را، هیچ چیز را اتفاق می افتد، درست است، چون هیچ X1 وجود دارد درست در جسم آن را با اشاره به. اما، اگر من می گویند، x.f = F، و سپس من x.f () پاسخ، من قصد دارم به عقب بر گردیم 1. که تابع f در حال حاضر مرتبط با X شی، که دارای یک کلید به نام X1 در ارتباط با ارزش 1، تا زمانی که ما this.x1 پاسخ، آن را رفتن به پیدا کردن آنچه آن را به دنبال و قادر به چاپ یک مقدار است. به طوری که تنها یک نمونه است از نوع چیزهایی دیوانه شما می توانید با اشیاء در جاوا اسکریپت است. به طوری که نسخه بود نسخه عمومی، به این معنی که ما یک شی با استفاده از این ایجاد کرده اید پرانتز نماد بند نشانه گذاری، rather-- که دستی اگر ما فقط می خواهم یک نمونه از یک شیء خاص، اما اگر ما می خواهیم به بیش از یک از همان نوع. و پاسخ به این سوال این است، چیزهایی وجود دارد کلاس در جاوا اسکریپت به نام است. ما می توانیم یک تابع ایجاد می کند که هیچ نوعی از مقدار دهی اولیه برای یک شیء خارجی، و ما می گویند، مانند، class-- من تا نام از object-- قابل استفاده مجدد برابر تابع که از آن مجموعه است. پس چه این خواهد بود معادل به ایجاد یک شی است که خواهد بود فقط دوست دارم، آکولاد، STR، روده بزرگ، این یک رشته است، نقطه و ویرگول، آکولاد. این امر می تواند عمومی شی ما مقداردهی اولیه، با یکی از تفاوت در خط بعدی ما یک نمونه اولیه ایجاد کنید، که به معنی آن یک کلید پیش فرض است که ما به جسم ما اضافه کنید که دارای ارزش ذکر شده در اینجا. به این معنی که، زمانی که من ایجاد یک به عنوان مثال از این شیء MyClass، آن را به از پیش ساخته شده در داخل آن را یک مقدار به نام STR و ارزش دیگر نام myPrint است که برای رفتن به یک تابع. عالی. عالی. بنابراین آخرین چیزی به در مورد جاوا اسکریپت می گویند است که آن را واقعا برای آنچه که مفید عملیات های آسنکرون نامیده می شود. ابزار آسنکرون این است که ما می توانید برای برخی از عملیات صبر کنید کامل قبل از ما حرکت در، اما حرکت در حالی که ما منتظر و پس از آن چیزی اتفاق می افتد بعد از آن. و آنچه که من در آن است، شما می توانید تصور کنید که در آن یک وضعیت شما درخواست برای ارسال برخی از وب سرور در جایی، و آن را به برای شما ارسال تماس برخی از تکه های بزرگی از داده ها، درست است؟ و کاربر می تواند خود را در صبر ضمن برای اینکه این اتفاق بیفتد، و هیچ چیز می تواند در حال انجام در آن زمان است. اما این یک طرح بزرگ، درست است؟ شما نمی خواهید صفحه وب به یخ. اگر کاربر می خواهد به در منوی کشویی کلیک کنید. این یک الگوی طرح بزرگ نیست. در عوض، اساسا چه جاوا اسکریپت می گوید، OK، انجام این عملیات غیر همزمان. بنابراین مانند، صبر در پس زمینه، و پس از آن زمانی که عملیات انجام شده است، پاسخ پاسخ به تماس تابع پاسخ برخی از تابع، برخی از action-- به سیگنال که عملیات ما برای پایان دادن به انتظار بودند تمام شد. و به همین دلیل است که فوق العاده قدرتمند است، ما چیزی می تواند انجام دهد، تصویب یک استدلال، انجام کاری، و سپس صبر کنید برای چیزی اتفاق می افتد. سپس، یک بار که چیزی کامل، ما می توانیم یک پاسخ به تماس پاسخ. این واقعا دستی به دلیل آن را اجازه می دهد تا ما انجام کارهای با API صوتی وب، برای مثال، مانند بار فایل صوتی را از یک سرور راه دور بدون نیاز به صبر برای تمام فایل های صوتی به بارگذاری می شود، که واقعا می تواند بد برای تجربه کاربر. خنک. تاریخ و زمان آخرین یادداشت ها در باره زن و شوهر اشکال زدایی، از آنجایی که این یک چیز شما به باید انجام دهید این است به عنوان بخشی از پروژه خود را، تضمین شده است. من کنسول جاوا اسکریپت ذکر شده است. این یکی از ویژگی های فوق العاده مفید است از تمام مرورگرهای مدرن، و ما واقعا شما را تشویق به راحت با استفاده از کنسول خود را، اگر شما می خواهید برای گرفتن خوب در جاوا اسکریپت. این فوق العاده برای مفید اشکال زدایی، اما آن را نیز واقعا برای بدانند مفید چگونه به استفاده از یک API. آن را برای واقعا اجازه می دهد تا آزمایش آسان بدون نیاز به تایپ برخی کد، و سپس آن را کامپایل کنید. شما لازم نیست که برای انجام تمام این مراحل. شما می توانید فقط ارسال برخی از کد به یک خط، و پس از دریافت بازخورد فوری این که آیا این خط از کد یا نه worked-- بسیار مفید است. و همچنین، فقط یک note-- فنی کنسول جاوا اسکریپت برای مثال است یک REPL-- به طوری که R-E-P-L است، REPL، که برای خواندن می ایستد، ارزیابی، حلقه چاپ. شما در حال رفتن به تایپ برخی از مسائل در، آن را به خواندن آنچه شما در تایپ، آن را آن را ارزیابی، و آن را چاپ خروجی، و سپس آن را دوباره شروع می شود. که اجازه می دهد تا شما را به سرعت در رفتن محافل تکرار، که واقعا سرد است. من حدس می زنم آخرین واقعی note-- این توجه داشته باشید آخرین واقعی است، بله. چگونه می توانیم از جاوا اسکریپت استفاده کنید؟ بنابراین برای اولین بار، ما می توانید وارد با استفاده از یک تگ اسکریپت در بالا و یا پایین از HTML file-- هر نقطه در داخل یک فایل HTML، واقعا. و در یک تگ اسکریپت، وجود دارد دو زیر راه واردات جاوا اسکریپت. اول این است که با داشتن یک فایل جاوا اسکریپت جداگانه که ما در تمامیت خود را وارد کنید، و یا با داشتن یک منطقه از کد مانند اسکریپت برای شروع، و پس از آن اسکریپت بک اسلش برای پایان دادن به. و پس از آن ما فقط ارسال جاوا اسکریپت در داخل فایل HTML. آن دو راه می باشد. شما نمی توانید آن را در داخل HTML را داشته باشد. مخاطبان: یکی بهتر از دیگری؟ SAM سبز: سوال بود، یکی بهتر از دیگری. بنابراین، بله، به عنوان یک عمل سبک برنامه نویسی، و همچنین آن را مانند یک عمل طراحی شده است. دو دلیل وجود دارد دلیل آن ممکن است بهتر است. اول این است، آن را می سازد کد خود را بسیاری بیشتر قابل خواندن اگر همه HTML خود را است در یک مکان، همه CSS خود را در جای دیگر، همه جاوا اسکریپت خود را در یک مکان سوم است. درست؟ من فکر می کنم ما باید در حال حاضر صحبت در مورد آن در sections-- مانند CSS-- چه که is-- و آن می رود اغلب در یک فایل دیگر. بنابراین، نوع مشابه از مفهوم در اینجا. شما همچنین می توانید تصور کنید که جاوا اسکریپت می شود در بیش از یک مورد استفاده مجدد قرار صفحه HTML، و یا شاید یک بسیاری از صفحات HTML بزرگ، و داشتن که جاوا اسکریپت refactored است به یکی از فایل است که شما می توانید وارد به بیش از یک محل اجازه می دهد تا کد به راه نگهداری است. شما می توانید تصور ساخت یک تغییر به جاوا اسکریپت و نیاز به آن را تغییر دهید در 100 فایل های مختلف. و به جای آن ما فقط می توانید آن را تغییر دهید در یکی، که راه های قوی تر. آیا من به سوال شما؟ خنک. ما همچنین می توانیم به کنسول تایپ کنید، همانطور که ما قبلا ذکر کردیم. و دوباره، یکی از آخرین note-- وب صوتی ساخته شده است، شما لازم نیست برای بارگذاری هر چیزی. خنک. هر گونه سوال وجود دارد، آیا شما سوال بیشتر در مورد جاوا اسکریپت، قبل از ما در حرکت؟ مخاطبان: [نامفهوم] SAM سبز: همه حق است، سرد است. بنابراین در حال حاضر او را به رفتن به در مورد API صحبت کنید. HUGH ZABRISKIE: داغ. با تشکر از سام. SAM سبز: حتما. HUGH ZABRISKIE: بسیار معروف، بنابراین ما را در از جاوا اسکریپت حرکت می کند. بنابراین ما در مورد برخی از صحبت کردیم ملزومات جاوا اسکریپت، و کسانی هستند که متغیرها، توابع، اشیاء، توابع به عنوان متغیر، بارگذاری ناهمگام. این همه چیز است که شما را به عنوان شما استفاده از صدا وب. بنابراین ما فقط قصد داریم به بحث در مورد آن برای اولین بار در سطح بالا است. این API است، پس از آن چیزی که ساخته شده است، به عنوان سام گفت: درست به جاوا اسکریپت که شما در کنسول استفاده کنید. و این در واقع درست مثل C ++ کد که واقعا به کروم ساخته شده است و فایرفاکس، و همه از این مرورگرها. بنابراین ایده اصلی با وب صوتی است که شما باید این نوع از خط لوله صوتی، درست است؟ بنابراین داده های صوتی خود می آید در در بعضی از فرم. از نوع سه forms-- اصلی وجود دارد شما باید نوسان ساز، که یک موج سینوسی ایجاد، موج کسینوسی، ما قصد داریم تا ببینید که چگونه است که کار می کند. یکی دیگر از بسیار معمول است، البته، MP3 است. بنابراین شاید شما با شروع یک آهنگ، و سپس شما می خواهم به انجام برخی از فیلتر به و خروجی that-- است که می تواند یک منبع امکان پذیر است. و پس از آن واقعا سرد یک میکروفون است. بنابراین شما می توانید برخی بسیار استفاده تماس های اساسی در جاوا اسکریپت برای دسترسی به میکروفون، و بنابراین اگر شما می خواستم به یک برنامه مانند یک آشکارساز زمین، به عنوان مثال، که طول می کشد در صدا و ارقام خود را pitch-- راه بسیار آسان برای که. شما فقط می توانید نوع از آن را بخوانید در، کشف کردن فرکانس، و سپس خروجی یک عدد است. بنابراین ما به عنوان به خوبی خواهید دید که چگونه است که کار می کند،. مقصد است که اساسا که در آن داده های صوتی خروجی است. بنابراین به طور کلی، که مانند بلندگوهای لپ تاپ شما. گزینه های دیگر مانند ScriptProcessorNode-- ما به گره ها در یک گرفتن second-- اما اساسا، هم شما با قرار دادن صدا از طریق کامپیوتر خود را از طریق بلندگو، یا شما به آن نوع از ضبط، به طوری که شما آن را ذخیره سازی به عنوان داده های صوتی. بنابراین شاید اگر کسی ایجاد موسیقی در برنامه های خود را و پس از آن شما می خواهید برای ضبط و شاید مانند که صادرات آن به SoundCloud، برای example-- که می شود یک راه برای انجام این کار. همه چیز سرگرم کننده، که ما در مورد صحبت می کنید، اتفاق می افتد بین این دو نقطه، جایی که ما در موسیقی بار و سپس خروجی آن است. بنابراین من قصد دارم به پنج مورد بحث مراحل تولید صدا در یک ثانیه. ما چیزی به نام AudioContext که این لفاف بسته بندی کمی ما را در اینجا مشاهده است. در واقع آنچه is-- اگر ما AudioContext رفتن به کنسول جاوا اسکریپت در حال حاضر، ما می توانیم یک در حال حاضر ایجاد کنید. فقط یک مثال از REPL، درست است؟ ما در حال خواندن، ارزیابی، و آن را چاپ می کند. AudioContext یک دولت جهانی است. این یک ساختار، آن را یک شی اینجا، و آن را نگه می دارد اطلاعات در مورد چیزهایی که در حال رفتن به بر روی صفحه نمایش مربوط به صوتی. یکی از نمونه های زمان کنونی است. این به شما می گوید تعداد از ثانیه، بسیار دقیق، از صفحه وب لود می شود. پس این است که واقعا مفید اموال که شما می توانید استفاده کنید. آن را به عنوان خوانده شده only-- من فکر می کنم در واقع شما می توانید سعی کنید آن را تنظیم یک مقدار. آن را به شما آن را، و پس از آن اگر شما آن را چاپ again-- آن را انجام داد که در واقع کاملا کار نمی کند. بنابراین وجود فقط خواندنی هستند خواص در جاوا اسکریپت. این است که واقعا مفید باشد اگر شما در حال همگام سازی نوع بسیاری از متفاوت اطلاعات، زمانی که شما نوع بازی صداهای مختلف است. یکی واقعا مفید دیگر مقصد زمینه است. قطعا، اگر شما علاقه مند هستید، تلاش این در سمت راست کنسول خود را اکنون. بنابراین، این AudioDestinationNode است. در واقع آنچه این می گوید، که در آن است خروجی رفتن؟ بنابراین ما دو گزینه واقعی در اینجا وجود دارد. معمولا به طور پیش فرض فقط بلندگوهای خود را، بنابراین AudioDestinationNode اساسا فقط می گوید صفر خروجی به صدا وجود دارد در آینده، به بلندگو فرستاده شده است. بنابراین به طور کلی، شما نمی باید به بازی با آن است. اگر شما علاقه مند در واقع با استفاده از هستید ScriptProcessorNode برای ضبط، قطعا من یک شلیک ایمیل بعد به دلیل این که کمی پیچیده تر است. اما به طور کلی، شما فقط مهربان هستید از خروجی صدا در بعضی از فرم. خیلی باحال، ما اینجا تماس پرش. مخاطبان: من متاسفم. HUGH ZABRISKIE: آره. مخاطبان: من می دانم که شما گفت به صحبت به شما بعد در مورد ضبط. می تواند به شما رابط کاربری است که با نرم افزار ابزار؟ HUGH ZABRISKIE: با نرم افزار ابزار؟ بیایید ببینید. گمان نمی کنم. پس رفتن بین مشتری، که جاوا اسکریپت است کنسول و واقعی خود را کامپیوتر است به طور کلی، چیزی است که نوع از حد، اگر شما خواهد شد، نوع با ماهیت the-- این نوع از چیزی طراحی، اما شما سعی کنید برای حفظ جداگانه مرورگر از کامپیوتر واقعی کاربر. به طور کلی، تنها چیزی که شما قادر به هستید دسترسی میکروفون و یا دوربین است. شما قادر به، من فکر نمی کنم، استفاده از ابزارهای نرم افزار. با این حال، اگر شما ایجاد یک مسیر در نرم افزار ابزار، صادر از آن، شما می تواند بار که در اینجا، آن را فیلتر، برای مثال، فرایند است که، و ضبط که به یک صوتی و یا Destination--، no-- یک کره گره پردازنده. و سپس از آنجا، شما می توانید صادرات که به SoundCloud، شما می تواند آن را در یک ایمیل ارسال کنید، یا هر آنچه که شما از وجود دارد مانند. اما نوع یک مانع کمی وجود دارد بین ساخت موسیقی بر روی کامپیوتر شما و ساخت آنلاین موسیقی است. SAM سبز: و این منحصر به فرد این API است. این یکی از ویژگی های امنیتی کروم است، و من فکر می کنم هر مرورگر مدرن است. مرورگر خود شامل است. بنابراین برای مثال، یک صفحه وب می تواند استفاده از جاوا اسکریپت صدا به نوبه خود در در بلندگوهای خود را، برای مثال. یا آن را می توانید کامپیوتر خود را خاموش نکنید. و هیچ نقطه میانی وجود دارد بین این دو چیز، راست، پس یا شما یک انتزاع کامل، و یا شما برای باز کردن نقص امنیتی از اجازه دادن به یک برنامه نویس با نیت بد انجام هر آنچه که آنها با لپ تاپ خود را می خواهید. و به همین دلیل کروم خود شامل است. HUGH ZABRISKIE: آره. فرقی میکنه؟ باحال باحال. من فقط رفتن به شد یک مثال از یک نشان می دهد. این است که تقریبا به عنوان آنجا که می کنید، در دسترسی به کامپیوتر کاربر. اگر شما یک صفحه کلید USB وصل، شما می توانید چیزی به نام وب استفاده MIDI API، که ما نمی خواهد واقعا در مورد اینجا صحبت می کنید، اما این API دیگری که است ساخته شده را به حداقل Chrome-- دوباره، این است که چرا ما عاشق Chrome-- من فکر می کنم فایرفاکس یا سافاری، این چیزی که آسان به است مرورگرهای مختلف google-- دارند پشتیبانی های مختلف برای که رابط های برنامه کاربردی آنها اجرا شده است. اما اگر شما می خواهید را به برق وصل یک صفحه کلید و کار با این اطلاعات، نوع ارسال صفحه کلید اطلاعات را به کامپیوتر و سپس استفاده از آن آنلاین، این API است که در آن شما می شود، کاری است که. خنک. باشه. بنابراین، سرعت در حال حرکت در اینجا. چگونه در زمان کار می کنیم؟ SPEAKER 1: درباره 15. HUGH ZABRISKIE: 15 دقیقه؟ باشه خوبه. بنابراین ما در اینجا پیش نژاد. بنابراین اساسا، نقطه اصلی فکر این به عنوان یک خط لوله است که هر مرحله در خط لوله یک سری از گره های صوتی است. منبع ما، اجازه دهید بگویم، یک نوسان ساز است. ما نیاز به ایجاد یک گره نوسان ساز. و این تنها نوع از تابع کمی و همه آنها بر اساس از از زمینه های صوتی در اینجا. مخاطبان باید گفت: این نوسان ساز، معنی آن را در واقع به معنای واقعی کلمه از دو قطب مختلف به جلو و عقب؟ HUGH ZABRISKIE: نه، آن را مانند نمایندگی های دیجیتال است. در واقع در C ++ اجرا شده است. من در واقع مشخصات مطمئن شوید که چگونه آن را در واقع اجرا، اما همه این است که به عنوان داده های باینری. در واقع، آره. که می شود گفت، من می توانم در واقع، اگر شما علاقه مند هستید، من می توانم شما یک کمی بیشتر ارسال اطلاعات در مورد چگونگی شکل موج نگهداری می شوند داشتن یک فرمت دیجیتال. باشه خوبه. بنابراین ما در حال تولید یک تن مثل سینوسی موج یا چیزی شبیه به آن، شاید 440 هرتز. ما ایجاد یک نوسان ساز. اگر ما می خواهیم را به مجموعه حجم، ما اتصال هر چیزی که به GainNode، که ما می تواند با .creategain است. که مجموعه حجم خود را. شما می توانید بر روی هر که عبور از دیگر options-- خوب، بنابراین یک منبع بافر صوتی گره است که در آن شما ممکن است ذخیره MP3 که شما در لود شده. فیلتر Biquad است برای فیلتر اگر شما می خواهید را به تمام پایه خارج از یک آهنگ و یا چیزی شبیه به آن. خدای ناکرده می خواهید را به پایه از یک آهنگ. و گره AudioDestination است، دوباره، مانند که در آن نهایی ما است. اگر شما تا به حال به دیدن علاقه مند هستید تمام گزینه های مختلف ممکن است، فقط به تب بروید و اجازه دهید خودکار کامل آمده است. و اگر شما ایجاد کند، شما همه را ببینید چیزهای مختلف است که شما می توانید ایجاد کنید. شما می توانید پویا ایجاد پردازنده اسکریپت، من حتی نمی دانند چه که است، برای مخلوط کردن ادغام کانال و نفاق انداز ورود کانال و تمام. خنک. پس این است که فقط یک نمونه ای از یک خط لوله. بنابراین ما باید سه منبع در آینده. شاید این شکل موج ها، شاید این MP3 ها هستند. یکی از رفتن را از طریق فیلتر، یک دیگر را به گرفتن تحریف دیگر سوژه متحرک از روبرو یکی از چپ و راست. شما می توانید تمام انواع چیزهای انجام و همه آنها در اطراف با هم مخلوط، و پس از آن بیرون می آید صوتی در پایان، به عنوان مقصد. این یک نمونه از آنچه که بیشتر پیچیده وب کد صوتی نظر می رسد. شما در حال ایجاد این اشیاء مختلف حق here-- من مطمئن هستم که این نیست. نه، آن در زوم است. باشه. SAM سبز: شما کنترل، حرکت کردن. HUGH ZABRISKIE: کنترل Scroll-- SAM سبز: نه، نه. کنترل-- HUGH ZABRISKIE: اوه، کنترل، حرکت؟ اوه، مارپیچ. آره. وای، نه، نه. باشه. من نمی خواهد انجام دهد. پس بله، در اولین بار از این بخش اینجا، شما ببینید ما در حال ایجاد این مختلف گره از زمینه. ما فقط آنها را چیدمان با هم در بخش دوم توسط این تابع به نام اتصال. این یک واقعا کلیدی تابع در وب صوتی. این فقط بدان معناست هنگامی که شما انجام چیزی با صدای در یک گره، تصویب آن را به گره بعدی. بنابراین ما باید به منبع، آن را متصل به تجزیه و تحلیل، تجزیه و تحلیل می کند چیزی با آن، آن را به اعوجاج می رود، و به همین ترتیب، و به مقصد در پایین سمت راست است. خنک. خوب، پس ما را به در حال حرکت. pipeline-- دوباره، این هستند خطوط لوله رایج ترین، بنابراین ما در مورد تمام این چیزهایی مانند صحبت اعوجاج، سوژه متحرک از روبرو، همه این مسائل. اگر شما واقعا علاقه مند هستید در استفاده از چیزهایی ابزارهای نرم افزار، کسانی که احتمالا به شما علاقه. اگر نه، شاید شما فقط می خواهم به بازی صدا، یا شاید شما فقط می خواهید مجموعه ای از حجم در صدا. آن دو مرتب سازی بر رایج ترین خطوط لوله در تولید صدا. باز هم، راه شما می توانید آن را به عنوان یک oscillator-- بنابراین، اجازه دهید یک نسخه ی نمایشی که در اینجا ببینید. بنابراین ما قصد داریم برای ایجاد یک زمینه صوتی ساده در اینجا، و از آن ما در حال رفتن ایجاد نوسان ساز ما است. به طوری که است، دوباره، ما فقط در حال رفتن به پاسخ درست نوسان ساز. ما قصد داریم برای تنظیم یک فرکانس در که، 440 هرتز، مورد علاقه همه است. سپس ما متصل است که به مقصد point-- است که گوینده، به طوری که مقصد زمینه. در نهایت، ما فقط می گویند، صفر شروع ثانیه از حال حاضر، و ما باید صدا؟ [زنگ] HUGH ZABRISKIE: اینجا می رویم. این فقط یک موج سینوسی است. باشه خوبه. و سپس ما را متوقف کند. مخاطبان: از کجا که بازخورد آمده است؟ HUGH ZABRISKIE: بازخورد؟ اوه، احتمالا میکروفن است. پس بله، این که چگونه شما آن را انجام. و در واقع، اگر من نگه آن در حال اجرا، شما می می تواند فرکانس، ارزش آن را به عنوان در حال اجرا، به طوری که یک چیز سرگرم کننده را به بازی در اطراف است. خنک. که یکی از دوست داشتنی به ارائه همیشه. SAM سبز: ما نمی در مورد آن فکر می کنم، آیا ما؟ HUGH ZABRISKIE: آره، که یکی از تند و زننده است. بنابراین، بافر loading-- من یک را نشان می دهد به عنوان مثال از که در پایان. که در حال بارگذاری یک MP3. و میکروفون، شما با استفاده فقط یک تابع نام Navigator.getUserMedia () برای درخواست دسترسی به کاربر میکروفون برای این اطلاعات است. در اینجا فیلتر، من فقط نگه داشتن در حال حرکت از این. این سطح بسیار بالا است، اما فیلتر فقط شما اجازه می دهد تا [بوق] تصفیه آب و تصفیه همچنین اجازه می دهد تا شما برای ایجاد چیز مثل صورتی سر و صدا، سر و صدا قهوه ای، سر و صدا سفید. اگر می خواهید ایجاد سر و صدا خالص است، که بعضی از افراد به یک ظرف غذا به اطراف با، شما می توانید وب سایت های صوتی استفاده فیلتر برای انجام این کار. صوتی Panning-- بنابراین تصور کنید اگر شما در حال نوشتن یک بازی و شما می خواهید صدا را به صدا مانند آن را آینده، مانند، تیراندازی در سراسر صفحه نمایش، شما می توانید از سوژه متحرک از روبرو صوتی استفاده کنید برای ایجاد این نوع از مخروط، که like-- آن mathy بسیار است، اما در واقع واقعا سرد اگر شما آن کار می کنند، و در برخی خوب وجود دارد آموزش در آن من می توانم شما ارسال کنید. در واقع، شما می تواند به نوعی از صدا ایجاد از چیزی که توسط در راه 3D. و اگر شما علاقه DJ، شما می توانید شروع به مخلوط کردن و عبور از آهنگ محو شدن است. این تنها برخی بسیار اساسی کد، اساسا آنچه که من قبل از انجام. این مجموعه حجم نوسان ساز، بنابراین ما ایجاد نوسان ساز ما که شکل موج ایجاد می کند. ما در ایجاد GainNode ما، تنظیم فرکانس ما، و سپس اتصال نوسانگر به GainNode، که پس از آن اساسا این تغییرات چه مقدار سیگنال از طریق مجاز است. اما در واقع، آن را یک دیجیتال چیزی، پس از آن بیشتر just-- آره. این چیزی است که در واقع اتفاق افتاده است، اما این چیزی است که در زندگی واقعی اتفاق می افتد با به دست آورید. مخاطبان: --quantization پارامتر حجم؟ HUGH ZABRISKIE: با عرض پوزش. مخاطبان: آیا این یک پارامتر حجم کوانتیزه؟ HUGH ZABRISKIE: آره. و این یک چیز من واقعا است کمبود در دانش من، چگونه کار می کند افزایش در سطح های دیجیتال است. من با واقعی می دانم سیگنال، آن را اساسا چقدر کنترل شما تقویت سیگنال قرار دارند. پس آره. من شما را اطلاعات بیشتر در مورد ارسال که، چون من می خواهم در واقع کنجکاو می شود به دانستن بیشتر در مورد آن. اما اساسا پارامترهای هستند، یکی از fold-- است signal-- بلندتر و صفر است هیچ سیگنال، یا شما هر گونه صدا را نمی شنوند. ما هم نسخه ی نمایشی برای جست و خیز که به دلیل آن را اساسا آنچه که من قبل از انجام. و دوباره، Context.Destination گره مقصد صوتی می باشد. عالی، OK. بنابراین من قصد دارم به انجام سریع دو دموی. چگونه در زمان کار می کنیم؟ SPEAKER 1: حدود 10 دقیقه. HUGH ZABRISKIE: 10 دقیقه؟ عالی! عالی. بنابراین یکی از اولین من قصد دارم به انجام، آن را به نام آهنگ مورد علاقه من. بنابراین این فقط یک کمی HTML جاوا اسکریپت. ما در حال رفتن به دو دکمه در صفحه بازی آهنگ مورد علاقه من و متوقف کردن آهنگ مورد علاقه من. من این را تغییر دهید. مخاطبان: میکروفون خود را بپوشانید. HUGH ZABRISKIE: آره. و من در اینجا لود شده یک اسکریپت که basically-- و این است که واقعا مفید برای بارگذاری یک MP3، بنابراین این فقط باعث می شود در حال بارگذاری راه MP3 های سریع تر است. آن را اساسا تنها یک لفاف بسته بندی. این فقط باعث می شود روند بارگذاری در MP3 ها بسیار سریع تر، در غیر این صورت شما با استفاده از درخواست HTTP، نوع مانند آنچه که ما انجام در قطعه فعلی را با سرور. این واقعا زشت، شما نمی خواهید به انجام آن است. پس این مرد، بوریس Smus، نوشت: یک واقعا ابزار کوچک مفید به نام BufferLoader. همه شما باید انجام است که به سادگی عبور از آن زمینه، شما آن را list-- عبور و یا، آره، یک لیست در جاوا اسکریپت است؟ SAM سبز: یک آرایه. HUGH ZABRISKIE: آه، آن است یک آرایه، درست است. این یک آرایه از مسیرهای است به فایل های مختلف. و سپس آن را یک تابع منتقل می کند. این پاسخ به تماس ما صحبت می کردند است در مورد با بارگذاری ناهمگام. که خواهد شد به نام هنگامی که فایل های لود می شود. و تابع است که نامیده می شود که فایل بارگذاری شده به عنوان یک محیط طول می کشد آرایه ای از بافر پر است. به طوری که در اینجا رخ می دهد. در واقع، BufferList است رفتن به یکی value-- و یا آن را به یک آرایه از طول، است که در آن در شاخص صفر تمام فایل های لود شده از MP3. پس آنچه که من انجام وقتی که من به پایان برسد در حال بارگذاری است، من به سادگی ایجاد یک منبع بافر، که یک گره منبع بافر صوتی است. گام بعدی این است که من در بار source.buffer به عنوان بافر کامل لود شده از BufferList-- آن را در بسیاری از buffers-- و پس از آن شما را در ارتباط صوتی است که بافر به مقصد. بنابراین آنچه در آن را به انجام فقط به سادگی قرار دادن MP3 مستقیم از طریق به خروجی، و شروع به آن را بلافاصله پس از گرفتن این تماس. سرد، پس بیایید ببینید این اتفاق می افتد در عمل است. من [نامفهوم] در اینجا، بیایید ببینید. بنابراین من فقط رفتن به شروع یک سرور عمومی. این چیزی است که که شما نیاز به انجام اگر شما ساخت درخواست برای فایل های در حال بارگذاری. من قصد دارم برای شروع یک سرور عمومی. این است که اساسا کل خود را PSET در حال حاضر در یک خط، اما آن را فقط شروع سرور روی پورت 80/80. بنابراین ما در اینجا، ما رفتن به بار 80/80، ما قصد داریم برای رفتن به آهنگ مورد علاقه من. بنابراین اگر من ضربه "بازی من آهنگ های مورد علاقه "در حال حاضر، آن را به بار من آهنگ های مورد علاقه و بازی it-- [MUSIC - ایگلز، "زندگی در FAST  LANE "] --which اتفاق می افتد به "زندگی در خط سرعت "توسط The Eagles. در حال حاضر، من می توانم ضربه "توقف من آهنگ های مورد علاقه "و پخش آن را. [MUSIC - ایگلز، "زندگی در FAST  LANE "] و اگر بروم به کنسول، به دلیل من یک متغیر جهانی بیش از اینجا استفاده می شود برای پیگیری این مقدار، آن را در واقع در حال حاضر در کنسول رسمیت شناخته شود. بنابراین آن را خودکار ایجاد برای من. بنابراین این چیزی است که بازی در حال حاضر، و من به سادگی می توانید تماس بگیرید source.stop () در آن. خوب، شما می دانید چه؟ فقط پس شما بچه ها شنیده ام این song-- شما ممکن است این آهنگ را تشخیص دهد. [MUSIC - ریک Astley، "هرگز دیگه دادن  شما تا "] [MUSIC - ایگلز، "زندگی در FAST  LANE "] ما در حال حاضر تمام Rickrolled شده است. OK، بزرگ، در حال حرکت. خنک. پس این است که اساسا یک مثال از چگونه شما می توانید یک MP3 بار file-- [MUSIC - ایگلز، "زندگی در FAST  LANE "] --and پخش آن، و متوقف کردن و شروع آن است. من می توانم انجام داده اند خیلی بیشتر [نامفهوم] یکی از آخرین من انجام است، من به شما یک [نامفهوم] نشان می دهد. [موسیقی] این ogg.wave.mp3 مانند. من فکر می کنم، اگر درست به یاد داشته باشید، من به برخی از مسائل با .M4A اجرا شود، اما من مطمئن هستم که نیستم. من فکر می کنم mp3.wave-- [MUSIC - ریک Astley، "هرگز دیگه دادن  شما تا "] باشه عالیه. من باید گفت که. به هر حال، سلام. بنابراین ما باید این را باز کنید. بنابراین در حال حاضر تمام من است، من اساسا ایجاد نحو اساسی برای ایجاد موسیقی. بنابراین اگر من چیزی شبیه به اضافه G4 در 1 2، آنچه که به معنی این است که، اضافه کردن توجه داشته باشید پیانو، G4، که چهارمین G است تا بر روی پیانو از پایین. بنابراین این نوع از MIDI است صحبت می کنند، بنابراین برای کسانی که بر اساس موسیقی، این یادداشت فقط MIDI است. رسید که در G از C میانه، درست است؟ HUGH ZABRISKIE: این G است بالا C میانه، درست است. مخاطبان: بالاتر از وسط C. HUGH ZABRISKIE: آره. در واقع، بله. من فکر می کنم در واقع ساخته شده آن را به یکی [نامفهوم]، بنابراین این ممکن است یک اکتاو بالا که. بنابراین اجازه دهید را ببینید. اگر من ضربه Play-- [توجه PIANO تکراری] --we're رفتن به شنیدن این که. ایده این است که آن را به اجرا درست مثل یک خط فرمان را، بنابراین اگر من بالا و پایین بر روی صفحه کلید من، شما می تواند به عقب برگردد قبلی دستورات است که بسیار مفید است. و در زیر لیست من از آهنگ، که همه در حال اجرا در حلقه. رسید شما فرض شد 88 کلید صفحه کلید که، درست است؟ HUGH ZABRISKIE: سوال بود، من فرض یک صفحه کلید 88 کلید، و بله، من هستم. من چه من است اساسا در زمان نمونه 88 از پیانو، یکی برای هر توجه داشته باشید. و به این ترتیب هر بار که شما از هم اکنون در شنیدن توجه داشته باشید، است که در واقع یک حلقه است که به نظر می رسد like-- این گرفتن در حلقه بازی، بنابراین برای هر توجه داشته باشید، این در حال اجرا است. چه اتفاقی می افتد، من ایجاد یک بافر دوباره، من ایجاد یک گره به دست آوردن به مجموعه ای از حجم. این فقط یک واقعا راه پیچیده و گفت من ذخیره بافر در یک source.buffer. من آن را افزایش می دهد، من اتصال آن به دست آوردن، افزایش به متصل خروجی، و سپس من آن را بازی کند. به طوری که نوع فرایند است مصرف در یک منبع بافر شده است. رسید می تواند به شما در واقع را که صدای خشک و آن را خیس [نامفهوم]؟ HUGH ZABRISKIE: شما می توانید، آره. مجدد فعل وجود دارد، وجود دارد تاخیر، اعوجاج. شما اساسا می توانید هر چیزی را در بین که در ساندویچ of-- خوب، خط لوله یک استعاره بهتر است، اما شما می توانید هر چیزی را در آن اضافه کنید. خنک. بنابراین من نسخه ی نمایشی پایان در اینجا به شما حس را فقط تعداد گسترده ای از بار شما می توانید آن تابع همه در یک بار اجرا کنید. بنابراین من قصد دارم برای حذف این. من قصد دارم برای ایجاد یک ژنراتور that-- اساسا چه does-- این است که واقعا نوع syntax-- پیچیده اما آن را رفتن به تولید یادداشت در پرواز، و فقط شروع به بازی آنها را به عنوان آن را به آنها ارزیابی می کند. [INTERPOSING PIANO] بنابراین ما فقط می توانید یک موسیقی کمی را در اینجا. [INTERPOSING PIANO] پس چه این دستور می کند، برای مثال، آن کسانی که سه نت برای طول می کشد پیانو و سپس آنها را در B3. این ترکیب ممکن است کمی بیشتر حس به کسانی که پس زمینه موسیقی در اینجا. من می توانم یک طبل ضربه اضافه کنید. من میتونم-- [INTERPOSING INSTRUMENTS] --just بازی در اطراف با که. بنابراین شما می توانید make-- [INTERPOSING INSTRUMENTS] این یکی کمی آزار دهنده است. [INTERPOSING INSTRUMENTS] به طوری که به طور تصادفی می افزاید سنج خشک در هر توجه داشته باشید 16، با 16٪ [نامفهوم]. [INTERPOSING INSTRUMENTS] آره، بنابراین راه این works-- آن را همیشه در 4: 4. [INTERPOSING INSTRUMENTS] آره، پس از چهار چهارم، و 16/8. [INTERPOSING INSTRUMENTS] بنابراین به طور متوسط، شما 60٪ از در یادداشت 16 بازدید. به هر حال، این تنها نوع برای نشان دادن خاموش برخی از چیزهایی که شما می توانید ساخت با API صوتی وب. این واقعا قدرتمند، آن را واقعا سریع، و شما می توانید بسیاری از کارهای جالب را با آن. پس دوباره، هر گونه سوال شما، ایمیل myself-- Hugh-- یا سام، و صادقانه، گوگل یک تن از منابع خوب است. هر گونه سوال و زمان آخرین؟ آره. رسید بنابراین شما می توانید دسترسی میکروفون ساخته شده در. چه اگر شما به خواست استفاده از یک میکروفون بهتر است؟ HUGH ZABRISKIE: اگر شما می خواهید برای استفاده از میکروفن بهتر است؟ پس دوباره، این بخش از است انتزاعی بین کروم و بقیه از کامپیوتر شما. مگر اینکه آن را در دسترس از طریق یک API، مانند وب MIDI API، شما احتمالا می تواند پیدا کردن برخی از هک، اما به طور کلی به عنوان امکان پذیر نیست. SAM سبز: شما می توانید also-- تمام کروم می داند آن چیزی است که به طور پیش فرض خود را میکروفون است، و به آن دسترسی است. بنابراین اگر شما یک میکروفون حال شما می توانید تنظیم به عنوان میکروفون به طور پیش فرض کامپیوتر، شما می توانید از آن است که راه دسترسی و آن را احتمالا کار می کنند. HUGH ZABRISKIE: این نقطه خوب است. من هرگز سعی ام که، ولی شما ممکن است قادر به نوع of-- اگر شما سخنران ورودی تغییر مسیر، شما ممکن است قادر به انجام این کار، آره. هر گونه سوال و زمان آخرین؟ خنک. خب با تشکر از شما بچه ها خیلی برای تماشای. من هیو هستم. SAM سبز: من سام هستم. HUGH ZABRISKIE: و این CS50.