2019/5/14 Ver 0.7.0 公開
何をするツール?
SMF(Standard MIDI File)を、ドレミ譜にコンバートするツールです。
FF14PlayMusicScripterで読み込める形式のCSVファイルに出力します。
Domino等のMIDI編集ツールで作ったMIDIファイルをドレミ譜に起こすためのツールとして用意しました。
FF14内での楽器演奏は、和音が使えない且つ、3オクターブの範囲しか発音できないという制限があります。
この仕様で綺麗に聞こえるよう演奏するにはいかに上手く単音の譜面に起こせるかがキモになります。
この譜面起こし作業は例えばDominoのようなUIがちゃんとしたツールで行うのがベストでしょうし、そうなると出力フォーマットはMIDIという事になります。
であれば、MIDIファイルからドレミ譜にコンバートできればいろいろと捗るだろうというのが制作意図です。
最新版ダウンロードはこちらから
最新バージョンは Ver 0.7.0 です。
旧バージョン
ツールの基本情報
動作環境
Windows7以降
要.NET Framework 4.5以上
インストール方法
zipを解凍するだけです。
アンインストール方法
フォルダごと削除して下さい。特にレジストリ等はいじっていません。
使い方
ConvSMF.exeを起動します。
コンバートしたいMIDIファイルをツールにドラッグ&ドロップします。
データが読み込まれると、下半分のログ表示エリアに情報が表示されます。
ドレミ譜へのコンバート
⑥Normalボタン
MIDIデータそのままのドレミ譜(CDE譜)を出力します。
出力先フォルダを指定するダイアログが開くので、フォルダを指定して下さい。
⑦Monophonicボタン
単音化処理を行ったドレミ譜(CDE譜)を出力します。
出力先フォルダを指定するダイアログが開くので、フォルダを指定して下さい。
⑧Monophonic(Merged)ボタン
単音化処理を行ったドレミ譜(CDE譜)を出力します。
出力先フォルダを指定するダイアログが開くので、フォルダを指定して下さい。
Normalボタン、Monophonicボタンは、MIDIファイルに複数トラック、チャンネルが存在する場合、個別にコンバートして出力します。
Monophonic(Merged)ボタンは、全トラックを参照して単音化を行い、1つのドレミ譜を出力します。
出力ファイル名について
Normalボタンでコンバートした場合、出力されるファイル名は「曲名+トラック番号+チャンネル番号.csv」というフォーマットになります。
例えば「プレリュード.midi」をコンバートした場合、「プレリュード_track1_ch1.csv」といったファイル名で出力されます。
Monophonicボタンでコンバートした場合、ファイル名末尾に「_Mono」が追加されます。
例えば 「プレリュード_track1_ch1_Mono.csv」というファイル名になります。
Monophonic(Merged)ボタンでコンバートした場合、ファイル名末尾に「_MonoMerged」が追加されます。
①Octave Offset Mode(for FFXIV)
FF14PlayMusicScripterに読み込ませるデータを出力する場合はチェックをONにします。
②Channel
-1を指定した場合、MIDIデータに含まれる全てのチャンネルをドレミ譜に出力します。
0以上の値を指定した場合、チャンネル番号が一致するデータのみをドレミ譜に出力します。
③Min gap
Ver0.6.0追加機能
同じ音をあまりに高速で連打すると、FF14の楽器演奏上では音の切れ目がなくなり、押しっぱなしになってしまう現象が発生します。
例えば「ド押しっぱなし1秒 → 1msecキーを離す → ド押しっぱなし1秒」というキー入力をするとキーを離したのが認識されず「2秒間ドを押しっぱなし」のような演奏のされかたをします。
これがFF14側の仕様なのか、ロジクールのスクリプト再生の問題なのかは不明ですが「同じ音を連打する際には最低20msecの音の切れ目を設ける」事で回避できました。
10msecではダメだったので、おそらく16msec以下の間隔で同じ音を連打するのがFF14側でNGになっているように思えます。
このテキストボックスにはデフォルトで「20(単位はmsec=ミリ秒)」という値が入っています。
この場合、MIDIからドレミ譜にコンバートする際に「同じ音を20msec以下の間隔で連打する」ようなノートを発見した場合は「押しっぱなし期間をカットすることで、最低でも20msecの間隔を設ける」ように処理します。
上の例だと、
「ド押しっぱなし1秒 → 1msecキーを離す → ド押しっぱなし1秒」
が、ドレミ譜にコンバートする際に
「ド押しっぱなし981mec → 20msecキーを離す → ド押しっぱなし1秒」
と修正されます。
違う音が間に混ざっている場合はこの処理は行いません。
あくまで「同じ音が高速で連打される場合」のみの処理です。
このテキストボックスに0を指定すると、この処理は無効になります。
④Out range notes
元MIDIファイルに、FF14で演奏できない範囲のノートが存在する場合の処理方法を指定します。
Ver0.5.0追加機能
No modified
特に何もせず、元データのノートをそのままドレミ譜に出力します。
Dispose
FF14で演奏できない範囲のノートは破棄され、無かったものとします。
ドレミ譜上では無音扱いになります。
Shrink
FF14で演奏できる範囲に無理やりノートを変更します。
つまりオクターブを下限、上限に合わせてオフセットします。
C-2のノートはFF14では演奏できませんが、このモードが選択されている場合、C-2の代わりにFF14で演奏できる範囲のC-1をドレミ譜に出力します。
Monophonic Options
単音化の処理オプションです。
MonophonicボタンあるいはMonophonic(Merged)ボタンで単音化を行ったドレミ譜を出力する場合のみ、影響を受けます。
Priorityグループ
和音・複数トラックにより、同じタイミングに複数のノートが存在する場合、どのノートを優先するかを調整するオプションです。
Note Length
このチェックボックスがONの場合、音が重なっている際に「より長く鳴らす音を優先」します。
Note Range
このチェックボックスがONの場合、音が重なっている際に「FF14で演奏できる範囲の音を優先」します。
上記のチェックボックスが入っていない場合は、音が重なっている際に「より高い音を優先」します。
ノート採用の優先度について
Note Rangeにチェックが入っている場合「FF14で演奏できる範囲の音」には重み+3されます。
Note Lengthにチェックが入っている場合、重なっている音の中で一番長く発音するノートには重み+2されます。
また、重なっている音の中で一番高い音には必ず重み+1されます。
このようにして合算された重みが、重なっている音の中で1番大きいものが最終的に採用され、他の重なっている音はドレミ譜から除外されます。
つまり、例えばNote Rangeにチェックが入っている場合は「FF14で演奏できる範囲の音」の中で1番高い音が採用されます。
Duration
鍵盤押しっぱなし期間をどのように処理するかの設定です。
No overlapping |
押しっぱなし期間が、次の音と重ならない限りMIDIデータの通りにドレミ譜を出力しようとします。 次の音と重なる場合、そこで押しっぱなし期間を終了するように改変します。 |
No modified |
押しっぱなし期間はMIDIデータの通りに出力します。 FF14PlayMusicScripterに読み込ませた場合「発音開始時は常に1音だが、前の鍵盤を離さないまま次の鍵盤を押す」というデータになってしまうケースがあります。 このようなデータをFF14の自動演奏用スクリプトにコンバートした場合、結果的に同時発音状態になるため正しく再生されません。 |
Auto duration |
ドレミ譜に押しっぱなし期間を出力しません。 FF14PlayMusicScripterに読み込ませた場合、押しっぱなし期間は「次の音を鳴らすまでの時間の80%」として一律処理されます。 |
Force duration zero |
ドレミ譜に押しっぱなし期間を「0秒」として出力します。 FF14PlayMusicScripterに読み込ませた場合、「鍵盤を押したらすぐに離す」という挙動になります。 |
注意点
オクターブオフセットモードについて
Octave Offset Mode(for FFXIV)というチェックボックスがOnの場合、出力するドレミ譜に関して、48音ずらした状態で出力します。
FF14PlayMusicScripterに入力する形式でコンバートする場合は、このチェックをONにしておいて下さい。
これは何かと言うと、MIDIの国際規格では128音のノート番号についてC-1からG+9が対応する音名になっています。
ですがFF14では128音のうち、ノート番号48~84の37音しか鳴らせません。3オクターブ+1音です。
FF14中ではノート番号60~71を基準に上下のオクターブへ切り替えるという操作になっています。
FF14PlayMusicScripterはこのFF14基準に合わせてあるので、C-1はノート番号48を表しています。
一方国際規格ではC-1はノート番号0なので、音名とノート番号に48のずれがあります。
Octave Offset Mode(for FFXIV)のチェックボックスがONの状態でコンバートすると、MIDIデータ中の音をFF14PlayMusicScripter用の音名に変換した上で出力します。
MIDI国際規格の音名のままでドレミ譜を出力したい場合はこのチェックボックスをOFFにして下さい。
音名は国際式
出力する音名はヤマハ式ではありません。国際式です。
ノートナンバー0は「C-1」と出力されます。
また、ドレミ譜と言っていますが現バージョンではA~Gの表記で出力します。
和音や、同時発音について
Normalボタンでコンバートした場合
MIDIデータ通りに出力します。
すなわち「ドレミ」を同時発音するMIDIデータをコンバートすると「ド、待ち時間0、レ、待ち時間0、ミ」というドレミ譜を出力します。
FF14PlayMusicScripterのVer 0.7.0以降では、テスト再生モードで和音が再生する事が可能ですので、MIDIデータに極めて近い演奏を行いますが、FF14のゲーム中では現在のところ和音を再生する事ができません。
従って、このように複数の音を同時に鳴らすドレミ譜はFF14用のスクリプトにコンバートできません。
Monophonicボタンでコンバートした場合
Monophonic Optionsの設定に従って単音化を行います。
正しく単音化が処理され、同時発音が1音且つ、鍵盤の押しっぱなし期間も重なっていない、さらに、音程の範囲がFF14内の37音に収まっているデータの場合は、自動演奏スクリプトにコンバートする事が可能です。
複数チャンネルのデータについて
MIDIには異なる楽器用等に、複数のトラック(チャンネル)を持たせることができます。
このコンバーターは、複数トラックのデータは個別のドレミ譜に分割して出力します。