Goal: Use the Field Mapping panel to map Daisy Field hardware controls without adding separate knob or key blocks to the graph.
Example patch: dvpe_CLD/examples/field_mapping_subtractive.dvpe
Target hardware: Daisy Field
Time: 10-15 minutes
The included seven-block patch uses eight connections and keeps the audio and control paths visible while hardware mappings remain in Architecture.
The Field Mapping panel maps the fixed Daisy Field surface directly to patch parameters:
K1-K8map to safe numeric parameters.A1-B8map to gate/trigger input ports or 3-state parameter toggles.SW1andSW2are held shift selectors; short press can also be mapped as an action.- 3-state key toggles use Field key LEDs: Off, Blinking, On.
- Layers resolve as
SW1+SW2, thenSW2, thenSW1, thenNormal. - A graph wire into a target input wins over a mapping.
The example patch is a small subtractive synth:
SOURCE -> FILTER -> AMP VCA -> SPACE -> OUT
^ ^
| |
B1 ACCENT AMP ENV
A1 gates the amplitude envelope. SW1 short press triggers a short accent envelope into filter drive. B2 cycles three reverb damping values and shows the selected state on its key LED.
- Start DVPE:
cd dvpe_CLD
npm run dev- Open the app in the browser.
- Load
dvpe_CLD/examples/field_mapping_subtractive.dvpe. - Open Architecture.
- Select Field Mapping.
Open Surface for the visual Field layout, or Matrix for the full layer table. The matrix shows rows for K1-K8 and A1-B8, with columns for Normal, SW1, SW2, and SW1+SW2.
Surface view follows the physical Field layout and is the quickest place to assign a single knob or key.
Use the Field with no switch held:
| Control | Target |
|---|---|
K1 |
filter cutoff |
K2 |
filter resonance |
K3 |
amp attack |
K4 |
amp decay |
K5 |
amp sustain |
K6 |
amp release |
K7 |
reverb decay |
K8 |
reverb wet/dry |
A1 |
amp envelope gate |
SW1 short press |
filter-drive accent trigger |
B2 |
3-state reverb damping toggle |
Hold A1 to hear the oscillator through the ADSR/VCA. Tap SW1 to add a short drive accent. Tap B2 to cycle damping; its LED moves through Off, Blinking, and On.
Hold SW1 while turning knobs:
| Control | Target |
|---|---|
K1 |
reverb damping |
K2 |
reverb decay |
K3 |
filter cutoff, wider performance range |
K4 |
filter resonance, wider performance range |
Hold SW2 while turning knobs:
| Control | Target |
|---|---|
K1 |
amp attack, long range |
K2 |
amp release, long range |
Hold both SW1 and SW2:
| Control | Target |
|---|---|
K1 |
reverb wet/dry |
When a held layer remaps a control, that physical control stops affecting its normal-layer target for that held state. For example, K1 controls filter cutoff normally, but with SW1 held it controls reverb damping instead.
Matrix view makes all four precedence layers visible at once.
- In Architecture > Field Mapping, find
K3. - In the Normal column, select another safe numeric target.
- Export C++.
The generated Field code reads SW1 and SW2 once, computes the active mapping layer, and inserts the selected hw.GetKnobValue(DaisyField::KNOB_N) expression into the target parameter setter.
For keys, gate targets use hw.KeyboardState(index). Trigger targets use hw.KeyboardRisingEdge(index).
For toggle3 keys, code generation creates a persistent three-state value, advances it on KeyboardRisingEdge(index), applies the chosen parameter value, and drives the Field key LED with hw.led_driver.SetLed(...).
Do not connect a wire to a mapped target input. A graph connection wins.
Example: if a CV wire is connected to FILTER.drive_cv, the Field Mapping panel marks FILTER - Drive as connected and prevents assigning a knob to it. If an old patch still contains that stale mapping, code generation returns an error instead of producing ambiguous C++.
- Map
K5onSW2toSPACE - Decayfor a second reverb page. - Change
B2to another 3-state target, such as a numeric tone or modulation parameter. - Remove the
B1 ACCENT -> FILTER.drive_cvwire, then map a knob toFILTER - Drive.
Keep mappings sparse at first. The useful pattern is: normal layer for performance controls, SW1 for tone/detail, SW2 for envelope ranges, and SW1+SW2 for less common global controls.


