SMF2MML

概要

このアプリケーションは、SMF (Standard MIDI File)を テキスト音楽「さくら」仕様の MML (Music Macro Language)に逆コンパイルする、コマンドライン・アプリケーションです。
SMF2MMLは、"MID"ファイルを、アーティキュレーションを保ったまま、"MML"ファイルに変換します。

特徴

  • 同一トラック内で和音を使った場合も、変換する事が可能です。
  • 小節線の位置を検出し、小節毎に小節線の出力、指定小節毎の改行が可能です。
  • 特定のMIDIイベントをマスクして、MMLの出力が可能です。

ダウンロード

smf2mml103.lzh

動作条件

動作OS

  1. Microsoft Windows 2000 SP4
  2. Microsoft Windows XP
  3. Microsoft Windows Vista
  4. Microsoft Windows Server 2003

別途インストールが必要なソフト

  1. Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)

使用方法

コマンドラインに、次の通りに打ち込んでください。
尚、()内は省略可能です。


SMF2MML (/optionファイル名(.mid)

ファイル名(.mid)は、逆コンパイルする元ファイルを指定します。
拡張子を省略した場合は、自動的に拡張子を".mid"とします。
拡張子がないファイルを指定する場合は、"ファイル名1."とピリオドまで記述して下さい。
元ファイルは、SMFのFormat 0若しくはFormat 1である必要があります。
出力するMMLのファイル名を指定しない場合は、指定されたファイル名で拡張子をmmlとして出力します。
MMLの文法は、別途、サクラのドキュメントを参照して下さい。

optionについて

指定 挙動
/B[+/-] 小節線と改行の出力有無を指定します。
+ : 出力します。
- : 出力しません。
/C[number] 改行の設定を指定する。
number >= 1 : 改行する小節数を指定します。
number = 0 : 音符毎に改行します。
number =-1 : 改行しません。
/J すととんで出力します。
 ※すととんにない命令は、MMLとなります。
/MA Note on/off以外、全て出力しない。
/Ma After Touch messageを出力しない。
/Mc Control Change messageを出力しない。
/Mp Program Change messageを出力しない。
/Mb Pitch Bend Change messageを出力しない。
/Mx System Exclusive messageを出力しない。
/Mm Meta Event messageを出力しない。
/Fm[file] 出力.mmlファイル名を指定します。
/? ヘルプを出力します。

仕様

  1. Note On/ Note Offを、以下のMMLレベルの命令に分解します。
    • v … ヴェロシティ
    • o … オクターブ
    • c 〜 b … 音程
  2. 音長は、付点13個まで対応しております。付点が13個以上つく場合は、『%』をつけ、tick表記となります。

注意

さくらにて、SMF2MMLで変換したMMLを再コンパイルする時、正常にコンパイル出来ない部分があります。
以下に、現在解っているいる部分について、原因と対応策を記載します。

Case 1

【原因】
サクラでは、同一のタイムポインター内において複数のMIDIイベントがある場合、特定の順番にイベントが並べ替えられます。
コントロールチェンジ(Control Change)は、ノート(Note)on/offや、プログラムチェンジ(Program Change)の次に来る仕様となっています。
(MMLに書いた順番では、MIDIイベントは出力されません。)
【対応策】
このようなMIDIファイルの場合は、出力したMMLファイル中の"System.ControllerShift = 0;"の数値を"1"に変えるなどして、 コントロールチェンジ(Control Change)の位置を前にずらす等の工夫をして下さい。

Case 2

【原因】
同一のトラックにおいて、あるノートを発音中に同一のノートを発音した場合、 鳴らしていた同じ音程のノートを1[ticks]前でノートoffして、再度発音する仕様となっています。
これは、同一トラック中の別のMIDIチャンネルでも適用されます。
【対応策】
このようなデータの場合は、MIDIチャンネル毎にトラックを分けてから、再コンパイルしてください。

参考資料

改訂履歴