おいしくなって新登場!!→BMSツクール2


BMSツクールα版

個人用に作っていたMIDI音切り補助ツールを試験的に公開します。
下のURLからダウンロードできます。
https://dl.dropboxusercontent.com/s/l9rshuf82s6jqhk/BMS_Maker_103.zip

  • Ver1.03
    • フォルダパスに日本語が含まれていると色々と失敗する不具合を修正しました。
    • 右のようなエラーが出る場合、読み込んだMIDIのあるフォルダに「BMS」という名前のフォルダを手動で作ってください。



概要

 MIDIを読み込ませてなんやかんやしてBMSを自動的に生成するツールです。
 使い方は下に載せますがわからないことがあればROKINA(https://twitter.com/lokina)まで直接問い合わせてください。

特長

  • MIDIを読み込んでBMS向けに音切りできる!
    • 音切りのあとはBMSファイルも自動で生成されるのでかんたん!
  • テンポ変化、コントロールチェンジにも対応
    • しかしDAWが対応していないと意味がなかった。
  • 和音やグライド(後述)ノーツを一つのノートとして扱える!←
  • サイドチェイン、キースイッチに対応!←神!!!!!!!!!!
詳しくは「使い方」を見てください。

注意点

 個人用に作っただけなので色々と不親切な仕様があります。
  • オートメーションには対応できません。MIDIにオートメーションの情報は載せられないので。
  • FL Studioとの連携しか動作を確認していません。
  • RPGツクールで作ってあるのでUIがクソです。
    • 内部的にはRuby1.9.2で動作しているので処理によっては遅いです。


使い方

起動

 ダウンロードしたzipを解凍してフォルダ内のRun.batを開きます。
起動すると「ファイルを開く」の画面が出てくるので開きたいMIDIファイルを選びます。

※Game.exeを開いても起動できますがコンソールが表示されないので不便です。
※MIDI以外のファイルを選ぶとエラー吐いて死ぬと思います。
※ファイルを選ばないと終了します。

設定画面


 MIDIの読み込みに成功すると上のような画面が出てきます。字が小さくて見づらい場合はF5キーを押すと画面が拡大されます。
マウスで操作できます。左クリックは enter, 右クリックは esc と同じ働きをします。
 ツールを閉じるためのボタンなどは特にないので、終わらせる場合右上の×を押すか Alt+F4 で閉じてください。

F4を押すと全ての設定を初期化できます。
 F9を押すと言語選択のウィンドウ(右図)が現れます。
 F12を押すとプログラムをリセットし、MIDIを選ぶところからやりなおせます。

 最初は左のウィンドウ(トラックリスト)がアクティブな状態で、カーソルを移動すると右のウィンドウにトラック情報の最初の部分が描画されます。
  • この状態で Enter(左クリック) を押すと真ん中の設定ウィンドウがアクティブになります。
  • この状態で Esc(右クリック) を押すと「音切りを実行しますか?」と聞かれるので、Yesを選ぶと音切り処理が始まります。

 真ん中のウィンドウは音切りに関する種々のオプションを決めます。全ての設定内容を詰め込んでいるので非常に見づらいです。
設定項目にカーソルを合わせて決定(左クリック)すると設定項目の編集ができます。マウスのホイールを回すことでも設定値を変えることができます。
 キャンセル(右クリック)によって編集内容を確定しトラックリストがアクティブになります。

+ 設定項目の説明
  • 「分割対象に」
    • 見ての通りです。「しない」にすると音切りされません。BGM用のトラックなどは「しない」にしておきましょう。
  • 「曖昧さ」
    • 音の強さ(ベロシティ)と発音長さが近いノートを同一とみなすしきい値を設定します。
    • 「vel」
      • ベロシティのしきい値です。
      • 例えばこれを 5 にするとベロシティ123~127の間のノートが同一視されます。
      • ベロシティ変化が細かいと定義数がかさむのでここを設定するとよいでしょう。
    • 「time」
      • 発音長さの差がこれ以下のノートは同じ長さであるとみなします。
      • ここではテンポも考慮されるため、設定値を 0msec にしてあっても、例えばテンポ150bpmの8分音符とテンポ300bpmの4分音符は同じものとして扱われます。
      • テンポによってモジュレーションが変わったりするシンセの場合は工夫が必要です(面倒なのでまだ対応していません。)
    • 「最短間隔」
      • 同じゲート(長さ)、同じベロシティ、同じノートナンバー(音高)のノートが連続するとき、その間隔が設定値以下の場合多重定義を行います。
      • キックドラムの16分ロールなど同じ音が連続するときは多重定義したほうがきれいに聞こえる場合があります。
      • 「-1」にしておくと多重定義は適用されません。
      • 「0」にしておくと、ノート終端と次のノート始端が接しているときだけ多重定義します。
  • 「ソート」
    • BMS化するときのWAV定義の順番をソートします。
    • いまのところ選択肢は7つありますが、画面の上のほうに説明が出るはずなのでそちらを見てください。
    • 全て昇順(音高なら低い順)固定です。正式版を作るとしたら降順も実装するかもしれません。
  • 「和音まとめ」
    • 複数のノートが同時に発音される場合、それらをまとめて(BMSでの)一つのノートとして扱います。
    • 「無効」
      • 和音まとめを行いません。リズムトラックなどはこれにしておきましょう。
    • 「無制限」「2」「3」「4」「5」
      • 和音まとめの上限ノート数を指します。
      • 例えばこういう和音の場合、和音まとめを「2」にしておくと2音ずつまとめられて合計3つのノートの同時押しになります。
      • 10個のノートが同時に鳴る場合「3」なら「3個-3個-3個-1個」でまとめられます。「5」なら「5個-5個」でまとめられます。
    • 「-2」「-3」「-4」
      • マイナスの値のときは音数ではなくまとめる個数(BMSでのノート数)の指定になります。
      • 10個のノートが同時に鳴る場合「-2」なら「5個-5個」でまとめられます。「-3」なら「4個-3個-3個」でまとめられます。
    • 「グライド」
      • 通常の和音まとめは同時に発音されたノートのみまとめられますが、「グライド」モードではあるノートの発音途中に追加で鳴らされたノートを全て(BMSでの)一つのノートにまとめます。
      • こういうのやこういうのがひとまとまりになります。
      • モノフォニックシンセでピッチベンドを使わずなめらかに音高を変えるときなどに利用できるかと思います。
    • 「基準」
      • まとめる優先度を指定します。これの場合、まとめ個数が「3」のとき「上から」だとこうなります。「下から」だとこうなります。
  • 「SCトリガー」
    • サイドチェイン(あるトラックの音声を別のトラックに入力すること)のトリガーとなるトラックを指定します。
    • 「無効」または「現在のトラックと同じ(Drum に対して Drum を指定するなど)」場合は無効になります。
    • たとえば Bass トラックに挿しているコンプ(これはDAW上での話です)のトリガーに Kick トラックを利用している場合、「SCトリガー」に Kick を指定します。
    • 試験機能です。和音の存在しない(単音ノートだけの)トラックをトリガーにすることをおすすめします。
  • 「キースイッチ」
    • キースイッチを有効にします。キースイッチを使っていない場合は無効のままで大丈夫です。
    • キースイッチに使うノートは音切りの対象にならず、キースイッチ状態が異なるノートは音切りの際も異なるノートとして扱われます。
    • 「下限NN」「上限NN」
      • 試験機能のためNN(ノートナンバー)の指定は範囲でのみ可能です。
      • キースイッチに使われるノートのうち一番下と一番上をそれぞれ指定します。
      • MIDIファイルを Domino で開くとイベントリストがこんな感じになっていますが、「C 3」とか「G 3」とかの右のカッコに書いてあるのがノートナンバーです。
  • 「MIDIシーケンス」
    • MIDI整理後に出力される音切り用MIDIのノート配置についての設定です。
    • 「頭空白」
      • タイムラインの先頭から指定値だけ空白をあけて最初のノートを置きます。単位はです。
      • 特に拘りがなければ 1 にしておくことをおすすめします。
    • 「間隔」
      • 配置されるノートの間隔を指定します。単位はです。
      • 残響の長い音源の場合は長めに設定しましょう。残響の一切ない"乾いた"トラックであれば間隔は 3 とかでも大丈夫です。
      • 間隔が小さすぎると前の音の残響が混ざってしまい音切りに失敗します。
      • 間隔が大きければ残響が混じることはなくなりますがそのぶん音切りに時間がかかります。
  • 「定義名」
    • BMSの WAV 定義に使う音切り後のファイル名を指定します。
    • 音切り後のファイル名はトラックごとに連番が振られますが、それの命名規則についての設定です。
    • 「基本名」
      • 「01_Drum_001.wav」の「01_Drum_」の部分です。
      • 変えたい場合はこの項目にカーソルを合わせて決定(左クリック)すると入力ウィンドウが現れますので好きな文字列を入れてください。
      • 日本語も使えますが避けたほうがいいと思います。
    • 「開始番号」
      • 「01_Drum_001.wav」の「001」の部分が、何番から始まるかを指定します。
      • 特に理由がなければ 1 でいいと思います。既に音切り済みの音声があるなどの場合は変更することになります。

※定義数が多すぎる(1296個以上)場合も特に警告は出ません。定義数が多すぎる状態で音切りを行ってもエラーは起きませんが、再生不能なBMSが生成されるのでご注意ください。

レンダリング

 トラックごとの音切りオプションを設定しおわったら、トラックリストがアクティブな状態で esc(右クリック)を押すことで音切りを始めることができます。

実行すると、少し間をおいて分割済みのMIDIファイルがいくつか生成されます(右図参照)。生成される場所は読み込んだMIDIファイルと同じディレクトリです。
 MIDI生成後「スライスするWAVファイルを選んでください」とファイルの選択を迫られますが、いったん置いといて(閉じる必要はありません)DAWを開きましょう。

 DAWを開いたら、生成されたMIDIをそれぞれのトラックに読み込んでWAVファイルを書き出します。「SCトリガー」が有効な場合は「(SideChain)」という名前のトラックがありますので、そちらも忘れずにサイドチェイン用のトラックに読み込ませましょう。
 ROKINAはこの作業をFL Studioでのみ確認しています。FLの場合はトラックごとに別パターンとしてMIDIを読み、パターン書き出しを行うとよいでしょう。他のDAWについてはもしかしたらうまくできないかもしれないので、そのときはご連絡ください。

 WAVファイルの書き出しが終わったら、そのWAVを先程表示された「スライスするWAVファイルを選んでください」のダイアログから選びます。いまどのトラック用のWAVを求められているのかは書いてありますが、間違えると悲惨なことになるのでご注意ください。

スライス

 WAVファイルを選ぶと、自動的に音声データのスライスが始まります。この作業には非常に時間がかかるのでツイッターでも見ながら待ちましょう。
音声のスライスはトラックごとに行われ、一つのトラックのスライスが終わると次のトラック用のWAVを指定するため再びダイアログが開きます。
 なお、ファイル選択ダイアログで「キャンセル」を選んだ場合、そのトラックの音切りは行われません(音声ファイルが生成されないだけで、BMSファイルには反映されます)。

右のようなエラーが出る場合、最初に読み込んだMIDIのあるフォルダに「BMS」という名前のフォルダを手動で作ってください。

 全てのトラックのスライスが完了すると「書き出し終了しました。」というポップアップが出て、全行程終了です。
最初に読み込んだMIDIのあるディレクトリに「BMS」というディレクトリが生成されており、その中にノート配置済みのBMSファイルとスライスされたWAVファイルたちが格納されます。
 一度音切りを行ったMIDIの設定情報は保存されるので、一旦閉じて開き直しても設定をやりなおす必要はありません。

 音切り終了後は特に何も起こらず最初の画面に戻りますので、Alt+F4を押すなどしてプログラムを終わらせてください。


まとめ

 いかがでしたか?(何が?)

 最初に書きましたがこれはあくまでROKINAが個人用に雑に作ったプログラムですので、RPGツクール製だし、UIが見づらいなど至らぬ点があります。
もしこれを使ってみたという人が増えた場合、UIをもう少しマシにしたり、機能の拡張を行ったりする可能性がありますので、ご意見ご要望あればROKINA(https://twitter.com/lokina)までご連絡ください。


旧バージョン

最終更新:2021年02月20日 00:24