স্যাম সবুজ: হাই, সবাই. আমাদের সেমিনার স্বাগতম. আমার নাম সেম. হিউ ZABRISKIE: আমি হিউ আছি. স্যাম সবুজ: আর আমরা আজ কথা বলতে যাচ্ছেন জাভাস্ক্রিপ্ট এবং ওয়েব অডিও API সম্পর্কে. শুধু শুরু করার, এই একটি সীমারেখা সেমিনারে জন্য আমাদের বিষয়সূচি. আমরা যে বিষয়ে কথা দ্বারা শুরু করতে যাচ্ছেন কেন আপনি ওয়েব আগ্রহী হওয়া উচিত অডিও API, কেন জাভাস্ক্রিপ্ট হয় আপনি এটা জন্য প্রয়োজন ভাষা, এবং তারপর জাভাস্ক্রিপ্ট সম্পর্কে কথা , মত তাই essentials-- কিছু করতে পারবেন ভাষার মূলসূত্র, এবং তারপর সম্পর্কে কথা একটি উচ্চ পর্যায়ের অডিও API. তারপর, হিউ কিছু বিষয়ে কথা বলতে হবে অডিও প্রকাশনা পর্যায়ে এবং তারপর এই সন্ত্রস্ত Sequencer ডেমো প্রকল্প তিনি নির্মিত এবং আপনি কোড প্রদর্শন. এবং তারপর, আমরা এর জন্য সময় আছে করব মানুষের জন্য শেষে প্রশ্ন এখানে আছেন যারা বাস. হিউ ZABRISKIE: কুল. স্যাম সবুজ: কুল. হিউ ZABRISKIE: কুল. আমি ব্যাক আপ হবে. স্যাম সবুজ: সুতরাং, প্রথম প্রথম কিছু. মহান জিনিস এক, তাই ওয়েব অডিও API সম্পর্কে প্রয়োজন কোন সেট আপ আছে যে. এটা বিল্ট ইন আসে অধিকাংশ আধুনিক ব্রাউজার, ক্রোম, এজ, একটি পুরো সহ others-- সব বেশী গুচ্ছ যে বৃহৎ অংশ মানুষ আজ ব্যবহার করা হয়. তাই না, সেখানে স্থাপন করা হচ্ছে সরাইয়া থেকে শুধু পেয়ে থেকে একটি ওয়েব সার্ভারের জন্য, যাচ্ছে আপনি কাজ শুরু করতে যা মহান, আপনার প্রকল্প, উপর. আমরা বেশ সুপারিশ প্রচন্ডভাবে আপনি বিবেচনা করে জন্য ক্রোম ব্যবহার জাভাস্ক্রিপ্ট ওয়েব ডেভেলপমেন্ট, শুধু তার ডেভেলপার কারণ সরঞ্জাম সত্যিই শক্তিশালী. আমরা মানে ঠিক কি একটি উদাহরণ হিসাবে বলার অপেক্ষা রাখে না করে আপনার জাভাস্ক্রিপ্ট খুলুন আপনি ক্রোম ঢোকা console-- এবং যদি আপনার কোন ওয়েব পাতা তাকান, এবং আপনি বাম ক্লিক তারপর উপাদান পরিদর্শন, এবং আপনি এই সামান্য ড্রপ ডাউন যান এখানে ডান এবং আপনি কনসোল উপর ক্লিক করুন, আপনি আপ একটি দেখায় কি প্রর্দশিত দেখতে পাবেন একটি কমান্ড প্রম্পট মত অনেক যে আপনি আপনার Mac দেখতে, বা আইডি তে পারে. ঠিক সেই মতো, আমরা যা করতে পারেন টাইপ, পরিষ্কার এর মতো, এখানে কমান্ড এবং যে মত অন্যান্য কমান্ড. আমরা যেমন, ভেরিয়েবল তৈরি করতে পারেন আমরা জাভাস্ক্রিপ্ট পরে দেখতে পাবেন. তাই কিছু আমরা করতে পারি জাভাস্ক্রিপ্ট, আমরা কনসোল সঙ্গে কাজ করতে পারেন এবং যে একটি সুপার সহজ উপায় API গুলি সঙ্গে প্রায় বাজানো শুরু এবং সঙ্গে আরামদায়ক পেয়ে এক্ষুণি ব্যাট করে জাভাস্ক্রিপ্ট. কোন সেট আপ করা আবশ্যক, যা সত্যিই চমৎকার. কুল. অসাধারণ. সুতরাং শুধুমাত্র আর একটি বিষয় যোগ করুন. যদি আপনার কোন আছে প্রশ্নগুলো এখানে না হয় বাস, যারা তোমাদের মধ্যে অনেক us-- এই ইমেইল বিনা দ্বিধায় আমাদের ইমেইল ঠিকানা. যদি আপনার কোন প্রশ্ন থাকে, তাহলে আপনি আমাদের জিজ্ঞাসা করতে চান না, মত, ওহ আমি একটি বাগ আছে আমার কোড, বা কিছু যে, একটি সামান্য আরো সুনির্দিষ্ট হয়তো প্রথমে গুগল. মহান সম্পদ অনেক আছে সেখানে আউট ওয়েব অডিও API সম্পর্কে. এটা সত্যিই ভাল এর নথিভুক্ত এবং এটি হচ্ছে মানুষ একটি টন ব্যবহৃত শুধু যারা শিল্প, এবং মানুষ নিজেদের জন্য মজার জিনিস নির্মাণের. তাই অনেক আছে উচিত সেখানে আউট সম্পদ. অসাধারণ. কুল, তাই কেন ওয়েব অডিও API? এই চিত্রটি একটি সামান্য বিট উপায় একটি বিবর্তনের ওয়েবে সাউন্ড সময়ের উত্থিত হয়েছে. Bgsound মূল এইচটিএমএল ট্যাগ ভালো ছিল ইন্টারনেট এক্সপ্লোরার সমর্থন ব্যবহৃত হয়. এটা শুধুমাত্র প্রশংসনীয় মৌলিক শব্দ জন্য অনুমোদিত কার্যকারিতা, খুব জোরালো ছিল না এবং আপনি কি না পারে জটিল সিকোয়েন্সিং, শব্দ যখন শুরু বা নিয়ন্ত্রণ এবং খুব প্রবলভাবে থামানো. সুতরাং, এটি বিশেষ ছিল না পাশাপাশি উন্নত. এরপর, ফ্ল্যাশ , along-- যা এসেছিল আমি আপনাকে বলছি সব পরিচিত হয় নিশ্চিত নই Flash-- হয়তো এটা কাজ করে না কিভাবে, কিন্তু আপনি অবশ্যই এটা দেখা করেছি. আপনার ফ্ল্যাশ আপডেট পেয়েছেন প্লাগ-ইন, পণ্যদ্রব্য সব ধরনের, এবং যে অবশ্যই পরিসর বাড়ানো কার্যকারিতা উপলব্ধ ছিল. কিন্তু ব্যবহারকারী উপার্জন ইনস্টল একটি প্লাগ-ইন তা হ 'ল সহ ফ্ল্যাশ একটি অপূর্ণতা আপনার আবেদন, ডান? তাহলে কি সে আপনার উপর নির্ভরশীল আছেন ব্যবহারকারী যাচ্ছে এবং এই প্লাগ-ইন খোঁজার, এবং সম্ভবত চালু করা হচ্ছে এই অতিরিক্ত ধাপে বন্ধ তারা আপনার অ্যাপ্লিকেশন ব্যবহার করার জন্য নিতে হবে. এবং তারপর একটি আপডেট হতে পারে যে আপনার পুরো আবেদন ভঙ্গ করব, এবং এটা একটা দুঃস্বপ্ন হচ্ছে শেষ পর্যন্ত খুব ডেভেলপার, জন্য. সুতরাং যে একটি ব্যারিকেড ছিল. এবং তারপর, যে বরাবর আসার পর এইচটিএমএল ট্যাগ অডিও, যা আরো আধুনিক HTML-- একটি বৈশিষ্ট্য, যা অবশ্যই আরো অনেক উপাদান জন্য অনুমতি, কিন্তু এমন কি জিনিষ আপনি করতে পারে একটি সামান্য বিট ঠিক আছে সীমাবদ্ধ ছিল জিনিস ফলস্বরূপ যে এইচটিএমএল এর প্রতিকার করতে পারল না. সুতরাং যখন জাভাস্ক্রিপ্ট এপিআই, ওয়েব অডিও API, একটি আদর্শ হয়ে ওঠে ব্রাউজার জুড়ে অনুশীলন, যে সত্যিই সেট broadened ডেভেলপারদের জন্য সুযোগের সত্যিই ভবনের মধ্যে পেতে ওয়েব জন্য শীতল স্টাফ. একটি দীর্ঘ সময়ের জন্য সেখানে ছিল হয়েছে সত্যিই শক্তসমর্থ সরঞ্জাম স্থানীয় অডিও অ্যাপ্লিকেশনের জন্য, সবাই জানে GarageBand করার মত, এবং তারপর অবশ্যই আরো আছে পেশাদারী অডিও মিক্সিং অ্যাপ্লিকেশন, এবং স্টাফ তজ্জাতীয়. কিন্তু সেখানে ছিল না একটি সত্যিই ভাল মেঘ না মেঘ, হ্যা, আমি অনুমান মেঘ ওয়েব ভিত্তিক প্ল্যাটফর্ম ডেভেলপারদের যে করা সম্ভব হবে মানুষের জন্য অ্যাপ্লিকেশন নির্মাণ অডিও মিক্সিং করতে. এবং তিনি আপনাকে দেখাতে হবে পরে, ওয়েব অডিও API সত্যিই শক্তিশালী জন্য করতে পারবেন স্টাফ, আসলেই কেবল ঘটতে যা বেশ কুল. সুতরাং যে আপনি কেন নির্দেশ এর সেমিনারে বাকি পর্যবেক্ষণ করা উচিত, মূলত. এবং এখন, আমি সম্পর্কে কথা বলতে যাচ্ছি কিছু জাভাস্ক্রিপ্ট শুধু মৌলিক উপাদান ভাষা নিয়ে, যাতে আমরা একই পৃষ্ঠায় হতে পারে আমরা যে বিষয়ে কথা যখন এপিআই একটু একটু পরে. কুল. সুতরাং, এই একটি সংক্ষিপ্ত বিবরণ. আমি এই এখানে ছিল ভুলে গেছি. হ্যা. হিউ ZABRISKIE: এখানে দুটি স্লাইড আছে. স্যাম সবুজ: এই সংক্ষিপ্ত বিবরণ সীমাবদ্ধতা কিছু অন্যান্য বাঁধাই, পুরাতন পদ্ধতি. এবং তারপর এখন, আমরা এই জিনিস আছে. কুল. অসাধারণ. সুতরাং, দয়া করে জাভাস্ক্রিপ্ট প্রয়োজনীয়. প্রথম প্রথম জিনিষ, আছে একটি বেশ উল্লেখযোগ্য পার্থক্য জাভাস্ক্রিপ্ট বনাম একটি ভাবে সি মত ভাষা, যে ভেরিয়েবল তৈরি করা হয়. সি সুতরাং, আমরা থাকার ব্যবহার করছি আমাদের ভেরিয়েবল টাইপ করার জন্য, ডান? আর আমি ভালো টাইপ মানে না তাদের টাইপ, আমি টাইপ মানে মত তাদের একটি ধরন অর্থ ধার্য মত, কোন int, একটি float, একটি গৃহস্থালি. সি, আমরা সত্যিই করতে ব্যবহার করা হয়েছে একটি পরিবর্তনশীল তৈরি করতে হচ্ছে এবং তারপর যে ধরনের বিদ্ধ আমরা যে ভেরিয়েবল ব্যবহার সম্পূর্ণ সময়. আর যে, অগত্যা খারাপ নয় কিন্তু এটা ব্যবহার করার জন্য সম্ভবত খুব কঠিন. শীতল বৈশিষ্ট্য হল জাভাস্ক্রিপ্ট এর ভেরিয়েবল কি বলা হয় "পরিবর্তনশীল টাইপ" যা আমি একটি তৈরি করতে পারেন এর মানে হল যে যে সিনট্যাক্স সঙ্গে পরিবর্তনশীল, varX উদাহরণস্বরূপ, 5 ই সমান. মূলত সৃষ্টি একটি পূর্ণসংখ্যা ভেরিয়েবল পায়ের নিচেই হুড somewhere-- কিন্তু আমি যে পরিবর্তনশীল পরিবর্তন করতে পারেন একটি পংক্তিতে পড়ুন ভালো কিছু কাজ ছাড়া একটি নতুন পরিবর্তনশীল তৈরি. আমি চিন্তা করতে হবে না টাইপ পরিবর্তন সম্পর্কে. জাভাস্ক্রিপ্ট যে টাইপ জানে পরিবর্তন, এবং যে পরিবর্তনশীল ঘটবে. সুতরাং, বেনিফিট আছে এবং যে অপূর্ণতা, এ কাজ যারা হিসেবে কেউ কিছুদিনের জন্য দয়া করে জাভাস্ক্রিপ্ট জানতে পারে. বার যখন আছে যদি আপনি দূর্ঘটনাক্রমে পারে একটি ভেরিয়েবল-এর টাইপ পরিবর্তন ও যে ধরনের পরিবর্তন না হ্যান্ডল, এবং তারপর আপনার জাভাস্ক্রিপ্ট crash-- বা একটি ব্যতিক্রম করতে পারেন আপনি হবে, কারণ, নিক্ষিপ্ত হবে ভুল টাইপ আপনি এক ধরনের আশা যখন. কুল. সুতরাং, যা scoping-- যদি ভালো হয়, আমরা কোর্সে প্রথম সপ্তাহের মনে রাখবেন, কিভাবে দৃশ্যমান একটি পরিবর্তনশীল বোঝায় এবং কোড কি এলাকায়. যে সব খুব অনুরূপ এটা সি দেখায় উপায় সুতরাং ভেরিয়েবল সাধারণত scoped হয় একটি ফাংশন মধ্যে কোঁকড়া ধনুর্বন্ধনী মধ্যে, এবং তারপর এছাড়াও আছে গ্লোব্যালি-Scoped ভেরিয়েবল যে আপনি একটি পরিবর্তনশীল লিখুন are-- একটি ফাংশন এর বাইরে, এটা সম্পূর্ণ টেক্সট মধ্যে দৃশ্যমান হবে. মধ্যে এক পার্থক্য বিশেষ করে জাভাস্ক্রিপ্ট এবং C, আপনি একটি বিশ্বব্যাপী ঘোষণা তাহলে যে হয় একটি টেক্সট ফাইলে পরিবর্তনশীল যে কোন জায়গায় এটা কোনো ফাংশনে দৃশ্যমান যে টেক্সট ফাইলের মধ্যে. একেবারে ঠিক, সঠিক? হিউ ZABRISKIE: হাঁ. স্যাম সবুজ: তাই যে একটু সি তুলনায় ভীতু বিট, আমরা সবসময় আছে ছিল যেখানে আমাদের স্থান উপরে ভেরিয়েবল তারা ব্যবহৃত হয়. যে জোরপূর্বক যে একটি নিয়ম না আর, তাই, সামান্য কিছুটা আলাদা. এবং আবার ঠিক reemphasize করতে, স্থানীয় variables-- বনাম গ্লোবাল সি অনুরূপ আপনি হয়ে উঠতে পারে একই নামের দুটি ভেরিয়েবল, এবং তাদের নামের এক ছায়াবৃত্ত করা আছে একটি স্থানীয় পরিবর্তনশীল দ্বারা তাদের এক হলে গ্লোবাল ছিল. তাই, একই ধরনের সমস্যা আপনি কিছু যে কিছু পাতিত হতে পারে আপনার সমস্যা নিয়ে এ পর্যন্ত নির্ধারণ করা হবে. কুল, তাই যে ভেরিয়েবল এর. কন্ট্রোল প্রবাহ, মত, যার অর্থ, যদি-else-- লজিক্যাল stuff-- এবং loops. তাই দিয়ে শুরু করতে, এই কি তাহলে-অন্য বিবৃতি দয়া করে জাভাস্ক্রিপ্ট মত চেহারা. বিভিন্ন জিনিস বসানো লাইন গুরুত্বপূর্ণ নয়. এই মাত্র নিয়মাবলী এক উপায় আমরা কাঠামো কোড. শুধু সি মত, আমরা একটি আছে একটি বন্ধনী বিবৃতি ", তাহলে". যে আমি কি বোঝানো কি না. আমি এটা আবার করছি. হিউ ZABRISKIE: প্রস্থান করার চেষ্টা করছেন? স্যাম সবুজ: না, আমি আছি শুধু জুম করার চেষ্টা করছে. এটা কোন ব্যাপার না. সুতরাং, আমরা একটি "যদি" বিবৃতি আছে এবং আমরা এটি ভেতরে একটি শর্ত আছে যে সত্য বা মিথ্যা মূল্যায়ণ এবং যে কি না তা নির্ধারণ আমরা কোড যে ব্লক লিখতে. একইভাবে, আমরা আছে একটি অন্য-যদি, এবং আমরা সি ব্যবহার করতেন, ঠিক মত একটি অন্যথায়, এছাড়াও আপনি বেশ আরামদায়ক হওয়া উচিত ডান loops সঙ্গে ব্যাট বন্ধ, তারা চেহারা কারণ সি মত অনেক দেখায়. কিন্তু আপনি আবার নোটিশ করব আমরা পরিবর্তে initializations int এর, আছে, আমরা Var initializations আছে. এবং আমি আপনার অনুমান করতে সতর্কতা অবলম্বন করা আবশ্যক নিশ্চিত করুন যে আপনি মান পরিবর্তন না আমি এর কোন int থেকে একটি পংক্তি, উদাহরণস্বরূপ, যে কারণ যাচ্ছে অদ্ভুত আচরণ হতে আপনি না পারে আশা. কিন্তু এই হওয়া উচিত বেশ পরিচিত, পাশাপাশি. কিছু করতে শুরু তাই এই হল যেখানে জাভাস্ক্রিপ্ট একটি সামান্য বিট পাগল পেতে কেউ জন্য যারা একটি থেকে যাচ্ছে সি পটভূমি ফাংশন আছে জাভাস্ক্রিপ্ট এর মধ্যে, এবং একটি উপায় আছে দেখে মনে হচ্ছে যে একটি ফাংশন ডিক্লেয়ার করার সি অনুরূপ সাজানোর, এবং তারপর অন্য এক যে আছে ধরনের আলাদা দেখায়. প্রথম সংস্করণ, আমরা এখানে দেখতে পারেন যা, , যেখানে ধরনের সি-মত হয় আমরা, এই একটি ফাংশন, বলে এটি একটি নাম দিন, দিতে আর্গুমেন্টের সংখ্যা, ফাংশন এবং তারপর বিষয়বস্তু যারা কোঁকড়া ধনুর্বন্ধনী ভিতরে যেতে. আমরা একটি উদাহরণ দেখতে পাবেন শুধু এই একটি দ্বিতীয় যুক্তি. পরের লাইনে যেহেতু, আমরা ওহ, দেখতে, এখানে একটি পরিবর্তনশীল নামক "myFunction," এর এবং আমরা এই তা সমান জেনেরিক জিনিস ফাংশন যে কিছু ঘটছে আছে বলে মনে হচ্ছে না. আলাদা যে কারণে তুলনায় সি যে দয়া করে জাভাস্ক্রিপ্ট একটি কার্যকরী ভাষা বলা হয়, অথবা যার মানে, কার্যকরী উপাদান আছে ফাংশন আসলে মান হয়. এবং যে আমরা সেট করতে পারেন এর মানে হল যে একটি পরিবর্তনশীল একটি ফাংশন সমান এবং তারপর যে ফাংশন সরানো চারপাশে, একটি যুক্তি হিসেবে এটি পাস, স্টাফ সব ধরণের কাজ ফাংশন সঙ্গে যে মত. অন্য একটি বিষয় note-- করতে ফাংশন লেখা হয় আর্গুমেন্ট একটি নির্দিষ্ট সংখ্যক সঙ্গে. আমরা একটি ফাংশন এর একটি উদাহরণ দেখতে পাবেন পরবর্তী স্লাইডে একটি যুক্তি দিয়ে. কিন্তু দয়া করে জাভাস্ক্রিপ্ট না যদি আপনি চেষ্টা করুন আপনি চিত্কার সঙ্গে একটি ফাংশন ব্যবহার করতে আর্গুমেন্ট ভুল নম্বর. এটা শুধু করতে তার সাধ্যমত চেষ্টা করবো আপনি পাস হলে, যার অর্থ, না, আপনি কি চান একজন আশা করে একটি ফাংশন কল কোন যুক্তি, সব সাথে যুক্তি করে এটা তার সাধ্যমত চেষ্টা করবো ঘটবে চেষ্টা করুন এবং যে কোড এক্সিকিউট করার, এবং এটা শেষ পর্যন্ত রান একটি ব্যতিক্রম বা একটি ত্রুটির মধ্যে, এটা যে ব্যতিক্রম নিক্ষেপ এবং ঠিক রাখতে হবে going-- ঠিক উপায়ে এক যা জাভাস্ক্রিপ্ট কাজ করে. হ্যা. শ্রোতা: কি যদি ঘটে অতিরিক্ত আরগুমেন্ট নেই? স্যাম সবুজ: তাই প্রশ্ন কি ঘটবে, ছিল অনেকগুলি আর্গুমেন্ট আছে তাহলে? এবং উত্তরটি যে হয় জাভাস্ক্রিপ্ট শুধু হবে বেশী যে উপেক্ষা এটা আশা বেশী পরে. এটা ফাংশন নির্বাহ করার চেষ্টা করব এটা শুধু প্রথম দুই ছিল হিসেবে যদি কল. রাইট? হিউ ZABRISKIE: মধু, ঠিক আছে. একইভাবে, যদি সেখানে খুব অল্প আর্গুমেন্ট, এটা শুধু ধরনের সব নাল দেয় আর্গুমেন্ট এটা কোনো মান নেই জন্য. স্যাম সবুজ: যা যা করতে পারেন আসলে, কুশলী হতে আপনি যদি একটি ফাংশন লিখতে চান যে পরিবর্তনশীল সংখ্যা আর্গুমেন্ট লাগে. আপনি ডিফল্ট মান সেট করতে পারেন ফাংশন সংজ্ঞা, এবং এটা আসলে উপেক্ষা করতে পারেন যে ইনপুট আছে না. তাই আমি একটু একটু কথা বলতে চাই এই শেষ বুলেট সম্পর্কে আরো ফাংশন যা বিন্দু, মান. এই যে একটি উদাহরণ অল্প মন-ফুঁ আপনি এটা পড়তে, এবং আমি মনে করি না যদি একটি দ্বিতীয় জন্য কি ঘটছে সম্পর্কে. সুতরাং, আসুন শুধু তাকান এখানে প্রথম লাইন. আমরা বলতে পারি, এই পরিবর্তনশীল, F1 আছে এই জিনিস আছে যে একটি ফাংশন. এবং ফাংশন বিষয়বস্তু ('হ্যালো') console.log হয়. আপনি যেমন console.log মনে করতে পারেন Printf, দয়া করে জাভাস্ক্রিপ্ট সমতুল্য. তাই কি ঘটবে, তাহলে আমরা আমাদের ব্রাউজারে এই কোড রান, এটি একটি স্ট্রিং প্রিন্ট আউট করব. আমি দেখাতে পারি যে. শ্রোতা: ইন, যদিও, যে না এটা কোথাও রেকর্ড করা হচ্ছে মানে? স্যাম সবুজ: হ্যা. তাই আমি ঘটতে যাচ্ছে তা আপনাকে দেখাতে হবে. তাই প্রশ্ন কি গড় লগ নেই, ছিল? হিউ ZABRISKIE: সুতরাং console.log সি এর জন্য printf ভালো হয় স্যাম সবুজ: সুতরাং console.log printf ভালো হয় তাই আমি ('হ্যালো') এই console.log আছে, এবং আমি কল যে, স্ট্রিং "হ্যালো" কনসোল আউট মুদ্রিত পরার. এই কনসোল. এটা ঠিক printf, যেখানে মত এটা প্রমিত আউট ছাপে. আর আমরা কয়েক মিনিট দেখতে পাবেন, কিন্তু এই আসলে কনসোল বস্তুর উল্লেখ, এবং যে বস্তুর উপর একটি পদ্ধতি কল. যে আরো জানার জন্য করব যখন একটি মিনিটের মধ্যে আমরা যে বিষয়ে কথা বলছি পেতে জাভাস্ক্রিপ্ট অবজেক্টের, কিন্তু আমি শুধু যে উল্লেখ করা হবে. হিউ ZABRISKIE: আমরা আছেন সি ব্যবহার, right-- আমরা সাধারণত একটি বড় প্রোগ্রাম লিখুন প্রধান কিছু করতে. কিন্তু কি করে জাভাস্ক্রিপ্ট মধ্যে শীতল আপনি হয় ইন্টারপ্রেটার এই ধরনের আছে রান রিয়েল টাইমে, এটা তাই লাইন করে শুধু লাইন লাগে, এটা শুধু স্পট যে ব্যাখ্যা করা যেতে পারে. এবং এটি ট্র্যাক রাখে আগে ফেলেছেন যে জিনিষ, তাই এটি একটি চমত্কার দরকারী টুল , console.log, অথবা কনসোলে ব্যবহার সাধারণত, শুধু খেলার জন্য প্রায় জাভাস্ক্রিপ্ট দিয়ে. স্যাম সবুজ: তাই এই ফিরে যাওয়া কোড দ্বিতীয় লাইন example-- এখানে আমার মাথায় বেশ মন- boggling হয়. প্রথমবার আমি এই পড়া, এটা ভালো, কি ঘটছে ছিল? তাই কি ঘটছে এই, হয় ফাংশন ঘোষণা, বলেছেন আমি একটি ফাংশন বলা F2 আছে যে, F এক যুক্তি আশা করছে, এবং তারপর এটি যে কল ফাংশন, চ, যা একটি আর্গুমেন্ট হিসাবে এটি প্রেরণ করা হয় কোনো আর্গুমেন্ট নিজেই সঙ্গে. সুতরাং, যে বিভ্রান্তিকর হতে পারে. F2 F1 লাগে হিসাবে আমরা এই বুঝতে হলে একটি আর্গুমেন্ট হিসাবে, এবং তারপর F2 ভেতরে, চ বলা হয় যার মানে পায় এই লাইন কোড যে, এই দুই লাইন পরে কোড, "হ্যালো" এ ফলাফল কনসোলে হচ্ছে. আমরা পাস করতে পারেন যে কাছাকাছি ফাংশন মান হিসাবে সবচেয়ে এক হচ্ছে শেষ পর্যন্ত জাভাস্ক্রিপ্ট এর শক্তিশালী বৈশিষ্ট্য একটি প্রোগ্রামিং ভাষা হিসেবে. সব বাইরে এটা করতে পারেন ভয়ঙ্কর জিনিস, শুধু একটি বৈশিষ্ট্য হিসাবে উপায় পরিপ্রেক্ষিতে ভাষা এটা কিছু সহজ করে তোলে যে প্রোগ্রাম এবং পারবেন বিশেষ হয় না যে এর জন্য ওয়েব থেকে ভাল-যোগ্যতা, ফাংশানাল প্রোগ্রামিং এবং কার্যকরী জাভাস্ক্রিপ্ট প্রোগ্রামিং দিক সবচেয়ে এক শক্তিশালী ধারণা যে যদি আপনি আমাকে জিজ্ঞাসা জাভাস্ক্রিপ্ট বিদ্যমান. কুল. সুতরাং, পরবর্তী জিনিস. ফাংশানাল ছাড়াও, জাভাস্ক্রিপ্ট এর উপাদান আছে অবজেক্ট ওরিয়েন্টেড হয়, যা খুব এক কম্পিউটার বিজ্ঞান মধ্যে জনপ্রিয় buzz এই শব্দ. অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সত্যিই একটি জনপ্রিয় বিষয়. জাভাস্ক্রিপ্ট যে একটি সংস্করণ রয়েছে, আমি প্রতি মানএছাড়াও বিশ্বাস যেখানে প্রত্যেক বস্তুর যার মানে একটি বস্তু, মূল্যবোধ কিছু সংখ্যা একসাথে গোপন. সহজ হয় মান, মত জন্য তাই , varX মত একটি পূর্ণসংখ্যা, 5 সমান যে বস্তুর শুধু যে এক মূল্য গোপন করে. কিন্তু আমরা একটি অবস্থা কল্পনা করতে পারেন আমরা সি পরিস্থিতিতে মনে করতে পারেন where-- আমরা কি করতে চেয়েছিলেন যেখানে structs সাথে কিছু, উদাহরণস্বরূপ, যে বিভিন্ন গোপন একসঙ্গে মান এবং তোলে এটা সত্যিই সহজ জিনিস চারপাশে পাস. একটি বস্তুর জাভাস্ক্রিপ্ট হয় যখন যে. এটা মনে রাখা গুরুত্বপূর্ণ আমি বস্তু আবৃত বলে যখন একসঙ্গে মূল্যবোধ কিছু সংখ্যা, অনুষ্ঠানও হয় ফাংশন পারে, যার মানে মান, একটি জাভাস্ক্রিপ্ট বস্তুর ভিতর হতে. আর গুরুত্বপূর্ণ যে কারণ হয়, যে আমরা প্রায়ই যেহেতু একটি পদ্ধতি কল মনে যে একটি বস্তুর উপর অপর কারও পক্ষ থেকে একটি জনপ্রিয় শব্দটির জনপ্রিয় অবজেক্ট ওরিয়েন্টেড ভাষা, পার্থক্য এক এখানে যে একটি পদ্ধতি জাভাস্ক্রিপ্ট হয় সব যে একটি মান একটি বস্তুর ভিতরে সংরক্ষিত হয় যে সম্ভবত কিছু action-- সঞ্চালিত ভিতরে অন্য যে মান ব্যবহার যে বস্তুর কিন্তু অগত্যা. সুতরাং আপনি আমি একটি অবস্থা কল্পনা করতে পারেন একটি পাগল উপায় অল্প অনুমান, আপনি এক একটি পদ্ধতি বলা যেখানে উদাহরণস্বরূপ, অন্য বস্তুর উপর আপত্তি. সুতরাং, এটা যে ভাবে ভীতু একটি সামান্য বিট. এবং যদি আপনি পদ্ধতি পরিবর্তন করতে পারেন একটি বস্তুর সঙ্গে যুক্ত করা হয় যে যে পদ্ধতি একটি বরাদ্দ করে এছাড়াও, যা নতুন ফাংশন, অপর কারও পক্ষ থেকে বেশ ভিন্ন অবজেক্ট ওরিয়েন্টেড ভাষা, যেখানে আমরা একটি বস্তুর ঘোষণা একবার এবং এটি instantiate, আমরা যে পদ্ধতি পরিবর্তন করতে পারবেন না আর যে বস্তুর সঙ্গে যুক্ত. তাই যে বেশ আলাদা. কুল. সুতরাং এখানে প্রথম, একটি উদাহরণ, কর্মের মধ্যে একটি বস্তুর. এই কি বলা হয় একটি জেনেরিক বস্তু, যা এটা কোনো নেই যে মানে বিশেষ নাম, একটি বর্গ নেই এটা মান কিছু মোড়ানো এর. এবং দেখতেও যে ভাবে আমরা আছে, হয় কোঁকড়া এই বাইরের জোড়া এখানে ধনুর্বন্ধনী জাভাস্ক্রিপ্ট ইঙ্গিত যে এবং এই একটি বস্তু হয়, বলতে. এটি ভেতরে মান প্রতিটি মান ভিতরে হয় বস্তুর যে উচিত একসঙ্গে আবৃত করা. এবং যে বস্তুর ভিতর, আমরা তখন কী মান জোড়া আছে কী নাম উল্লেখ করে যেখানে বস্তুর ভিতরে মান, এবং অন্যান্য side-- কোলন এখানে বিপরীত প্রকৃত মান যে সংরক্ষণ করা উচিত. তাই আপনি যদি আমরা একটি আছে এখানে দেখতে কী মান স্যাম সঙ্গে FN বলা, একটি কমা দ্বারা অনুসরণ, পরের এন্ট্রি সম্মুখের বলছে. তারপর Ln নামক একটি কী, সবুজ একটি মান সঙ্গে, একটি কমা দ্বারা অনুসরণ, ", মুদ্রণ" দ্বারা অনুসরণ একটি ফাংশন মান আছে যাচ্ছে, যা যে কোড এই লাইন করতে যাচ্ছে. এর একটি পদক্ষেপ নিতে দেওয়া এবং এখানে কি ঘটছে আনপ্যাক. তাই এই, একটু একটু জটিল এবং আমরা নতুন কিছু দেখছি প্রথমবার. "এই" শব্দ নতুন জিনিস আমরা এখানে দেখছি, এবং এই কি করছেন , বর্তমান বোঝায় ঠিক আছে, সুযোগ আপত্তি? সুতরাং আমরা এই বলে যখন সমস্ত পথ ফিরে স্থানটিকে এই সমগ্র object-- করতে আমরা this.fn না হলে, আমরা ফিরে সব পথ যেতে চলুন এই বস্তুতে, FN মান যেতে এবং স্যাম পান, এটা সব পথ টান ফিরে, এখানে রাখি, এবং তারপর যান. শ্রোতা: আহরণ সঙ্গে তাই, হয় যে কারণ প্যারামিটারের সম্পন্ন সংজ্ঞা? স্যাম সবুজ: প্রশ্ন ছিল তাই, হয় আহরণ কারণ প্যারামিটারের সম্পন্ন সংজ্ঞা? হ্যাঁ, একেবারে. কি, এখানে ঘটতে যাচ্ছে এই বিন্দু, দয়া করে জাভাস্ক্রিপ্ট বলছেন ঠিক আছে, আমি কিছু ভ্যালু পাচ্ছি নিজে থেকে এই বস্তু থেকে. এবং তারপর এটি একটি এন্ট্রি সন্ধান করব FN বলা হয়, এবং তা খুঁজে বের করে যদি, এটা স্যাম, যাতে value-- ফিরে আসবেন. কিন্তু আমি টাইপ করতে পারে এখানে নির্ধারিত ছিল না যে কিছু, এবং তারপর এটি শুধু undefined-- আসতে যা একটা জিনিস যে দয়া করে জাভাস্ক্রিপ্ট পারেন সুবিধা থাকতে পারে, যা না, আপনি কোনো ত্রুটি লক্ষ্য করা কিন্তু যদি এটা, also-- এর এটা অদ্ভুত ত্রুটি হতে পারে. তাই এটা শুধু এটি করার চেষ্টা করব আপনি এটি এটা বলতে যাই হোক না কেন এবং এটা করা যাচ্ছে না এটা না খুঁজে পাচ্ছি না অভিযোগ. এটা শুধু আমি না, বলবো এটা খুঁজে, এবং তারপর যান. সুতরাং এটা, undefined হবে প্লাস ফাঁকা, প্লাস শেষ নাম. হ্যা. এবং তারপর আমরা দেখতে পারেন, তাহলে আমরা তারপর নিচে যান এবং access-- পারে এবং আমরা প্রথম বন্ধনী দিয়ে tf.print () কল. এটা যে মুদ্রণ কল যাচ্ছে কোন যুক্তির সাথে ফাংশন, ডান? কিন্তু যদি আমরা শুধু বলেন tf.print () সেমিকোলন, বন্ধনী ছাড়া, কদরের রাত কি সব যে টান হয় মূল্য থেকে ফাংশন আউট, কিন্তু আসলে এটা বলা হয় না. কুল. হিউ ZABRISKIE: থাকলে আমরা একটি বস্তুর করতে? স্যাম সবুজ: শিওর, চলুন না যে. তাই আমি এই স্থানান্তর করতে পারেন কনসোলে পরিবর্তন যেমন. আমরা আমি একটি বস্তু আছে কল্পনা করতে পারেন. সুতরাং এই একটি সহজ বস্তু. এই দুটি রয়েছে এমন একটি বস্তু দুটি কি মান, দুই কী মান জোড়া. তাই আমি তারপর সঞ্চিত মান অ্যাক্সেস করতে পারেন x.x1 করে এই বস্তুর ভিতরে, উদাহরণস্বরূপ, আমি 1 ফিরে পেতে. অনুরূপভাবে, x.x2, যে মূল্য ফেরত পেতে. আর এখন সত্যিই শীতল জিনিস আমি করতে পারেন, হয় আসলে এই বস্তুতে কিছু যোগ আমি এটি তৈরি করেছি পরে. সুতরাং আপনি আসুন, কল্পনা করতে পারেন আমি একটি ফাংশন আছে বলে. হিউ ZABRISKIE: আপনি লিখুন স্থানান্তর করতে হবে. স্যাম সবুজ: ওহ, যে বিরক্তিকর. এটা কি ভালো লাগে নি? ওহ. আমরা শুরু করছি. কুল. তাই আমি ঠিক তৈরি করেছি এই ফাংশন, এফ, যে বর্তমান যেতে যাচ্ছে বস্তু এবং প্রিন্ট this.x1. তাই আমি ঠিক করে F কল যদি নিজেই, কিছুই যাচ্ছে কোন X1 নেই, কারণ, ঠিক আছে, ঘটতে এটা উল্লেখ বস্তু ক্ষেত্রের. কিন্তু, আমি তখন, x.f = F, এবং যদি বলি আমি x.f () কল, আমি ফিরে 1 পেতে যাচ্ছি. যে চ ফাংশন এখন বস্তুর X সঙ্গে যুক্ত, একটি কী বলা X1 যা মান 1, সঙ্গে যুক্ত, আমরা this.x1 কল যখন সুতরাং, এটা এটা খুঁজছেন কি খুঁজে পাওয়া যাচ্ছে এবং একটি মান প্রিন্ট আউট করতে সক্ষম. সুতরাং যে শুধু একটি উদাহরণ ক্রেজি জিনিস ধরনের আপনি দয়া করে জাভাস্ক্রিপ্ট বস্তুর সঙ্গে কাজ করতে পারেন. সুতরাং যে সংস্করণ ছিল জেনেরিক সংস্করণ, অর্থ আমরা এই ব্যবহার করে একটি বস্তু তৈরি করেছি যে , স্বরলিপি বক্রবন্ধনী স্বরলিপি প্রথম বন্ধনী rather-- এবং যে কুশলী আমরা শুধু চান একটি নির্দিষ্ট বস্তুর এক উদাহরণস্বরূপ, কিন্তু কি আমরা একাধিক আছে চান তাহলে একই ধরনের? আর যে উত্তর প্রশ্ন হল, কিছু আছে পাশাপাশি জাভাস্ক্রিপ্ট ক্লাস বলা. আমরা একটি ফাংশন তৈরি করতে পারে আরম্ভের কিছু সাজানোর একটি বিদেশী বস্তুর জন্য, এবং আমরা চাই, বলতে চাই নাম তাই আমার বর্গ পুনর্ব্যবহারযোগ্য object-- এর এটি আপ সেট করে ফাংশন সমান. সুতরাং এই সমতুল্য হবে কি একটি বস্তু তৈরি হয় যে ঠিক মত হবে, কোঁকড়া বক্রবন্ধনী, Str, কোলন, এই একটি পংক্তি, সেমিকোলন, কোঁকড়া বক্রবন্ধনী. যে জেনেরিক হবে আমরা আরম্ভ বস্তু, এক পার্থক্য হচ্ছে সঙ্গে পরের লাইন আমরা একটি প্রোটোটাইপ তৈরি যা এটি একটি ডিফল্ট কী মানে আমরা আমাদের অবজেক্ট যোগ করে এখানে উল্লিখিত মান আছে. অর্থ, যে আমি একটি নতুন তৈরি করার সময় এই myclass বস্তুর উদাহরণস্বরূপ, এটি ভেতরে প্রাক নির্মিত আছে যাচ্ছে এটি একটি মূল্য Str ডেকে অন্য মূল্য যা বলা myPrint, যাচ্ছে একটি ফাংশন হতে. অসাধারণ. গ্রেট. তাই শেষ জিনিস করতে জাভাস্ক্রিপ্ট সম্পর্কে বলার এটা কি জন্য সত্যিই দরকারী যে হয় অ্যাসিঙ্ক্রোনাস অপারেশন বলা হয়. অ্যাসিঙ্ক্রোনাস মানে হল যে আমরা যে কিছু অপারেশন জন্য অপেক্ষা করতে পারেন আমরা অগ্রসর আগে সম্পন্ন করার আমরা অপেক্ষা করার সময়, কিন্তু উপর সরানো এবং তারপর কিছু পরে ঘটতে আছে. আর আমি যে মানে আপনি, হয় একটি অবস্থা যেখানে কল্পনা করতে পারেন আপনি একটি অনুরোধ পাঠাতে কোথাও কিছু ওয়েব সার্ভার, এবং এটা আপনাকে ফেরত পাঠাতে যাচ্ছে তথ্য কিছু বড় খণ্ড, ডান? এবং আপনার ব্যবহারকারী অপেক্ষা পারে ইতিমধ্যে যে ঘটতে যাও, এবং কিছুই হতে পারে যে সময়ে যাওয়া. কিন্তু যে একটি মহান নকশা অধিকার, না? আপনি ওয়েব পৃষ্ঠা নিথর করতে চান না. কি ব্যবহারকারী চায় তাহলে একটি ড্রপ ডাউন মেনুতে ক্লিক করুন? এটি একটি মহান নকশা প্যাটার্ন না. পরিবর্তে, মূলত কি জাভাস্ক্রিপ্ট বলেছেন, না ঠিক আছে, অ্যাসিঙ্ক্রোনাস এই অপারেশন করতে. তাই মত, ব্যাকগ্রাউন্ডে অপেক্ষা, এবং তারপর অপারেশন সম্পন্ন করা হয়, যখন কলব্যাক কল ফাংশন কিছু ফাংশন কল, যে কিছু action-- সংকেত না আমরা শেষ করার জন্য অপেক্ষা ছিল অপারেশন শেষ. এবং অতি শক্তিশালী যে কারণ, হয় আমরা, কিছু না একটি আর্গুমেন্ট পাস করতে পারেন, কিছু না, এবং তারপর অপেক্ষা কিছু ঘটতে জন্য. তারপর, কিছু যে একবার আমরা একটি কলব্যাক কল করতে পারেন সমাপ্ত হবে. কারণ এটি আপনাকে সত্যিই উপকারে এর আমাদের ওয়েব অডিও API সাথে যে কি উদাহরণস্বরূপ, লোড একটি ভালো একটি দূরবর্তী সার্ভার থেকে অডিও ফাইল জন্য অপেক্ষা করেও সমগ্র অডিও ফাইল লোড করা, সত্যিই হবে যা ব্যবহারকারীর অভিজ্ঞতা জন্য খারাপ. কুল. সর্বশেষ দম্পতি সম্পর্কে নোট ডিবাগ, এই থেকে আপনাকে যা করতে হবে চলুন একটা জিনিস হয় আপনার প্রকল্পের অংশ হিসাবে, নিশ্চিত. আমি JavaScript কনসোল উল্লেখ. এটি একটি সুপার দরকারী বৈশিষ্ট্য সব আধুনিক ব্রাউজারে নিয়ে, এবং আমরা সত্যিই পেতে উত্সাহিত আপনার কনসোল ব্যবহার আরামদায়ক, আপনি দয়া করে জাভাস্ক্রিপ্ট ভাল পেতে চান তাহলে. এটা জন্য অতি সহজ ডিবাগ, কিন্তু এটি এর figuring জন্য সত্যিই দরকারী খুঁজে কিভাবে একটি এপিআই ব্যবহার করার জন্য. এটা সত্যিই জন্য করতে পারবেন সহজ পরীক্ষা কিছু টাইপ করেও কোড, এবং তারপর এটি কম্পাইল. আপনি সমস্ত পদক্ষেপ করতে হবে না. আপনি শুধু লিখে রাখতে পারেন একটি লাইন মধ্যে কিছু কোড, এবং তারপর উপর তাৎক্ষণিক প্রতিক্রিয়া পাওয়া কোড যে লাইন কিনা বা না খুব উপকারে worked--. এবং এছাড়াও, মাত্র এক প্রযুক্তিগত note-- JavaScript কনসোল একটি উদাহরণ যে, REPL রাঃ-ই-পি-এল তাই একটি REPL-- এর, পড়ুন ঘোরা যা, নির্ণয় মুদ্রণ লুপ. আপনি কিছু জিনিস টাইপ করতে যাচ্ছেন এ, আপনার টাইপ করা কি পড়তে হবে, এটা নির্ণয় করব, এবং এটি প্রিন্ট করব আউটপুট, এবং তারপর এটি আবার শুরু করব. যে আপনি দ্রুত যেতে পারবেন বৃত্ত যা সত্যিই শীতল, iterating. আমি এই note-- বাস্তব সর্বশেষ অনুমান হ্যাঁ, প্রকৃত সর্বশেষ নোট. কিভাবে আমরা আসলে জাভাস্ক্রিপ্ট ব্যবহার করবেন? সুতরাং প্রথম, আমরা আমদানি করতে পারেন এটি একটি স্ক্রিপ্ট ট্যাগ ব্যবহার একটি HTML এর উপরে বা নীচে ফাইলটি যে কোন স্থানে একটি HTML ফাইল এর ভিতরে, সত্যিই. আর একটি স্ক্রিপ্ট ট্যাগের মধ্যে, আছে জাভাস্ক্রিপ্ট আমদানি দুটি সাব-উপায়. প্রথম একটি থাকার হয় পৃথক জাভাস্ক্রিপ্ট ফাইলের আমরা তার সম্পূর্ণতা আমদানি, বা যে স্ক্রিপ্ট মত কোড একটি এলাকা না থাকার তারপর শুরু, এবং এর সাথে ব্যাকস্ল্যাশ স্ক্রিপ্ট শেষ করতে. এবং তারপর আমরা শুধু লিখুন এইচটিএমএল ফাইলের ভিতরে জাভাস্ক্রিপ্ট. ঐ দুটি উপায় আছে. আপনি এইচটিএমএল এর ভিতর এটা থাকতে পারে না. শ্রোতা: অন্যান্য তুলনায় একটি ভাল? স্যাম সবুজ: প্রশ্ন ছিল, এক অন্য চেয়ে ভাল. তাই, হ্যাঁ, একটি কোডিং শৈলী অনুশীলন হিসাবে, এবং এটি একটি নকশা অনুশীলন মত. দুটি কারণ আছে কেন এটা ভালো হতে পারে. প্রথম এটা আপনার কোড একটি তোলে, হয় অনেক বেশি পাঠযোগ্য আপনার এইচটিএমএল সব যদি এক জায়গায়, আপনার সিএসএস সব হয় অন্য জায়গায়, আপনার জাভাস্ক্রিপ্ট সব একটি তৃতীয় স্থানে রয়েছে. রাইট? আমি মনে করি আমরা ইতিমধ্যে সায়ীদ উচিৎ sections-- মত এটি সম্পর্কে CSS-- কি যে হচ্ছে ÑÑ এবং এটা যায় প্রায়ই অন্য ফাইলে. সুতরাং, এখানে ধারণা একই ধরনের. এছাড়াও আপনি কল্পনা করতে পারেন দয়া করে জাভাস্ক্রিপ্ট একাধিক উপর পুনঃব্যবহৃত করা হবে HTML পৃষ্ঠাতে, অথবা সম্ভবত একটি বহুসংখ্যক এইচটিএমএল পেজ, এবং যে দয়া করে জাভাস্ক্রিপ্ট থাকার এক মধ্যে refactored আপনি আমদানি করতে পারেন যে ফাইল একাধিক জায়গা মধ্যে কোড হতে পারবেন পথ আরো রক্ষণীয়. আপনি এক তৈরীর কল্পনা করতে পারেন জাভাস্ক্রিপ্ট পরিবর্তন এবং হচ্ছে তা পরিবর্তন 100 বিভিন্ন ফাইল. এর পরিবর্তে আমরা শুধু এটা পরিবর্তন করতে পারেন আরো শক্তিশালী উপায় যা এক, এ. আমি আপনার প্রশ্নের উত্তর দিতে হয়নি? কুল. আমরা, কনসোলের মধ্যে টাইপ করতে পারেন আমরা আগে উল্লেখ করেছি. এবং আবার, এক শেষ note-- অডিও সালে নির্মিত হয় ওয়েব, আপনি কিছু লোড করার প্রয়োজন হবে না. কুল. কোন প্রশ্ন আছে, আপনি কি জাভাস্ক্রিপ্ট সম্পর্কে কোন প্রশ্ন, আগে আমরা এগিয়ে যেতে? শ্রোতা: [শ্রবণাতীত] স্যাম সবুজ: ঠিক আছে, শান্ত. তাই এখন তিনি এপিআই সম্পর্কে কথা বলতে যাচ্ছে. হিউ ZABRISKIE: কুল. ধন্যবাদ, স্যাম. স্যাম সবুজ: শিওর. হিউ ZABRISKIE: জট্টিল, তাই আমরা জাভাস্ক্রিপ্ট থেকে সরাতে হবে. তাই আমরা কিছু স্বপ্ন করেছি জাভাস্ক্রিপ্ট এর দরকারীগুলোই, এবং যারা ভেরিয়েবল, ফাংশন, বস্তু, ভেরিয়েবল হিসেবে ফাংশন, অ্যাসিঙ্ক্রোনাস লোড. এই যে আপনি পাবেন সব কিছু হয় আপনি ওয়েব অডিও ব্যবহার হিসাবে দেখতে. তাই আমরা ঠিক কথা বলতে যাচ্ছেন একটি উচ্চ পর্যায়ের প্রথম এটি সম্পর্কে. এটি একটি API- এর, তাই এটা এমন কিছু স্যাম বলেন যে, নির্মিত, ডান জাভাস্ক্রিপ্ট মধ্যে আপনি কনসোল ব্যবহার করে. আর এটা শুধু C ++ কোড আসলে যে সত্যিই ক্রোম মধ্যে নির্মিত হয় এবং ফায়ারফক্স, এবং এই ব্রাউজারের সব. ওয়েব সাথে মূল ধারণা তাই অডিও আপনি আছে অডিও পাইপলাইন এই ধরনের, ডান? সুতরাং আপনার অডিও তথ্য কিছু ফর্ম মধ্যে আসে. তিনটি প্রধান forms-- ধরনের আছে আপনি দোলক, আছে যা একটি সাইন ওয়েভ সৃষ্টি, কোসাইন ঢেউ, আমরা যে কাজ করে কিভাবে দেখতে যাচ্ছেন. আরেকটি খুব সাধারণ এক, অবশ্যই, একটি MP3 হয়. তাই হয়তো আপনি দিয়ে শুরু একটি গান, এবং তারপর আপনি কিছু ফিল্টারিং করতে চান যে আউটপুট যে কিন্তু যে একটি সম্ভাব্য উৎস হতে পারে. এবং তারপর একটি সত্যিই শীতল এক মাইক্রোফোন. সুতরাং আপনি কিছু খুব ব্যবহার করতে পারেন জাভাস্ক্রিপ্ট মৌলিক কল প্রবেশাধিকার পেতে মাইক্রোফোন, এবং যদি তাই আপনি একটি অ্যাপ্লিকেশন করতে চেয়েছিলেন একটি পিচ আবিষ্কারক মত, উদাহরণস্বরূপ, যে সময় লাগে আপনার ভয়েস এবং আউট পরিসংখ্যান যে pitch-- খুব সহজ উপায়. আপনি শুধু ধরনের এটা পড়তে পারেন এ, ফ্রিকোয়েন্সি জিনিসটা, এবং তারপর আউটপুট একটি সংখ্যা. সুতরাং আমরা যে কিভাবে কাজ করে দেখুন, সেইসাথে পাবেন. গন্তব্য মূলত যেখানে অডিও তথ্য আউটপুট. তাই সাধারণত, যে মত আপনার ল্যাপটপ স্পিকার. অন্যান্য অপশন মত হয় একটি ScriptProcessorNode-- আমরা একটি নোড পাবেন second-- কিন্তু মূলত, হয় আপনি সাউন্ড নির্বাপণ করছি আপনার কম্পিউটারের মাধ্যমে স্পিকার মাধ্যমে, অথবা আপনি ধরনের, তাই এটা রেকর্ডিং করছি আপনি অডিও তথ্য হিসাবে এটি সংরক্ষণ করছেন. তাই হয়তো কেউ তৈরি করে সঙ্গীত আপনার app এর মধ্যে এবং তারপর আপনি ও হয়তো ভালো যে রেকর্ড করতে চান example-- জন্য, SoundCloud এটি রপ্তানি যে যে কাজ করার একটি পদ্ধতি হতে হবে. সকল মজার জিনিস, আমরা সম্পর্কে আলোচনা করব যা, এই দুটো বিন্দুর মধ্যে ঘটবে, আমরা সঙ্গীতে লোড যেখানে এবং তারপর আউটপুট. তাই আমি পাঁচটি বিষয়ে কথা বলতে যাচ্ছি একটি দ্বিতীয় অডিও প্রকাশনা পর্যায়ে. আমরা এই জিনিস বলা আছে একটি AudioContext, যা আমরা এখানে দেখতে এই সামান্য লেফাফা. আমরা যদি মূলত কি হচ্ছে ÑÑ AudioContext এই মুহূর্তে JavaScript কনসোল থেকে যান, আমরা এই মুহূর্তে এক তৈরি করতে পারেন. REPL শুধু একটি উদাহরণ, ডান? আমরা পড়ি, মূল্যায়নের, এবং তা ছাপে. AudioContext একটি গ্লোবাল রাষ্ট্র. এটা, এটা একটি বস্তুর একটি struct ফিচার এখানে, এটা এবং তথ্য রাখে কিছু সম্পর্কে উপর যাচ্ছি অডিও এর সাথে সম্পর্কিত পর্দায়. একটা উদাহরণ বর্তমান সময়. এই কমান্ডের সাহায্যে আপনি সংখ্যা বলে সেকেন্ডের, খুব স্পষ্ট করে, ওয়েব পৃষ্ঠা থেকে লোড. সুতরাং এই একটি সত্যিই দরকারী আপনি ব্যবহার করতে পারেন যে সামান্য সম্পত্তি. এটা only-- পড়তে আমি আসলে মনে হয় আপনি এটি একটি মূল্য নির্ধারণ করার চেষ্টা করতে পারেন. এটা যদি আপনি এটি সেট বলতে হবে, এবং তারপর আপনি এটি প্রিন্ট তাহলে again-- এটা আসলে বেশ কাজ করে নি. তাই সেখানে রিড-ওনলি হয় জাভাস্ক্রিপ্ট বৈশিষ্ট্য. এই যদি সত্যিই দরকারী আপনি যে ধরনের সিঙ্ক করছেন বিভিন্ন অনেক তথ্য, যখন আপনি আছেন ধরনের বিভিন্ন শব্দ বাজানো. আরেকটি সত্যিই দরকারী এক কনটেক্সট গন্তব্য. আপনি আগ্রহী হলে নিশ্চিতভাবে, হতে আপনার নিজস্ব কনসোল ডানদিকে এই চেষ্টা এখন. সুতরাং এই একটি AudioDestinationNode হয়. মূলত এই কি বলে, আউটপুট কোথায় যাচ্ছে? তাই এখানে দুটি বাস্তব অপশন আছে. সাধারণত ডিফল্ট শুধু আপনার স্পিকার, হয় তাই AudioDestinationNode মূলত শুধু বলেছেন শব্দ শূন্য আউটপুট আছে আসছে, স্পিকার পাঠানো. তাই সাধারণত, আপনি না যে সাথে খেলতে আছে. আসলে আপনি ব্যবহার করতে আগ্রহী হন তবে রেকর্ডিং জন্য ScriptProcessorNode, স্পষ্টভাবে আমাকে একটি অঙ্কুর ইমেল যে পরে কারণ একটু বেশি জটিল. কিন্তু সাধারণত, আপনি শুধু অপেক্ষা করছেন কিছু ফর্ম শব্দ প্রদর্শন করতে. তাই শান্ত, আমরা এখানে ফিরে তিড়িং লাফ হবে. শ্রোতা: আমি দুঃখিত. হিউ ZABRISKIE: হ্যা. শ্রোতা: আমি আপনাকে কথা বললেন জানি আপনাকে পরে রেকর্ডিং সম্পর্কে. আপনি যে প্রো সরঞ্জাম সঙ্গে ইন্টারফেস করতে পারে? হিউ ZABRISKIE: প্রো সরঞ্জাম সঙ্গে? দেখা যাক. আমি তাই মনে করি না. তাই ক্লায়েন্ট এর মধ্যে চালু, যা জাভাস্ক্রিপ্ট হয় কনসোল, এবং আপনার প্রকৃত কম্পিউটার, সাধারণত হয় ধরনের কিছু যে সীমা বন্ধ, আপনি যদি ধরনের the-- প্রকৃতি দ্বারা হবে এটি একটি নকশা ধরনের জিনিস কিন্তু আপনি পৃথক ব্রাউজার রাখার চেষ্টা ব্যবহারকারীর প্রকৃত কম্পিউটার থেকে. সাধারণত, শুধু আপনি করতে সক্ষম হন প্রবেশাধিকার মাইক্রোফোন বা ক্যামেরা. আপনি করতে সক্ষম না হন, আমি মনে করি না, প্রো সরঞ্জাম ব্যবহার করুন. যাইহোক, আপনার তৈরি করা হলে প্রো সরঞ্জাম একটি ট্র্যাক, আপনি যে লোড পারে, যে এক্সপোর্ট এখানে, উদাহরণস্বরূপ, এটি ফিল্টার, প্রক্রিয়া, যে এবং একটি মধ্যে যে রেকর্ড অডিও Destination-- বা, একটি গোলক no-- প্রসেসর নোড. সেখান থেকে এবং তারপর, আপনি করতে পারে , SoundCloud যাও আপনি যে রপ্তানি একটি ইমেইলের এটা পাঠান, অথবা হতে পারে যাই হোক না কেন আপনি সেখানে থেকে চান. কিন্তু সামান্য বাধা ধরনের আছে আপনার কম্পিউটারে মিউজিক তৈরীর মধ্যে এবং অনলাইন সঙ্গীত তৈরীর. স্যাম সবুজ: এবং যে এই এপিআই অনন্য নয়. এটা Chrome- এর একটি নিরাপত্তা বৈশিষ্ট্য, এবং আমি প্রত্যেক অন্যান্য আধুনিক ব্রাউজারে মনে. ব্রাউজার স্বয়ংসম্পূর্ণ. সুতরাং উদাহরণস্বরূপ, একটি ওয়েব পৃষ্ঠা করতে পারবে না শব্দ চালু করতে দয়া করে জাভাস্ক্রিপ্ট ব্যবহার উদাহরণস্বরূপ আপনার স্পিকার, উপর. অথবা এটা আপনার কম্পিউটার বন্ধ করতে পারবেন না. আর কোন মধ্যবর্তী বিন্দু আছে ঐ দুটি জিনিসের মধ্যে, ঠিক আছে, তাই হয় আপনি একটি আছে সম্পূর্ণ বিমূর্ততা, অথবা আপনি খুলুন লেট নিরাপত্তা ত্রুটি অসদুদ্দেশ্য সঙ্গে একজন প্রোগ্রামার না যাই হোক না কেন তারা আপনার ল্যাপটপ দিয়ে চান. ক্রোম স্বয়ংসম্পূর্ণ কেন এবং যে. হিউ ZABRISKIE: হ্যা. যে জানার জন্য? ঠান্ডা ঠান্ডা. আমি শুধু চালু ছিল এক একটি উদাহরণ দেখাতে. এই হিসাবে প্রায় কাছাকাছি পর্যন্ত আপনি পদ পেতে হিসাবে ব্যবহারকারীর কম্পিউটার অ্যাক্সেস. আপনি যদি একটি USB কীবোর্ড, প্লাগ আপনি ওয়েব কিছু বলা ব্যবহার করতে পারেন এখন MIDI এপিআই, যা আমরা না করবে না সত্যিই এখানে আলোচনা, কিন্তু এই যে অন্য এপিআই আবার অন্তত Chrome-- পাতাটা, আমরা Chrome-- ভালোবাসি কেন হয় আমি ফায়ারফক্স বা সাফারি মনে এই একটি সহজ জিনিস google-- বিভিন্ন ব্রাউজার আছে যার জন্য আলাদা সমর্থন API গুলি তারা প্রয়োগ করা হয়েছে. আপনি চেয়েছিলেন কিন্তু যদি একটি কীবোর্ড চলা এবং যে তথ্য দিয়ে কাজ, ধরনের কীবোর্ড পাঠাতে কম্পিউটারে ওভার তথ্য এবং তারপর, এই এপিআই যে অনলাইন ব্যবহার আপনি যে কাজ করা চাই যেখানে হয়. কুল. ঠিক আছে. সুতরাং, দ্রুত এখানে সরানোর. কিভাবে আমরা সময় করছেন? বক্তা 1: আমার 15. হিউ ZABRISKIE: 15 মিনিট বাকি? ঠিক আছে শান্ত হও. তাই আমরা এখানে এগিয়ে গোড়া করব. তাই মূলত, প্রধান পয়েন্ট একটি পাইপলাইন হিসেবে এই চিন্তা যে পাইপলাইন প্রতিটি ধাপ অডিও নোড একটা সিরিজ. আমাদের উৎস, এর কথা বলা যাক, একটি দোলক. আমরা একটি দোলক নোড তৈরি করা প্রয়োজন. এবং যে শুধু ধরনের সামান্য একটি ফাংশান এর এবং তারা সব আউট ভিত্তিক করছি এখানে অডিও প্রসঙ্গের. শ্রোতা: এটা বলেন যখন দোলক, যে মানে এটা আসলে আক্ষরিক থেকে যাচ্ছে পিছনে দুটি ভিন্ন মেরুর? হিউ ZABRISKIE থে, এটা ভালো ডিজিটাল উপস্থাপনা. এটা আসলে সি ++ এ বাস্তবায়িত হচ্ছে. আমি আসলে চশমা জানি না আসলে এটি বাস্তবায়িত কিভাবে, কিন্তু এই সব বাইনারি তথ্য হিসাবে কাজ করছে. বাস্তবিক, হ্যা. যে আমি করতে পারে, বলার অপেক্ষা রাখে না করা হবে আসলে, আপনি যদি আগ্রহী হন তাহলে, আমি আপনাকে একটু বেশি পাঠাতে পারে কিভাবে waveforms সম্পর্কিত তথ্য একটি ডিজিটাল ফরম্যাটে থাকার রাখা হয়. ঠিক আছে শান্ত হও. সুতরাং আমরা একটি সাইন মত একটি স্বন উৎপাদিত করছি হয়তো, তরঙ্গ বা যে ভালো কিছু 440 হার্জ. আমরা একটি দোলক তৈরি. আমরা ভলিউম সেট করতে চান তাহলে, আমরা একটি GainNode কিছু সংযোগ, যা আমরা .creategain সঙ্গে কাজ করতে পারে. যে আপনার ভলিউম নির্ধারণ করা হবে. আপনি যে কোনো সম্মুখের যে প্রেরণ করতে পারেন options-- ভাল অপরের, তাই একটি অডিও বাফার উৎস নোড যেখানে আপনি পারে না আপনি লোড করেছি যে একটি MP3 দোকান. Biquad ফিল্টার ফিল্টারিং যদি হয় আপনি সমস্ত বেস নিতে চান যে মত একটি গান, বা কিছু. ঈশ্বর আপনি নিতে চান নিষেধ একটি গানের আউট বেস. আর AudioDestination নোড, আবার হয় মত আমাদের চূড়ান্ত যেখানে. আপনি এইজন্য কি আগ্রহী হন সব বিভিন্ন সম্ভাব্য বিকল্প, শুধু ট্যাবে যান এবং দিন স্বয়ং সম্পূর্ণ আসা পর্যন্ত. আপনি তৈরি করেন, তবে আপনাকে সব দেখতে পাবেন আপনি তৈরি করতে পারেন বিভিন্ন জিনিস. আপনি গতিশীল তৈরি করতে পারেন স্ক্রিপ্ট প্রসেসর, আমি এমনকি কি যে জানি না চ্যানেল সংযুক্তির মিশ জন্য, হয় এবং চ্যানেল splitters এবং সব যে. কুল. সুতরাং এই মাত্র একটি হল একটি পাইপলাইন উদাহরণস্বরূপ. তাই আমরা তিনটি সূত্র আসছে. হয়তো এই waveforms হয়, হয়তো এই MP3 গুলি হয়. এক একটি মাধ্যমে যাচ্ছে ফিল্টার, অন্য এক বিকৃত হচ্ছে অন্য এক এর ঘোরানোর বাম এবং ডান. আপনি জিনিস সমস্ত প্রকারের করতে পারেন এবং তারা সব একসাথে প্রায় মিশে এবং তারপর খুঁজে অডিও আসে গন্তব্য হিসেবে শেষ, এ. এই কি আরো একটি উদাহরণ জটিল ওয়েব অডিও কোড মত দেখায়. আপনি এই সব তৈরি করছি বিভিন্ন বস্তুর ডান এখানে আমি এই সম্পর্কে নিশ্চিত নই. না, এটা জুম না. ঠিক আছে. স্যাম সবুজ: আপনি কন্ট্রোল, স্ক্রোল আপ করতে. হিউ ZABRISKIE: কন্ট্রোল Scroll-- স্যাম সবুজ: না, না. Control-- হিউ ZABRISKIE: ওহ, কন্ট্রোল, স্ক্রোল? Gotcha হয়, ওহ. হ্যা. নাঃ, নাঃ, বাহ. ঠিক আছে. আমি এটা করব না. তাই হ্যাঁ, এই প্রথম এখানে অধ্যায়, আপনি দেখতে আমরা এই সব বিভিন্ন তৈরি করছি প্রসঙ্গের বাইরে নোড. আমরা শুধু তাদের piecing করছি একসঙ্গে দ্বিতীয় অংশে কানেক্ট নামক এই ফাংশন দ্বারা. এটা সত্যিই একটি কী ওয়েব অডিও ফাংশন. আপনার কাজ সম্পন্ন করার পরে এটি শুধু মানে এক নোডের মধ্যে শব্দ সহ কিছু, পরবর্তী নোডের এটি পাস. সুতরাং আমরা উৎস আছে, এটা বিশ্লেষক সাথে সংযোগ করে, বিশ্লেষক, এটা দিয়ে কিছু আছে এটা, তাই বিকৃতি থেকে যায়, এবং এবং গন্তব্য এখানে ডান নীচে. কুল. ঠিক আছে, তাই আমরা চলন্ত রাখা হবে. pipeline-- আবার এই সবচেয়ে সাধারণ পাইপলাইন হয়, তাই আমরা চাই এই সব বিষয় সম্পর্কে কথা বলতে বিকৃতি, ঘোরানোর, এই সব উপাদান. আপনি কি সত্যিই আগ্রহী হন কিছু প্রো সরঞ্জাম ব্যবহার করে, যারা সম্ভবত আপনি সুদ. যদি না হয়, হয়তো আপনি শুধু সাউন্ড প্লে করতে চান, অথবা হয়ত আপনি ঠিক করতে চান সাউন্ড ভলিউম সেট. যারা দুই সবচেয়ে সাধারণ সাজান হয় অডিও উত্পাদন পাইপলাইন. আবার, কোন উপায়ে আপনি এটা নিতে পারে একটি oscillator-- তাই, আসুন পরিচয়ে একটি অধিকার এখানে যে ডেমো না. সুতরাং আমরা একটি তৈরি করতে যাচ্ছেন এখানে সহজ অডিও প্রেক্ষাপটে, এবং যে থেকে আমরা চলুন আমাদের দোলক তৈরি করতে. যে হয় তাই, আবার আমরা ঠিক করছি দোলক তৈরি কল যাচ্ছে. আমরা একটি ফ্রিকোয়েন্সি সেট চলুন 440 হার্টজ, সবার প্রিয়, যে. তারপর আমরা গন্তব্যে যে সংযোগ point-- স্পিকার তাই, যা হয় কনটেক্সট গন্তব্য. পরিশেষে, আমরা শুধু বলতে, শূন্য শুরু এখন থেকে সেকেন্ড, এবং আমরা শব্দ আছে? [ধ্বনিত] হিউ ZABRISKIE: এখানে আমরা যেতে. এটি শুধু একটি সাইন ওয়েভ এর. ঠিক আছে শান্ত হও. এবং তারপর আমরা যে বন্ধ করব. শ্রোতা: কোথায় যে প্রতিক্রিয়া থেকে আসা? হিউ ZABRISKIE: প্রতিক্রিয়া? ওহ, সম্ভবত আমাদের মাইক্রোফোনের. কিভাবে আপনি এটা করবেন তাই হাঁ, যে. আর আসলে আমি ছিল এটা আপনি রাখা চলমান ফ্রিকোয়েন্সি আছে পারে এটি চলমান হিসাবে মান, তাই যে চারপাশে খেলা করার জন্য একটি মজার জিনিস. কুল. যে সর্বদা উপস্থিত একটি সুদৃশ্য এক. স্যাম সবুজ: আমরা জানি না আমরা, যে সম্পর্কে বিশ্বাস কর? হিউ ZABRISKIE: হ্যা, যে একটা বাজে এক. সুতরাং, বাফার loading-- আমি একটি দেখাব খুব শেষে যে দৃষ্টান্ত. যে একটি MP3 লোড হচ্ছে. এবং মাইক্রোফোন, আপনি শুধু একটি ফাংশন ব্যবহার ) (নেভিগেটর বলা ব্যবহারকারীর অ্যাক্সেস অনুরোধ করতে যে তথ্যের জন্য মাইক্রোফোন. এখানে ফিল্টারিং, আমি করব শুধু এই থেকে চলন্ত রাখা. এটা বেশ উচ্চ পর্যায়ের হয় কিন্তু ফিল্টার শুধু আপনি অনুমতি [দেয়া হল] ফিল্টারিং আপনি পারবেন পিঙ্ক ভালো জিনিস তৈরি করতে গোলমাল, বাদামী গোলমাল, সাদা গোলমাল. আপনি বিশুদ্ধ শব্দ, তৈরি করতে চান তাহলে, যা কিছু মানুষ, সঙ্গে প্রায় জগাখিচুড়ি ভালোবাসি আপনি ওয়েব অডিও ব্যবহার করতে পারেন ফিল্টারিং যে কাজ করতে. অডিও Panning-- তাই কল্পনা আপনি একটি খেলা লেখার করছি এবং আপনি শব্দ আপনি চান এটা ভালো, আসছে মত শব্দ, পর্দা জুড়ে শুটিং, আপনি অডিও ঘোরানোর ব্যবহার করতে পারেন শঙ্কুর এই ধরনের তৈরি করতে, যা তা প্রশংসনীয় Mathy এর করার মত, কিন্তু এটি সত্যিই আসলে শীতল আপনি এটি কাজ পেতে হলে, এবং কিছু ভাল আছে এটি টিউটোরিয়াল আমি আপনি পাঠাতে পারেন. মূলত, আপনি কি ধরনের পারেন শব্দ তৈরি একটি 3D ভাবে করে যাচ্ছে কিছু. আপনি একটি ডিজে আগ্রহ থাকে, তাহলে আপনি যা করতে পারেন মিক্সিং শুরু এবং ফেইড গান পার. এই মাত্র কিছু খুবই মৌলিক কোড, আমি কি আগে মূলত কি. এই ভলিউম সেট দোলক, তাই আমরা আমাদের দোলক তৈরি যা তরঙ্গাকৃতি সৃষ্টি. আমরা আমাদের GainNode তৈরি, আমাদের ফ্রিকোয়েন্সি সেট, এবং তারপর যাও দোলক সংযোগ তারপর মূলত পরিবর্তন যা GainNode, কত সংকেত মাধ্যমে অনুমোদিত হয়. কিন্তু সত্যিই এটি একটি ডিজিটাল জিনিস, হ্যা ঠিক করা আরও তাই. যে আসলে কি ঘটছে না, কিন্তু যে বাস্তব জীবনে এরকম কি একটি লাভ সঙ্গে. শ্রোতা: --quantization ভলিউম পরামিতির? হিউ ZABRISKIE: দুঃখিত? শ্রোতা: এটা হল কোয়ান্টাম ভলিউম পরামিতি? হিউ ZABRISKIE: হ্যা. আর এই আমি সত্যিই আছি এক জিনিস আমার জ্ঞানে উপর ন্যূন, কিভাবে লাভ একটি ডিজিটাল স্তরে কাজ করে. আমি প্রকৃত সাথে জানি সংকেত, এটা মূলত নিয়ন্ত্রণ আপনি কত আছেন সংকেত কয়েকগুণ বেড়ে যাবে. তাই হ্যা. আমি আপনার সম্পর্কে আরো তথ্য পাঠাব আমি আসলে জানতে আগ্রহী হতে চাই, কারণ, যে যে সম্পর্কে আরো জানতে. কিন্তু মূলত পরামিতি এক fold-- হয়, হয় জোরে signal-- এবং শূন্য কোন সংকেত, অথবা যদি আপনার কোন শব্দ শুনতে হবে না. আমরা যে কারণ জন্য ডেমো সময় লাফালাফি করব এটা আমি আগে কি মূলত কি. এবং আবার, Context.Destination অডিও গন্তব্য নোড হয়. জট্টিল, ঠিক আছে. তাই আমি একটি দ্রুত দুই গণদেবতা কাজ করতে যাচ্ছি. কিভাবে আমরা সময় করছেন? বক্তা 1: 10 মিনিট. হিউ ZABRISKIE: 10 মিনিট? গ্রেট! অসাধারণ. তাই আমি যাচ্ছি প্রথম এক , এটা আমার প্রিয় গানের বলা হচ্ছে না. সুতরাং এই মাত্র হল সামান্য এইচটিএমএল জাভাস্ক্রিপ্ট. আমরা দুটি বাটন আছে চলুন পেজে আমার প্রিয় গান প্লে এবং আমার প্রিয় গান থামাতে. আমি এই পরিবর্তন করব. শ্রোতা: আপনার মাইক্রোফোন আবরণ. হিউ ZABRISKIE: হ্যা. আর আমি এখানে লোড করেছি মূলত একটি স্ক্রিপ্ট এবং এই সত্যিই দরকারী একটি MP3 লোড, তাই এই মাত্র তোলে দ্রুত MP3 গুলি পথ লোড. এটি মূলত শুধু একটি আলোয়ান এর. এটা শুধু প্রক্রিয়া তোলে অনেক দ্রুত MP3 গুলি লোড, অন্যথায়, আপনি HTTP অনুরোধের ব্যবহার করছেন ধরনের আমরা সেটিই ছিল মত সার্ভার সেট বর্তমান টুকরা উপর. এটা সত্যিই কুশ্রী আপনি এটা কাজ করতে চান না. সুতরাং এই লোক, বরিস Smus, সত্যিই লিখেছেন BufferLoader বলা দরকারী সামান্য হাতিয়ার. আপনি কি সব এটা পাস সহজভাবে হয় কনটেক্সট, আপনি এটি একটি তালিকার পাস বা, হ্যা, এটা দয়া করে জাভাস্ক্রিপ্ট একটি তালিকা দেয়া হয়েছে যারা? স্যাম সবুজ: একটি অ্যারে. হিউ ZABRISKIE: ওহ, এটা একটি অ্যারের, ঠিক তাই. এটা পাথ একটি অ্যারে বিভিন্ন ফাইল. এবং তারপর আপনি এটি একটি ফাংশন পাস. এই আমরা কথা বলা হয়েছে কলব্যাক হয় অ্যাসিঙ্ক্রোনাস লোড ওপর. বলা হবে লোড ফাইল একবার. এবং যে ফাংশন যখন বলা হয় যে ফাইলের লোড ঘের হিসাবে লাগে লোড বাফার একটি অ্যারের. সুতরাং যে এখানে ঘটে. মূলত, BufferList হয় এক value-- হতে যাচ্ছে অথবা এটি একটি অ্যারে হতে যাচ্ছে সূচক এটা আছে যে দৈর্ঘ্য এক, MP3 টি সমগ্র লোড ফাইল শূন্য. তাই আমি শেষ হলে আমি কি লোড হচ্ছে আমি কেবল হয় একটি বাফার উৎস তৈরি যা একটি অডিও বাফার উৎস নোড হয়. পরবর্তী ধাপে আমি লোড হয় পূর্ণ লোড বাফার হিসাবে source.buffer BufferList-- থেকে এটা buffers-- অনেক এবং তারপর আপনি যে অডিও সংযোগ গন্তব্য বাফার. তাই কি এটা করতে যাচ্ছে শুধু শুধু MP3 টি করা হয় সোজা আউটপুট মাধ্যমে, এবং অবিলম্বে তা শুরু এই কল পাওয়ার উপর. কুল, তাই এর দেখতে দিন এই ক্রিয়াটি ঘটতে. আমার [শ্রবণাতীত] এখানে, দেখা যাক. তাই আমি ঠিক করতে যাচ্ছি একটি মৌলিক সার্ভার আরম্ভ. শুনে ভাল লাগল যে যদি আপনি হন তাহলে যা করতে হবে লোড হচ্ছে ফাইল জন্য অনুরোধ তৈরীর. আমি একটি মৌলিক সার্ভার শুরু করতে যাচ্ছি. এটি মূলত আপনার সমগ্র হয় এই মুহূর্তে এক লাইনে pset, কিন্তু এটা শুধু শুরু হচ্ছে Port 80/80 একটি সার্ভার. তাই আমরা এখানে নিয়ে যান, আমরা 80/80 লোড যাচ্ছে, আমরা আমার প্রিয় গান যেতে চলুন. আমি আঘাত যদি তাই "বিনামূল্যে আমার এই মুহূর্তে প্রিয় গান ", লোড করার জন্য যাচ্ছে আমার প্রিয় গান এবং এটিকে খেলতে দ্রুত ঈগল, "জীবন - [সঙ্গীত  লেন "] --which "জীবন হতে হবে ঈগল দ্বারা ফার্স্ট লেন ". এখন, আমি বন্ধ "আঘাত করতে পারে আমার প্রিয় গান "এবং এটা রিপ্লে. দ্রুত ঈগল, "জীবন - [সঙ্গীত  লেন "] তখন আমি বললাম, কারণ কনসোল উপর যান আমি এখানে একটি গ্লোবাল ভেরিয়েবল ব্যবহার আসলে, এই মান এটা ট্র্যাক রাখতে এখন কনসোলে স্বীকৃত হতে হবে. তাই এটা আমার জন্য স্বয়ংক্রিয় সৃষ্টি. সুতরাং যে ডান এখন খেলছে কি, এবং আমি সহজভাবে) (source.stop কল করতে পারেন ওই ক্ষেত্র. আচ্ছা, আপনি কি জানেন? ঠিক তাই আপনাকে বলছি শুনেছি এই song-- আপনি এই গান চিনতে পারে. [সঙ্গীত - রিক Astley, "আমাকে ছাড়বেনা দিতে  তুমি উঠ"] দ্রুত ঈগল, "জীবন - [সঙ্গীত  লেন "] আমরা এখন সব Rickrolled করে থাকেন. ঠিক আছে, মহান, চলন্ত উপর. কুল. তাই এই মূলত একটি উদাহরণ শুধু আপনি একটি MP3 লোড পারে কিভাবে ফাইলটি দ্রুত ঈগল, "জীবন - [সঙ্গীত  লেন "] --and বাজাতে, এবং বন্ধ এবং এটা শুরু. আমি আরো অনেক কাজ করতে পারে [শ্রবণাতীত] আমি চেষ্টা করবো গত এক, হয় আমি একটি [শ্রবণাতীত] আপনি দেখাব. [সঙ্গীত বাজাচ্ছি] এটা মত ogg.wave.mp3 এর. আমি সঠিকভাবে মনে রাখবেন আমি মনে করি, আমি .M4A সাথে কিছু বিষয় পাতিত করেছি কিন্তু আমি যে বিষয়ে নিশ্চিত নই. আমি mp3.wave-- মনে [সঙ্গীত - রিক Astley, "আমাকে ছাড়বেনা দিতে  তুমি উঠ"] ঠিক আছে অসাধারণ. আমি বলেছি যে করা উচিত নয়. হ্যালো, যাই হোক. সুতরাং আমরা এই খোলা আছে. তাই এখন আমি কি সব আমি মূলত নির্মিত হয় গান তৈরি করার জন্য একটি মৌলিক সিনট্যাক্স. আমি ভালো কিছু করতে হলে তাই, G4 যোগ 1 2 উপর, যে কি যে মানে হল, , পিয়ানো নোট, G4 যোগ যা চতুর্থ জি হয় নিচ থেকে আপ পিয়ানো. তাই এই পেজ এর ধরনের কথা বলতে হয়, তাই গান ভিত্তিক হয় যারা, এই মাত্র MIDI নোট হয়. শ্রোতা: জি এর মধ্যম সি, ঠিক? হিউ ZABRISKIE: এই জি হয় মধ্যম সি উপরে, যে ঠিক. শ্রোতা: উপরে মধ্যম সি হিউ ZABRISKIE: হ্যা. আসলে হ্যাঁ. আমি আসলে তৈরি করি এটা এক [শ্রবণাতীত], তাই এই যে উপরে একটি অষ্টক হতে পারে. তাহলে দেখা যাক. আমি Play-- আঘাত [পুনরাবৃত্তিমূলক পিয়ানো নোট] শুনে যাচ্ছে --we're. ধারণা এটি পরিচালিত হয় শুধু, একটি কমান্ড লাইন একটা ভালো তাই আমি এবং নিচে যান আমার কীবোর্ডের, আপনি পূর্ববর্তী ফিরে যেতে পারেন বেশ উপকারী, যা কমান্ড. আর নিচের গানগুলি আমার তালিকা, যা সব লুপ উপর দৌড়াচ্ছে. শ্রোতা: আপনি অভিমানী হয়েছে যে কীবোর্ড 88-কী, তাই না? হিউ ZABRISKIE: প্রশ্ন ছিল, আমি একটি 88-কী কীবোর্ড নিচ্ছি, এবং হ্যাঁ, আমি. আমি কি কি হল আমি মূলত 88 নমুনার গ্রহণ পিয়ানো, প্রতিটি নোট জন্য এক. তাই প্রত্যেক সময় আপনি এখন থেকে একটি নোট শুনতে, যে আসলে দেখায় যে একটি লুপ , এই লুপ উপর অভিনয় করার মত হচ্ছে তাই প্রতি নোট জন্য, এই চলমান. কি হবে আমি হয় আবার একটি বাফার তৈরি, আমি ভলিউম সেট করার জন্য একটি লাভ নোড নির্মাণ. এই মাত্র একটি সত্যিই আমি বলার অপেক্ষা রাখে না জটিল পথ একটি source.buffer মধ্যে বাফার সংরক্ষণ. আমি এটা বাড়তে দিতে, আমি লাভ এটি সংযোগ, লাভ সাথে সংযুক্ত করা হয় আউটপুট, এবং তারপর আমি বাজাতে. সুতরাং যে প্রক্রিয়া ধরনের একটি বাফার উৎস গ্রহণের. শ্রোতা: আপনি আসলে যে গ্রহণ করতে পারেন শুষ্ক শব্দ এবং এটি আর্দ্র [শ্রবণাতীত] করতে? হিউ ZABRISKIE: আপনি, হ্যা. পুনরায় ক্রিয়া আছে, নেই বিলম্ব, বিকৃতি. আপনি মূলত কিছু করা যাবে র ভাল যে স্যান্ডউইচ মধ্যে, পাইপলাইন, একটি ভাল রূপক কিন্তু আপনি যে কিছু যোগ করতে পারেন. কুল. তাই আমি ডেমো শেষ করব এখানে আপনি একটা ধারনা দিতে সময়ের শুধু নিছক নম্বর আপনি আচমকা যে ফাংশন চালাতে পারেন. তাই আমি এই অপসারণ করা যাচ্ছে না. আমি একটি জেনারেটর তৈরি করা যাচ্ছে না কিন্তু যে মূলত এই সত্যিই does-- কি একটি জটিল বাক্য গঠন ধরনের কিন্তু এটা উড়ে পত্র উৎপন্ন যাচ্ছে, এবং শুধু খেলার শুরু তাদের এটা তাদের মূল্যায়ণ হিসেবে. [Interposing পিয়ানো] তাই আমরা ঠিক এখানে একটু গান করতে পারেন. [Interposing পিয়ানো] তাই কি এই কমান্ড উদাহরণস্বরূপ, হয় না, এটা জন্য যারা তিন নোট লাগে পিয়ানো এবং তারপর B3 থেকে তাদের রাখে. এই সিনট্যাক্স করতে পারে একটু বেশি জ্ঞান একটি আছে যারা এখানে সঙ্গীত পটভূমি. আমি একটি পদাঘাত ড্রাম যোগ করতে পারেন. আমি পারি-- [Interposing যন্ত্রপাতি] --just যে সঙ্গে চারপাশে খেলা. সুতরাং আপনি make-- পারেন [Interposing যন্ত্রপাতি] যে কেউ একটু বেশি বিরক্তিকর. [Interposing যন্ত্রপাতি] যে এলোমেলোভাবে একটি শুষ্ক করতাল যোগ সুতরাং একটি 16% সঙ্গে প্রতি 16 নোট, প্রথম [শ্রবণাতীত]. [Interposing যন্ত্রপাতি] হ্যাঁ, তাই উপায় এই এটা 4 সবসময় আদৌ: 4. [Interposing যন্ত্রপাতি] হ্যা, চার আবাস, এবং 16/8 তাই. [Interposing যন্ত্রপাতি] তাই গড়ে, আপনি 60% ছাড় পান 16 নোট হিট. সকল অবস্থাতেই, এই ছিল শুধু ধরনের দেখাতে আপনি পারা কিছু ওয়েব অডিও API সঙ্গে নির্মাণ. এটা, এটা আসলে খুব দ্রুত, সত্যিই শক্তিশালী এবং আপনি শীতল জিনিস অনেক করতে পারেন এর সাথে. তাই আবার, কোন প্রশ্ন আছে, ইমেইল myself-- Hugh-- বা স্যাম, এবং সত্যি বলতে, গুগল ভাল সম্পদ একটি টন. কোন শেষ প্রশ্ন? হ্যা. শ্রোতা: সুতরাং আপনি অ্যাক্সেস করতে পারেন বিল্ট ইন মাইক্রোফোন. যদি আপনি যেমনটি কী একটি ভাল মাইক্রোফোন ব্যবহার? হিউ ZABRISKIE: যদি আপনি যেমনটি ভালো মাইক্রোফোন ব্যবহার করতে? তাই আবার, এই অংশ ক্রোম মধ্যে বিমূর্ততা এবং আপনার কম্পিউটার বাকি. এটা মাধ্যমে উপলব্ধ যতক্ষণ একটি এপিআই, ওয়েব এখন MIDI API 'র মত, আপনি সম্ভবত কিছু হ্যাক খুঁজে পাইনি, কিন্তু সাধারণত হিসাবে সম্ভবপর না. স্যাম সবুজ: আপনি also-- পারেন সব ক্রোম জানে কি আপনার ডিফল্ট মাইক্রোফোন হয়, এবং এটি যে ব্যবহারের. আপনি একটি মাইক্রোফোন ছিল যদি আপনি করতে পারে, তাই কম্পিউটার এর ডিফল্ট মাইক্রোফোন হিসাবে সেট, আপনি যে ভাবে প্রবেশ করতে পারে এবং এটি সম্ভবত কাজ করবে. হিউ ZABRISKIE: এটা একটা ভালো পয়েন্ট. আমি যে চেষ্টা করেছি, কিন্তু কখনও করেছি আপনি ধরনের সক্ষম হতে পারে র আপনি ইনপুট স্পিকার পুনর্নির্দেশ তাহলে, আপনি হাঁ, যে কাজ করতে সক্ষম হতে পারে. কোন শেষ প্রশ্ন? কুল. ওয়েল ধন্যবাদ আপনাকে বলছি দেখার জন্য এত. আমি হিউ আছি. স্যাম সবুজ: আমি স্যাম আছি. হিউ ZABRISKIE: এবং এই CS50.