soPpypoPsy

Audio Modeling × Leap Motion

物理モデリング音源だいすき!
独断と偏見によるびぼーろく的メモ
GECO

LeapMotionに入力した情報をVSTに送るために仮想MIDIデバイスを導入する。
WINならポート追加が簡単なloop MIDIが便利。(設定不要)
MacではIAC ドライバで設定する。

GECO
Tobias Erichsen ( > Software > loopMIDI )


LeapMotion → GECO → 仮想MIDI → DAW → VSTと情報を伝達できるようになる。


GECOでは40種もの動作を同時認識できる。
シンセサイザーではフルに機能を活用することで複雑な音作りができるが、 SWAM音源では繊細な楽器の表現を求められるため、制御する動作を限定する。

認識可能な動き
  • 前後 [X]
  • 左右 [Y]
  • 上下 [Z]
  • 手のひら左右ひねり(ロール) [X軸回転]
  • 手のひら上下曲げ(ピッチ) [Y軸回転]
  • 手のひら左右旋回(ヨー) [Z軸回転]
  • 指の開閉
  • 手の存在
両手ともに同時に認識でき、X, Y, Zは相対・絶対距離で分けて設定可能。

右手で鍵盤を弾き、左手でCCを制御する演奏スタイルで、動作は左手12種類(最大)に絞った。
管・弦に関わらず全ての楽器で直感的に入力できるようにする方法を考えた。

DL GECO個人設定ファイル(ZIP形式) ※公開停止中

設定項目について記す。

Link Open/Closeでは、指の開閉を認識するかどうかを設定できる。 下部の[M](Mute)だと開閉の認識はするが値は出力されない。

Output ChannelとMIDI Messageで出力先の仮想MIDIデバイスを設定する。
Output Channelでは、OSC(Open Sound Control)1~16, CPL(CopperLan)、
MIDI Messageでは、1~127, PB(Pitch Bend), CP(Channel Pressure)が指定可能。
単語は頭文字のアルファベットを入力するだけで指定できる。

Data Offsetでは認識時の基準値、Rest Valueでは手がセンサーから外れたときの値を設定できる。
-100~100%, LAST(持続)が指定可能。LASTにすることで、意図しない急激な変化を防ぐ。

Advancedでは主に感度や最大最小値、反転などの設定ができる。
DAW側のマッピングと組み合わせて楽器別に微調節する。

指の開閉による干渉を防ぐために、Link Open/Closeの片方をOFFにしているパラメータもある。
どちらともON状態にすると、開閉によりそのパラメータのみ入力値が一時固定されるようになる。
ちなみに、File > Prefarences... > Robuness から開閉による影響度を設定できる。

認識方法はPosition(本体からの位置[絶対座標])とDistance(手の認識位置を0とした位置[相対座標])を選べる。
自分のスタイルや楽器に合わせて選ぶと制御が楽。
初めにセンサーが認識する手の大きさによっても操作感が変わるので、どちらかというと常に変動させるパラメータでは絶対座標が使いやすい。

Setting (Basic)

基本設定について記す。

制御するCCは1, 11, 19, 21, 23, 25, 26, 27, (PB)の9種。
CC1, 11, 19, (PB)はSWAM音源全てに共通しているパラメータ、
CC21, 25は圧力やノイズ(楽器で名称が違う)に関わるパラメータ、
CC23, 26, 27は指の開閉で制御のON/OFFを切り替えるパラメータ(キースイッチや特殊奏法向き)とした。

CC番号は管に統一し、Accent, Bow Position, Bow Pressure, Bow Noiseのものを再設定した。
SWAM側で楽器別に設定しても、DAW側でコントローラに一括設定してもよい。

CCParameter
1Vibrato Depth
11Expression
19Vibrato Rate
21Accent / Growl
23Bow Noise / Flutter Tongue
25Bow Pressure / Breath Noise
26Bow Position / Formant
27--- EMPTY ---
PBPitch Bend

まずは共通する基本パラメータから順に扱う。
左右の動きをエクスプレッション(CC11)
前後の動きをビブラートの深さ(CC1)
手のひらのひねりをビブラートの速さ(CC19)
に割り当てている。

上から見た図にすると↓


基本的な演奏手順は、
手を左に傾けながら左へ動かす。
(Exp↑↑, Vib Rate↑↑)

速度を落とし傾きを水平に戻しながら前方へ素早く動かす。
(Exp↑, Vib Dpt↑↑, Vib Rate↓)

ゆっくり元の場所へ戻す。この帰り道で細かな表現が決まる。
(Exp↓↓, Vib Dpt↑or↓, Vib Rate↑or↓)

手を回すように動かすと自然な抑揚を付けられる。
また、センサーにかざす手を相対的に大きく認識させてから入力すると値の変動が抑えられる。

CC11(Exp), 1(Vib Dpt), 19(Vib Rate)の3種制御による演奏(2017/6)↓

ビブラート速度は制御しやすいようにOffset+25%としている。(0からの開始だと速くなる方にしか調整できないため)

Advanced: 感度設定とその目的について
Scaleで入力する数値の倍率を決定し、Min, Maxで数値の範囲を限定する。

Invertにチェックを入れると値が反転する。(主に圧力やノイズのパラメータで使用)

Curveを-にするとマッピンググラフが上に凸になり、+にすると下に凸になる。
ExpのCurveは、弦楽器では+寄りにして弱音表現をしやすくし、管楽器では安定した音量維持と減衰を速くするため-寄りにすると制御しやすい。
(GECOの個人設定ではExp+10%に設定しているが、DAW側で楽器に合わせて調節している。)
Vib DptのCurveはメリハリをつけやすくするため-寄りに設定している。

AttackとDecayで入力のタイムラグを指定できるが、SWAM音源では特に変更を加えていない。

Exp(左), Vib Dpt(右)の設定↓

Pitch Bendは手のひら左右旋回(ヨー)に割り当てている。
中央(ピッチ0cent)が基準となるため、Data Offsetは50%が適している。
常に数値が自然に揺れるようになっているが、音痴になりすぎないよう、 Advanced: Curve+80%とした。

意識して入力する場合は、跳躍に際する経過音や音程の超過表現や、 安定したピッチの維持が難しいとされる高音などで手を水平方向に大きく捻る。
音の入りのタイミングで歪めたり、レガート方向と反対に動かしても人間味が出せる。(ボーカロイド調声と同じ)

ピッチ変化の度合いは基本的に音源やDAWで設定するので、この設定画面では感度についてのみ考える。



Setting (Standard)

楽器固有の圧力・ノイズパラメータの設定について記す。

弦ではAccent, Bow Pressure、管ではGrowl, Breath Noiseのパラメータを扱う。
ここでは圧力・ノイズ関係でも音色への影響度が小さいパラメータは割り当てなかった。

どの動きにどのパラメータを割り当てるかが演奏感に大きく関わってくるため、 圧力系のパラメータには力を入れる動きを対応させるのが適当だと思われる。
したがって、上下の動きや手のひら上下曲げ(ピッチ)に割り当てることにした。

Accent / Growl(左), Bow Pressure / Breath Noise(右)の設定↓

これらのパラメータは音質への影響が強いので、感度を落とすため Advanced: Curveはどちらも+寄りにした。
ただし、緩やかな入り抜きで数値を安定させやすくなった代わりにScale 1.20xとし、反映される値を増やしている。

Accent / Growl(左)(特にGrowl)は強烈なパラメータなので、手のブレによる変化がほとんどないようにCurveをきつく設定した。
バイクのアクセル操作のように手をひねることで値を制御できる。

Bow Pressure / Breath Noise(右)ではInvertにチェックを入れているが、これは弦に合わせた設定である。
Data Offset+85%と組み合わせることで、Flaut.~Scratchの制御を直感的に行えるようにした。
手の位置が高ければ圧力が弱く、低ければ強くなる。

管の場合は、DAW側でマッピングを更に上下反転させて元に戻す。
弱音や高音などでBreath Noiseが強く出やすいことを考慮し入力する。

CC11(Exp), 1(Vib Dpt), 19(Vib Rate), PB(Pitch Bend),
21(Bow Pressure / Growl), 25(Accent / Breath Noise)の6種制御による演奏(2017/12)↓

Setting (Advanced)

ここから先は実験段階。

指の開閉状況によって制御のON/OFFを切り替えられるようにする。
絶対距離・相対距離の認識で余ったもう片方を使う。(個人設定ファイルではCC23, 26, 27)

上の画像のように、Link Open/CloseをどちらともONにし、何も設定していない状態を開閉時に認識させると、 指を開いている時だけMIDI Message信号を受け取り、閉じている時は反応しないようになる。
LASTを指定したことで、指を閉じている間でも開いていた時のパラメータは持続する。

0~127の数値で連続的に変化するパラメータを指定するとよいが制御難度は上がる。無理に使用する必要はない。

また、このように開閉どちらともにMIDI Message番号を割り当てて数値を設定すると、指を閉じている間は反応するが、 開いた瞬間に数値が0(-100%基準)になる。
AdvancedでMax: 0にすると数値は0で固定される。

こちらの方法にはキースイッチ系のパラメータ(規定値で機能が変化)を割り当ててもよいが、 無理に使わずペダル等で制御した方が楽だと思われる。

以上より、これらはあくまで補助的なものとして捉え、CC番号を割り当てたまま普段はOFFにしておき、 複数回に分けて入力する場合に使用する。