今回は前々回の記事で取り上げられなかった、-batchconvert オプションを解説します。

Batch Converter

Batch ConverterはREAPERのレンダリング機能などと同様に標準で使える機能で、REAPERのメニューから [File>Batch file/item converter] でアクセス出来ます。

このBatch Converterの機能をコマンドラインのREAPERから呼び出せます。使い方は設定をテキストファイルに書いて、それを引数に渡すだけ(下の例だとfilelist.txtがこの設定ファイル)。

> reaper.exe -batchconvert filelist.txt

※実行すると変換ログが設定ファイルと同じ場所に出力されます(filelist.txt.log)


設定ファイルの書き方

Batch Converterの設定ファイルには以下の設定を記述する必要があります。

  • コンバートするファイルのパス一覧
  • コンバート設定部(CONFIGブロック)

CONFIGブロックはファイル一覧の前後どちらに記述しても問題なく、CONFIGブロックを複数に分けて記述(つまり複数のCONFIGブロックを記述)しても設定情報が結合されるっぽいので大丈夫なようです。

コンバートするファイル一覧の記述方法

ファイル一覧は行毎に1つ入力ファイルの絶対パスを記述します。さらに続けてTAB文字(スペース文字不可)の後に出力先ファイルの絶対パスを記述することも出来ます。例えば以下のような感じ。

C:\tmp\src.wav もしくは
C:\tmp\src.wav(TAB文字)C:\tmp\out\dest.wav

ただし、出力先パスも絶対パスによる記述ですし、後述の出力フォーマットで別のファイル形式(MP3とか)にコンバートする設定と相性が悪い気がします(拡張子合わせるのが特に面倒)。なので、後述のOUTPATH指定で書き出し先を指定して、各ファイルの出力先は記述しない方が扱いやすいです。

コンバート設定部(CONFIGブロック)の記述方法

CONFIGブロック内の設定はHelpでも出てきますが、それぞれ説明します。やたら説明の量がありますが、用途によってはほとんどの設定が不要だったりするので、後述の設定例をチラっと見てからここに戻ってくるのがいいかもしれません。

  • OUTPATH "path"
    コンバート後のファイルを保存するフォルダの絶対パスを記述します。保存先のフォルダがない場合は自動的にフォルダが作成されます(深いフォルダ階層を指定しても自動でフォルダ階層が作成されるので便利)。
  • OUTPATTERN "wildcardpattern"
    これはBatch Converterウィンドウでいうと[filename]の部分に対応する文字列を記述します(ワイルドカード指定も一応使える)。省略した場合は入力ファイルと同一のファイル名になります。
  • SRATE SampleRate
    サンプリングレートを強制的に切り替えたい場合はこの設定を記述(省略で入力ファイルと同じ)
  • NCH Channels
    チャンネル数を強制的に切り替えたい場合はこの設定を記述(省略で入力ファイルと同じ)
  • RSMODE ResampleModeIndex
    リサンプリングを行う場合、そのモードをIndexで指定します。恐らく0~9までと思われる数値を記述しますが、ModeとIndexの正確な対応を知るには若干面倒な手順が必要です。
    1. まずREAPERのプロジェクト設定([File>Project settings...])で[Project Setting]タブの[Render resample mode:]を好みの設定にしてプロジェクトを保存します。
    2. 保存したプロジェクトファイル(.rpp)をテキストエディタで開き、RENDER_RESAMPLE という項目を探して、その右側のパラメータの最初(一番左)の値を使います(例えば [Extreme HQ (768pt HQ sinc)]の場合はIndex=9)。
  • DITHER flags
    Batch Converterウィンドウにおける[Options]の部分にある[Dither], [Noise shaping]の設定をそれぞれ使うかのフラグを指定します(Ditherのみ:1、Noise shapingのみ:2、両方:3)
  • PAD_START sec、PAD_END sec
    コンバート後のファイルの波形の前後に指定秒数の無音を挿入するのに使用します。Delay系のエフェクトを適用した場合のTailを伸ばす感じで使えます。また、負の値を指定することで波形の前後をカットするということも可能になっています。
  • FXCHAIN "fxchainfilename"
    REAPER上で作成したFXChainファイルを指定できます。ファイル名だけ(例えば MyReverb.RfxChain など)を記述すると、REAPERリソースフォルダのFXChainsフォルダにある設定が参照されます。絶対パスを指定すれば別の場所のファイルも利用可能です。
    また、別の指定方法としてFXCHAINブロックを作って、その中にRfxChainファイルの中身をまるっとコピペしてやってもOKです(設定例を後に示します)。
  • OUTFMTブロック
    CONFIGブロック内に更にOUTFMTブロックを作って、そこに出力ファイルフォーマットを指定します。が、これもやたら玄人志向になっていて「設定バイナリのBase64文字列を指定」する形になっています。ってこれじゃ後から設定ファイル見ても分からないじゃないか・・・。まぁいいけど。
    やり方もちと面倒です。
    1. REAPERのRendering設定で出力先ファイルフォーマットを指定してプロジェクトを保存
    2. 保存したプロジェクトファイルをテキストエディタで開いて、RENDER_CFGブロック内に書かれた謎の文字列(これが設定バイナリをBase64エンコードでテキスト化したもの)をコピー
    3. Batch Converter設定ファイルのOUTFMTブロックに張り付け

ちなみに、入力ファイル・出力ファイルのパスが完全に同一だとコンバートに失敗します。出力ファイル先の指定や出力ファイル形式などによる拡張子変化などを適切に利用して、入出力パスが必ず別のパスになるよう工夫してください。

設定ファイルの例

まぁ説明ばかりだと分かりづらいかと思いますので、設定例を書いておきますね。OUTFMTは見た目では分かりませんが、FLACへの変換設定になっています。

R:\bc\1.wav
R:\bc\2.wav
R:\bc\3.wav
<CONFIG
  OUTPATH "R:\bc\out"
  OUTPATTERN "$source_$filenumber"
  FXCHAIN "MyReverb.RfxChain"
  SRATE  44100
  NCH    2
  RSMODE 9
  DITHER 3
  PAD_START 0.0
  PAD_END   1.0
  <OUTFMT
    Y2FsZhAAAAAFAAAA
  >
>

上記ではフルスペックで記述していますが、単純なファイル形式変換であればほとんどの指定が不要です(大抵のパラメータは省略すると入力ファイルと同じになります)。単純にFLACに変換するだけなら以下のような感じでOK。大分スッキリしましたね。

R:\bc\1.wav
R:\bc\2.wav
R:\bc\3.wav
<CONFIG
  OUTPATH "R:\bc\out"
  <OUTFMT
    Y2FsZhAAAAAFAAAA
  >
>

最後にFXCHAIN設定をサブブロック化して、RfxChainファイルの中身をコピペする例です。
まずはRfxChainファイルの中身がコレ。

BYPASS 0 0
<VST "VST: ReaVerb (Cockos)" reaverb.dll 0 "" 1919252066 ""
  YnZlcu5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAAAAAAASAAAAAEAAAAAABAA
  AAAAwcybgD4AAIA/AAAAAAAAgD8AAIA/AAAAPwAAAAAAAAAAVkVSQkdFTgAYAAAAAAAAAGHQUUUAAIA/oP+2QhHHSj8AAIA/
  AAAQAAAA
>
WAK 0

で、Batch Converter設定ファイルに使った場合はこんな感じにコピペ。

R:\bc\1.wav
R:\bc\2.wav
R:\bc\3.wav
<CONFIG
  OUTPATH "R:\bc\out"
  <OUTFMT
    Y2FsZhAAAAAFAAAA
  >
  <FXCHAIN
BYPASS 0 0
<VST "VST: ReaVerb (Cockos)" reaverb.dll 0 "" 1919252066 ""
  YnZlcu5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAAAAAAASAAAAAEAAAAAABAA
  AAAAwcybgD4AAIA/AAAAAAAAgD8AAIA/AAAAPwAAAAAAAAAAVkVSQkdFTgAYAAAAAAAAAGHQUUUAAIA/oP+2QhHHSj8AAIA/
  AAAQAAAA
>
WAK 0
  >
>

例を紹介しといてアレですが、普通にファイル名指定した方が分かりやすいですね。はい。



という感じで今回はコマンドラインからBatch Converterを呼び出す方法を紹介しました。使い方はちょっと玄人向けな感じがありますが、REAPERがサポートしているファイル変換機能がそのまま使えるのはなかなか便利なんじゃないでしょうか。この機能もバッチ処理などを組めば大量のファイル変換を自動化したり出来ますので、うまく活用できれば作業が楽になるかもしれませんね。