1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS:こんにちは。 3 00:00:05,930 --> 00:00:06,820 私はコナー・ハリスです。 4 00:00:06,820 --> 00:00:09,729 私はハーバード大学のCS50のCAです。 5 00:00:09,729 --> 00:00:11,270 STEPHENクルーソン:私はスティーブンクルーソンです。 6 00:00:11,270 --> 00:00:12,582 私はエールでCS50のためのTFです。 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS:そして、我々は話をするつもりです そのあなたがかもしれないいくつかの技術について 8 00:00:15,790 --> 00:00:18,880 もし興味があるなら使用したいです 最終的なプロジェクトをやってや本当に 9 00:00:18,880 --> 00:00:20,920 音楽で何か。 10 00:00:20,920 --> 00:00:24,400 まずAに焦点を当てたことになるだろう ハスケルと呼ばれるプログラミング言語。 11 00:00:24,400 --> 00:00:26,280 これは、機能的な 言語、そうパラダイム 12 00:00:26,280 --> 00:00:29,620 CやPHPは非常に異なっています または他の命令型言語 13 00:00:29,620 --> 00:00:33,450 あなたは既に使用したこと、および特に Haskellで書かれたライブラリに 14 00:00:33,450 --> 00:00:40,240 人々を助けることができる、Euterpeaと呼ばれます 機能的に音楽を書き込むと、 15 00:00:40,240 --> 00:00:40,780 基本的には。 16 00:00:40,780 --> 00:00:43,400 そして、スティーブンはあなたを歩いていきます その良い例を通して。 17 00:00:43,400 --> 00:00:46,423 >> この後、私はにご紹介します LillyPondと呼ばれるもの、これ 18 00:00:46,423 --> 00:00:48,370 組版の音楽のための技術です。 19 00:00:48,370 --> 00:00:50,830 それは一種のLaTeXのようなものです 音楽のためのあなたのいずれかの場合 20 00:00:50,830 --> 00:00:57,530 数学のクラスのためのLaTeXを使用していますか 他のPセットクラスまたは何があなたを持っています。 21 00:00:57,530 --> 00:01:00,440 だから私は再び、あなたを与えるだろう、 そのいくつかの簡単な例 22 00:01:00,440 --> 00:01:03,640 一般的にあなたを指します いくつかの優れたリソースの方向。 23 00:01:03,640 --> 00:01:04,319 >> STEPHENクルーソン:で さらに、我々はそれを考えました 24 00:01:04,319 --> 00:01:06,720 セットアップするためにクールになります ヒントを少し 25 00:01:06,720 --> 00:01:10,780 間のパイプラインに向けて Euterpeaで生成されたMIDIファイル 26 00:01:10,780 --> 00:01:13,910 LillyPondに、私たちは提供します スクリプトのいくつかの命令 27 00:01:13,910 --> 00:01:16,310 それをするであること LillyPondで提供 28 00:01:16,310 --> 00:01:19,160 ただそれにオープンソースを維持します そしてパイプラインが軌道に乗ります。 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS:再び、 我々は、重視すべき 30 00:01:20,910 --> 00:01:23,100 この2つの技術、あなた それらを一緒に使用する必要はありません。 31 00:01:23,100 --> 00:01:25,370 これらは、動作するように設計されていません 一緒に、彼らは非常にうまくやるのに。 32 00:01:25,370 --> 00:01:26,362 >> STEPHENクルーソン:右。 33 00:01:26,362 --> 00:01:30,116 そして、完全に無料。 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS:だから 確認応答は、まさにそれをお読みください。 35 00:01:32,240 --> 00:01:33,406 STEPHENクルーソン:正式には指摘しました。 36 00:01:33,406 --> 00:01:36,360 これらの人々に感謝します。 37 00:01:36,360 --> 00:01:39,180 これは、私は一瞬のためだけに残るでしょう。 38 00:01:39,180 --> 00:01:41,560 インストールプロセス 少しトリッキーです。 39 00:01:41,560 --> 00:01:45,420 私たちは、GitHubの上で私を読んでいます あなたが見てみることができます。 40 00:01:45,420 --> 00:01:47,840 ご質問があれば私にメールしてください。 41 00:01:47,840 --> 00:01:52,829 しかし、我々は仮定の下で、これを実行します これは誰のために働いていること。 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS:そして、あなたができない場合 LillyPondは、大した仕事をしないことを得ます。 43 00:01:55,620 --> 00:02:00,139 ライブコンパイルはありません 少なくとも私の端に、関わることになります。 44 00:02:00,139 --> 00:02:02,930 STEPHENクルーソン:ハスケルと LillyPondは、両方のインストーラを持つ必要があります。 45 00:02:02,930 --> 00:02:08,497 Euterpeaは次のようにダウンロードされます パッケージ、というようになど。 46 00:02:08,497 --> 00:02:10,080 だから我々は、コンピュータ音楽の話をしています。 47 00:02:10,080 --> 00:02:12,990 そして、これはただであります 非常に50,000フィートのビュー。 48 00:02:12,990 --> 00:02:15,700 それのいくつかの異なる側面があります。 49 00:02:15,700 --> 00:02:18,120 そして、これは粗く、あります いくつかの詳細を曖昧に行きます。 50 00:02:18,120 --> 00:02:22,090 しかし、我々は何かを考えることができ アルゴリズム作曲のように、 51 00:02:22,090 --> 00:02:24,920 アルゴリズムを使用して、 生成するために、コードを使用して 52 00:02:24,920 --> 00:02:30,280 いくつかのタイプof--多分自己相似 ノートのシーケンス、または多分ノート 53 00:02:30,280 --> 00:02:33,330 いくつかの制約の下で。 54 00:02:33,330 --> 00:02:35,350 そして、それらは次のようになり 行ったり解釈 55 00:02:35,350 --> 00:02:38,390 アナログ機器と またはそのような何か。 56 00:02:38,390 --> 00:02:42,010 しかし、組成が アルゴリズム的に行わ。 57 00:02:42,010 --> 00:02:45,120 >> しかし、もちろん、多分のエリア コンピュータ音楽やデジタル音楽 58 00:02:45,120 --> 00:02:48,870 我々はデジタルであるより精通しています 音の合成やデジタルサンプリング 59 00:02:48,870 --> 00:02:51,160 そして、デジタル録音。 60 00:02:51,160 --> 00:02:55,650 デジタル機器の多くは、 デジタルサンプリングを介して行わ。 61 00:02:55,650 --> 00:03:00,110 実際には、我々はそれらの中のいずれかを使用することがあります サウンドフォントライブラリの形以降。 62 00:03:00,110 --> 00:03:02,850 >> しかし、と呼ばれるものもあります 出てきたデジタル合成 63 00:03:02,850 --> 00:03:08,650 70年代後期とに」の持つ80年代 スタンフォード大学のヤマハとジョンチョウニング 64 00:03:08,650 --> 00:03:11,990 FM合成を行いますか、 FM音源、 65 00:03:11,990 --> 00:03:15,100 どこにキャリアを持っていました 信号と変調信号 66 00:03:15,100 --> 00:03:18,270 音声スペクトルの両方。 67 00:03:18,270 --> 00:03:22,570 しかし、我々は着目しているもの 今日は、MIDIと呼ばれるもので、 68 00:03:22,570 --> 00:03:25,040 そしてもちろん、アルゴリズム作曲。 69 00:03:25,040 --> 00:03:30,940 >> 私たちは楽器をするつもりはなく、しています 我々は、代わりにいくつかの音楽を作るつもりです、 70 00:03:30,940 --> 00:03:33,940 およびその解釈を取得します いくつかの機器によってその 71 00:03:33,940 --> 00:03:38,300 に適合しています 一般的なMIDI規格。 72 00:03:38,300 --> 00:03:40,830 だから、MIDIは何ですか? 73 00:03:40,830 --> 00:03:45,550 私は、あまりにも深くそれに入るつもりはありません しかし、MIDIデータ転送プロトコルです。 74 00:03:45,550 --> 00:03:49,250 これは、全体のガイドのようなものです さまざまな企業や産業 75 00:03:49,250 --> 00:03:52,250 音やパッチを整理するため。 76 00:03:52,250 --> 00:03:54,170 だから我々はそれを参照してくださいよ MIDI規格があります 77 00:03:54,170 --> 00:03:57,500 すべての異なる打楽器のための 音とMIDIの提言 78 00:03:57,500 --> 00:04:01,360 シンセのすべての異なるタイプのためか すべての器具の異なるタイプ 79 00:04:01,360 --> 00:04:03,650 オーケストラ内のグループは、言います。 80 00:04:03,650 --> 00:04:08,916 >> あなたは、おそらく精通しています 0から127のMIDIメッセージ。 81 00:04:08,916 --> 00:04:12,920 MIDI信号は、典型的には 1ビットを示します 82 00:04:12,920 --> 00:04:16,130 それは、データまたはですか ステータスパケットは、その後あり 83 00:04:16,130 --> 00:04:18,589 信号の7ビット。 84 00:04:18,589 --> 00:04:21,430 そして、これらを制御することができます ボリュームからすべて 85 00:04:21,430 --> 00:04:25,330 アクションや圧力に 特定のキーに 86 00:04:25,330 --> 00:04:29,400 あなたは、MIDIで実行している場合 コントローラと同様に、当然のことながら、 87 00:04:29,400 --> 00:04:31,250 ノート。 88 00:04:31,250 --> 00:04:33,450 そしてもちろん、MIDIが持っています 非常に有用でした、 89 00:04:33,450 --> 00:04:37,550 それは、ワイヤへの道だから 一緒に、またはデイジーチェーン 90 00:04:37,550 --> 00:04:41,570 MIDIハードウェアデバイスの束。 91 00:04:41,570 --> 00:04:44,050 私は自分の家で七、八のバックを持っています。 92 00:04:44,050 --> 00:04:46,610 それは本当に複雑になります、 しかし、それは本当に強力です。 93 00:04:46,610 --> 00:04:47,460 そして、それは本当に古いです。 94 00:04:47,460 --> 00:04:51,117 それは1980年代初頭からだし、 それは本当に素晴らしく、小さいです。 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS:うん。 96 00:04:51,950 --> 00:04:54,230 すべての古典的な任天堂 ビデオゲームは、おそらくだろう 97 00:04:54,230 --> 00:04:56,088 例えば、音楽のMIDIファイルを持っています。 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> STEPHENクルーソン:ここです 一般的なMIDIの例、 100 00:05:01,740 --> 00:05:06,520 種類としてMIDIを示します 一般的なプロトコルの。 101 00:05:06,520 --> 00:05:13,280 そして、私たちが考えることができると思います 仕様の違い 102 00:05:13,280 --> 00:05:17,830 以下のようなものがあるべきこと これらの楽器の音と実際 103 00:05:17,830 --> 00:05:21,740 これらの楽器の音の実現 サウンドフォントまたは特定のMIDI IN 104 00:05:21,740 --> 00:05:25,740 差であるとしてシンセサイザー 言うかもしれないtypeface--の間、 105 00:05:25,740 --> 00:05:30,350 一般的に、これはのデザインです 表現するこの特定の方法 106 00:05:30,350 --> 00:05:35,907 characters--および特定のフォント すなわち、特定のサイズおよび音色を有し、 107 00:05:35,907 --> 00:05:37,240 そして、the--の実現があります 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS:たぶん より良い比較だろう 109 00:05:39,156 --> 00:05:43,430 それが与えるsays-- Unicode標準であります すべての文字に番号、本当に 110 00:05:43,430 --> 00:05:46,830 世界のすべての言語、 言語のスクリプトの広大なセット 111 00:05:46,830 --> 00:05:51,310 世界では、その後のものです 何かグラフィカルにレンダリング 112 00:05:51,310 --> 00:05:53,710 様々なフォント・パッケージによって。 113 00:05:53,710 --> 00:05:56,630 そして、明らかに、あなたは考えることができ 音のUnicodeとしてMIDI。 114 00:05:56,630 --> 00:06:03,250 そして、それは大きな流れof--リストだけです イベントや楽器やその他もろもろの、 115 00:06:03,250 --> 00:06:06,090 あなたは、別のを持っている必要があります プログラム、書体のように、 116 00:06:06,090 --> 00:06:08,537 それをレンダリングします 可聴何か。 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> STEPHENクルーソン:なぜHaskellの? 119 00:06:13,780 --> 00:06:19,110 Haskellは関数型プログラミングで 言語、非常に高度な、 120 00:06:19,110 --> 00:06:22,770 Cからの非常に異なります、 PHPとは非常に異なります。 121 00:06:22,770 --> 00:06:28,120 そして、私たちがありますことを確認するつもりです Haskellでは関数合成のしやすさ 122 00:06:28,120 --> 00:06:37,640 それは、私たちが通過そよ風することができます 構成またはアップ入力し、転写、 123 00:06:37,640 --> 00:06:42,160 フレールジャックのようなもの、 このシンプルな曲その 124 00:06:42,160 --> 00:06:46,815 その中に部品をたくさん持っていること 自己相似または繰り返しています。 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 だから、これはいくつかのことになります 理由のための動機 127 00:06:53,250 --> 00:06:59,400 我々はここで、Haskellのを使用しています 関数は、ファーストクラスの市民です。 128 00:06:59,400 --> 00:07:01,120 >> そして、私は延長したかったです この少し。 129 00:07:01,120 --> 00:07:08,800 それはに少し簡単です Haskellでフレールジャックを記譜。 130 00:07:08,800 --> 00:07:12,100 しかし、我々はしたい場合はどのような それにドラムパートを追加しますか? 131 00:07:12,100 --> 00:07:17,320 私たちが作るために試してみたかった場合はどう ローランド808または909ドラムのようなもの 132 00:07:17,320 --> 00:07:20,970 あなたが持っているマシン 約16の異なるステップ? 133 00:07:20,970 --> 00:07:24,590 通常、これらのされています 16分音符と考えます。 134 00:07:24,590 --> 00:07:28,640 そして、あなたは世界的に制御することができます テンポ、あなたが選ぶことができます 135 00:07:28,640 --> 00:07:34,620 別のパーカッションパートの束 バスドラム、クラップ、異なるスネアの、 136 00:07:34,620 --> 00:07:37,540 オープンとクローズハイハット チャンネルのこれらの並べ替えに、 137 00:07:37,540 --> 00:07:41,600 そして、あなたはEQやすることができます 彼らの音量を調整します。 138 00:07:41,600 --> 00:07:45,290 >> そして、我々は良い方法でが表示されます このステップを表すのハスケル 139 00:07:45,290 --> 00:07:48,810 すべてとシーケンサ Haskellでは、様々なクールなもの 140 00:07:48,810 --> 00:07:53,100 我々は発生して行うことができます リストの上のリストとフィルタリング、 141 00:07:53,100 --> 00:07:56,060 リストの上にマッピング、マッピング リストに対して機能します。 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 そして迅速な謝罪。 144 00:08:00,760 --> 00:08:05,300 これは非常に一遍です そして、過度に迅速なスケッチ 145 00:08:05,300 --> 00:08:07,620 態様のいくつかの ハスケルとEuterpeaの、 146 00:08:07,620 --> 00:08:11,760 ドメイン固有これは 埋め込み言語は、書かれました 147 00:08:11,760 --> 00:08:14,970 Haskellでは音楽のタイプについて。 148 00:08:14,970 --> 00:08:17,350 だから、オンラインコードをチェックアウトください。 149 00:08:17,350 --> 00:08:22,404 グラスゴーで起動するGHCiの、 Haskellのコンパイラインタプリタ。 150 00:08:22,404 --> 00:08:24,320 そして、私はいくつかをやっていますよ 少しでこれを 151 00:08:24,320 --> 00:08:25,880 あなたはどのように行うのを見ることができます。 152 00:08:25,880 --> 00:08:31,021 >> そして、これはあなたがで読み込むことができます 構文the--コロンとあります 153 00:08:31,021 --> 00:08:31,520 コマンド。 154 00:08:31,520 --> 00:08:33,510 あなたは、ファイルをロードすることができます。 155 00:08:33,510 --> 00:08:36,840 あなたは、これらのファイルにブラウズを使用することができます そのすべての機能を表示するには 156 00:08:36,840 --> 00:08:39,169 特定のモジュールに存在しています。 157 00:08:39,169 --> 00:08:43,850 そして、として、我々は、タイプとタイプが表示されます クラスは、Haskellでとても重要であり、 158 00:08:43,850 --> 00:08:48,850 あなたは常に、特にcheck--ことができます 新しいDSCLで作業している場合 159 00:08:48,850 --> 00:08:51,600 このように、音楽の種類は何ですか? 160 00:08:51,600 --> 00:08:55,114 私は、数値の方法について知っています タイプは、Haskellで働きます 161 00:08:55,114 --> 00:08:56,530 しかし、私は音楽についてはあまり知りません。 162 00:08:56,530 --> 00:09:01,280 しかし、あなたは彼らがしている方法を探索することができます このTまたはタイプのコマンドを使用して定義 163 00:09:01,280 --> 00:09:04,577 して、特に呼び出し 関数やデータオブジェクト。 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS:うん。 165 00:09:05,410 --> 00:09:09,820 あなたは、Cやクランを考えた場合 種類についてhardassました、 166 00:09:09,820 --> 00:09:11,230 あなたはハスケルについては考えています。 167 00:09:11,230 --> 00:09:14,230 ハスケルの良いところは、ということです あなたはあなたのコードをコンパイルするために得ることができる場合 168 00:09:14,230 --> 00:09:16,790 そして、Haskellの型かどうかをチェックし、 それはおそらく正しいです、 169 00:09:16,790 --> 00:09:18,675 型システムはそれほど厳格であるためです。 170 00:09:18,675 --> 00:09:20,090 >> STEPHENクルーソン:うん。 171 00:09:20,090 --> 00:09:21,980 だから、僕は行きたいです 再びthrough--と、 172 00:09:21,980 --> 00:09:27,160 これは、数justice--やっていません ハスケルの特徴は、その少なくとも 173 00:09:27,160 --> 00:09:31,780 そのcreators--に、それが作成されました 大勢の人たちによって、1980年代後半に、 174 00:09:31,780 --> 00:09:34,610 約20の委員会 people--重要だと思っていました。 175 00:09:34,610 --> 00:09:36,850 そして、最初に彼ら この論文に記載されています 176 00:09:36,850 --> 00:09:41,890 ハスケルの起源を説明 最初の20年ほどにわたって 177 00:09:41,890 --> 00:09:43,390 それは怠惰なことでした。 178 00:09:43,390 --> 00:09:44,990 だから、これは何を意味するのでしょうか? 179 00:09:44,990 --> 00:09:49,860 >> 我々はいくつかの種類を持っている場合まあ、それは意味します 式の、我々はそれを評価する必要があります。 180 00:09:49,860 --> 00:09:54,390 そして、Haskellは呼び出しでこれを行います 必要な方法または非厳密な方法によって。 181 00:09:54,390 --> 00:09:57,250 私たちはの束を持っている場合つまり、 私たちの表現の構成要素、 182 00:09:57,250 --> 00:10:00,660 我々は、評価を遅らせることを試みます それらのサブコンポーネント 183 00:10:00,660 --> 00:10:05,300 絶対最後までminute-- 私たちは実際にそれらを必要とするまで、それはです。 184 00:10:05,300 --> 00:10:08,480 >> したがって、このmeans--あります 特に、本当にクール 185 00:10:08,480 --> 00:10:13,200 我々は抽象化を考えている場合 音楽ステップシーケンサーの。 186 00:10:13,200 --> 00:10:16,740 あなたはそれをオンにし、次のサービスを開始します ステップsequence--を実行しています 187 00:10:16,740 --> 00:10:20,010 あなたは今までドラムに働いていた場合 machine--、それだけで永遠に行きます。 188 00:10:20,010 --> 00:10:24,650 私たちのであれば、それは本当にいいだろう Haskellでそれをエミュレートすることができます。 189 00:10:24,650 --> 00:10:31,040 そして、私たちは無限でそれを行うことができます 特に無限リストの値、。 190 00:10:31,040 --> 00:10:35,860 これは、入力するのは非常に簡単です Haskellでは無限リスト。 191 00:10:35,860 --> 00:10:39,230 あなただけのダウン構文を使用することができます ここでは、1〜3を参照してください場合は、 192 00:10:39,230 --> 00:10:42,440 3 1ドットのドットを削除し、 それは無限のリストです 193 00:10:42,440 --> 00:10:46,960 すべての自然数の拡張 限り、あなたが想像できるように。 194 00:10:46,960 --> 00:10:49,925 >> 私が紹介したいです すぐに折り目の概念。 195 00:10:49,925 --> 00:10:51,800 そして再び、目的 本セミナーではありません 196 00:10:51,800 --> 00:10:55,770 Haskellでは折り目について学ぶために 以上の高次関数。 197 00:10:55,770 --> 00:10:59,640 しかし、私はちょうどそれを紹介したいです どのように奇妙なの正確な意味を与えます 198 00:10:59,640 --> 00:11:03,700 Haskellはあり、それはどのように強力な。 199 00:11:03,700 --> 00:11:08,000 特に、我々はbe--するつもりです 私たちは別のドラムパートを行うとき、 200 00:11:08,000 --> 00:11:12,790 我々は、のリストを操作することになるだろう 数字は、お互いにそれらを折り畳みます。 201 00:11:12,790 --> 00:11:17,290 そして、我々はよ、ということを行うには 地図や折り目を使用すること。 202 00:11:17,290 --> 00:11:21,770 >> 右結合があります この1右である、倍 203 00:11:21,770 --> 00:11:26,990 here-- 1マイナス数量、2 マイナス数量、3マイナス0。 204 00:11:26,990 --> 00:11:29,170 そして、するための構文 倍、あなたは倍に与えます 205 00:11:29,170 --> 00:11:34,680 基本値とその後operation-- この場合、加減算。 206 00:11:34,680 --> 00:11:36,280 私は両方の例を示しました。 207 00:11:36,280 --> 00:11:41,760 そして、そのアキュムレータがあります リスト全体にわたって蓄積し、 208 00:11:41,760 --> 00:11:46,330 その演算子のプラスを適用しますか、 マイナス、それを蓄積。 209 00:11:46,330 --> 00:11:52,680 それが呼ばれたのであれば、これはthe--になります 、折り目rのプラス0の、0から始まります 210 00:11:52,680 --> 00:11:54,720 我々は、すべてを合計することになります そのリスト内の数字。 211 00:11:54,720 --> 00:11:57,134 そして、それは1〜3のリストです。 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS:だから、別のものを置くために 方法は、折り目rは3つの引数を取ります。 213 00:12:00,050 --> 00:12:02,540 その関数があります 自体は2つの引数を取り、 214 00:12:02,540 --> 00:12:05,400 そして、スターターの値があります、 値のリストがあります。 215 00:12:05,400 --> 00:12:08,570 そして、何をやっていることはあなたが取るです スターター値、最初の値、 216 00:12:08,570 --> 00:12:09,850 関数にそれらを置きます。 217 00:12:09,850 --> 00:12:11,607 あなたは何を得ますか、 、それを取ることを養います 218 00:12:11,607 --> 00:12:13,940 の関数に 第二の値、あなたが得るもの、 219 00:12:13,940 --> 00:12:16,690 それを取る、にそのフィード 3番目の値の関数です。 220 00:12:16,690 --> 00:12:18,740 それから、あなたがダウンした場合 このリスト全体このようにして、 221 00:12:18,740 --> 00:12:22,970 あなたは、最終的に取得するつもりです だいくつかの特異値 222 00:12:22,970 --> 00:12:25,720 あなたが開始したものと同じタイプの でアウトと同じタイプの 223 00:12:25,720 --> 00:12:29,147 リスト内のもの、およびなど それは倍Rのリターン結果です 224 00:12:29,147 --> 00:12:31,980 STEPHENクルーソン:だから、特に、 これらは、より高次の関数であり、 225 00:12:31,980 --> 00:12:34,460 彼らは別のものを取っているので、 引数の1つとして機能します。 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS:うん。 227 00:12:34,770 --> 00:12:37,820 あなたが特定の他のを使用したことがある場合 languages​​--私はRを知って、[聞こえません] 228 00:12:37,820 --> 00:12:41,510 言語は削減と呼ばれる、これを持っています。 229 00:12:41,510 --> 00:12:45,460 あなたは、同様の機能を持っている可能性があります 他の言語で、ちょうどと呼ばれます 230 00:12:45,460 --> 00:12:48,160 異なるもの。 231 00:12:48,160 --> 00:12:50,680 >> STEPHENクルーソン:そして 何倍Rについてうれしいです 232 00:12:50,680 --> 00:12:53,880 この例ではその倍です Rは無限リストを扱うことができます。 233 00:12:53,880 --> 00:12:59,490 このP5は、この底にそう ノートを生成していること 234 00:12:59,490 --> 00:13:03,120 以下のためのステップ・シーケンサーでオンになっています いくつかのドラムパート、第五ドラムパート、 235 00:13:03,120 --> 00:13:05,480 そして多分それはコンガです ドラムまたは何か。 236 00:13:05,480 --> 00:13:09,719 そして、これは意図的です これを書いている鈍角方法、 237 00:13:09,719 --> 00:13:11,510 それはので、楽しいです それは多くのことを示しています 238 00:13:11,510 --> 00:13:14,460 ハスケルとEuterpea程度のものの。 239 00:13:14,460 --> 00:13:20,650 >> したがって、このcolon--コロンのRは倍 物事をプッシュするだけで、オペレータ 240 00:13:20,650 --> 00:13:25,700 一緒に空に呼びかけlist--に 単に空のブラケットであるリスト。 241 00:13:25,700 --> 00:13:28,250 そして、私はそれを呼んでいます この無限のリストに。 242 00:13:28,250 --> 00:13:31,570 これは、実際には2つのリストであります ダウンここで一緒に加えます。 243 00:13:31,570 --> 00:13:37,150 リスト1コンマ6点 ドットは、1、6、11、16です。 244 00:13:37,150 --> 00:13:39,750 だからHaskell--だけで いくつかの文字は、あなた 245 00:13:39,750 --> 00:13:42,420 全体を生成することができます 数列 246 00:13:42,420 --> 00:13:46,240 5数字が離れていること 無限に上のストレッチ。 247 00:13:46,240 --> 00:13:49,860 そして、私はその前に追加 この短い少しlist-- 248 00:13:49,860 --> 00:13:54,370 3、8、21--だけをお見せします どのようにリストを連結することができます。 249 00:13:54,370 --> 00:13:55,790 >> そして私は、それ自体に折り畳まれてきました。 250 00:13:55,790 --> 00:14:01,510 そして、これはただのようなものされて終わります アイデンティティ操作が、それは無限です。 251 00:14:01,510 --> 00:14:06,070 そして、それから、Rはそれを行うことができます倍 いい加減に上記のように、評価されます。 252 00:14:06,070 --> 00:14:10,582 私たちは1と2と3を持っている場合、我々はできます ちょうどそれの全体の残りの部分をオフに囲みます。 253 00:14:10,582 --> 00:14:12,290 それは動作しません マイナスまたはプラス、それ 254 00:14:12,290 --> 00:14:17,760 このコロンのために動作します リスト上のアイデンティティ操作。 255 00:14:17,760 --> 00:14:24,620 >> どのようにして、実質的に使用しないことであれば、我々 物事の無限に長いリストがありますか? 256 00:14:24,620 --> 00:14:26,500 まあ、Haskellは提供します functions--たくさんの 257 00:14:26,500 --> 00:14:29,450 そして、これらに多くを見ます 取るなど、独自のtime-- 258 00:14:29,450 --> 00:14:32,200 これは[OK]を、私たちがしている、と言います この無限のリストを生成します、 259 00:14:32,200 --> 00:14:35,950 しかし、我々はいくつかを取るつもりです それの数とこのcase--で 260 00:14:35,950 --> 00:14:38,410 我々は後に、これを参照してくださいよ 私たちのドラムマシンcode-- 261 00:14:38,410 --> 00:14:43,740 GMはグローバルのちょうどいくつかの種類であります ステップ数のための変数 262 00:14:43,740 --> 00:14:44,610 シーケンサインチ 263 00:14:44,610 --> 00:14:47,630 ロールインマシンでは私 あなたを示し、それは、典型的には16です 264 00:14:47,630 --> 00:14:51,475 私は32でそれを実装しています。 265 00:14:51,475 --> 00:14:54,470 それは本当に問題ではありません。 266 00:14:54,470 --> 00:15:00,230 >> Haskellはまた純粋なので、強いています コナーはに言及した静的型付け。 267 00:15:00,230 --> 00:15:03,220 だから、機能があります sense--で数学的 268 00:15:03,220 --> 00:15:06,600 彼らはより多くの数学的です 彼らは保証されていること 269 00:15:06,600 --> 00:15:11,530 アクセスしたり、任意の種類を変更しないように 変数や入力または出力を行います。 270 00:15:11,530 --> 00:15:14,420 だから、あなたが機能を持っている場合、 それは確定的です。 271 00:15:14,420 --> 00:15:17,400 それは、常に同じに戻ります プログラムの状態の値 272 00:15:17,400 --> 00:15:19,310 または同じまま。 273 00:15:19,310 --> 00:15:22,940 単項例外は、もちろん、存在します これに、それは私たちの範囲を超えています。 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS:うん。 275 00:15:23,900 --> 00:15:26,946 これが何を意味するのか、しかし、そこにあります あるいくつかの重要な[聞こえません] 276 00:15:26,946 --> 00:15:27,820 これの結果。 277 00:15:27,820 --> 00:15:30,940 一つは、に非常に簡単だということです Haskellプログラムを並列化します。 278 00:15:30,940 --> 00:15:32,773 あなたが持っている場合ので、 、その機能を言います 279 00:15:32,773 --> 00:15:36,064 場合、百万の値を操作する必要があります あなたは関数が常にすることを知っています 280 00:15:36,064 --> 00:15:39,280 場合は、同じ値を与えます あなたが特定のvalue--で養います 281 00:15:39,280 --> 00:15:43,055 あなたは[聞こえない]のF、1のfをしている場合 2、その後、3のFまたは1のF whatnot-- 282 00:15:43,055 --> 00:15:45,180 書き出すするつもりはありません ファイルまたは何かをします 283 00:15:45,180 --> 00:15:46,850 それは、F2の値が変更されます。 284 00:15:46,850 --> 00:15:50,220 あなただけに、この機能を分割することができます 百万異なるマシンまたは百万 285 00:15:50,220 --> 00:15:54,720 異なるスレッドまたは何、 すべての応答を取り戻します、 286 00:15:54,720 --> 00:15:56,900 すべての戻り値を取得します バックし、その後、それはそれです。 287 00:15:56,900 --> 00:15:59,780 だから物事を並列化するのは非常に簡単。 288 00:15:59,780 --> 00:16:03,140 >> 欠点は、その入力され そして、出力特に 289 00:16:03,140 --> 00:16:05,720 型システムに適合 非常に複雑な方法です。 290 00:16:05,720 --> 00:16:09,010 私たちは今、その右に行くが、私はありません いくつかのリソースを見てことをお勧め 291 00:16:09,010 --> 00:16:11,175 オンラインあなたはそれについて知りたい場合。 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> STEPHENクルーソン:だから classes--入力し、この 294 00:16:16,550 --> 00:16:21,610 種類のwas--クラス 解決するために考案されました 295 00:16:21,610 --> 00:16:24,160 演算子オーバーロードの問題。 296 00:16:24,160 --> 00:16:27,590 だから我々は平等​​を持っていると思いました 物事の異なる種類の間で。 297 00:16:27,590 --> 00:16:31,040 もちろん、我々はof--考えることができます 数値型間の平等 298 00:16:31,040 --> 00:16:34,720 考えることは非常に簡単ですが、 どのリスト間の平等についてはどうですか? 299 00:16:34,720 --> 00:16:37,610 間の平等について何 ツリー脚データ構造? 300 00:16:37,610 --> 00:16:43,130 そして、これがすべてで可能です Haskellの型クラスのため。 301 00:16:43,130 --> 00:16:48,000 >> ですから、特定のデータtype--を定義した場合 ここで、これらは、音楽のピッチです。 302 00:16:48,000 --> 00:16:50,960 我々は最終的に取得しています 一部のコンピュータミュージックへ。 303 00:16:50,960 --> 00:16:57,420 だから我々は、C、Cシャープを持っています などなど。 304 00:16:57,420 --> 00:17:01,080 彼らはの束に属し 異なるタイプのクラス。 305 00:17:01,080 --> 00:17:03,510 EQ--彼らはEQのタイプのクラスに属します。 306 00:17:03,510 --> 00:17:06,780 それは、彼らがサポートして意味します 平等操作。 307 00:17:06,780 --> 00:17:12,650 だから、1かどうかを評価することができます 音楽プリミティブのシーケンス 308 00:17:12,650 --> 00:17:15,400 別のものと同じです。 309 00:17:15,400 --> 00:17:17,280 >> 彼らは序クラスに属します。 310 00:17:17,280 --> 00:17:19,479 つまり、これらの順序があることを意味します。 311 00:17:19,479 --> 00:17:27,670 Dは、C、Cシャープの後に来ます 同様に、Cの後に来ます。 312 00:17:27,670 --> 00:17:29,840 彼らはクラスに属し 彼らができることを意味ショー、 313 00:17:29,840 --> 00:17:33,000 コンソールまたは端末に印刷すること。 314 00:17:33,000 --> 00:17:36,090 彼らはに属しています クラス、列挙されました 315 00:17:36,090 --> 00:17:39,770 たとえていることを意味 これらは文字で、 316 00:17:39,770 --> 00:17:45,340 彼らは、基礎となる数値を持っています 0から始まる表現 317 00:17:45,340 --> 00:17:48,960 としかしを通じてオフに行きます 多くのものが、ここでは20かそこらであり、 318 00:17:48,960 --> 00:17:51,770 または多分30または40、。 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS:そして時 我々は、データ型を持ちます 320 00:17:54,259 --> 00:17:57,050 それはそのキーワードでderives-- 「deriving--「特定の型クラス、 321 00:17:57,050 --> 00:18:01,160 これは、コンパイラが試みることを意味し 自動的に何かを構築しました。 322 00:18:01,160 --> 00:18:05,120 だから、多分あなたはしたいと思います 異なる品質を定義します。 323 00:18:05,120 --> 00:18:09,450 あなたは、Cシャープを定義したいと思います 例えば、Dフラットに等しいように。 324 00:18:09,450 --> 00:18:11,560 この構成によれ ここで、私はCはシャープとは思いません 325 00:18:11,560 --> 00:18:14,940 Dフラットがあるため、等しくなります コンパイラが自動的になります 326 00:18:14,940 --> 00:18:19,670 すべての異なる可能な値を言います 他のすべてのとは区別されます。 327 00:18:19,670 --> 00:18:22,930 >> だから、上書きすることが可能です デフォルトの実装 328 00:18:22,930 --> 00:18:25,730 クラスのこれらの種類の。 329 00:18:25,730 --> 00:18:28,640 ここでも、参照している場合を見て あなたはそれについて学びたいと思っています。 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 STEPHENクルーソン:そして ここで、実際には、これは、よ 332 00:18:33,600 --> 00:18:36,930 私たちは後でコーディングするときのために役立つこと。 333 00:18:36,930 --> 00:18:42,150 私たちは、中置演算子のいくつかを見ます 逐次合成のために、 334 00:18:42,150 --> 00:18:46,570 並列合成、など など、これらのプラスと等号 335 00:18:46,570 --> 00:18:48,620 コロンに囲まれています。 336 00:18:48,620 --> 00:18:53,330 それは我々がこれらの異なるを再生できることを意味します ミュージカルプリミティブ次々。 337 00:18:53,330 --> 00:18:54,590 それは逐次合成です。 338 00:18:54,590 --> 00:18:57,170 >> それとも、私たちはそれらを再生することができます 同時に平行です。 339 00:18:57,170 --> 00:19:05,100 だから私は、音楽的価値を持つことができ、 そして、これは、等しく、コロン 340 00:19:05,100 --> 00:19:09,669 中置並列合成演算子、 和音の種類としてそれらを再生。 341 00:19:09,669 --> 00:19:11,460 そして、我々は使用するつもり このときに我々は組み合わせます 342 00:19:11,460 --> 00:19:15,080 私たちとのドラムパート 少しフレールジャック歌 343 00:19:15,080 --> 00:19:19,460 これらの二つの配列を再生します 同時に音楽の値。 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> is--カレーカリーすると、最後にありました ハスケル・カリーの名前、人 346 00:19:29,250 --> 00:19:31,850 Haskellのイメージがにちなんで命名されます。 347 00:19:31,850 --> 00:19:34,330 そして、これは私たちができます 私たちがしている素敵なエレガンス 348 00:19:34,330 --> 00:19:36,880 すべてのこれらの異なるを書きます 私たちがしている機能やフィルタ 349 00:19:36,880 --> 00:19:39,330 私たちのリストの上にマッピングすることになるだろう。 350 00:19:39,330 --> 00:19:42,810 2の機能 xのF arguments--と-Y- 351 00:19:42,810 --> 00:19:46,630 表すことができます。 xのfはyに適用されます。 352 00:19:46,630 --> 00:19:49,800 だから、の機能です 返す1引数 353 00:19:49,800 --> 00:19:51,240 1つの引数を別の関数。 354 00:19:51,240 --> 00:19:56,962 だから、これは私たちがマッピングできることを意味します Yさんのリストの上にxの関数f。 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS:したいです この例を与えますか? 356 00:19:58,920 --> 00:19:59,836 STEPHENクルーソン:うん。 357 00:19:59,836 --> 00:20:05,390 私はここからの例を持っています 私たちが書き込むことのいくつか。 358 00:20:05,390 --> 00:20:10,500 だから、よく2--複製 複製がかかります 359 00:20:10,500 --> 00:20:13,040 どのように多くある一つの値、 回何かを複製します、 360 00:20:13,040 --> 00:20:16,690 そしてそれはvalue--がかかります 通常、リストか何か。 361 00:20:16,690 --> 00:20:23,450 そこでここでは、我々は、マッピングしています 別のリストの上に2を複製します。 362 00:20:23,450 --> 00:20:27,440 >> 私たちはマップのであれば、2を複製 我々は2を複製する場合に適用されます 363 00:20:27,440 --> 00:20:31,890 このlist--の最初の要素へと これらは、音楽phrases--のリストです 364 00:20:31,890 --> 00:20:37,650 「あなたはsleeping--」の2つを生成します あなたが眠っている、あなたが眠っています。 365 00:20:37,650 --> 00:20:40,040 だから今、私たちは2を持っています。 366 00:20:40,040 --> 00:20:42,570 しかし、複製は2を取ります 引数が、我々はしているので、 367 00:20:42,570 --> 00:20:47,100 カリー化して、マッピングし、 私たちは、レプリケート2を表すことができます 368 00:20:47,100 --> 00:20:52,310 の関数として返されたものとして 2回だけ複製argument-- 1。 369 00:20:52,310 --> 00:20:57,010 そして、我々はそれぞれにそれを適用しています フレーズのリストの要素。 370 00:20:57,010 --> 00:21:01,900 >> そして、連結は、Haskellはあります リストを平坦化するための操作。 371 00:21:01,900 --> 00:21:04,400 反復2になるため リストのリストを生成します。 372 00:21:04,400 --> 00:21:06,660 そして、これは、この中間フォームはこちらです。 373 00:21:06,660 --> 00:21:10,365 だから我々はCONCATことができます またはその倍を平ら。 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS:単純 カリー化の例、 375 00:21:12,240 --> 00:21:15,323 あなたがlike--たければfはただ想像 2を取る逓倍機能 376 00:21:15,323 --> 00:21:16,840 引数とその積を返します。 377 00:21:16,840 --> 00:21:19,320 あなたは、F 4 5を持っているのであれば、それは20です。 378 00:21:19,320 --> 00:21:22,670 しかし、あなたはと考えることができます あなたは、関数f 4を持っていますalso-- 379 00:21:22,670 --> 00:21:25,560 それは、引数とリターンを取ります これはちょうどargument-- 4倍 380 00:21:25,560 --> 00:21:27,870 部分適用します ただ一つの引数4。 381 00:21:27,870 --> 00:21:31,182 そして、あなたは4のfを養う場合 5、それはあなたに20を与えます。 382 00:21:31,182 --> 00:21:32,890 そして、それは簡単です カリー化の例。 383 00:21:32,890 --> 00:21:34,473 これは通常、教科書的なものの一つです。 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> STEPHENクルーソン:ラムダ 式または匿名関数 386 00:21:42,110 --> 00:21:47,330 別のHaskellの特徴です。 387 00:21:47,330 --> 00:21:51,242 だから我々はかき立てるする必要がある場合 少し機能のライフ複製、 388 00:21:51,242 --> 00:21:52,950 しかし、それはしていないと言います 標準ライブラリ、 389 00:21:52,950 --> 00:21:56,150 我々は、構文を使用することができます 次のような。 390 00:21:56,150 --> 00:21:58,730 そして、我々は、この上でそよ風ます。 391 00:21:58,730 --> 00:22:02,160 一つのこと、あ​​なたは内の多くが表示されます ドラムマシン、我々は電話を作っているされています 392 00:22:02,160 --> 00:22:05,790 呼ばれるものに フィルターなどの前に、 393 00:22:05,790 --> 00:22:08,185 関数のマッピングです リストの上に、それはです 394 00:22:08,185 --> 00:22:10,260 ブール関数のマッピング。 395 00:22:10,260 --> 00:22:13,390 >> だから我々はここでの例を持っています 匿名の 396 00:22:13,390 --> 00:22:19,150 定義されたブール関数こと ちょうどカップルの値をとります。 397 00:22:19,150 --> 00:22:22,990 これは厳密に言えばされていません 無名関数。 398 00:22:22,990 --> 00:22:25,850 しかし、それはで定義されます 簡潔にするため、その構文、 399 00:22:25,850 --> 00:22:28,007 これはちょうどXモジュールを取りN-- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS:うん。 401 00:22:28,840 --> 00:22:31,330 そうfはの関数であります 二つの引数nおよびp 402 00:22:31,330 --> 00:22:35,440 それはそれ自体が関数を返します 一つの引数、すなわちxの関数。 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 STEPHENクルーソン:私 中置演算子を述べました。 405 00:22:40,690 --> 00:22:42,642 中置演算子は何ですか? 406 00:22:42,642 --> 00:22:45,710 まあ、中置演算子は、 通常の方法、私たちは操作を表し、 407 00:22:45,710 --> 00:22:49,910 mathematics-- 2プラスで、言います 代わりに、オペレータの2プラス 408 00:22:49,910 --> 00:22:51,202 そして、2つの引数を2と2。 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS:それは呼ばれています である、逆ポーランド記法 410 00:22:53,701 --> 00:22:55,330 この用語は、私はあなたのいずれかが知っていることはないだろう。 411 00:22:55,330 --> 00:22:56,288 >> STEPHENクルーソン:右。 412 00:22:56,288 --> 00:22:58,290 ポリッシュまたはプレフィックス表記を逆にします。 413 00:22:58,290 --> 00:23:01,412 しかし、Haskellはすることを決めました 中置演算子を使用しています。 414 00:23:01,412 --> 00:23:03,120 したがって、これらはのいくつかであります そのカスタムのもの 415 00:23:03,120 --> 00:23:07,770 用に定義されています HaskellではEuterpea DSCL。 416 00:23:07,770 --> 00:23:10,730 だから、これはシーケンシャル組成物でした。 417 00:23:10,730 --> 00:23:16,340 これは、並列合成であり、この 並列合成を切り捨てました。 418 00:23:16,340 --> 00:23:18,710 そして、我々はそれをする必要があります 私たちのドラムマシンと、 419 00:23:18,710 --> 00:23:22,640 我々は最後に使用しますので、 そこにその小さなタプルのオペレータ 420 00:23:22,640 --> 00:23:26,330 沿ってドラムマシンを再生します 私たちのフレールジャックの歌で。 421 00:23:26,330 --> 00:23:28,650 そして、我々のドラムマシンです 無限になるだろう。 422 00:23:28,650 --> 00:23:30,920 それだけで永遠に再生されます。 423 00:23:30,920 --> 00:23:32,692 しかし、フレールジャックの歌ではありません。 424 00:23:32,692 --> 00:23:33,510 それはそんなに長くはありません。 425 00:23:33,510 --> 00:23:36,610 それだけで数小節です。 426 00:23:36,610 --> 00:23:43,030 だから、としてドラムマシンを停止する必要があります 短い音楽的価値が来るとすぐに 427 00:23:43,030 --> 00:23:43,700 最後に。 428 00:23:43,700 --> 00:23:46,980 そして、それは演算子をinfixed それと超便利です。 429 00:23:46,980 --> 00:23:50,090 >> 好きな中置記法 これは、一種のいいです 430 00:23:50,090 --> 00:23:57,095 あなたのような機能を持っていると言うので、 整数の除算を与える見積もり、 431 00:23:57,095 --> 00:24:01,010 何かによるxのelse-- 申し訳ありませんが、それはaとbである必要があります。 432 00:24:01,010 --> 00:24:04,740 あなたはBの引用として、それを書くことができます。 433 00:24:04,740 --> 00:24:09,670 だからput--要素である場合、 これの別の例。 434 00:24:09,670 --> 00:24:14,730 あなたが入れた場合、いくつかのリスト内の要素x、 それがバッククォートで、あなたはそれを使用することができます。 435 00:24:14,730 --> 00:24:20,400 それがシンボルではないにもかかわらず、 プラスまたはマイナスまたは時間のような、 436 00:24:20,400 --> 00:24:24,630 あなたはの名前を使用することができます バッククォートでそのような関数 437 00:24:24,630 --> 00:24:27,045 かなりクールです中置演算子として。 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS:繰り返しますが、これは 実際には糖衣構文、すべての。 439 00:24:29,670 --> 00:24:32,310 それは言語のコアに影響を与えません。 440 00:24:32,310 --> 00:24:37,440 >> STEPHENクルーソン:だから我々はここを参照してください 私たちのフレールジャックの歌の最後のフレーズ、 441 00:24:37,440 --> 00:24:45,740 私はいくつかの小さなコードを果たしましたか 並列合成を使用して三分の 442 00:24:45,740 --> 00:24:46,240 オペレーター。 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 これは、いくつかの別の言い方であります 我々だけ言ってきたものを。 445 00:24:54,950 --> 00:24:59,986 だから、機能をマッピングすることができます リスト上の1つの引数の。 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS:ここでも、参照 Haskell--入門教科書 447 00:25:02,860 --> 00:25:04,680 その中でこのすべてを持っています。 448 00:25:04,680 --> 00:25:07,790 >> STEPHENクルーソン:だから、ここではかなりです ステップシーケンサーのキーライン 449 00:25:07,790 --> 00:25:12,820 我々は、使用して見てみましょう リスト内包。 450 00:25:12,820 --> 00:25:17,810 そして、私たちはここを参照してください、その要素であります バック引用符で囲まれた固定オペレータインチ 451 00:25:17,810 --> 00:25:23,030 このため、xがリストの要素である場合 Xは、次に我々は、PERC関数を呼び出します。 452 00:25:23,030 --> 00:25:25,100 だから、PERCは、単にパーカッション機能です。 453 00:25:25,100 --> 00:25:30,200 それはだ、いくつかの値pを取ります すべての有界集合の一部 454 00:25:30,200 --> 00:25:35,310 別のパーカッション・サウンド 私たちは前のスライドで見たこと、 455 00:25:35,310 --> 00:25:38,840 そしてそれはことができます 四分音符の継続時間。 456 00:25:38,840 --> 00:25:43,190 そうでなければそれをQNRを与え、QNR ちょうど四分音符の残りです。 457 00:25:43,190 --> 00:25:44,970 >> これは素敵な何かを構築しています。 458 00:25:44,970 --> 00:25:52,110 我々は、要素のリストを持っている、そして 私たち1からいくつかのリストをループよ 459 00:25:52,110 --> 00:25:54,540 私たちのステップシーケンサーの最大値に設定します。 460 00:25:54,540 --> 00:25:58,290 そして、我々は特定のI中にいるとき 最大値に1をそのリスト、 461 00:25:58,290 --> 00:26:02,970 その私はこれのメンバーである場合 この機能で作成されたセット、 462 00:26:02,970 --> 00:26:06,040 よく、我々はそれを回します パーカッションノートへ。 463 00:26:06,040 --> 00:26:10,960 そうでなければ、私たちは残りの部分を、果たしています 言うことです、私たちは沈黙します。 464 00:26:10,960 --> 00:26:16,050 そして、私たちはここでその中を見ることができます このリスト内包構文、 465 00:26:16,050 --> 00:26:20,030 Xはこれにより移入され リスト構築1 466 00:26:20,030 --> 00:26:22,462 シーケンサのグローバルなサイズに。 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS:うん。 468 00:26:23,295 --> 00:26:26,340 基本的な構文 リストの内包表記であります 469 00:26:26,340 --> 00:26:30,810 関連するブラケット、値 いくつかの変数、バー、 470 00:26:30,810 --> 00:26:34,260 変数の可能な値 自体は、ブラケットを閉じました。 471 00:26:34,260 --> 00:26:38,545 そして、あなたが設定ビルダー表記を行ってきた場合 数学のクラスの任意の並べ替えで、 472 00:26:38,545 --> 00:26:45,999 あなたは、このような2N設定している場合があります なお、nはまたはであり、nはZです。 473 00:26:45,999 --> 00:26:48,290 この表記thing--同様 示唆的であることを意味します 474 00:26:48,290 --> 00:26:49,630 その数学的表記の。 475 00:26:49,630 --> 00:26:51,880 STEPHENクルーソン:そして、あなたがすることができます 複数の述語を適用します 476 00:26:51,880 --> 00:26:56,250 リスト内や、複数のフィルタ かなりいいです理解、。 477 00:26:56,250 --> 00:27:01,800 代数types--たち ここに長く残ることはありません。 478 00:27:01,800 --> 00:27:04,840 良い概念ではありません ハスケルまたは良い、明らかな概念 479 00:27:04,840 --> 00:27:10,720 取るためにどのように、たとえば、デフォルトの 関数か何かへのパラメータ。 480 00:27:10,720 --> 00:27:13,370 Pythonでは、これは非常に簡単です。 481 00:27:13,370 --> 00:27:18,460 あなただけに等しいと言うことができます 関数の宣言、 482 00:27:18,460 --> 00:27:21,420 デフォルト値の ケースのいずれも供給されません。 483 00:27:21,420 --> 00:27:27,010 >> Haskellでは、あなたは多分できました 多分入力多分使用し、 484 00:27:27,010 --> 00:27:32,190 これはどちらか何も取りません または型の値だけ。 485 00:27:32,190 --> 00:27:38,630 そこで、ドラムマシンでこれを悪用します 私たちは任意のボリュームを与えることができるようにします 486 00:27:38,630 --> 00:27:40,730 ドラム・パートのそれぞれにパラメータを設定します。 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 だから、私たちにEQを持っていることの方法を提供します または特定のチャンネルの音量。 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS:で 他のHaskellの例、 490 00:27:56,440 --> 00:28:00,450 あなたは多分に使用する表示されることがあります 失敗する可能性があります機能。 491 00:28:00,450 --> 00:28:03,470 これは一般的なものです。 492 00:28:03,470 --> 00:28:07,010 >> STEPHENクルーソン:そして、あなたが供給することができます デフォルトとして、エラーメッセージのいくつかの並べ替え。 493 00:28:07,010 --> 00:28:11,020 そして、それはときに特に便利です あなたはHaskellでのI / Oをやっています。 494 00:28:11,020 --> 00:28:12,044 それはトリックすることができます。 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS:Orの 同様の例、と思います 496 00:28:13,960 --> 00:28:17,460 分裂を伴う機能の 0であるかもしれないパラメータの。 497 00:28:17,460 --> 00:28:20,020 そして、その関数ができました 多分何でも返します。 498 00:28:20,020 --> 00:28:22,802 0ノー部門がないのであれば、 それだけで何を返します。 499 00:28:22,802 --> 00:28:25,010 そして、除算がある場合 0、それは何も表示されません 500 00:28:25,010 --> 00:28:26,910 エラーシグナル伝達の方法として。 501 00:28:26,910 --> 00:28:30,330 の1つの結果ので、 Haskellの非常に厳密な型指定 502 00:28:30,330 --> 00:28:34,100 何real--がないということです 例外は、基本的には、厄介です 503 00:28:34,100 --> 00:28:36,160 エラー処理が厄介です。 504 00:28:36,160 --> 00:28:39,440 そして、これは非常に一つであります それを行うための一般的な方法。 505 00:28:39,440 --> 00:28:42,990 >> STEPHENクルーソン:だから今、私たちが得ます 別の心曲げものに 506 00:28:42,990 --> 00:28:49,160 パターンであるハスケル、約 マッチング機能の定義。 507 00:28:49,160 --> 00:28:53,390 私は最後のスライドでお見せしました ステップシーケンスの宣言 508 00:28:53,390 --> 00:28:58,170 多分値を取った機能、 その後のint、intの、リスト、 509 00:28:58,170 --> 00:29:03,850 その後のシーケンスを返します。 音楽の値があり、注釈付き 510 00:29:03,850 --> 00:29:05,375 ピッチとボリュームの両方を持ちます。 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> だから、これらの3つの引数をすることができます 以下の方法でマッチしたパターン。 513 00:29:11,820 --> 00:29:16,660 そして、私たちは常に確認したいです 最初のベースケースまたは終了ケースを行います。 514 00:29:16,660 --> 00:29:19,690 そして、これらのアンダースコア ただ解釈することができます 515 00:29:19,690 --> 00:29:22,340 あります任意の値を意味します。 516 00:29:22,340 --> 00:29:26,580 我々は、コールを取得するのであればシーケンスに進みます いくつかの値が、他のいくつかの値を使用して、 517 00:29:26,580 --> 00:29:32,210 私たちが望むものと、空のリスト、 戻るにはちょうど沈黙、残り0です。 518 00:29:32,210 --> 00:29:35,110 >> その代わりにその 空のリストまたは0であること、 519 00:29:35,110 --> 00:29:38,150 私たちがしているので、それは、残り0です 音楽の種類を扱います、 520 00:29:38,150 --> 00:29:43,230 音楽の空のリスト タイプは、ちょうどなし期間の残りの部分です。 521 00:29:43,230 --> 00:29:45,680 それは音楽ません。 522 00:29:45,680 --> 00:29:51,460 私たちはステップを得ればそして、我々が見ます ボリューム引数のVを有する配列、 523 00:29:51,460 --> 00:29:57,290 念の楽器用のp 引数、およびその後のxのリスト。 524 00:29:57,290 --> 00:29:58,360 >> その後、我々はいくつかのものを行います。 525 00:29:58,360 --> 00:30:01,290 特に、我々が適用されます。 このリスト内包、 526 00:30:01,290 --> 00:30:05,700 そして、我々はいくつかを実行します 多分値の操​​作 527 00:30:05,700 --> 00:30:10,050 ように数値にそれをオンにします それは、その後に列挙し、使用することができ 528 00:30:10,050 --> 00:30:12,300 楽器を選択します。 529 00:30:12,300 --> 00:30:16,730 再び、これは少なく ビット故意inconcise 530 00:30:16,730 --> 00:30:20,580 ただ、すべての変なものを表示します あなたのようにHaskellで行うことができます 531 00:30:20,580 --> 00:30:23,170 あなた自身の時間にそれを見てみましょう。 532 00:30:23,170 --> 00:30:23,802 >> 大丈夫。 533 00:30:23,802 --> 00:30:26,010 だから我々は最終的に取得しています 私たちが行うために着手した何を、 534 00:30:26,010 --> 00:30:28,820 これは一部のコンピュータで音楽を作ることです。 535 00:30:28,820 --> 00:30:32,250 だから我々はしようとするつもりです フレールジャックの曲を作ります。 536 00:30:32,250 --> 00:30:35,220 だから、どのように多くがあります フレールジャックでフレーズ? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 四。 539 00:30:39,680 --> 00:30:40,460 グレート。 540 00:30:40,460 --> 00:30:42,490 そして、何の素敵なのはということです 彼らはすべての繰り返しです 541 00:30:42,490 --> 00:30:46,990 2である回の同量。 542 00:30:46,990 --> 00:30:50,730 >> だから我々は、4つのフレーズを持っています それぞれを2回繰り返しました。 543 00:30:50,730 --> 00:30:53,590 特に、彼らはラウンドにしています。 544 00:30:53,590 --> 00:30:55,340 そして、多くがあります 実装するための多くの方法 545 00:30:55,340 --> 00:30:57,520 行うには楽しいことができたラウンド。 546 00:30:57,520 --> 00:31:00,260 私はそれをやりました ここではかなり簡単な方法、 547 00:31:00,260 --> 00:31:05,760 これだけの行をconstruct--することです 機能は、音楽の値のリストを取り 548 00:31:05,760 --> 00:31:10,390 そして、逐次合成に変換します そのシーケンシャル組成物を適用することによって 549 00:31:10,390 --> 00:31:13,000 オペレーター。 550 00:31:13,000 --> 00:31:19,540 >> そして、私は別のパーツを遅らせます 作ることによって、それらは残りで始まります。 551 00:31:19,540 --> 00:31:22,770 だから私は2つのメジャーの残りの部分で開始し、 して、4小節の残りの部分、 552 00:31:22,770 --> 00:31:26,160 して、6の残りの部分 対策、およびその後のラウンド 553 00:31:26,160 --> 00:31:32,290 我々はすべてこの歌を知っているように、動作します。 554 00:31:32,290 --> 00:31:37,180 我々は2つ​​の注釈を参照しますか、 音楽値の変更 555 00:31:37,180 --> 00:31:43,150 この連続的に含まれていること 楽曲構成要素の配置。 556 00:31:43,150 --> 00:31:44,810 我々は、追加のボリュームを持っています。 557 00:31:44,810 --> 00:31:48,960 これは、注釈を付けるための機能です 特定のボリュームで音楽。 558 00:31:48,960 --> 00:31:51,320 これは良い例です MIDI信号走行 559 00:31:51,320 --> 00:31:57,510 の0から127まで、7ビット 実施することができる情報。 560 00:31:57,510 --> 00:32:00,650 >> そしてthen--我々は非常にそれを見ました 簡単に、しかし、一般的なMIDI 561 00:32:00,650 --> 00:32:02,310 すべての異なるインストゥルメントのリスト。 562 00:32:02,310 --> 00:32:04,450 そして、彼らの全体の多くはありません。 563 00:32:04,450 --> 00:32:11,230 あなたは、デジタル・オーディオ・ワークステーションを使用する場合は、 AbletonのライブやPro Toolsのような、 564 00:32:11,230 --> 00:32:17,560 信じられないほど広い範囲があります シンセサイザーやVSTインストゥルメントの。 565 00:32:17,560 --> 00:32:21,510 しかし、MIDI規格のみ いくつかの、または数十されています。 566 00:32:21,510 --> 00:32:22,799 そして、それらのいくつかは面白いです。 567 00:32:22,799 --> 00:32:25,840 私たちがプレイした場合、私はそれは楽しいだろうと思いました 楽器MIDI機器 568 00:32:25,840 --> 00:32:30,550 ヘリコプター、その後、 ラウンドを通して次のようにして、 569 00:32:30,550 --> 00:32:37,980 私たちは、その後の、パッドシンセをしました この陳腐リード方形波シンセ、 570 00:32:37,980 --> 00:32:44,240 し、その後、泥を音声であります 私の悪いMIDIに少し不明瞭 571 00:32:44,240 --> 00:32:46,410 シンセサイザーが、彼らは[OK]をクリックします。 572 00:32:46,410 --> 00:32:50,030 >> そして、我々はこのLETを見ます 構文でハスケルから、 573 00:32:50,030 --> 00:32:54,030 し、我々はプレーしています 一緒にすべてのこれらの部品 574 00:32:54,030 --> 00:32:56,265 並列合成演算子を持ちます。 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 そして、我々は、おそらくこれのいくつかを示すことができました。 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 ここでは、コードです。 579 00:33:08,340 --> 00:33:14,960 そして、あなたがC言語で見ることができ、そこだろう 咳払いや設定の多く 580 00:33:14,960 --> 00:33:19,760 あなたの前にテーブルコード このような音楽を作ることができます。 581 00:33:19,760 --> 00:33:22,080 あるいは、他のプログラミング 言語、あなたはおそらくしたいです 582 00:33:22,080 --> 00:33:27,210 のいくつかの並べ替えと対話する必要があります ライブラリやAPIとすべてのものを設定し、 583 00:33:27,210 --> 00:33:28,725 そして、あなたはクリーンアップする必要があると思います。 584 00:33:28,725 --> 00:33:33,810 しかし、ここではHaskellではかつて、私が思うに、あります あなたは信じられないほど、それのこつを得ます 585 00:33:33,810 --> 00:33:35,770 読みやすく、非常に表情豊か。 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 だから、実装があります フレールジャックの。 588 00:33:43,240 --> 00:33:43,740 大丈夫。 589 00:33:43,740 --> 00:33:47,557 今、私たちは、打楽器を追加したいです、 これは少し乱雑です。 590 00:33:47,557 --> 00:33:49,015 それでは、スライドを見てみましょう。 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 だから、大きなアイデアは作ることです リストや部品の束。 593 00:34:00,540 --> 00:34:04,140 これらのロールインマシンでは、そこに 多分8について、一般的でした 594 00:34:04,140 --> 00:34:08,670 10リズムやパーカッションの部分に。 595 00:34:08,670 --> 00:34:10,159 そして技術の束を使用しています。 596 00:34:10,159 --> 00:34:14,889 そして、我々はthese--は使用方法について説明しました 折り目、フィルタ、ラムダ関数、 597 00:34:14,889 --> 00:34:19,429 値を生成するために、リスト上にマッピングされました いくつかの範囲で1〜Rに、Rは、16であります 598 00:34:19,429 --> 00:34:20,699 やシーケンサーで32段階。 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> そして、そのリストの値があるかどう 我々はシーケンサを介して実行しているとして、 601 00:34:29,920 --> 00:34:34,190 以上のそれを実行し、 オーバー、それはそのノートをオンにし、 602 00:34:34,190 --> 00:34:36,060 そしてそのサンプルがトリガされます。 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 ここではすべての異なる奇妙な方法があります 私はノートを生成することを思い付きました。 605 00:34:47,110 --> 00:34:48,940 独自のセミ合計でそれを試してみてください。 606 00:34:48,940 --> 00:34:50,360 それはクールに聞こえるでしょう。 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 許可時間は、我々は、この通過します。 609 00:34:54,690 --> 00:34:59,200 しかし、今、私は推測します 我々は持っているものをデモする必要があります。 610 00:34:59,200 --> 00:35:01,380 のはこれがOKになる期待しましょう​​。 611 00:35:01,380 --> 00:35:02,670 >> だから、これはGHCiのです。 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 そして、我々はファイルをロードします 私はと呼ばれるsong.lhsを持っています、 614 00:35:09,121 --> 00:35:10,620 これは私はあなたを示したファイルです。 615 00:35:10,620 --> 00:35:11,470 [OK]を、素晴らしいです。 616 00:35:11,470 --> 00:35:15,010 コナーは、先に述べたように、 コンパイルされ、それをチェック入力し、 617 00:35:15,010 --> 00:35:18,380 私は簡単に多くのことを呼吸することができます。 618 00:35:18,380 --> 00:35:20,010 それは私に爆破するつもりはありません。 619 00:35:20,010 --> 00:35:22,720 >> 私はあなたに有益な何かを示したいと思いました。 620 00:35:22,720 --> 00:35:25,900 あなたはAを参照してくださいすることができます ロードされたモジュールは、50と呼ばれます。 621 00:35:25,900 --> 00:35:28,240 あなたは、そのモジュールを閲覧することができます。 622 00:35:28,240 --> 00:35:32,092 そして、これはとてもいいです doing--について多分何 623 00:35:32,092 --> 00:35:34,550 あなたがHaskellでやっているではありません ソフトウェア開発と呼ばれます、 624 00:35:34,550 --> 00:35:36,980 しかし、あなたはの多くを行うことができます 自分で楽しいもの。 625 00:35:36,980 --> 00:35:42,410 ワークフローは、本当に素晴らしいです 他の言語の多くと比較して、 626 00:35:42,410 --> 00:35:45,872 あなたは本当にで見ることができるので、 何が起こっているのか読みやすい方法。 627 00:35:45,872 --> 00:35:47,830 だから我々は我々が持っていることを確認 すべてのこれらのフレーズ、これ 628 00:35:47,830 --> 00:35:53,760 我々は、次に、音楽ピッチのリストであり、かつ より大きなものにこれらを構築​​、 629 00:35:53,760 --> 00:35:55,220 どの楽曲です。 630 00:35:55,220 --> 00:35:58,450 これは音楽ユニットです。 631 00:35:58,450 --> 00:36:05,545 そして、我々はこのすべてを再生することができます プレイの音楽と呼ばれる機能を持ちます。 632 00:36:05,545 --> 00:36:09,040 あなたはここでそれをダウン見ることができます。 633 00:36:09,040 --> 00:36:11,310 どれだけ果たしています。 634 00:36:11,310 --> 00:36:15,040 >> 私は約話をしなかったsay--必要があります どこでもだこのドル記号。 635 00:36:15,040 --> 00:36:17,980 ドル記号は、別の中置演算子です。 636 00:36:17,980 --> 00:36:22,500 しかし、それは最も低い優先順位を持ちます 効果的に任意の演算子の 637 00:36:22,500 --> 00:36:24,960 上のすべてを意味します ドル記号の左側 638 00:36:24,960 --> 00:36:28,460 ドル記号の右に、 我々はそれの前に評価取得するつもりです。 639 00:36:28,460 --> 00:36:31,430 だから、一種の別のようなものです 括弧を追加する方法。 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS:それは基本的にです 関数合成。 642 00:36:36,220 --> 00:36:40,026 そして、それはあなたがあればhave--ていないことを保証します あなたは、機能面や中置のいずれかを持っています 643 00:36:40,026 --> 00:36:42,900 いずれかの側の事業者、彼らはしません それを越え関連付けて、あなたを与えます 644 00:36:42,900 --> 00:36:46,030 予期しない結果。 645 00:36:46,030 --> 00:36:49,790 >> STEPHENクルーソン:だから私たちはcan-- それを使用して、我々は呼び出すことができます。 646 00:36:49,790 --> 00:36:51,415 まず、ドラムなしでそれを再生します。 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 それは、ヘリコプターです MIDIヘリコプター。 649 00:37:03,170 --> 00:37:05,495 >> [音楽再生] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 方形波があります。 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 音声にじみ出ます。 654 00:37:25,490 --> 00:37:27,630 そして、あなたは本当にこの野生行くことができます。 655 00:37:27,630 --> 00:37:30,872 私はかなり単純なものを選びました、 私が知っていたので、私はオフにかまないようにしてください 656 00:37:30,872 --> 00:37:31,830 私はかむことができより多くの。 657 00:37:31,830 --> 00:37:36,460 ただ、非常に単純に保ちます 主なアイデアを表示します。 658 00:37:36,460 --> 00:37:39,952 しかし、私のような、私たちがしました これにいくつかのドラムを追加しました。 659 00:37:39,952 --> 00:37:41,910 これはちょうどので、 少し不可解な、 660 00:37:41,910 --> 00:37:45,790 私は使用しませんでした ドラム・パートの名前、 661 00:37:45,790 --> 00:37:49,490 彼らはしているので、私はthem--マッピングされました その列挙クラスの一部、 662 00:37:49,490 --> 00:37:51,500 私はint型にそれらをマッピングしました。 663 00:37:51,500 --> 00:37:53,120 一つは、バスドラムのようなものです。 664 00:37:53,120 --> 00:37:54,370 ゼロは同様です。 665 00:37:54,370 --> 00:37:56,000 セブンは高い帽子です。 666 00:37:56,000 --> 00:38:00,920 そして、ダウンここでの場所 関数は、もう少しランダム入手します 667 00:38:00,920 --> 00:38:02,100 これらは、コンガドラムのようなものです。 668 00:38:02,100 --> 00:38:08,360 >> ですから、about--多分思われる場合 ドラムマシンを実装するための楽しい方法 669 00:38:08,360 --> 00:38:12,830 非常に整然と使用することです あなたのバスドラム上のパターン。 670 00:38:12,830 --> 00:38:17,640 だから例えば、上でフィルタリングを バック与えるすべてとリスト 671 00:38:17,640 --> 00:38:20,590 それは、モジュール04を撮影しています1。 672 00:38:20,590 --> 00:38:27,190 だから私は、1、5、9、13、17--ので、これを取得します すべての小節の1拍目です。 673 00:38:27,190 --> 00:38:32,860 >> そして、これは同じです 事は、2つのステップの上にシフトしました。 674 00:38:32,860 --> 00:38:33,850 だから、風変わりです。 675 00:38:33,850 --> 00:38:37,480 だから、これは次のようになります ハイハットのようなもの。 676 00:38:37,480 --> 00:38:39,640 そして再び、ダウンここでは、 それは、少しランダムです 677 00:38:39,640 --> 00:38:41,080 我々はコンガドラムをやっているので。 678 00:38:41,080 --> 00:38:44,180 そして私も、ここでいくつかのマラカスを下に持っています。 679 00:38:44,180 --> 00:38:50,280 >> だから私は、プレイドラムマシンを呼び出すことができ、 それは永遠に行くだろう、 680 00:38:50,280 --> 00:38:53,700 それがアップつかん開始する可能性があります 私のシステムのすべてのメモリ。 681 00:38:53,700 --> 00:38:57,090 だから私は、この関数を呼ぶことにします 、私たちが見るような音楽を再生 682 00:38:57,090 --> 00:39:02,020 切り捨て並列合成を使用 私たちの小さなフレールジャック曲を再生します 683 00:39:02,020 --> 00:39:04,200 この奇妙なドラムマシンと一緒に。 684 00:39:04,200 --> 00:39:06,190 それでは、見てみましょう。 685 00:39:06,190 --> 00:39:10,920 そして、私に向上させるようにしてください すべてのドラム・パートの配置。 686 00:39:10,920 --> 00:39:13,375 ていない私の専門が、私 それをやって多くの楽しみを持っていました。 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [音楽再生] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> もちろん、だから、これがすべてであります 楽しみとして少しありません 691 00:39:56,980 --> 00:40:01,100 我々はそれを変換することができない場合 スコアに非常に多分それ 692 00:40:01,100 --> 00:40:04,650 解釈される可能性 人間の演奏者。 693 00:40:04,650 --> 00:40:06,535 だから私はここでそれを実行されません。 694 00:40:06,535 --> 00:40:07,910 私はすでにファイルを生成しました。 695 00:40:07,910 --> 00:40:10,280 あなたはそこだと見ることができます ドットLilyPondのfile--とこの 696 00:40:10,280 --> 00:40:14,500 の上で、私のセグエになります Connor--ドットMIDIファイル、 697 00:40:14,500 --> 00:40:18,610 そして何ドットのPDFファイルは、 LilyPondのは、最終的に生成されます。 698 00:40:18,610 --> 00:40:23,770 >> しかし、これらはそれらのスクリプトであり、私はよ ちょうど彼らのヘルプオプションでそれらを実行します。 699 00:40:23,770 --> 00:40:28,090 あなたはこれらを取得し、実行している場合で Euterpea、あなたはMIDIファイルを生成することができます。 700 00:40:28,090 --> 00:40:31,160 そして、MIDIファイルから このMIDI 2LYプログラムと、 701 00:40:31,160 --> 00:40:34,930 あなたはリリーを生成することができます 池ファイル、およびその後 702 00:40:34,930 --> 00:40:37,974 スコアのPDFを生成することができます。 703 00:40:37,974 --> 00:40:39,390 そして、私たちはこれを見てを取る必要があります。 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 だから、コナーはおそらく表示されます あなたはどのように、この優れた注釈を付けます 706 00:40:55,140 --> 00:41:02,570 これはフレールジャックなどであります Euterpeaで私によって生成されます。 707 00:41:02,570 --> 00:41:07,300 それはちょうど、Cで私が考え出している必要があります ハックは、それが実際に何があるかアウト。 708 00:41:07,300 --> 00:41:11,090 しかし、それはのためのパイプラインであります あなたはそれでそれを行う方法について説明します。 709 00:41:11,090 --> 00:41:12,950 それでは、LilyPondの詳細をお話しましょう​​。 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS:[OK]を見てみましょう。 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 あなたはあなたのHaskellを学ぶ言及しましたか? 713 00:41:21,419 --> 00:41:22,460 STEPHENクルーソン:そうそう。 714 00:41:22,460 --> 00:41:23,480 チェックアウトあなたのHaskellを学びます。 715 00:41:23,480 --> 00:41:24,410 これは、リソースにあります。 716 00:41:24,410 --> 00:41:26,830 それは私が始めた方法です 学習、それは素晴らしいことです。 717 00:41:26,830 --> 00:41:27,580 ダムはありません学習。 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS:だから、それはオンラインです。 719 00:41:28,829 --> 00:41:34,760 だからという名前の男[聞こえません] learnyouahaskell.com、スペースなし。 720 00:41:34,760 --> 00:41:37,065 文法は病気です。 721 00:41:37,065 --> 00:41:38,690 STEPHENクルーソン:それはあまりにも、図示されたのです。 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS:LilyPondのは、だから何ですか? 723 00:41:39,440 --> 00:41:42,480 これは、宣言型プログラミングです 音楽組版するための言語。 724 00:41:42,480 --> 00:41:45,480 だから、あなたができますdeclarative-- HTMLのようなものを考え、 725 00:41:45,480 --> 00:41:50,900 あなたはHTMLをsaying--ていない場合は どのようにWebブラウザがすべきと言っていません 726 00:41:50,900 --> 00:41:52,180 ページをステップバイステップでレンダリングします。 727 00:41:52,180 --> 00:41:54,096 それはちょうどこれを言っています テキスト形式の記述であります 728 00:41:54,096 --> 00:41:56,100 あなたが望むもののページは次のようになります。 729 00:41:56,100 --> 00:41:59,310 >> そしてそれはまた、プログラムの それがこの言語をコンパイルし、 730 00:41:59,310 --> 00:42:02,300 またはそれは実際にその中を読み、 あなたのための組版を行い、 731 00:42:02,300 --> 00:42:05,570 そして、それはこれらを吐き出します 素晴らしい見て、PDFのスコア。 732 00:42:05,570 --> 00:42:08,250 また、PNG形式または何を得ることができます。 733 00:42:08,250 --> 00:42:10,300 考えるための良い方法 この類推であります 734 00:42:10,300 --> 00:42:16,620 乳液は一種のLillyPondのようであるということです、 しかし、普通の組版のため。 735 00:42:16,620 --> 00:42:20,360 だからではなく、それはありませんof-- 何を参照してくださいWYSIWYG、 736 00:42:20,360 --> 00:42:22,960 たとえば、のような、あなたが得るものです フィナーレである、またはシベリウス、 737 00:42:22,960 --> 00:42:27,430 あなたが入力できるまたはMicrosoft Word、 リアルタイムでリアルタイム、ドラフトもの 738 00:42:27,430 --> 00:42:31,340 そして、瞬時に変更を参照してください。 739 00:42:31,340 --> 00:42:32,140 >> これは、テキストベースにしています。 740 00:42:32,140 --> 00:42:35,290 あなたのをコンパイルする必要が 別のプログラムを使用してスコア 741 00:42:35,290 --> 00:42:37,090 以降PDFファイルを取得します。 742 00:42:37,090 --> 00:42:43,320 これは少し小さいです あなたがしている場合の使用に便利 743 00:42:43,320 --> 00:42:46,520 直接書き込むしようとしています 君がいるとスコアへ 744 00:42:46,520 --> 00:42:48,620 コンピュータ上で構成しようとしています。 745 00:42:48,620 --> 00:42:50,830 しかし、たくさんあり​​ます それのための利点。 746 00:42:50,830 --> 00:42:56,110 一つは、それは、多くの見た目が良くありません LillyPondが実際に可能性があるため 747 00:42:56,110 --> 00:42:58,210 行うには時間がかかります 適切なレイアウトの決定、 748 00:42:58,210 --> 00:43:02,380 持っているシベリウスやフィナーレとは異なり、 そう妥協のアルゴリズムを作るために 749 00:43:02,380 --> 00:43:05,020 彼らが表示されることができること リアルタイムでの事。 750 00:43:05,020 --> 00:43:07,660 >> なぜLilyPond--です コンピュータ・グラフィックスは困難です。 751 00:43:07,660 --> 00:43:10,535 あなたが音楽で何かをやっている場合 あなたがスコアを書きたいです、 752 00:43:10,535 --> 00:43:13,900 次のように記述する必要はありません 自分ですべてアウト 753 00:43:13,900 --> 00:43:19,040 描画する方法で始まります スタッフとどのようにメモ帳を描画します。 754 00:43:19,040 --> 00:43:21,020 これは非常に困難です。 これは、以前に行われています。 755 00:43:21,020 --> 00:43:22,170 あなたは罰金しています。 756 00:43:22,170 --> 00:43:26,200 >> あなたがフィナーレやシベリウスを使用する場合は、 それらの事のためのファイル形式 757 00:43:26,200 --> 00:43:30,180 非常に複雑であり、あなたがすることはできません 本当にプログラムでそれらを使用しています。 758 00:43:30,180 --> 00:43:35,020 あなたはフィナーレとシベリウスを開くことができます そして、PDFとして、自分自身をエクスポートするファイル] 759 00:43:35,020 --> 00:43:37,600 しかし、あなたは本当にすることはできません スクリプトからそれを呼び出します。 760 00:43:37,600 --> 00:43:40,440 LillyPond、あなたが呼び出すことができます それらのスクリプトから。 761 00:43:40,440 --> 00:43:44,397 あなたは簡単に繰り返すことができ 乳液でLillyPond。 762 00:43:44,397 --> 00:43:47,230 私は行くために、その多くの時間を持っています 今これらの技術に、 763 00:43:47,230 --> 00:43:48,321 しかし、彼らは存在しています。 764 00:43:48,321 --> 00:43:50,070 あなたが見たい場合は LillyPond帳に、 765 00:43:50,070 --> 00:43:53,760 それが付属していたプログラムです あなたのLillyPond分布、 766 00:43:53,760 --> 00:43:57,030 それは反復のためです ラテックス中にLillyPond断片 767 00:43:57,030 --> 00:44:00,340 あなたが何かをしたい場合 大きな音楽学の文書のような 768 00:44:00,340 --> 00:44:02,289 例えば例、と。 769 00:44:02,289 --> 00:44:04,580 そして、それはのために良いスキルです あなたは何をやっている場合の生活 770 00:44:04,580 --> 00:44:05,770 音楽だけでなく、CS50と。 771 00:44:05,770 --> 00:44:09,320 私はすべてのためにLillyPondを使用しました 私の組成のプロジェクトの 772 00:44:09,320 --> 00:44:11,880 私は基本的だったので、 高校3年生。 773 00:44:11,880 --> 00:44:13,455 >> そこでここではいくつかの簡単な例です。 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 これは基本的に代表的なものです 難易度の 776 00:44:21,060 --> 00:44:23,481 そのほとんどの人だろう 彼らがしようとしていたそれに直面 777 00:44:23,481 --> 00:44:24,980 単純なプロジェクトのためのLilyPondを使用しています。 778 00:44:24,980 --> 00:44:29,519 この最初のものが始まりです バッハのコラール前奏曲に。 779 00:44:29,519 --> 00:44:31,810 このボトム1は抜粋したものです 自分の作品の一つから、 780 00:44:31,810 --> 00:44:34,650 それは表示するだけであります あなた[聞こえない]のようなもの 781 00:44:34,650 --> 00:44:38,550 同じで複数の行を入れて スタッフ、どのように歌詞undersetting作品。 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 リリック下敷きは非常だものです 合唱曲のためのLilyPondを使用して簡単にできます。 784 00:44:46,110 --> 00:44:48,814 >> それで、その後いくつかの詳細があります ここでは複雑な例。 785 00:44:48,814 --> 00:44:50,980 これらはすべてで行われています LilyPondの彼らは可能です。 786 00:44:50,980 --> 00:44:55,280 この最初の抜粋はからです [聞こえない] [聞こえない]によります。 787 00:44:55,280 --> 00:44:58,860 そして、この[聞こえない]から ソロ低音のための作品 788 00:44:58,860 --> 00:45:03,550 [聞こえない]フルート、 誰がlongtime--が誰ですか 789 00:45:03,550 --> 00:45:07,101 の長年のメンバーでした ここでは音楽部門、私は思います。 790 00:45:07,101 --> 00:45:08,600 私は彼がにオフになくなってどこか分かりません。 791 00:45:08,600 --> 00:45:12,410 しかし、彼はハーバード大学の顧問でした 長い時間のための作曲家協会。 792 00:45:12,410 --> 00:45:13,530 素晴らしい人。 793 00:45:13,530 --> 00:45:16,920 そして、彼は非常に持っているいくつかの音楽を書き込み 複雑な表記ことLillyPond 794 00:45:16,920 --> 00:45:20,500 それにもかかわらず、非常にうまく処理することができます。 795 00:45:20,500 --> 00:45:26,030 >> だから、あなたに何の意味を与えるために このことの機能はとてもare-- 796 00:45:26,030 --> 00:45:28,960 LillyPondの内部 非常に複雑です。 797 00:45:28,960 --> 00:45:31,060 そして、あなたはそれを使用することができます 長い時間、などの 798 00:45:31,060 --> 00:45:32,520 いくつかの非常に複雑なため 本当になしのもの、 799 00:45:32,520 --> 00:45:34,060 それらについて多くのことを知っています。 800 00:45:34,060 --> 00:45:38,720 基本的な考え方は、上のものです 最低レベル、LillyPondsの原子 801 00:45:38,720 --> 00:45:39,970 ノートはあります。 802 00:45:39,970 --> 00:45:42,761 ノートには含まれてい コンテキストと呼ばれる声。 803 00:45:42,761 --> 00:45:44,510 だから、音声コンテキスト 基本的には対応して 804 00:45:44,510 --> 00:45:47,410 ポリフォニーの一行に。 805 00:45:47,410 --> 00:45:49,410 そして、コンテキストがすることができます 階層的に含まれています 806 00:45:49,410 --> 00:45:53,590 より高いレベルのもので スコアにスタッフを表します 807 00:45:53,590 --> 00:45:56,750 様以上のグループ ピアノのスタッフや聖歌隊のスタッフ、 808 00:45:56,750 --> 00:45:58,990 最終的には、その後、 全体のスコアコンテキスト。 809 00:45:58,990 --> 00:46:02,260 そして、あなたは実際に包含することができます 本の中で複数のスコア。 810 00:46:02,260 --> 00:46:05,770 >> そして、すべてのコンテキストが持っています 添付の彫刻の数。 811 00:46:05,770 --> 00:46:08,340 あなたは目を通す場合 コンテキストの内容 812 00:46:08,340 --> 00:46:14,410 および特定のシンボルまたは印刷 必要に応じてシンボルの特定のクラス。 813 00:46:14,410 --> 00:46:17,840 すべての音声文脈にそう、 [聞こえない]ノートがあります 814 00:46:17,840 --> 00:46:24,270 基本的機能である彫刻家か すべてのノートを書き出し対象 815 00:46:24,270 --> 00:46:26,290 ページの右側の部分にヘッド。 816 00:46:26,290 --> 00:46:29,510 その後裂け目彫刻があります、これは スタッフの裂け目を書き出します。 817 00:46:29,510 --> 00:46:31,517 その後、メトロノームがあります マーク彫刻こと 818 00:46:31,517 --> 00:46:33,100 スコアにメトロノーム記号を書き出します。 819 00:46:33,100 --> 00:46:36,410 そして、これらすべてのはかなりフィット よく階層に。 820 00:46:36,410 --> 00:46:39,500 そして、それは非常に、非常に、非常にです あなたが必要とする、カスタマイズ可能 821 00:46:39,500 --> 00:46:42,880 あなたはそのようなものを取得したい場合。 822 00:46:42,880 --> 00:46:45,730 >> だから、すべてのコンテキストを持っています 異なる属性の多く 823 00:46:45,730 --> 00:46:52,410 あなたはすべてのために変更できること 様々なフォントに間隔から 824 00:46:52,410 --> 00:46:54,942 物事の大きさに選択。 825 00:46:54,942 --> 00:46:56,900 あなたもやってみたい場合 より複雑なもの、 826 00:46:56,900 --> 00:46:59,210 埋め込まれたスクリプト言語があります。 827 00:46:59,210 --> 00:47:01,820 彼らは、スキームを使用します LISPの方言です。 828 00:47:01,820 --> 00:47:04,960 これらはおそらくありません あなたに何かを意味します。 829 00:47:04,960 --> 00:47:06,900 しかし、基本的には、スキーム 別の機能 830 00:47:06,900 --> 00:47:09,500 プログラミング言語、多かれ少なかれ。 831 00:47:09,500 --> 00:47:10,800 >> STEPHENクルーソン:タイインチ 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS:うん。 833 00:47:12,690 --> 00:47:15,390 それは良いタイアップだ、私は考えます。 834 00:47:15,390 --> 00:47:20,150 そして、それは指導言語として使われています、 実際に、マスアベニューダウンMITで。 835 00:47:20,150 --> 00:47:26,590 そして、それはLillyPondのために非常に便利です 様々な技術的な理由のために。 836 00:47:26,590 --> 00:47:30,317 >> だからあなたは、単純なようにしたい場合 条件文に依存しての調整、 837 00:47:30,317 --> 00:47:32,900 example--のために特定あります 会ったの得点の条件、 838 00:47:32,900 --> 00:47:36,495 に変更を加えます レイアウトやその後whatnot-- 839 00:47:36,495 --> 00:47:37,620 これらの施設があります。 840 00:47:37,620 --> 00:47:38,667 彼らは複雑です。 841 00:47:38,667 --> 00:47:40,250 だからここに非常に単純なコードサンプルです。 842 00:47:40,250 --> 00:47:43,810 それは5行です。 843 00:47:43,810 --> 00:47:46,120 基本的に、私は2つのスタッフを定義しています。 844 00:47:46,120 --> 00:47:46,904 それは3/4であります。 845 00:47:46,904 --> 00:47:48,695 最初のスタッフが持っています テンポマークが取り付けられ、 846 00:47:48,695 --> 00:47:51,110 それは実際に起こっています スコア全体へ行くために、 847 00:47:51,110 --> 00:47:54,960 なぜならテンポマーク スコアレベルです。 848 00:47:54,960 --> 00:47:59,044 メトロノームマークの彫刻家 コンテキストを獲得するために装着されています。 849 00:47:59,044 --> 00:48:01,460 異なるキーがあり、 [聞こえない]彫刻家のため 850 00:48:01,460 --> 00:48:02,710 スタッフに取り付けられています。 851 00:48:02,710 --> 00:48:04,441 あなたが実際に行うことができます。 852 00:48:04,441 --> 00:48:06,190 私が書いたサンプルです 実際にCメジャーで、 853 00:48:06,190 --> 00:48:07,990 それだけにです あなたが持つことができる実証 854 00:48:07,990 --> 00:48:09,570 別のスタッフで異なるキー。 855 00:48:09,570 --> 00:48:15,710 そして、基本的な構文は、あなたが書いています E、F、G、何と名前をメモします。 856 00:48:15,710 --> 00:48:18,910 あなたが臨時記号をしたい場合は、 あなたはISまたはESサフィックス。 857 00:48:18,910 --> 00:48:22,640 これはオランダからのものです 音楽学の規則。 858 00:48:22,640 --> 00:48:28,290 >> そしてオクターブ跳躍を行うには、あなたが使用する必要があります これらの目盛り、コンマやアポストロフィ。 859 00:48:28,290 --> 00:48:30,580 相対ちょうど手段 あなたがノートを持っているものは何でも、 860 00:48:30,580 --> 00:48:34,080 それは自動的にplaecなります 以前のものに最も近いオクターブ。 861 00:48:34,080 --> 00:48:37,624 そして、あなたはより多くをジャンプしたい場合は fifth--は、第5または第more--言います 862 00:48:37,624 --> 00:48:39,165 あなたは[聞こえない]を使用する必要があります。 863 00:48:39,165 --> 00:48:42,580 しかし、そうでなければ、あなたがする必要はありません 一つ一つの音符のオクターブを指定します。 864 00:48:42,580 --> 00:48:46,130 >> そして、相対C、プライムと、 Cは、あなただけの中央のCを指定します 865 00:48:46,130 --> 00:48:48,630 ベースC、特に最初のノート。 866 00:48:48,630 --> 00:48:55,020 次に、整理、これらのスタッフを持っています これら二つの声や音楽のサンプルを、 867 00:48:55,020 --> 00:48:56,730 あなたはスコアを持っています。 868 00:48:56,730 --> 00:48:58,440 そして、それは次のようになります。 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> あなたは、時間を取りたい場合 LillyPondのサンプルをコピーします 871 00:49:05,380 --> 00:49:07,530 以前のコード ここで下にスライドし、あなた 872 00:49:07,530 --> 00:49:09,030 LillyPond自分自身でそれを書くことができます。 873 00:49:09,030 --> 00:49:11,280 私たちは何かを持って知っています それは次のようにたくさん見えます。 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 だから、別の技術があります 維持と呼ばれる音楽のXML 876 00:49:19,610 --> 00:49:22,030 全く異なる人々による。 877 00:49:22,030 --> 00:49:28,150 XMLはテキストデータstructure--私です データが言うstructure--言うべきではありません 878 00:49:28,150 --> 00:49:29,580 のメタファーマップソート。 879 00:49:29,580 --> 00:49:33,800 そして、それは保持するように設計されています 階層データは非常によく。 880 00:49:33,800 --> 00:49:37,050 HTMLは、例えば、XMLの一種です。 881 00:49:37,050 --> 00:49:41,090 彼らので、そして、あなたはXMLを伝えることができます すべての角括弧と角度を持っていました 882 00:49:41,090 --> 00:49:44,700 ブラケットスラッシュ記号 すなわち、データフィールドを示します。 883 00:49:44,700 --> 00:49:47,390 >> 私は、コードを持っていません 音楽XMLの例。 884 00:49:47,390 --> 00:49:50,450 あなたはそれを自分で見つけることができます。 885 00:49:50,450 --> 00:49:53,735 基本的には、理由はあなたがお勧めします 中間段階としてXMLを使用します 886 00:49:53,735 --> 00:49:55,980 最初にすべての、それはだ、です 交換フォーマット 887 00:49:55,980 --> 00:50:02,301 基本的に私が言うべきではないevery--用 すべてのが、異なるスコアをたくさん 888 00:50:02,301 --> 00:50:02,800 作家。 889 00:50:02,800 --> 00:50:04,966 あなたが音楽で書くのであれば XMLだけでなく、LillyPondでき 890 00:50:04,966 --> 00:50:08,080 このauxilaryの助けを借りてそれを読みます プログラムは、LYに音楽XMLと呼ばれます 891 00:50:08,080 --> 00:50:11,360 だけでなく、フィナーレを読むことができます それは、Sibeliusはそれを読むことができます。 892 00:50:11,360 --> 00:50:14,770 どのようにあなたの内部オブジェクトに応じて 階層は、音楽を表現するために働きます 893 00:50:14,770 --> 00:50:18,820 書き出すためにそれが簡単になります 音楽XMLへLillyPondより 894 00:50:18,820 --> 00:50:22,410 ちょうど音楽のXMLに依存しています LYへの変換を行います。 895 00:50:22,410 --> 00:50:24,282 >> 私は[聞こえない]音楽のXMLを持っているとは思いません。 896 00:50:24,282 --> 00:50:25,490 STEPHENクルーソン:それはありません。 897 00:50:25,490 --> 00:50:26,340 誰かがしかし、それに取り組んでいます。 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS:[OK]をクリックします。 899 00:50:27,090 --> 00:50:31,040 Euterpeaはありません まだ音楽のXML出力機能。 900 00:50:31,040 --> 00:50:35,340 あなたが最終的なプロジェクトのアイデアをしたい場合は、 多分みんなと連絡を取る 901 00:50:35,340 --> 00:50:38,620 スティーブンが知っている、と 彼らはあなたの助けを使用することができます。 902 00:50:38,620 --> 00:50:40,992 >> STEPHENクルーソン:私はそれを愛するだろう。 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS:また、基本的には、 すべてのプログラミング言語 904 00:50:43,450 --> 00:50:46,610 それは、その塩の価値があります 既にXMLライブラリを持っています、 905 00:50:46,610 --> 00:50:51,030 あなたはすべて内部で変換することができます あなたの音楽のいくつかのオブジェクトに 906 00:50:51,030 --> 00:50:54,120 XMLライブラリを書くことができること それは、より少ない必要となる外 907 00:50:54,120 --> 00:50:57,470 あなたの内部構造への変更 何のための音楽はあなたをオブジェクト 908 00:50:57,470 --> 00:51:00,310 それを書くよりも、書きたいです 直接LillyPondであろう。 909 00:51:00,310 --> 00:51:04,380 それからちょうどXMLとしてそれを印刷 あなたの言語のXMLライブラリ、 910 00:51:04,380 --> 00:51:07,260 それはだことを保証れます 構文的に正しいとすべてのもの、 911 00:51:07,260 --> 00:51:08,720 そしてその後LillyPondに変換します。 912 00:51:08,720 --> 00:51:11,060 だから、技術、あなたはしたいかもしれません あなたが何かをやっている場合に見えます 913 00:51:11,060 --> 00:51:11,650 このような。 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [聞こえない]、他 auxilarry技術。 916 00:51:16,370 --> 00:51:21,700 これは基本的にテックワークスです またはLillyPondための技術メーカー。 917 00:51:21,700 --> 00:51:25,380 だから、のヘルプを提供しています テンプレートと構文、 918 00:51:25,380 --> 00:51:28,770 様々な一般的なのために 器具の組合せ。 919 00:51:28,770 --> 00:51:32,780 それはそう見て分割画面を許可します あなたは1つのウィンドウであなたのコードを持つことができます 920 00:51:32,780 --> 00:51:37,350 別ウィンドウでPDFと PDF内の場所をクリックしてください 921 00:51:37,350 --> 00:51:40,650 関連にジャンプします ソースコード内のスポット。 922 00:51:40,650 --> 00:51:45,330 あなたが実際にしている場合、これは、より便利です LillyPondファイルを自分で書くこと 923 00:51:45,330 --> 00:51:47,400 あなたが発生している場合よりも、 それらをプログラム。 924 00:51:47,400 --> 00:51:51,230 しかし、再び、それはです あると便利なもの。 925 00:51:51,230 --> 00:51:51,970 >> グレート。 926 00:51:51,970 --> 00:51:55,860 別resources--私はちょうどよ 非常に迅速にこれを通過します。 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPondています 同社のウェブサイト上の優れたドキュメント。 928 00:52:01,270 --> 00:52:02,270 彼らは、チュートリアルを持っています。 929 00:52:02,270 --> 00:52:03,478 彼らは、構文のリファレンスを持っています。 930 00:52:03,478 --> 00:52:07,010 彼らは、スニペットの数百を持っています 様々な小さなもののために 931 00:52:07,010 --> 00:52:09,930 ヨーヨーは、実証するために行う必要がある場合があります 様々な機能を提供します。 932 00:52:09,930 --> 00:52:12,250 あなたが使用したい場合 スクリプト言語 933 00:52:12,250 --> 00:52:14,740 またはより広範囲にします カスタマイズ、そこです 934 00:52:14,740 --> 00:52:16,730 内部はそのURLで参照します。 935 00:52:16,730 --> 00:52:21,950 あなたは音楽のXMLを使用する場合は、あります そのURL、musicxml.com/tutorial。 936 00:52:21,950 --> 00:52:27,960 >> そして、あなたはスキームを学ぶ必要がある場合 あなたが実際に使用したいので、 937 00:52:27,960 --> 00:52:30,960 LillyPondでスクリプティング施設、 その後、[聞こえない]と呼ばれるがあります 938 00:52:30,960 --> 00:52:32,918 構造化された解釈 コンピュータプログラムの、 939 00:52:32,918 --> 00:52:35,820 これだけでなく、秒です 史上最高のCS教科書written-- 940 00:52:35,820 --> 00:52:39,770 あなたが知りたい場合は、その後私を見つけます 私は最大の1 is--どう思いますか 941 00:52:39,770 --> 00:52:43,580 それはまた、非常に良いことです 適切な言語を紹介。 942 00:52:43,580 --> 00:52:46,630 あなたはより多くを必要としません 最初のいくつかのセクション。 943 00:52:46,630 --> 00:52:47,827 >> そして、それはそれです。 944 00:52:47,827 --> 00:52:48,410 質問は? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> 学生:私はダウンロードすることができます あなたの生成フレールジャック 947 00:52:57,972 --> 00:53:01,050 だから私は自分のiPodにそれを置くことができますか? 948 00:53:01,050 --> 00:53:07,574 >> STEPHENクルーソン:まあ、あなたが書くことができます EuterpeaでいくつかのWAVファイルにアウト。 949 00:53:07,574 --> 00:53:08,490 そして、あなたはコードを持っています。 950 00:53:08,490 --> 00:53:10,000 これはGitHubの上です。 951 00:53:10,000 --> 00:53:15,590 独自のバリエーションを作ります CS50ハイブ心によってフレールジャック。 952 00:53:15,590 --> 00:53:17,095 それは素晴らしいことだ。 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS:他の誰? 954 00:53:18,220 --> 00:53:20,261 STEPHENクルーソン:私たちは、必要 より良いバスドラム、あまりにも。 955 00:53:20,261 --> 00:53:21,935 それは本当に悪いです。 956 00:53:21,935 --> 00:53:26,565 >> 学生:Euterpeaだけでなく、持っています 組成側が、signal-- 957 00:53:26,565 --> 00:53:27,440 STEPHENクルーソン:はい。 958 00:53:27,440 --> 00:53:30,100 実際には、仕事私 ときに私Euterpeaでやりました 959 00:53:30,100 --> 00:53:33,450 this--がありました エールでコースを卒業しています 960 00:53:33,450 --> 00:53:35,900 it--音合成にあった使用しています。 961 00:53:35,900 --> 00:53:39,810 だから、本当にあります 矢印を使用して良い方法 962 00:53:39,810 --> 00:53:46,150 そして我々が見た表記法の一部 信号機能を一緒に構成します。 963 00:53:46,150 --> 00:53:50,610 ほとんどのための具体的には、低音 それらの単純な正​​弦波です。 964 00:53:50,610 --> 00:53:54,240 しかし、あなたはそれらを構成する起動した場合 奇妙なプログラム的な方法で、 965 00:53:54,240 --> 00:54:00,010 あなたはクレイジーサウンドを得ることができます 奇妙なカスケードのような効果、。 966 00:54:00,010 --> 00:54:04,640 あなたは非常にザラザラ作成することができます 変調の多い鳴ります。 967 00:54:04,640 --> 00:54:07,730 >> 私は粒状でプロジェクトを行いました ある合成、 968 00:54:07,730 --> 00:54:12,290 どこかでFMおよびサンプリングの間です。 969 00:54:12,290 --> 00:54:15,230 あなたは、非常に小さく取ります その後少しサンプル、 970 00:54:15,230 --> 00:54:20,440 のいくつかの並べ替えでそれらを組み合わせます 変調器と豊かなサウンドを構築。 971 00:54:20,440 --> 00:54:24,900 また、そのように、物理的なモデリングを行いました 物理学について考えるようにしよう 972 00:54:24,900 --> 00:54:29,410 そして、のようなものの心理 トランペット、および方法を考えます 973 00:54:29,410 --> 00:54:32,320 音が跳ね返るています トランペットのベル 974 00:54:32,320 --> 00:54:35,200 との音響 部屋とモデリング 975 00:54:35,200 --> 00:54:40,195 基本的な発振器です。 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS:本当にありがとうございました。 978 00:54:48,940 --> 00:54:50,140 来ていただきありがとうございます。 979 00:54:50,140 --> 00:54:52,400 そして、私はいつもに喜ん email--によって質問を取ります 980 00:54:52,400 --> 00:54:55,020 connorharris@college.harvard.edu。 981 00:54:55,020 --> 00:54:57,020 >> STEPHENクルーソン:うん。 stephen.krewson@yale.edu。 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 クール。 984 00:55:00,360 --> 00:55:01,667