1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN:こんにちは、誰もが。 3 00:00:07,170 --> 00:00:08,640 私たちのセミナーへようこそ。 4 00:00:08,640 --> 00:00:10,009 私の名前はサムです。 5 00:00:10,009 --> 00:00:11,050 HUGHザブリスキー:私はヒューです。 6 00:00:11,050 --> 00:00:17,420 SAM GREEN:そして、私たちは今日の話をするつもりです JavaScriptとウェブオーディオAPIについて。 7 00:00:17,420 --> 00:00:21,180 ちょうど開始するには、これは概要であります セミナーのための私達の議題の。 8 00:00:21,180 --> 00:00:25,350 私たちは話してて開始するつもりです なぜあなたは、Webに興味があるべきです 9 00:00:25,350 --> 00:00:30,130 オーディオAPI、なぜJavaScriptがあります あなたはそれのために必要な言語、 10 00:00:30,130 --> 00:00:32,619 そして、その後のJavaScriptについて話します 、のようなのでessentials-- 11 00:00:32,619 --> 00:00:34,800 いくつかを順を追って 言語の基礎、 12 00:00:34,800 --> 00:00:37,290 そして、その後の話を 高いレベルでのオーディオAPI。 13 00:00:37,290 --> 00:00:41,140 その後、ヒューはいくつかについて話します オーディオ・プロダクションの段階の 14 00:00:41,140 --> 00:00:45,509 して、この素晴らしいシーケンサーをデモ プロジェクト彼が構築され、あなたのコードを示します。 15 00:00:45,509 --> 00:00:48,050 そして、我々は時間を持っています 人々のための最後に質問 16 00:00:48,050 --> 00:00:49,593 ここに住んでいる人。 17 00:00:49,593 --> 00:00:50,540 >> HUGHザブリスキー:クール。 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN:クール。 19 00:00:50,990 --> 00:00:51,383 >> HUGHザブリスキー:クール。 20 00:00:51,383 --> 00:00:52,170 私はバックアップされます。 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN:だから、最初の最初のもの。 22 00:00:54,960 --> 00:00:57,840 素晴らしいことの1だから、 ウェブオーディオAPIについて 23 00:00:57,840 --> 00:01:00,480 必要な一切のセットアップはありませんということです。 24 00:01:00,480 --> 00:01:04,230 これは、内蔵の来るに 最も近代的なブラウザ、 25 00:01:04,230 --> 00:01:08,630 クロム、エッジ、全体を含みます others--すべてのものの束 26 00:01:08,630 --> 00:01:12,650 の大部分その 人々が今日を使用しています。 27 00:01:12,650 --> 00:01:14,807 だから、何のセットアップはありません、 脇だけ取得から 28 00:01:14,807 --> 00:01:16,890 以下のために、行くのWebサーバー あなたの作業を始めるために 29 00:01:16,890 --> 00:01:18,420 素晴らしいですプロジェクト、上。 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> 我々は非常にお勧めします 重くあなたが検討することを 32 00:01:24,190 --> 00:01:26,530 以下のためにChromeを使用して JavaScriptのWeb開発、 33 00:01:26,530 --> 00:01:30,260 理由だけで、その開発者 ツールは本当に強いです。 34 00:01:30,260 --> 00:01:33,220 我々は意味だけで何の例として、 言って、あなたはJavaScriptを開きます 35 00:01:33,220 --> 00:01:38,600 あなたはクロームに行けばconsole-- あなたは、任意のWebページを見て、 36 00:01:38,600 --> 00:01:43,897 あなたは左クリックし その要素を点検し、 37 00:01:43,897 --> 00:01:46,730 あなたはこの小さなドロップダウンに行きます 右ここで、あなたがコンソールをクリックし、 38 00:01:46,730 --> 00:01:50,660 あなたはアップが見えるもの開きがわかります あなたコマンドプロンプトのようにたくさん 39 00:01:50,660 --> 00:01:53,720 お使いのMac上で、またはIDに表示されることがあります。 40 00:01:53,720 --> 00:01:59,260 そして、ちょうどそのように、我々はできます タイプはクリアのように、ここではコマンド、 41 00:01:59,260 --> 00:02:01,350 そのような他のコマンド。 42 00:02:01,350 --> 00:02:04,267 我々は、変数を作成することができます 私たちには、JavaScriptの後半で表示されます。 43 00:02:04,267 --> 00:02:07,100 だから私たちが何かできること JavaScriptは、我々は、コンソールで行うことができます 44 00:02:07,100 --> 00:02:11,430 それはスーパーに便利な方法です APIで遊んで開始 45 00:02:11,430 --> 00:02:15,760 とに慣れます バットオフJavaScriptの権利。 46 00:02:15,760 --> 00:02:18,290 いいえセットアップは必要ありません、 これは本当に素晴らしいです。 47 00:02:18,290 --> 00:02:18,790 クール。 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 驚くばかり。 50 00:02:22,880 --> 00:02:24,780 >> だからもう一つ追加します。 51 00:02:24,780 --> 00:02:27,780 あなたが任意のquestions--を持っている場合があります ここにいない人、あなたの多くが住んでいます、 52 00:02:27,780 --> 00:02:31,232 us--これらの電子メールを送ること自由に感じ 私たちの電子メールアドレスです。 53 00:02:31,232 --> 00:02:33,190 ご質問がある場合 あなたは私たちに依頼したくありません、 54 00:02:33,190 --> 00:02:36,160 ああ、私はバグを持っている、のような 私のコードで、または何か 55 00:02:36,160 --> 00:02:39,270 それは、もう少し具体的です 多分最初にそれをGoogleに。 56 00:02:39,270 --> 00:02:42,340 偉大な資源がたくさんあり​​ます そこにウェブオーディオAPIについて。 57 00:02:42,340 --> 00:02:44,089 それは本当によくです 文書化され、それがされています 58 00:02:44,089 --> 00:02:47,194 の人々のトンで使用されます 産業、ちょうどある人 59 00:02:47,194 --> 00:02:48,610 自分自身のための楽しいものを構築します。 60 00:02:48,610 --> 00:02:51,306 だから、たくさんあるはずです そこにリソースの。 61 00:02:51,306 --> 00:02:53,040 驚くばかり。 62 00:02:53,040 --> 00:02:56,100 >> クール、なぜウェブオーディオAPIの? 63 00:02:56,100 --> 00:02:59,840 この図は少しあります 方法の進化の 64 00:02:59,840 --> 00:03:04,100 ウェブ上の音は、時間の経過とともに成長してきました。 65 00:03:04,100 --> 00:03:13,080 BGSOUNDは、元のHTMLタグのようでした Internet Explorerをサポートするために使用されるもの。 66 00:03:13,080 --> 00:03:16,790 それだけでかなり基本的な音のために許可され、 機能性は、非常に堅牢ではありませんでした 67 00:03:16,790 --> 00:03:19,380 あなたが行うことができませんでした 複雑なシーケンシング、 68 00:03:19,380 --> 00:03:21,890 音の開始時または制御 そして、非常に堅牢に停止しました。 69 00:03:21,890 --> 00:03:23,930 だから、それは特にありませんでした よく発達。 70 00:03:23,930 --> 00:03:27,470 そしてその後、フラッシュ along--これが来ました、 71 00:03:27,470 --> 00:03:31,712 私はあなたたちはすべて理解していることを確信しています Flash--とそうでないかもしれないそれがどのように動作しますか、 72 00:03:31,712 --> 00:03:32,920 しかし、あなたは確かにそれを見てきました。 73 00:03:32,920 --> 00:03:35,586 あなたはフラッシュを更新するために持っています プラグイン、もののすべてのようなものを、 74 00:03:35,586 --> 00:03:40,110 それは確かに範囲を拡張しました 利用可能だった機能の。 75 00:03:40,110 --> 00:03:45,370 しかし、ユーザーがインストールすること プラグインは間違いなくあります 76 00:03:45,370 --> 00:03:48,480 フラッシュなどの欠点 あなたのアプリケーションで、右か? 77 00:03:48,480 --> 00:03:52,410 あなたが依存しているため、 ユーザーが行くと、このプラグインを見つけ、 78 00:03:52,410 --> 00:03:54,660 おそらく回転されます この余分なステップバイオフ 79 00:03:54,660 --> 00:03:56,640 彼らはあなたのアプリケーションを使用するために取らなければなりません。 80 00:03:56,640 --> 00:04:01,270 そして、アップデートがあるかもしれません それはあなたのアプリケーション全体を破りますよ、 81 00:04:01,270 --> 00:04:03,880 そして、それは悪夢なってしまいます あまりにも、開発者のため。 82 00:04:03,880 --> 00:04:06,230 だから、バリケードました。 83 00:04:06,230 --> 00:04:10,480 >> そして、その後に沿って来て、 HTMLオーディオタグ、どの 84 00:04:10,480 --> 00:04:16,579 より近代的なHTML--の機能があります 確かに、より多くのもののため許可され、 85 00:04:16,579 --> 00:04:20,050 それでも物事はあなたが行うことができます 少しはそこ限られていました 86 00:04:20,050 --> 00:04:22,730 物事の結果として、 そのHTMLは可能でした。 87 00:04:22,730 --> 00:04:26,060 だからときにはJavaScript API、ウェブオーディオAPI、 88 00:04:26,060 --> 00:04:29,290 標準になりました ブラウザ間での練習、 89 00:04:29,290 --> 00:04:32,490 それは実際にセットを拡大し 開発者のための機会を 90 00:04:32,490 --> 00:04:36,590 本当に建物に取得します Web用のクールなもの。 91 00:04:36,590 --> 00:04:39,220 長い時間のためにそこにいました 本当に堅牢なツールとなって 92 00:04:39,220 --> 00:04:44,360 ネイティブオーディオアプリケーションのために、 誰もがGarageBandのを知っていますlike--、 93 00:04:44,360 --> 00:04:48,360 して、明らかにそれ以上が存在します プロオーディオミキシングアプリケーション、 94 00:04:48,360 --> 00:04:49,640 とかのようなもの。 95 00:04:49,640 --> 00:04:52,690 しかし、ありませんでした 本当に良いCloud--ありません 96 00:04:52,690 --> 00:04:55,811 クラウド、ええ、私は推測します Cloud--ウェブベースのプラットフォーム 97 00:04:55,811 --> 00:04:58,310 それは、開発者ができるようになります 人々のためのアプリケーションを構築します 98 00:04:58,310 --> 00:05:00,570 オーディオミキシングを行います。 99 00:05:00,570 --> 00:05:03,960 そして、彼はあなたが表示されますように 後で、ウェブオーディオAPI 100 00:05:03,960 --> 00:05:07,470 本当に強力を可能にします 本当に単純に発生するもの、 101 00:05:07,470 --> 00:05:09,597 これはかなりクールです。 102 00:05:09,597 --> 00:05:12,680 だから、なぜあなたに命令です セミナーの残りの部分を監視する必要があり、 103 00:05:12,680 --> 00:05:14,350 基本的には。 104 00:05:14,350 --> 00:05:17,880 >> そして今、私は約話をするつもりです いくつかのJavaScript--だけの基本的な要素 105 00:05:17,880 --> 00:05:20,240 言語の、ように 私たちは、同じページにすることができます 106 00:05:20,240 --> 00:05:22,470 我々はについて話すとき API少し後で。 107 00:05:22,470 --> 00:05:23,260 クール。 108 00:05:23,260 --> 00:05:26,192 >> だから、これは要約です。 109 00:05:26,192 --> 00:05:27,150 私はこれがここにあったのを忘れていました。 110 00:05:27,150 --> 00:05:27,510 うん。 111 00:05:27,510 --> 00:05:27,870 >> HUGHザブリスキー:ここに2つのスライドがあります。 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN:これは要約です 制限のいくつかの 113 00:05:30,245 --> 00:05:35,220 他の結合、古い方法の。 114 00:05:35,220 --> 00:05:37,828 そして今、我々はこれらのものを持っています。 115 00:05:37,828 --> 00:05:40,011 クール。 116 00:05:40,011 --> 00:05:40,510 驚くばかり。 117 00:05:40,510 --> 00:05:43,200 >> だから、JavaScriptの必需品。 118 00:05:43,200 --> 00:05:47,230 最初のものは、最初に、あります かなり有意差 119 00:05:47,230 --> 00:05:49,940 Aにおける対JavaScriptで 以下のように、Cのような言語、 120 00:05:49,940 --> 00:05:52,050 変数が作成されます。 121 00:05:52,050 --> 00:05:55,634 だからCに、我々は持つに慣れています 私たちの変数を入力するには、右? 122 00:05:55,634 --> 00:05:57,800 そして、私のようなタイプを意味するものではありません それらを入力し、私は種類を意味します 123 00:05:57,800 --> 00:06:01,900 以下のような彼らにtype--意味を割り当てます 以下のように、int型、float型、char型。 124 00:06:01,900 --> 00:06:05,210 Cでは、私たちは本当にするために使用されました 変数を作成すること 125 00:06:05,210 --> 00:06:09,690 そして、その後のためにその型にこだわります 我々はその変数を使用して全体の時間。 126 00:06:09,690 --> 00:06:13,990 そして、それは、必ずしも悪いことではありません しかし、それはおそらく使用が困難です。 127 00:06:13,990 --> 00:06:16,190 クールな機能の一つ JavaScriptはあるの 128 00:06:16,190 --> 00:06:19,740 変数はと呼ばれるものであることを これは「動的型付け」 129 00:06:19,740 --> 00:06:22,500 私が作成できることを意味し その構文で変数、 130 00:06:22,500 --> 00:06:25,800 VARXには、例えば、5に等しいです。 131 00:06:25,800 --> 00:06:27,790 それは、もともと作成します 整数variable-- 132 00:06:27,790 --> 00:06:29,870 右下 フードsomewhere--けど 133 00:06:29,870 --> 00:06:33,040 その変数を変更することができます 文字列を参照するために 134 00:06:33,040 --> 00:06:35,820 以下のような何もせずに 新しい変数を作成します。 135 00:06:35,820 --> 00:06:37,880 私は心配する必要はありません タイプの変更について。 136 00:06:37,880 --> 00:06:45,440 JavaScriptはタイプのことを知っています 変化し、それが動的に行われます。 137 00:06:45,440 --> 00:06:48,510 >> だから、メリットがあります それには欠点、 138 00:06:48,510 --> 00:06:51,250 で働いていますように誰も しばらくの間、JavaScriptが知っているかもしれません。 139 00:06:51,250 --> 00:06:53,600 時があります。 誤っかもしれません 140 00:06:53,600 --> 00:06:57,720 変数の型を変更し、 そのタイプの変更を処理していません、 141 00:06:57,720 --> 00:07:01,120 そして、あなたのJavaScriptの crash--または例外ことができます 142 00:07:01,120 --> 00:07:06,070 あなたが持っているだろうから、スローされます あなたは一つのタイプを期待間違ったタイプ。 143 00:07:06,070 --> 00:07:07,040 クール。 144 00:07:07,040 --> 00:07:11,470 >> 私たちならば、同様のであるだから、scoping-- コー​​スの初期の数週間を覚えて、 145 00:07:11,470 --> 00:07:15,420 どのように見える変数を参照 で、コードのどの地区に立地しています。 146 00:07:15,420 --> 00:07:18,400 すべてのことは、非常に似ています それはCでの見え方に 147 00:07:18,400 --> 00:07:24,755 だから変数は、一般的にスコープされ 関数内の中括弧内に、 148 00:07:24,755 --> 00:07:27,005 そして、その後もあります そのグローバルスコープの変数 149 00:07:27,005 --> 00:07:29,171 変数を書く場合are-- 関数の外に、 150 00:07:29,171 --> 00:07:31,790 それは、テキスト全体に表示されます。 151 00:07:31,790 --> 00:07:35,840 >> 違いの1つ 特に、JavaScriptとC、 152 00:07:35,840 --> 00:07:40,280 場合は、グローバルに宣言することです テキストフ​​ァイル内の変数の任意の場所 153 00:07:40,280 --> 00:07:43,324 それが任意の関数に見えるのです そのテキストフ​​ァイル内。 154 00:07:43,324 --> 00:07:44,240 それは右、正しいのか? 155 00:07:44,240 --> 00:07:46,330 >> HUGHザブリスキー:うん。 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN:だから、も少しです Cに比べて少しファンキー、 157 00:07:49,120 --> 00:07:52,660 我々は常に持っていた場所です。 場所上記の変数の定義 158 00:07:52,660 --> 00:07:53,770 それらを使用しました。 159 00:07:53,770 --> 00:07:57,957 それは強制の法則ではありません もう、そう、少し異なります。 160 00:07:57,957 --> 00:08:00,540 そして再びちょうど再び強調するために、 ローカルvariables--対グローバル 161 00:08:00,540 --> 00:08:03,457 あなたが持っている可能性がCに非常に似て 同じ名前の2つの変数、 162 00:08:03,457 --> 00:08:06,540 そして、自分の名前のいずれかを持っているが影にします ローカル変数によって、これらのいずれかが 163 00:08:06,540 --> 00:08:07,546 グローバルました。 164 00:08:07,546 --> 00:08:09,420 のだから、同じような種類 あなたのいくつかの問題 165 00:08:09,420 --> 00:08:11,920 一部でに実行した可能性があります あなたの問題のこれまでに設定します。 166 00:08:11,920 --> 00:08:14,450 クールなので、それが変数です。 167 00:08:14,450 --> 00:08:20,310 >> 制御フローのような意味 IF-else--論理stuff--やループ。 168 00:08:20,310 --> 00:08:24,510 そうで開始するには、これが何であるかのif-else 文では、JavaScriptのように見えます。 169 00:08:24,510 --> 00:08:29,750 様々なものの配置 行に重要ではありません。 170 00:08:29,750 --> 00:08:34,409 これは単なる慣習の一つであります 方法のために、私たちはコードを構造化します。 171 00:08:34,409 --> 00:08:38,634 ちょうどCのように、私たちは持っています かっこステートメント」であれば」。 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 それは私が何を意味したものではありません。 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 私は再びそれをやった。 176 00:08:45,550 --> 00:08:46,841 >> HUGHザブリスキー:終了しようとすると? 177 00:08:46,841 --> 00:08:49,770 SAM GREEN:いいえ、私は ただズームインしようとしています。 178 00:08:49,770 --> 00:08:50,660 それは問題ではありません。 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> だから、私たちは「IF」ステートメントを持っており、 我々はそれの内部に条件を持っています 181 00:08:59,370 --> 00:09:03,130 それは、真または偽と評価され、 それがいるか否かを判定する 182 00:09:03,130 --> 00:09:04,510 我々は、コードのブロックを入力してください。 183 00:09:04,510 --> 00:09:09,860 そして同様に、我々は他の-場合があり、 我々はCで慣れているだけのよう他に、 184 00:09:09,860 --> 00:09:14,010 >> また、かなり快適でなければなりません 右のループを有するバットオフ、 185 00:09:14,010 --> 00:09:16,440 彼らはまた見るため Cのようにたくさん見えます。 186 00:09:16,440 --> 00:09:19,600 しかし、あなたは再び、我々に気付くでしょう 代わりに初期化int型の、持っています、 187 00:09:19,600 --> 00:09:22,570 我々は、VARの初期化を持っています。 188 00:09:22,570 --> 00:09:24,650 そして、私はあなたが持っていると思います 作るために注意します 189 00:09:24,650 --> 00:09:28,460 あなたが値を変更しないことを確認 私のint型から文字列に、 190 00:09:28,460 --> 00:09:31,780 例えば、そのために起こっています あなたがないかもしれない奇妙な行動を引き起こします 191 00:09:31,780 --> 00:09:32,280 期待しています。 192 00:09:32,280 --> 00:09:35,750 しかし、これはなっているはずです かなりおなじみの、同様に。 193 00:09:35,750 --> 00:09:39,460 >> 物事がに始めるところこれがあります JavaScriptで少しクレイジー取得 194 00:09:39,460 --> 00:09:44,920 Aから起こっている誰かのために Cの背景機能があります。 195 00:09:44,920 --> 00:09:48,070 JavaScriptであり、一つの方法があります 見える関数を宣言すること 196 00:09:48,070 --> 00:09:50,361 Cに類似のソート、 その別のものがあります 197 00:09:50,361 --> 00:09:52,450 種類の異なる見えます。 198 00:09:52,450 --> 00:09:54,930 >> 最初のバージョン、 私たちはここで見ることができ、 199 00:09:54,930 --> 00:09:59,260 ここで、Cライクの一種であります 我々は、これは機能である、と言います 200 00:09:59,260 --> 00:10:01,490 それに名前を与え、与えます 引数の数、 201 00:10:01,490 --> 00:10:05,150 機能の、その後内容 それらの中括弧の内側に移動します。 202 00:10:05,150 --> 00:10:08,850 我々は、例を参照してくださいよ ちょうど秒で引数。 203 00:10:08,850 --> 00:10:13,420 >> 次の行にのに対し、我々はああ、参照してください。 ここと呼ばれる変数」てmyFunctionは、 "です 204 00:10:13,420 --> 00:10:17,546 私たちはこれにそれに等しいです そのfunction--ジェネリックthing-- 205 00:10:17,546 --> 00:10:19,170 起こって何かを持っているように思えません。 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 違う理由 Cには、JavaScriptということよりも、 208 00:10:26,080 --> 00:10:30,040 関数型言語と呼ばれるもので、 またはこれは意味し、機能的な要素を持っています 209 00:10:30,040 --> 00:10:33,510 関数は実際の値であること。 210 00:10:33,510 --> 00:10:39,520 そして、それは我々が設定できることを意味します 機能を等しくするための変数 211 00:10:39,520 --> 00:10:43,210 次にその機能を移動 周りに、それを引数として渡し、 212 00:10:43,210 --> 00:10:46,550 もののすべての種類を行います 機能を持つような。 213 00:10:46,550 --> 00:10:49,682 >> note--する一つの他の事 機能が書かれています 214 00:10:49,682 --> 00:10:51,140 引数の特定の番号を指定します。 215 00:10:51,140 --> 00:10:54,056 私たちは、関数の例を参照してくださいよ 次のスライドに引数で。 216 00:10:54,056 --> 00:10:56,720 しかし、JavaScriptはしません あなたがしようとした場合、あなたに叫びます 217 00:10:56,720 --> 00:10:59,330 で機能を使用するには 引数の数が誤っています。 218 00:10:59,330 --> 00:11:05,310 それはちょうど作るために最善を尽くします あなたが渡した場合ことを意味し、実行し、 219 00:11:05,310 --> 00:11:09,410 あなたが期待する関数を呼び出します 引数なしの引数、すべてのこと 220 00:11:09,410 --> 00:11:13,990 それは最善を尽くしますされて発生します 試してみて、そのコードを実行するには、 221 00:11:13,990 --> 00:11:16,541 それが最終的に実行された場合 例外またはエラーに、 222 00:11:16,541 --> 00:11:19,790 その例外をスローするだけしておこう going--だけの方法の一つであります 223 00:11:19,790 --> 00:11:21,070 JavaScriptが動作します。 224 00:11:21,070 --> 00:11:21,781 うん。 225 00:11:21,781 --> 00:11:24,207 >> 観客は:何が起こる場合 あまりにも多くの引数がありますか? 226 00:11:24,207 --> 00:11:26,040 SAM GREEN:だから 質問は何が起こるか、でした 227 00:11:26,040 --> 00:11:27,380 あまりにも多くの引数がある場合は? 228 00:11:27,380 --> 00:11:29,171 そして、答えはということです JavaScriptはちょうどます 229 00:11:29,171 --> 00:11:32,120 あるものを無視します ものの後にそれは期待しています。 230 00:11:32,120 --> 00:11:36,420 これは、関数を実行しようとするでしょう それだけで最初の二つであるかのように呼び出します。 231 00:11:36,420 --> 00:11:37,075 右? 232 00:11:37,075 --> 00:11:37,700 >> HUGHザブリスキー:そうだね、うん。 233 00:11:37,700 --> 00:11:39,449 同様に、そこ あまりにもいくつかの引数は、 234 00:11:39,449 --> 00:11:42,640 それだけの種類のすべてにnullを与えます 引数はそれが任意の値を持っていません 235 00:11:42,640 --> 00:11:43,660 ため。 236 00:11:43,660 --> 00:11:45,810 >> SAM GREEN:缶 あなたならば、実際に、便利なこと 237 00:11:45,810 --> 00:11:49,060 その機能を書きたいです 可変数引数を取ります。 238 00:11:49,060 --> 00:11:55,830 あなたには、デフォルト値を設定することができます 関数の定義、 239 00:11:55,830 --> 00:11:59,060 それは事実を無視することができます 入力がないということ。 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 だから私は少し話をしたいです この最後の弾丸の詳細 242 00:12:04,000 --> 00:12:05,541 機能する点は、値です。 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 これは一例です 少し心吹き 245 00:12:11,010 --> 00:12:14,880 あなたはそれを読み、考えていない場合 第二のために何が起こっているのかについて。 246 00:12:14,880 --> 00:12:17,910 それでは、ただ見てみましょう ここでは最初の行。 247 00:12:17,910 --> 00:12:24,360 私たちは、私たちが言うことを、この変数、F1キーを持っています このことを行う機能です。 248 00:12:24,360 --> 00:12:28,535 また、機能の内容 ( 'こんにちは')CONSOLE.LOGされています。 249 00:12:28,535 --> 00:12:32,220 あなたにはconsole.logを考えることができます printf関数のJavaScriptの同等。 250 00:12:32,220 --> 00:12:35,510 だから、何が起こるかと、ある我々 私達のブラウザでこのコードを実行します、 251 00:12:35,510 --> 00:12:37,530 それは文字列を印刷します。 252 00:12:37,530 --> 00:12:39,342 私はそれを実証することができます。 253 00:12:39,342 --> 00:12:42,300 聴衆:ログでは、しかし、ことはありません それはどこかに記録されています意味ですか? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN:うん。 255 00:12:42,550 --> 00:12:44,216 だから私は起こることを何が起こっているかを紹介します。 256 00:12:44,216 --> 00:12:48,085 そこで問題は、ログには何を意味したのですか? 257 00:12:48,085 --> 00:12:51,262 >> HUGHザブリスキー:だからにconsole.log Cのprintfのようなものです 258 00:12:51,262 --> 00:12:52,970 SAM GREEN:だからにconsole.log printfのようなものです、 259 00:12:52,970 --> 00:12:59,240 私はこれにconsole.logを持っている場合( 'こんにちは')、 私は呼んでいる、文字列 "こんにちは" 260 00:12:59,240 --> 00:13:00,730 コンソールにプリントアウトされます。 261 00:13:00,730 --> 00:13:03,340 これはコンソールです。 262 00:13:03,340 --> 00:13:05,930 それはちょうどprintfの、のようなものです それは、標準出力に出力します。 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 そして、我々は分で表示されます、 これは実際には 265 00:13:11,230 --> 00:13:16,529 コンソールのオブジェクトを参照します、 そのオブジェクトのメソッドを呼び出します。 266 00:13:16,529 --> 00:13:18,320 それはより多くの意味を行います 分でときに我々 267 00:13:18,320 --> 00:13:20,660 話に行きます JavaScriptでのオブジェクト、 268 00:13:20,660 --> 00:13:22,509 が、私はちょうどそれを言及だろうと思いました。 269 00:13:22,509 --> 00:13:24,300 HUGHザブリスキー:私たちはしています C言語でに慣れ、right-- 270 00:13:24,300 --> 00:13:27,580 我々は通常、大きなプログラムを書きます 主に何かをします。 271 00:13:27,580 --> 00:13:30,700 しかし、どのようなJavaScriptでクールなのはあなたです 通訳のこの種を持っています 272 00:13:30,700 --> 00:13:33,620 リアルタイムで実行されますので、 線でちょうどラインをとり、 273 00:13:33,620 --> 00:13:35,320 それだけでその場でそれを解釈することができます。 274 00:13:35,320 --> 00:13:37,403 そして、それはを追跡します 前に実行されたもの、 275 00:13:37,403 --> 00:13:41,620 それはにかなり便利なツールです 、にconsole.log、またはコンソールを使用します 276 00:13:41,620 --> 00:13:46,870 一般的に、単に再生します JavaScriptで周り。 277 00:13:46,870 --> 00:13:51,420 >> SAM GREEN:だからこれに戻って コー​​ドの2行目をexample-- 278 00:13:51,420 --> 00:13:55,320 ここではかなり気が遠くなるような私の頭の中にあります。 279 00:13:55,320 --> 00:13:59,790 私はこれを読んで初めて、 それは何が起こっているかのようでしたか? 280 00:13:59,790 --> 00:14:04,580 だから何が起こっていることは、これです 関数の宣言は述べています、 281 00:14:04,580 --> 00:14:10,170 私はF2と呼ばれる機能を持っています それは、fは一つの引数を期待しています、 282 00:14:10,170 --> 00:14:12,990 そして、それはそれを呼び出します 関数f、その 283 00:14:12,990 --> 00:14:17,652 引数として渡されました 引数なし自体に。 284 00:14:17,652 --> 00:14:19,110 だから、それは混乱していたかもしれません。 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 f2はF1を取るとして、私たちはこのことを理解していれば 引数として、その後、F2の内側に、 287 00:14:28,400 --> 00:14:31,190 fはcalled--する手段を取得 このコード行こと、 288 00:14:31,190 --> 00:14:34,192 次の2行の後 コー​​ド、「こんにちは」の結果 289 00:14:34,192 --> 00:14:35,400 コンソールに出力されています。 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> 我々が通過することができるという事実 周りの関数値として 292 00:14:44,910 --> 00:14:47,870 ほとんどの一つなってしまいます JavaScriptを強力な機能 293 00:14:47,870 --> 00:14:49,700 プログラミング言語として。 294 00:14:49,700 --> 00:14:52,782 すべての外 それを行うことができます素晴らしいもの、 295 00:14:52,782 --> 00:14:54,990 ただの特徴として、 方法の観点から言語 296 00:14:54,990 --> 00:14:58,400 それは、物事が容易になりますことを プログラムし、可能にします 297 00:14:58,400 --> 00:15:01,060 特にありませんもののため ウェブによく適し、 298 00:15:01,060 --> 00:15:04,500 関数型プログラミングと機能 JavaScriptをプログラミング側面 299 00:15:04,500 --> 00:15:07,130 最もの一つです 強力な概念こと 300 00:15:07,130 --> 00:15:11,030 あなたは私に言わせればJavaScript--に存在します。 301 00:15:11,030 --> 00:15:11,960 クール。 302 00:15:11,960 --> 00:15:13,534 >> そこで、次の事。 303 00:15:13,534 --> 00:15:16,450 機能的であることに加えて、 JavaScriptを要素もあります 304 00:15:16,450 --> 00:15:20,510 オブジェクト指向であること、 これは非常にの一つであります 305 00:15:20,510 --> 00:15:23,800 コンピュータサイエンスの人気の話題の言葉。 306 00:15:23,800 --> 00:15:27,040 オブジェクト指向プログラミング 本当に人気のものです。 307 00:15:27,040 --> 00:15:34,210 JavaScriptはそのバージョンを持っています、 私は、すべての値でもあると考えているところ 308 00:15:34,210 --> 00:15:41,475 そのすべてのオブジェクトを意味し、オブジェクト、 値をいくつか一緒にラップします。 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 シンプルな値、等のためのそう VARXような整数は、5に等しく、 311 00:15:49,750 --> 00:15:52,250 そのオブジェクトだけでは一つの値をラップします。 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> しかし、我々はまた、状況を想像することができます 我々は、C言語での状況を考えることができますwhere-- 314 00:15:59,036 --> 00:16:00,910 我々がやってみたかった場所 構造体で何か、 315 00:16:00,910 --> 00:16:03,285 例えば、それは、いくつかのラップ 一緒値との作り 316 00:16:03,285 --> 00:16:05,870 それは本当に簡単に周りのものを渡すことができます。 317 00:16:05,870 --> 00:16:09,270 オブジェクトはJavaScriptであるときです。 318 00:16:09,270 --> 00:16:12,340 >> これは覚えておくことが重要です 私は、オブジェクトがラップされていることを言うとき 319 00:16:12,340 --> 00:16:15,330 一緒にいくつかの値の数、 関数でもあること 320 00:16:15,330 --> 00:16:21,506 関数ができることを意味した値、 また、JavaScriptオブジェクトの内側にあります。 321 00:16:21,506 --> 00:16:26,910 重要だと理由 一方、私たちはしばしば、ということです 322 00:16:26,910 --> 00:16:30,290 メソッドを呼び出すと思います オブジェクトに 323 00:16:30,290 --> 00:16:35,200 その他の人気用語の 人気のオブジェクト指向言語、 324 00:16:35,200 --> 00:16:39,330 ここでの違いの一つは、ということです この方法では、JavaScriptにあるすべてのこと 325 00:16:39,330 --> 00:16:47,270 値は、オブジェクトの内部に格納されています それはおそらくいくつかaction--を行い、 326 00:16:47,270 --> 00:16:51,850 内側にある他の値を使用して、 そのオブジェクトの、必ずしもそうではありません。 327 00:16:51,850 --> 00:16:56,930 だから、私は、状況を想像することができます クレイジー方法の少しで推測、 328 00:16:56,930 --> 00:17:02,990 あなたが1つに記載の方法と呼ばれる場所 例えば、別のオブジェクト上のオブジェクト。 329 00:17:02,990 --> 00:17:06,010 だから、それはそのように少しファンキーです。 330 00:17:06,010 --> 00:17:09,369 >> そして、あなたはまた、方法を変更することができます オブジェクトに関連付けられています 331 00:17:09,369 --> 00:17:13,740 そのメソッドaを割り当てることによって、 また、新しい機能、 332 00:17:13,740 --> 00:17:18,250 他からかなり異なります オブジェクト指向言語、 333 00:17:18,250 --> 00:17:21,410 我々は、オブジェクトを宣言したら、 でインスタンスを作成し、 334 00:17:21,410 --> 00:17:25,839 私たちは、ある方法を変更することはできません。 もうそのオブジェクトに関連付けられています。 335 00:17:25,839 --> 00:17:28,680 だから、かなり違います。 336 00:17:28,680 --> 00:17:29,570 クール。 337 00:17:29,570 --> 00:17:34,010 >> そこでここではまず、例です、 アクション内のオブジェクトの。 338 00:17:34,010 --> 00:17:36,390 これはと呼ばれるものです 汎用オブジェクト、どの 339 00:17:36,390 --> 00:17:39,460 それはいずれも有していないことを意味し 特定の名前は、クラスを持っていません、 340 00:17:39,460 --> 00:17:42,190 それは、値のちょうどいくつかのラッピングです。 341 00:17:42,190 --> 00:17:49,790 そして、見え方は、私たちが持っている、です ここでは、中括弧のこの外側のペア 342 00:17:49,790 --> 00:17:57,950 JavaScriptに示すこと これはオブジェクトである、と言います。 343 00:17:57,950 --> 00:18:02,130 その中の値 各値は、内部にあります 344 00:18:02,130 --> 00:18:04,590 そのすべきオブジェクトの 一緒に包まれます。 345 00:18:04,590 --> 00:18:09,180 そして、そのオブジェクトの内部に、 我々は、キーと値のペアを持っています、 346 00:18:09,180 --> 00:18:13,880 キーは名前を指します オブジェクトの内部値の、 347 00:18:13,880 --> 00:18:16,790 およびその他のside-- コロン反対here-- 348 00:18:16,790 --> 00:18:19,850 実際の値は、 それが保存されるべきです。 349 00:18:19,850 --> 00:18:26,210 >> だから、私たちが持っていることをここで見ます 値SAM​​とFNキーと呼ばれます、 350 00:18:26,210 --> 00:18:29,430 コンマに続きます、 次のエントリに言って。 351 00:18:29,430 --> 00:18:33,560 そして、LNと呼ばれるキー、 緑の値は、 352 00:18:33,560 --> 00:18:35,840 コンマに続きます、 「印刷」が続きます 353 00:18:35,840 --> 00:18:43,209 関数値を持っているつもりされています それは、このコード行を実行しようとしています。 354 00:18:43,209 --> 00:18:45,500 バックステップを見てみましょうし、 ここで何が起こっているのか解凍します。 355 00:18:45,500 --> 00:18:47,280 これは、少し複雑です 私たちは新しい何かを見ています 356 00:18:47,280 --> 00:18:48,071 初めて。 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 「この」キーワードは新しいものであり、 我々はここで見て、これは何をしています 359 00:18:55,065 --> 00:19:00,540 、ある電流であります スコープ内のオブジェクトは、右? 360 00:19:00,540 --> 00:19:03,990 だから我々は、これを言うとき、 すべての帰り道ポイント 361 00:19:03,990 --> 00:19:08,140 この全体のobject--へ 我々はthis.fn行うとき、 362 00:19:08,140 --> 00:19:11,990 我々は戻ってすべての道を行くつもりです このオブジェクトに、FNの値に行きます 363 00:19:11,990 --> 00:19:16,471 サムを取得し、それをすべての方法を引っ張ります バック、ここでそれを固執し、その後に移動します。 364 00:19:16,471 --> 00:19:19,838 >> 聴衆:だから検索して、あります そのため、パラメータの検査は行われ 365 00:19:19,838 --> 00:19:20,621 定義? 366 00:19:20,621 --> 00:19:23,870 SAM GREEN:質問があったので、あります 検索のためのパラメータの検査は行われ 367 00:19:23,870 --> 00:19:24,727 定義? 368 00:19:24,727 --> 00:19:25,435 うん、絶対に。 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 何ここで起こるだろうことで、 この点ではJavaScriptを言い、 371 00:19:32,470 --> 00:19:39,990 [OK]を、私はいくつかの値を取得しています このオブジェクトから自分から。 372 00:19:39,990 --> 00:19:46,375 そして、それはエントリを探します FNと呼ばれ、それを見つけた場合、 373 00:19:46,375 --> 00:19:48,470 それはそうvalue--、それはサムのことを戻ります。 374 00:19:48,470 --> 00:19:51,540 しかし、私はまた、入力されたている可能性が ここで定義されていなかったもの、 375 00:19:51,540 --> 00:19:54,090 そしてそれはちょうどだろう 復帰しますundefined-- 376 00:19:54,090 --> 00:19:58,250 事は、JavaScriptができることです 利点を持つことができ、実行、 377 00:19:58,250 --> 00:20:03,190 あなたがタイプミスをする場合、それは、also--です それは奇妙なエラーが発生することができます。 378 00:20:03,190 --> 00:20:05,617 だから、ちょうど見つけるしようとするでしょう あなたは見つけるためにそれを伝えるものは何でも 379 00:20:05,617 --> 00:20:07,700 それはするつもりはありません それが見つからない場合は文句を言います。 380 00:20:07,700 --> 00:20:11,390 それはちょうど私がしなかった、と言うでしょう それを見つけ、その後に移動します。 381 00:20:11,390 --> 00:20:17,581 だから、未定義であろう プラス空白、プラス姓。 382 00:20:17,581 --> 00:20:18,080 うん。 383 00:20:18,080 --> 00:20:21,070 そして、我々はそれを見ることができれば、我々 その後、下に行くとaccess--可能性 384 00:20:21,070 --> 00:20:25,450 我々は括弧でtf.print()を呼び出します。 385 00:20:25,450 --> 00:20:30,000 それは、その印刷を呼び出すために起こっています 引数なしの関数、右? 386 00:20:30,000 --> 00:20:34,490 しかし、我々はちょうどtf.print(言ったら) セミコロン、括弧なしで、 387 00:20:34,490 --> 00:20:37,480 行ったであろうすべてのことを引っ張っています 値から関数うち、 388 00:20:37,480 --> 00:20:40,609 しかし実際にそれを呼びません。 389 00:20:40,609 --> 00:20:41,162 クール。 390 00:20:41,162 --> 00:20:42,870 HUGHザブリスキー:万一 我々は、オブジェクトを作りますか? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN:確かに、のはそれをやらせます。 392 00:20:44,161 --> 00:20:48,750 だから私はこれを移動することができます コンソールに例。 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 私たちは、私は、オブジェクトを持っていることを想像することができます。 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 これは単純なオブジェクトです。 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 これは、2つを含むオブジェクトです 2キー、2キー値を持つ値 399 00:21:11,050 --> 00:21:12,710 ペア。 400 00:21:12,710 --> 00:21:21,850 だから私はその後、格納された値にアクセスすることができます x.x1を実行して、このオブジェクトの内部に、 401 00:21:21,850 --> 00:21:23,400 例えば、私は1を取り戻します。 402 00:21:23,400 --> 00:21:29,590 同様に、x.x2は、その値を取り戻します。 403 00:21:29,590 --> 00:21:33,330 >> そして今、本当にクールなことは、私ができる、あります 実際にこのオブジェクトに何かを追加 404 00:21:33,330 --> 00:21:34,316 私はそれを作成した後。 405 00:21:34,316 --> 00:21:36,315 だから、してみましょう、想像することができます 私は機能を持っていると言います。 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> HUGHザブリスキー:あなた Shiftキーを押しながら入力しなければなりません。 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN:ああ、それは迷惑なんです。 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 それが何を好きではなかったですか? 411 00:22:04,324 --> 00:22:04,824 ああ。 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 さあ。 414 00:22:08,691 --> 00:22:09,190 クール。 415 00:22:09,190 --> 00:22:12,840 >> だから、僕は作成しました この関数f、その 416 00:22:12,840 --> 00:22:17,590 現在に移動しようとしています オブジェクトと印刷this.x1。 417 00:22:17,590 --> 00:22:20,330 だから私はちょうどによってFを呼び出す場合 それ自体は、何も起こってないです 418 00:22:20,330 --> 00:22:26,970 何x1が存在しないため、右、発生します それが参照していますオブジェクト内のフィールド。 419 00:22:26,970 --> 00:22:39,710 しかし、私はその後、x.f = F、と言う場合、私 x.f()を呼び出して、私は戻って1を取得するつもりです。 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 そのF関数は今 オブジェクトxと関連付けられ、 422 00:22:46,530 --> 00:22:51,800 キーと呼ばれるX 1を有します 値1に関連付けられています、 423 00:22:51,800 --> 00:22:54,570 我々はthis.x1を呼び出すときに、それはです それが探しているものを見つけるために行きます 424 00:22:54,570 --> 00:22:56,450 値をプリントアウトすることができます。 425 00:22:56,450 --> 00:22:58,700 だから、ほんの一例です クレイジー物事の種類 426 00:22:58,700 --> 00:23:01,190 あなたは、JavaScriptでのオブジェクトで行うことができます。 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> だから、そのバージョンでした ジェネリック版、意味 429 00:23:07,560 --> 00:23:13,780 我々はこれを使用してオブジェクトを作成したこと 、notation--ブレース表記を括弧 430 00:23:13,780 --> 00:23:16,880 rather--それです 便利な私たちはしたい場合 431 00:23:16,880 --> 00:23:21,440 特定のオブジェクトのインスタンスが、 私たちは複数のを持つようにしたい場合 432 00:23:21,440 --> 00:23:22,210 同じ種類の? 433 00:23:22,210 --> 00:23:24,440 そしてその答え 質問は、ものがあります 434 00:23:24,440 --> 00:23:26,760 同様に、JavaScriptでのクラスと呼ばれます。 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 私たちは、その関数を作成することができます 初期のいくつかの並べ替えを行います 437 00:23:36,420 --> 00:23:41,690 異物のために、 私たちは次のように、と思い、 438 00:23:41,690 --> 00:23:44,550 名前ので、私のclass-- 再利用可能なobject--の 439 00:23:44,550 --> 00:23:47,100 それを設定する関数に等しいです。 440 00:23:47,100 --> 00:23:52,280 だから、これは同等であるもの そのオブジェクトを作成しています 441 00:23:52,280 --> 00:23:55,930 同じようになり、 中括弧、STR、コロン、 442 00:23:55,930 --> 00:23:59,630 これは文字列です、 セミコロン、中括弧。 443 00:23:59,630 --> 00:24:01,880 それは一般的なことだろう 我々は初期化オブジェクト、 444 00:24:01,880 --> 00:24:06,380 1の差が上にあると 次の行我々は、プロトタイプを作成します 445 00:24:06,380 --> 00:24:11,190 それはデフォルトのキーであることを意味しています 私たちは、オブジェクトに追加すること 446 00:24:11,190 --> 00:24:13,970 ここに記載されている値を持っています。 447 00:24:13,970 --> 00:24:20,570 私は新しいを作成すると、その意味 このMyClassのオブジェクトのインスタンス、 448 00:24:20,570 --> 00:24:27,440 それは、内部​​にあらかじめ組み込まれているために起こっています それSTRと呼ばれる値と別の値 449 00:24:27,440 --> 00:24:32,418 これは、myPrintと呼ば 機能になるだろう。 450 00:24:32,418 --> 00:24:32,918 驚くばかり。 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> グレート。 453 00:24:37,990 --> 00:24:40,710 だから、最後に JavaScriptのについて言います 454 00:24:40,710 --> 00:24:46,430 それは何のために本当に便利だということです 非同期操作と呼ばれます。 455 00:24:46,430 --> 00:24:52,500 非同期手段、我々です いくつかの操作を待つことができます 456 00:24:52,500 --> 00:24:57,870 私たちが移動する前に完了するために 上のが、私たちは待っている間に移動します 457 00:24:57,870 --> 00:24:59,690 そしてその後、何かが後に起こりました。 458 00:24:59,690 --> 00:25:03,480 そして、私はそれの意味することは、あなたです どこ状況を想像することができます 459 00:25:03,480 --> 00:25:06,850 あなたは、リクエストを送ります どこかのウェブサーバ、 460 00:25:06,850 --> 00:25:09,670 それが戻ってあなたを送信するために起こっています データのいくつかの大きな塊、右? 461 00:25:09,670 --> 00:25:13,320 そして、あなたのユーザーがで待つことができます その間それが起こるためには、 462 00:25:13,320 --> 00:25:15,200 何もすることができませんでした その時に起こっています。 463 00:25:15,200 --> 00:25:18,110 しかし、それは右、素晴らしいデザインではないでしょうか。 464 00:25:18,110 --> 00:25:20,214 あなたは、Webページがフリーズする必要はありません。 465 00:25:20,214 --> 00:25:22,380 どのようなユーザーがしたい場合 ドロップダウンメニューをクリックしてください! 466 00:25:22,380 --> 00:25:24,870 それは偉大なデザインパターンではありません。 467 00:25:24,870 --> 00:25:29,290 その代わりに、基本的にはどのような JavaScriptは、言うされません 468 00:25:29,290 --> 00:25:31,870 [OK]を、非同期的にこの操作を行います。 469 00:25:31,870 --> 00:25:36,520 だからのような、バックグラウンドで待機し、 そして、操作が行われたとき、 470 00:25:36,520 --> 00:25:39,420 コー​​ルバックを呼び出しますfunction-- いくつかの関数を呼び出し、 471 00:25:39,420 --> 00:25:43,800 ことを知らせるために、いくつかのaction--を行います 私たちは最後まで待っていた操作 472 00:25:43,800 --> 00:25:45,520 終わりだ。 473 00:25:45,520 --> 00:25:51,240 そして、超強力な理由があります、 私たちは、何かをする引数を渡すことができ、 474 00:25:51,240 --> 00:25:54,440 何かをしてから、待ちます 起こることを何かのために。 475 00:25:54,440 --> 00:25:58,970 そして、その何かに一度 完了したら、我々はコールバックを呼び出すことができます。 476 00:25:58,970 --> 00:26:03,300 それができますので、それは本当に便利です 私たちは、ウェブオーディオAPIで物事を行います 477 00:26:03,300 --> 00:26:07,490 例えば、負荷AN様 リモートサーバからの音声ファイル 478 00:26:07,490 --> 00:26:11,660 待たず オーディオファイル全体をロードします、 479 00:26:11,660 --> 00:26:14,440 これは本当にだろう ユーザーエクスペリエンスのために悪いです。 480 00:26:14,440 --> 00:26:17,080 クール。 481 00:26:17,080 --> 00:26:19,460 >> 約最後のカップルノート この以来、デバッグ、 482 00:26:19,460 --> 00:26:23,682 あなたがする必要があるとしているものです あなたのプロジェクトの一環として、保証されています。 483 00:26:23,682 --> 00:26:25,140 私は、JavaScriptコンソールに言及しました。 484 00:26:25,140 --> 00:26:27,550 これは超便利機能です すべての最新ブラウザの、 485 00:26:27,550 --> 00:26:30,300 そして、私たちは本当に取得することをお勧め 快適なごコンソールを使用して、 486 00:26:30,300 --> 00:26:33,660 あなたには、JavaScriptで良い取得したい場合。 487 00:26:33,660 --> 00:26:36,320 それはのための超便利です デバッグが、それはまたです 488 00:26:36,320 --> 00:26:39,440 把握のために本当に便利 APIを使用する方法を。 489 00:26:39,440 --> 00:26:41,950 それは実際にすることが可能 簡単な実験 490 00:26:41,950 --> 00:26:45,910 一部を入力することなく、 コー​​ドは、それをコンパイルします。 491 00:26:45,910 --> 00:26:47,500 あなたはこれらすべてのステップを行う必要はありません。 492 00:26:47,500 --> 00:26:49,619 あなただけ書くことができます ラインにいくつかのコード、 493 00:26:49,619 --> 00:26:52,410 そして、その後にすぐにフィードバックを得ます コー​​ドの線を引くかどうか 494 00:26:52,410 --> 00:26:55,230 非常に便利なworked--。 495 00:26:55,230 --> 00:26:59,760 >> そしてまた、ただ一つの技術的note-- JavaScriptコンソールは一例です 496 00:26:59,760 --> 00:27:05,680 、REPL--のそれは、R-E-P-Lですので、REPL これは、読み取りの略で、評価し、 497 00:27:05,680 --> 00:27:06,180 printループ。 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 あなたはいくつかのものを入力しようとしています で、それはあなたが入力したものを読みますよ、 500 00:27:12,120 --> 00:27:17,280 それを評価するだろう、それが印刷されます 出力し、それが再び開始します。 501 00:27:17,280 --> 00:27:22,056 それはあなたが迅速で行くことができます 本当にクールである、反復円。 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> 私はこのnote--本当の最後を推測 はい、実際の最後のノートです。 504 00:27:28,930 --> 00:27:30,780 どのように我々は、実際にはJavaScriptを使用していますか? 505 00:27:30,780 --> 00:27:34,040 したがって、最初に、我々はインポートすることができます スクリプトタグを使用して 506 00:27:34,040 --> 00:27:39,500 HTMLの上部または下部にfile-- 任意の場所にHTMLファイルの内部に、 507 00:27:39,500 --> 00:27:40,440 本当に。 508 00:27:40,440 --> 00:27:47,390 スクリプトタグ内に存在し、 JavaScriptをインポートする二つのサブ方法。 509 00:27:47,390 --> 00:27:51,370 最初は持つことです 個別のJavaScriptファイル 510 00:27:51,370 --> 00:27:58,010 私たちは、その全体をインポートすること、または スクリプトのようなコードの面積を有することにより、 511 00:27:58,010 --> 00:28:00,290 その後起動し、します バックスラッシュスクリプトが終了します。 512 00:28:00,290 --> 00:28:02,620 そして、我々はただ書きます HTMLファイル内のJavaScript。 513 00:28:02,620 --> 00:28:03,790 これらは2つの方法があります。 514 00:28:03,790 --> 00:28:05,165 あなたは、HTMLの中にそれを持つことはできません。 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 観客は:一方が他方より優れているの? 517 00:28:08,126 --> 00:28:10,542 SAM GREEN:質問がありました、 一方が他方より優れています。 518 00:28:10,542 --> 00:28:18,306 だから、はい、コーディングスタイルの実践として、 また、それは設計の練習のようなものです。 519 00:28:18,306 --> 00:28:20,180 2つの理由があります なぜそれが良いかもしれません。 520 00:28:20,180 --> 00:28:23,934 最初は、それはあなたのコードAを行い、あります あなたのHTMLのすべてのなら、もっと多くの読みやすいです 521 00:28:23,934 --> 00:28:27,100 あなたのCSSがすべてであり、一つの場所にあります すべてのJavaScriptの別の場所、 522 00:28:27,100 --> 00:28:28,420 3位です。 523 00:28:28,420 --> 00:28:28,920 右? 524 00:28:28,920 --> 00:28:32,370 私たちはすでに話をしているべきだと思います それについてCSS--どのようなsections--で 525 00:28:32,370 --> 00:28:35,220 そのis--それは行きます 多くの場合、別のファイルです。 526 00:28:35,220 --> 00:28:37,090 だから、ここの概念の似たようなもの。 527 00:28:37,090 --> 00:28:42,410 あなたはまた、JavaScriptを想像することができます 複数のに再利用されます 528 00:28:42,410 --> 00:28:47,350 HTMLページ、または多分 非常に多くのHTMLページ、 529 00:28:47,350 --> 00:28:49,340 そのJavaScriptを持ちます 1にリファクタリング 530 00:28:49,340 --> 00:28:51,950 インポート可能なファイル 複数の場所に 531 00:28:51,950 --> 00:28:54,570 コー​​ドができるようになります 方法より保守。 532 00:28:54,570 --> 00:28:57,930 あなたは1を作る想像することができます JavaScriptに変更 533 00:28:57,930 --> 00:29:00,070 それを変更すること 100別のファイルです。 534 00:29:00,070 --> 00:29:04,070 その代わりに、我々はそれを変更することができます 方法より強力であるもの、です。 535 00:29:04,070 --> 00:29:05,420 私は、あなたの質問に答えるましたか? 536 00:29:05,420 --> 00:29:07,950 クール。 537 00:29:07,950 --> 00:29:10,830 >> また、コンソールに入力することができます 我々は前に述べてきたように。 538 00:29:10,830 --> 00:29:15,070 そして再び、最後note-- オーディオが内蔵されているWeb、 539 00:29:15,070 --> 00:29:16,978 あなたは何をロードする必要はありません。 540 00:29:16,978 --> 00:29:17,478 クール。 541 00:29:17,478 --> 00:29:20,519 ご質問がありますが、あなたが持っています JavaScriptのについての多くの質問、 542 00:29:20,519 --> 00:29:21,930 我々は上に移動する前に? 543 00:29:21,930 --> 00:29:24,286 >> 聴衆:[聞こえません] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN:すべての権利、涼しいです。 545 00:29:25,410 --> 00:29:27,200 だから今、彼は、APIについて話をするつもりです。 546 00:29:27,200 --> 00:29:28,490 >> HUGHザブリスキー:クール。 547 00:29:28,490 --> 00:29:28,990 おかげで、サム。 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN:確かに。 549 00:29:30,184 --> 00:29:32,600 HUGHザブリスキー:素晴らしいので、 我々は、JavaScriptから上に移動します。 550 00:29:32,600 --> 00:29:35,350 だから我々はのいくつかについて説明しました JavaScriptを必需品、 551 00:29:35,350 --> 00:29:41,105 そしてそれらは、変数、関数であり、 オブジェクト変数として機能します 552 00:29:41,105 --> 00:29:41,980 非同期ロード。 553 00:29:41,980 --> 00:29:46,100 これらはあなたなすべてのものです あなたがウェブオーディオを使用するように参照してください。 554 00:29:46,100 --> 00:29:49,230 だから我々はただ話をするつもりです ハイレベルの第1は、約。 555 00:29:49,230 --> 00:29:52,120 >> これは、APIですので、それは何か サムが言ったようにそれは、構築されています、 556 00:29:52,120 --> 00:29:57,010 右はJavaScriptに コンソールで使用すること。 557 00:29:57,010 --> 00:30:01,020 そして、それは単にC ++のコードのように、実際にです それは本当にクロムに組み込まれています 558 00:30:01,020 --> 00:30:04,470 Firefox、およびこれらのブラウザのすべて。 559 00:30:04,470 --> 00:30:07,060 ウェブでの主なアイデアだから オーディオは、あなたが持っているということです 560 00:30:07,060 --> 00:30:09,440 オーディオのパイプラインのこのような、右? 561 00:30:09,440 --> 00:30:13,670 だからあなたのオーディオデータ 何らかの形で入ってきます。 562 00:30:13,670 --> 00:30:16,690 >> 三つの主要なforms--の種類があります。 あなたは、発振器を持っています 563 00:30:16,690 --> 00:30:21,340 正弦波、余弦波を作成し、 我々は、それがどのように動作するかを参照しようとしています。 564 00:30:21,340 --> 00:30:23,890 別の非常に一般的なもの、 もちろん、MP3です。 565 00:30:23,890 --> 00:30:25,810 だから、多分あなたはで始まります 歌、その後 566 00:30:25,810 --> 00:30:28,320 いくつかのフィルタリングをしたいです それを出力します 567 00:30:28,320 --> 00:30:30,605 そのthat--可能な源である可能性があります。 568 00:30:30,605 --> 00:30:32,480 そして、本当にクール 一つはマイクです。 569 00:30:32,480 --> 00:30:37,230 だから、非常にいくつかを使用することができます JavaScriptで基本的なコール 570 00:30:37,230 --> 00:30:39,440 へのアクセスを取得します マイク、もしそうであればあなた 571 00:30:39,440 --> 00:30:42,870 アプリを作りたかったです ピッチ検出器のような、 572 00:30:42,870 --> 00:30:45,290 例えば、それが中に取り あなたの声と出の図 573 00:30:45,290 --> 00:30:47,740 それにpitch--非常に簡単な方法。 574 00:30:47,740 --> 00:30:50,730 あなただけの種類のそれを読むことができます で、周波数を把握、 575 00:30:50,730 --> 00:30:52,250 そして、出力数。 576 00:30:52,250 --> 00:30:56,080 だから、我々としても、それがどのように機能するかを見ていきます。 577 00:30:56,080 --> 00:30:59,430 >> 宛先は基本的に ここで、音声データを出力します。 578 00:30:59,430 --> 00:31:02,890 そこで、一般的に、それはようなものです ノートパソコンのスピーカー。 579 00:31:02,890 --> 00:31:05,610 その他のオプションは次のようにしています ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 我々は内のノードを取得します second--しかし基本的には、 581 00:31:07,990 --> 00:31:11,939 あなたは音を出しているのいずれか お使いのコンピュータを介してスピーカーから、 582 00:31:11,939 --> 00:31:14,730 または、あなたは一種のように、それを記録しています あなたは、オーディオデータとして保存しています。 583 00:31:14,730 --> 00:31:18,980 ので、多分誰かが作成した場合 あなたのアプリで音楽をして、 584 00:31:18,980 --> 00:31:22,410 あなたはそれを記録すると、おそらくのような example--ため、SoundCloudがにエクスポート 585 00:31:22,410 --> 00:31:25,281 それはそれを行うための一つの方法であろう。 586 00:31:25,281 --> 00:31:27,030 すべての楽しいもの、 これは私たちが話しましょう​​、 587 00:31:27,030 --> 00:31:29,950 これらの2点間起こり、 私たちは音楽を読み込む場合は 588 00:31:29,950 --> 00:31:31,410 その出力されます。 589 00:31:31,410 --> 00:31:36,660 >> だから私は、5つの話をするつもりです 第二の音声生産段階。 590 00:31:36,660 --> 00:31:38,950 我々はと呼ばれるこの事を持っています AudioContext、これ 591 00:31:38,950 --> 00:31:41,580 私たちはここを参照してください、この小さなラッパーです。 592 00:31:41,580 --> 00:31:49,980 基本的に私たち場合is-- AudioContext 今はJavaScriptコンソールにアクセスし、 593 00:31:49,980 --> 00:31:52,740 我々は今、1を作成することができます。 594 00:31:52,740 --> 00:31:54,040 REPLのちょうど例、右? 595 00:31:54,040 --> 00:31:57,880 我々は、読んでいます、 評価し、それが出力します。 596 00:31:57,880 --> 00:32:00,260 >> AudioContextはグローバルな状態です。 597 00:32:00,260 --> 00:32:05,500 これは、オブジェクト構造体だい ここで、それは情報を保持 598 00:32:05,500 --> 00:32:09,960 起こっていることについて 音声に関する画面上。 599 00:32:09,960 --> 00:32:15,220 一つの例は、現在の時刻です。 600 00:32:15,220 --> 00:32:18,910 これはあなたの番号を伝えます 秒、非常に正確に、 601 00:32:18,910 --> 00:32:20,890 Webページ以降ロード。 602 00:32:20,890 --> 00:32:24,110 だから、これは本当に便利です あなたが使用できるほとんどのプロパティ。 603 00:32:24,110 --> 00:32:27,898 それは私が実際に考えてonly--読みました あなたは、値を設定してみてください。 604 00:32:27,898 --> 00:32:29,856 それはあなたがそれを設定教えてあげましょう、 そして、あなたはそれを印刷する場合 605 00:32:29,856 --> 00:32:31,439 again--それは実際には非常に仕事をしませんでした。 606 00:32:31,439 --> 00:32:34,472 だから、読み取り専用です JavaScriptでのプロパティ。 607 00:32:34,472 --> 00:32:36,430 これがあれば非常に便利です あなたが種類の同期しています 608 00:32:36,430 --> 00:32:38,610 異なる多くの あなたがしている情報、 609 00:32:38,610 --> 00:32:41,280 種類の異なるサウンドを演奏。 610 00:32:41,280 --> 00:32:43,630 >> もう本当に便利1 コンテキスト先があります。 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 もし興味があるなら間違いなく、あること 独自のコンソール右側でこれをしよう 613 00:32:49,670 --> 00:32:50,980 今。 614 00:32:50,980 --> 00:32:53,150 だから、これはAudioDestinationNodeです。 615 00:32:53,150 --> 00:32:56,480 基本的に、これは言っています、 出力はどこに行くのですか? 616 00:32:56,480 --> 00:32:59,590 だからここに二つの実のオプションがあります。 617 00:32:59,590 --> 00:33:01,940 通常、デフォルト ちょうどあなたのスピーカーで、 618 00:33:01,940 --> 00:33:05,150 そうAudioDestinationNode 基本的には言います 619 00:33:05,150 --> 00:33:09,240 音にゼロ出力があります 入ってくる、スピーカーに送信。 620 00:33:09,240 --> 00:33:12,050 ですから、一般的に、あなたはしないでください それをプレイしています。 621 00:33:12,050 --> 00:33:15,720 あなたが実際に使用してに興味があるなら 記録のためのScriptProcessorNode、 622 00:33:15,720 --> 00:33:16,990 間違いなく私撃ちます それはだから、後に電子メールで送信 623 00:33:16,990 --> 00:33:18,330 もう少し複雑。 624 00:33:18,330 --> 00:33:21,590 しかし、一般的に、あなただけのようなものです 何らかの形で音声を出力します。 625 00:33:21,590 --> 00:33:24,347 だからクール、我々はここに戻ってジャンプします。 626 00:33:24,347 --> 00:33:25,180 観客:ごめんなさい。 627 00:33:25,180 --> 00:33:26,054 HUGHザブリスキー:うん。 628 00:33:26,054 --> 00:33:28,770 観客は:私はあなたが話をすると述べた知っています あなたにそれ以降の記録について。 629 00:33:28,770 --> 00:33:31,550 あなたはそれは、Pro Toolsとのインタフェースすることができますか? 630 00:33:31,550 --> 00:33:33,120 >> HUGHザブリスキー:Pro Toolsと? 631 00:33:33,120 --> 00:33:35,260 どれどれ。 632 00:33:35,260 --> 00:33:37,220 私はそうは思わない。 633 00:33:37,220 --> 00:33:41,670 だから、クライアントの間で起こって、 JavaScriptはこれです 634 00:33:41,670 --> 00:33:44,310 コンソール、および実際の コンピュータは、一般に 635 00:33:44,310 --> 00:33:46,490 親切な何か 立ち入り禁止、あなたの場合 636 00:33:46,490 --> 00:33:52,320 種類the--の性質によって、意志 それは、デザインの事のようなものです 637 00:33:52,320 --> 00:33:57,770 しかし、あなたは別のブラウザを維持しよう ユーザの実際のコンピュータから。 638 00:33:57,770 --> 00:34:02,310 一般的に、唯一のあなたのことができますよ アクセスは、マイクやカメラです。 639 00:34:02,310 --> 00:34:04,730 あなたは、私にできませんよ Pro Toolsの使用、とは思いません。 640 00:34:04,730 --> 00:34:07,480 ただし、作成した場合 Pro Toolsのトラック、 641 00:34:07,480 --> 00:34:12,710 あなたがそれをロードすることができ、ことをエクスポート ここで、例えば、それをフィルタリングし、 642 00:34:12,710 --> 00:34:16,820 それを記録し、処理 オーディオDestination--または、no--球 643 00:34:16,820 --> 00:34:17,870 プロセッサノード。 644 00:34:17,870 --> 00:34:20,730 そしてそこから、あなたは可能性 あなたは、SoundCloudがにそれをエクスポート 645 00:34:20,730 --> 00:34:25,320 電子メールで送信、または可能性があり あなたはそこから好き。 646 00:34:25,320 --> 00:34:31,159 >> しかし、わずかなバリアのようなものがあります お使いのコンピュータで音楽を作るの間 647 00:34:31,159 --> 00:34:33,050 オンライン音楽を作ります。 648 00:34:33,050 --> 00:34:37,940 >> SAM GREEN:そして、それはです このAPIに固有のものではありません。 649 00:34:37,940 --> 00:34:44,060 これは、クロームのセキュリティ機能だし、 私は他のすべての最新のブラウザだと思います。 650 00:34:44,060 --> 00:34:45,860 ブラウザは、自己完結型です。 651 00:34:45,860 --> 00:34:50,980 したがって、たとえば、Webページができません サウンドを有効にするJavaScriptを使用 652 00:34:50,980 --> 00:34:54,190 スピーカーの上に、例えば。 653 00:34:54,190 --> 00:34:58,120 それとも、お使いのコンピュータの電源をオフにすることはできません。 654 00:34:58,120 --> 00:35:01,530 そして、何の中間点はありません これらの二つの間に、右、 655 00:35:01,530 --> 00:35:05,960 あなたが持っているので、どちらか 完全な抽象化、 656 00:35:05,960 --> 00:35:10,050 またはあなたが開きます させるのセキュリティ上の欠陥 657 00:35:10,050 --> 00:35:14,440 悪意を持つプログラマありません 彼らはあなたのラップトップを持って好き。 658 00:35:14,440 --> 00:35:18,104 Chromeは自己完結型である理由、それはです。 659 00:35:18,104 --> 00:35:19,310 >> HUGHザブリスキー:うん。 660 00:35:19,310 --> 00:35:20,840 それは理にかなっていますか? 661 00:35:20,840 --> 00:35:21,369 クール、クール。 662 00:35:21,369 --> 00:35:23,160 私はちょうどに行っていました 一方の例を示します。 663 00:35:23,160 --> 00:35:25,118 これは、かなりあります これまであなたが用語で、得るよう 664 00:35:25,118 --> 00:35:26,950 ユーザーのコンピュータにアクセスします。 665 00:35:26,950 --> 00:35:30,180 あなたは、プラグインのUSBキーボードを使用している場合は、 あなたは、Webと呼ばれるものを使用することができます 666 00:35:30,180 --> 00:35:32,180 MIDI APIを、どの我々はしません 本当にここの話を、 667 00:35:32,180 --> 00:35:36,330 しかし、これはだ別のAPIであります 再び少なくともChrome--に組み込まれ、 668 00:35:36,330 --> 00:35:41,570 我々はChrome--を愛する理由です 私は、FirefoxやSafariのだと思います 669 00:35:41,570 --> 00:35:44,300 これは非常に簡単です 別のブラウザを持っていますgoogle-- 670 00:35:44,300 --> 00:35:46,917 別のサポート 彼らが実施しているAPIを使用します。 671 00:35:46,917 --> 00:35:49,875 しかし、あなたがキーボードに接続したい場合 その情報と連携、 672 00:35:49,875 --> 00:35:52,850 種類のキーボードを送信 コンピュータに超える情報 673 00:35:52,850 --> 00:35:57,620 そして、そのオンライン、このAPIを使用 あなたがそれを作業するだろう場所です。 674 00:35:57,620 --> 00:35:58,150 >> クール。 675 00:35:58,150 --> 00:35:58,710 OK。 676 00:35:58,710 --> 00:36:01,320 だから、すぐにここに移動します。 677 00:36:01,320 --> 00:36:03,310 どのように我々は時間にやっていますか? 678 00:36:03,310 --> 00:36:04,210 >> SPEAKER 1:約15。 679 00:36:04,210 --> 00:36:05,543 >> HUGHザブリスキー:15分左? 680 00:36:05,543 --> 00:36:06,160 うんいいね。 681 00:36:06,160 --> 00:36:08,170 だから我々はここで先にレースします。 682 00:36:08,170 --> 00:36:13,500 >> したがって、基本的に、の主なポイント パイプラインとしてこれを考えて 683 00:36:13,500 --> 00:36:16,430 であるパイプラインの各ステップ オーディオ・ノードの系列です。 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 われわれの情報源は、のは言わせ、発振器です。 686 00:36:20,950 --> 00:36:23,380 私たちは、発振器のノードを作成する必要があります。 687 00:36:23,380 --> 00:36:25,690 そして、それはちょうど一種であります 少しfunction--の 688 00:36:25,690 --> 00:36:30,460 そして、彼らはすべてのアウトベースしています ここでは、オーディオコンテキストの。 689 00:36:30,460 --> 00:36:32,885 >> 観客:それは言いました 発振器、それはどういう意味します 690 00:36:32,885 --> 00:36:37,250 実際に、文字通りから起こっています 前後に二つの異なる極? 691 00:36:37,250 --> 00:36:41,170 >> HUGHザブリスキー:いいえ、それはのようなものです デジタル表現。 692 00:36:41,170 --> 00:36:42,740 これは、実際にはC ++で実装されています。 693 00:36:42,740 --> 00:36:46,460 私は実際の仕様を知りません それは実際に実装されていますどのように、 694 00:36:46,460 --> 00:36:48,500 しかし、これはすべてのバイナリデータとして働いています。 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 実際に、ええ。 697 00:36:52,370 --> 00:36:53,950 それは私ができた、と言ってされるだろう 実際に、もし興味があるなら、 698 00:36:53,950 --> 00:36:56,533 私はあなたにもう少しを送ることができます どのように波形に関する情報 699 00:36:56,533 --> 00:37:00,181 デジタルフォーマットを有する保持されます。 700 00:37:00,181 --> 00:37:00,680 うんいいね。 701 00:37:00,680 --> 00:37:03,120 >> だから我々は、正弦のような音を生成しています 多分、波またはそのような何か 702 00:37:03,120 --> 00:37:04,190 440ヘルツ。 703 00:37:04,190 --> 00:37:05,830 我々は発振器を作成します。 704 00:37:05,830 --> 00:37:09,180 我々は、ボリュームを設定したい場合は、我々 GainNodeには何も接続し、 705 00:37:09,180 --> 00:37:12,500 これは私たちが.creategainで行うことができます。 706 00:37:12,500 --> 00:37:14,250 それはあなたの音量を設定します。 707 00:37:14,250 --> 00:37:17,820 あなたは、任意の上にそれを渡すことができます options--他の、 708 00:37:17,820 --> 00:37:20,300 そうオーディオバッファソース ノードがどこにあるかもしれません 709 00:37:20,300 --> 00:37:23,660 あなたがロードしたMP3を格納します。 710 00:37:23,660 --> 00:37:27,670 >> バイカッドフィルタがあれば、フィルタリング用です あなたはアウトすべてのベースを利用したいです 711 00:37:27,670 --> 00:37:29,630 曲、またはそのような何かの。 712 00:37:29,630 --> 00:37:32,450 神は、あなたが利用したい禁じます 曲のうちベース。 713 00:37:32,450 --> 00:37:36,980 そしてAudioDestinationノードは、再び、あります 私たちのファイナライズがどこにあるかのように。 714 00:37:36,980 --> 00:37:39,980 あなたは今まで見に興味があるなら すべての異なる可能なオプション、 715 00:37:39,980 --> 00:37:45,190 ちょうどタブに移動してみましょう オートコンプリートが出てきます。 716 00:37:45,190 --> 00:37:48,690 あなたが作成しなければ、あなたがすべて表示されます あなたが作成することができます別のもの。 717 00:37:48,690 --> 00:37:50,398 あなたは、動的に作成することができます スクリプト・プロセッサ、 718 00:37:50,398 --> 00:37:52,940 私も何のことを知りません チャネル合併を混合するために、あります 719 00:37:52,940 --> 00:37:55,930 チャネルスプリッタおよびすべてのこと。 720 00:37:55,930 --> 00:37:56,430 クール。 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> だから、これはただです パイプラインの例。 723 00:38:01,390 --> 00:38:03,580 だから我々は、次の3つのソースが入って来ています。 724 00:38:03,580 --> 00:38:06,830 多分これらの波形であり、 多分これらはMP3ファイルです。 725 00:38:06,830 --> 00:38:08,740 一つは通って起こっています フィルタ、別の1の 726 00:38:08,740 --> 00:38:12,404 歪んなっ別 自分のパンを左右しました。 727 00:38:12,404 --> 00:38:15,320 あなたは物事のすべての種類を行うことができますし、 それらはすべて、一緒に周りの混入します 728 00:38:15,320 --> 00:38:18,880 して、出てくるオーディオを 最後に、宛先として。 729 00:38:18,880 --> 00:38:22,720 これは、より多くの例です 複雑なウェブオーディオコードは次のようになります。 730 00:38:22,720 --> 00:38:26,720 あなたは、これらすべてを作成しています 異なるオブジェクトを右here-- 731 00:38:26,720 --> 00:38:27,706 私はこれがわからないんだけど。 732 00:38:27,706 --> 00:38:29,120 いいえ、それはズームインしません。 733 00:38:29,120 --> 00:38:29,620 OK。 734 00:38:29,620 --> 00:38:31,257 >> SAM GREEN:あなたがコントロール、スクロールアップを行います。 735 00:38:31,257 --> 00:38:32,590 HUGHザブリスキー:コントロールScroll-- 736 00:38:32,590 --> 00:38:33,000 SAM GREEN:いいえ、ありません。 737 00:38:33,000 --> 00:38:33,500 制御 - 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> HUGHザブリスキー:ああ、コントロール、スクロール? 740 00:38:38,140 --> 00:38:38,780 落とし穴、ああ。 741 00:38:38,780 --> 00:38:41,480 うん。 742 00:38:41,480 --> 00:38:42,240 いや、いや、すごいです。 743 00:38:42,240 --> 00:38:42,740 OK。 744 00:38:42,740 --> 00:38:46,090 私はそれを行うことはありません。 745 00:38:46,090 --> 00:38:48,300 >> そうそう、この中で最初に ここのセクション、あなたが見ます 746 00:38:48,300 --> 00:38:52,720 我々はすべてのこれらのさまざまなを作成しています コンテキストのうちのノード。 747 00:38:52,720 --> 00:38:54,980 私達はちょうどそれらを縫い合わせています 一緒に第二部で 748 00:38:54,980 --> 00:38:56,980 コネクトと呼ばれるこの機能によって。 749 00:38:56,980 --> 00:38:58,830 それは本当に重要なのです ウェブオーディオで機能。 750 00:38:58,830 --> 00:39:01,930 それはちょうどあなたがやった後に意味します 1ノード内の音で何か、 751 00:39:01,930 --> 00:39:03,705 次のノードにそれを渡します。 752 00:39:03,705 --> 00:39:05,830 だから我々はソースを持って、それを アナライザに接続し、 753 00:39:05,830 --> 00:39:09,140 アナライザはそれで何かを、 それは、そうで歪みに進み、そして 754 00:39:09,140 --> 00:39:12,725 目的地までの 右ここ一番下にあります。 755 00:39:12,725 --> 00:39:13,225 クール。 756 00:39:13,225 --> 00:39:14,640 [OK]を、私たちは上の移動しておこう。 757 00:39:14,640 --> 00:39:17,180 >> pipeline--再び、これらの 最も一般的なパイプラインは、 758 00:39:17,180 --> 00:39:21,300 私たちは次のようにこれらすべてのことについて話します 歪み、パンニング、すべてこのようなもの。 759 00:39:21,300 --> 00:39:24,280 あなたは本当に興味があるなら 物事にはPro Toolsを使用して、 760 00:39:24,280 --> 00:39:25,820 それらはおそらく、あなたの興味をひきます。 761 00:39:25,820 --> 00:39:27,740 そうでない場合は、多分あなただけの サウンドを再生したいです、 762 00:39:27,740 --> 00:39:29,990 または多分あなただけしたいです 音の音量を設定します。 763 00:39:29,990 --> 00:39:35,270 これらは最も一般的な二つのソートされています オーディオ制作におけるパイプラインの。 764 00:39:35,270 --> 00:39:38,640 >> ここでも、方法はあなたがそれを取ることができます そうoscillator--ように、してみましょう 765 00:39:38,640 --> 00:39:42,460 右ここでそれのデモを行います。 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 だから我々は、作成しようとしています ここで簡単なオーディオコンテキスト、 768 00:39:52,225 --> 00:39:54,350 それから、私たちはつもりです 私たちの発振器を作成することができます。 769 00:39:54,350 --> 00:39:58,620 だからつまり、再び、私たちはしています 発振器を作成呼び出すつもり。 770 00:39:58,620 --> 00:40:07,030 私たちは、上の周波数を設定しようとしています その、440ヘルツ、みんなのお気に入り。 771 00:40:07,030 --> 00:40:13,290 その後、我々は先にそれを接続します スピーカーですpoint--ので、 772 00:40:13,290 --> 00:40:15,750 コンテキスト先。 773 00:40:15,750 --> 00:40:21,400 最後に、私たちは言う、ゼロを開始 今から秒、我々は音がありますか? 774 00:40:21,400 --> 00:40:22,400 >> [RINGING] 775 00:40:22,400 --> 00:40:24,980 >> HUGHザブリスキー:ここに私達は行きます。 776 00:40:24,980 --> 00:40:25,940 それはちょうど正弦波です。 777 00:40:25,940 --> 00:40:26,440 うんいいね。 778 00:40:26,440 --> 00:40:28,274 そして、我々はそれを停止します。 779 00:40:28,274 --> 00:40:30,520 >> 聴衆:やりました そのフィードバックから来るの? 780 00:40:30,520 --> 00:40:31,250 >> HUGHザブリスキー:フィードバック? 781 00:40:31,250 --> 00:40:32,458 ああ、おそらく私たちのマイク。 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 そうそう、それはあなたがそれを行う方法です。 784 00:40:35,470 --> 00:40:37,261 そして実際に、私が持っていた場合 あなたは、それが走り続け 785 00:40:37,261 --> 00:40:39,540 周波数を有することができます それが実行しているとしての価値、 786 00:40:39,540 --> 00:40:43,320 そのためには、周りを再生するのも楽しいものです。 787 00:40:43,320 --> 00:40:44,930 クール。 788 00:40:44,930 --> 00:40:46,600 それは常に存在する可愛らしい一つです。 789 00:40:46,600 --> 00:40:48,792 >> SAM GREEN:私たちはしませんでした それについて考え、私たちはやりましたか? 790 00:40:48,792 --> 00:40:50,500 HUGHザブリスキー:うん、 それは厄介な一つです。 791 00:40:50,500 --> 00:40:53,249 だから、私は紹介loading--バッファ 非常に最後にその例を示します。 792 00:40:53,249 --> 00:40:55,090 それは、MP3をロードしています。 793 00:40:55,090 --> 00:40:58,880 そして、マイク、あなただけの関数を使用します Navigator.getUserMedia(と呼ばれます) 794 00:40:58,880 --> 00:41:03,240 ユーザーのへのアクセスを要求します その情報のためのマイク。 795 00:41:03,240 --> 00:41:05,610 >> ここでフィルタリングだ、私はよ これだけで動き続けます。 796 00:41:05,610 --> 00:41:08,600 これは、かなりハイレベルであります しかし、フィルタは、ちょうどあなたができるようにします 797 00:41:08,600 --> 00:41:16,154 >> [ビープ音] 798 00:41:16,154 --> 00:41:18,320 フィルタリングはまたことができます ピンクのようなものを作成します 799 00:41:18,320 --> 00:41:20,050 ノイズ、ブラウンノイズ、ホワイトノイズ。 800 00:41:20,050 --> 00:41:24,330 あなたは純粋なノイズを作成したい場合は、これ 一部の人々は、と周りを台無しに愛して 801 00:41:24,330 --> 00:41:27,490 あなたは、Webオーディオを使用することができます それを行うためのフィルタリング。 802 00:41:27,490 --> 00:41:30,039 >> オーディオPanning--はとても想像します あなたはこのゲームを書いている場合 803 00:41:30,039 --> 00:41:32,330 あなたは音がしたいです それは次のように、来ているように聞こえます、 804 00:41:32,330 --> 00:41:36,090 あなたは、画面上で撮影します オーディオのパンを使用することができます 805 00:41:36,090 --> 00:41:39,770 コー​​ンのこの種を作成するには、 それはかなりMathyさんですlike--、 806 00:41:39,770 --> 00:41:41,850 それは本当に実際にです クールなあなたはそれを動作取得する場合、 807 00:41:41,850 --> 00:41:44,500 そして、いくつかの良いがあります その上チュートリアル私はあなたを送信することができます。 808 00:41:44,500 --> 00:41:46,400 基本的には、親切なことができます 音を作成します 809 00:41:46,400 --> 00:41:50,480 3Dのようにで行く何かの。 810 00:41:50,480 --> 00:41:57,350 あなたがDJの関心を持っている場合は、次のことができます 混合開始し、曲をクロスフェード。 811 00:41:57,350 --> 00:42:01,260 >> これは単にいくつかの非常に基本的なものです コー​​ド、基本的に私が前にやったこと。 812 00:42:01,260 --> 00:42:06,140 これは、音量を設定します 発振器、私たちは私たちの発振器を作成 813 00:42:06,140 --> 00:42:07,380 どの波形を作成します。 814 00:42:07,380 --> 00:42:09,940 私たちはGainNodeを作成し、 私たちの周波数を設定し、 815 00:42:09,940 --> 00:42:14,170 そして、その後に発振子を接続 その後、基本的に変化しGainNode、 816 00:42:14,170 --> 00:42:16,760 どのくらいの信号通過を許可されています。 817 00:42:16,760 --> 00:42:20,467 しかし、実際に、それはデジタルです 事、それはええjust--以上だそう。 818 00:42:20,467 --> 00:42:23,550 それは実際に何が起こっているかではありません、 それが実際の生活の中で何が起こるかです 819 00:42:23,550 --> 00:42:24,393 ゲインと。 820 00:42:24,393 --> 00:42:27,258 >> 聴衆:--quantization 音量パラメータの? 821 00:42:27,258 --> 00:42:28,174 HUGHザブリスキー:申し訳ありませんか? 822 00:42:28,174 --> 00:42:30,360 観客は:それです 量子化されたボリュームのパラメータ? 823 00:42:30,360 --> 00:42:31,840 HUGHザブリスキー:うん。 824 00:42:31,840 --> 00:42:34,620 そして、これは本当に私は一つのことです 私の知識での欠損、 825 00:42:34,620 --> 00:42:38,010 どのようにゲインは、デジタルレベルで動作します。 826 00:42:38,010 --> 00:42:40,140 私は実際に知っています 信号、それは基本的にです 827 00:42:40,140 --> 00:42:45,120 あなたがしているどのくらいの制御 信号を増幅します。 828 00:42:45,120 --> 00:42:47,017 だから、うん。 829 00:42:47,017 --> 00:42:50,100 私はあなたについての詳細をお送りします 私は実際に好奇心旺盛になるだろうから、その 830 00:42:50,100 --> 00:42:51,099 それについての詳細を知っています。 831 00:42:51,099 --> 00:42:54,090 しかし、基本的なパラメータ 一つはfold--で、あります 832 00:42:54,090 --> 00:42:59,690 大声signal--とゼロはnoです 信号、または何も聞こえません。 833 00:42:59,690 --> 00:43:03,150 私たちはそのためのデモの時間をスキップします それは私が前にやったことは基本的です。 834 00:43:03,150 --> 00:43:07,630 そして再び、Context.Destination オーディオ宛先ノードです。 835 00:43:07,630 --> 00:43:08,360 恐ろしい、[OK]をクリックします。 836 00:43:08,360 --> 00:43:10,470 >> だから私は、迅速な2デモをするつもりです。 837 00:43:10,470 --> 00:43:11,760 どのように我々は時間にやっていますか? 838 00:43:11,760 --> 00:43:12,640 >> SPEAKER 1:約10分。 839 00:43:12,640 --> 00:43:13,130 >> HUGHザブリスキー:10分? 840 00:43:13,130 --> 00:43:13,630 すばらしいです! 841 00:43:13,630 --> 00:43:14,320 驚くばかり。 842 00:43:14,320 --> 00:43:19,010 >> だから私はするつもりだ最初のもの 、それは私のお気に入りの曲と呼ばれています。 843 00:43:19,010 --> 00:43:22,410 だから、これはただです 少しHTML JavaScriptを。 844 00:43:22,410 --> 00:43:25,510 我々は2つ​​のボタンを持っているつもりです ページ上の私のお気に入りの曲を再生 845 00:43:25,510 --> 00:43:29,192 私の好きな​​曲を停止します。 846 00:43:29,192 --> 00:43:30,180 私はこれを変更します。 847 00:43:30,180 --> 00:43:32,110 >> 聴衆:マイクをカバー。 848 00:43:32,110 --> 00:43:33,430 >> HUGHザブリスキー:うん。 849 00:43:33,430 --> 00:43:36,300 そして、私はここでロードされました basically--スクリプト 850 00:43:36,300 --> 00:43:38,520 これは本当に便利です MP3をロードするための、 851 00:43:38,520 --> 00:43:41,820 これはただ作ります より高速なMP3ファイルの道をロードします。 852 00:43:41,820 --> 00:43:44,180 それは基本的に単なるラッパーです。 853 00:43:44,180 --> 00:43:48,737 それだけのプロセスになります はるかに速くMP3ファイルにロードし、 854 00:43:48,737 --> 00:43:51,570 そうしないと、HTTP要求を使用しています 種類の私たちは何をしていたかのように 855 00:43:51,570 --> 00:43:53,950 サーバーで設定された現在の作品に。 856 00:43:53,950 --> 00:43:55,950 それは、あなたは本当に醜いです それを行うにはしたくありません。 857 00:43:55,950 --> 00:44:04,110 >> だからこの男、ボリスのSMUは、本当に書きました BufferLoaderという便利な小さなツール。 858 00:44:04,110 --> 00:44:08,780 あなたが行うすべては、単にそれを通過しています コンテキストは、あなたはそれlist--渡します 859 00:44:08,780 --> 00:44:11,327 または、ええ、それはJavaScriptでリストのですか? 860 00:44:11,327 --> 00:44:12,160 SAM GREEN:配列。 861 00:44:12,160 --> 00:44:14,201 HUGHザブリスキー:ああ、それはあります アレイは、そうです。 862 00:44:14,201 --> 00:44:18,660 これは、パスの配列です 別のファイルに。 863 00:44:18,660 --> 00:44:21,990 そして、あなたはそれを関数を渡します。 864 00:44:21,990 --> 00:44:25,530 これは、我々が話していたコールバックです 非同期ロードで約。 865 00:44:25,530 --> 00:44:28,720 それが呼び出されます ロードされたファイルに一度。 866 00:44:28,720 --> 00:44:33,780 そして、その機能は次のような場合に呼び出されます ファイルのロードされ、境界として受け取り 867 00:44:33,780 --> 00:44:35,840 ロードされたバッファの配列。 868 00:44:35,840 --> 00:44:37,990 だから、ここで発生します。 869 00:44:37,990 --> 00:44:41,180 基本的に、BufferListです 1 value--になるだろう 870 00:44:41,180 --> 00:44:46,380 またはそれはの配列になるだろう インデックスにそれに持っている長さ1、 871 00:44:46,380 --> 00:44:51,320 MP3の全体ロードされたファイルをゼロ。 872 00:44:51,320 --> 00:44:53,320 だから私は終了したとき、私は何をすべきか ロードは単に、私であります 873 00:44:53,320 --> 00:44:57,430 バッファ・ソースを作成しました オーディオバッファのソースノードです。 874 00:44:57,430 --> 00:45:03,410 次のステップは、私がロードされ フルロードされたバッファとしてsource.buffer 875 00:45:03,410 --> 00:45:06,740 BufferList--から それはbuffers--たくさんのです 876 00:45:06,740 --> 00:45:10,255 そして、あなたはそのオーディオを接続します 先にバッファ。 877 00:45:10,255 --> 00:45:12,380 だから、それを行うために何が起こっているのか 単にMP3を入れています 878 00:45:12,380 --> 00:45:15,260 ストレート出力に至るまで、 そして、すぐにそれを起動します 879 00:45:15,260 --> 00:45:18,010 このコールを取得する際。 880 00:45:18,010 --> 00:45:21,660 >> クールなので、見てみましょう このアクションで起こります。 881 00:45:21,660 --> 00:45:24,490 マイ[聞こえない]ここで、見てみましょう。 882 00:45:24,490 --> 00:45:26,430 だから、僕はするつもりです 基本的なサーバーを起動します。 883 00:45:26,430 --> 00:45:28,660 それは、何か あなたがしている場合、あなたは何をする必要があります 884 00:45:28,660 --> 00:45:32,490 ロードファイルの要求をします。 885 00:45:32,490 --> 00:45:34,140 私は、基本的なサーバを起動するつもりです。 886 00:45:34,140 --> 00:45:38,200 これは基本的にあなたの全体です 1行目の今PSET、 887 00:45:38,200 --> 00:45:43,930 しかし、それだけで始めています ポート80分の80上のサーバー。 888 00:45:43,930 --> 00:45:47,300 だから私たちはこっちに行く、我々 80分の80をロードしようとして、 889 00:45:47,300 --> 00:45:49,110 私たちは、私のお気に入りの曲に行くつもりです。 890 00:45:49,110 --> 00:45:51,660 私がヒットした場合ので、 "私を再生します 今好きな曲」、 891 00:45:51,660 --> 00:45:53,964 それは私をロードするために起こっています 好きな曲とit--を再生 892 00:45:53,964 --> 00:45:55,880 [MUSIC - イーグルス、 "FASTでの生活  LANE"] 893 00:45:55,880 --> 00:46:00,490 --whichに「生命であることを起こります イーグルスによる高速レーン」。 894 00:46:00,490 --> 00:46:06,346 今、私は私を停止する「ヒットでした 好きな曲 "と、それを再生します。 895 00:46:06,346 --> 00:46:09,160 >> [MUSIC - イーグルス、 "FASTでの生活  LANE"] 896 00:46:09,160 --> 00:46:18,340 >> そして、私はコンソールに渡る場合には、理由 私はここの上にグローバル変数を使用します 897 00:46:18,340 --> 00:46:23,390 実際に、この値のそれを追跡するために 今コンソールに認識されます。 898 00:46:23,390 --> 00:46:25,160 だから、私のために自動作成されます。 899 00:46:25,160 --> 00:46:29,991 だから、今プレイしているものですが、 そして、私は単に)(source.stopを呼び出すことができます 900 00:46:29,991 --> 00:46:30,490 その上。 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 さて、あなたは何を知っていますか? 903 00:46:35,860 --> 00:46:39,760 ちょうどそのように、あなたたちはこれを聞いたことがあります song--あなたはこの曲を認識することがあります。 904 00:46:39,760 --> 00:46:41,801 >> [MUSIC - リック・アストリー、「NEVER GONNA GIVE  YOU UP」] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [MUSIC - イーグルス、 "FASTでの生活  LANE"] 907 00:46:44,215 --> 00:46:46,195 私たちは今、すべてRickrolledてきました。 908 00:46:46,195 --> 00:46:50,155 上の移動、[OK]を、素晴らしいです。 909 00:46:50,155 --> 00:46:51,160 クール。 910 00:46:51,160 --> 00:46:54,554 だから、これは基本的には一例です あなたは、MP3をロードすることができる方法file-- 911 00:46:54,554 --> 00:46:56,470 [MUSIC - イーグルス、 "FASTでの生活  LANE"] 912 00:46:56,470 --> 00:46:59,590 - そしてそれを再生し、停止して起動します。 913 00:46:59,590 --> 00:47:03,008 私はもっ​​と多くのことを行っている可能性が[聞こえません] 914 00:47:03,008 --> 00:47:07,570 >> 私がやる最後のものがあり、 私はあなたに[聞こえない]を紹介します。 915 00:47:07,570 --> 00:47:18,070 >> [音楽再生] 916 00:47:18,070 --> 00:47:21,800 >> それはogg.wave.mp3、のようなものです。 917 00:47:21,800 --> 00:47:26,450 私の記憶が正しければ、私は、考えて、 私は、.M4Aでいくつかの問題に遭遇しました 918 00:47:26,450 --> 00:47:27,721 私はそれについてはよく分かりません。 919 00:47:27,721 --> 00:47:28,470 私はmp3.wave--思います 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [MUSIC - リック・アストリー、「NEVER GONNA GIVE  YOU UP」] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> [OK]を、素晴らしいです。 924 00:47:36,500 --> 00:47:37,625 私はそれを言っていてはいけません。 925 00:47:37,625 --> 00:47:40,570 こんにちは、とにかく。 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 だから我々はこのオープンを持っています。 928 00:47:45,490 --> 00:47:52,320 だから今私はすべてが私は基本的に作成した、あります 音楽を作成するための基本的な構文。 929 00:47:52,320 --> 00:47:57,610 私のような何かをするのであれば、G4を追加 2 1に、どのようなことが意味することで、 930 00:47:57,610 --> 00:48:00,950 ピアノノート、G4を追加し、 第Gこれは 931 00:48:00,950 --> 00:48:02,680 下からピアノにアップ。 932 00:48:02,680 --> 00:48:05,930 これは、MIDIのようなものである話します そう、音楽ベースである人のために、 933 00:48:05,930 --> 00:48:07,860 これはただのMIDIノートです。 934 00:48:07,860 --> 00:48:10,090 >> 観客:それはGです 右、中央のCの? 935 00:48:10,090 --> 00:48:11,840 >> HUGHザブリスキー:これはG 中央のCの上に、それはそうです。 936 00:48:11,840 --> 00:48:12,470 >> 聴衆:上、中央のC 937 00:48:12,470 --> 00:48:13,345 >> HUGHザブリスキー:うん。 938 00:48:13,345 --> 00:48:14,340 実際には、はい。 939 00:48:14,340 --> 00:48:16,131 私が実際に行わ思います それ1 [聞こえません]、 940 00:48:16,131 --> 00:48:18,860 これは、上記オクターブかもしれません。 941 00:48:18,860 --> 00:48:20,070 それでは見てみましょう。 942 00:48:20,070 --> 00:48:21,152 私はPlay--をヒットした場合 943 00:48:21,152 --> 00:48:22,110 [繰り返しのピアノ注意】 944 00:48:22,110 --> 00:48:23,200 それを聞いて行く--we're。 945 00:48:23,200 --> 00:48:25,700 アイデアは、それが動作することです 単にコマンドラインたいと思い、 946 00:48:25,700 --> 00:48:27,510 私は上下に行けば 私のキーボードで、あなた 947 00:48:27,510 --> 00:48:31,550 以前に戻ることができます かなり便利ですコマンド。 948 00:48:31,550 --> 00:48:35,136 そして、以下のトラックの私のリストです、 これは、すべてのループで実行されています。 949 00:48:35,136 --> 00:48:38,260 >> 観客:あなたが想定しました その上で88鍵キーボード、右? 950 00:48:38,260 --> 00:48:41,051 >> HUGHザブリスキー:質問がありました、 私は、88キーのキーボードを想定しています、 951 00:48:41,051 --> 00:48:41,990 はい、私は。 952 00:48:41,990 --> 00:48:45,030 私がやったことは私です 基本的には88のサンプルを取りました 953 00:48:45,030 --> 00:48:46,970 ピアノ、各ノートのための1つの。 954 00:48:46,970 --> 00:48:49,180 そしてそうするたびにあなたに 今から注意を聞き、 955 00:48:49,180 --> 00:48:57,550 それは実際に見えるループです これはループで再生取得さlike--、 956 00:48:57,550 --> 00:49:00,120 したがって、すべてのノートのために、これが実行されています。 957 00:49:00,120 --> 00:49:02,860 何が起こるかというと、私であります 再びバッファを作成し、 958 00:49:02,860 --> 00:49:06,010 私は、音量を設定するためのゲインノードを作成します。 959 00:49:06,010 --> 00:49:08,240 本当にこれは単に 私を言っての複雑な方法 960 00:49:08,240 --> 00:49:10,550 source.buffer内のバッファに格納します。 961 00:49:10,550 --> 00:49:13,160 私はそれを、利得を与える、私 ゲインに接続し、 962 00:49:13,160 --> 00:49:15,576 ゲインに接続されています。 出力した後、私はそれを再生します。 963 00:49:15,576 --> 00:49:20,735 だから、プロセスの一種であります バッファソースを取り込みます。 964 00:49:20,735 --> 00:49:24,820 >> 観客は:あなたが実際にそのを取ることができます ドライ音と、それが濡れ作る[聞こえませんか]? 965 00:49:24,820 --> 00:49:26,260 >> HUGHザブリスキー:することができます、ええ。 966 00:49:26,260 --> 00:49:29,260 再動詞があります、あります 遅延、歪み。 967 00:49:29,260 --> 00:49:33,260 あなたは、基本的には何も置くことができます そのサンドイッチでof--の間だけでなく、 968 00:49:33,260 --> 00:49:37,660 パイプラインは、より良い比喩です しかし、あなたはそれで何かを追加することができます。 969 00:49:37,660 --> 00:49:38,200 クール。 970 00:49:38,200 --> 00:49:40,280 >> だから私は、デモを終了します ここであなたの感覚を与えるために 971 00:49:40,280 --> 00:49:46,390 回あなただけの膨大な数の 一斉にその機能を実行することができます。 972 00:49:46,390 --> 00:49:49,280 だから私はこれを削除するつもりです。 973 00:49:49,280 --> 00:49:59,110 私は発電機を作成するつもりですthat-- 基本的にdoes--これは本当に何ですか 974 00:49:59,110 --> 00:50:04,220 複雑syntax--の種類が、それはです その場でノートを生成しようとして、 975 00:50:04,220 --> 00:50:06,601 ちょうど再生を開始 彼らはそれがそれらを評価されます。 976 00:50:06,601 --> 00:50:07,392 【介在PIANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> だから我々はちょうどここに少し音楽を作ることができます。 979 00:50:12,817 --> 00:50:13,608 【介在PIANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> だから何このコマンド 例えば、あるい 982 00:50:41,470 --> 00:50:46,910 それがためにこれらの3つのノートを取ります ピアノとその後B3上に置きます。 983 00:50:46,910 --> 00:50:48,660 この構文はなるかもしれません もう少し意味 984 00:50:48,660 --> 00:50:50,590 持っている人たちへ ここでは、音楽の背景。 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> 私はキックドラムを追加することができます。 987 00:50:56,551 --> 00:50:57,050 私はcan-- 988 00:50:57,050 --> 00:50:58,048 >> 【介在INSTRUMENTS] 989 00:50:58,048 --> 00:50:59,256 >> それをいじっ--just。 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> だから、make--ことができます 992 00:51:13,474 --> 00:51:14,515 【介在INSTRUMENTS] 993 00:51:14,515 --> 00:51:15,513 その一つは、もう少し迷惑なんです。 994 00:51:15,513 --> 00:51:16,554 【介在INSTRUMENTS] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> だから、ランダムドライシンバルを追加 すべての16分音符に、16%と 997 00:51:30,981 --> 00:51:31,481 [聞こえません]。 998 00:51:31,481 --> 00:51:32,522 >> 【介在INSTRUMENTS] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> うん、そうな方法この 4:それは4で常にですworks--。 1001 00:51:50,400 --> 00:51:51,441 【介在INSTRUMENTS] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> うん、そう四方、および16/8。 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 【介在INSTRUMENTS] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> だから平均では、60%を取得 16分音符のヒット。 1008 00:52:33,780 --> 00:52:35,990 >> とにかく、これはちょうどでした 種類の誇示します 1009 00:52:35,990 --> 00:52:39,780 あなたはできることのいくつか ウェブオーディオAPIで構築します。 1010 00:52:39,780 --> 00:52:43,840 それは、それは本当に速いです、本当に強力です あなたはクールなものの多くを行うことができます 1011 00:52:43,840 --> 00:52:44,340 それと。 1012 00:52:44,340 --> 00:52:51,260 だからもう一度、あなたが持っている任意の質問、 メールmyself-- Hugh--またはサム、 1013 00:52:51,260 --> 00:52:55,869 正直なところ、Googleが持っています 良いリソースのトン。 1014 00:52:55,869 --> 00:52:56,660 でも最後の質問? 1015 00:52:56,660 --> 00:52:57,970 うん。 1016 00:52:57,970 --> 00:53:00,790 >> 聴衆:だからあなたがアクセスすることができます 内蔵マイク。 1017 00:53:00,790 --> 00:53:03,089 あなたがしたい場合はどのような より良いマイクを使うのか? 1018 00:53:03,089 --> 00:53:05,380 HUGHザブリスキー:あなたが望んでいた場合 より良いマイクを使用するには? 1019 00:53:05,380 --> 00:53:11,320 そう再度、これは、の一部であります Chromeの間の抽象化 1020 00:53:11,320 --> 00:53:12,950 お使いのコンピュータの残りの部分。 1021 00:53:12,950 --> 00:53:18,950 それはを通じて利用可能だがない限り API、ウェブのMIDI APIのように、 1022 00:53:18,950 --> 00:53:22,030 あなたは、おそらくいくつかのハックを見つけることができます、 しかし、一般的に実現可能ではありません。 1023 00:53:22,030 --> 00:53:25,300 >> SAM GREEN:あなたはalso--ことができます すべてのChromeは知っています 1024 00:53:25,300 --> 00:53:28,820 何であるか、あなたのデフォルトのマイク であり、それをアクセスします。 1025 00:53:28,820 --> 00:53:33,410 あなたがマイクを持っていた場合、あなたができるよう コンピュータのデフォルトのマイクとして設定し、 1026 00:53:33,410 --> 00:53:35,990 あなたはそれをそのようにアクセスすることができました そしてそれはおそらく動作します。 1027 00:53:35,990 --> 00:53:37,490 HUGHザブリスキー:それは良い点です。 1028 00:53:37,490 --> 00:53:39,656 私がいることが、試したことがありません あなたは親切にできる可能性があります 1029 00:53:39,656 --> 00:53:45,700 of--あなたが入力スピーカーをリダイレクトする場合は、 あなたはええ、それを行うことができるかもしれません。 1030 00:53:45,700 --> 00:53:48,360 >> でも最後の質問? 1031 00:53:48,360 --> 00:53:49,340 クール。 1032 00:53:49,340 --> 00:53:51,680 さて皆さんに感謝 見てのために多く。 1033 00:53:51,680 --> 00:53:52,199 私はヒューです。 1034 00:53:52,199 --> 00:53:52,990 SAM GREEN:私はサムです。 1035 00:53:52,990 --> 00:53:55,410 HUGHザブリスキー:そして、これはCS50です。 1036 00:53:55,410 --> 00:53:56,767