# 音楽オブジェクト
* 音楽はプログラムの流れと並行して(スレッドとして非同期に)演奏され、プログラムは演奏の終了を待たずに先に進みます。演奏の終了を待つには「**待つ**」を使います。
* 演奏は内蔵されたMIDI音源を使って演奏されます。外部のMIDI音源などが存在する場合は、編集画面の下部にMIDIボタンが表示され、演奏時に使用される機器を選択できます。
## メロディ
* 音階のある旋律を表します。"ドレミ〜" のように、分かりやすい文字列でメロディを表現します。
* 以下の「作る」以外の例では、「メロディ1」などを作ってから実行してください。
* **作る** : 新しいメロディを作ります。
* (例)「メロディ1」という名前のメロディオブジェクトを作ります。
メロディ1=メロディ!作る。
* (例)「メロディ1」という名前で「"ドレミ〜"」という音符のメロディオブジェクトを作ります。
メロディ1=メロディ!"ドレミ〜" 作る。
* **設定** : 楽器を設定します。
* (例)メロディ1に「オルガン」の楽器オブジェクトを設定します。
メロディ1!(楽器!"オルガン" 作る)設定。
* **追加** : 音符を追加します。音符は文字列とメロディオブジェクトで指定できます。
* (例)メロディ1に「"ドレミ〜"」という音符を追加します。
メロディ1!"ドレミ〜" 追加。
* (例)メロディ2にメロディ1の音符を追加します。
メロディ2!(メロディ1)追加。
* **無音** : 休符を追加します。
* (例)メロディ2に4拍の休符とメロディ\ns1を追加します。
メロディ2!4 無音(メロディ1)追加。
* **繰り返す** : 繰り返したメロディを返します。
* (例)メロディ2にメロディ1を2回繰り返した音符を追加します。
メロディ2!(メロディ1!2 繰り返す)追加。
* **音上げる** : メロディを半音の個数分上げた音階で返します。
* (例)メロディ1の音程を1オクターブ(半音12個分)上げたメロディ2を作ります。
メロディ2=メロディ1!12 音上げる。
* (例)メロディ1の音程を1オクターブ(半音12個分)下げたメロディ2を作ります。
メロディ2=メロディ1!-12 音上げる。
* **演奏** : メロディを演奏します。
* (例)メロディ1を演奏します。
メロディ1!演奏。
* **待つ** : 演奏が終るのを待ちます。
* (例)メロディ1の演奏が終るのを待ちます。
メロディ1!待つ。
* **クリア** : メロディの音符をすべて消します。
* (例)メロディ1の音符をすべて消します。
メロディ1!クリア。
* メロディを示す文字列には、次の表記を使えます。
* ド , レ , ミ , ファ , フ, ソ , ラ , シ ,ど , れ , み , ふぁ , ふ, そ , ら , し, C, D, E, F, G, A, B:
**音階**を表します。
* (例)メロディ1!"ドレミ" 追加。
* **#**: **半音**上げます。直前の音階を半音上げます。
* (例)メロディ1!"ド#レミ" 追加。
* **♭** ('
* (例)メロディ1!"ドレミ♭" 追加。
* **↑**, \kwy{^}^ : **オクターブ**上げます。これ以降の音階が1オクターブ上がります。
* (例)メロディ1に「"ドレミファソラシ^ドレミ"」を追加します。最後の「"ドレミ"」はオクターブ上の音階です。
メロディ1!"ドレミファソラシ^ドレミ" 追加。
* **↓** , **_**: オクターブ下げます。これ以降の音階が1オクターブ下がります。
* (例)メロディ1に「"ド_シラソファミレド"」を追加します。最後の「"ド"」以降はオクターブ下の音階です。
メロディ1!"ド_シラソファミレド" 追加。
* **・**: **休符**
* (例)メロディ1!"ド・レ・ミ" 追加。
* **〜** (**--**): **長音**。前の音を1拍延ばします。
* (例)メロディ1!"ドレミ〜" 追加。
* **.** : 付点。前の音をその半分の長さだけ伸ばします。
* (例)メロディ1!"ドレミ." 追加。
* **&**,1,2,4,8,16: 長さを指定します。"ド4レ8ミ4&8" と書くと、ドは**4分音符**、レは**8分音符**、ミは**付点4分音符**になります。
* (例)メロディ1!"ド4レ8ミ4&8" 追加。
* {...}: **三連符**。3個の音を2拍で演奏します。全体の長さを指定できます。
* (例)メロディ1!"{ドレミ}8" 追加。
## コード
* **和音**を表します。"CCD〜" のような文字列で記述します。
* 以下の「作る」以外の例では、「コード1」などを作ってから実行してください。
* **作る** : 新しいコードを作ります。
* (例)「コード1」という名前のコードオブジェクトを作ります。
コード1=コード!作る。
* (例)「コード1」という名前で「"CCD"」という音符のコードオブジェクトを作ります。
コード1=コード!"CCD" 作る。
* **設定** : 楽器を設定します。
* (例)コード1に「オルガン」の楽器オブジェクトを設定します。
コード1!(楽器!"オルガン" 作る)設定。
* **追加** : 音符を追加します。音符は文字列とコードオブジェクトで指定できます。
* (例)コード1に「"CCD〜"」という音符を追加します。
コード1!"CCD〜" 追加。
* (例)コード2にコード1の音符を追加します。
コード2!(コード1)追加。
* **無音** : 休符を追加します。
* (例)コード2に4拍の休符とコード\ns1を追加します。
コード2!4 無音(コード1)追加。
* **繰り返す** : 繰り返したコードを返します。
* (例)コード2にコード1を2回繰り返したコードを追加します。
コード2!(コード1!2 繰り返す)追加。
* **音上げる** : コードを半音の個数分上げた音階で返します。
* (例)コード1の音程を1オクターブ(半音12個分)上げたコード2を作ります。
コード2=コード1!12 音上げる。
* (例)コード1の音程を1オクターブ(半音12個分)下げたコード2を作ります。
コード2=コード1!-12 音上げる。
* **演奏** : コードを演奏します。
* (例)コード1を演奏します。
コード1!演奏。
* **待つ** : 演奏が終るのを待ちます。
* (例)コード1の演奏が終るのを待ちます。
コード1!待つ。
* **クリア** : 追加したコードをすべて消します。
* (例)コード1のコードをすべて消します。
コード1!クリア。
* コードを示す文字列には、次の表記を使えます。
* A , B , C , D , E , F , G: コードを表します。
* (例)コード1!"CCG" 追加。
* m, 7: コードを修飾します。**マイナーコード**を作るときに使います。
* (例)コード1!"CCmC7Cm7" 追加。
* **#**: **半音**上げます。直前の音階を半音上げます。
* (例)コード1!"C#CD" 追加。
* **♭** ('
* (例)コード1!"CCD♭" 追加。
* **↑**, \kwy{^}^ : **オクターブ**上げます。これ以降の音階が1オクターブ上がります。
* (例)コード1に「"C^CD"」を追加します。最後の「"CD"」はオクターブ上の音階です。
コード1!"C^CD" 追加。
* **↓** , **_**: オクターブ下げます。これ以降の音階が1オクターブ下がります。
* (例)メロディ1に「"C_CD"」を追加します。最後の「"CD"」はオクターブ下の音階です。
コード1!"C_CD" 追加。
* **・**: **休符**
* (例)コード1!"C・C・D" 追加。
* **〜** (**--**): **長音**。前の音を1拍延ばします。
* (例)コード1!"CCD〜" 追加。
* **.**: 付点。前の音をその半分の長さだけ伸ばします。
* (例)コード1!"CCD." 追加。
* **&**,1,2,4,8,16: 長さを指定します。"C4D8E4&8" と書くと、Cは**4分音符**、Dは**8分音符**、Eは**付点4分音符**になります。
* (例)コード1!"C4D8E4&8" 追加。
* {...}: **三連符**。3個の音を2拍で演奏します。全体の長さを指定できます。
* (例)コード1!"{CDE}8" 追加。
## ドラム
* ドラム楽器の演奏を表します。"ドツタツ" のように、分かりやすい文字列でリズムを表現します。
* 楽器を設定せず、ドラムオブジェクトで演奏してください。単独で演奏できるほか、
**バンド**オブジェクトのメンバーとして他の楽器などと同時に演奏できます。
* 以下の「作る」以外の例では、「ドラム1」などを作ってから実行してください。
* **作る** : 新しいドラムを作ります。
* (例)「ドラム1」という名前のドラムオブジェクトを作ります。
ドラム1=ドラム!作る。
* **追加** : 音符を追加します。音符は文字列とドラムオブジェクトで指定できます
* (例)ドラム1に「"ドツタツ"」という音符を追加します。
ドラム1!"ドツタツ" 追加。
* (例)ドラム2にドラム1の音符を追加します。
ドラム2!(ドラム1)追加。
* **無音** : 休符を追加します。
* (例)ドラム1に4拍の休符を追加します。
ドラム1!4 無音。
* **繰り返す** : 繰り返したドラムを返します。
* (例)ドラム2にドラム1を2回繰り返した音符を追加します。
ドラム2!(ドラム1!2 繰り返す)追加。
* **演奏** : ドラムを演奏します。
* (例)ドラム1を演奏します。
ドラム1!演奏。
* **待つ** : 演奏が終るのを待ちます。
* (例)ドラム1の演奏が終るのを待ちます。
ドラム1!待つ。
* **音量** : 音の大きさを設定します。値は0〜127で、標準の大きさは95です。
* (例)「ドラム1」の音の大きさを「127」に設定します。
ドラム1!127 音量。
* **クリア** : 追加したドラムをすべて消します。
* (例)ドラム1の音符をすべて消します。
ドラム1!クリア。
* **楽器設定** : 音符と楽器の対応を設定します。楽器は楽器名の文字列または楽器番号で指定します。複数の楽器を設定できます。
* (例)ドラム1の「"ド"」を「"手拍子"」という楽器に設定します。
ドラム1!"ド" "手拍子" 楽器設定。
* (例)ドラム1の「"ド"」を「36」番の楽器に設定します。
ドラム1!"ド" 36 楽器設定。
* (例)ドラム1の「"ドタツクチパ"」を、それぞれ「35, 38, 42, 44, 46, 49」番の楽器に設定します。
ドラム1!"ドタツクチパ" 35 38 42 44 46 49 楽器設定。
* ドラムを示す文字列には、次の表記を使えます。楽器の割当は「楽器設定」で変更できます。
* (例)ドラム!作る "ドツタツドツタツドツタツクチパ・" 追加 演奏。
* ド , (ど): バスドラの**半拍**を表します。
* タ , (た): スネアの半拍を表します。
* ツ , (つ): ハイハット(クローズ)の半拍を表します。
* ク , (く): ハイハット(ハーフオープン)の半拍を表します。
* チ , (ち): ハイハット(オープン)の半拍を表します。
* パ , (ぱ): クラッシュシンバルの半拍を表します。
* ン (ん): **長音**。前の拍を半拍長くします。
* ・: 休符。1拍休みます。
* &,1,2,4,8,16: 長さを示します。"タン4タン8タン4&8" と書くと、最初のタンは**4分音符**、次のタンは**8分音符**、最後のタンは**付点4分音符**になります。
* {...}: **三連符**。3個の音を2拍で演奏します。全体の長さを指定できます。
* ドラムの「楽器設定」で使える楽器名と楽器番号には、次のものが使えます。
^番号^名前^番号^名前^番号^名前^
|35| バスドラム 2| 51| ライドシンバル 1| 67| ハイアゴゴ|
|36| バスドラム 1| 52| チャイニーズシンバル| 68| ローアゴゴ|
|37| サイドスティック| 53| ライドベル| 69| カバサ|
|38| スネアドラム 1| 54| タンバリン| 70| マラカス|
|39| 手拍子| 55| スプラッシュシンバル| 71| ショートホイッスル|
|40| スネアドラム 2| 56| カウベル| 72| ロングホイッスル|
|41| ロートム 2| 57| クラッシュシンバル 2| 73| ショートギロ|
|42| クローズハイハット| 58| ヴィブラスラップ| 74| ロングギロ|
|43| ロートム 1| 59| ライドシンバル 2| 75| クラヴェス|
|44| ペダルハイハット| 60| ハイボンゴ| 76| ハイウッドブロック|
|45| ミドルトム 2| 61| ローボンゴ| 77| ローウッドブロック|
|46| オープンハイハット| 62| ミュートハイコンガ| 78| ミュートクイーカ|
|47| ミドルトム 1| 63| オープンハイコンガ| 79| オープンクイーカ|
|48| ハイトム 2| 64| ローコンガ| 80| ミュートトライアングル|
|49| クラッシュシンバル 1| 65| ハイタンバール| 81| オープントライアングル|
|50| ハイトム 1| 66| ロータンバール| | |
## 楽器
* メロディとコードを演奏する楽器です。
* 以下の「作る」以外の例では、「ピアノ1」を作ってから実行してください。
* **作る** : 新しい楽器を作ります。
* (例)「ピアノ1」という名前の楽器オブジェクトを作ります。
ピアノ1=楽器!"ピアノ" 作る。
* **設定** : 演奏するメロディとコードを設定します。
* (例)「ピアノ1」に「メロディ1」のメロディを設定します。
ピアノ1!(メロディ1)設定。
* (例)「ピアノ1」に「コード1」のコードを設定します。
ピアノ1!(コード1)設定。
* **演奏** : 楽器を演奏します。
* (例)「ピアノ1」を演奏します。
ピアノ1!演奏。
* **待つ** : 演奏が終るのを待ちます。
* (例)「ピアノ1」の演奏が終るのを待ちます。
ピアノ1!待つ。
* **音量** : 音の大きさを設定します。値は0〜127で、標準の大きさは95です。
* (例)「ピアノ1」の音の大きさを「127」に設定します。
ピアノ1!127 音量。
* 楽器名と楽器番号は次の表のように対応しています。
* 実行する環境でどの楽器が使えるかは次のプログラムで調べることができます。
m=メロディ!”どれみふぁそらしー”作る。
タイマー!作る 3 間隔 128 回数「|n|
ラベル!(n)作る。
m!(楽器!(n) 作る)設定。
m!演奏。
」実行。
^番号^名前^番号^名前^番号^名前^
|1| グランドピアノ| 44| コントラバス| 87| フィフスリード|
|2| ブライトピアノ| 45| トレモロストリングス| 88| ベースアンドリード|
|3| エレクトリックグランドピアノ| 46| ピチカートストリングス| 89| ニューエイジパッド|
|4| ホンキートンクピアノ| 47| オーケストラハープ| 90| ワームパッド|
|5| エレクトリックピアノ1| 48| ティンパニ| 91| ポリシンセパッド|
|6| エレクトリックピアノ2| 49| ストリングス| 92| クワイアパッド|
|7| ハープシコード| 50| スローストリングス| 93| ボウドパッド|
|8| クラビネット| 51| シンセストリングス1| 94| メタリックパッド|
|9| チェレスタ| 52| シンセストリングス2| 95| ハロパッド|
|10| グロッケンシュピール| 53| コーラス| 96| スウィープパッド|
|11| ミュージックボックス| 54| ボイス| 97| アイスレイン|
|12| ビブラフォン| 55| シンセボイス| 98| サウンドトラック|
|13| マリンバ| 56| オーケストラヒット| 99| クリスタル|
|14| シロフォン| 57| トランペット| 100| アトモスフィア|
|15| チューブラーベル| 58| トロンボーン| 101| ブライトネス|
|16| ダルシマー| 59| チューバ| 102| ゴブリン|
|17| ドローバーオルガン| 60| ミュートトランペット| 103| エコードロップ|
|18| パーカッシブオルガン| 61| フレンチホルン| 104| エスエフ|
|19| ロックオルガン| 62| ブラスセクション| 105| シタール|
|20| チヤーチオルガン| 63| シンセブラス1| 106| バンジョー|
|21| リードオルガン| 64| シンセブラス2| 107| 三味線|
|22| アコーディオン| 65| ソプラノサックス| 108| 琴|
|23| ハーモニカ| 66| アルトサックス| 109| カリンバ|
|24| タンゴアコーディオン| 67| テナーサックス| 110| バグパイプ|
|25| ナイロンギター| 68| バリトンサックス| 111| フィドル|
|26| スティールギター| 69| オーボエ| 112| シャナイ|
|27| ジャズギター| 70| イングリッシュホルン| 113| ティンクルベル|
|28| クリーンギター| 71| バスーン| 114| アゴゴ|
|29| ミュートギター| 72| クラリネット| 115| スティールドラム|
|30| オーバードライブギター| 73| ピッコロ| 116| ウッドブロック|
|31| ディストーションギター| 74| フルート| 117| 太鼓|
|32| ギターハーモニクス| 75| リコーダー| 118| メロディックタム|
|33| アコースティクベース| 76| パンフルート| 119| シンセドラム|
|34| フィンガーベース| 77| ブロウボトル| 120| リバースシンバル|
|35| ピックベース| 78| 尺八| 121| ギターフレットノイズ|
|36| フレットレスベース| 79| ホイッスル| 122| ブレスノイズ|
|37| スラップベース1| 80| オカリナ| 123| シーショア|
|38| スラップベース2| 81| スクウェアリード| 124| バード|
|39| シンセベース1| 82| ソートゥースリード| 125| テレフォン|
|40| シンセベース2| 83| カリオペ| 126| ヘリコプター|
|41| バイオリン| 84| チフリード| 127| アプローズ|
|42| ビオラ| 85| チャランゴ| 128| ガンショット|
|43| チェロ| 86| ボイスリード| | |
## バンド
* 複数の楽器やメロディ/コード/ドラムを演奏します。
* 以下の「作る」以外の例では、「マイバンド」を作ってから実行してください。
* **作る** : 新しいバンドを作ります。
* (例)「ピアノ1」「ドラム1」がメンバーの、「マイバンド」という名前のバンドオブジェクトを作ります。
マイバンド=バンド!(ピアノ1)(ドラム1)作る。
* **追加** : 演奏する楽器/メロディ/コード/ドラムを設定します。
* (例)「マイバンド」に「ピアノ1」という楽器を追加します。
マイバンド!(ピアノ1)追加。
* **演奏** : バンドを演奏します。
* (例)「マイバンド」を演奏します。
マイバンド!演奏。
* **待つ** : 演奏が終るのを待ちます。
* (例)「マイバンド」の演奏が終るのを待ちます。
マイバンド!待つ。
* **クリア** : バンドのメンバー(楽器/メロディ/コード/ドラム)をすべて取り消します。
* (例)「マイバンド」に追加された楽器/メロディ/コード/ドラムのメンバーをすべて取り消します。
マイバンド!クリア。
* **テンポ** : 演奏する速度を指定します。標準は88です。
* (例)「マイバンド」の演奏する速度を「100」に設定します。
マイバンド!100 テンポ。