SMF2MML (/option) ファイル名(.mid)
都立工業高等専門学校(現、東京都立産業技術高等専門学校)を卒業、
機械工学が専攻だった癖に論理回路やオーディオ関係の技術者らしい。
趣味として、音楽関係のフリーソフト開発や、DTM・チップチューン活動をしたり、
オーケストラや吹奏楽団でオーボエを吹いてる人。
このアプリケーションは、SMF (Standard MIDI File)を
テキスト音楽「さくら」仕様の
MML (Music Macro Language)に逆コンパイルする、コマンドライン・アプリケーションです。
SMF2MMLは、"MID"ファイルを、アーティキュレーションを保ったまま、"MML"ファイルに変換します。
特徴
コマンドラインに、次の通りに打ち込んでください。
尚、()内は省略可能です。
SMF2MML (/option) ファイル名(.mid)
ファイル名(.mid)は、逆コンパイルする元ファイルを指定します。
拡張子を省略した場合は、自動的に拡張子を".mid"とします。
拡張子がないファイルを指定する場合は、"ファイル名1."とピリオドまで記述して下さい。
元ファイルは、SMFのFormat 0若しくはFormat 1である必要があります。
出力するMMLのファイル名を指定しない場合は、指定されたファイル名で拡張子をmmlとして出力します。
MMLの文法は、別途、サクラのドキュメントを参照して下さい。
指定 | 挙動 |
---|---|
/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ファイル名を指定します。 |
/? | ヘルプを出力します。 |
さくらにて、SMF2MMLで変換したMMLを再コンパイルする時、正常にコンパイル出来ない部分があります。
以下に、現在解っているいる部分について、原因と対応策を記載します。
【原因】
サクラでは、同一のタイムポインター内において複数のMIDIイベントがある場合、特定の順番にイベントが並べ替えられます。
コントロールチェンジ(Control Change)は、ノート(Note)on/offや、プログラムチェンジ(Program Change)の次に来る仕様となっています。
(MMLに書いた順番では、MIDIイベントは出力されません。)
【対応策】
このようなMIDIファイルの場合は、出力したMMLファイル中の"System.ControllerShift = 0;"の数値を"1"に変えるなどして、
コントロールチェンジ(Control Change)の位置を前にずらす等の工夫をして下さい。
【原因】
同一のトラックにおいて、あるノートを発音中に同一のノートを発音した場合、
鳴らしていた同じ音程のノートを1[ticks]前でノートoffして、再度発音する仕様となっています。
これは、同一トラック中の別のMIDIチャンネルでも適用されます。
【対応策】
このようなデータの場合は、MIDIチャンネル毎にトラックを分けてから、再コンパイルしてください。
上のアドレスの『@』と『nifty』の間に『spa.』を追加して下さい。
画像で記載されているアドレスでも届きますが、スパム防止のフィルターを多数導入しています。
本ホームページはリンクフリーです。
リンクは、トップページ
"http://shaw.la.coocan.jp/"
にお願いいたします。