VDMXとかも最近いじってて思うのが、Resolumeにもマイクから自動でBPM検知するやつほしくね?ってことです。
これがあればBPM同期した絵が自動で出てくるのでお酒が飲めるし自分がつぶれてもResolumeくんが頑張ってくれる!よりBPMに即した表現ができ、頭のリソースを別の表現に割いたり、省力化してVJできるようになります。
でもResolumeにはAutoBPMがない・・・
ので他のソフトからBPM検知して送ってみては・・・?みたいな話になります。
↓iPhoneアプリであるbeat detectを使った方法はSzkさんのブログのほうにありますのでこちらを参照してください。(こちらはAbletonLinkといまた別の規格を使っています)
用語説明
新しい用語がひとつ。
・OSC(Open Sound Control)
次世代のMIDI的な規格の一です。
MIDIがどちらかというとコントローラー⇔各種ソフトみたいな通信を行うのに対し、OSCはソフトからソフトへ比較的直接信号のやり取りをしたい、みたいなスタンスで作られてる感じがします。
このブログを見てる人にいうなれば、「NDIのMIDIコン版」みたいなイメージがわかりやすいかと。
通信ですが、IPアドレスとポートを指定して行います。
Resolumeを例に上げると、フェーダーに「composition/layers/1/video/opacity」みたいなコードのようなもの(OSCアドレス)が当てられていて、同じポート内でこのアドレスに対して命令を送るとResolumeに反映されるわけです。
何ができるか、というとほかのソフトからほかのソフトに命令をダイレクトに送れます。
そして以下の特徴があります。
・MIDIよりダイレクトに制御可能(ONにしておけばマッピングがいらない)
・値をほかのソフトに返すことも可能
・LAN内ならほかのPCやiPadアプリから信号を送れる
詳しくは以下のサイトを見てください。
使用するソフト
・Sound2Light
音声入力を解析し、OSC信号に変換してくれるソフト。
BPMだけじゃなく音の各成分をOSC信号に変換できるのが強みです。
音響反応でいろいろやりたい人もResolumeのデフォルトの音響反応より高機能で帯域をマウスで簡易に選択できるため有効なツールだと思います。
・TouchDesigner
以前こちらのブログで仮想MIDIコンの作り方について紹介しました。
↓基本的な信号変換などについてはこちらの記事も読んでみてください。
非商用に限り無料です。
何に使うか、というとOSCのメッセージを変換するのに使います。
本来は嚙ませなくてもいけるのでは・・・?なんですが、
・現時点でSound2LightにはBPM Targetに任意のOSCアドレスを入れられないバグがあり、現時点で修正されていない
・BPMがおかしくなったときにMIDIコンで即座に切り離すことができない
といった理由でTouch Designerを通すことになります。
もちろん詳しい人であればTouchDesignerだけでBPM検知をしてResolumeに送ることができるにはできるのですが、今回の方法の方が導入しやすかったり、いろんなパラメータをプレイ中でも変えやすいと思います
下準備
1.IPアドレスを確認
OSCの下りで言った通り、IPアドレスが通信に必要なので最初にIPアドレスを調べます。
Windowsマーク右クリック→ファイル名指定して実行→cmd→ipconfigという人によってはおなじみの手順です。
このうち下の方の「IPv4アドレス」を控えておきます。
また、ファイアウォール等によって通信がうまく行えないこともあるので、必要に応じて設定しておきます。
2.Sound2Light、Resolumeの設定
デフォルトのポートはSound2Lightで「8000」、Resolumeで「7000」なのでそのままで大丈夫かと思います。(Sound2LightからResolumeに直接OSC送りたい場合などはへ統一してください。)
Sound2LightのSettingsよりOSC IP Adressにさきほど調べたIPアドレスを入れます。
Portは変更しなくてもいいですがほかのソフトと競合する場合は変更してください。
その下のInputから入力を選びます。USBマイクやオーディオインターフェース等使いたい入力を選んでください。
Resolume側ですが「Avenue→Preferences」の「OSC」から「OSC Input/OSC Output」をONにします。
とりあえずこれでこの2ソフトについては設定OKです。
Touch Designerを組む
Touch DesignerでOSCアドレスとポートを変換します。
Touch Dedignerですが初期設定だと画面アクティブじゃない状態では処理を行わないようになってるので、「Preference」より「Stop Playing when Minimized」を✕にします。(これをしないとTouchDesignerがアクティブじゃないときに機能が使えません)
1.右クリックからAdd Operaror。CHOPの中から「OSC In」を選んでオペレーターを追加します。
「Network Port」にSound 2 Lightのポート(設定変更してなければ8000)を入れます。
うまくつながれば下図のようにオペレーターが入力を拾ってくれます。
2.CHOPより「Select」を追加し、「OSC In」と繋げます。
Channel NamesとRename fromに「s2l/out/bpm」(右の黒三角から選択可)、Rename toにResolumeのBPM制御アドレスである「composition/tempocontroller/tempo」を入れます。(ほかのソフトの場合でもそのソフトのBPM制御アドレス入れれば制御できます)
ちなみにこのBPM制御アドレスはResolumeでいうとここにあります。
3.次に「OSC Out」を繋ぎ、今度はResolumeが受け取るポート(デフォルトで7000)を指定します。Numeric Formatは「Int」で。
これでResolumeにSound2LightからBPMが送られていればひとまずはOKです。
BPM連動ON/OFFを切り替えられるようにする
ですが、この状態だとBPMがおかしい状態になったとき切り離すことができません。(Trapとかのジャンルだと四つ打ちじゃないのでそのときにBPMおかしくなったりすることはある)(BPM大幅に変わったときにはBPM検知が10秒くらいは遅れる)
そういうときのために、MIDIコンなどによって切り離す機能をつけます。
ただ、TDにMIDIコンで入力入れてそれをResolumeに入れてる場合、「MIDIコンが2台のソフトで取り合いになりどちらかのソフトで動作しなくなる」問題が起こりえます。
BPMSyncのためだけにMIDIコン一台を入れるのもなんかなあ・・・という人もいるのでここはいろいろ工夫必要な点です。
TouchDesignerでMIDIコン変換していれば特に問題なくいけるのですがこの点に関しては一応代替策はあるのであとでフォロー入れます。
LaunchPad等複数ソフト扱えるMIDIコンを普段使ってればそこのボタンに配置するのもありです。
この辺は運用によっても変わってくるので、そのスイッチングの部分だけ先に。
クリックできるボタンを押すとON/OFFが切り替えられるようなシステムについて。
分かりやすいように、MIDIコン等の入力を模したスイッチを置いときます。
「Add Operator」から「COMP」→「Button」でButtonを追加します。このままでもいいんですが、いろんな入力が代わりにつけられるように押したときだけONになるモードにします。(「Button Type」を「Momentary」に)
ここにさきほどと同様「Select」をつなぎます。Channel Namesの横から入力をひとつだけ選択してください。
その次にLogicを繋ぎます。これは入力が変化したときに対し1/0の値をスイッチ的に入れるCHOPです。
「Channel to OP」をToggleにすると、入力が0からほかの値になるたびに1⇔0を行き来する感じになります。
さきほど作ったOSC Outをクリックし、Activeのところの+マークをクリック。
値に1が入ってる状態にします。
次にLogic1の右下のキラキラマークみたいなやつを押してアクティブ状態にし、
先ほどの「oscout1」の「active」のところにドラッグアンドドロップし、「Export CHOP」
で値を反映させます。
すると以下のような感じになります。
これでButtonの右下のキラキラマーク押せばボタンが使えるようになります。
ここまでで「ボタンをクリックすればBPMSynモード/Tapモードが切り替わる感じのシステム」が完成しました。
MIDIコンが独立している場合、もしくはTDで仮想MIDIコンを作っている場合はこのボタンの代わりに「MIDI In」CHOPでボタンをアサインすればOKです。
プレイ中にTouch Dedignerの画面を開くのもなかなか手間なので、Resolumeの画面を閉じずに操作したい場合は「Resolumeの使わないかつところに」からTouchDesignerにOSCで命令送るのがいいかな・・・という所感です。
BPMの「-」ボタンから命令おくる例で。(本当はAbletonLINKのボタンにアサインしたかったのですが対応してませんでしたorz)
1.Resolumeから割り当てたいボタンのアドレスを調べ、OSC OutPutをOnにします。
2.次にPreferenceからOSCのOutputアドレスを設定し控えます。
3.Touch Designerに戻り、先ほど作ったButtonの代わりにOSC Inを繋ぎ、ResolumeのOutputのポートを入れます。
これを入力として使えば、ResolumeのTempo「-」ボタンを押すたびにBPMAutoのOn/Offが切り替えできます。
この-ボタンをMIDIコンにアサインすればMIDIコンでも動作します。
人によってはDashboardや空クリップのパラメーターにアサインするのもありかもしれません。
実際のプレイでの使い方
Sound2Light、TouchDesigner、Resolumeを立ち上げればOKです。
BPMRangeについては、Autoよりは手動のほうが急な変化なくていいかと。
下の一時停止ボタンは押すと最後のBPMで固定されてしまうので基本的には押さないようにしてください。
あと、BPMは合うもののesyncはされないので、必要に応じて自分で行ってください。
精度ですが、音楽ジャンルが決まっててドラムが4つ打ちになってるイベントに関しては実用度高いです。アニソンやアニリミ等でもBPMゆっくり変化するパーティやDJさんの番手ではかなりいい感じに使えるかと。
逆に4つ打ちじゃない曲や急なBPM変化にはやや弱かったりします。頑張ってBPM検知しようとするものの迷子になることもなくはないので、BPMに関しては目視確認しつつたまにTapで補っていきましょう。
ということでSound 2 Light+Touch Designerを使ってBPM検知する方法でした。
あと、難しい・・・ってひとのために
今回のTDのプロジェクトファイル的なのを置いときます。
他の環境でうまく動作するかは分かりませんがとりあえず使ってみたいという方はぜひ。
・マウスボタンで動作するもの「s2l to resolume click.toe」
・Resolumeの「-」ボタンで動作するもの「s2l to resolume osc.toe」
ポートを確認しつつ使ってみてください。