Pad Ripple
RGB 패드를 가진 컨트롤러의 그리드를 작은 디스플레이로 다루어, 누른 패드를 중심으로 빛의 파문을 퍼뜨리는 노드입니다. 그리드 범위 안의 NoteOn을 받으면 그 위치에서 파문이 생기고, 매 프레임 각 패드의 강도를 계산해서 값이 바뀐 패드에만 NoteOn을 보냅니다(차분 송신). 파문은 동시에 몇 개든 달릴 수 있고, 겹친 부분은 강도의 최댓값으로 합성됩니다.
노트 배치는 note = Note Offset + 행 × Cols + 열을 전제로 하고 있습니다.
- Device — 출력 대상 디바이스(이름으로 보관)
- Channel — 0
15, Note Offset — 0127 - 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 — 그리드 중앙에서 파문을 하나 내보내는 트리거입니다. 패드가 손에 없어도 동작을 확인할 수 있습니다
강도에서 벨로시티로의 변환은 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" })