;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; MMLコンパイラ ; kmmlcompiler コンテストver (03/08/19) ;作者:THAGA (たーが又はさが) ; e-mail thaga@k7.dion.ne.jp ; homepage http://www.h5.dion.ne.jp/~markent ;開発ツール:Hot Soup Processor 2.6 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;※@(アットマーク)でこのファイル内を検索すれば各トピックの先頭に移動できま ;す ;※メモ帳が最大化されており、画面解像度640×480でフォントがFixedsys(デフォル ;ト)のときちょうど画面に収まるようになっています ;@kmmlcompilerとは何か* ; このソフトは、MML と呼ばれる音楽記述用の言語を解釈して、標準MIDIファイルに ;出力するソフトです。限られたサイズの中にそれなりの機能を詰め込んでいます。 ; MML は次のようなものです(このファイルをkmmlcompilerで読みこむとMIDIにする ;ことが出来ます) ;ここから $1 t120 q7l8@12 cdefgab>cdefgab>c $2 q4o6l8@16 c」 ボタンを押すと一回につき数字が+1されます ; 「コンパイル」ボタンでコンパイルを開始します。「再生」ボタンで[出力ファイ ;ル] のファイルを再生します。「停止」で停止してください。 ; なお、MML ファイルをアイコンにドラッグ&ドロップして起動すると、[MMLファイ ;ル]と[出力ファイル]が自動的に入力されます。 ;@OSASKのMMLPLAY形式からの変更点*** ; MMLPLAY より拡張された部分は以下の通りです ; ・@ プログラムチェンジ ; ・v ベロシティ ; ・$ トラック指定 ; 仕様が変更されたのは以下の部分です ; ・MMLPLAY では解釈できない文字をコメント指示子として扱っていたがkmmlcomp ;ilerでは';' だけにした。 ;@MML 文法解説**** ; 以下 は0 及び正の整数を表します。なお、大文字で表記してありますが、小文 ;字でも構いません。 ;・設定系 ; 設定系のコマンドは ; T120 ; の様に記述します。この場合テンポを120 に設定せよという意味になります。数字 ;も含めて間に何も挟まずに一続きに記入してください ; T テンポを設定します。0 の場合や設定しないと120 になります。単位は60秒 ;あたりの四分音符の数です。数を多くすると曲が早く演奏されます。最大値は600000 ;00です。これ以上の値を指定することも可能ですが、意味はありません。 ; O オクターブを設定します。設定しない場合は4 になります。数が大きいほど ;音が高くなります。あまり高い音や低い音は正しく発音されません ; L 音符を書くときに長さを指定しない場合の音符の長さを設定します。4 にす ;ると四分音符、1 にすると全音符になります。0 の場合や設定しない場合は4 になり ;ます。最大値は192 です。それ以上の値を入れても変わりません ; Q 音符を発音する長さの割合を設定します。設定した数字/8の長さで演奏され ;ます。タイの場合まとまっている状態の長さに適用されます。 ; V 音量を設定します。範囲は0 から127 までです。 ; @ 音色を設定します。範囲は1 から128 までです。GM互換音源ならば1 はピア ;ノ、128 はガンショットです。 ; $ トラックの開始地点を指定します。範囲は1 から16までです。それ以外の数 ;字の場合は無視されます。トラックの終了するのは次の$ か、ファイルの終わりまで ;です。トラックナンバーがそのままチャンネルに割り当てられています。そのため、 ;トラック10はリズムパートとなります。 ; > 以降一オクターブ上げます ; < 以降一オクターブ下げます ;・音符系 ; 音符は ; E#2. ; の様に記述します。この場合付点二分音符レのシャープを演奏せよという意味にな ;ります。& を使わない場合はここまでを間に何も挟まずに一続きに記入してください ;。& を使う場合は& でつながった部分全てで一続きとなります ; A〜G それぞれラ、シ、ド、レ、ミ、ファ、ソです。後ろに数字をつけると例えば ;4 なら四分音符、1 なら全音符になります ; R 休符です。後ろに数字をつけると例えば4 なら四分休符、1 なら全休符にな ;ります ; #,+ どちらもその音を半音上げます。必ず数字やピリオドの前に書いてください ; - その音を半音下げます。必ず数字やピリオドの前に書いてください ; . その音の長さを3/2 倍にします ; & 音と音の間に付けてタイを表します ;一続きのコマンドとコマンドの間にある半角スペースと改行及び解釈できない文字は ;無視されます。改行コードはCR,LF,CRLF,LFCR のどれでも認識します。コマンドも音 ;符も書いた順番通りに処理されます。コマンド系の場合書いたところ以降の音符に対 ;して設定が有効になります ;・コメント ; ; 次の改行(最後の行ではファイルの最後)までをコメントアウトすることを ;表します。 ;@仕様***** ; ・SMFフォーマット: 1(固定) ; ・四分音符分解能 :192 ; ・最大トラック数 : 16 ;@開発日誌****** ;03/08/19(コンテストver.2) ;可変長表現に変換する部分を改良 ;四分音符分解能設定を削除(192に固定) ;どれだけトランスポーズするかを設定するボタンを追加 ;前のトラックでタイを使っていたとき、次のトラックで休符を使ったとき音の長さが ;おかしくなるバグを修正 ;このファイルそのものをkmmlcompilerで読みこめるようにした ;03/07/17(コンテストver) ;休符が二つ以上続くときのバグ修正。複数トラックに対応し完成 ;03/07/16 ;タイ、ゲートを作った ;03/07/15 ;テンポ設定の処理が出来た。サイズ削減のため可変長表現は28ビットまでの整数しか ;変換できないようにグレードダウン ;03/07/14 ;基本的なMML 解釈部分が出来上がる。ちょっと感動。後はタイとトラックとゲートと ;テンポ… ;03/07/12 ;整数を可変長表現に直す部分が完成 ;(この間長いブランク。期末試験終了後改めて勉強しなおしてコンテストに向けて製 ;作再開) ;03/02/16 ;ようやく鳴らせるMIDIファイルを作ることに成功。偽MML 解析機能搭載 ;02/1X/XX ;kmmlplayに搭載すべく製作開始