Command Line

PeloReaper Extensionの情報やダウンロードはこちらからどうぞ。
PeloReaper Extension for REAPER is here.
ReaperBanner01_50p

REAPER (Command Line): Batch Converter

今回は前々回の記事で取り上げられなかった、-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がサポートしているファイル変換機能がそのまま使えるのはなかなか便利なんじゃないでしょうか。この機能もバッチ処理などを組めば大量のファイル変換を自動化したり出来ますので、うまく活用できれば作業が楽になるかもしれませんね。


REAPER (Command Line) : Project Rendering

今回は前回の記事で紹介し切れなかった、-renderprojectオプションを取り上げます。

コマンドラインでプロジェクトのレンダリング

REAPERのコマンドライン実行で、プロジェクトのレンダリングを行うことが出来ます。やり方は簡単で、以下の手順でやればOK。

  1. REAPERで作成したプロジェクトでレンダリング設定を保存([File>Render...]でレンダリングウィンドウを表示して各種レンダリングの設定を行い、レンダリングするか[Save changes and close])
  2. REAPERプロジェクト自体も保存([File>Save project])
  3. コマンドラインでこのプロジェクト(例えば C:\A.rppとする)を指定してレンダリング
    > reaper.exe -renderproject C:\A.rpp
    ※この方法でレンダリングする場合、上書き確認ダイアログ等は表示されません。

プロジェクト保存時の注意

コマンドラインでレンダリングを行う際、重要になるのが「プロジェクト保存時のプロジェクトの状態」です。レンダリングの対象が[Stems (selected tracks)]や[Selected media items]などのように、何かを選択しておく必要のある設定の場合は、必ずレンダリング対象にしたいものを選択した状態でプロジェクトを保存しておく必要があります。
CmdLineRender01
↑ 選択Itemをレンダリングしたい場合、対象のItemを選択状態にしてProject保存

コマンドラインでレンダリングしてみたけど、何も出力されないとかいう場合はこのあたりもチェックしてみると良いかもしれませんね。


使いどころ

コマンドラインでプロジェクトのレンダリングが出来たからといって、何かの役に立つの? と思うかもしれませんが、これも用途次第で応用出来そうなネタは結構ありそうです。ぱっと思いつくものを挙げてみましょう。

  • バッチファイルで複数のプロジェクトの一括レンダリング
  • プロジェクト内の一部の波形ファイルを差し替え、そのプロジェクトを自作アプリやバッチファイルなどで自動的にレンダリング
  • Jenkinsなどの自動ビルドシステムに組み込んだりしてワークフローを作れば、サーバ上にある所定のwavを更新するだけで、あとは放っておけばマスターデータが出来上がるといったことも出来そう(ついにJenkinsでDAWをぐるぐる回す時代が来たか・・・?)

主にバッチレンダリングなどの自動化、オンデマンドレンダリングといった用途でしょうか。ゲーム開発みたいに大量のデータを扱う職種なんかであれば、かなりの恩恵を受けられそうな気がしなくもないですね(しばらく前のネタなので忘れましたが、確かFMODあたりのREAPER Integrationがこの仕組みを使ってたような? 検証とかはしてないので違ってたらすみません)。


懸念点

まだきちんと検証しきれてないので確実な情報ではないのですが、もしかしたらたまにレンダリングがうまく行われないケースがあるのかもしれません。

実はちょっと前に検証した時レンダリングされなくて悩んだことがありました。単純に自分がレンダリング設定などを間違えていただけだった、というのならよいのですけど・・・。今回の記事のために実行したら普通に上手くいってしまったので、またうまくいかない事があったら再度検証してみようと思います。


REAPER (Command Line)

REAPERはコマンドライン実行が可能なことをご存じでしょうか?
これは要するにWindowsのコマンドプロンプトでオプションを渡してREAPERを実行することです。まぁほとんどのユーザーがこれを使う必要はないんですが、使いようによっては便利な機能です。

Help

コマンドラインで実行ってことは、定番のHelp(usage)表示があるよね?
ということで以下のコマンドで表示できます。

> reaper.exe -help

Windowsだけかもしれませんが、オプション指定はハイフン"-"だけでなく、スラッシュもいけるようです。あと、このHelp表示もコマンドプロンプトでおなじみの /? でも表示可能です。
CmdLineHelp


REAPER起動時の設定オプション

REAPERを起動する時の挙動に影響を与えるオプションは以下の通り。

  • -audiocfg
    REAPERを起動した直後にオーディオ設定ウィンドウを表示(既に起動済みなら何も起きない)
  • -cfgfile file.ini
    REAPERのリソースフォルダをデフォルトとは違うところに設定してREAPERを起動する。file.iniには要するに(REAPERリソースフォルダ)/REAPER.ini に相当するものを絶対パスで指定してやる。
    REAPERリソースフォルダではない場所(例えば任意の空のフォルダ内のINIファイルパスなど)を指定すると、そこにREAPERリソースフォルダを自動的に作成してくれる。
    自分はREAPERのポータブル版を使ったことがないので正確には分からないが、この機能を使えばREAPER本体だけでなく、リソースフォルダもUSBドライブなどに入れて持ち歩けそうな気がする。
  • -ignoreerrors
    起動時に出るエラーを無視して起動。普段エラーが出ない状態なので良くわからないが、何らかのエラーが出てREAPERの起動に失敗する場合に効果があるのかもしれない。
  • -nosplash
    スプラッシュウィンドウを表示しない
  • -splashlog filename.log
    スプラッシュウィンドウでの起動時のログをファイルに出力する。これも不具合等の調査に使えそう。
  • -newinst もしくは -nonewinst
    REAPER起動時の多重起動チェックを無視して起動する場合は -newinst を指定出来る(多重起動したくない場合は -nonewinst)。REAPERのPreferencesの設定にもある(General>Startup setting>Check for multiple instances when launching)が、この設定をオーバーライドして起動出来るようだ。
    ※このあたりの設定をいじることで複数のREAPERウィンドウを表示できますが、自分はおそらく使わないと思います。というのも、REAPERは実行中にREAPER.iniなどの設定ファイルを変更したりする仕組みで動いてたりするので、複数のインスタンスでガチャガチャいじってる間に最悪の場合設定齟齬が絡むバグに遭遇してしまう、というのを避けるため(まぁ未検証なのでなんとも。自分がビビってるだけで本当は安全だったりするのかも)。

起動中のREAPERにも作用するオプション

既に起動しているREAPERに影響を与えられるオプションは以下のとおり。

  • -new
    新しいプロジェクトを開く(起動しているREAPERに新しいプロジェクトTabが作られる)
  • -close[all][:save][:nosave]
    たぶん自分の指定方法が間違っている気がするんですが、保存するか聞くのを指定してウィンドウが閉じるのかと思いきや、何も起こりませんでした・・・。
  • -noactivate(Windowsのみ)
    コマンドラインでREAPERに指示を出した場合に、ウィンドウをフロントフォーカスに持ってこないようにする。REAPER起動時に指定してもウィンドウがアクティブになってしまうので意味がない。イマイチ使いどころが良くわからないオプション。

その他・特定用途向けオプション

上記以外の特定の用途向けのものは以下の通り。

  • -saveas newfilename.rpp
    REAPERプロジェクトファイルを開いて、別のファイル名で保存する機能。REAPERが起動中だと何も起こらないので注意。そしてREAPERが起動し、新しく保存した名前のファイルを開いたままの状態になる。こんな挙動なものだからバッチ処理にも使えないし、なにやら中途半端な感じの機能。コマンドラインでの指定方法は以下の通り(A.rppをB.rppに保存)。
    > reaper.exe -saveas B.rpp A.rpp
  • -renderproject filename.rpp
    プロジェクトファイルに対してレンダリング機能を呼び出す。別の記事にする予定。
  • -batchconvert filelist.txt
    REAPERのBatch Converterを呼び出す。これも別の記事にする予定。


という感じで、今回はざっくりとREAPERのコマンドラインオプションを紹介しました。恐らく利用者が極めて少ないからなのか、どの程度役に立つのか未知数な機能がちらほらあったりしますね。今回取り上げていない機能については、次回以降にでも書いていこうと思います。


このブログについて
ぺろりがREAPERで遊びたいというだけのブログかもしれない

必ずこちらをお読みください

twitter: @pelori

管理人用
  • ライブドアブログ