Pad Ripple
RGBパッドを持つコントローラのグリッドを小さなディスプレイとして扱い、押したパッドを中心に光の波紋を広げるノードです。グリッド範囲内の NoteOn を受けるとその位置から波紋が生まれ、毎フレーム各パッドの強度を計算して、値が変わったパッドにだけ NoteOn を送ります(差分送信)。波紋は同時に何本でも走り、重なった部分は強度の最大値で合成されます。
ノート配置は note = Note Offset + 行 × Cols + 列 を前提にしています。
- Device — 出力先デバイス(名前で保持)
- Channel — 0〜15、Note Offset — 0〜127
- Cols / Rows — グリッドの列数・行数。それぞれ1〜16(既定 8 × 5)
- Vel Core / Vel Mid / Vel Dim — 波頭・中間・尾に使うベロシティ=機種のカラーパレット番号。0〜127(既定は APC40 mk2 の 白3 / 橙9 / 赤5)
- Speed — 波紋の広がる速さ(パッド/秒)。0.5〜60にクランプ(既定10)
- Burst — グリッド中央から波紋を1つ出すトリガー。パッドが手元になくても動作確認できます
強度からベロシティへの変換は3段階です。0.66超で Core、0.33超で Mid、0.06超で Dim、それ以下は消灯(velocity 0)になります。
入力側のデバイス指定はありません。有効なすべてのMIDI入力デバイスの、指定Channelかつグリッド範囲内のノートが波紋の中心になります。
Device / Channel / Note Offset / グリッドサイズを変更すると、旧設定で点灯していたパッドを消灯してからキャッシュを作り直します。ノードを削除したときも同様に全消灯を試みます(デバイスが既に抜かれていた場合は点いたままになることがあります)。
入力ポート
| Port ID | 型 |
|---|---|
Speed | float |
Burst | trigger |
出力ポート
なし
スクリプトから設定可能なメンバー
| パス | 型 |
|---|---|
speedInput | float |
currentDeviceName | string |
currentChannel | int |
currentNoteOffset | int |
currentCols | int |
currentRows | int |
currentVelCore | int |
currentVelMid | int |
currentVelDim | int |
Synapse Apps(スクリプティング)
await synapse.modules.create({ type: "midi_pad_ripple" })