---
name: mela-patch
description: Create Mela synthesiser, audio effect and MIDI processor patches as .mela JSON files using the documented module types, parameters and modulation routing.
---

# Mela Patch Creation Skill

Mela version: **7.16**. Patch-format version: **37**. Generated: **2026-10-15T11:03:52Z**.

## Purpose and output

Create a new Mela patch or edit an existing one from a musical description. Return valid JSON in a file with the `.mela` extension. Use only the module types, parameter identifiers and values documented here. The document targets the Mela version stated above. Its JSON `version` is the patch-format version, not the app version.

Determine whether the requested patch is an instrument, an Audio effect, a MIDI processor or a combination. Select modules by their signal behaviour and construct the signal path before setting parameters. Mela's three plug-in types share the same patch format and processing features, but host Audio and MIDI input/output availability differs.

A typical instrument uses at least one MIDI In and one Audio Out. An Audio effect uses Audio In to receive `In 1` and optionally `In 2`, then Audio Out to send to `Out 1`. Audio effects may also process MIDI. Consult the Audio In/Out and MIDI In/Out module references for supported routing options, and account for host input/output availability.

Validate the structure, identifiers, values, modulation and routing before returning a patch. Describe what the patch does and any host input or tempo requirements briefly outside the JSON. Do not claim that a patch has been auditioned unless it has actually been run.

## Structure and signal flow

- Every module has a `type` and an `id`. `name` is an optional display name. Container modules store their ordered children in `submodules`.
- A loaded patch has a root `Stack` with ID `Root`. Its immediate children must be `Lane` modules. An empty root is also valid.
- A saved patch or subpatch can have any module as its root. Prefer a standalone module or container when it captures the requested structure, so the user can drag it into an existing patch. When opening it, Mela wraps a root Lane in the Root Stack and wraps other non-Stack roots in both a Lane and the Root Stack. Existing instance IDs and parameter paths are preserved.
- Top-level Lanes are independent processing chains. They do not automatically receive host input or send their final Audio/MIDI to the host. Include the appropriate In and Out modules.
- A Lane processes children in series. A Stack feeds copies of its input to children in parallel. For parallel serial chains, put Lane modules inside a Stack.
- The loaded root Stack uses Isolate mode. Top-level Lanes also use Isolate mode. Use `Internal.Mode` to specify the behaviour of nested Lanes and Stacks. Their modes change which signals enter their children and which child outputs reach the parent output.
- Only modules marked `Container: true` support `submodules`. The module help describes specialised routing in Effect, Digital Delay, MIDI Lane, Matrix, Splitter and Unison. Their direct children are the modules of the sublane or network. A wrapper Lane is needed only when a child must itself contain a serial chain.

Each processing position carries MIDI alongside either a Mono or Poly signal:

| Signal | Meaning |
| --- | --- |
| Audio | Stereo samples. |
| MIDI | A sequence of MIDI messages. |
| Pitch | A frequency that oscillators can follow. |
| Note | Note-on/off state, note number, velocity, sustain and polyphonic aftertouch. |
| Mono | Audio and Pitch subsignals. Mono does not mean a single audio channel. |
| Voice | Audio, Pitch and Note subsignals for one voice. |
| Poly | One or more independent Voices. Even one Voice is distinct from Mono. |
| Mod | A modulation signal produced by a modulator and routed to parameters. |

MIDI-to-Poly generates Note and Pitch from MIDI notes and initialises each Voice's Audio to silence. It replaces the incoming Mono/Poly signal with the new Poly signal and passes MIDI through. A normal polyphonic instrument chain is MIDI In, MIDI-to-Poly, oscillators and processors, Amp Envelope, optionally Poly-to-Mono and master effects, then Audio Out.

Note subsignals are immutable downstream of MIDI-to-Poly. Process MIDI before that module when changes must affect the generated Notes. Note-to-Pitch can regenerate Pitch from each Voice's Note, or from MIDI note-on events in Mono mode.

Poly-to-Mono sums the Voices' Audio and takes Pitch from the last triggered Voice. Some modules perform this conversion implicitly. Put per-voice processing before that conversion and shared effects after it. Audio processors and modulators use Note in Poly mode and MIDI note events in Mono mode when they need note information. MIDI processors always operate in Mono mode and pass the Mono/Poly signal through.

Every module entry includes a **Signal behaviour** line describing the Mono/Poly signal passed downstream:

- **Preserves Poly** retains the incoming signal type. A Mono input stays Mono. MIDI processing or Mod generation may still be Mono.
- **Collapses Poly to Mono** sums the Voices' Audio and keeps Pitch from the last triggered Voice. The downstream signal no longer contains per-voice Note subsignals.
- **Conditional** depends on the stated input routing, container mode or child outputs. Follow those conditions when tracing a per-voice chain.
- **Creates Poly** generates a new Voice context, as MIDI-to-Poly does.

### Buses and container routing

Audio In and MIDI In receive host or internal bus signals. Audio Out and MIDI Out send signals to the selected destination. Audio Out sends a copy, leaving the chain's Audio available downstream. Multiple sends can therefore add to the same output. Include output gain control when summing voices, oscillators, parallel paths or bus sends.

Mela provides four internal Audio buses and four separate internal MIDI buses, each numbered `Bus 1` through `Bus 4`. They are shared across the patch, including top-level Lanes and nested containers. Audio buses carry Mono or Poly Audio only; they do not transfer Pitch or Note subsignals. MIDI buses carry MIDI messages, not the Pitch or Note subsignals generated from them. If a receiving chain needs Pitch or Note, establish them in that chain, for example by receiving MIDI and using MIDI-to-Poly before receiving Poly Audio. Receiving Audio alone does not create Poly Voices. Poly Audio buses transfer Audio by voice position, so keep the sender's and receiver's Voice contexts aligned.

Internal buses flow in processing order, left to right within a chain and top to bottom between top-level Lanes. Place bus senders before receivers. Feedback receives a 1-sample delayed Audio bus signal and supports routing in the opposite direction. To preserve Poly Audio at Audio In, all senders and the receiving chain must be Poly. A Mono sender or receiver causes summing at Audio In. Feedback does not collapse incoming Poly Audio merely because another source is Mono.

Use buses for connections between independent top-level Lanes and shared send/return paths. Prefer nested containers when the branches belong to one instrument or effect:

- Use a Lane in `Insert` mode for a serial chain. Use `Split` to process a copy for a send or modulation source while keeping the parent signal unchanged.
- Use a Stack in `Sum Audio` mode for layered oscillators, parallel effects or dry/wet branches. Each child receives a copy of the Stack input. Put a Lane in `Insert` mode inside the Stack when a branch needs multiple modules in series. `Sum Audio` combines the branches' Audio; Pitch and Note at the Stack output come from its input, and branch MIDI changes are not merged. Use `Merge MIDI` when the intended result is combined MIDI from parallel processors.
- Use Matrix for explicit Audio connections between nodes, including FM algorithms and feedback networks. An FM Operator uses its input Audio as the modulator and its Pitch signal for the carrier frequency. Put Pitch Ratio and an FM Operator inside an `Insert` Lane when an operator needs its own frequency ratio. Matrix gives every node the incoming MIDI, Pitch and Note context; its routes carry only Audio, and changes to other signals within a node do not propagate to other nodes or the Matrix output.

For layers or FM networks that share the same Voices, place MIDI-to-Poly before the Stack or Matrix. Both output Poly only when their input and every branch or node output are Poly (`Sum Audio` mode for Stack). Keep Mono-only processors after the combined Poly output when per-voice processing must be preserved.

Matrix nodes follow child order, A through G. Node A receives the input Audio. The other nodes start with silent Audio and receive it through explicit routes. Routing levels default to zero, so set each intended route explicitly. Earlier-to-later routes use the current sample; later-to-earlier routes add a 1-sample feedback delay. The last active node supplies the Audio output. Control levels within feedback loops: Matrix's output clipper does not limit signals circulating inside the network. Consult its module reference for node G's serial tail and mixed Mono/Poly routing.

## Module and parameter identifiers

Use IDs unique across the entire tree, including nested modules. Reserve `Root` for the root Stack and do not use `Global` or `Reserved` as module IDs. Recommended IDs are `<encoded-module-type>-<number>`, for example `VAOscillator-1`, `VAOscillator-2`, `Lane-1` and `MIDI-to-Poly-1`. Restrict IDs to ASCII letters, digits and hyphens, starting with a letter. IDs must not contain dots, which separate parameter path components.

`type` is the exact JSON type listed in the module reference. `id` identifies an instance. `name` only changes its displayed title. Renaming a module does not change parameter paths.

Parameter paths are flat and do not include ancestor module IDs:

| Parameter group | Path example |
| --- | --- |
| Regular | `VAFilter-1.Frequency` |
| Internal | `Lane-1.Internal.Mode` |
| Modulation intensity | `LFO-1.Targets.Intensity1` |
| Global | `Global.Polyphony.Voices` |

Combine the instance ID, a dot and the exact ID suffix in its parameter reference. Spaces are removed from parameter identifiers, but punctuation and Unicode characters remain. For example, a displayed `− Range` can have suffix `−Range`, using Unicode minus rather than ASCII hyphen. Copy the documented suffix exactly, including case.

Internal parameters are saved in `parameters` and may be configured normally. They cannot be modulation targets or host automation targets. Global parameters also cannot be modulated. Regular parameters, including indexed lists, toggles, triggers, On and modulation intensities, can be modulated.

`remotes` belongs to the root Stack or a Lane/Stack and maps descendant parameter paths to display names. An empty name preserves the parameter's own title. Remotes directly control existing parameters, whereas a Macro generates Mod and needs a modulation assignment. Use either when suitable. For example, the root can expose `"Macro-1.Macro": "Brightness"`.

The Notepad module stores its text in `extra`, for example `"extra": {"text": "An eight-voice synth."}`. UI layout fields such as `view` are optional and can be omitted from newly created patches. The `external` field is used for exported module subtrees and is unnecessary for a complete patch.

## Serialised parameter values

The `parameters` object maps parameter paths to **JSON strings**. Numeric parameters use finite numeric strings without unit suffixes. Indexed parameters use the exact supported label, not an index. The module reference gives stored ranges and serialised defaults. Omitted parameters use the module's defaults.

| Unit | Stored value |
| --- | --- |
| percent / percentWithPlus | Fraction: 50% is `"0.5"`, -100% is `"-1"`. |
| phase | Fraction of a turn: 90 degrees is `"0.25"`. Check the parameter's range. |
| seconds | Seconds: 20 ms is `"0.02"`. |
| hertz | Hertz: 1 kHz is `"1000"`. |
| decibels | Decibels: -6 dB is `"-6"`. |
| multiplier | Direct factor: 2x is `"2"`. |
| cents | Cents: one octave is `"1200"`. |
| semitones / semitonesDecimal | Semitones: one octave is `"12"`. |
| integer / decimal | Direct numeric value. |
| ratio | Normalised dynamics ratio: displayed R:1 stores `1 - 1/R`. 4:1 is `"0.75"`. For an infinite displayed ratio, use the parameter's documented maximum. |
| legacyRatio | Direct dynamics ratio: 4:1 is `"4"`. Use the parameter's documented range. |
| decimalWithInfinity | Direct numeric value. Its maximum represents an infinite displayed value. |
| indexed list / toggle / trigger | Exact label, such as `"Sine"`, `"On"`, `"Off"` or `"Triggered"`. |

Mela's UI accepts note names, time fractions, unit conversions and target-intensity shortcuts. Patch decoding does not use that parser. Do not store `"440Hz"`, `"50%"`, `"C4"`, `"=400Hz"` or custom parameter-preset titles in numeric parameters. A label such as `"1/4"` is valid only when it is an explicitly supported indexed-list value.

The On parameter is continuous and stores `"0"` to `"1"`, rather than `"Off"`/`"On"`. It does not bypass DSP. For Modulators it scales Mod amplitude, for Audio/Pitch processors it generally crossfades input and output, and MIDI processors switch at 0.5. Its effective value is limited by the containing Lane/Stack's On. On is always a Mono modulation target.

Leave momentary trigger parameters at their documented defaults unless a trigger on patch loading is intended.

## Curves and modulation intensity

Each modulator supports eight ordered target slots. `modulations` maps a modulator's instance ID to an array of target parameter paths. Array item 0 uses `Targets.Intensity1`, item 1 uses `Targets.Intensity2`, and so on. Keep targets and intensities aligned when changing their order. A target can have multiple modulation sources, whose contributions add.

Every intensity has a linear stored range of [-1, 1] and a default of `"0.0"`. A routing assignment alone therefore produces no modulation. Set the intensity explicitly. Positive intensity moves in the direction of increasing transformed parameter value. Negative intensity reverses it. Bipolar Mod sources can move in both directions around the base value.

For a continuous target with stored value `v`, minimum `a`, maximum `b`, Mod value `s` and intensity `i`:

```text
transformed = f(v) + s * i * (f(b) - f(a))
result = clamp(f_inverse(transformed), a, b)
i = (f(desired) - f(base)) / ((f(b) - f(a)) * source_reference)
```

The last equation sets the intensity needed to reach a desired target at a non-zero source reference. It describes one source with other contributions held at zero. The required intensity must fit [-1, 1]. Use the target's stored units before applying a curve.

| Curve | Transformation f(value) and behaviour |
| --- | --- |
| linear | Identity. |
| logarithmic | Natural logarithm, inverse exp. Equal modulation distances correspond to equal ratios. |
| cubeRoot | Cube root, inverse cube. |
| signedSquareRoot | sign(value) * sqrt(abs(value)), inverse sign(x) * x². |
| integerUIOnly | Identity. UI/serialisation rounds to integers, while DSP ramping and modulation retain intermediate values. |
| integerRelative | Identity, with rounding for the effective value. Useful for relative distances such as transposition. |
| integerAbsolute | Identity, with left-aligned integer bins for effective indexed values. |

Indexed-list labels correspond to zero-based positions in the Values array. Modulation operates on those positions. Toggle and trigger parameters use the threshold 0.5. These discrete targets are Mono even in a Poly module.

For example, VA Filter Frequency spans 19.5 to 19968 Hz using a logarithmic curve, a range of 10 octaves. Intensity `"0.1"` with a Mod signal of 1 raises its base frequency by one octave. Intensity `"0.2"` moves 312 Hz to 1248 Hz at that source value.

Most modulators use one Mod source for all targets. XY and CC Modulator instead select a source per slot via `Internal.Source1` through `Internal.Source8`. Each SourceN corresponds to IntensityN and the Nth target. XY selects X or Y. CC Modulator selects a CC label such as CC1.

Place modulators before their targets where possible so the current sample's Mod signal is available. Processing order matters, including across top-level Lanes.

Poly modulation depends on both source and target:

- Poly-to-Poly maps the source and target Voices one to one.
- Mono-to-Poly applies the same source signal to every target Voice.
- Poly-to-Mono uses the last triggered source Voice.

A continuous parameter in a module operating in Poly mode can receive per-voice modulation. Internal/Global parameters cannot be targeted. On and discrete parameters remain Mono targets.

## Global parameters

Global values use the same `parameters` dictionary. Specify `Global.Polyphony.Voices` explicitly for instruments: the default is one voice. Voices is an indexed list and stores a label such as `"8"`, rather than its list index. Reuse determines whether repeated notes reuse a voice. Release selects the voice-release strategy. Ahead is latency in seconds and depends on host latency-compensation support. Keyboard Velocity affects the built-in keyboard.

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Velocity | `Global.Keyboard.Velocity` | false | integer | [1.0, 127.0] | integer | integerAbsolute | `"99.0"` | — |
| Ahead | `Global.Latency.Ahead` | false | continuous | [0.0, 1.0] | seconds | cubeRoot | `"0.0"` | — |
| Voices | `Global.Polyphony.Voices` | false | list | [0.0, 4.0] | index | integerAbsolute | `"1"` | `["1","2","4","8","16"]` |
| Reuse | `Global.Polyphony.Reuse` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| Release | `Global.Polyphony.Release` | false | list | [0.0, 4.0] | index | integerAbsolute | `"Old"` | `["Old","New","High","Low","Rand"]` |


## JSON Schema

This schema describes newly authored complete patches for the stated patch-format version. It checks structure, recognised module types, allowed containers, remotes placement, path syntax and the eight-target limit. It intentionally does not describe host document state or exported subtree connections.

Standard JSON Schema cannot compare IDs across the recursive tree, resolve parameter references from instance IDs, or apply numeric bounds to numbers stored inside strings. Also perform the semantic checks below using the generated parameter reference.

```json
{
  "$defs" : {
    "module" : {
      "additionalProperties" : false,
      "allOf" : [
        {
          "else" : {
            "not" : {
              "required" : [
                "submodules"
              ]
            }
          },
          "if" : {
            "properties" : {
              "type" : {
                "enum" : [
                  "DigitalDelay",
                  "Effect",
                  "Lane",
                  "MIDILane",
                  "Matrix",
                  "Splitter",
                  "Stack",
                  "Unison"
                ]
              }
            }
          }
        },
        {
          "else" : {
            "not" : {
              "required" : [
                "remotes"
              ]
            }
          },
          "if" : {
            "properties" : {
              "type" : {
                "enum" : [
                  "Lane",
                  "Stack"
                ]
              }
            }
          }
        },
        {
          "if" : {
            "properties" : {
              "type" : {
                "const" : "Notepad"
              }
            }
          },
          "then" : {
            "properties" : {
              "extra" : {
                "additionalProperties" : false,
                "properties" : {
                  "text" : {
                    "type" : "string"
                  }
                },
                "type" : "object"
              }
            }
          }
        }
      ],
      "properties" : {
        "extra" : {
          "type" : "object"
        },
        "id" : {
          "not" : {
            "enum" : [
              "Root",
              "Global",
              "Reserved"
            ]
          },
          "pattern" : "^[A-Za-z][A-Za-z0-9-]*$",
          "type" : "string"
        },
        "name" : {
          "type" : "string"
        },
        "remotes" : {
          "additionalProperties" : {
            "type" : "string"
          },
          "propertyNames" : {
            "pattern" : "^(?:Global\\.[^\\s.]+\\.[^\\s.]+|[A-Za-z][A-Za-z0-9-]*\\.(?:Internal\\.|Targets\\.)?[^\\s.]+)$",
            "type" : "string"
          },
          "type" : "object"
        },
        "submodules" : {
          "items" : {
            "$ref" : "#/$defs/module"
          },
          "type" : "array"
        },
        "type" : {
          "enum" : [
            "AllPass",
            "AmpEnvelope",
            "Arpeggiator",
            "AudioIn",
            "AudioOut",
            "Audio-to-Mod",
            "Balance",
            "BandPass",
            "CCModulator",
            "Chord",
            "Chorus",
            "Clipper",
            "CombFilter",
            "Compressor",
            "ControlChange",
            "Correlation",
            "Crossover",
            "DCBlocker",
            "Degrader",
            "Delay",
            "DigitalDelay",
            "Distortion",
            "DSOscillator",
            "DualPan",
            "Effect",
            "EnvelopeFollower",
            "EnvelopeGenerator",
            "EQBand",
            "Euclid",
            "Feedback",
            "FixedPitch",
            "Flanger",
            "FMOperator",
            "FrequencyShifter",
            "Gain",
            "GainComputer",
            "Glide",
            "Groove",
            "Lane",
            "Level",
            "LFO",
            "Limiter",
            "Macro",
            "MacroButton",
            "Macro-8",
            "Matrix",
            "Meter",
            "MIDICapture",
            "MIDIChannel",
            "MIDIDelay",
            "MIDIEcho",
            "MIDIIn",
            "MIDILane",
            "MIDILogger",
            "MIDIMeter",
            "MIDIOut",
            "MIDISource",
            "MIDI-to-Poly",
            "Mid-Side",
            "ModOscilloscope",
            "ModSteps",
            "Multiply-Add",
            "Noise",
            "NoiseGate",
            "NoteChance",
            "NoteEcho",
            "NoteEvent",
            "NoteHold",
            "NoteLength",
            "NotePulse",
            "NoteRange",
            "NoteStack",
            "Note-to-Pitch",
            "Notepad",
            "OnePole",
            "Oscilloscope",
            "OverlapRemover",
            "PhaseDistortion",
            "Phaser",
            "PitchBend",
            "PitchFollower",
            "PitchOscilloscope",
            "PitchRamp",
            "PitchRatio",
            "PitchShifter",
            "Pitch-to-Amp",
            "Poly-to-Mono",
            "Quantiser",
            "Random",
            "Rectifier",
            "RelativePitch",
            "Reverb",
            "RingMod",
            "Scale",
            "SimpleLFO",
            "Slew",
            "Splitter",
            "Stack",
            "StereoDelay",
            "StereoPan",
            "StereoTool",
            "Strummer",
            "TimeScrub",
            "Transposer",
            "Unison",
            "VAFilter",
            "VAOscillator",
            "Vel-to-Amp",
            "Velocity",
            "Vibrato",
            "VoiceActivity",
            "Volume",
            "VPSOscillator",
            "XY"
          ],
          "type" : "string"
        },
        "view" : {
          "type" : "object"
        }
      },
      "required" : [
        "type",
        "id"
      ],
      "type" : "object"
    },
    "root" : {
      "oneOf" : [
        {
          "$ref" : "#/$defs/rootStack"
        },
        {
          "$ref" : "#/$defs/topLevelLane"
        }
      ]
    },
    "rootStack" : {
      "additionalProperties" : false,
      "properties" : {
        "extra" : {
          "type" : "object"
        },
        "id" : {
          "const" : "Root"
        },
        "name" : {
          "type" : "string"
        },
        "remotes" : {
          "additionalProperties" : {
            "type" : "string"
          },
          "propertyNames" : {
            "pattern" : "^(?:Global\\.[^\\s.]+\\.[^\\s.]+|[A-Za-z][A-Za-z0-9-]*\\.(?:Internal\\.|Targets\\.)?[^\\s.]+)$",
            "type" : "string"
          },
          "type" : "object"
        },
        "submodules" : {
          "items" : {
            "$ref" : "#/$defs/topLevelLane"
          },
          "type" : "array"
        },
        "type" : {
          "const" : "Stack"
        },
        "view" : {
          "type" : "object"
        }
      },
      "required" : [
        "type",
        "id"
      ],
      "type" : "object"
    },
    "topLevelLane" : {
      "allOf" : [
        {
          "$ref" : "#/$defs/module"
        },
        {
          "properties" : {
            "type" : {
              "const" : "Lane"
            }
          }
        }
      ]
    }
  },
  "$schema" : "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties" : false,
  "description" : "Structural schema for authored patches. Also check unique IDs, reference resolution and string-encoded values against the generated parameter reference.",
  "properties" : {
    "audioUnit" : {
      "const" : "Mela"
    },
    "modulations" : {
      "additionalProperties" : {
        "items" : {
          "pattern" : "^(?:Global\\.[^\\s.]+\\.[^\\s.]+|[A-Za-z][A-Za-z0-9-]*\\.(?:Internal\\.|Targets\\.)?[^\\s.]+)$",
          "type" : "string"
        },
        "maxItems" : 8,
        "type" : "array"
      },
      "propertyNames" : {
        "pattern" : "^[A-Za-z][A-Za-z0-9-]*$",
        "type" : "string"
      },
      "type" : "object"
    },
    "parameters" : {
      "additionalProperties" : {
        "type" : "string"
      },
      "propertyNames" : {
        "pattern" : "^(?:Global\\.[^\\s.]+\\.[^\\s.]+|[A-Za-z][A-Za-z0-9-]*\\.(?:Internal\\.|Targets\\.)?[^\\s.]+)$",
        "type" : "string"
      },
      "type" : "object"
    },
    "root" : {
      "$ref" : "#/$defs/root"
    },
    "version" : {
      "const" : 37,
      "type" : "integer"
    }
  },
  "required" : [
    "version",
    "audioUnit",
    "root",
    "parameters",
    "modulations"
  ],
  "title" : "Mela complete patch (format 37)",
  "type" : "object"
}
```

## Semantic validation before output

1. Use the stated patch-format version and `audioUnit: "Mela"`.
2. Any module may be the saved root. If using a root Stack, give it ID `Root` and only Lane children. All IDs must be globally unique, and each type must match the module reference. Only containers may have submodules.
3. Resolve every parameter path to the correct instance and exact suffix, or to a documented Global path.
4. For numeric values, parse a finite number in the stored unit, check the documented range, and use integers for integer curves. For lists, match an exact supported label.
5. Every modulation source must be a modulator in the tree. Every target must exist and be modulatable. Keep the target count at most eight and align each target with its IntensityN and, where applicable, SourceN. Internal and Global parameters cannot be targets.
6. Only Lane and Stack types can own remotes. Each remote must refer to a descendant parameter.
7. Trace the signal chain, container modes and buses. Check that Pitch and Note reach the modules that need them without relying on Audio or MIDI buses to transfer those subsignals. For Matrix, set the intended routes and check which node supplies the output. For complete patches, check host I/O: an instrument creates Pitch/Audio from notes and includes an amplitude envelope, Audio effects receive input, and MIDI processors send their processed MIDI to the host. For subpatches, check the signals they expect from and return to the surrounding chain.
8. Set voice count, gains, feedback and timing intentionally. Check shared versus per-voice processing and any tempo-synced parameters.

## Complete examples

These factory patches demonstrate patch structure, parameter values and routing. Parameters omitted from the JSON use the defaults listed in the reference.

### Basic Synth

Factory patch: `Subpatches/Basic Synth`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {
    "AmpEnvelope" : [

    ]
  },
  "parameters" : {
    "AmpEnvelope.Attack" : "0.0009999998",
    "AmpEnvelope.Decay" : "0.50000006",
    "AmpEnvelope.Internal.Reset" : "Off",
    "AmpEnvelope.Legato" : "Off",
    "AmpEnvelope.On" : "1.0",
    "AmpEnvelope.Release" : "0.50000006",
    "AmpEnvelope.Sustain" : "0.28953648",
    "AmpEnvelope.Targets.Intensity1" : "0.0",
    "AmpEnvelope.Targets.Intensity2" : "0.0",
    "AmpEnvelope.Targets.Intensity3" : "0.0",
    "AmpEnvelope.Targets.Intensity4" : "0.0",
    "AmpEnvelope.Targets.Intensity5" : "0.0",
    "AmpEnvelope.Targets.Intensity6" : "0.0",
    "AmpEnvelope.Targets.Intensity7" : "0.0",
    "AmpEnvelope.Targets.Intensity8" : "0.0",
    "AmpEnvelope.Type" : "ADSR",
    "AudioOut.Internal.Output" : "Out 1",
    "AudioOut.On" : "1.0",
    "Global.Keyboard.Velocity" : "99.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "4",
    "Group.Internal.Mode" : "Isolate",
    "Group.On" : "1.0",
    "Meter.Reset" : "Off",
    "MIDIIn.Input" : "In 1",
    "MIDIIn.On" : "1.0",
    "MIDIIn.Panic!" : "Off",
    "VAOscillator.Internal.Trigger" : "Free",
    "VAOscillator.Level" : "0.5",
    "VAOscillator.On" : "1.0",
    "VAOscillator.Phase" : "0.0",
    "VAOscillator.Ring" : "0.0",
    "VAOscillator.Shape" : "0.5",
    "VAOscillator.Sync" : "1.0",
    "VAOscillator.Waveform" : "Sawtooth",
    "Vel-to-Amp.On" : "1.0",
    "Vel-to-Amp.Range" : "24.0",
    "Vel-to-Amp.Smooth" : "0.0"
  },
  "root" : {
    "id" : "Group",
    "name" : "Basic Synth",
    "submodules" : [
      {
        "id" : "MIDIIn",
        "name" : "MIDI In",
        "type" : "MIDIIn",
        "view" : {
          "collapsed" : true
        }
      },
      {
        "id" : "MIDIMeter",
        "name" : "MIDI Meter",
        "type" : "MIDIMeter"
      },
      {
        "id" : "MIDI-to-Poly",
        "name" : "MIDI-to-Poly",
        "type" : "MIDI-to-Poly"
      },
      {
        "id" : "VAOscillator",
        "name" : "VA Oscillator",
        "type" : "VAOscillator"
      },
      {
        "id" : "Vel-to-Amp",
        "name" : "Vel-to-Amp",
        "type" : "Vel-to-Amp"
      },
      {
        "id" : "AmpEnvelope",
        "name" : "Amp Envelope",
        "type" : "AmpEnvelope"
      },
      {
        "id" : "Meter",
        "name" : "Meter",
        "type" : "Meter"
      },
      {
        "id" : "AudioOut",
        "name" : "Audio Out",
        "type" : "AudioOut",
        "view" : {
          "collapsed" : true
        }
      }
    ],
    "type" : "Lane"
  },
  "version" : 37
}
```

### Note Sequencer

Factory patch: `Subpatches/Note Sequencer`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {
    "ModSteps" : [
      "NotePulse.Note"
    ],
    "ModSteps-2" : [
      "NotePulse.Velocity"
    ],
    "ModSteps-3" : [
      "NotePulse.Gate"
    ]
  },
  "parameters" : {
    "Group.Internal.Mode" : "Isolate",
    "Group.On" : "1.0",
    "ModSteps-2.Cycles" : "1000.0",
    "ModSteps-2.Internal.Mode" : "MIDI",
    "ModSteps-2.Length" : "8.0",
    "ModSteps-2.On" : "1.0",
    "ModSteps-2.Start" : "1.0",
    "ModSteps-2.Step1" : "1.0",
    "ModSteps-2.Step2" : "0.0",
    "ModSteps-2.Step3" : "0.0",
    "ModSteps-2.Step4" : "0.0",
    "ModSteps-2.Step5" : "1.0",
    "ModSteps-2.Step6" : "0.0",
    "ModSteps-2.Step7" : "0.42253417",
    "ModSteps-2.Step8" : "0.0",
    "ModSteps-2.Step9" : "0.0",
    "ModSteps-2.Step10" : "0.0",
    "ModSteps-2.Step11" : "0.0",
    "ModSteps-2.Step12" : "0.0",
    "ModSteps-2.Step13" : "0.0",
    "ModSteps-2.Step14" : "0.0",
    "ModSteps-2.Step15" : "0.0",
    "ModSteps-2.Step16" : "0.0",
    "ModSteps-2.Sync" : "1/16",
    "ModSteps-2.Targets.Intensity1" : "1.0",
    "ModSteps-2.Targets.Intensity2" : "0.0",
    "ModSteps-2.Targets.Intensity3" : "0.0",
    "ModSteps-2.Targets.Intensity4" : "0.0",
    "ModSteps-2.Targets.Intensity5" : "0.0",
    "ModSteps-2.Targets.Intensity6" : "0.0",
    "ModSteps-2.Targets.Intensity7" : "0.0",
    "ModSteps-2.Targets.Intensity8" : "0.0",
    "ModSteps-2.Trigger" : "Host",
    "ModSteps-3.Cycles" : "1000.0",
    "ModSteps-3.Internal.Mode" : "Unipolar",
    "ModSteps-3.Length" : "8.0",
    "ModSteps-3.On" : "1.0",
    "ModSteps-3.Start" : "1.0",
    "ModSteps-3.Step1" : "1.0",
    "ModSteps-3.Step2" : "1.0",
    "ModSteps-3.Step3" : "1.0",
    "ModSteps-3.Step4" : "1.0",
    "ModSteps-3.Step5" : "1.0",
    "ModSteps-3.Step6" : "1.0",
    "ModSteps-3.Step7" : "1.0",
    "ModSteps-3.Step8" : "1.0",
    "ModSteps-3.Step9" : "1.0",
    "ModSteps-3.Step10" : "1.0",
    "ModSteps-3.Step11" : "1.0",
    "ModSteps-3.Step12" : "1.0",
    "ModSteps-3.Step13" : "1.0",
    "ModSteps-3.Step14" : "1.0",
    "ModSteps-3.Step15" : "1.0",
    "ModSteps-3.Step16" : "1.0",
    "ModSteps-3.Sync" : "1/16",
    "ModSteps-3.Targets.Intensity1" : "1.0",
    "ModSteps-3.Targets.Intensity2" : "0.0",
    "ModSteps-3.Targets.Intensity3" : "0.0",
    "ModSteps-3.Targets.Intensity4" : "0.0",
    "ModSteps-3.Targets.Intensity5" : "0.0",
    "ModSteps-3.Targets.Intensity6" : "0.0",
    "ModSteps-3.Targets.Intensity7" : "0.0",
    "ModSteps-3.Targets.Intensity8" : "0.0",
    "ModSteps-3.Trigger" : "Host",
    "ModSteps.Cycles" : "1000.0",
    "ModSteps.Internal.Mode" : "Pitch ±12",
    "ModSteps.Length" : "8.0",
    "ModSteps.On" : "1.0",
    "ModSteps.Start" : "1.0",
    "ModSteps.Step1" : "0.5",
    "ModSteps.Step2" : "0.5",
    "ModSteps.Step3" : "0.5",
    "ModSteps.Step4" : "0.5",
    "ModSteps.Step5" : "0.7916667",
    "ModSteps.Step6" : "0.5",
    "ModSteps.Step7" : "0.625",
    "ModSteps.Step8" : "0.5",
    "ModSteps.Step9" : "0.5",
    "ModSteps.Step10" : "0.5",
    "ModSteps.Step11" : "0.5",
    "ModSteps.Step12" : "0.5",
    "ModSteps.Step13" : "0.5",
    "ModSteps.Step14" : "0.5",
    "ModSteps.Step15" : "0.5",
    "ModSteps.Step16" : "0.5",
    "ModSteps.Sync" : "1/16",
    "ModSteps.Targets.Intensity1" : "0.20000005",
    "ModSteps.Targets.Intensity2" : "0.0",
    "ModSteps.Targets.Intensity3" : "0.0",
    "ModSteps.Targets.Intensity4" : "0.0",
    "ModSteps.Targets.Intensity5" : "0.0",
    "ModSteps.Targets.Intensity6" : "0.0",
    "ModSteps.Targets.Intensity7" : "0.0",
    "ModSteps.Targets.Intensity8" : "0.0",
    "ModSteps.Trigger" : "Host",
    "NotePulse.Channel" : "1",
    "NotePulse.Gate" : "0.01",
    "NotePulse.Mode" : "Loop",
    "NotePulse.Note" : "C3",
    "NotePulse.Offset" : "0.0",
    "NotePulse.On" : "1.0",
    "NotePulse.Sync" : "1/16",
    "NotePulse.Velocity" : "0.0",
    "Stack.Internal.Mode" : "Isolate",
    "Stack.On" : "1.0"
  },
  "root" : {
    "id" : "Group",
    "name" : "Note Sequencer",
    "submodules" : [
      {
        "id" : "Stack",
        "name" : "Seqeuncers",
        "submodules" : [
          {
            "id" : "ModSteps",
            "name" : "Note",
            "type" : "ModSteps"
          },
          {
            "id" : "ModSteps-2",
            "name" : "Velocity",
            "type" : "ModSteps"
          },
          {
            "id" : "ModSteps-3",
            "name" : "Gate",
            "type" : "ModSteps"
          }
        ],
        "type" : "Stack",
        "view" : {
          "subview" : "stack"
        }
      },
      {
        "id" : "NotePulse",
        "name" : "Note Pulse",
        "type" : "NotePulse",
        "view" : {
          "tab" : "Note"
        }
      }
    ],
    "type" : "Lane"
  },
  "version" : 37
}
```

### Default

Factory patch: `Keys/Default`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {
    "AmpEnvelope" : [
      "Filter.Frequency"
    ],
    "LFO" : [
      "Filter.Frequency"
    ],
    "MIDISource" : [
      "VAOscillator.Level",
      "VAOscillator-2.Level",
      "VAOscillator-2.Shape",
      "VAOscillator-2.Ring",
      "AmpEnvelope.Targets.Intensity1",
      "Filter.Resonance"
    ],
    "MIDISource-2" : [
      "AmpEnvelope.Targets.Intensity1"
    ],
    "MIDISource-4" : [
      "LFO.Targets.Intensity1"
    ]
  },
  "parameters" : {
    "AmpEnvelope.Attack" : "0.0009999998",
    "AmpEnvelope.Decay" : "0.7090118",
    "AmpEnvelope.Internal.Reset" : "Off",
    "AmpEnvelope.Legato" : "Off",
    "AmpEnvelope.On" : "1.0",
    "AmpEnvelope.Release" : "1.6214182",
    "AmpEnvelope.Sustain" : "0.49999997",
    "AmpEnvelope.Targets.Intensity1" : "0.48634148",
    "AmpEnvelope.Targets.Intensity2" : "0.0",
    "AmpEnvelope.Targets.Intensity3" : "0.0",
    "AmpEnvelope.Targets.Intensity4" : "0.0",
    "AmpEnvelope.Targets.Intensity5" : "0.0",
    "AmpEnvelope.Targets.Intensity6" : "0.0",
    "AmpEnvelope.Targets.Intensity7" : "0.0",
    "AmpEnvelope.Targets.Intensity8" : "0.0",
    "AmpEnvelope.Type" : "ADSR",
    "AudioIn-2.Internal.Input" : "Bus 1",
    "AudioIn-2.On" : "1.0",
    "AudioOut-1.Internal.Output" : "Bus 1",
    "AudioOut-1.On" : "1.0",
    "AudioOut-2.Internal.Output" : "Out 1",
    "AudioOut-2.On" : "1.0",
    "Clipper.Drive" : "0.0",
    "Clipper.On" : "1.0",
    "Clipper.Peak" : "0.0",
    "Clipper.Type" : "Soft",
    "Filter.Drive" : "0.8",
    "Filter.Frequency" : "184.30269",
    "Filter.On" : "1.0",
    "Filter.Resonance" : "0.25",
    "Filter.Type" : "LP 12dB A",
    "Global.Keyboard.Velocity" : "100.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "4",
    "lane-1.Internal.Mode" : "Isolate",
    "lane-1.On" : "1.0",
    "lane-2.Internal.Mode" : "Isolate",
    "lane-2.On" : "1.0",
    "lane-3.Internal.Mode" : "Isolate",
    "lane-3.On" : "1.0",
    "LFO.Bias" : "0.0",
    "LFO.Cycles" : "1000.0",
    "LFO.Depth" : "0.5",
    "LFO.Offset" : "1.0",
    "LFO.On" : "1.0",
    "LFO.Phase" : "0.0",
    "LFO.Rate" : "1.0",
    "LFO.Sync" : "1/4",
    "LFO.Targets.Intensity1" : "0.012500048",
    "LFO.Targets.Intensity2" : "0.0",
    "LFO.Targets.Intensity3" : "0.0",
    "LFO.Targets.Intensity4" : "0.0",
    "LFO.Targets.Intensity5" : "0.0",
    "LFO.Targets.Intensity6" : "0.0",
    "LFO.Targets.Intensity7" : "0.0",
    "LFO.Targets.Intensity8" : "0.0",
    "LFO.Tilt" : "0.0",
    "LFO.Trigger" : "Legato",
    "LFO.Waveform" : "Sine",
    "Meter.Reset" : "Off",
    "MIDIIn-1.Input" : "In 1",
    "MIDIIn-1.On" : "1.0",
    "MIDIIn-1.Panic!" : "Off",
    "MIDIIn.Input" : "Bus 1",
    "MIDIIn.On" : "1.0",
    "MIDIIn.Panic!" : "Off",
    "MIDIOut.On" : "1.0",
    "MIDIOut.Output" : "Bus 1",
    "MIDIOut.Panic!" : "Off",
    "MIDISource-2.Bias" : "1.0",
    "MIDISource-2.Gain" : "0.0",
    "MIDISource-2.Number" : "All",
    "MIDISource-2.On" : "1.0",
    "MIDISource-2.Smooth" : "0.0011031756",
    "MIDISource-2.Source" : "Key Track",
    "MIDISource-2.Targets.Intensity1" : "0.19001567",
    "MIDISource-2.Targets.Intensity2" : "0.0",
    "MIDISource-2.Targets.Intensity3" : "0.0",
    "MIDISource-2.Targets.Intensity4" : "0.0",
    "MIDISource-2.Targets.Intensity5" : "0.0",
    "MIDISource-2.Targets.Intensity6" : "0.0",
    "MIDISource-2.Targets.Intensity7" : "0.0",
    "MIDISource-2.Targets.Intensity8" : "0.0",
    "MIDISource-4.Bias" : "1.0",
    "MIDISource-4.Gain" : "0.0",
    "MIDISource-4.Number" : "1",
    "MIDISource-4.On" : "1.0",
    "MIDISource-4.Smooth" : "0.0",
    "MIDISource-4.Source" : "Control Change",
    "MIDISource-4.Targets.Intensity1" : "0.25",
    "MIDISource-4.Targets.Intensity2" : "0.0",
    "MIDISource-4.Targets.Intensity3" : "0.0",
    "MIDISource-4.Targets.Intensity4" : "0.0",
    "MIDISource-4.Targets.Intensity5" : "0.0",
    "MIDISource-4.Targets.Intensity6" : "0.0",
    "MIDISource-4.Targets.Intensity7" : "0.0",
    "MIDISource-4.Targets.Intensity8" : "0.0",
    "MIDISource.Bias" : "1.0",
    "MIDISource.Gain" : "0.17755699",
    "MIDISource.Number" : "All",
    "MIDISource.On" : "1.0",
    "MIDISource.Smooth" : "0.0",
    "MIDISource.Source" : "Velocity",
    "MIDISource.Targets.Intensity1" : "0.20000005",
    "MIDISource.Targets.Intensity2" : "0.20000005",
    "MIDISource.Targets.Intensity3" : "0.25",
    "MIDISource.Targets.Intensity4" : "-0.24997467",
    "MIDISource.Targets.Intensity5" : "0.049999952",
    "MIDISource.Targets.Intensity6" : "0.049999952",
    "MIDISource.Targets.Intensity7" : "0.0",
    "MIDISource.Targets.Intensity8" : "0.0",
    "PitchBend.+Range" : "12.0",
    "PitchBend.−Range" : "12.0",
    "PitchBend.On" : "1.0",
    "RelativePitch-2.Cents" : "10.0",
    "RelativePitch-2.On" : "1.0",
    "RelativePitch-2.Semitones" : "12.0",
    "RelativePitch.Cents" : "-5.0",
    "RelativePitch.On" : "1.0",
    "RelativePitch.Semitones" : "0.0",
    "Root.Internal.Mode" : "Isolate",
    "Root.On" : "1.0",
    "StereoDelay.CrossL→R" : "0.0",
    "StereoDelay.CrossR→L" : "0.0",
    "StereoDelay.FeedbackL" : "0.0",
    "StereoDelay.FeedbackR" : "0.0",
    "StereoDelay.HighCutL" : "1605.2148",
    "StereoDelay.HighCutR" : "1784.3436",
    "StereoDelay.LowCutL" : "121.82256",
    "StereoDelay.LowCutR" : "125.72427",
    "StereoDelay.MixL" : "0.2",
    "StereoDelay.MixR" : "0.2",
    "StereoDelay.OffsetL" : "1.5",
    "StereoDelay.OffsetR" : "2.0",
    "StereoDelay.On" : "1.0",
    "StereoDelay.Smooth" : "0.040000003",
    "StereoDelay.Sync" : "1/16",
    "StereoDelay.TimeL" : "0.12499999",
    "StereoDelay.TimeR" : "0.12499999",
    "Transposer.On" : "1.0",
    "Transposer.Semitones" : "0.0",
    "VAOscillator-2.Internal.Trigger" : "Free",
    "VAOscillator-2.Level" : "0.100000024",
    "VAOscillator-2.On" : "1.0",
    "VAOscillator-2.Phase" : "0.0",
    "VAOscillator-2.Ring" : "0.36527446",
    "VAOscillator-2.Shape" : "0.75",
    "VAOscillator-2.Sync" : "1.0",
    "VAOscillator-2.Waveform" : "Trapezoid",
    "VAOscillator.Internal.Trigger" : "Free",
    "VAOscillator.Level" : "0.100000024",
    "VAOscillator.On" : "1.0",
    "VAOscillator.Phase" : "0.0",
    "VAOscillator.Ring" : "0.0",
    "VAOscillator.Shape" : "0.5",
    "VAOscillator.Sync" : "1.0",
    "VAOscillator.Waveform" : "Sawtooth",
    "Volume.Gain" : "0.0",
    "Volume.On" : "1.0",
    "Volume.Volume" : "-5.9999995"
  },
  "root" : {
    "id" : "Root",
    "name" : "Default",
    "remotes" : {
      "AmpEnvelope.Attack" : "Attack",
      "AmpEnvelope.Release" : "Release",
      "Clipper.Drive" : "Clip Drive",
      "Filter.Frequency" : "Cutoff",
      "LFO.Depth" : "LFO Depth",
      "LFO.Sync" : "LFO Sync",
      "VAOscillator.Sync" : "VA Sync",
      "Volume.Volume" : "Volume"
    },
    "submodules" : [
      {
        "id" : "lane-1",
        "name" : "Modulators",
        "submodules" : [
          {
            "id" : "MIDIIn-1",
            "name" : "MIDI In",
            "type" : "MIDIIn",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "MIDIMeter",
            "name" : "MIDI Meter",
            "type" : "MIDIMeter"
          },
          {
            "id" : "Transposer",
            "name" : "Transposer",
            "type" : "Transposer"
          },
          {
            "id" : "MIDIOut",
            "name" : "MIDI Out",
            "type" : "MIDIOut",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "MIDI-to-Poly-0",
            "name" : "MIDI-to-Poly",
            "type" : "MIDI-to-Poly"
          },
          {
            "id" : "MIDISource",
            "name" : "Velocity",
            "type" : "MIDISource"
          },
          {
            "id" : "MIDISource-2",
            "name" : "Key Track",
            "type" : "MIDISource",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "MIDISource-4",
            "name" : "Mod Wheel",
            "type" : "MIDISource",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "LFO",
            "name" : "LFO",
            "type" : "LFO"
          }
        ],
        "type" : "Lane"
      },
      {
        "id" : "lane-2",
        "name" : "Oscillators",
        "submodules" : [
          {
            "id" : "MIDIIn",
            "name" : "MIDI In",
            "type" : "MIDIIn",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "MIDI-to-Poly-1",
            "name" : "MIDI-to-Poly",
            "type" : "MIDI-to-Poly",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "PitchBend",
            "name" : "Pitch Bend",
            "type" : "PitchBend"
          },
          {
            "id" : "RelativePitch",
            "name" : "Relative Pitch",
            "type" : "RelativePitch",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "VAOscillator",
            "name" : "Saw",
            "type" : "VAOscillator"
          },
          {
            "id" : "RelativePitch-2",
            "name" : "Relative Pitch 2",
            "type" : "RelativePitch"
          },
          {
            "id" : "VAOscillator-2",
            "name" : "Trapezoid",
            "type" : "VAOscillator"
          },
          {
            "id" : "Filter",
            "name" : "Filter",
            "type" : "VAFilter"
          },
          {
            "id" : "AmpEnvelope",
            "name" : "Amp Envelope",
            "type" : "AmpEnvelope"
          },
          {
            "id" : "AudioOut-1",
            "name" : "Audio Out",
            "type" : "AudioOut",
            "view" : {
              "collapsed" : true
            }
          }
        ],
        "type" : "Lane"
      },
      {
        "id" : "lane-3",
        "name" : "Effects",
        "submodules" : [
          {
            "id" : "AudioIn-2",
            "name" : "Audio In",
            "type" : "AudioIn",
            "view" : {
              "collapsed" : true
            }
          },
          {
            "id" : "StereoDelay",
            "name" : "Stereo Delay",
            "type" : "StereoDelay"
          },
          {
            "id" : "Volume",
            "name" : "Volume",
            "type" : "Volume"
          },
          {
            "id" : "Clipper",
            "name" : "Clipper",
            "type" : "Clipper"
          },
          {
            "id" : "Meter",
            "name" : "Meter",
            "type" : "Meter"
          },
          {
            "id" : "AudioOut-2",
            "name" : "Audio Out",
            "type" : "AudioOut",
            "view" : {
              "collapsed" : true
            }
          }
        ],
        "type" : "Lane"
      }
    ],
    "type" : "Stack"
  },
  "version" : 37
}
```

### Default

Factory patch: `MIDI FX/Default`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {

  },
  "parameters" : {
    "Arpeggiator.Gate" : "0.90000004",
    "Arpeggiator.Mode" : "Up",
    "Arpeggiator.OctRange" : "1.0",
    "Arpeggiator.Offset" : "1.0",
    "Arpeggiator.On" : "1.0",
    "Arpeggiator.Position" : "0.0",
    "Arpeggiator.Retrig" : "On",
    "Arpeggiator.Sync" : "1/16",
    "Global.Keyboard.Velocity" : "99.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "1",
    "lane-1.Internal.Mode" : "Isolate",
    "lane-1.On" : "1.0",
    "MIDIIn-0.Input" : "In 1",
    "MIDIIn-0.On" : "1.0",
    "MIDIIn-0.Panic!" : "Off",
    "MIDIOut-0.On" : "1.0",
    "MIDIOut-0.Output" : "Out 1",
    "MIDIOut-0.Panic!" : "Off",
    "Root.Internal.Mode" : "Isolate",
    "Root.On" : "1.0",
    "Transposer.On" : "1.0",
    "Transposer.Semitones" : "0.0"
  },
  "root" : {
    "id" : "Root",
    "name" : "Default",
    "submodules" : [
      {
        "id" : "lane-1",
        "name" : "Lane 1",
        "submodules" : [
          {
            "id" : "MIDIIn-0",
            "name" : "MIDI In",
            "type" : "MIDIIn"
          },
          {
            "id" : "Arpeggiator",
            "name" : "Arpeggiator",
            "type" : "Arpeggiator"
          },
          {
            "id" : "Transposer",
            "name" : "Transposer",
            "type" : "Transposer"
          },
          {
            "id" : "MIDIOut-0",
            "name" : "MIDI Out",
            "type" : "MIDIOut"
          }
        ],
        "type" : "Lane"
      }
    ],
    "type" : "Stack"
  },
  "version" : 37
}
```

### Default

Factory patch: `Audio FX/Default`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {
    "LFO" : [
      "Filter.Frequency"
    ]
  },
  "parameters" : {
    "AudioIn-0.Internal.Input" : "In 1",
    "AudioIn-0.On" : "1.0",
    "AudioOut-0.Internal.Output" : "Out 1",
    "AudioOut-0.On" : "1.0",
    "Filter.Drive" : "0.0",
    "Filter.Frequency" : "604.9303",
    "Filter.On" : "1.0",
    "Filter.Resonance" : "0.0",
    "Filter.Type" : "LP 12dB A",
    "Global.Keyboard.Velocity" : "99.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "1",
    "lane-1.Internal.Mode" : "Isolate",
    "lane-1.On" : "1.0",
    "LFO.Bias" : "0.0",
    "LFO.Cycles" : "1000.0",
    "LFO.Depth" : "0.5",
    "LFO.Offset" : "1.0",
    "LFO.On" : "1.0",
    "LFO.Phase" : "0.0",
    "LFO.Rate" : "1.0",
    "LFO.Sync" : "1/4",
    "LFO.Targets.Intensity1" : "0.5",
    "LFO.Targets.Intensity2" : "0.0",
    "LFO.Targets.Intensity3" : "0.0",
    "LFO.Targets.Intensity4" : "0.0",
    "LFO.Targets.Intensity5" : "0.0",
    "LFO.Targets.Intensity6" : "0.0",
    "LFO.Targets.Intensity7" : "0.0",
    "LFO.Targets.Intensity8" : "0.0",
    "LFO.Tilt" : "0.0",
    "LFO.Trigger" : "Free",
    "LFO.Waveform" : "Sine",
    "Root.Internal.Mode" : "Isolate",
    "Root.On" : "1.0"
  },
  "root" : {
    "id" : "Root",
    "name" : "Default",
    "submodules" : [
      {
        "id" : "lane-1",
        "name" : "Lane 1",
        "submodules" : [
          {
            "id" : "AudioIn-0",
            "name" : "Audio In",
            "type" : "AudioIn"
          },
          {
            "id" : "Filter",
            "name" : "Filter",
            "type" : "VAFilter"
          },
          {
            "id" : "LFO",
            "name" : "LFO",
            "type" : "LFO"
          },
          {
            "id" : "AudioOut-0",
            "name" : "Audio Out",
            "type" : "AudioOut"
          }
        ],
        "type" : "Lane"
      }
    ],
    "type" : "Stack"
  },
  "version" : 37
}
```

### Lo-Fi Keys

Factory patch: `Keys/Lo-Fi Keys`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {
    "AmpEnvelope" : [

    ],
    "AmpEnvelope-2" : [
      "VAFilter.Frequency"
    ],
    "MIDISource" : [
      "Matrix.BtoA",
      "VAOscillator-2.Level"
    ],
    "PitchFollower" : [
      "VAFilter.Frequency",
      "FMOperator.Feedback"
    ]
  },
  "parameters" : {
    "AmpEnvelope-2.Attack" : "0.00938429",
    "AmpEnvelope-2.Decay" : "1.7685235",
    "AmpEnvelope-2.Internal.Reset" : "1 ms",
    "AmpEnvelope-2.Legato" : "Off",
    "AmpEnvelope-2.On" : "1.0",
    "AmpEnvelope-2.Release" : "2.9491704",
    "AmpEnvelope-2.Sustain" : "0.2839338",
    "AmpEnvelope-2.Targets.Intensity1" : "0.066601515",
    "AmpEnvelope-2.Targets.Intensity2" : "0.0",
    "AmpEnvelope-2.Targets.Intensity3" : "0.0",
    "AmpEnvelope-2.Targets.Intensity4" : "0.0",
    "AmpEnvelope-2.Targets.Intensity5" : "0.0",
    "AmpEnvelope-2.Targets.Intensity6" : "0.0",
    "AmpEnvelope-2.Targets.Intensity7" : "0.0",
    "AmpEnvelope-2.Targets.Intensity8" : "0.0",
    "AmpEnvelope-2.Type" : "ADSR",
    "AmpEnvelope.Attack" : "0.008539136",
    "AmpEnvelope.Decay" : "2.443791",
    "AmpEnvelope.Internal.Reset" : "1 ms",
    "AmpEnvelope.Legato" : "Off",
    "AmpEnvelope.On" : "1.0",
    "AmpEnvelope.Release" : "1.1506702",
    "AmpEnvelope.Sustain" : "0.21539932",
    "AmpEnvelope.Targets.Intensity1" : "0.0",
    "AmpEnvelope.Targets.Intensity2" : "0.0",
    "AmpEnvelope.Targets.Intensity3" : "0.0",
    "AmpEnvelope.Targets.Intensity4" : "0.0",
    "AmpEnvelope.Targets.Intensity5" : "0.0",
    "AmpEnvelope.Targets.Intensity6" : "0.0",
    "AmpEnvelope.Targets.Intensity7" : "0.0",
    "AmpEnvelope.Targets.Intensity8" : "0.0",
    "AmpEnvelope.Type" : "ADSR",
    "AudioOut.Internal.Output" : "Out 1",
    "AudioOut.On" : "1.0",
    "DigitalDelay.Feedback" : "0.5",
    "DigitalDelay.Mix" : "0.33333334",
    "DigitalDelay.Mode" : "Stereo",
    "DigitalDelay.Offset" : "1.0",
    "DigitalDelay.On" : "1.0",
    "DigitalDelay.Sync" : "3/16",
    "DigitalDelay.Time" : "0.12499999",
    "FMOperator.Feedback" : "0.057775855",
    "FMOperator.FM" : "1.0",
    "FMOperator.Intensity" : "1.0",
    "FMOperator.Internal.Trigger" : "Free",
    "FMOperator.Level" : "1.0",
    "FMOperator.On" : "1.0",
    "FMOperator.Phase" : "0.0",
    "Global.Keyboard.Velocity" : "99.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "4",
    "Lane-2-2.Internal.Mode" : "Insert",
    "Lane-2-2.On" : "1.0",
    "Lane-2.Internal.Mode" : "Insert",
    "Lane-2.On" : "1.0",
    "Lane.Internal.Mode" : "Isolate",
    "Lane.On" : "1.0",
    "Matrix.AtoB" : "0.0",
    "Matrix.AtoC" : "1.0",
    "Matrix.AtoD" : "0.0",
    "Matrix.AtoE" : "0.0",
    "Matrix.AtoF" : "0.0",
    "Matrix.AtoG" : "0.0",
    "Matrix.BtoA" : "0.49863285",
    "Matrix.BtoC" : "0.0",
    "Matrix.BtoD" : "0.0",
    "Matrix.BtoE" : "0.0",
    "Matrix.BtoF" : "0.0",
    "Matrix.BtoG" : "0.0",
    "Matrix.CtoA" : "0.0",
    "Matrix.CtoB" : "1.0",
    "Matrix.CtoD" : "0.0",
    "Matrix.CtoE" : "0.0",
    "Matrix.CtoF" : "0.0",
    "Matrix.CtoG" : "0.0",
    "Matrix.DtoA" : "0.0",
    "Matrix.DtoB" : "0.0",
    "Matrix.DtoC" : "0.0",
    "Matrix.DtoE" : "0.0",
    "Matrix.DtoF" : "0.0",
    "Matrix.DtoG" : "0.0",
    "Matrix.EtoA" : "0.0",
    "Matrix.EtoB" : "0.0",
    "Matrix.EtoC" : "0.0",
    "Matrix.EtoD" : "0.0",
    "Matrix.EtoF" : "0.0",
    "Matrix.EtoG" : "0.0",
    "Matrix.FtoA" : "0.0",
    "Matrix.FtoB" : "0.0",
    "Matrix.FtoC" : "0.0",
    "Matrix.FtoD" : "0.0",
    "Matrix.FtoE" : "0.0",
    "Matrix.FtoG" : "0.0",
    "Matrix.GtoA" : "0.0",
    "Matrix.GtoB" : "0.0",
    "Matrix.GtoC" : "0.0",
    "Matrix.GtoD" : "0.0",
    "Matrix.GtoE" : "0.0",
    "Matrix.GtoF" : "0.0",
    "Matrix.On" : "1.0",
    "MIDIIn.Input" : "In 1",
    "MIDIIn.On" : "1.0",
    "MIDIIn.Panic!" : "Off",
    "MIDISource.Bias" : "1.0",
    "MIDISource.Gain" : "0.0",
    "MIDISource.Number" : "All",
    "MIDISource.On" : "1.0",
    "MIDISource.Smooth" : "0.0",
    "MIDISource.Source" : "Velocity",
    "MIDISource.Targets.Intensity1" : "0.2745117",
    "MIDISource.Targets.Intensity2" : "0.25",
    "MIDISource.Targets.Intensity3" : "0.0",
    "MIDISource.Targets.Intensity4" : "0.0",
    "MIDISource.Targets.Intensity5" : "0.0",
    "MIDISource.Targets.Intensity6" : "0.0",
    "MIDISource.Targets.Intensity7" : "0.0",
    "MIDISource.Targets.Intensity8" : "0.0",
    "PitchFollower.Center" : "261.6256",
    "PitchFollower.On" : "1.0",
    "PitchFollower.Targets.Intensity1" : "1.0",
    "PitchFollower.Targets.Intensity2" : "-0.24624026",
    "PitchFollower.Targets.Intensity3" : "0.0",
    "PitchFollower.Targets.Intensity4" : "0.0",
    "PitchFollower.Targets.Intensity5" : "0.0",
    "PitchFollower.Targets.Intensity6" : "0.0",
    "PitchFollower.Targets.Intensity7" : "0.0",
    "PitchFollower.Targets.Intensity8" : "0.0",
    "PitchRatio.Denominator" : "1.0",
    "PitchRatio.Numerator" : "4.0",
    "PitchRatio.On" : "1.0",
    "PitchShifter.On" : "1.0",
    "PitchShifter.Shift" : "-0.13203192",
    "PitchShifter.Spread" : "1.3159156",
    "PitchShifter.Window" : "0.049999997",
    "VAFilter.Drive" : "0.0",
    "VAFilter.Frequency" : "231.6753",
    "VAFilter.On" : "1.0",
    "VAFilter.Resonance" : "0.46210933",
    "VAFilter.Type" : "LP 12dB A",
    "VAOscillator-2.Internal.Trigger" : "Retrig",
    "VAOscillator-2.Level" : "0.25332034",
    "VAOscillator-2.On" : "1.0",
    "VAOscillator-2.Phase" : "0.0",
    "VAOscillator-2.Ring" : "1.0",
    "VAOscillator-2.Shape" : "1.0",
    "VAOscillator-2.Sync" : "1.0",
    "VAOscillator-2.Waveform" : "Sine"
  },
  "root" : {
    "id" : "Lane",
    "name" : "Lo-Fi Keys",
    "submodules" : [
      {
        "id" : "MIDIIn",
        "name" : "MIDI In",
        "type" : "MIDIIn",
        "view" : {
          "collapsed" : true
        }
      },
      {
        "id" : "MIDI-to-Poly",
        "name" : "MIDI-to-Poly",
        "type" : "MIDI-to-Poly"
      },
      {
        "id" : "PitchFollower",
        "name" : "Pitch Follower",
        "type" : "PitchFollower",
        "view" : {
          "collapsed" : true
        }
      },
      {
        "id" : "MIDISource",
        "name" : "MIDI Source",
        "type" : "MIDISource"
      },
      {
        "id" : "Matrix",
        "name" : "Matrix",
        "submodules" : [
          {
            "id" : "Lane-2",
            "name" : "FM",
            "submodules" : [
              {
                "id" : "FMOperator",
                "name" : "FM Operator",
                "type" : "FMOperator"
              },
              {
                "id" : "AmpEnvelope",
                "name" : "Amp Envelope",
                "type" : "AmpEnvelope"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "VAFilter",
            "name" : "VA Filter",
            "type" : "VAFilter"
          },
          {
            "id" : "Lane-2-2",
            "name" : "Ring",
            "submodules" : [
              {
                "id" : "PitchRatio",
                "name" : "Pitch Ratio",
                "type" : "PitchRatio",
                "view" : {
                  "collapsed" : true
                }
              },
              {
                "id" : "VAOscillator-2",
                "name" : "VA Oscillator",
                "type" : "VAOscillator"
              },
              {
                "id" : "AmpEnvelope-2",
                "name" : "Amp Envelope",
                "type" : "AmpEnvelope"
              }
            ],
            "type" : "Lane"
          }
        ],
        "type" : "Matrix"
      },
      {
        "id" : "DigitalDelay",
        "name" : "Digital Delay",
        "submodules" : [
          {
            "id" : "PitchShifter",
            "name" : "Pitch Shifter",
            "type" : "PitchShifter"
          }
        ],
        "type" : "DigitalDelay",
        "view" : {
          "subview" : "sublane"
        }
      },
      {
        "id" : "AudioOut",
        "name" : "Audio Out",
        "type" : "AudioOut",
        "view" : {
          "collapsed" : true
        }
      }
    ],
    "type" : "Lane"
  },
  "version" : 37
}
```

### Matrix Taps

Factory patch: `Audio FX/Matrix Taps`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {

  },
  "parameters" : {
    "AudioIn.Internal.Input" : "In 1",
    "AudioIn.On" : "1.0",
    "AudioOut.Internal.Output" : "Out 1",
    "AudioOut.On" : "1.0",
    "Balance-2.On" : "1.0",
    "Balance-2.Pan" : "0.5",
    "Balance-3.On" : "1.0",
    "Balance-3.Pan" : "-0.5",
    "Balance.On" : "1.0",
    "Balance.Pan" : "0.0",
    "BandPass-2.HighCut" : "15999.994",
    "BandPass-2.LowCut" : "19.499998",
    "BandPass-2.On" : "1.0",
    "BandPass-2.Slope" : "2-Pole",
    "BandPass-3.HighCut" : "15999.994",
    "BandPass-3.LowCut" : "19.499998",
    "BandPass-3.On" : "1.0",
    "BandPass-3.Slope" : "2-Pole",
    "BandPass.HighCut" : "18000.002",
    "BandPass.LowCut" : "180.10287",
    "BandPass.On" : "1.0",
    "BandPass.Slope" : "2-Pole",
    "Delay-2.Mode" : "1/16",
    "Delay-2.Offset" : "1.0",
    "Delay-2.On" : "1.0",
    "Delay-2.Time" : "0.12499999",
    "Delay-3.Mode" : "1/16",
    "Delay-3.Offset" : "1.5",
    "Delay-3.On" : "1.0",
    "Delay-3.Time" : "0.12499999",
    "Delay.Mode" : "1/8",
    "Delay.Offset" : "1.0",
    "Delay.On" : "1.0",
    "Delay.Time" : "0.12499999",
    "Global.Keyboard.Velocity" : "99.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "1",
    "Lane-3.Internal.Mode" : "Isolate",
    "Lane-3.On" : "1.0",
    "Lane-4-2.Internal.Mode" : "Insert",
    "Lane-4-2.On" : "1.0",
    "Lane-4-3.Internal.Mode" : "Insert",
    "Lane-4-3.On" : "1.0",
    "Lane-4.Internal.Mode" : "Insert",
    "Lane-4.On" : "1.0",
    "Level-2-2.Level" : "1.0",
    "Level-2-2.On" : "1.0",
    "Level-2.Level" : "1.0",
    "Level-2.On" : "1.0",
    "Matrix-2.AtoB" : "1.0",
    "Matrix-2.AtoC" : "1.0",
    "Matrix-2.AtoD" : "1.0",
    "Matrix-2.AtoE" : "0.79611146",
    "Matrix-2.AtoF" : "0.0",
    "Matrix-2.AtoG" : "0.0",
    "Matrix-2.BtoA" : "0.40224615",
    "Matrix-2.BtoC" : "0.0",
    "Matrix-2.BtoD" : "0.0",
    "Matrix-2.BtoE" : "0.40200195",
    "Matrix-2.BtoF" : "0.0",
    "Matrix-2.BtoG" : "0.0",
    "Matrix-2.CtoA" : "0.0",
    "Matrix-2.CtoB" : "0.095214844",
    "Matrix-2.CtoD" : "0.0",
    "Matrix-2.CtoE" : "0.29882812",
    "Matrix-2.CtoF" : "0.0",
    "Matrix-2.CtoG" : "0.0",
    "Matrix-2.DtoA" : "0.0",
    "Matrix-2.DtoB" : "0.1045166",
    "Matrix-2.DtoC" : "0.0",
    "Matrix-2.DtoE" : "0.29873046",
    "Matrix-2.DtoF" : "0.0",
    "Matrix-2.DtoG" : "0.0",
    "Matrix-2.EtoA" : "0.0",
    "Matrix-2.EtoB" : "0.0",
    "Matrix-2.EtoC" : "0.0",
    "Matrix-2.EtoD" : "0.0",
    "Matrix-2.EtoF" : "0.0",
    "Matrix-2.EtoG" : "0.0",
    "Matrix-2.FtoA" : "0.0",
    "Matrix-2.FtoB" : "0.0",
    "Matrix-2.FtoC" : "0.0",
    "Matrix-2.FtoD" : "0.0",
    "Matrix-2.FtoE" : "0.0",
    "Matrix-2.FtoG" : "0.0",
    "Matrix-2.GtoA" : "0.0",
    "Matrix-2.GtoB" : "0.0",
    "Matrix-2.GtoC" : "0.0",
    "Matrix-2.GtoD" : "0.0",
    "Matrix-2.GtoE" : "0.0",
    "Matrix-2.GtoF" : "0.0",
    "Matrix-2.On" : "1.0",
    "PitchShifter-2.On" : "1.0",
    "PitchShifter-2.Shift" : "0.02",
    "PitchShifter-2.Spread" : "0.0",
    "PitchShifter-2.Window" : "0.049999997",
    "PitchShifter-3.On" : "1.0",
    "PitchShifter-3.Shift" : "-0.02",
    "PitchShifter-3.Spread" : "0.0",
    "PitchShifter-3.Window" : "0.049999997",
    "PitchShifter.On" : "1.0",
    "PitchShifter.Shift" : "0.0",
    "PitchShifter.Spread" : "2.071774",
    "PitchShifter.Window" : "0.049999997"
  },
  "root" : {
    "id" : "Lane-3",
    "name" : "Matrix Taps",
    "submodules" : [
      {
        "id" : "AudioIn",
        "name" : "Audio In",
        "type" : "AudioIn",
        "view" : {
          "collapsed" : true
        }
      },
      {
        "extra" : {
          "text" : "The patch demonstrates how the Matrix module can be used to create a feature-rich multi-tap delay.\n\nNode A sends the input audio to the delay taps as well as the dry signal to the output.\n\nNode E sums the dry signal with the tap outputs.\n\nNodes B, C, and D are the delay taps.\n\nOther routing levels can be adjusted to create feedback loops or route audio directly between taps.\n\nThe patch can be extended by changing the processing chain inside each tap. A tap can also be duplicated twice to turn this into a 5-tap delay."
        },
        "id" : "Notepad",
        "name" : "About",
        "type" : "Notepad"
      },
      {
        "id" : "Matrix-2",
        "name" : "Matrix",
        "submodules" : [
          {
            "id" : "Level-2",
            "name" : "Input",
            "type" : "Level"
          },
          {
            "id" : "Lane-4",
            "name" : "Tap 1",
            "submodules" : [
              {
                "id" : "Delay",
                "name" : "Delay",
                "type" : "Delay"
              },
              {
                "id" : "PitchShifter",
                "name" : "Pitch Shifter",
                "type" : "PitchShifter"
              },
              {
                "id" : "BandPass",
                "name" : "Band Pass",
                "type" : "BandPass"
              },
              {
                "id" : "Balance",
                "name" : "Balance",
                "type" : "Balance"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Lane-4-3",
            "name" : "Tap 2",
            "submodules" : [
              {
                "id" : "Delay-3",
                "name" : "Delay",
                "type" : "Delay"
              },
              {
                "id" : "PitchShifter-3",
                "name" : "Pitch Shifter",
                "type" : "PitchShifter"
              },
              {
                "id" : "BandPass-3",
                "name" : "Band Pass",
                "type" : "BandPass"
              },
              {
                "id" : "Balance-3",
                "name" : "Balance",
                "type" : "Balance"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Lane-4-2",
            "name" : "Tap 3",
            "submodules" : [
              {
                "id" : "Delay-2",
                "name" : "Delay",
                "type" : "Delay"
              },
              {
                "id" : "PitchShifter-2",
                "name" : "Pitch Shifter",
                "type" : "PitchShifter"
              },
              {
                "id" : "BandPass-2",
                "name" : "Band Pass",
                "type" : "BandPass"
              },
              {
                "id" : "Balance-2",
                "name" : "Balance",
                "type" : "Balance"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Level-2-2",
            "name" : "Output",
            "type" : "Level"
          }
        ],
        "type" : "Matrix",
        "view" : {
          "item" : 1,
          "subview" : "stack"
        }
      },
      {
        "id" : "AudioOut",
        "name" : "Audio Out",
        "type" : "AudioOut",
        "view" : {
          "collapsed" : true
        }
      }
    ],
    "type" : "Lane"
  },
  "version" : 37
}
```

### FM Keys

Factory patch: `Keys/FM Keys`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {
    "AmpEnvelope" : [

    ],
    "AmpEnvelope-2" : [

    ],
    "AmpEnvelope-2-2" : [

    ],
    "AmpEnvelope-2-2-2" : [

    ],
    "MIDISource" : [
      "Level.Level",
      "Matrix.BtoC",
      "Matrix.BtoD"
    ]
  },
  "parameters" : {
    "AmpEnvelope-2-2-2.Attack" : "0.0019999999",
    "AmpEnvelope-2-2-2.Decay" : "1.8000002",
    "AmpEnvelope-2-2-2.Internal.Reset" : "Off",
    "AmpEnvelope-2-2-2.Legato" : "Off",
    "AmpEnvelope-2-2-2.On" : "1.0",
    "AmpEnvelope-2-2-2.Release" : "1.0",
    "AmpEnvelope-2-2-2.Sustain" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity1" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity2" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity3" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity4" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity5" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity6" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity7" : "0.0",
    "AmpEnvelope-2-2-2.Targets.Intensity8" : "0.0",
    "AmpEnvelope-2-2-2.Type" : "ADSR",
    "AmpEnvelope-2-2.Attack" : "0.0019999999",
    "AmpEnvelope-2-2.Decay" : "2.5000002",
    "AmpEnvelope-2-2.Internal.Reset" : "Off",
    "AmpEnvelope-2-2.Legato" : "Off",
    "AmpEnvelope-2-2.On" : "1.0",
    "AmpEnvelope-2-2.Release" : "0.50000006",
    "AmpEnvelope-2-2.Sustain" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity1" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity2" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity3" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity4" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity5" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity6" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity7" : "0.0",
    "AmpEnvelope-2-2.Targets.Intensity8" : "0.0",
    "AmpEnvelope-2-2.Type" : "ADSR",
    "AmpEnvelope-2.Attack" : "0.00049999997",
    "AmpEnvelope-2.Decay" : "0.06",
    "AmpEnvelope-2.Internal.Reset" : "Off",
    "AmpEnvelope-2.Legato" : "Off",
    "AmpEnvelope-2.On" : "1.0",
    "AmpEnvelope-2.Release" : "0.03",
    "AmpEnvelope-2.Sustain" : "0.0",
    "AmpEnvelope-2.Targets.Intensity1" : "0.0",
    "AmpEnvelope-2.Targets.Intensity2" : "0.0",
    "AmpEnvelope-2.Targets.Intensity3" : "0.0",
    "AmpEnvelope-2.Targets.Intensity4" : "0.0",
    "AmpEnvelope-2.Targets.Intensity5" : "0.0",
    "AmpEnvelope-2.Targets.Intensity6" : "0.0",
    "AmpEnvelope-2.Targets.Intensity7" : "0.0",
    "AmpEnvelope-2.Targets.Intensity8" : "0.0",
    "AmpEnvelope-2.Type" : "ADSR",
    "AmpEnvelope.Attack" : "0.0009999998",
    "AmpEnvelope.Decay" : "0.45000002",
    "AmpEnvelope.Internal.Reset" : "Off",
    "AmpEnvelope.Legato" : "Off",
    "AmpEnvelope.On" : "1.0",
    "AmpEnvelope.Release" : "0.10000001",
    "AmpEnvelope.Sustain" : "0.0",
    "AmpEnvelope.Targets.Intensity1" : "0.0",
    "AmpEnvelope.Targets.Intensity2" : "0.0",
    "AmpEnvelope.Targets.Intensity3" : "0.0",
    "AmpEnvelope.Targets.Intensity4" : "0.0",
    "AmpEnvelope.Targets.Intensity5" : "0.0",
    "AmpEnvelope.Targets.Intensity6" : "0.0",
    "AmpEnvelope.Targets.Intensity7" : "0.0",
    "AmpEnvelope.Targets.Intensity8" : "0.0",
    "AmpEnvelope.Type" : "ADR",
    "AudioOut.Internal.Output" : "Out 1",
    "AudioOut.On" : "1.0",
    "FMOperator-2-2-2.Feedback" : "0.04719238",
    "FMOperator-2-2-2.FM" : "1.0",
    "FMOperator-2-2-2.Intensity" : "1.0",
    "FMOperator-2-2-2.Internal.Trigger" : "Retrig",
    "FMOperator-2-2-2.Level" : "1.0",
    "FMOperator-2-2-2.On" : "1.0",
    "FMOperator-2-2-2.Phase" : "0.0",
    "FMOperator-2-2.Feedback" : "0.0",
    "FMOperator-2-2.FM" : "1.0",
    "FMOperator-2-2.Intensity" : "1.0",
    "FMOperator-2-2.Internal.Trigger" : "Retrig",
    "FMOperator-2-2.Level" : "1.0",
    "FMOperator-2-2.On" : "1.0",
    "FMOperator-2-2.Phase" : "0.0",
    "FMOperator-2.Feedback" : "0.049108885",
    "FMOperator-2.FM" : "1.0",
    "FMOperator-2.Intensity" : "0.0",
    "FMOperator-2.Internal.Trigger" : "Retrig",
    "FMOperator-2.Level" : "1.0",
    "FMOperator-2.On" : "1.0",
    "FMOperator-2.Phase" : "0.0",
    "FMOperator.Feedback" : "0.0",
    "FMOperator.FM" : "1.0",
    "FMOperator.Intensity" : "0.0",
    "FMOperator.Internal.Trigger" : "Retrig",
    "FMOperator.Level" : "1.0",
    "FMOperator.On" : "1.0",
    "FMOperator.Phase" : "0.0",
    "Global.Keyboard.Velocity" : "99.0",
    "Global.Latency.Ahead" : "0.0",
    "Global.Polyphony.Release" : "Old",
    "Global.Polyphony.Reuse" : "On",
    "Global.Polyphony.Voices" : "4",
    "Group.Internal.Mode" : "Isolate",
    "Group.On" : "1.0",
    "Lane-2-2-2.Internal.Mode" : "Insert",
    "Lane-2-2-2.On" : "1.0",
    "Lane-2-2.Internal.Mode" : "Insert",
    "Lane-2-2.On" : "1.0",
    "Lane-2.Internal.Mode" : "Insert",
    "Lane-2.On" : "1.0",
    "Lane.Internal.Mode" : "Insert",
    "Lane.On" : "1.0",
    "Level.Level" : "0.1",
    "Level.On" : "1.0",
    "Matrix.AtoB" : "0.0",
    "Matrix.AtoC" : "0.37980956",
    "Matrix.AtoD" : "0.30754393",
    "Matrix.AtoE" : "0.0",
    "Matrix.AtoF" : "0.0",
    "Matrix.AtoG" : "0.0",
    "Matrix.BtoA" : "0.0",
    "Matrix.BtoC" : "0.04538574",
    "Matrix.BtoD" : "0.021606453",
    "Matrix.BtoE" : "0.0",
    "Matrix.BtoF" : "0.0",
    "Matrix.BtoG" : "0.0",
    "Matrix.CtoA" : "0.0",
    "Matrix.CtoB" : "0.0",
    "Matrix.CtoD" : "0.0",
    "Matrix.CtoE" : "0.79775393",
    "Matrix.CtoF" : "0.0",
    "Matrix.CtoG" : "0.0",
    "Matrix.DtoA" : "0.0",
    "Matrix.DtoB" : "0.0",
    "Matrix.DtoC" : "0.0",
    "Matrix.DtoE" : "0.5536133",
    "Matrix.DtoF" : "0.0",
    "Matrix.DtoG" : "0.0",
    "Matrix.EtoA" : "0.0",
    "Matrix.EtoB" : "0.0",
    "Matrix.EtoC" : "0.0",
    "Matrix.EtoD" : "0.0",
    "Matrix.EtoF" : "0.0",
    "Matrix.EtoG" : "0.0",
    "Matrix.FtoA" : "0.0",
    "Matrix.FtoB" : "0.0",
    "Matrix.FtoC" : "0.0",
    "Matrix.FtoD" : "0.0",
    "Matrix.FtoE" : "0.0",
    "Matrix.FtoG" : "0.0",
    "Matrix.GtoA" : "0.0",
    "Matrix.GtoB" : "0.0",
    "Matrix.GtoC" : "0.0",
    "Matrix.GtoD" : "0.0",
    "Matrix.GtoE" : "0.0",
    "Matrix.GtoF" : "0.0",
    "Matrix.On" : "1.0",
    "Meter.Reset" : "Off",
    "MIDIIn.Input" : "In 1",
    "MIDIIn.On" : "1.0",
    "MIDIIn.Panic!" : "Off",
    "MIDISource.Bias" : "1.0",
    "MIDISource.Gain" : "0.0",
    "MIDISource.Number" : "All",
    "MIDISource.On" : "1.0",
    "MIDISource.Smooth" : "0.0",
    "MIDISource.Source" : "Velocity",
    "MIDISource.Targets.Intensity1" : "1.0",
    "MIDISource.Targets.Intensity2" : "0.3",
    "MIDISource.Targets.Intensity3" : "0.16",
    "MIDISource.Targets.Intensity4" : "0.0",
    "MIDISource.Targets.Intensity5" : "0.0",
    "MIDISource.Targets.Intensity6" : "0.0",
    "MIDISource.Targets.Intensity7" : "0.0",
    "MIDISource.Targets.Intensity8" : "0.0",
    "PitchRatio-2.Denominator" : "1.0",
    "PitchRatio-2.Numerator" : "7.0",
    "PitchRatio-2.On" : "1.0",
    "PitchRatio.Denominator" : "1.0",
    "PitchRatio.Numerator" : "2.0",
    "PitchRatio.On" : "1.0",
    "Poly-to-Mono.Volume" : "-12.0",
    "RelativePitch.Cents" : "-3.0",
    "RelativePitch.On" : "1.0",
    "RelativePitch.Semitones" : "0.0"
  },
  "root" : {
    "id" : "Group",
    "name" : "FM Keys",
    "submodules" : [
      {
        "id" : "MIDIIn",
        "name" : "MIDI In",
        "type" : "MIDIIn",
        "view" : {
          "collapsed" : true
        }
      },
      {
        "id" : "MIDI-to-Poly",
        "name" : "MIDI-to-Poly",
        "type" : "MIDI-to-Poly"
      },
      {
        "id" : "MIDISource",
        "name" : "MIDI Source",
        "type" : "MIDISource"
      },
      {
        "id" : "Matrix",
        "name" : "Matrix",
        "submodules" : [
          {
            "id" : "Lane",
            "name" : "Body Modulator",
            "submodules" : [
              {
                "id" : "PitchRatio",
                "name" : "Pitch Ratio",
                "type" : "PitchRatio"
              },
              {
                "id" : "FMOperator",
                "name" : "FM Operator",
                "type" : "FMOperator"
              },
              {
                "id" : "AmpEnvelope",
                "name" : "Amp Envelope",
                "type" : "AmpEnvelope"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Lane-2",
            "name" : "Hammer Modulator",
            "submodules" : [
              {
                "id" : "PitchRatio-2",
                "name" : "Pitch Ratio",
                "type" : "PitchRatio"
              },
              {
                "id" : "FMOperator-2",
                "name" : "FM Operator",
                "type" : "FMOperator"
              },
              {
                "id" : "AmpEnvelope-2",
                "name" : "Amp Envelope",
                "type" : "AmpEnvelope"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Lane-2-2",
            "name" : "Main Carrier",
            "submodules" : [
              {
                "id" : "FMOperator-2-2",
                "name" : "FM Operator",
                "type" : "FMOperator"
              },
              {
                "id" : "AmpEnvelope-2-2",
                "name" : "Amp Envelope",
                "type" : "AmpEnvelope"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Lane-2-2-2",
            "name" : "Detuned String Carrier",
            "submodules" : [
              {
                "id" : "RelativePitch",
                "name" : "Relative Pitch",
                "type" : "RelativePitch"
              },
              {
                "id" : "FMOperator-2-2-2",
                "name" : "FM Operator",
                "type" : "FMOperator"
              },
              {
                "id" : "AmpEnvelope-2-2-2",
                "name" : "Amp Envelope",
                "type" : "AmpEnvelope"
              }
            ],
            "type" : "Lane"
          },
          {
            "id" : "Level",
            "name" : "Output",
            "type" : "Level"
          }
        ],
        "type" : "Matrix"
      },
      {
        "id" : "Poly-to-Mono",
        "name" : "Poly-to-Mono",
        "type" : "Poly-to-Mono"
      },
      {
        "id" : "Meter",
        "name" : "Meter",
        "type" : "Meter"
      },
      {
        "id" : "AudioOut",
        "name" : "Audio Out",
        "type" : "AudioOut",
        "view" : {
          "collapsed" : true
        }
      }
    ],
    "type" : "Lane"
  },
  "version" : 37
}
```

### Haas Effect

Factory patch: `Subpatches/Haas Effect`.

```json
{
  "audioUnit" : "Mela",
  "modulations" : {

  },
  "parameters" : {
    "Delay.Mode" : "Time",
    "Delay.Offset" : "1.0",
    "Delay.On" : "1.0",
    "Delay.Time" : "0.020000001",
    "Splitter.On" : "1.0",
    "StereoTool.Left" : "Mute",
    "StereoTool.On" : "1.0",
    "StereoTool.Right" : "Right"
  },
  "root" : {
    "id" : "Splitter",
    "name" : "Haas Effect",
    "submodules" : [
      {
        "id" : "StereoTool",
        "name" : "Stereo Tool",
        "type" : "StereoTool"
      },
      {
        "id" : "Delay",
        "name" : "Delay",
        "type" : "Delay"
      }
    ],
    "type" : "Splitter",
    "view" : {
      "subview" : "stack"
    }
  },
  "version" : 37
}
```

## Module reference

The following help and parameter definitions are generated from Mela. `type` is the exact serialised module type. Parameter ID suffixes are appended to an instance ID, regardless of nesting. Range numbers and Default strings are **stored values**, using the unit conversion rules above. Values arrays list exact labels in index order. Internal explicitly indicates whether a parameter is in the Internal group. Modulators additionally have the shared `Targets.Intensity1` through `Targets.Intensity8` parameters described above.

### All Pass

type: `AllPass`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Collapses Poly to Mono.

The All-Pass module allows all frequencies in an Audio signal to pass through without attenuation while introducing frequency-dependent phase shifts. It includes first- and second-order filter types. The first-order shifts the phase by 90º at the cutoff frequency, and the second-order shifts it by 180º. The module is ideal for creating audio effects such as phasers.

#### Type

Sets the filter order.

#### Frequency

Sets the cutoff frequency.

#### Q

Sets the quality factor, which determines the bandwidth around the cutoff frequency.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 1.0] | index | integerAbsolute | `"2-Pole"` | `["1-Pole","2-Pole"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"1000.0001"` | — |
| Q | `Q` | false | continuous | [0.025, 40.0] | decimal | logarithmic | `"1.0"` | — |

### Amp Envelope

type: `AmpEnvelope`. Container: `false`. Modulator: `true`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Amp Envelope module is a modulator whose Mod signal is a virtual-analog envelope. It can also process an Audio signal by applying the envelope to its amplitude. In Poly mode, the module responds to note-on, note-off, and sustain (CC 64) events from the Note signal, and in Mono mode from MIDI.

#### Type

Selects the envelope type: AR, ADR, or ADSR.

#### Attack

Sets attack time.

#### Decay

Sets decay time.

#### Sustain

Sets sustain level.

#### Release

Sets release time.

#### Legato

Enables legato mode, preventing retriggering on a note-on event if another note is already held.

#### Reset

Controls the reset-to-zero behaviour of the envelope on note-on: Off, On, or 1 ms.

Off restarts from the current value. On restarts from zero. 1 ms delays audio by 1 millisecond and fades the envelope to zero before restarting, providing clickless note stealing common in synthesisers.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 2.0] | index | integerAbsolute | `"ADSR"` | `["AR","ADR","ADSR"]` |
| Attack | `Attack` | false | continuous | [0.0, 20.0] | seconds | cubeRoot | `"0.001"` | — |
| Decay | `Decay` | false | continuous | [0.0, 20.0] | seconds | cubeRoot | `"0.5"` | — |
| Sustain | `Sustain` | false | continuous | [0.0, 1.0] | percent | signedSquareRoot | `"1.0"` | — |
| Release | `Release` | false | continuous | [0.0, 20.0] | seconds | cubeRoot | `"0.5"` | — |
| Legato | `Legato` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Reset | `Internal.Reset` | true | list | [0.0, 2.0] | index | integerAbsolute | `"Off"` | `["Off","On","1 ms"]` |

### Arpeggiator

type: `Arpeggiator`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Arpeggiator module turns chords into arpeggios.

#### Mode

Selects the arpeggio pattern, including chord and random options.

#### Retrig

Controls whether the arpeggio restarts on the first note-on event or follows the host grid.

#### Sync

Selects one of the tempo-synced options, or Free to instantly play and hold the note selected by Position.

#### Offset

Sets the arpeggio timing relative to the selected tempo-synced value.

#### Oct Range

Sets the octave range of the arpeggio.

#### Gate

Adjusts the length of arpeggiated notes.

#### Position

Sets the next note to play, in Manual or Free mode, by selecting a position across the chord, repeated over the active Oct Range.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 8.0] | index | integerAbsolute | `"Up"` | `["Up","Down","Up-Down","Down-Up","Up & Down","Down & Up","Random","Chord","Manual"]` |
| Retrig | `Retrig` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Sync | `Sync` | false | list | [0.0, 8.0] | index | integerAbsolute | `"1/4"` | `["Free","1/1","1/2","1/4","1/8","1/16","1/32","1/64","1/128"]` |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Oct Range | `OctRange` | false | integer | [1.0, 4.0] | integer | integerAbsolute | `"1.0"` | — |
| Gate | `Gate` | false | continuous | [0.01, 1.0] | percent | linear | `"0.9"` | — |
| Position | `Position` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### Audio In

type: `AudioIn`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Conditional. Host inputs collapse Poly to Mono. Audio buses preserve Poly only when the receiving chain and all senders are Poly; otherwise their Audio is summed to Mono.

The Audio In module receives an Audio signal from the host or a bus and merges it with the lane’s Audio signal.

#### Input

Selects the Audio signal source.

#### Ahead

Sets how far in advance Mela requests audio and MIDI from the host, allowing processing to begin before events normally occur.

For example, an envelope follower can detect transients before they are heard. This is also referred to as plug-in latency.

#### Latency Support

Most iOS hosts do not yet support plug-in latency compensation and may ignore this setting. The “Latency Test” factory patch helps check DAW support and assists developers with testing and debugging.

#### Poly Audio

Audio buses support Poly Audio, allowing Poly subsignals to be sent and received via Audio In, Audio Out, and Feedback modules. If any Audio Out sending to a bus, or the Audio In receiving from it, is in Mono mode, the subsignals are summed by the Audio In module. To prevent circular dependencies, the Feedback module never collapses incoming Poly subsignals, even if one of the Audio Out sources is in Mono mode.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Input | `Internal.Input` | true | list | [0.0, 5.0] | index | integerAbsolute | `"In 1"` | `["In 1","In 2","Bus 1","Bus 2","Bus 3","Bus 4"]` |

### Audio Out

type: `AudioOut`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Audio Out module sends a copy of the Audio signal to the host or a bus.

#### Output

Selects the Audio signal destination.

#### Poly Audio

Audio buses support Poly Audio, allowing Poly subsignals to be sent and received via Audio In, Audio Out, and Feedback modules. If any Audio Out sending to a bus, or the Audio In receiving from it, is in Mono mode, the subsignals are summed by the Audio In module. To prevent circular dependencies, the Feedback module never collapses incoming Poly subsignals, even if one of the Audio Out sources is in Mono mode.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Output | `Internal.Output` | true | list | [0.0, 4.0] | index | integerAbsolute | `"Out 1"` | `["Out 1","Bus 1","Bus 2","Bus 3","Bus 4"]` |

### Audio-to-Mod

type: `Audio-to-Mod`. Container: `false`. Modulator: `true`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.
Mela Lab: experimental module.

The Audio-to-Mod module is a modulator whose Mod signal is the average of the left and right channels of an Audio signal.

Since modulation in Mela runs at the sample rate, the module can be used for common synthesis techniques. For example, modulating another oscillator’s level produces amplitude modulation (AM), while modulating a filter’s cutoff frequency produces frequency modulation (FM).

#### Depth

Sets the amplitude of the Mod signal.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Depth | `Depth` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Balance

type: `Balance`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Balance module adjusts the relative levels of the left and right audio channels.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Pan | `Pan` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Band Pass

type: `BandPass`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Band Pass module processes the Audio signal using a pair of virtual-analog low-pass and high-pass filters arranged in series. It’s ideal for creating effects with feedback by inserting it into the feedback path.

#### Slope

Sets the order of the filters.

#### Low Cut

Sets the cutoff frequency of the low-pass filter.

#### High Cut

Sets the cutoff frequency of the high-pass filter.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Slope | `Slope` | false | list | [0.0, 1.0] | index | integerAbsolute | `"1-Pole"` | `["1-Pole","2-Pole"]` |
| Low Cut | `LowCut` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19.499998"` | — |
| High Cut | `HighCut` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19967.994"` | — |

### CC Modulator

type: `CCModulator`. Container: `false`. Modulator: `true`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The CC Modulator module uses incoming MIDI CC messages to modulate parameters. Unlike other modulators, each target can be configured to use a different MIDI CC source.

This provides an alternative way to automate parameters from the host. The host can send MIDI CC automation curves, which are translated into parameter modulation.

CC Modulator always operates in Mono mode, generating a Mono Mod signal and passing the Mono or Poly signal through unchanged.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Source 1 | `Internal.Source1` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 2 | `Internal.Source2` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 3 | `Internal.Source3` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 4 | `Internal.Source4` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 5 | `Internal.Source5` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 6 | `Internal.Source6` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 7 | `Internal.Source7` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |
| Source 8 | `Internal.Source8` | true | list | [0.0, 127.0] | index | integerAbsolute | `"CC0"` | `["CC0","CC1","CC2","CC3","CC4","CC5","CC6","CC7","CC8","CC9","CC10","CC11","CC12","CC13","CC14","CC15","CC16","CC17","CC18","CC19","CC20","CC21","CC22","CC23","CC24","CC25","CC26","CC27","CC28","CC29","CC30","CC31","CC32","CC33","CC34","CC35","CC36","CC37","CC38","CC39","CC40","CC41","CC42","CC43","CC44","CC45","CC46","CC47","CC48","CC49","CC50","CC51","CC52","CC53","CC54","CC55","CC56","CC57","CC58","CC59","CC60","CC61","CC62","CC63","CC64","CC65","CC66","CC67","CC68","CC69","CC70","CC71","CC72","CC73","CC74","CC75","CC76","CC77","CC78","CC79","CC80","CC81","CC82","CC83","CC84","CC85","CC86","CC87","CC88","CC89","CC90","CC91","CC92","CC93","CC94","CC95","CC96","CC97","CC98","CC99","CC100","CC101","CC102","CC103","CC104","CC105","CC106","CC107","CC108","CC109","CC110","CC111","CC112","CC113","CC114","CC115","CC116","CC117","CC118","CC119","CC120","CC121","CC122","CC123","CC124","CC125","CC126","CC127"]` |

### Chord

type: `Chord`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Chord module turns each note into a chord of up to 8 notes. Each row of parameters defines how a note in the chord is generated.

#### On

Controls whether the note in the chord is active.

#### Pitch

Sets the transposition amount of the note.

#### Velocity

Sets how much the note velocity moves toward the minimum or maximum value: -100% moves fully toward 1, +100% fully toward 127.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Note 1 On | `Note1On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| Note 2 On | `Note2On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 3 On | `Note3On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 4 On | `Note4On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 5 On | `Note5On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 6 On | `Note6On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 7 On | `Note7On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 8 On | `Note8On` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Note 1 Pitch | `Note1Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 2 Pitch | `Note2Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 3 Pitch | `Note3Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 4 Pitch | `Note4Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 5 Pitch | `Note5Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 6 Pitch | `Note6Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 7 Pitch | `Note7Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 8 Pitch | `Note8Pitch` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |
| Note 1 Velocity | `Note1Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 2 Velocity | `Note2Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 3 Velocity | `Note3Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 4 Velocity | `Note4Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 5 Velocity | `Note5Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 6 Velocity | `Note6Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 7 Velocity | `Note7Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Note 8 Velocity | `Note8Velocity` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Chorus

type: `Chorus`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Collapses Poly to Mono.

The Chorus module is a stereo chorus effect that uses two independent LFOs to modulate delay lines. The rate parameters each span exactly 10 octaves.

#### Rate 1

Sets the frequency of LFO 1.

#### Rate 2

Sets the frequency of LFO 2.

#### Intensity

Sets the chorus intensity.

#### Mix

Sets the dry/wet mix.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Rate 1 | `Rate1` | false | continuous | [0.0195, 19.968] | hertz | logarithmic | `"0.19999999"` | — |
| Rate 2 | `Rate2` | false | continuous | [0.0195, 19.968] | hertz | logarithmic | `"0.5"` | — |
| Intensity | `Intensity` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Clipper

type: `Clipper`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Clipper module provides a selection of digital clipping distortions.

#### Type

Sets the clip-distortion type.

#### Drive

Sets the amount of gain applied to the input signal before clipping.

#### Peak

Sets the clipping threshold level.

#### Sinusoid Graph

The graph visualises how a unity-amplitude sinusoid would be transformed by the module. The positive half-cycle is shown explicitly, while the negative half-cycle is transformed symmetrically. Sliding horizontally or vertically on the graph adjusts Drive or Peak, and double-tapping resets both to their default values.

#### Peak Indicator

The Peak Indicator flashes when the input signal exceeds the Peak threshold.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 3.0] | index | integerAbsolute | `"Soft"` | `["Soft","Hard","Fold","Wrap"]` |
| Drive | `Drive` | false | continuous | [0.0, 24.0] | decibels | linear | `"0.0"` | — |
| Peak | `Peak` | false | continuous | [-18.0, 6.0] | decibels | linear | `"0.0"` | — |

### Comb Filter

type: `CombFilter`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Comb Filter module combines feedback and feedforward designs into a single flexible unit. By adjusting the Blend, Feedback, and Feedforward parameters, and by modulating the delay line, it can produce a wide range of audio effects, including classic comb filtering, resonators, delay, doubler, chorus, flanger, slapback, and vibrato.

#### Mode

Selects how the delay amount is defined, with different modes suited to different effects.

#### Frequency

Sets the cutoff frequency of the comb filter, equivalent to the inverse of the delay time, spanning 19.5 Hz to 19968 Hz (10 octaves).

#### Time L

Sets the delay time of the left channel.

#### Time R

Sets the delay time of the right channel.

#### Blend

Sets how much of the input signal is mixed to the output.

#### Feedback

Sets the amount of delayed signal fed back into the delay line.

#### Feedforward

Sets the amount of delayed signal mixed to the output.

#### FB Filter

Sets the cutoff frequency of the low-pass filter applied to the feedback signal.

#### HP Cutoff

Sets the cutoff frequency of the high-pass filter applied to the output.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Freq"` | `["Freq","Time","Pitch"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"624.0001"` | — |
| Time L | `TimeL` | false | continuous | [0.0, 0.1] | seconds | linear | `"0.05"` | — |
| Time R | `TimeR` | false | continuous | [0.0, 0.1] | seconds | linear | `"0.075"` | — |
| Blend | `Blend` | false | continuous | [-1.0, 1.0] | percent | linear | `"1.0"` | — |
| Feedback | `Feedback` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Feedforward | `Feedforward` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| FB Filter | `FBFilter` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19967.994"` | — |
| HP Cutoff | `HPCutoff` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19.499998"` | — |

### Compressor

type: `Compressor`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Collapses Poly to Mono.

The Compressor module provides high-quality, low-distortion dynamics processing.

#### Threshold

Sets the level above which the signal is reduced.

#### Ratio

Sets the amount of signal reduction once it exceeds the threshold.

#### Knee

Sets the knee width, controlling the smoothness of the compression curve.

#### Make Up

Sets the gain applied to the compressed signal.

#### Attack

Sets how quickly the compressor starts reducing the signal once it exceeds the threshold.

#### Release

Sets how quickly the compressor stops reducing the signal once it falls below the threshold.

#### Mix

Sets the dry/wet mix for parallel compression.

#### GR Reset

Displays the gain reduction value and allows it to be reset.

#### Transfer Curve

The transfer curve visualises how input level maps to output. Sliding horizontally or vertically on the graph adjusts Threshold or Ratio, and double-tapping resets both to defaults.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Threshold | `Threshold` | false | continuous | [-50.0, 0.0] | decibels | linear | `"-12.0"` | — |
| Ratio | `Ratio` | false | continuous | [1.0, 50.0] | legacyRatio | logarithmic | `"2.0"` | — |
| Knee | `Knee` | false | continuous | [0.0, 36.0] | decibels | linear | `"12.0"` | — |
| Make Up | `MakeUp` | false | continuous | [-36.0, 36.0] | decibels | linear | `"0.0"` | — |
| Attack | `Attack` | false | continuous | [5e-06, 0.25] | seconds | cubeRoot | `"0.00049999997"` | — |
| Release | `Release` | false | continuous | [0.01, 2.5] | seconds | cubeRoot | `"0.10000001"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| GR Reset | `GRReset` | false | trigger | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","Triggered"]` |

### Control Change

type: `ControlChange`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Control Change module generates MIDI CC messages when the Value parameter is adjusted.

#### Channel

Sets the MIDI channel.

#### CC Number

Sets the CC number.

#### Value

Sets the CC value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Channel | `Channel` | false | list | [0.0, 15.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]` |
| CC Number | `CCNumber` | false | list | [0.0, 127.0] | index | integerAbsolute | `"CC1: Modulation Wheel"` | `["CC0: Bank Select MSB","CC1: Modulation Wheel","CC2: Breath Control","CC3: Control Change 3","CC4: Foot Control","CC5: Portamento Time","CC6: Data Entry MSB","CC7: Channel Volume","CC8: Balance","CC9: Control Change 9","CC10: Pan","CC11: Expression","CC12: Effect Control 1","CC13: Effect Control 2","CC14: Control Change 14","CC15: Control Change 15","CC16: General 1","CC17: General 2","CC18: General 3","CC19: General 4","CC20: Control Change 20","CC21: Control Change 21","CC22: Control Change 22","CC23: Control Change 23","CC24: Control Change 24","CC25: Control Change 25","CC26: Control Change 26","CC27: Control Change 27","CC28: Control Change 28","CC29: Control Change 29","CC30: Control Change 30","CC31: Control Change 31","CC32: Bank Select LSB","CC33: Modulation Wheel LSB","CC34: Breath Control LSB","CC35: Control Change 35","CC36: Foot Control LSB","CC37: Portamento Time LSB","CC38: Data Entry LSB","CC39: Channel Volume LSB","CC40: Balance LSB","CC41: Control Change 41","CC42: Pan LSB","CC43: Expression LSB","CC44: Effect Control 1 LSB","CC45: Effect Control 2 LSB","CC46: Control Change 46","CC47: Control Change 47","CC48: General 1 LSB","CC49: General 2 LSB","CC50: General 3 LSB","CC51: General 4 LSB","CC52: Control 21 LSB","CC53: Control 22 LSB","CC54: Control 23 LSB","CC55: Control 24 LSB","CC56: Control 25 LSB","CC57: Control 26 LSB","CC58: Control 27 LSB","CC59: Control 28 LSB","CC60: Control 29 LSB","CC61: Control 30 LSB","CC62: Control 31 LSB","CC63: Control 32 LSB","CC64: Sustain Pedal","CC65: Portamento On/Off","CC66: Sustenuto On/Off","CC67: Soft Pedal On/Off","CC68: Legato Footswitch","CC69: Hold 2","CC70: Sound Variation","CC71: Timbre","CC72: Release Time","CC73: Attack Time","CC74: MPE Slide/Brightness","CC75: Decay Time","CC76: Vibrato Rate","CC77: Vibrato Depth","CC78: Vibrato Delay","CC79: Sound Controller 10","CC80: General 5","CC81: General 6","CC82: General 7","CC83: General 8","CC84: Portamento Control","CC85: Control Change 85","CC86: Control Change 86","CC87: Control Change 87","CC88: Hi-Res Vel Prefix","CC89: Control Change 89","CC90: Control Change 90","CC91: Reverb Send Level","CC92: Effects 2 Depth","CC93: Chorus Send Level","CC94: Effects 4 Depth","CC95: Effects 5 Depth","CC96: Data Increment","CC97: Data Decrement","CC98: NRPN LSB","CC99: NRPN MSB","CC100: RPN LSB","CC101: RPN MSB","CC102: Control Change 102","CC103: Control Change 103","CC104: Control Change 104","CC105: Control Change 105","CC106: Control Change 106","CC107: Control Change 107","CC108: Control Change 108","CC109: Control Change 109","CC110: Control Change 110","CC111: Control Change 111","CC112: Control Change 112","CC113: Control Change 113","CC114: Control Change 114","CC115: Control Change 115","CC116: Control Change 116","CC117: Control Change 117","CC118: Control Change 118","CC119: Control Change 119","CC120: All Sound Off","CC121: All Controllers Off","CC122: Local Control On/Off","CC123: All Notes Off","CC124: Omni Mode Off","CC125: Omni Mode On","CC126: Mono Mode On","CC127: Poly Mode On"]` |
| Value | `Value` | false | integer | [0.0, 127.0] | integer | integerAbsolute | `"0.0"` | — |

### Correlation

type: `Correlation`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Correlation module visualises the relationship between the left and right audio channels.

In general, values above 0 are preferable. 0 indicates an extremely wide stereo image. As the indicator approaches +1, the channels become highly correlated with minimal side content. As it approaches -1, the channels move out of phase, which can cause significant cancellation when summed to mono.

#### Parameter reference

No parameters.

### Crossover

type: `Crossover`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Collapses Poly to Mono.
Mela Lab: experimental module.

The Crossover module splits the Audio signal into frequency bands using second-order low-pass and high-pass filters. It is useful for building custom multi-band processors, such as compressors or distortion effects. The filters are designed to maintain a flat frequency response.

To create a 2-band processor, route the same Audio signal into two parallel instances. Set one instance’s Band parameter to Low and the other to High. Ensure both use the same frequency by entering identical values.

To create a 3-band processor, take the output of one instance and apply another crossover split in the same way.

#### Band

Selects which frequency band to isolate.

#### Frequency

Sets the crossover frequency.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Band | `Band` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Low"` | `["Low","High"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"624.0001"` | — |

### DC Blocker

type: `DCBlocker`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The DC Blocker module removes DC offset from audio. Processes such as ring modulation or asymmetric distortion can introduce a DC component, which this module filters out.

#### Frequency

Sets the filter cutoff frequency.

#### Sinusoid Graph

The graph visualises the magnitude of any DC component in the audio. If the dashed line is visible, a DC offset is present. If not, the module is unnecessary and can be removed.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Frequency | `Frequency` | false | continuous | [2.0, 200.0] | hertz | logarithmic | `"10.0"` | — |

### Degrader

type: `Degrader`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Degrader module applies digital distortion by reducing the sample rate and bit depth of Audio signals.

#### Clock

Sets the output sample rate, from 46.875 Hz to 48000 Hz (10 octaves).

#### Bits

Sets the output bit depth.

#### Mix

Sets the dry/wet mix.

#### Sinusoid Graph

The graph visualises how a unity-amplitude sinusoid would be transformed by the module. Sliding horizontally or vertically on the graph adjusts Clock or Bits, and double-tapping resets them to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Clock | `Clock` | false | continuous | [46.875, 48000.0] | hertz | logarithmic | `"48000.008"` | — |
| Bits | `Bits` | false | continuous | [1.0, 12.0] | decimal | linear | `"12.0"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### Delay

type: `Delay`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Delay module delays Audio signals by specifying the delay time in seconds, using Pitch signals or one of the tempo-synced options.

#### Mode

Selects the delay mode: Time, Pitch, or one of the tempo-synced options.

#### Time

Sets the delay time in seconds when in Free mode.

#### Offset

Adjusts the delay time by scaling the Pitch signal or tempo-synced value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 7.0] | index | integerAbsolute | `"1/16"` | `["Time","Pitch","1/32","1/16","1/8","1/4","1/2","1/1"]` |
| Time | `Time` | false | continuous | [0.0, 5.0] | seconds | signedSquareRoot | `"0.12499999"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |

### Digital Delay

type: `DigitalDelay`. Container: `true`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Collapses Poly to Mono.

The Digital Delay module is a delay effect featuring a customisable delay path, feedback control, and ping-pong options.

#### Mode

Selects the delay mode, such as straight or ping-pong.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time

Sets the delay time in seconds when in Free mode.

#### Offset

Sets the delay time relative to the selected tempo-synced value.

#### Feedback

Sets the amount of delayed signal fed back to the input.

#### Mix

Sets the dry/wet mix.

#### Delay Path

The Delay Path sublane provides full flexibility for processing the delayed signal.

#### Level Control

Extra care is needed with the Feedback parameter and submodule settings, as feedback may quickly increase the signal level. To keep levels in check, the Delay Path includes a built-in hard clipper that limits the maximum output to +6 dBFS. Modules like Clipper and Meter can be used within the sublane to manage and monitor levels and avoid triggering the built-in clipper.

#### Clip Indicator

Indicates that the built-in clipper is active.

If clipping is not used creatively, parameters should be adjusted to avoid it.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Stereo"` | `["Stereo","Ping L","Ping R"]` |
| Sync | `Sync` | false | list | [0.0, 8.0] | index | integerAbsolute | `"3/16"` | `["Free","1/16","1/8","3/16","1/4","5/16","3/8","1/2","1/1"]` |
| Time | `Time` | false | continuous | [0.0, 5.0] | seconds | signedSquareRoot | `"0.12499999"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Feedback | `Feedback` | false | continuous | [0.0, 2.0] | percent | linear | `"0.5"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"0.33333334"` | — |

### Distortion

type: `Distortion`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Distortion module is a distortion effect with Saturation and Sine Foldback curve options.

#### Type

Selects the distortion type.

#### Drive

Sets the input gain.

#### Asymmetry

Sets the asymmetric distortion amount, higher values introducing more even harmonics.

#### Output

Sets the output gain.

#### Mix

Sets the dry/wet mix.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Saturation"` | `["Saturation","Foldback"]` |
| Drive | `Drive` | false | continuous | [0.0, 50.0] | decibels | linear | `"0.0"` | — |
| Asymmetry | `Asymmetry` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Output | `Output` | false | continuous | [-24.0, 24.0] | decibels | linear | `"0.0"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### DS Oscillator

type: `DSOscillator`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The DS Oscillator module is a distortion synthesis oscillator that can morph its waveform between square-like and sawtooth-like shapes with adjustable harmonic content.

#### Phase

Sets the waveform phase.

#### Shape

Adjusts the waveform shape, morphing it between square-like and sawtooth-like shapes.

#### Harmonics

Sets the harmonic richness of the waveform.

#### Level

Sets the waveform amplitude.

#### Trigger

Controls the waveform phase on note-on: Free, Retrig, Legato, or Rand.

Free ignores note-on events. Retrig always resets the phase to the Phase parameter value. Legato resets the phase unless another note is already held. Rand assigns a random initial phase.

#### Waveform Graph

The graph visualises the waveform the oscillator is generating. Sliding horizontally or vertically on the graph adjusts Shape or Harmonics, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Phase | `Phase` | false | continuous | [-0.5, 0.5] | phase | linear | `"0.0"` | — |
| Shape | `Shape` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Harmonics | `Harmonics` | false | continuous | [1e-05, 1.0] | percent | linear | `"0.5"` | — |
| Level | `Level` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Trigger | `Internal.Trigger` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Free"` | `["Free","Retrig","Legato","Rand"]` |

### Dual Pan

type: `DualPan`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Dual Pan module allows independent panning of the left and right audio channels, enabling creative stereo effects. It can also swap channels or sum a stereo signal to mono.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Left | `Left` | false | continuous | [-1.0, 1.0] | percent | linear | `"-1.0"` | — |
| Right | `Right` | false | continuous | [-1.0, 1.0] | percent | linear | `"1.0"` | — |

### Effect

type: `Effect`. Container: `true`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Conditional. Outputs Poly only when its input and the final sublane output are Poly; otherwise the dry and wet Audio are summed to Mono.

The Effect module creates self-contained custom audio effects. Its Wet Path sublane receives a copy of the input signals. The module’s output audio is a mix of the original input and the sublane’s output. While the sublane can also process MIDI and Pitch signals, these are not merged at the output.

#### Dry

Sets the level of the input sent to the output.

#### Wet

Sets the level of the sublane output sent to the output.”

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Dry | `Dry` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Wet | `Wet` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Envelope Follower

type: `EnvelopeFollower`. Container: `false`. Modulator: `true`. Collection: Collection 1.

Signal behaviour: Collapses Poly to Mono.

The Envelope Follower module is a modulator whose Mod signal is a unipolar envelope that follows an Audio signal.

#### Mode

Selects the mode: Peak or RMS.

#### Attack

Sets the attack time.

#### Hold

Sets the hold time.

#### Release

Sets the release time.

#### Oscilloscope

The oscilloscope graphs the Mod signal. Sliding horizontally or vertically on the graph adjusts Attack or Release, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Peak"` | `["Peak","RMS"]` |
| Attack | `Attack` | false | continuous | [5e-06, 0.25] | seconds | cubeRoot | `"0.00020000001"` | — |
| Hold | `Hold` | false | continuous | [0.0, 0.5] | seconds | cubeRoot | `"0.0"` | — |
| Release | `Release` | false | continuous | [0.01, 2.5] | seconds | cubeRoot | `"0.19999997"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Envelope Generator

type: `EnvelopeGenerator`. Container: `false`. Modulator: `true`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Envelope Generator module is a modulator whose Mod signal is an envelope. In Poly mode, it responds to note-on, note-off, and sustain (CC 64) events from the Note signal, and in Mono mode from MIDI. The envelope consists of 3 segments with adjustable length, level, and curve.

#### Time 1..3

Sets the segment length in seconds.

#### Slope 1..3

Sets the segment curve.

#### Level 1..3

Sets the ending level of a segment.

#### Mode

Selects the mode: Sustain, Trigger, or Loop.

Sustain reaches and holds the sustain level until the note is released. Trigger skips the sustain segment. Loop continuously cycles through the envelope without stopping at sustain or final level, repeating until the note is released.

#### Legato

Enables legato mode, preventing retriggering on a note-on event if another note is already held.

#### Biased

Converts a unipolar signal into a bipolar one, with positive values above sustain and negative below.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Sustain"` | `["Sustain","Trigger","Loop"]` |
| Time 1 | `Time1` | false | continuous | [0.0, 10.0] | seconds | cubeRoot | `"0.001"` | — |
| Time 2 | `Time2` | false | continuous | [0.0, 10.0] | seconds | cubeRoot | `"0.5"` | — |
| Time 3 | `Time3` | false | continuous | [0.0, 10.0] | seconds | cubeRoot | `"1.0"` | — |
| Level 1 | `Level1` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Level 2 | `Level2` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Level 3 | `Level3` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Slope 1 | `Slope1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.3"` | — |
| Slope 2 | `Slope2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.3"` | — |
| Slope 3 | `Slope3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.3"` | — |
| Legato | `Legato` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Biased | `Biased` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### EQ Band

type: `EQBand`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Collapses Poly to Mono.

The EQ Band module provides a single EQ band with a selectable second-order filter type commonly found in EQs.

#### Type

Selects the filter type.

#### Frequency

Sets the center or cutoff frequency.

#### Gain

Sets the gain for the bell or shelving filter.

#### Q

Sets the quality factor, controlling the filter’s bandwidth.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 6.0] | index | integerAbsolute | `"Bell"` | `["Bell","Low Shelf","Low Cut","High Shelf","High Cut","Notch","Band Pass"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"1000.0001"` | — |
| Gain | `Gain` | false | continuous | [-30.0, 30.0] | decibels | linear | `"0.0"` | — |
| Q | `Q` | false | continuous | [0.025, 40.0] | decimal | logarithmic | `"1.0"` | — |

### Euclid

type: `Euclid`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Euclid module converts notes into Euclidean rhythms, where a given number of events are distributed as evenly as possible across a pattern.

It works well with the Arpeggiator module. Insert it before Euclid and disable the Retrig parameter on both modules.

When combined with the MIDI Source module in Note-On/Off Gate mode, the rhythm can also be used as a modulation signal.

#### Retrig

Controls whether the pattern restarts on the first note-on event or follows the host grid.

#### Sync

Selects the step length using one of the tempo-synced options.

#### Gate

Scales the length of each note relative to the step length.

#### Pulses

Sets the number of events in the pattern.

#### Steps

Sets the total number of steps in the pattern.

#### Rotate

Rotates the pattern by a number of steps.

#### Accents

Sets the number of accented events in the pattern.

#### Shift

Shifts the accent pattern by a number of steps.

#### Velocity

Scales the velocity of accented notes.

#### Sequencer View

The circular sequencer view visualises the pattern and the current step. Accents, Pulses, and Steps are reduced to coprime values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Retrig | `Retrig` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Sync | `Sync` | false | list | [0.0, 18.0] | index | integerAbsolute | `"1/16"` | `["1","1/2d","1/1t","1/2","1/4d","1/2t","1/4","1/8d","1/4t","1/8","1/16d","1/8t","1/16","1/32d","1/16t","1/32","1/64d","1/32t","1/64"]` |
| Gate | `Gate` | false | continuous | [0.01, 1.0] | percent | linear | `"0.9"` | — |
| Pulses | `Pulses` | false | integer | [0.0, 32.0] | integer | integerAbsolute | `"3.0"` | — |
| Steps | `Steps` | false | integer | [1.0, 32.0] | integer | integerAbsolute | `"8.0"` | — |
| Rotate | `Rotate` | false | integer | [0.0, 31.0] | integer | integerAbsolute | `"0.0"` | — |
| Accents | `Accents` | false | integer | [0.0, 32.0] | integer | integerAbsolute | `"0.0"` | — |
| Shift | `Shift` | false | integer | [0.0, 31.0] | integer | integerAbsolute | `"0.0"` | — |
| Velocity | `Velocity` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Feedback

type: `Feedback`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Feedback module allows an Audio signal to be sent in the opposite direction of the normal signal flow.

In Mela, signals flow left to right within a lane and top to bottom between lanes. Creating feedback requires sending an Audio signal in the opposite direction. The Feedback module enables this by taking the output of an Audio bus, delaying it by 1 sample, and merging it with the lane’s Audio signal.

#### Level

Sets the level of the feedback signal.

#### Input

Selects the source bus.

#### Clip

Sets the built-in hard clipper threshold.

#### Level Control

Extra care is needed with the Level parameter and the modules in the feedback path, as feedback may quickly increase the signal level. To keep levels in check, the module includes a hard clipper that limits the maximum feedback level to +6, +12, or +24 dBFS. In most cases, +6 dBFS is recommended, but higher thresholds can be useful, for example when creating a phaser effect with feedback.

#### Clip Indicator

Indicates that the built-in clipper is active.

If clipping is not used creatively, parameters should be adjusted to avoid it.

#### Poly Audio

Audio buses support Poly Audio, allowing Poly subsignals to be sent and received via Audio In, Audio Out, and Feedback modules. If any Audio Out sending to a bus, or the Audio In receiving from it, is in Mono mode, the subsignals are summed by the Audio In module. To prevent circular dependencies, the Feedback module never collapses incoming Poly subsignals, even if one of the Audio Out sources is in Mono mode.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Level | `Level` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Input | `Internal.Input` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Bus 1"` | `["Bus 1","Bus 2","Bus 3","Bus 4"]` |
| Clip | `Internal.Clip` | true | list | [0.0, 2.0] | index | integerAbsolute | `"+6 dB"` | `["+6 dB","+12 dB","+24 dB"]` |

### Fixed Pitch

type: `FixedPitch`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Fixed Pitch module generates a Pitch signal defined by a MIDI note name or frequency.

#### Mode

Selects the mode: Note or Freq.

#### Note

Sets the pitch using a MIDI note name, from C-2 to C8 (10 octaves).

#### Frequency

Sets the pitch using a frequency value, from 19.5 Hz to 19968 Hz (10 octaves).

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Note"` | `["Note","Freq"]` |
| Note | `Note` | false | list | [0.0, 120.0] | index | integerAbsolute | `"C3"` | `["C-2","C♯-2","D-2","D♯-2","E-2","F-2","F♯-2","G-2","G♯-2","A-2","A♯-2","B-2","C-1","C♯-1","D-1","D♯-1","E-1","F-1","F♯-1","G-1","G♯-1","A-1","A♯-1","B-1","C0","C♯0","D0","D♯0","E0","F0","F♯0","G0","G♯0","A0","A♯0","B0","C1","C♯1","D1","D♯1","E1","F1","F♯1","G1","G♯1","A1","A♯1","B1","C2","C♯2","D2","D♯2","E2","F2","F♯2","G2","G♯2","A2","A♯2","B2","C3","C♯3","D3","D♯3","E3","F3","F♯3","G3","G♯3","A3","A♯3","B3","C4","C♯4","D4","D♯4","E4","F4","F♯4","G4","G♯4","A4","A♯4","B4","C5","C♯5","D5","D♯5","E5","F5","F♯5","G5","G♯5","A5","A♯5","B5","C6","C♯6","D6","D♯6","E6","F6","F♯6","G6","G♯6","A6","A♯6","B6","C7","C♯7","D7","D♯7","E7","F7","F♯7","G7","G♯7","A7","A♯7","B7","C8"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"261.6256"` | — |

### Flanger

type: `Flanger`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Collapses Poly to Mono.

The Flanger module is a stereo flanger effect.

#### Delay

Sets the maximum delay amount.

#### Rate

Sets the modulation LFO frequency, spanning 10 octaves.

#### Feedback

Sets the feedback amount.

#### Mix

Sets the dry/wet mix.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Delay | `Delay` | false | continuous | [0.0001, 0.007] | seconds | logarithmic | `"0.0025"` | — |
| Rate | `Rate` | false | continuous | [0.01, 10.24] | hertz | logarithmic | `"0.11"` | — |
| Feedback | `Feedback` | false | continuous | [-0.99, 0.99] | percent | linear | `"0.0"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### FM Operator

type: `FMOperator`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The FM Operator module is a simple FM operator that generates sine carriers and uses input Audio signals as modulators. Carrier frequencies are set by the Pitch signals.

#### Phase

Sets the carrier phase.

#### Feedback

Sets the carrier self-modulation amount.

Positive values add even and odd harmonics, morphing the sine carrier towards a saw-like waveform. Negative values add odd harmonics, morphing it towards a square-like waveform.

#### Intensity

Sets the FM modulation depth (modulation index).

#### Level

Sets the carrier amplitude.

#### FM

Sets the mix between the input and the FM operator output.

#### Trigger

Controls the carrier phase on note-on: Free, Retrig, Legato, or Rand.

Free ignores note-on events. Retrig always resets the phase to the Phase parameter value. Legato resets the phase unless another note is already held. Rand assigns a random initial phase.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Phase | `Phase` | false | continuous | [-0.5, 0.5] | phase | linear | `"0.0"` | — |
| Feedback | `Feedback` | false | continuous | [-0.25, 0.25] | percent | linear | `"0.0"` | — |
| Intensity | `Intensity` | false | continuous | [0.0, 4.0] | multiplier | linear | `"1.0"` | — |
| Level | `Level` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| FM | `FM` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Trigger | `Internal.Trigger` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Free"` | `["Free","Retrig","Legato","Rand"]` |

### Frequency Shifter

type: `FrequencyShifter`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Collapses Poly to Mono.

The Frequency Shifter module offsets all frequency components in the Audio signal by a fixed amount, producing metallic or inharmonic textures unlike pitch shifting.

#### Shift

Sets the shift applied to both channels before Spread is added. Linear ranges map directly, while Cubic uses a non-linear curve for finer control near 0.

#### Range

Selects the scaling applied independently to Shift and Spread. Linear ranges map -100% to 100% directly. Cubic is non-linear and spans ±5 kHz.

#### Spread

Sets a bipolar offset between the channel shifts. Left uses Shift minus Spread, while right uses Shift plus Spread.

#### Mode

Selects how energy behaves around 0 Hz. Clean is single-sideband. Reflect preserves down-shifted components below 0 Hz. Duplicate adds mirrored components when shifting up. Both combines reflect and duplicate.

#### Mix

Sets the dry/wet mix.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Shift | `Shift` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Range | `Range` | false | list | [0.0, 4.0] | index | integerAbsolute | `"50 Hz"` | `["5 Hz","50 Hz","500 Hz","5 kHz","Cubic"]` |
| Spread | `Spread` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Mode | `Mode` | false | list | [0.0, 3.0] | index | integerAbsolute | `"Clean"` | `["Clean","Reflect","Duplicate","Both"]` |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Gain

type: `Gain`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Collapses Poly to Mono.
Mela Lab: experimental module.

The Gain module applies gain to the audio. While designed to pair with the Gain Computer module, it can also be used independently in many ways.

#### Down

Sets the negative gain.

#### Up

Sets the positive gain.

#### Range

Sets the maximum gain in either direction.

#### Example

Although the Down and Up parameters use percentage units, gain is applied in decibels. For example, with Range set to 24 dB, Down at 50% applies -12 dB gain, and Up at +25% applies +6 dB.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Down | `Down` | false | continuous | [-1.0, 0.0] | percent | linear | `"0.0"` | — |
| Up | `Up` | false | continuous | [0.0, 1.0] | percentWithPlus | linear | `"0.0"` | — |
| Range | `Range` | false | continuous | [0.0, 60.0] | decibels | linear | `"24.0"` | — |

### Gain Computer

type: `GainComputer`. Container: `false`. Modulator: `true`. Collection: Collection 4.

Signal behaviour: Collapses Poly to Mono.
Mela Lab: experimental module.

The Gain Computer module is a modulator for creating custom dynamics processors. Depending on its settings and placement in a patch, it can be used to build effects such as a feedback compressor, upward expander, look-ahead limiter, side-chain gate, or de-esser.

It computes gain reduction or expansion from the Audio signal, similar to the gain computer component found in traditional dynamics processors. Instead of applying the gain change directly, it generates a Mod signal, which can be used to modulate a Gain module or any other parameter to produce dynamic effects.

While the Gain module pairs naturally with Gain Computer, the modulator supports a wide range of other creative uses.

#### Type

Sets the processor type: Compressor or Expander.

#### Threshold

Sets the threshold level at which gain reduction or expansion begins, depending on the Type and Range parameters.

#### Ratio

Sets the ratio of gain reduction or expansion.

#### Knee

Sets the knee width, controlling the smoothness of the transfer function.

#### Range

Sets the maximum amount of gain reduction or expansion.

#### Detector

Selects the signal detector type: Peak or RMS.

#### Attack

Sets how quickly the gain change is applied after the signal crosses the threshold.

#### Hold

Sets how long the gain change is maintained before the release phase begins.

#### Release

Sets how quickly the gain returns to zero after the hold period.

#### Mod Signal

When Range is negative, the Mod signal is in [-100%, 0%], ideal for downward processors. When positive, the signal is in [0%, 100%], ideal for upward processors.

#### Downward vs Upward

A downward processor can be configured by setting Gain Computer’s Range negative (e.g. -36 dB), the Gain module’s Range to the same absolute value (e.g. 36 dB), and modulating the Gain module’s Down parameter at 100%. The Up parameter can be used for makeup gain.

An upward processor can be configured by setting Gain Computer’s Range positive (e.g. 24 dB), the Gain module’s Range to the same value, and modulating the Gain module’s Up parameter at 100%. The Down parameter can reduce the level as needed.

#### Feedback vs Feed-Forward

A feed-forward processor is created when the modulated Gain module is inserted after the Gain Computer. Reversing the order creates a feedback processor.

#### Look-Ahead

For look-ahead processing, insert Gain Computer on a separate lane from the Gain module while both receive the same Audio signal. Inserting a Delay before the Gain module makes the gain change occur earlier than Gain Computer normally responds.

#### Side-Chain

Side-chain processing is achieved by placing Gain Computer and Gain on separate lanes. The Gain module receives the signal to be processed, while Gain Computer receives either the same signal or an external one. The side-chain signal can also be pre-processed, for example using a low-pass filter.

#### Transfer Curve

The transfer curve visualises how input level maps to output. Sliding horizontally or vertically on the graph adjusts Threshold or Ratio, and double-tapping resets both to defaults.

#### Oscilloscope

The oscilloscope graphs the Mod signal. Sliding horizontally or vertically on the graph adjusts Attack or Release, and double-tapping resets both to defaults.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Compressor"` | `["Compressor","Expander"]` |
| Threshold | `Threshold` | false | continuous | [-60.0, 0.0] | decibels | linear | `"-24.0"` | — |
| Ratio | `Ratio` | false | continuous | [0.0, 0.999999] | ratio | linear | `"0.5"` | — |
| Knee | `Knee` | false | continuous | [0.0, 36.0] | decibels | linear | `"0.0"` | — |
| Range | `Range` | false | continuous | [-60.0, 60.0] | decibels | linear | `"-24.0"` | — |
| Detector | `Detector` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Peak"` | `["Peak","RMS"]` |
| Attack | `Attack` | false | continuous | [1e-06, 1.0] | seconds | cubeRoot | `"0.00020000001"` | — |
| Hold | `Hold` | false | continuous | [0.0, 1.0] | seconds | cubeRoot | `"0.0"` | — |
| Release | `Release` | false | continuous | [1e-06, 10.0] | seconds | cubeRoot | `"0.19999997"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Glide

type: `Glide`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Glide module glides the output Pitch signal toward the input Pitch on a note-on event.

#### Mode

Selects the glide mode: Time or Rate.

#### Interval

Sets the glide interval.

In Time mode, this is the duration to glide between notes. In Rate mode, it is the time to glide up or down an octave.

#### Trigger

Selects the trigger mode: Retrig or Legato.

Retrig always glides to the new note. Legato glides only when another note is held.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Time"` | `["Time","Rate"]` |
| Interval | `Interval` | false | continuous | [0.0, 5.0] | seconds | cubeRoot | `"0.29999998"` | — |
| Trigger | `Trigger` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Legato"` | `["Retrig","Legato"]` |

### Groove

type: `Groove`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Groove module transforms a straight beat into a dynamic rhythm with accents and a shuffle feel.

#### Sync

Selects the timing grid for accents and shuffle.

#### Accent

Scales the velocities of notes at odd grid positions.

#### Shuffle

Sets the delay amount for notes at even grid positions, creating a swing or shuffle feel.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 2.0] | index | integerAbsolute | `"1/8"` | `["1/4","1/8","1/16"]` |
| Accent | `Accent` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Shuffle | `Shuffle` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### Lane

type: `Lane`. Container: `true`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Conditional. Insert takes the serial chain's output type. Split and Isolate preserve the input type. Merge outputs Poly only when the parent input and the independently generated sublane output are both Poly.

The Lane module contains a sequence of submodules that process signals in series. Signal flow between its input, submodule chain, and output depends on its mode: Insert, Isolate, Split, or Merge. When a Lane is used as a top-level lane in the loaded patch, Mela automatically uses Isolate mode.

A nested Lane’s actions menu icon shows the current mode instead of the ellipsis used by other modules. Tapping it opens a menu to change the mode and access standard module actions.

#### Insert

Signals that enter the Lane are processed by its submodules and passed to the Lane output.

Useful for organising modules or processing parallel signal paths inside a Stack.

#### Isolate

The Lane input is not passed to its submodule chain, and the chain output is ignored. In other words, the Lane passes its input through unchanged.

Useful for creating an independent processing chain, such as generating an envelope follower from a side-chain input.

#### Split

A copy of the Lane input is processed by its submodule chain. The output from the chain is ignored, and the Lane output is the same as its input.

Useful for pre-processing signals before sending them to Audio Out, MIDI Out, or Envelope Follower modules.

#### Merge

The Lane input is not passed to its submodules. The output from its submodule chain is combined with the Lane input to create the Lane output. MIDI output is merged, while Audio output is summed. The output is Poly only if both the Lane input and the submodule chain output are Poly.

Useful for pre-processing signals from Audio In, Feedback, or MIDI In modules before merging.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Internal.Mode` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Insert"` | `["Insert","Isolate","Split","Merge"]` |

### Level

type: `Level`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Level module adjusts the amplitude of audio linearly.

#### Mute

The Mute toggle and Level parameter are linked. Muting sets Level to 0%, unmuting restores it, and setting Level to 0% automatically engages Mute.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Level | `Level` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### LFO

type: `LFO`. Container: `false`. Modulator: `true`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The LFO module is a modulator that generates a customisable LFO Mod signal.

#### Waveform

Selects the waveform type: Sine, Triangle, or Square.

#### Sync

Selects Free or one of the tempo-synced options.

#### Rate

Sets the rate in hertz in Free mode, from 0.01 Hz to 655.36 Hz (16 octaves).

#### Offset

Sets the rate relative to the selected tempo-synced value.

#### Tilt

Morphs the Triangle or Square waveform.

#### Phase

Sets the waveform phase.

#### Depth

Sets the amplitude.

#### Bias

Sets the DC offset.

#### Cycles

Sets the number of cycles.

#### Trigger

Selects retrigger mode: Free, Retrig, or Legato.

Free never retriggers the signal. Retrig retriggers on every note-on event. Legato retriggers only if no other notes are held.

#### Oscilloscope

The oscilloscope graphs the Mod signal. Sliding horizontally or vertically on the graph adjusts Rate/Offset or Depth, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Waveform | `Waveform` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Sine"` | `["Sine","Triangle","Square"]` |
| Sync | `Sync` | false | list | [0.0, 11.0] | index | integerAbsolute | `"1/4"` | `["Free","16/1","8/1","4/1","2/1","1/1","1/2","1/4","1/8","1/16","1/32","1/64"]` |
| Rate | `Rate` | false | continuous | [0.01, 655.36] | hertz | logarithmic | `"1.0"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Tilt | `Tilt` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Phase | `Phase` | false | continuous | [0.0, 1.0] | phase | linear | `"0.0"` | — |
| Depth | `Depth` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Bias | `Bias` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Cycles | `Cycles` | false | continuous | [0.0, 1000.0] | decimalWithInfinity | cubeRoot | `"1000.0"` | — |
| Trigger | `Trigger` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Free"` | `["Free","Retrig","Legato"]` |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Limiter

type: `Limiter`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Collapses Poly to Mono.

The Limiter module is a brickwall limiter that provides transparent peak control using a lookahead gain envelope.

#### Gain

Sets the input gain.

#### Peak

Sets the maximum output level.

#### Character

Tight uses single-stage smoothing for a faster, more responsive sound. Smooth uses two-stage smoothing for rounder gain changes and reduced distortion.

#### Attack

Sets the envelope smoothing time for both attack and release. Higher values increase latency and produce smoother limiting.

#### Hold

Sets how long the gain reduction is held after a peak.

#### Release

Sets the additional release time after the hold period.

#### Link

Blends between independent and fully linked channel gains to preserve stereo balance.

#### Latency

Latency introduced by the limiter can be compensated by increasing Audio In’s Ahead parameter to match the Attack value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Gain | `Gain` | false | continuous | [-36.0, 36.0] | decibels | linear | `"0.0"` | — |
| Peak | `Peak` | false | continuous | [-24.0, 0.0] | decibels | linear | `"-3.0"` | — |
| Character | `Character` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Tight"` | `["Tight","Smooth"]` |
| Attack | `Attack` | false | continuous | [0.001, 0.05] | seconds | cubeRoot | `"0.009999999"` | — |
| Hold | `Hold` | false | continuous | [0.0, 0.05] | seconds | cubeRoot | `"0.0"` | — |
| Release | `Release` | false | continuous | [0.0, 0.25] | seconds | cubeRoot | `"0.009999999"` | — |
| Link | `Link` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### Macro

type: `Macro`. Container: `false`. Modulator: `true`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Macro module is a modulator whose Mod signal equals the value of its Macro parameter.

#### Macro

Sets the Mod signal value in the [0%, 100%] range.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Macro | `Macro` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Macro Button

type: `MacroButton`. Container: `false`. Modulator: `true`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Macro Button module is a modulator whose Mod signal reflects the state of its Macro parameter.

#### Macro

Toggles the Mod signal between 0% and 100%.

#### Smooth

Sets how quickly the Mod signal transitions between the two states.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Macro | `Macro` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","On"]` |
| Smooth | `Smooth` | false | continuous | [0.0, 1.0] | seconds | cubeRoot | `"0.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Macro-8

type: `Macro-8`. Container: `false`. Modulator: `true`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.
Mela Lab: experimental module.

The Macro-8 module is a modulator whose Mod signals equal the values of its Macro 1…8 parameters.

On the Targets page, Source selects which Macro parameter modulates each target.

Only parameter controls assigned to targets are displayed.

#### Macro 1…8

Sets the corresponding Mod signal value in the [0%, 100%] range.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Macro 1 | `Macro1` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 2 | `Macro2` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 3 | `Macro3` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 4 | `Macro4` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 5 | `Macro5` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 6 | `Macro6` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 7 | `Macro7` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Macro 8 | `Macro8` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Source 1 | `Internal.Source1` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 2 | `Internal.Source2` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 3 | `Internal.Source3` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 4 | `Internal.Source4` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 5 | `Internal.Source5` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 6 | `Internal.Source6` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 7 | `Internal.Source7` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |
| Source 8 | `Internal.Source8` | true | list | [0.0, 7.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8"]` |

### Matrix

type: `Matrix`. Container: `true`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Conditional. Outputs Poly only when its input and every node and serial-tail module output are Poly; otherwise the terminal Audio is summed to Mono.

The Matrix module routes Audio between up to seven nodes, represented by A to G. Nodes A to F each contain one submodule. Node G contains the seventh and all subsequent submodules, processing them in series. Each node receives a copy of the module’s MIDI, Pitch, and other non-Audio subsignals. Node A also receives the input Audio signal, while the other nodes receive silent Audio until a route sends Audio to them.

Only Audio is routed between nodes. The last active node provides the module’s Audio output. For node G, this is the output of the final submodule in its serial path.

#### Routing Levels

Each routing parameter sets the Audio level sent from one node to another.

Routes from earlier nodes to later nodes are feedforward paths and use the source node’s output from the current sample. Routes from later nodes to earlier nodes are feedback paths and use the source node’s output from the previous sample, adding a 1-sample delay.

#### Mono and Poly

Matrix outputs Poly only when its input and all submodule outputs are Poly. Otherwise, the terminal Audio is summed and Matrix outputs Mono.

Networks made entirely of Mono nodes or entirely of Poly nodes produce the most predictable results. Mixed Mono and Poly networks are also supported and handled gracefully. Poly Audio routed to a Mono node is summed. Mono Audio routed to a Poly node is divided equally between its voices, preserving its level if those voices are later summed.

Routing levels are Poly modulation targets and can vary by voice when Matrix outputs Poly. When it outputs Mono, they are Mono modulation targets and apply the same level to every routed voice.

MIDI passes through unchanged, and non-Audio output subsignals are inherited from the input.

#### Level Control

The Matrix output includes a built-in hard clipper at +6 dBFS. The Clip indicator turns red when any output voice or channel activates it. Signals inside the network are not clipped, including signals used for feedback.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| A to B | `AtoB` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| A to C | `AtoC` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| A to D | `AtoD` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| A to E | `AtoE` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| A to F | `AtoF` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| A to G | `AtoG` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| B to A | `BtoA` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| B to C | `BtoC` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| B to D | `BtoD` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| B to E | `BtoE` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| B to F | `BtoF` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| B to G | `BtoG` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| C to A | `CtoA` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| C to B | `CtoB` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| C to D | `CtoD` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| C to E | `CtoE` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| C to F | `CtoF` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| C to G | `CtoG` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| D to A | `DtoA` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| D to B | `DtoB` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| D to C | `DtoC` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| D to E | `DtoE` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| D to F | `DtoF` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| D to G | `DtoG` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| E to A | `EtoA` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| E to B | `EtoB` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| E to C | `EtoC` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| E to D | `EtoD` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| E to F | `EtoF` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| E to G | `EtoG` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| F to A | `FtoA` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| F to B | `FtoB` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| F to C | `FtoC` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| F to D | `FtoD` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| F to E | `FtoE` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| F to G | `FtoG` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| G to A | `GtoA` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| G to B | `GtoB` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| G to C | `GtoC` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| G to D | `GtoD` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| G to E | `GtoE` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| G to F | `GtoF` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### Meter

type: `Meter`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Meter module visualises audio levels and holds maximum peaks for 1.5 seconds. The peak value is displayed, and tapping resets it. If a channel is clipping, its level indicator turns red.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Reset | `Reset` | false | trigger | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","Triggered"]` |

### MIDI Capture

type: `MIDICapture`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Capture module captures all incoming MIDI messages into a MIDI file that can be dragged and dropped into the host or saved to the Files app.

#### Start/Stop

Starts or stops the capturing process.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Start/Stop | `Start/Stop` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Stop"` | `["Start","Stop"]` |

### MIDI Channel

type: `MIDIChannel`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Channel module ensures all output MIDI messages use the same channel number.

#### Mode

Selects the mode: Filter or Modify.

Filter passes only messages that match the selected channel. Modify sets the channel of all incoming messages to the selected value.

#### Channel

Sets the channel of output MIDI messages.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Modify"` | `["Filter","Modify"]` |
| Channel | `Channel` | false | list | [0.0, 15.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]` |

### MIDI Delay

type: `MIDIDelay`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Delay module delays the MIDI signal by a specified amount.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time

Sets the delay time in seconds when Sync is Free.

#### Offset

Adjusts the delay time by scaling the tempo-synced value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 8.0] | index | integerAbsolute | `"1/16"` | `["Free","1/128","1/64","1/32","1/16","1/8","1/4","1/2","1/1"]` |
| Time | `Time` | false | continuous | [0.0, 5.0] | seconds | signedSquareRoot | `"0.12499999"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |

### MIDI Echo

type: `MIDIEcho`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Echo module repeats incoming MIDI events using a customisable feedback path. MIDI channels are used to track each repeat.

#### Thru

When enabled, incoming MIDI is also sent directly to the output.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time

Sets the echo time in seconds when in Free mode.

#### Offset

Adjusts the echo time by scaling the tempo-synced value.

#### Repeats

Sets how many repeated MIDI events are generated.

#### Channel

Sets the channel for echoed MIDI messages sent to the output.

#### Panic!

Sends “All Notes Off” on all MIDI channels and clears the echo buffer.

Available in the module actions menu.

#### Echo Path

The Echo Path sublane receives each repeated MIDI event for processing. Repeats are tracked using MIDI channel numbers.

When a MIDI event first enters the echo engine, its channel is initialised to (17 - Repeats). After each pass through the Echo Path, one copy of the MIDI message is sent to the output with its channel set to the selected value. If the tracking channel is below 16, it is incremented by 1 and fed back into the sublane.

#### Buffer Full Indicator

The Echo Path toggle includes a small signal indicator that turns red when the internal echo buffer reaches capacity. At that point, new events are no longer passed to the sublane.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Thru | `Thru` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| Sync | `Sync` | false | list | [0.0, 8.0] | index | integerAbsolute | `"1/16"` | `["Free","1/128","1/64","1/32","1/16","1/8","1/4","1/2","1/1"]` |
| Time | `Time` | false | continuous | [0.0, 5.0] | seconds | signedSquareRoot | `"0.12499999"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Repeats | `Repeats` | false | integer | [0.0, 16.0] | integer | integerAbsolute | `"1.0"` | — |
| Channel | `Channel` | false | integer | [1.0, 16.0] | integer | integerAbsolute | `"1.0"` | — |
| Panic! | `Panic!` | false | trigger | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","Triggered"]` |

### MIDI In

type: `MIDIIn`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI In module receives MIDI messages from the host or a MIDI bus.

#### Input

Selects the MIDI signal source.

#### Panic!

Sends an “All Notes Off” message on all MIDI channels to the output.

#### Ahead

Sets how far in advance Mela requests audio and MIDI from the host, allowing processing to begin before events normally occur.

For example, an envelope follower can detect transients before they are heard. This is also referred to as plug-in latency.

#### Latency Support

Most iOS hosts do not yet support plug-in latency compensation and may ignore this setting. The “Latency Test” factory patch helps check DAW support and assists developers with testing and debugging.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Input | `Input` | false | list | [0.0, 7.0] | index | integerAbsolute | `"In 1"` | `["In 1","In 2","In 3","In 4","Bus 1","Bus 2","Bus 3","Bus 4"]` |
| Panic! | `Panic!` | false | trigger | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","Triggered"]` |

### MIDI Lane

type: `MIDILane`. Container: `true`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Lane module works similarly to the Lane module but is optimised for processing note events. While it is on, incoming MIDI events pass through its submodule chain. Turning it off routes incoming MIDI directly to the output, bypassing the chain, and retriggers any held notes there. Turning it back on retriggers those notes at the input to the submodule chain and resumes forwarding the chain’s output.

Only MIDI passes through the submodule chain. All other signal types pass through the MIDI Lane unchanged.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### MIDI Logger

type: `MIDILogger`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Logger module logs incoming MIDI events, showing host position, channel, message type, and value. The module actions menu provides options to copy or clear the log.

#### Copy

Copies the MIDI log to the system pasteboard in CSV format.

#### Clear

Clears the log.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### MIDI Meter

type: `MIDIMeter`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Meter module visualises the latest incoming MIDI value. It displays the current value at the top and a circle-based level indicator below.

Values are shown in a 0...127 range. Note-off is always displayed as 0, and the pitch wheel uses the most significant 7 bits (MSB), where center is 64.

#### Parameter reference

No parameters.

### MIDI Out

type: `MIDIOut`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Out module sends MIDI messages to the host or a MIDI bus.

#### Output

Selects the MIDI signal destination.

#### Panic!

Sends an “All Notes Off” message on all MIDI channels to the selected destination.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Output | `Output` | false | list | [0.0, 7.0] | index | integerAbsolute | `"Out 1"` | `["Out 1","Out 2","Out 3","Out 4","Bus 1","Bus 2","Bus 3","Bus 4"]` |
| Panic! | `Panic!` | false | trigger | [0.0, 1.0] | index | integerAbsolute | `"Off"` | `["Off","Triggered"]` |

### MIDI Source

type: `MIDISource`. Container: `false`. Modulator: `true`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The MIDI Source module is a modulator whose Mod signal follows incoming notes or other MIDI events. In Poly mode, it responds to note events from the Note signals. In Mono mode, or for non-note events, it follows the MIDI signal. The module also includes a transfer curve to further shape the signal.

#### Source

Selects the type of note or MIDI event to which the module responds.

#### Number/Note

Sets the CC or note number to which the module responds.

#### Key Track

Maps the [0, 120] note number range to a [-50%, +50%] Mod signal. Since most frequency parameters in Mela span 10 octaves, triggering a note one octave higher or lower changes the parameter value by an octave when modulated.

#### Note Number

Maps the [0, 127] note number range to a [0%, 100%] Mod signal.

#### Channel Number

Maps MIDI channels 1 to 16 to a stepped [0%, 93.75%] Mod signal.

#### Note-On/Off Gate

Creates a gate-like Mod signal based on note-on and note-off events. On note-on, the signal follows velocity. It returns to 0% on note-off. This can replace an envelope generator in some cases.

#### Flip-Flop on Note-On

Toggles the Mod signal between 0% and 100% on each note-on event.

#### Random on Note-On

Generates a random Mod signal value in the [0%, 100%] range for each note-on event.

#### Gain and Bias

Adjust the transfer curve.

#### Smooth

Sets the smoothing time for rapid Mod signal changes.

#### Transfer Curve

The transfer curve visualises how source event values are mapped to the Mod signal. Slide vertically for exponential or logarithmic shaping, horizontally for sigmoid or logit curves. Double-tap to reset to linear.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Source | `Source` | false | list | [0.0, 11.0] | index | integerAbsolute | `"Velocity"` | `["Velocity","Release Velocity","Key Track","Note Number","Channel Number","Pitch Bend","Aftertouch","Poly Aftertouch","Control Change","Note-On/Off Gate","Flip-Flop on Note-On","Random on Note-On"]` |
| Number | `Number` | false | list | [0.0, 128.0] | index | integerAbsolute | `"All"` | `["All","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127"]` |
| Gain | `Gain` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Bias | `Bias` | false | continuous | [-1.0, 1.0] | percent | linear | `"1.0"` | — |
| Smooth | `Smooth` | false | continuous | [0.0, 0.1] | seconds | cubeRoot | `"0.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### MIDI-to-Poly

type: `MIDI-to-Poly`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Creates Poly. Replaces the incoming Mono or Poly signal with new Voices, generating Note and Pitch from MIDI and initialising Audio to silence.

The MIDI-to-Poly module converts MIDI note events into a Poly signal by generating Note and Pitch subsignals and initialising Audio subsignals to silence. The resulting Poly signal replaces the incoming Mono or Poly signal, while MIDI passes through unchanged. Its settings control voice allocation rules and apply globally to the patch.

#### Voices

Sets the maximum number of simultaneous active voices.

#### Reuse

Toggles whether an active voice is reused if its note matches the newest note, or whether multiple voices can play the same note simultaneously.

#### Release

Selects the priority for releasing a voice when all voices are in use: oldest, newest, highest, lowest, or random note.

#### Voice Alignment

Different instances sharing the same MIDI input automatically synchronise their voice allocation, ensuring consistent Poly-to-Poly modulation across modules.

Turning MIDI Processor modules on or off may cause voices on different lanes to become unsynchronised. The MIDI In module’s Panic action can be used on the desired lanes to resynchronise voices.

#### Parameter reference

No parameters.

### Mid-Side

type: `Mid-Side`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Mid-Side module controls the levels of the mid and side components of stereo audio. It can be used to widen or narrow the stereo image, or remove it completely.

#### Mid

Sets the mid component level.

#### Side

Sets the side component level.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mid | `Mid` | false | continuous | [0.0, 2.0] | percent | linear | `"1.0"` | — |
| Side | `Side` | false | continuous | [0.0, 2.0] | percent | linear | `"1.0"` | — |

### Mod Oscilloscope

type: `ModOscilloscope`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Mod Oscilloscope module visualises the modulated value of its Offset parameter. Modulating Offset at 100% intensity displays the modulator’s Mod signal directly.

For best results, set Offset to 0% for unipolar Mod signals and to 50% for bipolar signals.

The module can also be used to visualise how another parameter is being modulated. To do so, apply the same modulation settings to Offset as the target parameter.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Offset | `Offset` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### Mod Steps

type: `ModSteps`. Container: `false`. Modulator: `true`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Mod Steps module is a simple yet powerful 16-step sequencer modulator.

The module always operates in Mono mode, generating a Mono Mod signal and passing the Mono or Poly signal through unchanged.

#### Start

Sets the first step of the sequence.

#### Length

Sets the number of steps in the sequence.

#### Sync

Selects Free or one of the tempo-synced step lengths.

When set to Free, the Mod signal always outputs the value of the Start step unless Trigger is set to Step.

#### Trigger

Selects the trigger mode.

Host follows the host transport. Retrig restarts the sequencer on note-on. Step advances the sequencer to the next step on note-on.

#### Cycles

Sets how many cycles the sequencer runs before stopping.

#### Mode

Mode adapts the sequencer for different uses, including note and MIDI generation. Step values are in the [0%, 100%] range but can be remapped depending on the target parameter.

MIDI mode displays values in the [0, 127] range for note velocity or MIDI CC. Pitch ±12 mode maps a [-50%, +50%] modulation signal to a [-12, 12] semitone range.

Unipolar displays 0 to 100 and outputs a Mod signal in the [0%, 100%] range. Bipolar displays -50 to +50 and outputs a Mod signal in the [-50%, +50%] range.

#### Step 1…16

Sets the value of each step.

#### External Clock

The sequencer can be driven externally by setting Sync to Free and modulating or automating the Start parameter. For example, a ramp-down LFO can drive it backwards, while a sinusoid can produce uneven timing.

#### Pausing

Setting Cycles to 0 freezes the sequencer at its current position. Setting it back to infinity resumes playback. Cycles is also a useful modulation target.

#### Actions

The module actions menu provides options to randomise or reset step values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Start | `Start` | false | integer | [1.0, 16.0] | integer | integerAbsolute | `"1.0"` | — |
| Length | `Length` | false | integer | [1.0, 16.0] | integer | integerAbsolute | `"16.0"` | — |
| Sync | `Sync` | false | list | [0.0, 31.0] | index | integerAbsolute | `"1/16"` | `["Free","16","8d","16t","8","4d","8t","4","2d","4t","2","1d","2t","1","1/2d","1/1t","1/2","1/4d","1/2t","1/4","1/8d","1/4t","1/8","1/16d","1/8t","1/16","1/32d","1/16t","1/32","1/64d","1/32t","1/64"]` |
| Step 1 | `Step1` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 2 | `Step2` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 3 | `Step3` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 4 | `Step4` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 5 | `Step5` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 6 | `Step6` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 7 | `Step7` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 8 | `Step8` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 9 | `Step9` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 10 | `Step10` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 11 | `Step11` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 12 | `Step12` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 13 | `Step13` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 14 | `Step14` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 15 | `Step15` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Step 16 | `Step16` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Trigger | `Trigger` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Host"` | `["Host","Retrig","Step"]` |
| Cycles | `Cycles` | false | continuous | [0.0, 1000.0] | decimalWithInfinity | cubeRoot | `"1000.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Mode | `Internal.Mode` | true | list | [0.0, 4.0] | index | integerAbsolute | `"Unipolar"` | `["Unipolar","MIDI","Bipolar","Pitch ±12","Pitch ±24"]` |

### Multiply-Add

type: `Multiply-Add`. Container: `false`. Modulator: `true`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.
Mela Lab: experimental module.

The Multiply-Add module is a modulator whose Mod signal equals A×B+C, where A, B, and C are the module parameters. Any of these parameters can be modulated to create complex signals.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| A | `A` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| B | `B` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| C | `C` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Noise

type: `Noise`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Noise module generates noise.

#### Type

Sets the noise type.

#### Level

Sets the noise amplitude.

#### Tuned

The Tuned noise type tracks the input pitch by downsampling white noise. The sample rate is set to 8 times the input pitch frequency, producing a pitch-following noise effect.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 3.0] | index | integerAbsolute | `"Warm"` | `["Pink","Warm","White","Tuned"]` |
| Level | `Level` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### Noise Gate

type: `NoiseGate`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Collapses Poly to Mono.

The Noise Gate module is a fully featured noise gate with hysteresis and a gain reduction meter.

#### Threshold

Sets the level above which the gate opens, allowing audio to pass.

#### Hysteresis

Sets the difference between the threshold levels for opening and closing the gate, preventing rapid toggling near the threshold.

#### Reduction

Sets the amount by which the signal is reduced when the gate is closed.

#### Attack

Sets how quickly the gate opens after the signal exceeds the threshold.

#### Hold

Sets how long the gate remains open after the signal falls below the threshold.

#### Release

Sets how quickly the gate closes after the signal falls below the threshold.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Threshold | `Threshold` | false | continuous | [-100.0, 0.0] | decibels | linear | `"-36.0"` | — |
| Hysteresis | `Hysteresis` | false | continuous | [-20.0, 0.0] | decibels | linear | `"-6.0"` | — |
| Reduction | `Reduction` | false | continuous | [-120.0, 0.0] | decibels | linear | `"-40.0"` | — |
| Attack | `Attack` | false | continuous | [5e-06, 0.25] | seconds | cubeRoot | `"0.001"` | — |
| Hold | `Hold` | false | continuous | [0.0, 0.5] | seconds | cubeRoot | `"0.039999995"` | — |
| Release | `Release` | false | continuous | [0.01, 2.5] | seconds | cubeRoot | `"0.14999999"` | — |

### Note Chance

type: `NoteChance`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Chance module allows MIDI notes to pass based on a specified probability.

#### Chance

Sets the probability of note passage: 0% blocks all notes, 100% allows all notes to pass.

#### Log

The log view displays the last 7 processed notes, showing whether each was blocked or passed.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Chance | `Chance` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Note Echo

type: `NoteEcho`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Echo module repeats incoming note-on and note-off messages.

#### Thru

Controls whether incoming note events are passed to the output along with the delayed notes.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time

Sets the echo time in seconds when in Free mode.

#### Offset

Adjusts the echo time by scaling the tempo-synced value.

#### Repeats

Sets the number of repetitions.

#### Pitch Ramp

Sets the transposition amount applied to each repeat.

#### Vel Ramp

Sets the velocity offset applied to each repeat.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Thru | `Thru` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| Sync | `Sync` | false | list | [0.0, 8.0] | index | integerAbsolute | `"1/8"` | `["Free","1/128","1/64","1/32","1/16","1/8","1/4","1/2","1/1"]` |
| Time | `Time` | false | continuous | [0.005, 2.0] | seconds | logarithmic | `"0.25"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Repeats | `Repeats` | false | integer | [0.0, 32.0] | integer | integerAbsolute | `"3.0"` | — |
| Pitch Ramp | `PitchRamp` | false | integer | [-12.0, 12.0] | semitones | integerRelative | `"0.0"` | — |
| Vel Ramp | `VelRamp` | false | integer | [-64.0, 64.0] | integer | integerRelative | `"0.0"` | — |

### Note Event

type: `NoteEvent`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Event module generates note-on and note-off events, enabling the creation of algorithmic compositions through parameter modulation.

#### Gate

Generates a note-on event when the value reaches or exceeds 50%, and a corresponding note-off event when it drops below 50%.

#### Channel

Sets the MIDI channel of generated notes.

#### Vel 0

Selects how velocity 0 behaves.

Skip prevents note-on triggers when velocity is 0 as Gate rises above 50%.

Off generates note-on and note-off events from velocity changes while Gate is above 50%. Setting velocity above 0 generates note-on, setting it to 0 generates note-off.

#### Note

Sets the note value within the C-2 to C8 range (10 octaves).

#### Velocity

Sets the velocity of generated note-on events. At 0, note-on events are not generated.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Gate | `Gate` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Channel | `Channel` | false | list | [0.0, 15.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]` |
| Vel 0 | `Vel0` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Skip"` | `["Skip","Off"]` |
| Note | `Note` | false | list | [0.0, 120.0] | index | integerAbsolute | `"C3"` | `["C-2","C♯-2","D-2","D♯-2","E-2","F-2","F♯-2","G-2","G♯-2","A-2","A♯-2","B-2","C-1","C♯-1","D-1","D♯-1","E-1","F-1","F♯-1","G-1","G♯-1","A-1","A♯-1","B-1","C0","C♯0","D0","D♯0","E0","F0","F♯0","G0","G♯0","A0","A♯0","B0","C1","C♯1","D1","D♯1","E1","F1","F♯1","G1","G♯1","A1","A♯1","B1","C2","C♯2","D2","D♯2","E2","F2","F♯2","G2","G♯2","A2","A♯2","B2","C3","C♯3","D3","D♯3","E3","F3","F♯3","G3","G♯3","A3","A♯3","B3","C4","C♯4","D4","D♯4","E4","F4","F♯4","G4","G♯4","A4","A♯4","B4","C5","C♯5","D5","D♯5","E5","F5","F♯5","G5","G♯5","A5","A♯5","B5","C6","C♯6","D6","D♯6","E6","F6","F♯6","G6","G♯6","A6","A♯6","B6","C7","C♯7","D7","D♯7","E7","F7","F♯7","G7","G♯7","A7","A♯7","B7","C8"]` |
| Velocity | `Velocity` | false | integer | [0.0, 127.0] | integer | integerAbsolute | `"80.0"` | — |

### Note Hold

type: `NoteHold`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Hold module blocks note-off events and generates them based on the selected mode. The Hold parameter can be automated or modulated creatively.

#### Hold

Enables the note hold functionality.

#### Mode

Selects the hold mode: Sticky, Retrig or Chord.

Sticky turns every second note-on of a given note into a note-off. Retrig holds a note and retriggers it whenever the same note is received again. Chord builds a chord until all note-off events are received, and then releases the chord on the next note-on.

#### Notes View

Displays up to 9 held notes.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Hold | `Hold` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| Mode | `Internal.Mode` | true | list | [0.0, 2.0] | index | integerAbsolute | `"Sticky"` | `["Sticky","Retrig","Chord"]` |

### Note Length

type: `NoteLength`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Length module controls the length of incoming notes and can also trigger notes from note-off events.

#### Trigger

Selects the trigger mode: Note-On or Note-Off.

#### Length

Selects how the defined length is applied: Fixed forces notes to the exact length, Min ensures they last at least that long, and Max ensures they don’t exceed it.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time

Sets the note length in seconds when in Free mode.

#### Offset

Sets the note length relative to the selected tempo-synced value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Trigger | `Trigger` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Note-On"` | `["Note-On","Note-Off"]` |
| Length | `Length` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Fixed"` | `["Min","Fixed","Max"]` |
| Sync | `Sync` | false | list | [0.0, 12.0] | index | integerAbsolute | `"1/8"` | `["Free","1/128","1/64","1/32","1/16","1/8","1/4","1/2","1/1","2/1","4/1","8/1","16/1"]` |
| Time | `Time` | false | continuous | [0.01, 10.0] | seconds | logarithmic | `"0.25"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |

### Note Pulse

type: `NotePulse`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Pulse module generates note-on and note-off events synchronised with the host transport. Events are produced only while the transport is running. Depending on the selected mode, the module generates either a single event or repeating pulses.

#### Mode

Selects the mode: Once, Hold, or Loop.

Once generates a single pulse immediately after each host transport restart. Hold generates a note-on event when the transport starts and a note-off event when it stops, with no other events in between. Loop generates pulses at regular intervals defined by the Sync parameter.

Once is useful for resyncing LFOs, and Hold is useful for auto-starting an Euclid sequencer. In both modes, if the transport starts while Velocity is 0, no note is triggered for that start.

#### Sync

Selects the pulse rate from tempo-synced options.

#### Gate

Scales the length of each note relative to the pulse rate.

#### Offset

Offsets the note-on event relative to the pulse rate.

#### Note

Sets the generated note within the C-2 to C8 range (10 octaves).

#### Channel

Sets the MIDI channel of generated events.

#### Velocity

Sets the velocity of generated note-on events. At 0, new notes are not generated.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Loop"` | `["Once","Hold","Loop"]` |
| Sync | `Sync` | false | list | [0.0, 30.0] | index | integerAbsolute | `"1/4"` | `["16","8d","16t","8","4d","8t","4","2d","4t","2","1d","2t","1","1/2d","1/1t","1/2","1/4d","1/2t","1/4","1/8d","1/4t","1/8","1/16d","1/8t","1/16","1/32d","1/16t","1/32","1/64d","1/32t","1/64"]` |
| Gate | `Gate` | false | continuous | [0.01, 0.99] | percent | linear | `"0.5"` | — |
| Offset | `Offset` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Note | `Note` | false | list | [0.0, 120.0] | index | integerAbsolute | `"C3"` | `["C-2","C♯-2","D-2","D♯-2","E-2","F-2","F♯-2","G-2","G♯-2","A-2","A♯-2","B-2","C-1","C♯-1","D-1","D♯-1","E-1","F-1","F♯-1","G-1","G♯-1","A-1","A♯-1","B-1","C0","C♯0","D0","D♯0","E0","F0","F♯0","G0","G♯0","A0","A♯0","B0","C1","C♯1","D1","D♯1","E1","F1","F♯1","G1","G♯1","A1","A♯1","B1","C2","C♯2","D2","D♯2","E2","F2","F♯2","G2","G♯2","A2","A♯2","B2","C3","C♯3","D3","D♯3","E3","F3","F♯3","G3","G♯3","A3","A♯3","B3","C4","C♯4","D4","D♯4","E4","F4","F♯4","G4","G♯4","A4","A♯4","B4","C5","C♯5","D5","D♯5","E5","F5","F♯5","G5","G♯5","A5","A♯5","B5","C6","C♯6","D6","D♯6","E6","F6","F♯6","G6","G♯6","A6","A♯6","B6","C7","C♯7","D7","D♯7","E7","F7","F♯7","G7","G♯7","A7","A♯7","B7","C8"]` |
| Channel | `Channel` | false | list | [0.0, 15.0] | index | integerAbsolute | `"1"` | `["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]` |
| Velocity | `Velocity` | false | integer | [0.0, 127.0] | integer | integerAbsolute | `"80.0"` | — |

### Note Range

type: `NoteRange`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Range module constrains note events to a specified range.

#### Mode

Selects the mode: Filter, Transpose, or Clamp.

Filter filters out notes outside the range. Transpose shifts notes outside the range up or down by octaves until they fall within the range. Clamp forces notes outside the range to the nearest valid note.

#### Lowest

Sets the lowest note of the range.

#### Highest

Sets the highest note of the range.

#### Inverted Range

If Lowest is set higher than Highest, the range wraps around: C-2 to Highest and Lowest to G8.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Filter"` | `["Filter","Transpose","Clamp"]` |
| Lowest | `Lowest` | false | list | [0.0, 127.0] | index | integerAbsolute | `"C-2"` | `["C-2","C♯-2","D-2","D♯-2","E-2","F-2","F♯-2","G-2","G♯-2","A-2","A♯-2","B-2","C-1","C♯-1","D-1","D♯-1","E-1","F-1","F♯-1","G-1","G♯-1","A-1","A♯-1","B-1","C0","C♯0","D0","D♯0","E0","F0","F♯0","G0","G♯0","A0","A♯0","B0","C1","C♯1","D1","D♯1","E1","F1","F♯1","G1","G♯1","A1","A♯1","B1","C2","C♯2","D2","D♯2","E2","F2","F♯2","G2","G♯2","A2","A♯2","B2","C3","C♯3","D3","D♯3","E3","F3","F♯3","G3","G♯3","A3","A♯3","B3","C4","C♯4","D4","D♯4","E4","F4","F♯4","G4","G♯4","A4","A♯4","B4","C5","C♯5","D5","D♯5","E5","F5","F♯5","G5","G♯5","A5","A♯5","B5","C6","C♯6","D6","D♯6","E6","F6","F♯6","G6","G♯6","A6","A♯6","B6","C7","C♯7","D7","D♯7","E7","F7","F♯7","G7","G♯7","A7","A♯7","B7","C8","C♯8","D8","D♯8","E8","F8","F♯8","G8"]` |
| Highest | `Highest` | false | list | [0.0, 127.0] | index | integerAbsolute | `"G8"` | `["C-2","C♯-2","D-2","D♯-2","E-2","F-2","F♯-2","G-2","G♯-2","A-2","A♯-2","B-2","C-1","C♯-1","D-1","D♯-1","E-1","F-1","F♯-1","G-1","G♯-1","A-1","A♯-1","B-1","C0","C♯0","D0","D♯0","E0","F0","F♯0","G0","G♯0","A0","A♯0","B0","C1","C♯1","D1","D♯1","E1","F1","F♯1","G1","G♯1","A1","A♯1","B1","C2","C♯2","D2","D♯2","E2","F2","F♯2","G2","G♯2","A2","A♯2","B2","C3","C♯3","D3","D♯3","E3","F3","F♯3","G3","G♯3","A3","A♯3","B3","C4","C♯4","D4","D♯4","E4","F4","F♯4","G4","G♯4","A4","A♯4","B4","C5","C♯5","D5","D♯5","E5","F5","F♯5","G5","G♯5","A5","A♯5","B5","C6","C♯6","D6","D♯6","E6","F6","F♯6","G6","G♯6","A6","A♯6","B6","C7","C♯7","D7","D♯7","E7","F7","F♯7","G7","G♯7","A7","A♯7","B7","C8","C♯8","D8","D♯8","E8","F8","F♯8","G8"]` |

### Note Stack

type: `NoteStack`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Stack module limits the number of notes that can be played simultaneously. It is useful for processing MIDI before sending note events to a monophonic or polyphonic synth. To achieve classic monosynth behaviour, set the Play parameter to 1 and enable Wait.

#### Play

Sets the maximum number of notes that can be played simultaneously.

#### Wait

Toggles whether released notes are added to the Wait stack and returned to the Play stack when space becomes available.

#### Release

Determines which note is released when the Play stack is full and a new note arrives: oldest, newest, highest, lowest, or random.

#### Note Stacks

The Play and Wait stack views display the currently held notes and the notes waiting to be brought back.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Play | `Play` | false | list | [0.0, 8.0] | index | integerAbsolute | `"1"` | `["0","1","2","3","4","5","6","7","8"]` |
| Wait | `Wait` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| Release | `Release` | false | list | [0.0, 4.0] | index | integerAbsolute | `"Old"` | `["Old","New","High","Low","Rand"]` |

### Note-to-Pitch

type: `Note-to-Pitch`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note-to-Pitch module generates a Pitch signal from note-on events. It uses Note signals in Poly mode and MIDI signal in Mono mode.

#### Tuning

Sets the tuning of the A above middle C.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Tuning | `Tuning` | false | continuous | [300.0, 500.0] | hertz | linear | `"440.0"` | — |

### Notepad

type: `Notepad`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Note Pad module is a tool for describing patches or taking session notes. It supports basic Markdown formatting, including regular, bold, italic, strikethrough, monospaced text, and links.

#### Parameter reference

No parameters.

### One Pole

type: `OnePole`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The One Pole module processes Audio signals using a virtual-analog low-pass or high-pass filter with a 6 dB/octave slope.

The high-pass output is the input signal minus the low-pass output at the same cutoff frequency. This complementary relationship makes One Pole ideal as a gentle crossover filter for creating multi-band effects with Splitter.

#### Type

Selects the low-pass or high-pass filter type.

#### Frequency

Sets the cutoff frequency.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 1.0] | index | integerAbsolute | `"LP"` | `["LP","HP"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"624.0001"` | — |

### Oscilloscope

type: `Oscilloscope`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Oscilloscope module visualises audio waveforms, providing a clear view of transients and overall signal shape.

#### Parameter reference

No parameters.

### Overlap Remover

type: `OverlapRemover`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Overlap Remover module shortens an active note when a new note with the same MIDI channel and pitch starts, ensuring the earlier note ends before the next begins. This prevents an earlier note-off from disrupting playback of the latest note.

#### Log

Displays the last 8 shortened notes.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### Phase Distortion

type: `PhaseDistortion`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Phase Distortion module uses the classic phase distortion technique to reshape any waveform. It splits the waveform cycle into two parts, stretching the first while compressing the second. As it is not an oscillator, it relies on the Pitch signal and note-on events (Note signal in Poly mode and MIDI in Mono mode) to determine the waveform’s start point and cycle length.

This opens up many creative possibilities. The Pitch signal can be transposed down an octave to distort a waveform an octave higher, or an unrelated Pitch signal can be used to apply phase distortion to a drum loop for unique rhythmic textures.

#### Skew

Sets the cycle split point where stretching ends and compression begins.

#### Tilt

Sets the distortion intensity by deviating from linearity around the cycle split point, with higher values producing brighter sounds.

#### Curve

Sets the smoothing applied at the cycle split point, with higher values producing a mellower sound and reducing aliasing.

#### Phase Graph

The graph visualises the waveform’s phase after distortion. Sliding horizontally or vertically on the graph adjusts Skew or Tilt, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Skew | `Skew` | false | continuous | [0.0, 0.999999] | percent | linear | `"0.5"` | — |
| Tilt | `Tilt` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Curve | `Curve` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### Phaser

type: `Phaser`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Collapses Poly to Mono.

The Phaser module is a stereo phaser effect with feedback control.

#### Rate

Sets the LFO frequency, spanning 10 octaves.

#### Feedback

Sets the amount of the effect signal fed back to the input.

#### Mix

Sets the dry/wet mix.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Rate | `Rate` | false | continuous | [0.01, 10.24] | hertz | logarithmic | `"1.0"` | — |
| Feedback | `Feedback` | false | continuous | [-0.99, 0.99] | percent | linear | `"0.0"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Pitch Bend

type: `PitchBend`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Pitch Bend module transposes the Pitch signal based on incoming Pitch Bend MIDI messages.

#### +Range

Sets the maximum upward transposition in semitones.

#### −Range

Sets the maximum downward transposition in semitones.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| +Range | `+Range` | false | integer | [1.0, 48.0] | semitones | integerAbsolute | `"1.0"` | — |
| −Range | `−Range` | false | integer | [1.0, 48.0] | semitones | integerAbsolute | `"1.0"` | — |

### Pitch Follower

type: `PitchFollower`. Container: `false`. Modulator: `true`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Pitch Follower module is a modulator that follows the Pitch signal. It is similar to the MIDI Source module’s Key Track, but instead of responding to note events, it directly tracks the Pitch signal, including pitch bends. A change in the Pitch signal by one octave results in a 10% change in the Mod signal.

#### Center

Sets the modulation zero point.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Center | `Center` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"624.0001"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Pitch Oscilloscope

type: `PitchOscilloscope`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Pitch Oscilloscope module visualises waveforms from oscillators and other processors. It uses the Pitch signal and note-on events (Note signal in Poly mode and MIDI in Mono mode) to lock onto the waveform. If they do not match, tracking will not be accurate. In Poly mode, it displays the waveform of the last triggered Voice.

#### Parameter reference

No parameters.

### Pitch Ramp

type: `PitchRamp`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Pitch Ramp module linearly ramps the Pitch signal toward the incoming value over a defined interval when a note-on event is received.

#### Sync

Selects Free or one of the tempo-synced options.

#### Interval

Sets the pitch ramp interval in seconds when in Free mode.

#### Offset

Sets the pitch ramp interval relative to the selected tempo-synced value.

#### Range

Sets the pitch offset the ramp starts from on note-on.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 12.0] | index | integerAbsolute | `"Free"` | `["Free","1/128","1/64","1/32","1/16","1/8","1/4","1/2","1/1","2/1","4/1","8/1","16/1"]` |
| Interval | `Interval` | false | continuous | [0.0, 10.0] | seconds | cubeRoot | `"0.05000001"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Range | `Range` | false | continuous | [-48.0, 48.0] | semitonesDecimal | cubeRoot | `"12.0"` | — |

### Pitch Ratio

type: `PitchRatio`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Pitch Ratio module modifies the Pitch signal by multiplying it by a ratio of two integers. It is especially useful for RM and FM synthesis.

#### Numerator

Sets the numerator of the ratio.

#### Denominator

Sets the denominator of the ratio.

#### Ratio

Displays the current ratio and allows quick selection of common musical intervals.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Numerator | `Numerator` | false | integer | [1.0, 24.0] | integer | integerAbsolute | `"3.0"` | — |
| Denominator | `Denominator` | false | integer | [1.0, 24.0] | integer | integerAbsolute | `"2.0"` | — |

### Pitch Shifter

type: `PitchShifter`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Collapses Poly to Mono.

The Pitch Shifter module changes the pitch of the Audio signal using a classic delay-line pitch-shifting algorithm.

#### Shift

Sets the pitch shift amount.

#### Window

Sets the length of the overlapping windows used to blend between delayed signal segments. Shorter windows respond more quickly to changes. Longer windows generally sound smoother, especially at lower frequencies.

#### Spread

Detunes the left and right channels in opposite directions. At +50 c, left shifts down 50 cents and right shifts up 50 cents.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Shift | `Shift` | false | continuous | [-24.0, 24.0] | semitonesDecimal | linear | `"0.0"` | — |
| Window | `Window` | false | continuous | [0.005, 0.5] | seconds | logarithmic | `"0.049999997"` | — |
| Spread | `Spread` | false | continuous | [-50.0, 50.0] | cents | linear | `"0.0"` | — |

### Pitch-to-Amp

type: `Pitch-to-Amp`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Pitch-to-Amp module uses the Pitch signal to control audio levels.

#### Range

Sets how much the audio level changes across the pitch range.

Positive values make higher pitches louder and lower pitches quieter. Negative values do the opposite.

#### Center

Sets the pitch that keeps its original audio level.

Each octave away from Center changes gain by one tenth of the Range value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Range | `Range` | false | continuous | [-60.0, 60.0] | decibels | linear | `"0.0"` | — |
| Center | `Center` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"624.0001"` | — |

### Poly-to-Mono

type: `Poly-to-Mono`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Collapses Poly to Mono.

The Poly-to-Mono module collapses a Poly signal to Mono by summing Audio subsignals from all Voices and using the Pitch subsignal from the last triggered Voice.

#### Volume

Sets the output volume.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Volume | `Volume` | false | continuous | [-60.0, 0.0] | decibels | linear | `"-12.0"` | — |

### Quantiser

type: `Quantiser`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Quantiser module delays MIDI notes to the next grid division for tighter timing.

#### Sync

Sets the quantisation grid.

#### Slack

Sets how far a note can deviate from the nearest grid division before being quantised. At 100%, no notes are moved.

#### Pull

Sets how strongly notes are pulled toward the next grid division, snapping fully at 100%.

#### Note Shift

When enabled, quantised notes keep their original duration by delaying note-off events. When disabled, note-off events remain unchanged, and notes ending before their quantised start time are removed.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 15.0] | index | integerAbsolute | `"1/16"` | `["1","1/2d","1/1t","1/2","1/4d","1/2t","1/4","1/8d","1/4t","1/8","1/16d","1/8t","1/16","1/32d","1/16t","1/32"]` |
| Slack | `Slack` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Pull | `Pull` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Note Shift | `NoteShift` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |

### Random

type: `Random`. Container: `false`. Modulator: `true`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Random module is a modulator that generates a customisable random Mod signal.

#### Mode

Selects the algorithm: Random I, Random II, or Chance.

#### Sync

Selects Free or one of the tempo-synced options.

#### Rate

Sets the rate in hertz in Free mode, from 0.01 Hz to 655.36 Hz (16 octaves).

#### Offset

Sets the rate relative to the selected tempo-synced value.

#### Tilt

Adjusts the behaviour of the selected algorithm.

#### Smooth

Sets the smoothing time for rapid Mod signal changes.

#### Phase

Sets the phase.

#### Depth

Sets the amplitude.

#### Bias

Sets the DC offset.

#### Cycles

Sets the number of cycles.

#### Trigger

Selects retrigger mode: Free, Retrig, or Legato.

Free never retriggers the signal. Retrig retriggers on every note-on event. Legato retriggers only if no other notes are held.

#### Random I

At 0% Tilt, all values in the range are equally likely. Increasing Tilt towards +100% makes higher values more likely, while decreasing Tilt towards -100% makes lower values more likely.

#### Random II

At 0% Tilt, all values in the range are equally likely. Increasing Tilt towards +100% makes extreme values more likely, while decreasing Tilt towards -100% makes values near the midpoint more likely.

#### Chance

At 0% Tilt, the minimum and maximum values are equally likely. Increasing Tilt towards +100% makes the maximum value more likely, while decreasing Tilt towards -100% makes the minimum value more likely.

#### Oscilloscope

The oscilloscope graphs the Mod signal. Sliding horizontally or vertically on the graph adjusts Rate/Offset or Depth, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Random I"` | `["Random I","Random II","Chance"]` |
| Sync | `Sync` | false | list | [0.0, 11.0] | index | integerAbsolute | `"1/4"` | `["Free","16/1","8/1","4/1","2/1","1/1","1/2","1/4","1/8","1/16","1/32","1/64"]` |
| Rate | `Rate` | false | continuous | [0.01, 655.36] | hertz | logarithmic | `"1.0"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Tilt | `Tilt` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Smooth | `Smooth` | false | continuous | [0.0, 1.0] | seconds | cubeRoot | `"0.0"` | — |
| Phase | `Phase` | false | continuous | [0.0, 1.0] | phase | linear | `"0.0"` | — |
| Depth | `Depth` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Bias | `Bias` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Cycles | `Cycles` | false | continuous | [0.0, 1000.0] | decimalWithInfinity | cubeRoot | `"1000.0"` | — |
| Trigger | `Trigger` | false | list | [0.0, 2.0] | index | integerAbsolute | `"Free"` | `["Free","Retrig","Legato"]` |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Rectifier

type: `Rectifier`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Rectifier module applies gate clipping, asymmetric gain, and DC offset to the signal.

#### Gate

Sets the threshold level above which the signal remains unchanged, while everything below it is set to 0.

#### Rectify

Sets the amount of asymmetry applied to the positive or negative portion of the signal. 

At 50%, the effect is equivalent to half-wave rectification, and at 100%, full-wave rectification.

#### DC Offset

Sets the amount of DC offset added to the signal.

#### Sinusoid Graph

The graph visualises how a unity-amplitude sinusoid would be transformed by the module. Sliding horizontally or vertically on the graph adjusts Gate or Rectify, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Gate | `Gate` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Rectify | `Rectify` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| DC Offset | `DCOffset` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Relative Pitch

type: `RelativePitch`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Relative Pitch module transposes and detunes the Pitch signal.

#### Semitones

Sets transposition amount in semitones.

#### Cents

Sets fine transposition in cents.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Semitones | `Semitones` | false | integer | [-24.0, 24.0] | semitones | integerUIOnly | `"0.0"` | — |
| Cents | `Cents` | false | integer | [-50.0, 50.0] | cents | integerUIOnly | `"0.0"` | — |

### Reverb

type: `Reverb`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Collapses Poly to Mono.
Mela Lab: experimental module.

The Reverb module is a high-quality algorithmic reverb effect.

#### Room Size

Sets the simulated size of the reverberant space.

#### Decay

Sets the time for the reverb to decay by 60 dB.

#### Reflect

Sets the early reflections level.

#### Diffuse

Sets the diffusion level.

#### Predelay

Sets the initial delay before the reverb begins.

#### HSF Freq

Sets the frequency above which additional damping is applied.

#### HSF Decay

Sets the amount of damping applied to high frequencies.

#### Mix

Sets the dry/wet mix.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Room Size | `RoomSize` | false | continuous | [0.01, 0.5] | seconds | cubeRoot | `"0.05000001"` | — |
| Decay | `Decay` | false | continuous | [0.1, 10.0] | seconds | cubeRoot | `"1.5"` | — |
| Reflect | `Reflect` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Diffuse | `Diffuse` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Predelay | `Predelay` | false | continuous | [0.0, 1.0] | seconds | linear | `"0.01"` | — |
| HSF Freq | `HSFFreq` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"3999.9985"` | — |
| HSF Decay | `HSFDecay` | false | continuous | [0.1, 1.0] | percent | linear | `"0.8"` | — |
| Mix | `Mix` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |

### Ring Mod

type: `RingMod`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Collapses Poly to Mono.

The Ring Mod module is inspired by analog ring modulators and produces richer harmonic content than standard digital ring modulation. The module’s input acts as a modulator for its sinusoid carrier.

#### Frequency

Sets the carrier frequency, ranging from 8 Hz to 8192 Hz (10 octaves).

#### Character

Sets the tonal quality of the ring modulation: lower values produce a mellower sound, while higher values create a harsher, more intense tone.

#### Spread

Spreads the carrier frequency between the stereo channels. At 200%, the left channel runs at half the Frequency value and the right channel runs at twice the value. At 50%, the channel scaling is reversed. At 100%, both channels use the Frequency value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Frequency | `Frequency` | false | continuous | [8.0, 8192.0] | hertz | logarithmic | `"130.8128"` | — |
| Character | `Character` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Spread | `Spread` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |

### Scale

type: `Scale`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Scale module constrains notes to a selected scale.

#### Mode

Selects the mode: Filter or one of the Nearest options.

Filter discards notes outside the scale. Nearest options transpose notes up or down to the nearest enabled note.

#### Scale

Defines the scale by enabling or disabling individual pitch buttons.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Mode` | false | list | [0.0, 3.0] | index | integerAbsolute | `"Filter"` | `["Filter","Nearest","Nearest Down","Nearest Up"]` |
| C | `C` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| C♯ | `C♯` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| D | `D` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| D♯ | `D♯` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| E | `E` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| F | `F` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| F♯ | `F♯` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| G | `G` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| G♯ | `G♯` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| A | `A` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| A♯ | `A♯` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |
| B | `B` | false | toggle | [0.0, 1.0] | index | integerAbsolute | `"On"` | `["Off","On"]` |

### Simple LFO

type: `SimpleLFO`. Container: `false`. Modulator: `true`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Simple LFO module is a modulator that generates an LFO or random Mod signal. It is a simplified version of the LFO and Random modules combined. The Mod signal retriggers on note-on events.

#### Waveform

Selects an LFO waveform or random mode.

#### Sync

Selects Free or one of the tempo-synced options.

#### Rate

Sets the rate in hertz in Free mode, from 0.02 Hz to 20.48 Hz (10 octaves).

#### Offset

Sets the rate relative to the selected tempo-synced value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Waveform | `Waveform` | false | list | [0.0, 10.0] | index | integerAbsolute | `"Sine"` | `["Sine","Triangle","Square","Saw","Cosine","Peak","Step","Ramp Up","Ramp Down","Random Glide","Random Hold"]` |
| Sync | `Sync` | false | list | [0.0, 11.0] | index | integerAbsolute | `"1/4"` | `["Free","16/1","8/1","4/1","2/1","1/1","1/2","1/4","1/8","1/16","1/32","1/64"]` |
| Rate | `Rate` | false | continuous | [0.02, 20.48] | hertz | logarithmic | `"1.0"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Slew

type: `Slew`. Container: `false`. Modulator: `true`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Slew module is a modulator that smoothly ramps the Mod signal toward a target value. Ramping can be linear, exponential, or a blend of both.

#### Value

Sets the target value of the Mod signal.

#### Rise

Sets the time required for the signal to rise linearly from 0% to 100%, or exponentially from 0% to 99.9%.

#### Fall

Sets the time required for the signal to fall linearly from 100% to 0%, or exponentially from 100% to 0.01%.

#### Curve

Sets the mix between linear and exponential ramping. At 0%, the ramp is fully linear. At 100%, the ramp is fully exponential.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Value | `Value` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Rise | `Rise` | false | continuous | [1e-05, 60.0] | seconds | cubeRoot | `"0.10000001"` | — |
| Fall | `Fall` | false | continuous | [1e-05, 60.0] | seconds | cubeRoot | `"1.0"` | — |
| Curve | `Curve` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |

### Splitter

type: `Splitter`. Container: `true`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Conditional. Outputs Poly only when its input and all splitter and processor outputs are Poly; otherwise the combined Audio is summed to Mono.

The Splitter module works similarly to Stack, but groups its submodules into pairs. The first submodule in each pair acts as a splitter and the second as a processor. The first splitter receives the complete input signal. Later splitters receive a copy of the input’s non-Audio subsignals together with the residual Audio from the previous splitter. Each splitter processes its input and passes its entire output to its paired processor. Subtracting the splitter’s Audio output from its Audio input leaves a residual for the next splitter. An unpaired final submodule processes the final residual instead of acting as a splitter.

The module’s Audio output is the sum of all processor outputs and any unprocessed residual remaining at the end. Its non-Audio output subsignals are unchanged from the input.

The Splitter module can create many types of effects. For example, using filters at odd positions creates a multi-band processor. Stereo Tool or Mid-Side modules enable independent left/right or mid/side processing. A Level module can act as a crossfader between two processing chains. Modulating the Level module with an Envelope Follower makes it possible to process transients and sustain independently.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### Stack

type: `Stack`. Container: `true`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Conditional. Sum Audio outputs Poly only when the input and all child outputs are Poly. Ring Mod outputs Poly only when the input and at least one child output are Poly. Merge MIDI and Isolate preserve the input type.

The Stack module feeds a copy of its input signals to all its submodules. Its output depends on the Mode parameter: Sum Audio, Ring Mod, Merge MIDI, or Isolate. When the output is Poly, all non-Audio Voice subsignals are identical to those of the input.

To process multiple sublanes in parallel, stack Lane modules.

Stack shows submodules individually or as a horizontal stack.

#### Sum Audio

The output Audio signal is the sum of the submodule outputs. The module’s output is a Poly signal only if the input and all submodule outputs are also Poly signals.

#### Ring Mod

The output Audio signal is the product of the submodule outputs. The output is Poly only if the input and at least one submodule output are Poly. Mono submodule outputs multiply every voice by the same value. When the input is Mono, Poly submodule Audio is summed before multiplication.

#### Merge MIDI

The output MIDI signal is a merge of all submodule outputs. All other signals pass through unchanged.

#### Isolate

The submodule outputs are ignored and the module’s output signals are identical to its input.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Mode | `Internal.Mode` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Sum Audio"` | `["Sum Audio","Ring Mod","Merge MIDI","Isolate"]` |

### Stereo Delay

type: `StereoDelay`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Collapses Poly to Mono.

The Stereo Delay module is a stereo delay effect with flexible feedback routing.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time L

Sets the delay time for the left channel in seconds when in Free mode.

#### Time R

Sets the delay time for the right channel in seconds when in Free mode.

#### Offset L

Scales the left channel delay time when using a tempo-synced value.

#### Offset R

Scales the right channel delay time when using a tempo-synced value.

#### Low Cut L

Sets the high-pass filter cutoff for the delayed left channel.

#### Low Cut R

Sets the high-pass filter cutoff for the delayed right channel.

#### High Cut L

Sets the low-pass filter cutoff for the delayed left channel.

#### High Cut R

Sets the low-pass filter cutoff for the delayed right channel.

#### Feedback L

Sets the feedback amount of the left channel.

#### Feedback R

Sets the feedback amount of the right channel.

#### Cross L→R

Sets the feedback amount from left to right channel.

#### Cross R→L

Sets the feedback amount from right to left channel.

#### Smooth

Sets the smoothing amount for delay time changes.

#### Mix L

Sets the dry/wet mix of the left channel.

#### Mix R

Sets the dry/wet mix of the right channel.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 7.0] | index | integerAbsolute | `"1/16"` | `["Free","1/64","1/32","1/16","1/8","1/4","1/2","1/1"]` |
| Time L | `TimeL` | false | continuous | [0.0, 5.0] | seconds | signedSquareRoot | `"0.12499999"` | — |
| Time R | `TimeR` | false | continuous | [0.0, 5.0] | seconds | signedSquareRoot | `"0.12499999"` | — |
| Offset L | `OffsetL` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Offset R | `OffsetR` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Low Cut L | `LowCutL` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19.499998"` | — |
| Low Cut R | `LowCutR` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19.499998"` | — |
| High Cut L | `HighCutL` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19967.994"` | — |
| High Cut R | `HighCutR` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19967.994"` | — |
| Feedback L | `FeedbackL` | false | continuous | [-0.99, 0.99] | percent | linear | `"0.0"` | — |
| Feedback R | `FeedbackR` | false | continuous | [-0.99, 0.99] | percent | linear | `"0.0"` | — |
| Cross L→R | `CrossL→R` | false | continuous | [-0.99, 0.99] | percent | linear | `"0.0"` | — |
| Cross R→L | `CrossR→L` | false | continuous | [-0.99, 0.99] | percent | linear | `"0.0"` | — |
| Smooth | `Smooth` | false | continuous | [0.0, 1.0] | seconds | signedSquareRoot | `"0.040000003"` | — |
| Mix L | `MixL` | false | continuous | [0.0, 1.0] | percent | linear | `"0.2"` | — |
| Mix R | `MixR` | false | continuous | [0.0, 1.0] | percent | linear | `"0.2"` | — |

### Stereo Pan

type: `StereoPan`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Collapses Poly to Mono.

The Stereo Pan module positions the left and right channels in the stereo field.

#### Pan

Sets the center position of the stereo image.

#### Spread

Sets the maximum stereo width.

#### Panner Graph

The graph visualises the positions of the left and right channels in the stereo field. Sliding horizontally or vertically on the graph adjusts Pan or Spread, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Pan | `Pan` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Spread | `Spread` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |

### Stereo Tool

type: `StereoTool`. Container: `false`. Modulator: `false`. Collection: Collection 3.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Stereo Tool module takes the left and right channels of the input audio and allows each to be independently retained, swapped, replaced with the mid or side component, polarity-inverted, or muted.

#### M/S Encoding

The mid and side components are calculated as:

M = (L + R) / 2
S = (L − R) / 2

M/S encoding is configured by setting Left to Mid and Right to Side. Following processor modules then receive the mid and side components as their left and right channels. After processing, another Stereo Tool with Left set to 2×Mid and Right set to 2×Side decodes the result back to L/R at the original level. This reconstructs L = M + S and R = M − S. Decoding with Mid and Side instead produces the same L/R result 6 dB quieter.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Left | `Left` | false | list | [0.0, 10.0] | index | integerAbsolute | `"Left"` | `["Left","Right","-Left","-Right","Mid","Side","2×Mid","2×Side","-Mid","-Side","Mute"]` |
| Right | `Right` | false | list | [0.0, 10.0] | index | integerAbsolute | `"Right"` | `["Left","Right","-Left","-Right","Mid","Side","2×Mid","2×Side","-Mid","-Side","Mute"]` |

### Strummer

type: `Strummer`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Strummer module plays the notes of a chord as strums, following a customisable up/down strumming pattern.

#### Steps

Sets the number of strum steps.

#### Step 1..4

Selects the direction to play notes: Up or Down.

#### Sync

Selects Free or one of the tempo-synced options.

#### Time

Sets the interval between note-on events in seconds when in Free mode.

#### Offset

Sets the interval between note-on events relative to the selected tempo-synced value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Steps | `Steps` | false | list | [0.0, 3.0] | index | integerAbsolute | `"2"` | `["1","2","3","4"]` |
| Step 1 | `Step1` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Up"` | `["Up","Down"]` |
| Step 2 | `Step2` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Down"` | `["Up","Down"]` |
| Step 3 | `Step3` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Up"` | `["Up","Down"]` |
| Step 4 | `Step4` | false | list | [0.0, 1.0] | index | integerAbsolute | `"Down"` | `["Up","Down"]` |
| Sync | `Sync` | false | list | [0.0, 8.0] | index | integerAbsolute | `"1/8"` | `["Free","1/128","1/64","1/32","1/16","1/8","1/4","1/2","1/1"]` |
| Time | `Time` | false | continuous | [0.0, 10.0] | seconds | cubeRoot | `"0.25000003"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |

### Time Scrub

type: `TimeScrub`. Container: `false`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Collapses Poly to Mono.
Mela Lab: experimental module.

The Time Scrub module is an audio delay whose Position parameter allows playback to jump to any point in its tempo-synced buffer. Modulating Position changes the playback speed: ramping from −100% to 0% speeds up the audio, while ramping from 0% to −100% can slow down, hold, or reverse playback. Stepped modulation can jump back through the buffer to create beat repeats.

With Position held steady, playback stays at 1×. For a linear ramp across the full Position range, the playback rate is 1 + (Sync duration ÷ ramp duration) when ramping up, or 1 − (Sync duration ÷ ramp duration) when ramping down. For example, with Sync set to 1/4, a ramp up over a quarter note produces 2× playback. A ramp down over a quarter note produces 0×, while a ramp down over an eighth note produces −1×.

#### Sync

Selects the buffer length using one of the tempo-synced options.

#### Position

Sets the read position.

At −100%, the output is delayed by the full Sync duration while at 0%, it follows the live input.

#### Rate

Displays the playback rate resulting from Position movement.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 24.0] | index | integerAbsolute | `"1"` | `["1/64","1/32t","1/64d","1/32","1/16t","1/32d","1/16","1/8t","1/16d","1/8","1/4t","1/8d","1/4","1/2t","1/4d","1/2","1/1t","1/2d","1","2t","1d","2","4t","2d","4"]` |
| Position | `Position` | false | continuous | [-1.0, 0.0] | percent | linear | `"0.0"` | — |

### Transposer

type: `Transposer`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Transposer module shifts notes up or down by up to 24 semitones.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Semitones | `Semitones` | false | integer | [-24.0, 24.0] | semitones | integerRelative | `"0.0"` | — |

### Unison

type: `Unison`. Container: `true`. Modulator: `false`. Collection: Collection 5.

Signal behaviour: Conditional. Outputs Poly only when its input and all child outputs are Poly; otherwise the combined Audio is summed to Mono.

The Unison module is optimised for stacking oscillators to create a classic unison effect. It processes submodules in parallel, similar to Stack in Sum Audio mode, with built-in detune and stereo spread. Each submodule receives a differently detuned Pitch signal, and the outputs are spread across the stereo field before being summed. Levels are automatically scaled to maintain consistent gain.

A more natural sound is achieved when oscillators use random start phases on note-on.

Modules other than oscillators can also be stacked inside Unison to create layered effects.

#### Detune

Sets the maximum detune depth in cents. Positive values detune left to right in the stereo field, negative values reverse it.

#### Stereo

Sets how widely voices are spread in the stereo field.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Detune | `Detune` | false | integer | [-50.0, 50.0] | cents | integerUIOnly | `"0.0"` | — |
| Stereo | `Stereo` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### VA Filter

type: `VAFilter`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The VA Filter module is a virtual-analog filter with a selection of self-oscillating resonant types.

#### Type

Selects the filter algorithm and slope.

#### Frequency

Sets the filter cutoff frequency, from 19.5 Hz to 19968 Hz (10 octaves).

#### Resonance

Sets the filter resonance, with self-oscillation occurring at 100%.

#### Drive

Sets the amount of low-frequency content to restore that is lost at high resonance.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Type | `Type` | false | list | [0.0, 9.0] | index | integerAbsolute | `"LP 12dB A"` | `["LP 12dB A","LP 24dB A","BP 12dB A","BP 24dB A","HP 12dB A","HP 24dB A","LP 12dB B","BP 12dB B","HP 12dB B","BS 12dB B"]` |
| Frequency | `Frequency` | false | continuous | [19.5, 19968.0] | hertz | logarithmic | `"19967.994"` | — |
| Resonance | `Resonance` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Drive | `Drive` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |

### VA Oscillator

type: `VAOscillator`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The VA Oscillator module is a virtual-analog oscillator with a variety of waveforms, some of which can be further shaped using the Shape or Sync parameters. It can also ring modulate the input signal.

#### Waveform

Selects the waveform type.

#### Phase

Sets the waveform phase.

#### Shape

Adjusts the waveform shape.

#### Sync

Sets the hard sync amount.

#### Level

Sets the waveform amplitude.

#### Ring

Sets the ring modulation mix: 0% sums the input and oscillator signals, 100% multiplies them.

#### Trigger

Controls the waveform phase on note-on: Free, Retrig, Legato, or Rand.

Free ignores note-on events. Retrig always resets the phase to the Phase parameter value. Legato resets the phase unless another note is already held. Rand assigns a random initial phase.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Waveform | `Waveform` | false | list | [0.0, 13.0] | index | integerAbsolute | `"Sawtooth"` | `["Sawtooth","Sine","Square","Triangle","Alternating Sine","Bipolar Square Pulse","Bipolar Squared Sine","Bipolar Triangular Pulse","Parabolic Sine","Rectangle","Rectified Sine","Trapezoid","Triangle-Sawtooth","Triangular Pulse"]` |
| Phase | `Phase` | false | continuous | [-0.5, 0.5] | phase | linear | `"0.0"` | — |
| Shape | `Shape` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Sync | `Sync` | false | continuous | [1.0, 16.0] | multiplier | logarithmic | `"1.0"` | — |
| Level | `Level` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Ring | `Ring` | false | continuous | [0.0, 1.0] | percent | linear | `"0.0"` | — |
| Trigger | `Internal.Trigger` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Free"` | `["Free","Retrig","Legato","Rand"]` |

### Vel-to-Amp

type: `Vel-to-Amp`. Container: `false`. Modulator: `false`. Collection: Collection 4.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Vel-to-Amp module uses note velocity (from Note signal in Poly mode and MIDI in Mono mode) to control the audio levels, making notes velocity-sensitive.

#### Range

Sets the difference in audio level between the lowest and highest note velocities.

Positive values make higher velocities louder and lower velocities quieter. Negative values do the opposite. At 0 dB, velocity has no effect on the audio level.

#### Smooth

Sets the time constant for smoothing level changes between notes.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Range | `Range` | false | continuous | [-60.0, 60.0] | decibels | linear | `"24.0"` | — |
| Smooth | `Smooth` | false | continuous | [0.0, 0.1] | seconds | cubeRoot | `"0.0"` | — |

### Velocity

type: `Velocity`. Container: `false`. Modulator: `false`. Collection: Collection 1.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Velocity module modifies the velocities of incoming MIDI notes.

#### Offset

Sets an offset to be applied to note velocities.

#### Rand Add

Sets the maximum random value added to each note velocity.

#### Min

Sets the minimum velocity value.

#### Max

Sets the maximum velocity value.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Offset | `Offset` | false | integer | [-127.0, 127.0] | integer | integerRelative | `"0.0"` | — |
| Rand Add | `RandAdd` | false | integer | [0.0, 127.0] | integer | integerAbsolute | `"0.0"` | — |
| Min | `Min` | false | integer | [1.0, 127.0] | integer | integerAbsolute | `"1.0"` | — |
| Max | `Max` | false | integer | [1.0, 127.0] | integer | integerAbsolute | `"127.0"` | — |

### Vibrato

type: `Vibrato`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Vibrato module applies vibrato to the Pitch signal. It uses a sinusoidal LFO that retriggers on note-on events only if no other notes are held.

#### Sync

Selects Free or one of the tempo-synced options.

#### Rate

Sets the LFO rate in hertz in Free mode, from 0.02 Hz to 20.48 Hz (10 octaves).

#### Offset

Sets the rate relative to the selected tempo-synced value.

#### Depth

Sets the maximum pitch deviation.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Sync | `Sync` | false | list | [0.0, 11.0] | index | integerAbsolute | `"Free"` | `["Free","16/1","8/1","4/1","2/1","1/1","1/2","1/4","1/8","1/16","1/32","1/64"]` |
| Rate | `Rate` | false | continuous | [0.02, 20.48] | hertz | logarithmic | `"6.9999995"` | — |
| Offset | `Offset` | false | continuous | [0.5, 2.0] | percent | logarithmic | `"1.0"` | — |
| Depth | `Depth` | false | continuous | [0.0, 48.0] | semitonesDecimal | cubeRoot | `"0.5"` | — |

### Voice Activity

type: `VoiceActivity`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Voice Activity module visualises Voice signals, showing note-on/off states, velocities, and audio levels.

#### Parameter reference

No parameters.

### Volume

type: `Volume`. Container: `false`. Modulator: `false`. Collection: Collection 0.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The Volume module adjusts the gain of the incoming signal in decibels.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Volume | `Volume` | false | continuous | [-120.0, 0.0] | decibels | cubeRoot | `"0.0"` | — |
| Gain | `Gain` | false | continuous | [-36.0, 36.0] | decibels | linear | `"0.0"` | — |

### VPS Oscillator

type: `VPSOscillator`. Container: `false`. Modulator: `false`. Collection: Collection 2.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The VPS Oscillator module uses the Vector Phaseshaping synthesis algorithm, a generalisation of classic Phase Distortion (PD). In this approach, phase is mapped as a line segment in a 2D space, and a breakpoint defined by the Skew (x) and Formants (y) parameters splits the line into two segments with different slopes. This reshaping produces a wide variety of waveforms, from saw-like to pulse-like, and can even introduce formant-like qualities when the y-position is pushed beyond 100%.

#### Phase

Sets the waveform phase.

#### Skew

Sets the breakpoint’s x-position.

#### Formants

Sets the breakpoint’s y-position. Values above 100% squeeze extra sinusoid cycles into a single oscillator cycle, producing formant-like overtones.

#### Level

Sets the oscillator amplitude.

#### Trigger

Controls the waveform phase on note-on: Free, Retrig, Legato, or Rand.

Free ignores note-on events. Retrig always resets the phase to the Phase parameter value. Legato resets the phase unless another note is already held. Rand assigns a random initial phase.

#### Waveform Graph

The graph visualises both the generated waveform and its distorted phase. Sliding horizontally or vertically on the graph adjusts Skew or Formants, and double-tapping resets both to their default values.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| Phase | `Phase` | false | continuous | [-0.5, 0.5] | phase | linear | `"0.0"` | — |
| Skew | `Skew` | false | continuous | [1e-05, 0.99999] | percent | linear | `"0.5"` | — |
| Formants | `Formants` | false | continuous | [0.0, 4.0] | percent | linear | `"0.5"` | — |
| Level | `Level` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Trigger | `Internal.Trigger` | true | list | [0.0, 3.0] | index | integerAbsolute | `"Free"` | `["Free","Retrig","Legato","Rand"]` |

### XY

type: `XY`. Container: `false`. Modulator: `true`. Collection: Collection 5.

Signal behaviour: Preserves Poly. A Mono input remains Mono.

The XY module is a manual two-axis modulator that generates two independent Mod signals from the X and Y parameters in the [0%, 100%] range.

#### Parameter reference

| Name | ID suffix / Global path | Internal | Type | Stored range | Unit | Curve | Default | Values |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| On | `On` | false | continuous | [0.0, 1.0] | percent | linear | `"1.0"` | — |
| X | `X` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Y | `Y` | false | continuous | [0.0, 1.0] | percent | linear | `"0.5"` | — |
| Intensity 1 | `Targets.Intensity1` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 2 | `Targets.Intensity2` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 3 | `Targets.Intensity3` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 4 | `Targets.Intensity4` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 5 | `Targets.Intensity5` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 6 | `Targets.Intensity6` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 7 | `Targets.Intensity7` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Intensity 8 | `Targets.Intensity8` | false | continuous | [-1.0, 1.0] | percent | linear | `"0.0"` | — |
| Source 1 | `Internal.Source1` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 2 | `Internal.Source2` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 3 | `Internal.Source3` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 4 | `Internal.Source4` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 5 | `Internal.Source5` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 6 | `Internal.Source6` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 7 | `Internal.Source7` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
| Source 8 | `Internal.Source8` | true | list | [0.0, 1.0] | index | integerAbsolute | `"X"` | `["X","Y"]` |
