びぃえるくぅと。

ガラケーは打楽器。

CentOS8 + Rootless Podman + NextcloudでVJ素材管理環境作りたい

QNAP か Synology の NAS 買えよって話なんですけど、最近フットレストと化している足下にある富士通のサーバーがキラキラした瞳で見上げてくるので・・・。

注意

全然詳しくない領域において試行錯誤した作業の備忘録となので、問題解決の方法が雑であるなど、あまり綺麗ではありません。あと今回VJはそこまで関係ないです。

前提

  • 家庭の閉じたネットワーク内での運用
  • CentOS が Docker 捨てたならその流れに乗る (Docker わざわざ導入するのが面倒)
  • podman-compose は使わない
  • Podman は Rootless で動かす

作業環境

  • サーバー機 Fujitsu PRIMERGY TX1310 M3
  • OS CentOS 8 (8.1.1911) Minimum Install
  • ストレージ
    • 内蔵SSD (Plextor M6S) → OS のインストール先
    • 内蔵HDD (WD Red 4TB) → Nextcloud のストレージとして
  • ソフトウェア
    • Podman 1.6.4

下ごしらえ

必要なソフトウェアをインストールします。

sudo yum install -y podman

Nextcloud を9000番ポートで公開するために、ファイアウォールの設定をします。

sudo firewall-cmd --add-port=9000/tcp --zone=public
sudo firewall-cmd --permanent --add-port=9000/tcp --zone=public
sudo firewall-cmd --reload
sudo systemctl restart firewalld

/etc/fstab を編集し、OS起動時に内蔵HDDが /mnt/storage にマウントされるようにします。
エディタは何でも良いですが、emacs の場合 /sudo::/etc/fstab とすることで良い感じに開けます。

ls -l /dev/disk/by-uuid
# 下記のような結果が出力されるので、/dev/sd?? と UUID との対応を見て fstab に書き込む UUID を探します
# lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ********-****-****-****-************ -> ../../sda2
# lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ****-**** -> ../../sda1
# lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ********-****-****-****-************ -> ../../sdb1

emacs /sudo::/etc/fstab

一旦再起動してマウントされているか確認します。

そして Nextcloud の保存先となる /mnt/storage/nextclouddata の用意をします。

sudo mkdir /mnt/storage/nextclouddata
chown 1000:1000 /mnt/storage/nextclouddata
chcon -R -t svirt_sandbox_file_t /mnt/storage/nextclouddata

chron のところは https://github.com/containers/libpod/issues/3683#issuecomment-517237050 を参考にしました。

Nextcloud を起動する

podman-compose 使わない縛りをするのと、podman play kube が調子悪いので、コマンド手入力でポチポチ進めます。
なお Redis は必須ではないので、適宜 Redis に関する記述やオプションなどは消しても動きます。

まずは pod を用意します。pod 内で稼働する rootless コンテナ同士は localhost を介して相互に通信できます。

www.redhat.com

podman pod create --name nextcloud --publish 9000:80

次にコンテナを起動していきます。データベースのパスワードなど、必要に応じて適宜変更してください。

MariaDB 起動時のオプションについては https://hub.docker.com/_/nextcloud/ に記載されていたものをそのまま書いています。

podman run -d --name db --pod nextcloud \
       -v mariadb-data:/var/lib/mysql \
       -e MYSQL_RANDOM_ROOT_PASSWORD=yes \
       -e MYSQL_DATABASE=nextcloud \
       -e MYSQL_USER=nextcloud \
       -e MYSQL_PASSWORD=nextcloud \
       mariadb --transaction-isolation=READ-COMMITTED --binlog-format=ROW
podman run -d --name redis --pod nextcloud -v redis-data:/data redis       

Nextcloud の保存先が /mnt/storage に作成したディレクトリに向くようオプションを設定します。

podman run -d --name app --pod nextcloud \
       -e MYSQL_HOST=127.0.0.1 \
       -e MYSQL_DATABASE=nextcloud \
       -e MYSQL_USER=nextcloud \
       -e MYSQL_PASSWORD=nextcloud \
       -e REDIS_HOST=127.0.0.1 \
       -v nextcloud-html:/var/www/html \
       -v /mnt/storage/nextclouddata:/var/www/html/data \
       nextcloud

今回できなかったこと

  • 最新の podman (1.8.x) を試すこと
  • podman play kube を使うこと
    • Kubernetes に詳しくないので・・・
    • ボリューム周りの機能がまだ貧弱そうに見えた
  • MariaDB のソケットをボリューム経由で Nextcloud に渡すこと
    • ソケット自体は見えているのになぜかうまくいかなかった
  • systemd と連携させること

終わりに

RedHat 先生が意気揚々と Docker を置き換えた割には Podman の使い勝手が微妙じゃない?と思うものの、Rootless で動かせたりと面白さもあります。

参考文献

VVVV で masawada モデルを使って遊ぼう

この記事は masawada Advent Calendar 2019 の 14日目です。昨日は id:mazco さんでした。

というか凄いお久しぶりです。なんと私ベトナムホーチミンにいるんですよ。11月に一時帰国を挟みましたが 4ヶ月目になります。 そしてその一時帰国中のスキを突いて Surface Pro 7 とか Apple Watch series 5 とかを買ったりしました。

そういえばベトナムって日本との時差2時間ありましたね。完全に公開タイミングミスりました。

masawada-3d

大学の時の友人 masawada 氏が 本人の3Dモデルを公開 していたのでとりあえず遊ぼうかという内容なのですが、遊び方を工夫したいと思います。(Apple Watch を買ったので masawada モデルをその上で動かすことを考えたのですがスキルがありません。)

とりあえず、いつもの VVVV https://vvvv.org で遊ぼうと思います。

FBX から DAE に変換

VVVV はデフォルトで DAE 形式の取り扱いに対応しています(VVVV上で自由にボーンを動かすとかはできませんが・・・)。 いったん Blender を使って FBX ファイルを取り込み、DAE ファイルをエクスポートしましょう。

ColladaFile ノードを使ってインポートして遊ぶ

とりあえず masawada でオーディオスペクトラムを作りました。

f:id:yadex205:20191214000412p:plain

マイクで拾った音に反応して masawada モデルが伸びます。

CircularSpread を使って円状に配置することもできます。

f:id:yadex205:20191214001008p:plain

どうせなのでテクスチャにエフェクトをかけてかっこよくしましょう。

f:id:yadex205:20191214001300p:plain

音圧で普段の見た目(テクスチャ)を取り戻すようにしました。

終わりに

終わりにへったくりもないですが、VVVV を使うとテクスチャとかモデルとかにエフェクトをかけまくれたり試しまくれたりするのが好きです。 また VVVV でVJするの復活してみようかな。

明日は id:maku693 さんです。

Node.js から ffmpeg 走らせてたら pipe 書き込み量の上限でハングアップしたらしい話

備忘録です(言い訳)。 あと、書いている内容は書いている時の知識に基づくので、誤りがある可能性があります。

状況

買った・ダウンロードした VJ 素材を VDMX で使えるように一括変換するバッチ処理的なものを Node.js で書いてます。

変換には内部で ffmpeg を呼び出しているのですが、進捗を取得できるよう -progress - というオプションをつけて標準出力に情報を書き出し、 それを Node.js スクリプト側で受け取る実装にしていました。

ところが、一定時間 経過すると呼び出している ffmpeg がハングアップするも、 ffmpeg 自体は死んでいないというよくわからない状態に必ずなるようになりました。

なお、呼び出しているのと全く同じコマンドを bash で実行すると ffmpeg はちゃんと完走するため、さらによくわからん状態です。

原因(らしきもの)の特定

はじめ htop とにらめっこしたりして紆余曲折を経ていたのですが、神頼みで ffmpeg hangup で検索したところ、 下記の Stack overflow の QA にヒットしました。

stackoverflow.com

It hangs because after a certain point it can not write to it's output pipe any longer.

なるほど、ffmpeg の進捗情報を pipe 経由で大量に受け取ってたのが原因かもしれません。 ということで ChildProcess.spawn するときに { stdio: 'ignore' } をしたところ、無事に完走できるようになりました。

パイプ以外で ffmpeg の進捗を受け取る

ごめんなさい現在探っている状態なので、見つけ・思いつき次第追記したいと思います。

(追記 2019.04.30) Node.js 側のバッファの問題?

github.com

古めですがこちらの issue に気になる内容があり、適宜 proc.stdout.on('data', (chunk) => {}) してやれば止まらず実行し続けるとのことでした。

そういえばと思い、(すでに stdout の方は .on('data') で拾っていたので)stderr に対して上記の対応をしたところ、 { stdio: 'ignore' } をしなくても止まらず完走するようになりました。

zsh で cd の時に peco 使って移動先を選んだ後に移動までやってもらいたい

実は4月から社会人デビューしていたのですが、 職場で使いやすいターミナル環境整えている時に pecoディレクトリ移動をするいろんな記事を思い出し導入しました。

blog.hotolab.net

試行錯誤した結果、上記の記事を参考にしてバッファ上に

$ cd

と入力されている時だけ C-h を押すと、近い階層のディレクトリ一覧を peco で表示するところまではできました。

function peco-path-find() {
    if [[ $LBUFFER =~ \s*cd\s* ]]; then
        # バッファに cd が入力されていた場合は5階層分のディレクトリを選択できるようにする
        local filepath="$(find . -maxdepth 5 -type d -not -path '*/\.*/*' | peco --prompt 'CHANGE DIRECTORY>')"
        BUFFER=$LBUFFER$filepath
    else
        # 上記以外の場合は近場のファイルやディレクトリを選択できるようにする
        local filepath="$(find . -maxdepth 3 -not -path '*/\.*/*' | peco --prompt 'PATH>')"
        BUFFER=$LBUFFER$filepath
    fi
    CURSOR=$#BUFFER
}
zle -N peco-path-find
bindkey '^h' peco-path-find

ただ、peco で選択したディレクトリをバッファに入力してくれるところまではしてくれるものの、 どうせなら peco で選択した後は実際に移動までしてもらいたいです。

その際に

zle accept-line

をするとバッファ上にある文字列で実行してくれるということを最近ようやく知れたので (参考: https://qiita.com/ymorired/items/4b0d8e95786efc1378b4)、結果以下のようになりました。

function peco-path-find() {
    if [[ $LBUFFER =~ \s*cd\s* ]]; then
        local filepath="$(find . -maxdepth 5 -type d -not -path '*/\.*/*' | peco --prompt 'CHANGE DIRECTORY>')"
        BUFFER=$LBUFFER$filepath
        zle accept-line # これ!!!!!!
    else
        local filepath="$(find . -maxdepth 3 -not -path '*/\.*/*' | peco --prompt 'PATH>')"
        BUFFER=$LBUFFER$filepath
    fi
    CURSOR=$#BUFFER
}
zle -N peco-path-find
bindkey '^h' peco-path-find

zsh については完全に疎い人間なので改めて設定を見直してこんがらがっていますが、開発環境が改善されて気持ち良くなるのは良いですね。

iPad Pro を買ってしまいました。

なので何か書いてみたかっただけです。画面キーボードですが、ボタンが大きいのか意外と普通のキーボードを使う感覚でタイプできなくもないですね。

9.7インチ

私は絵を描く人じゃないのでこのサイズで良いかなと思ってまぁちょうど良さげです。今後はVJ用途に使うつもりなので、そこまでスペース取らずに多機能なのは期待できそうです。iPad mini 4 は流石に小さすぎるかな。。。

Pro

せっかくなら強いやつをと思って Air じゃなく Pro にした訳ですが、使いこなす自信が今のところありません。Apple Pencil が使える以外でみなさんどんな利点がありますか。。。。?

Colorcode VJ がサクサク動いたり、動画編集がぬるぬるできるとかは期待できそうです。

その他

ウェブサイト制作にあたっての検証端末としてはガンガン使っていきます。WebGL で何か書いて iPad Pro の性能を活かして楽しめそうです。後は最近 Objective-Cというか Cocoa API とかに触れるようになったので、次は Swift で iOS 向けアプリとか書いてみたいなーという気持ちもあります。せっかくなら OpenGL を使ったもので。

EC2 の Amazon Linux 2 で rbenv を使わずに Ruby 2.4 を入れる (おまけに Node.js)

気づいたら Amazon Linux のメジャーバージョン(?) が 2 になっていたんですね。おめでとうございます。

面倒なので rbenv 使わず新しい Ruby を入れたい

さて Yahoo! とかで Amazon Linux ruby 2.4 とかで検索してみると、ほとんどの記事が rbenv を使ってインストールしているのですが、 まぁ面倒だしせっかくなのでなんとか rbenv を使わずに完結させたいと思った次第です。

検索結果をよく見てみると AWS 公式の記事があったので見てみると

aws.amazon.com

Ruby 2.4 – 2.4 シリーズの最新バージョン Ruby が利用可能になりました。次のようにインストールします。

$ sudo yum install ruby24

なんだぁ yum でインストールできるんじゃ〜んとか思って意気揚々とコマンドを叩くと

[ec2-user@ip-x-x-x-x ~]$ yum search ruby24
Loaded plugins: langpacks, priorities, update-motd
Warning: No matches found for: ruby24
No matches found

おらんのです。

(ちょっと話題から逸れて) 2つの Amazon Linux

docs.aws.amazon.com

AWS には、2 つのバージョンの Amazon Linux: Amazon Linux 2 および Amazon Linux AMI が用意されています。

なるほどさっきのは Amazon Linux AMI を対象とした記事だったんですね。初見殺し。

僕が動かしてるインスタンスAmazon Linux 2 の方なので単純に yum では入れられないようです。 AMI 版(?) の方はおそらく yum でインストールできるようになっていると思われます。

Extras Library

ですが Amazon Linux 2 になってから Extras Library という仕組みが作られたようです。 どういう仕組みで動いているかは把握していませんが amazon-linux-extras コマンドで追加のソフトをインストールすることができます。

2018/02/04 現在で Extras Library 経由でインストールできる トピック (と呼ぶそうです) の一覧を出力してみると

$ amazon-linux-extras list
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]
  2  memcached1.5   disabled  [ =1.5.1 ]
  3  nginx1.12   disabled  [ =1.12.2 ]
  4  postgresql9.6   disabled  [ =9.6.6 ]
  5  python3   disabled  [ =3.6.2 ]
  6  redis4.0   disabled  [ =4.0.5 ]
  7  R3.4   disabled  [ =3.4.3 ]
  8  rust1   disabled  [ =1.22.1 ]
  9  vim   disabled  [ =8.0 ]
 10  golang1.9   disabled  [ =1.9.2 ]
 11  ruby2.4  disabled  [ =2.4.2 ]
 12  nano   disabled  [ =2.9.1 ]
 13  php7.2   disabled  [ =7.2.0 ]
 14  lamp-mariadb10.2-php7.2   disabled  [ =10.2.10_7.2.0 ]

想定したよりも利用可能なトピックは少なかったですが、主要なアプリケーションの最新バージョンが一通り揃っています。 yum でインストールできるバージョンと比較してみると以下の通りになりました。(これも 2018/02/04 現在)

パッケージ (トピック) yum での最新 extras での最新
Ansible N/A 2.4.2
Emacs 24.3 25.3
Memcached 1.4.15 1.5.1
Nginx N/A 1.12.2
PostgreSQL 9.2.23 9.6.6
Python 3 N/A(?) 3.6.2
Redis N/A 4.0.5
R言語 N/A(?) 3.4
Rust N/A 1.22.1
Vim 7.4 (インストール済) 8.0
Go言語 1.8.3 1.9.2
Ruby 2.0.0 2.4.2
Nano 2.3.1 (インストール済) 2.9.1
PHP 5.4.16 7.2.0

Ruby 2.4.x をインストール

ということで Extras Library を経由して Ruby 2.4 をインストールします。

$ sudo amazon-linux-extras install ruby

細かいバージョン指定もできるようなので、EC2 のドキュメントを是非チェックしてみてください。 これで Ruby 2.4 + Gem が使えるようになりました。

[ec2-user@ip-x-x-x-x ~]$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
[ec2-user@ip-x-x-x-x ~]$ which ruby
/usr/bin/ruby
[ec2-user@ip-x-x-x-x ~]$ gem -v
2.6.13
[ec2-user@ip-x-x-x-x ~]$ which gem
/usr/bin/gem

めでたし。

(番外編) そういえば Node.js はどうやって入れたら良いの?

[ec2-user@ip-x-x-x-x ~]$ amazon-linux-extras list | grep node
[ec2-user@ip-x-x-x-x ~]$

・・・。

[ec2-user@ip-x-x-x-x ~]$ yum search nodejs
Loaded plugins: langpacks, priorities, update-motd
=== Matched: nodejs ===
http-parser.x86_64 : HTTP request/response parser for C
http-parser-devel.x86_64 : Development headers and libraries for http-parser
[ec2-user@ip-x-x-x-x ~]$

・・・・・・・・・・・・・・。

正解は

パッケージマネージャを利用した Node.js のインストール | Node.js

こちらを参考にしてみてください(丸投げ)。なるほどリポジトリを追加するんですね。分かるか。

VDMX で NumFX を利用した便利なレイヤー表示操作

お知らせ 1/1(月) に同様の内容の記事を投稿していましたが、中途半端なまま放置してしまったため、書き直しという形で本記事を投稿しました。

挨拶

改めまして、明けましておめでとうございます。本年も何卒よろしくお願い致します。

年越しの WEEKEND RAVERS NYE (#WRNYE) での VJ もなんとか無事に終わり、 2018年幸先よく VJ をスタートすることができたかなと思います。

さて、#WRNYE より前に 12/30 にハトトさんのお宅で開催された #HatotoHouse に招待されたので、 VDMX ヘビーユーザーに囲まれてビクビクしながら自分の VDMX プロジェクトファイルを紹介したのですが、 予想に反して反響がありました。大変嬉しい限りです。

一時的なレイヤー非表示(ミュート)や単独レイヤー表示(ソロ)

特に反響(?)が大きかったのが、一時的にあるレイヤーを非表示にしたり(以下、ミュート)、 一時的にあるレイヤーだけを表示する(以下、ソロ)仕組みでした。

全国 1億人の VDMX ユーザーのほとんどが Layer OpacityMIDI コントローラーの縦フェーダーに割り当てて操作していると思います。 もちろん縦フェーダー操作だけでもミュートやソロは可能ですが、 慌てて瞬間的にフェーダーを操作すると僕はよくミスったりフェーダーのつまみを飛ばしてしまったりします。

そこで私は縦フェーダーの他に、ボタンを押したらミュートしたりソロにできるようにしています。 KORG の nanoKontrol2 を愛用していますが、以下のように割り当てて使っています。

f:id:yadex205:20180107223844p:plain

これらを VDMX の Num FX という機能を使って実現していきます。

前提と準備

今回は 3レイヤー用意し、 それぞれの Layer Opacity をお好みのコントローラーの縦フェーダーにマッピングしているものとします。

f:id:yadex205:20180107223902p:plain

今回はコントローラーの代わりに、上の画像の様に Control Surface を使ってでっち上げたもので解説します。 頭に L1, L2, L3 とついてるボタンやフェーダーがそれぞれ レイヤー1, レイヤー2, レイヤー3 を操作します。

レイヤーミュート

簡単な方から、ミュートを実装しましょう。Resolume だと B ボタンに該当します。 具体的には、Mute ボタンを押したら縦フェーダーがどんな値であろうと、Layer Opacity の値を強制的に 0 にするようにします。

まずはレイヤー1 の Layer Opacity の UI Inspector を開きます。 下の方にボタン Edit Num FX Chain があるのでクリックすると Number FX Chain Inspector という画面が出てきます。

f:id:yadex205:20180107223924p:plainf:id:yadex205:20180107223934p:plain

さて名前からお気づきの方もいらっしゃると思いますが、 Num FX は外部のコントローラからの入力値に対してエフェクトをかけることができる機能です。

例えば 縦フェーダーの入力値に対して常に 0.5 を掛ける エフェクトを追加すれば、 縦フェーダーを目一杯上まで押し上げても VDMX 側で受け取る値は 0.5 までしか上がりません。

ということで、Number FX Chain Inspector 画面の Add Asset: から FX > Multiply を追加します。

f:id:yadex205:20180107224001p:plain f:id:yadex205:20180107224009p:plain

Multiply は外部コントローラーからの入力値に対して、指定した値を掛ける Num FX です。 初期値では 1.25 が指定されてるので、例えば縦フェーダーを真ん中の位置にスライドすると、 VDMX 側では 0.5 * 1.25、つまり 0.625 として受け取られます。

また NumFX 全部に言えますが、 VDMX で映像に対して使うエフェクト同様右上のボタンで ON, OFF が切り替えられます。

最後に、Mute ボタンを Multiply の ON, OFF に割り当てMultiplier の値を 0.00 にすると完成です。 これによって、Mute ボタンを押すと Layer Opacity を 0.00 に固定する NumFX が有効になります。

f:id:yadex205:20180107224711g:plain

あとは他の全てのレイヤーに対して同じ様に NumFX を仕込めば完成です! ちなみに、NumFX が有効になっている場合は四角にNのマークがつきます。

単独レイヤーのみ表示 (ソロ)

仕様

次に複雑になりますが、ソロ機能を実装していきます。Resolume だと S ボタンに該当します。 ここでは各レイヤーは 3つの状態を持つことになります。

  • ソロ機能が無効であり、自身のレイヤーが表示されている。
  • ソロ機能が有効であり、現在自身のレイヤーが選択されているため自身のレイヤーだけ表示されている。
  • ソロ機能が有効であり、現在他のレイヤーが選択されているため自身のレイヤーは非表示になっている。

実現するためには以下の項目について VDMX 側でデータとして持つ必要があります。

  1. 現在ソロ機能が有効になっているかどうか
  2. ソロ機能が有効になっている場合、現在選択されているレイヤーはどれか

今回は VDMX 側がデータとして持つ部分を Control Surface を使って実現し、あとはミュートの時と同じく NumFX Multiply を使っていきます。 なお Control Surface でのデータの保持の仕方は色々な方法があると思いますので、 この記事は参考程度にして自身のしっくりくる方法に落とし込んでいただけたら幸いです。

Control Surface の作り込み

まず、単独で表示するレイヤーとしてどれが指定されているかを Multi-Button で表現します。ボタンの数は レイヤーの数 + 1 用意し、Toggle Buttons? オプションと Mutually-exclusive? オプションの両方にチェックをつけ、Publishing Properties を Publish index of last button にしましょう。Toggle Buttons?Mutually-exclusive? については説明が面倒なので省きますが、ご自身で試していただけると納得の挙動をすると思います。

次にソロ機能が有効になっているかどうかを表すための Button を追加し、先程追加した Multi-Button をこのボタンの Receiving に追加します。

f:id:yadex205:20180108103317p:plain

さて、先程 Multi-Button の Publishing Properties を Publish index of last button に、つまり選択したボタンの番号を他のコントローラに伝えるようにしたわけですが、それによって番号が 1 以上のボタンを選択しているときに Button は ON の状態になります。

f:id:yadex205:20180108103853g:plain

ただし、Multi-Button の発するデータが Publish index of last button の状態だと扱いづらいため、もう一つ同じ個数の Multi-Button を用意し、こちらは Publish as many BOOLs の状態にしておきます。そして新しい Multi-ButtonNavigation > Choose by index に以前の Multi-Button を追加します。

f:id:yadex205:20180108104320p:plain

これで Control Surface の作り込みは完了です。上の画像での Solo activated? ボタンが「ソロ機能が有効になっているかどうか」、Solo activated layer output が「現在単独表示するレイヤーとして選択されているレイヤー」を表現してくれています。

コントローラーと Control Surface と Layer Opacity の連携

ソロ機能の完成に近づいてきました。まずは外部コントローラーの Solo ボタンを Control Surface の 最初に作った Multi-Button に対してマッピングします。 なお、コントローラーの L1 Solo, L2 Solo, L3 SoloToggle button? オプションのチェックを外しています。こちらもご自身で挙動を確認していただけると幸いです。

f:id:yadex205:20180108105208p:plain

次に、ミュートの時と同じ様に Layer Opacity の Number FX Chain Inspector を開き、同様に FX > Multiply を追加します。 そして以下の画像の通りマッピングを行います。注意としては、Multiplier の最大値が 1.00 になるようにフェーダーを設定しておくのを忘れずにお願いします。

f:id:yadex205:20180108105616p:plain f:id:yadex205:20180108105610p:plain

これを全レイヤーに対して行えば、ソロ機能の完成です。

f:id:yadex205:20180108110023g:plain

ちなみに先程作った Control Surface はもう見せる必要がないので僕は消してしまいます。プログラムで関数のような裏方の作業をしてくれる Control Surface のことをよく「隠し Control Surface」とか僕は言ったりしています。

最後に

拙い説明だったと思いますが、いかがでしょうか。初めはとっつきづらいと思いますが Control Surface と NumFX で VDMX はより便利になります。ちょっとしたプログラムを組む感覚だと思います。是非試してみてください。

告知

  • 1/18 (木) アッパーチューナー第2弾 #アパチュナ @ 渋谷 nagomix 告知ページ
  • 1/27(土) ??? @ 渋谷 VUENOS
  • 3/18(日) ??? @ 渋谷某所

本年もよろしくお願い致します🙇

Copyright © 2015 Yadex205