creation/cr_maxrnboexternal
Create Max external using RNBO
Create Max external using RNBO
-
立体音響(8chCube)のPanで使用するExternalオブジェクトを、RNBOを使用して制作してみました。
実際には、単純な[tr.pancube~]と[tr.pancuberatio~]を作りました。さて、RNBOと言うMax用のライブラリィが出来た事を知って早速インストールしたのですが、諸事をこなさなければならない日々が続き、実際に使ってみるタイミングを見つけられませんでした。が、ようやく試す事が出来ましたので、軽く紹介させていただこうとなった次第です。
先ずは、RNBOに付いてですが、Max上で使えるアドオンになっていて、Maxのパッチにそっくりなオブジェクトが用意されています。Maxのパッチャー内に、New objectとして[rnbo]オブジェクトを作ると、[patcher]オブジェクトの様に新しいパッチャーが開くので、そこにパッチを書いていきます。
ある程度、Maxのパッチを組めさえすれば、それ程苦労しなくてパッチを組む事が出来ます。ただ、前述したように、Maxのパッチにそっくりなオブジェクトが用意されているとは言うものの、[if]オブジェクトが使えなかったり、[inlet]が[in1][in2]に変更されているなど、最初は戸惑う場面も多いので注意が必要かと思います。 特に、[expr]を使用する際には、[expr $i1*2]のようにインレットを指定するとエラーになるので、[expr in1*2]とします。
有り難いのは、最初から[twopi]や[pi]が使える等、ちょっとした気配りはとても嬉しいですね。勿論、CやJSでオブジェクトを組む手間からすれば、なんと言っても、殆どMaxとも言える手順で組んだパッチがコンパイルされて.mxoのファイルになってしまうのは、何とも進化したなと言う印象です。さて、< Spatial Acoustic Music Workshop >の項でも紹介した様に、ここの所、立体の空間音響を使用する機会が多いので、今回は、その最も基本とも言える、8chCubeのパニングをするためのExternalオブジェクトを作ってみる事にしました。
8本のスピーカーを正立方体の各頂点に配置した空間用のパニングをするためのシンプルなオブジェクトです。3Dパニング用のプラグインは、Spat5や3DX等、既に様々な物が出て いますので、ここでは、簡単なアルゴリズムによる空間パニングをと言う事で作成しています。先ずは、単純なLRパン用のパッチを組み、それぞれの値を、Left,Right,Front,Rear,Top,Bottom用の値として使用し、8個それぞれのスピーカー用には値を掛け合わせていきます。
Speaker 1 : Left*Front*Top
Speaker 2 : Right*Front*Top
Speaker 3 : Right*Rear*Top
Speaker 4 : Left*Rear*Top
Speaker 5 : Left*Front*Bottom
Speaker 6 : Right*Front*Bottom
Speaker 7 : Right*Rear*Bottom
Speaker 8 : Left*Rear*Bottom
実際のrnboパッチは、つぎ様な感じになりました。
このパッチの上の方にある、[in~ 1][in 2][in 3]が、Externalオブジェクトのインレットになります。[out~ 1]〜[out~ 8][out 9]がアウトレットになります。
因みに、この先で出来上がったExternalオブジェクト上では、[inlet 1]がオーディオ入力、3Dの座標はリスト形式で[inlet 2]へ、パニングのratioを変更するために[inlet 3]を用意しました。 Externalオブジェクト上では、[outlet 1]〜[outlet 8]までがCubeの各スピーカー用音声出力、[outlet 9]がリスト形式による3D座標データとなります。こうして組んだRNBOパッチは、RNBOの機能を使って、Externalオブジェクトに変換します。(numberbox等の必要のないオブジェクトは削除してから変換しています)
サイドバーにある○で示したアイコンをクリックしてサブメニューを表示、書き出すファイル名などを指定して変換します。
[tr.pancuberatio~]としました。出来上がった[tr_pancuberatio~]と言うExternalオブジェクトは、Maxからパスが通っているフォルダに入れる事になりますが、とりあえず、Externalsフォルダに入れても良いと思います。(但し、ここに入れると、Max自体のバージョンアップをした時に面倒にはなりますが・・・)
因みに、Macの場合には、アプリケーションフォルダにある[Max.app]を右クリック(または、[Control]クリック)して、サブメニューから[パッケージの内容を表示]、[Contents][Resources][C74]とフォルダを探せば、[Externals]フォルダに辿り着けます。
そこに自分用の新しいフォルダを作って、オブジェクトを入れるのが良いと思います。因みに、Maxのサブパッチやーとして作ったパッチ等も、ここに入れれば、Externalオブジェクトの様にして使えます。さて、Externalオブジェクトは出来上がったので、後々、忘れた頃に使う場合の事も考え、helpファイルを作っておくと良いでしょう。
ExternalファイルとHelpファイルはここにあります。
出来上がったExternalオブジェクト [tr_pancuberatio~]を使ってみる
-
出来上がった[tr_pancuberatio~]を実際に使って、[spacecube]と言う名のMaxパッチを作ってみます。
Cubeの3D空間の中のランダムな位置で、cycle~の音をそのまま使って、ランダムなピッチの音が鳴るシンプルなパッチですが簡単に説明をしておきます。先ずは、3Dのランダムな座標とランダムなピッチの音が鳴るサブパッチ[kirari]を作ります。
サブパッチの中身ですが、オブジェクト[adsr~]に、音をオンオフするための1を送ると、[adsr~]で指定したタイミングでボリュームデータが送られるので、[*~ 0.]を使って音声の音量をコントロールしています。
[delay]を使って音をオフするための0を送っています。
[random 200]は音をオンするためのタイミング、[random 3000]は音のピッチ用、また、3つの[random 20001]は3Dの座標用(xyz)です。
[inlet 1]は[metro]のオンオフ、[inlet 2]はボリューム用です。
[outlet 1]から音声、[outlet 2]からは座標データがリスト形式で出力されます。音を鳴らす前に座標を決める必要があるので、右寄りになっています。
サブパッチが出来たので、[spacecube]を作っていきます。
[spacecube]パッチでは、4音を鳴らすために、[tr_pancuberatio~]オブジェクトを4つ使っています。
[kirari]から出力される音声と座標データを、それぞれ[tr_pancuberatio~]に入力して、[dac~]の各チャンネルに音声を送るだけの単純なパッチです。
右の方にあるナンバーボックスで、音量をコントロールします。
なお、作った[spacecube]パッチはここに入れてあります。
テキストファイルになっていますので、テキストをコピーして、Max上で、(出来れば新規ファイルで開いた)パッチャーウィンドゥにペーストすれば、Maxのパッチャーとして変換されます。
当然ですが、[tr_pancuberatio~]オブジェクトが正しくインストールされていない場合は残念ながら動きません。