Posted at

vvvv-PatchboxでVVVVの開発環境を拡張する

More than 3 years have passed since last update.


vvvv-Patchbox

vvvv-Patchbox

https://vvvv.org/contribution/vvvv-patchbox

VVVVに便利機能を追加するツールボックス的な感じのContributionsです。

テンプレート機能とかが追加されてだいぶ良い感じに捗ります。

patchbox.PNG


機能一覧



  • Patchlet テンプレート


  • Operandomatic 計算系ノード生成


  • IOScaler IOBoxのリサイズ時にフォントサイズ連動


  • IOType IOBoxの種別を簡単に変更


  • MagicIO IOBoxを行列数指定で生成


  • Commander パッチウィンドウの操作


  • SnapToGrid ノードの移動・リサイズ時のスナップ


導入

Contributionsのdownloadに載っているURLだと1ヶ所バグっているので、修正版をGitHubから持ってきたほうが良いです。

https://github.com/velcrome/vvvv-Patchbox/tree/change_iobox_type

Clone or download から Download ZIP で。

適当なディレクトリに配置したら、 Patchbox (VVVV).v4p を開きます。

そのまま Alt+R のショートカットで root.v4p が開くので、Patchboxノードが追加されていることを確認してください。

rootv4p.PNG

この状態で root.v4p を保存すればVVVV起動時にPatchboxが常にインクルードされた状態になります。

ただし、Patchboxのパッチウィンドウを開いたまま保存すると起動時に毎回開いてしまうので、Hideしてから保存した方が良いです。

Hideはノードを右クリックするか、サブパッチ上でAlt+3。

ちなみにPatchboxサブパッチ内で個別の機能がON/OFFできるので、要らない機能は切っておくと良いかも。


Patchlet (テンプレート)

NodeBrowserからmake <テンプレート名>でパッチにテンプレートを展開できます。

テンプレートは予めPatchletディレクトリにv4pファイルを入れておく必要があります。

patchlet.gif

デフォルトではmainloop, tty, render9の3つが用意されています。


MagicIO (動的IOBox生成)

col3io5x5toggle4x7 といった型と行列数でIOBoxを生成できます。

対応している型は io, int, bang, toggle, press, string, col, enumの8種類。

iomagic.gif


Operandomatic (計算ノード生成)

計算系ノード(+α)の生成を楽にするための機能です。

+100*2.5>0.1のようにシンボル1文字+数値の入力で、任意の値を設定済みの計算系ノードが作れます。

operandomatic2.gif

カンマ区切りで値を入力した場合はSpreadを設定してくれます。

対応しているシンボルとノード、指定した値が設定されるピンは次の通り。

symbol
node
pin

+
Add (Value)
Input 2

-
Subtract (Value)
Input 2

*
Multiply (Value)
Input 2

/
Divide (Value)
Input 2

%
Mod (Value)
Input 2

@
GetSlice (Spreads)
Index

=
EQ (Value)
Input 2

<
LT (Value)
Input 2

>
GT (Value)
Input 2

i
I (Spreads)
.. To [


内部実装

だいたいこんな感じの流れ。



  1. PatchAlias (VVVV ActivePatch)ノードで編集中パッチファイルの情報を取得


  2. GetPatch (VVVV)Patch Changesピンで編集されたXMLを読み取る

  3. 読み取ったXMLを正規表現でパースしたりXMLを生成したりする

  4. 生成したXMLをSetPatch (VVVV)ノードで設定

もともとVVVV側で開発環境そのものを拡張するためのノードが用意されているみたい。

vvvv-Patchbox自体にもそれをサポートするようなサブパッチが含まれているので、似たようなパッチ作っていろいろ便利機能追加してみても面白そう。