JSFX

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

REAPERのチャンネルルーティング制御用FX

今回はREAPERでTrackのチャンネルを切り替えたり、チャンネルルーティング設定を行うためのFX(JSFX)を紹介します。地味なユーティリティではありますが、いざという時にかなり役立ちます。


JSFXについて

JSFXはREAPERのスクリプトベースのエフェクト機能で、VSTなどのエフェクトと同様に扱えるものです。FX挿入時に、[All Plugins] か [JS] という項目の中にあります。

AddFX_JSFX

Channel Mapper-Downmixer

ChannelMapper01

これはいわゆるChannel Matrixで、各入力チャンネルを任意の出力チャンネルに出力することが出来ます。以前こちらの記事で紹介したMeldaのプラグイン、MChannelMatrixと同じような機能ですね。

基本的な使い方はTrack FXに以下のJSFXをインサートして、チャンネル入出力のチェックを設定するだけです。

JS: Channel Mapper-Downmixer (Cockos) [utility/channel_mapper]

信号の流れはマトリックスの上から入力音声が入ってきて、チェックを入れた場所から右側へ出力されていくという感じです。音声を流すと、■の中に音量を表す緑色の点が表示されるので、分かりやすくなっています。

ChannelMapper_InOut

いくつかオプション設定などもあるので、順に見ていきましょう。

  • Channels:チャンネル数
    Trackのチャンネル数設定です。変更すると実際にTrackのチャンネル数が変更されます。
  • Unmapped outs:出力へマッピングしなかったチャンネルの扱い
    出力チャンネルに何もルーティングしなかった(横方向に全くチェックが付いていない行)場合に、何の音声を出力するかを選ぶことが出来ます。
    • Pass through
      その出力チャンネル番号に対応する入力チャンネルの信号をそのまま流します。つまり出力2chであれば、入力2chの音声が出力されます。
    • Zero out
      そのチャンネルからは何も出力されないため、無音となります。
  • Downmix:Downmix時の音量オプション
    同一の出力チャンネルに複数の入力チャンネルがルーティングされた場合、それらの音がDownmixされて出力されますが、その際の各入力チャンネルに適用される音量調整値を設定できます。
    • None
      音量調整を行いません。
    • Shared ins -3dB
      音量調整値として-3dBが適用されます。
    • Shared ins -6dB
      音量調整値として-6dBが適用されます。
    • User mix
      音量調整値を入力チャンネル毎にスライダーで調整出来ます。
  • Reset
    各種設定を初期設定に戻します。
  • Clear
    マトリックスのチャンネル指定のチェックを全て外し、User mixの値も全てクリアします。

Channel Router

ChannelRouter

Channel Routerは、入力チャンネルのペア(1ch+2chなどのステレオ信号)を別の出力チャンネルのペアに流す機能です。以下のJSFXをインサートして設定を行います。

JS: Channel Router w/Polarity [IX/PhaseAdjustingRouter]

各種設定項目は以下の通りです。

  • Input Channels
    入力チャンネルのペア指定。
  • Polarity Mode
    ステレオのどのチャンネルを反転させるかで、Normalは反転なし。
  • Output Channels
    出力先チャンネルのペア指定。
  • Output Mode
    出力先チャンネルに流れている信号とのMix方法。
    • Replace
      [Input Channels] の信号で完全に置き換えます。
    • Merge
      元から流れている音声と [Input Channels] の音声がMixされて出力されます。

8-Channel Input Switcher

8ChannelsInputSwitcher

これは8チャンネルを使用した4つのStereo音声のどれか一つを選んで出力するというSwitcherです。各ステレオ入力の音量も調整できます。以下のJSFXをインサートして設定を行います。

JS: 8-Channel Input Switcher [IX/Switcher2]

各種設定は以下の通りです。

  • Output Source
    出力するStereoペアのチャンネルを指定できます。
  • Level 1+2/3+4/5+6/7+8 (dB)
    各Stereoペアの音量調整が可能です。


これら以外にも、REAPERのJSFXにはチャンネルに対する操作を行うFXがありますので、いろいろと試してみると新たな発見があるかもしれません。


REAPERで動画編集:オシロスコープ・周波数スペクトル表示

音楽を再生するだけの動画などでよく使われる、装飾用の波形表示(オシロスコープ)や周波数スペクトル表示。いつの間にかREAPERのVideo Processor(以下VP)プリセットに追加されていました。

波形データを使った画像処理

そもそもオシロスコープや周波数スペクトルを表示出来るようにするためには、音声波形の情報をどっかから持ってこないといけないのですが、実はREAPER v5.97からそれを実現するための機能が実装されています。

JSFXの[JS: video sample peeker]が動画へ音声データを渡してくれるものになっており、このFXの次にVPを挿入してやることで、VP側で音声データを使った処理が行える訳です。

この順番でFXを挿入するとこんな感じ。
VP_VideoSamplePeeker01
2番目のFXはVideo Processorです(プリセットを切り替えたため名前が切り替わっている)。オシロスコープ・周波数スペクトルいずれもこの順で使うことが出来ます。


オシロスコープ

オシロスコープをもとにした映像効果を表示したい場合は、VPでプリセット [Synthesis: Decorative Oscilloscope with Blitter (requires JSFX video sample peeker)] を使用します。

[mode]パラメータで水平・垂直・極座標系の表示を切り替えられます。他にもいろいろパラメータがありますが、いじるとはっきり動きが変わるものが多く、さほど悩むことはないかと。
VP_OscilloscopeFX


周波数スペクトル

周波数スペクトルをもとにした映像効果を表示したい場合は、VPでプリセット [Synthesis: Decorative Spectrum Analyzer (requires JSFX video sample peeker)] を使用します。

このプリセットでは、同時に2つの方法で周波数スペクトルを表示出来ます。時系列のスペクトログラムが上側に、現在の瞬間的なスペクトルが下側に表示されます。[spectrogram size]の値を変えてやることで、画面上でのそれぞれのサイズの割合を変えたり一方だけを表示する事も可能。
VP_SpectrumFX



これらはシンプルなものではありますが、音声情報をもとにした映像効果を表示出来るようになったのはありがたいですね。

従来はVPが完全に描画プログラム用として閉じたシステムだったために、かなり制限が強い印象がありました。しかし、今回紹介したものを実現するための仕組み(具体的にはJSFXから共有メモリを使ってVPへデータを渡す仕組み)が新たに加わったことで、VPのプログラミングは恐らく別次元と言っていいほど自由度が高くなったと言ってもよいと思います(まぁそれを本気で使えば使うほどプログラミングが複雑化するのでアレですが)。

とはいえ、このあたりはまだしっかりと自分で検証出来てはいないので、どこまで出来るかはそのうちいいネタがあったら試してみたいですね。


REAPERでLaunchPadMiniを使う (2)

今回もLaunchPadMiniを使う方法ですが、前回の記事の最後で触れていた「別の方法」を試したので、書いておこうと思います。
ネタはいたってシンプルで、JSFXの[JS: MIDI Map To Key v2]を使うだけです。

MIDI Noteのマッピング方法

[JS: MIDI Map to Key v2]を使うと、MIDI Noteメッセージをある変換テーブルで任意のNoteに変換してやることが出来ます。これをFXChainの最初の方に挿しておけば、それ以降のFXにはマッピング後のNoteが送信される訳です。

MIDIMapToKey_FX01
 ↑ 最初にMIDIをMappingして、VSTiには変換後のMIDI Noteが送信される

あとは [JS: MIDI Map to Key v2] の[Mapping File]に設定するkeymapファイルを用意できれば終わりなのでカンタンですね…。そう、簡単なんですが、これがまぁだいぶ面倒だったりします。

Keymap設定ファイルはREAPERリソースフォルダ(REAPERメニューから[Options>Show REAPER resource path ...]で開ける)以下にある [Data/ix_keymaps] に置くことになります。デフォルトで [00 - Default Mapping.txt] というファイルが置いてありますが、これがNote無変換のいわゆるテンプレになっていて、このファイルをコピーして自分独自の設定を作ります。

自分の設定はこのテキストファイルの各行一番左の値を変更することで行います。
まずはLaunchPadMiniのどのPadがどれに対応しているか把握し、それぞれどのノートに割り当てるかを記述していけばOK。といいつつ四角のPadだけでも64個あるのでそこそこ大変です。
これを様々なスケールに対応したり、スケールのルートに応じて配置ずらしたいとか言い始めると作業量が一気に爆発します。

・・・こんなのイチイチ全部やってられるかと。

設定ファイルの作成

そこでこのファイルの中身をよく見ると、Tab区切りのテキストなんですよね。
あーこれならあいつが使えるかも?
ってことでExcelの出番です。 ※Excel2016使用
ファイルメニューから[開く]でファイルのタイプを[テキストファイル]形式にして、上記テンプレファイル(01 - Default Mapping.txt)をコピーしたものを開きます。
どういうテキストファイルか聞かれますが、タブを読み取る的な設定にしてやれば大丈夫です。

MIDIMapToKey_ExcelTxt01

MIDIMapToKey_ExcelTxt02
 ↑ インポート設定はこんな感じ(デフォルトのままいじってないです)

これでめでたく読み込めました。
MIDIMapToKey_ExcelTxt03

あとは表計算機能を使って、ルート音から各パッドのNoteを決定してやるように式とかを書いていけば結構楽になります。特にセル選択カーソル右下の四角を引っ張って連続でセルを記述していく機能をうまく使えるように工夫すると、劇的に作業量が減ります。

自分はこのシートの下の方(MIDI Noteマッピング設定の終端より下)にパッド割り当てのテーブルを一旦作って、それを各ノートの値の部分が参照するようなものを作りました。
これによって、
・ルート音のNoteを変えるだけで全体をずらすことが出来る
・様々なスケールやクロマチック設定も最小限の設定変更だけであとは自動的に反映可能
というところまでは実現出来たので、満足しています。
QS_20180907-024622

もうちょっとExcelに詳しい人はもっとスマートな方法知っていそうですが、自分はこんなので精一杯。
ちなみにこういったパッドマトリックス系デバイスでよく実装されているScaleModeとかChromaticModeとかありますが、それぞれ配置規則が違うので、上の図のPadテーブルに相当するところはそれぞれ別の式を埋めてやる必要があります。
つまりそれぞれの配列方式毎に個別にシートを用意する必要があるということですね。

ということでこんなExcelシートが出来てNote設定が意図した感じになったら、あとはタブ区切りのテキストファイルとして保存してやればkeymap設定ファイルの完成です。
(Excelの[ファイル>名前を付けて保存]から[テキスト(タブ区切り)(*.txt)]で保存)
Note設定より下に、上記のテーブルとかコメントとかが書き出されてしまいますが、[JS: MIDI Map to Key v2]では参照されないらしく、特に動作に影響ないのでわざわざ消してやる必要がないというのもラッキーというか扱いやすいところです。
MIDIMapToKey_ExcelTxt04
 ↑ Excelから書き出されたテキストファイル(タブ区切り)

あとはこれをリソースフォルダの Data/ix_keymaps に配置してやれば利用できます。
だいぶ面倒に感じるかもしれませんが、Excelファイル作成のコツが分かってしまえばあとはいろんな応用が利くので、興味のある方は是非トライしてみて下さい。
例えば機材メーカーが提供しないようなスケール定義やパッド配列定義も自由自在に可能です。
ちなみに自分は以下のものを作りました
・とにかくレンジを広くするための設定(例えばC1~C9までのスケール割り当て用)
・ChromaticなScaleMode配列の設定
LaunchPadMiniはベロシティ感知がないので用途が限られますが、ここまでやるともはやLaunchPadPro(Velocity&Pressure感知付き)が欲しくなってきてしまいますねw
自分はREAKTORのThe Finger用に上記設定(特に前者)を作りました。まぁこの場合Finger側Snapshotも全部設定を設計しないといけませんが・・・。


以上が今回試した、LaunchPadMiniをREAPERで手動設定して使う方法、になります。
まぁこんな面倒なこと普通の人はやらないか(やる必要がない)。
でもMIDI Noteのマッピング方法はいろいろと応用も利くので、参考になるのではないかと思います。

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

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

twitter: @pelori

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