4plexer
fourplexer · utility · schema v14-in / 4-out discrete signal router for audio AND cv (they share the Web Audio substrate, so either cable type patches in and routes identically). Four signal inputs (in1..in4) and four signal outputs (out1..out4); each output has its own selector knob (sel1..sel4, shown 1..4 on the card) choosing which ONE of the four inputs that output carries — discrete, never a blend or in-between, with a ~4 ms declick crossfade on the switch so audio-rate inputs don't click. Each output also has its own GATE input (gate1..gate4): every rising edge advances that output's selector to the next input (1→2→3→4→1, wrapping). The four outputs are fully independent — different selections, different gate streams. Knobs are directly settable in the UI (click/drag to a position) and the selection persists in node params (synced + saved); a gate-advance posts the new index back so it persists exactly like a manual click. Defaults are a straight pass-through (out1=in1, out2=in2, out3=in3, out4=in4).
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
in1 | cv | Signal input 1 — available to any output whose selector points at it. Audio or CV route the same way. control voltage (CV) |
in2 | cv | Signal input 2 — selectable by any output. control voltage (CV) |
in3 | cv | Signal input 3 — selectable by any output. control voltage (CV) |
in4 | cv | Signal input 4 — selectable by any output. control voltage (CV) |
gate1 | gate | Clock/advance for output 1: each rising edge steps OUT 1's selector to the next input (1→2→3→4→1, wrapping). The advanced position is saved like a knob turn. gate / trigger |
gate2 | gate | Clock/advance for output 2: each rising edge steps OUT 2's selector to the next input, wrapping. gate / trigger |
gate3 | gate | Clock/advance for output 3: each rising edge steps OUT 3's selector to the next input, wrapping. gate / trigger |
gate4 | gate | Clock/advance for output 4: each rising edge steps OUT 4's selector to the next input, wrapping. gate / trigger |
outputs
| id | cable | what it does |
|---|---|---|
out1 | cv | Output 1 — carries whichever single input OUT 1's selector currently points at. control voltage (CV) |
out2 | cv | Output 2 — carries the single input selected by OUT 2. control voltage (CV) |
out3 | cv | Output 3 — carries the single input selected by OUT 3. control voltage (CV) |
out4 | cv | Output 4 — carries the single input selected by OUT 4. control voltage (CV) |
params
| id | label | range | default | curve |
|---|---|---|---|---|
sel1 | OUT 1 | 0..3 | 0 | discrete |
sel2 | OUT 2 | 0..3 | 1 | discrete |
sel3 | OUT 3 | 0..3 | 2 | discrete |
sel4 | OUT 4 | 0..3 | 3 | discrete |
controls
| control | what it does |
|---|---|
| OUT 1 | Which input (1–4) output 1 carries. Turn it to route by hand; GATE 1's rising edges also advance it. A readout shows the current source (e.g. '← IN 2'). |
| OUT 2 | Which input (1–4) output 2 carries — set by hand or advanced by GATE 2. |
| OUT 3 | Which input (1–4) output 3 carries — set by hand or advanced by GATE 3. |
| OUT 4 | Which input (1–4) output 4 carries — set by hand or advanced by GATE 4. |
source
fourplexer.ts on GitHub.