;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; MMLコンパイラ ; kmmlcompiler for HSPTV (kmmlcompiler ver.7) (08/10/31) ;作者:THAGA (たーが) ; e-mail thaga ta k7 tod dion tod ne tod jp (taを@に、todを.に置き換えてください) ; homepage http://www.h5.dion.ne.jp/~markent ;開発ツール:Hot Soup Processor 3.1 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;※@(アットマーク)でこのファイル内を検索すれば各トピックの先頭に移動できま ;す ;@kmmlcompiler for HSPTVとは何か* ; このソフトは、MML と呼ばれる音楽記述用の言語を解釈して、標準MIDIファイルに ;出力するソフトです。限られたサイズの中にそれなりの機能を詰め込んでいます。 ; MML は次のようなものです(このファイルをkmmlcompilerで読みこむとMIDIにする ;ことが出来ます) ;ここから $1 t120 q7l8@12 cdefgab>cdefgab>c $2 q4o6l8@16 c」 ボタンを押すと一回につき数字が+1されます ; [最適化] ; ランニングステータスルールを利用して作成されるMIDIファイルのサイズ削減を ;図ります。効果はそこそこあります。 ; 「コンパイル」ボタンでエディタに表示されているMMLをコンパイルします。 ;「再生」ボタンでコンパイル結果を再生します。「停止」で停止できます。再生中も ;「コンパイル」を行うことが出来ます。「MIDI保存」ボタンでコンパイルしたものを ;MIDIファイルへ保存します。 ; 音色、音量、移調の変更は次回コンパイル時に適用されます。 ; なお、MML ファイルをウィンドウにドラッグ&ドロップすると、ファイルが ;読み込まれ自動的にコンパイルと再生が行われます。 ;@OSASKのMMLPLAY形式からの変更点*** ; MMLPLAY より拡張された部分は以下の通りです ; ・@ プログラムチェンジ ; ・v メインボリューム ; ・$ トラック指定 ; ・k ベロシティ ; ・m モジュレーション ; ・p パンポット ; ・x エクスプレッション ; 仕様が変更されたのは以下の部分です ; ・MMLPLAY では解釈できない文字をコメント指示子として扱っていたがkmmlcomp ;ilerでは';' だけにした。 ;@MML 文法解説**** ; 以下 は0 及び正の整数を表します。なお、英字は大文字で表記してありますが ;小文字でも構いません。 ;・設定系 ; 設定系のコマンドは ; T120 ; の様に記述します。この場合テンポを120 に設定せよという意味になります。数字 ;も含めて間に何も挟まずに一続きに記入してください ; T テンポを設定します。0 の場合や設定しないと120 になります。単位は60秒 ;あたりの四分音符の数です。数を多くすると曲が早く演奏されます。 ; O オクターブを設定します。設定しない場合は4 になります。数が大きいほど ;音が高くなります。あまり高い音や低い音は正しく発音されないことがあります ; L 音符を書くときに長さを指定しない場合の音符の長さを設定します。例えば ;4 にすると四分音符、1.にすると付点全音符になります。0 の場合や設定しない場合 ;は四分音符になります。最大値は480 です。それ以上の値を入れても変わりません ; Q 音符を発音する長さの割合を設定します。設定した数字/8の長さで演奏され ;、残りの(8-数字)/8は発音しません。タイの場合まとまっている状態の長さに適用さ ;れます ; V メインボリューム(音量)を設定します。 ; 初期値は127で、範囲は0 から127 までです。 ; K ベロシティ(音量)を設定します。 ; 初期値は100で、範囲は0 から127 までです。 ; M モジュレーションを設定します。音色にビブラートがかかります。 ; 初期値は0 で、範囲は0 から127 までです。 ; P パンポット(定位)を設定します。初期値は64、範囲は0 から127 までで、 ; 0 にすると音が左から、127 にすると右からになります。64で中央です。 ; X エクスプレッション(音量)を設定します。 ; 初期値は127で、範囲は0 から127 までです。 ; @ 音色を設定します。範囲は1 から128 までです。数字はGMの音色マップに対 ;応しています ; $ トラックの開始地点を指定します。範囲は1 から16までです。それ以外の数 ;字の場合は無視されます。トラックの終了するのは次の$ か、ファイルの終わりまで ;です。それぞれのトラックにはトラックナンバー−1のチャンネルを割り当てている ;ので、一般的な再生ソフトではリズムパートはトラック10となります。 ; > 以降一オクターブ上げます ; < 以降一オクターブ下げます ;・音符系 ; 音符は ; E#2. ; の様に記述します。この場合付点二分音符レのシャープを演奏せよという意味にな ;ります。& を使わない場合はここまでを間に何も挟まずに一続きに記入してください ;。& を使う場合は& でつながった部分全てで一続きとなります ; CDEFGAB それぞれド、レ、ミ、ファ、ソ、ラ、シです。後ろに数字をつけると ;例えば4 なら四分音符、1 なら全音符になります ; R 休符です。後ろに数字をつけると例えば4 なら四分休符、1 なら全休符にな ;ります ; #,+ どちらもその音を半音上げます。必ず数字やピリオドの前に書いてください ; - その音を半音下げます。必ず数字やピリオドの前に書いてください ; . その音の長さを3/2 倍にします。数字の後に書いてください ; & 音と音の間に付けてタイを表します ;一続きのコマンドとコマンドの間にある半角スペースと改行及び解釈できない文字は ;無視されます。改行コードはCR,LF,CRLF,LFCR のどれでも認識します。コマンドも音 ;符も書いた順番通りに処理されます。コマンド系の場合書いたところ以降の音符に対 ;して設定が有効になります ;・コメント ; ; 次の改行(最後の行ではファイルの最後)までをコメントアウトして解釈し ;ないことを表します。 ;@仕様***** ; ・SMFフォーマット: 1 ; ・四分音符分解能 :480 ; ・最大トラック数 : 16 ;@更新履歴****** ;08/10/31(ver.7) ;・コンテスト応募のため、開発環境をHSP 3.1に変更。HSPTV用アプリにした ;・エディタを付けた ;・ウィンドウへのドラッグアンドドロップに対応 ;・vコマンドで指定するものをベロシティからメインボリュームに変更 ;・k, m, p, xコマンドを追加 ;05/12/(ver.6未リリース) ;・開発環境をHSP3.0に変更した ;・コンパイルした後、再生するようにした ;・qコマンドで8より大きい値を指定してもフリーズしないようにした ;・Windows XPで文字のサイズが意図した大きさに表示されないのを修正 ;・テンポの設定にセットテンポイベントを使うようにした ;・ファイルの末尾にセミコロン(;) があるとバッファのインデックスを超えるのを ;修正 ;・ver.5 で次のファイルまでテンポの設定が引き継がれていたのを修正 ;05/07/24(ver.5差し替え) ;・@ コマンドの挙動をなるべくファイルサイズが小さくなるように改良 ;05/07/23(ver.5差し替え) ;・MML ファイル選択ダイアログで*.mmlだけを表示するように直した ;・> ボタンがver.3以降+2するようになっていたのを修正 ;05/07/22(ver.5) ;・Lコマンドで数字の後にピリオドをつけると発音される時に音長が1.5 倍になる ;ように変更(mmlplayなどと同じ仕様) ;・四分音符解能を480 に変更 ;・細かい改良 ;・複数トラックのMML で先頭に休符があるトラックがある場合正常なMIDIファイルが ;作成できないことがあるのを修正 ;・デルタタイムがある値を超えると(可変長表現が3 バイト以上になるとき)正常なMI ;DIファイルが作成できないのを修正 ;・前のトラックのテンポ設定を次のトラックにも受け継ぐように変更 ;・HSP 2.61で作成した実行ファイルも同梱するようにした ;・MML 文法解説を改訂 ;03/11/07(ver.4) ;・トラックの最後の休符が無効だったのを修正 ;・MMLファイルを開くときにもファイルが使用中で無いかどうか確認するようにした ;・上記の修正でサイズがオーバーしたためカタカナを半角にしました(本当は使いた ;くなかったのですが…) ;03/11/02(ver.3) ;・ランニングステータスルールを利用した最適化を追加 ;・MMLファイル選択ダイアログで全てのファイルを表示するようにした ;・サイズ削減のための細かい改良 ;・マニュアルの改訂 ;03/10/31 ;・テンポの設定にセットテンポを使うのはまずいと気付き、使わない方式に変更 ;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に搭載すべく製作開始