# Appendix B: The <binding> element Adding a binding to a UI control, MIDI handler, or modulator tells the DecentSampler engine that it should take input from a source and use it to change values in another part of the engine. An example of this would be a knob which controls the volume of a group, a CC controller that changes an effect parameter, or an LFO that modulates an effect parameter. In order to set up a binding for a specific source, create a `` element within the source element. In this example, a labeled knob is controlling the volume of the first group of samples (group 0): ```xml ``` Here's a full list of parameters for the `` element: | Attribute | Description | | |:---------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------| | **`type`** | This tells the engine what type of parameter this is. Valid values are: `amp`, `general`, `effect`, `control`, `note`, `note_binding`, `velocity_binding`, `button_state_binding`, `keyboard_color`, `modulator`, `note_sequence`. | Required | | **`level`** | Valid values are `ui`, `instrument`, `group`, `tag`, `midi` | Required | | **`position`** | The specific 0-based index of the element to be modified by this binding. If you are targeting a group, for example, the first group would be 0, the second group would be 1, etc. | Required | | **`controlIndex`** | When a binding is targeting a control, this is the same thing as the `position` attribute. It is a specific 0-based index of the control to be modified by this binding. If you are targeting an group-level effect, this would specified the group under which the effect lives. | Optional | | **`groupIndex`** | When a binding is targeting a group, this is the same thing as the `position` attribute. It is a specific 0-based index of the group to be modified by this binding. If you are targeting an group-level effect, this would specified the group under which the effect lives. | Optional | | **`effectIndex`** | When a binding is targeting an effect, this is the same thing as the `position` attribute. It is a specific 0-based index of the effect to be modified by this binding. As an alternative to using an index, you can use the `effectTags` attribute (see below) to target effects by their `tags` name. | Optional | | **`modulatorIndex`** | When a binding is targeting a modulator, this is the same thing as the `position` attribute. It is a specific 0-based index of the modulator to be modified by this binding. As an alternative to using an index, you can use the `modulatorTags` attribute (see below) to target modulators by their `tags` name. | Optional | | **`tags`** | A comma-separated list of tags. The meaning depends on context: at `level="group"`, this selects the target group(s) by tag. For backward compatibility, `tags` is also promoted into the appropriate typed tag attribute (`groupTags`, `effectTags`, `modulatorTags`, or `controlTags`) when the corresponding typed attribute is not explicitly set. Prefer the typed attributes for new presets. | Optional | | **`groupTags`** | A comma-separated list of group tags. At `level="group"`, targets all `` elements whose `tags` attribute contains any of these tags. This is the explicit, typed form of the group-selection behavior that `tags` has always provided. | Optional | | **`effectTags`** | A comma-separated list of effect tags. When `type="effect"`, targets all `` elements (at instrument or group level) whose `tags` attribute contains any of these tags. Use this instead of `effectIndex` when you want to address effects by name rather than position. | Optional | | **`modulatorTags`** | A comma-separated list of modulator tags. When `type="modulator"` at `level="instrument"`, targets all modulator elements (``, ``, etc.) whose `tags` attribute contains any of these tags. Use this instead of `modulatorIndex` when you want to address modulators by name rather than position. | Optional | | **`controlTags`** | A comma-separated list of UI control tags. When `type="control"` at `level="ui"`, targets all UI controls whose `tags` attribute contains any of these tags. Use this instead of `controlIndex` when you want to address controls by name rather than position. | Optional | | **`enabled`** | A value that turns the binding on and off. Valid values are: `true`, `false`. | Optional | | **`identifier`** | A string identifying the specific parameter that you wish to change. If you are modulating based on tags, you would put the tag you are targeting here. See Appendix D for example. | Required | | **`parameter`** | A token describing the specific kind of parameter that you wish to change. A list of controller parameters are below. | Required | | **`translation`** | Valid values are `fixed_value`, `linear` and `table`. Explanation of both translation modes is in a separate section below. Default: `linear` | Optional | | **`translationOutputMin`** | This is the min value this binding should send to the target parameter. This is only looked at if translation is set to `linear`. | Optional | | **`translationOutputMax`** | This is the max value this binding should send to the target parameter. This is only looked at if translation is set to `linear`. | Optional | | **`translationReversed`** | Valid values are `true` and `false`. Default: `false`. This is only looked at if translation is set to `linear`. | Optional | | **`translationTable`** | A list of input-output pairs that make up the translation table. The input and output are separated by commas. The groups of coordinates themselves are separated by semi-colons. Default: `0,0;1,1`. You must have at least two coordinates in your list. This is only looked at if translation is set to `table`. | Optional | | **`translationValue`** | The value that should be passed along when `translation` is set to `fixed_value`. | Optional | | **`triggerOnLoad`** | Valid values are `true` and `false`. Default: `true`. When set to `false`, this binding will not fire when the preset is first loaded or when a DAW session is restored. This is useful for `fixed_value` `VALUE` bindings inside button states that would otherwise overwrite a user's saved control position on session restore. | Optional | ## Binding Parameters for Targeting Note Sequences A special set of binding attributes exist for targeting note sequences: | Attribute | Description | Default | Required | |:--------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------|:----------------------------------------------------| | **`seqIndex`** | A 0-based index of a sequence underneath the `` section | None | Required | | **`seqFollowGlobalTempo`** | Whether or not the sequence should follow the global tempo. Valid values are `true` and `false`. If this is set to false, then playback will be hardcoded at 120BPM. This can be useful if you want to assure that sequences will always play back at the same rate regardless of the DAW clock. | `true` | Optional | | **`seqTriggerBehavior`** | What the binding should do with the sequence in question. Valid values are `on` (start playing the sequence), `off` (stop playing the sequence), `midi_key` (special value that will cause the binding to follow a specific MIDI key note binding) | `midi_key` | Optional | | **`seqPlayerIdentifier`** | An identifier used for tracking the state of a sequence. This value can be any sequence of numbers or letters. | None | Required when `seqTriggerBehavior` is `on` or `off` | | **`seqTrackMidiInputVelocity`** | Whether or not the sequence should respect the velocity of the incoming MIDI note. This can only be used when the sequence is being triggered by a MIDI note binding. Value should be a floating point number from 0.0 to 1. | | Optional | | **`seqTranspose`** | Transpose the notes in the sequence by an arbitrary number of half steps. Value should be a floating point number from -36 to 36. | Any sequence of numbers of letters | Optional | | **`seqTransposeWithRootNote`** | Transpose the notes in the sequence relative to the pitch of the incoming MIDI note. This can only be used when the sequence is being triggered by a MIDI note binding. Value should be a floating point number from 0 to 127. | Any sequence of numbers of letters | Optional | | **`seqPlaybackRate`** | The speed of playback. Value should be a floating point number from 0.001 to 10000. | 1.0 | Optional | | **`seqLoopMode`** | Valid values are: `forward`, `reverse`, `random`, `random_no_repeat`, `no_loop` | `forward` | Optional | ## Controllable Parameters This is a list of parameters that can be used in conjunction with the `` element above. NOTE: The table below scrolls to the right. | Description | `type` | `level` | `parameter` | Valid Range | Modulatable | Additional required parameters | |:-----------------------------------------------------|:-----------------------|:------------------------|:--------------------------------|:--------------------------------------------------------------|:------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Global Volume | `amp` | `instrument` | `AMP_VOLUME` | 0.0 - 16.0 | No | N/A | | Global Tuning | `amp` | `instrument` | `GLOBAL_TUNING` | -36.0 - 36.0 | No | N/A | | Global Pan | `amp` | `instrument` | `PAN` | -100 - 100 | No | N/A | | Sample Start (see note 2 below) | `general` | `instrument` or `group` | `SAMPLE_START` | 0 - last sample | No | This value will be in number of raw samples where 0 is the beginning. See note 2 below. | | Sample End (see note 2 below) | `general` | `instrument` or `group` | `SAMPLE_END` | 0 - last sample | No | This value will be in number of raw samples where 0 is the beginning. See note 2 below. | | Loop Start (see note 2 below) | `general` | `instrument` or `group` | `LOOP_START` | 0 - last sample | No | This value will be in number of raw samples where 0 is the beginning. See note 2 below. | | Loop End (see note 2 below) | `general` | `instrument` or `group` | `LOOP_END` | 0 - last sample | No | This value will be in number of raw samples where 0 is the beginning. See note 2 below. | | Low Note | `general` | `instrument` or `group` | `LO_NOTE` | 0 - 127 | No | The lowest MIDI note number that will trigger samples in this group. Integer values only. | | High Note | `general` | `instrument` or `group` | `HI_NOTE` | 0 - 127 | No | The highest MIDI note number that will trigger samples in this group. Integer values only. | | Low Velocity | `general` | `group` | `LO_VEL` | 0 - 127 | No | The lowest MIDI velocity value that will trigger samples in this group. Integer values only. `groupIndex` or `position` contains the 0-based index of the group. | | High Velocity | `general` | `group` | `HI_VEL` | 0 - 127 | No | The highest MIDI velocity value that will trigger samples in this group. Integer values only. `groupIndex` or `position` contains the 0-based index of the group. | | Root Note | `general` | `instrument` or `group` | `ROOT_NOTE` | 0 - 127 | No | The MIDI note number used as the root pitch for transposition. Integer values only. | | Silencing Decay | `general` | `instrument` or `group` | `SILENCING_DECAY` | 0.0+ (seconds) | No | Controls the fade-out time in seconds when a note is silenced by a new note. When greater than 0, this overrides `silencingMode`. For example, `0.05` produces a 50ms fade-out. `groupIndex` or `position` contains the 0-based index of the group. | | Silencing Mode | `general` | `instrument` or `group` | `SILENCING_MODE` | `fast`, `normal` | No | Controls how a playing note is silenced when a new note triggers silencing. `fast` = immediate cutoff, `normal` = uses the envelope release. Typically used with a `fixed_value` translation. `groupIndex` or `position` contains the 0-based index of the group. | | Pitch Key Track | `general` | `instrument` or `group` | `PITCH_KEY_TRACK` | 0.0 - 1.0 | No | Controls how much the pitch of a sample follows the MIDI note. `1.0` = full pitch tracking (normal behavior), `0.0` = no pitch tracking (sample always plays at its root pitch). `groupIndex` or `position` contains the 0-based index of the group. | | Amplitude Velocity Tracking | `amp` | `instrument` | `AMP_VEL_TRACK` | 0.0 - 1.0 | No | N/A | | Global Amp Envelope Attack | `amp` | `instrument` | `ENV_ATTACK` | 0.0 - 10.0 | No | N/A | | Global Amp Envelope Attack Curve Shape | `amp` | `instrument` | `ENV_ATTACK_CURVE` | -100 - 100 | No | N/A | | Global Amp Envelope Decay | `amp` | `instrument` | `ENV_DECAY` | 0.0 - 25.0 | No | N/A | | Global Amp Envelope Decay Curve Shape | `amp` | `instrument` | `ENV_DECAY_CURVE` | -100 - 100 | No | N/A | | Global Amp Envelope Sustain | `amp` | `instrument` | `ENV_SUSTAIN` | 0.0 - 1.0 | No | N/A | | Global Amp Envelope Release | `amp` | `instrument` | `ENV_RELEASE` | 0.0 - 25.0 | No | N/A | | Global Amp Envelope Release Curve Shape | `amp` | `instrument` | `ENV_RELEASE_CURVE` | -100 - 100 | No | N/A | | Glide/Portamento Time | `amp` | `instrument` | `GLIDE_TIME` | 0.0 - 10.0 | No | N/A | | Group Enabled / Disabled | `amp` | `group` | `ENABLED` | true, false | | `groupIndex` or `position` contains the 0-based index of the group | | Group Amplitude Envelope Enabled / Disabled | `amp` | `group` | `AMP_ENV_ENABLED` | true, false | No | `groupIndex` or `position` contains the 0-based index of the group. When `false`, samples play as one-shots (no ADSR). | | Group Volume | `amp` | `group` | `AMP_VOLUME` | 0.0 - 16.0 | Yes | `groupIndex` or `position` contains the 0-based index of the group | | Group Tuning | `amp` | `group` | `GROUP_TUNING` | -36.0 - 36.0 | Yes | `groupIndex` or `position` contains the 0-based index of the group | | Pan | `amp` | `group` | `PAN` | -100 - 100 | Yes | `groupIndex` or `position` contains the 0-based index of the group | | Amplitude Velocity Tracking | `amp` | `group` | `AMP_VEL_TRACK` | 0.0 - 1.0 | | `groupIndex` or `position` contains the 0-based index of the group | | Group Amp Envelope Attack | `amp` | `group` | `ENV_ATTACK` | 0.0 - 10.0 | | `groupIndex` or `position` contains the 0-based index of the group | | Group Amp Envelope Decay | `amp` | `group` | `ENV_DECAY` | 0.0 - 25.0 | | `groupIndex` or `position` contains the 0-based index of the group | | Group Amp Envelope Sustain | `amp` | `group` | `ENV_SUSTAIN` | 0.0 - 1.0 | | `groupIndex` or `position` contains the 0-based index of the group | | Group Amp Envelope Release | `amp` | `group` | `ENV_RELEASE` | 0.0 - 25.0 | | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 1 Volume | `amp` | `group` | `OUTPUT_1_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 2 Volume | `amp` | `group` | `OUTPUT_2_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 3 Volume | `amp` | `group` | `OUTPUT_3_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 4 Volume | `amp` | `group` | `OUTPUT_4_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 5 Volume | `amp` | `group` | `OUTPUT_5_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 6 Volume | `amp` | `group` | `OUTPUT_6_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 7 Volume | `amp` | `group` | `OUTPUT_7_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 8 Volume | `amp` | `group` | `OUTPUT_8_VOLUME` | 0.0 - 1 | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 1 Target | `amp` | `group` | `OUTPUT_1_TARGET` | Any of the valid values for `output1Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 2 Target | `amp` | `group` | `OUTPUT_2_TARGET` | Any of the valid values for `output2Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 3 Target | `amp` | `group` | `OUTPUT_3_TARGET` | Any of the valid values for `output3Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 4 Target | `amp` | `group` | `OUTPUT_4_TARGET` | Any of the valid values for `output4Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 5 Target | `amp` | `group` | `OUTPUT_5_TARGET` | Any of the valid values for `output5Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 6 Target | `amp` | `group` | `OUTPUT_6_TARGET` | Any of the valid values for `output6Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 7 Target | `amp` | `group` | `OUTPUT_7_TARGET` | Any of the valid values for `output7Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Output 8 Target | `amp` | `group` | `OUTPUT_8_TARGET` | Any of the valid values for `output8Target` | No | `groupIndex` or `position` contains the 0-based index of the group | | Group Glide/Portamento Time | `amp` | `group` | `GLIDE_TIME` | 0.0 - 10.0 | | `groupIndex` or `position` contains the 0-based index of the group | | Oscillator Waveform (group level) | `general` | `group` | `OSCILLATOR_WAVEFORM` | `sine`, `saw`, `square`, `triangle`, `noise`, `white_noise`, `pluck1`, `wavetable`, `harmonic`, `fm6op` | No | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator | | Oscillator Damping (pluck1 only) | `general` | `group` | `OSCILLATOR_DAMPING` | 0.0 - 1.0 | No | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `pluck1`. Controls the decay time of the plucked string. | | Oscillator Pluck Type (pluck1 only) | `general` | `group` | `OSCILLATOR_PLUCK_TYPE` | 0.0 - 1.0 | No | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `pluck1`. Blends between triangle wave excitation (0.0) and noise burst excitation (1.0). | | Oscillator Wavetable Position (wavetable only) | `general` | `group` | `OSCILLATOR_WAVETABLE_POSITION` | 0.0 - 1.0 | No | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `wavetable`. Scans through the frames of the loaded wavetable file. 0.0 = first frame, 1.0 = last frame. Intermediate values crossfade between adjacent frames. Can be driven by an LFO, envelope, MIDI CC, or UI knob. | | Oscillator Wavetable Frame Interpolation (wavetable only) | `general` | `group` | `OSCILLATOR_WAVETABLE_FRAME_INTERPOLATION` | `true`, `false` | No | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `wavetable`. When `true` (default), adjacent frames are linearly crossfaded as the position moves. When `false`, the oscillator snaps to the nearest integer frame — useful for wavetables containing discrete, unrelated shapes where blended intermediates are unwanted. | | Harmonic Oscillator Partial Count (harmonic only) | `general` | `group` | `OSCILLATOR_HARMONIC_NUM_PARTIALS` | 1 - 64 (integer) | Yes | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `harmonic`. Controls how many harmonic partials are active. | | Harmonic Oscillator Tilt (harmonic only) | `general` | `group` | `OSCILLATOR_HARMONIC_TILT` | -1.0 - 1.0 | Yes | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `harmonic`. Positive values darken the spectrum; negative values brighten it. | | Harmonic Oscillator Odd/Even Balance (harmonic only) | `general` | `group` | `OSCILLATOR_HARMONIC_ODD_EVEN_BALANCE` | 0.0 - 1.0 | Yes | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `harmonic`. 0.0 emphasizes odd harmonics, 1.0 emphasizes even harmonics, 0.5 is balanced. | | Harmonic Oscillator Normalization (harmonic only) | `general` | `group` | `OSCILLATOR_HARMONIC_NORMALIZATION` | 0.0 - 1.0 | Yes | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `harmonic`. Blends between no gain compensation and full harmonic-sum normalization. | | Harmonic Oscillator Partial Levels (harmonic only) | `general` | `group` | `OSCILLATOR_HARMONIC_PARTIAL_1_LEVEL` … `OSCILLATOR_HARMONIC_PARTIAL_64_LEVEL` | 0.0 - 1.0 | Yes | `groupIndex` or `position` contains the 0-based index of the group containing the oscillator. Only applies when waveform is `harmonic`. Each parameter controls the level of one partial. | | FM6 Algorithm (fm6op only) | `general` | `group` | `OSCILLATOR_FM_ALGORITHM` | 1 - 32 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. Selects one of the 32 DX7-compatible algorithm topologies. | | FM6 Operator 1 Level (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_LEVEL` | 0.0 - 1.0 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. Controls the output/modulation level of FM operator 1. | | FM6 Operator 2 Level (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_LEVEL` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_LEVEL` but for operator 2. | | FM6 Operator 3 Level (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_LEVEL` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_LEVEL` but for operator 3. | | FM6 Operator 4 Level (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_LEVEL` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_LEVEL` but for operator 4. | | FM6 Operator 5 Level (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_LEVEL` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_LEVEL` but for operator 5. | | FM6 Operator 6 Level (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_LEVEL` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_LEVEL` but for operator 6. | | FM6 Operator 1 Ratio (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_RATIO` | Any positive decimal | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. Controls the frequency ratio of operator 1 relative to the played note. | | FM6 Operator 2 Ratio (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_RATIO` | Any positive decimal | No | Same as `OSCILLATOR_FM_OP1_RATIO` but for operator 2. | | FM6 Operator 3 Ratio (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_RATIO` | Any positive decimal | No | Same as `OSCILLATOR_FM_OP1_RATIO` but for operator 3. | | FM6 Operator 4 Ratio (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_RATIO` | Any positive decimal | No | Same as `OSCILLATOR_FM_OP1_RATIO` but for operator 4. | | FM6 Operator 5 Ratio (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_RATIO` | Any positive decimal | No | Same as `OSCILLATOR_FM_OP1_RATIO` but for operator 5. | | FM6 Operator 6 Ratio (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_RATIO` | Any positive decimal | No | Same as `OSCILLATOR_FM_OP1_RATIO` but for operator 6. | | FM6 Operator 1 Feedback (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_FEEDBACK` | 0.0 - 1.0 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. Controls operator 1 self-feedback. Note: only the feedback operator designated by the active algorithm produces audible effect. | | FM6 Operator 2 Feedback (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_FEEDBACK` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_FEEDBACK` but for operator 2. | | FM6 Operator 3 Feedback (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_FEEDBACK` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_FEEDBACK` but for operator 3. | | FM6 Operator 4 Feedback (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_FEEDBACK` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_FEEDBACK` but for operator 4. | | FM6 Operator 5 Feedback (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_FEEDBACK` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_FEEDBACK` but for operator 5. | | FM6 Operator 6 Feedback (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_FEEDBACK` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_FEEDBACK` but for operator 6. `OSCILLATOR_FM_OP6_FEEDBACK` is the primary feedback parameter — it has an audible effect in all 32 algorithms. | | FM6 Operator 1 Detune (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_DETUNE` | -7 to +7 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. DX7-compatible pitch detune for operator 1. Useful for chorus-like effects and bell timbres. | | FM6 Operator 2 Detune (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_DETUNE` | -7 to +7 | No | Same as `OSCILLATOR_FM_OP1_DETUNE` but for operator 2. | | FM6 Operator 3 Detune (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_DETUNE` | -7 to +7 | No | Same as `OSCILLATOR_FM_OP1_DETUNE` but for operator 3. | | FM6 Operator 4 Detune (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_DETUNE` | -7 to +7 | No | Same as `OSCILLATOR_FM_OP1_DETUNE` but for operator 4. | | FM6 Operator 5 Detune (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_DETUNE` | -7 to +7 | No | Same as `OSCILLATOR_FM_OP1_DETUNE` but for operator 5. | | FM6 Operator 6 Detune (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_DETUNE` | -7 to +7 | No | Same as `OSCILLATOR_FM_OP1_DETUNE` but for operator 6. | | FM6 Operator 1 Mode (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_MODE` | `ratio`, `fixed` | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. Controls whether operator 1 uses frequency ratio (default) or fixed Hz frequency mode. | | FM6 Operator 2 Mode (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_MODE` | `ratio`, `fixed` | No | Same as `OSCILLATOR_FM_OP1_MODE` but for operator 2. | | FM6 Operator 3 Mode (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_MODE` | `ratio`, `fixed` | No | Same as `OSCILLATOR_FM_OP1_MODE` but for operator 3. | | FM6 Operator 4 Mode (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_MODE` | `ratio`, `fixed` | No | Same as `OSCILLATOR_FM_OP1_MODE` but for operator 4. | | FM6 Operator 5 Mode (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_MODE` | `ratio`, `fixed` | No | Same as `OSCILLATOR_FM_OP1_MODE` but for operator 5. | | FM6 Operator 6 Mode (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_MODE` | `ratio`, `fixed` | No | Same as `OSCILLATOR_FM_OP1_MODE` but for operator 6. | | FM6 Operator 1 Fixed Frequency (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_FIXED_FREQ` | Any positive decimal (Hz) | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator mode is `fixed`. Specifies the fixed frequency in Hz for operator 1. Useful for metallic and bell timbres. | | FM6 Operator 2 Fixed Frequency (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_FIXED_FREQ` | Any positive decimal (Hz) | No | Same as `OSCILLATOR_FM_OP1_FIXED_FREQ` but for operator 2. | | FM6 Operator 3 Fixed Frequency (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_FIXED_FREQ` | Any positive decimal (Hz) | No | Same as `OSCILLATOR_FM_OP1_FIXED_FREQ` but for operator 3. | | FM6 Operator 4 Fixed Frequency (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_FIXED_FREQ` | Any positive decimal (Hz) | No | Same as `OSCILLATOR_FM_OP1_FIXED_FREQ` but for operator 4. | | FM6 Operator 5 Fixed Frequency (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_FIXED_FREQ` | Any positive decimal (Hz) | No | Same as `OSCILLATOR_FM_OP1_FIXED_FREQ` but for operator 5. | | FM6 Operator 6 Fixed Frequency (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_FIXED_FREQ` | Any positive decimal (Hz) | No | Same as `OSCILLATOR_FM_OP1_FIXED_FREQ` but for operator 6. | | FM6 Operator 1 Velocity Sensitivity (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_VELOCITY_SENSITIVITY` | 0 - 7 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. DX7-compatible velocity sensitivity curve for operator 1. 0=no velocity response, 7=maximum response. | | FM6 Operator 2 Velocity Sensitivity (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_VELOCITY_SENSITIVITY` | 0 - 7 | No | Same as `OSCILLATOR_FM_OP1_VELOCITY_SENSITIVITY` but for operator 2. | | FM6 Operator 3 Velocity Sensitivity (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_VELOCITY_SENSITIVITY` | 0 - 7 | No | Same as `OSCILLATOR_FM_OP1_VELOCITY_SENSITIVITY` but for operator 3. | | FM6 Operator 4 Velocity Sensitivity (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_VELOCITY_SENSITIVITY` | 0 - 7 | No | Same as `OSCILLATOR_FM_OP1_VELOCITY_SENSITIVITY` but for operator 4. | | FM6 Operator 5 Velocity Sensitivity (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_VELOCITY_SENSITIVITY` | 0 - 7 | No | Same as `OSCILLATOR_FM_OP1_VELOCITY_SENSITIVITY` but for operator 5. | | FM6 Operator 6 Velocity Sensitivity (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_VELOCITY_SENSITIVITY` | 0 - 7 | No | Same as `OSCILLATOR_FM_OP1_VELOCITY_SENSITIVITY` but for operator 6. | | FM6 Operator 1 Attack (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_ATTACK` | 0.0 - 45.0 (seconds) | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator EG type is `adsr`. ADSR envelope attack time for operator 1. | | FM6 Operator 2 Attack (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_ATTACK` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_ATTACK` but for operator 2. | | FM6 Operator 3 Attack (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_ATTACK` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_ATTACK` but for operator 3. | | FM6 Operator 4 Attack (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_ATTACK` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_ATTACK` but for operator 4. | | FM6 Operator 5 Attack (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_ATTACK` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_ATTACK` but for operator 5. | | FM6 Operator 6 Attack (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_ATTACK` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_ATTACK` but for operator 6. | | FM6 Operator 1 Decay (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_DECAY` | 0.0 - 45.0 (seconds) | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator EG type is `adsr`. ADSR envelope decay time for operator 1. | | FM6 Operator 2 Decay (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_DECAY` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_DECAY` but for operator 2. | | FM6 Operator 3 Decay (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_DECAY` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_DECAY` but for operator 3. | | FM6 Operator 4 Decay (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_DECAY` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_DECAY` but for operator 4. | | FM6 Operator 5 Decay (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_DECAY` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_DECAY` but for operator 5. | | FM6 Operator 6 Decay (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_DECAY` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_DECAY` but for operator 6. | | FM6 Operator 1 Sustain (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_SUSTAIN` | 0.0 - 1.0 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator EG type is `adsr`. ADSR envelope sustain level for operator 1. | | FM6 Operator 2 Sustain (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_SUSTAIN` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_SUSTAIN` but for operator 2. | | FM6 Operator 3 Sustain (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_SUSTAIN` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_SUSTAIN` but for operator 3. | | FM6 Operator 4 Sustain (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_SUSTAIN` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_SUSTAIN` but for operator 4. | | FM6 Operator 5 Sustain (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_SUSTAIN` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_SUSTAIN` but for operator 5. | | FM6 Operator 6 Sustain (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_SUSTAIN` | 0.0 - 1.0 | No | Same as `OSCILLATOR_FM_OP1_SUSTAIN` but for operator 6. | | FM6 Operator 1 Release (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_RELEASE` | 0.0 - 45.0 (seconds) | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator EG type is `adsr`. ADSR envelope release time for operator 1. | | FM6 Operator 2 Release (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_RELEASE` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_RELEASE` but for operator 2. | | FM6 Operator 3 Release (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_RELEASE` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_RELEASE` but for operator 3. | | FM6 Operator 4 Release (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_RELEASE` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_RELEASE` but for operator 4. | | FM6 Operator 5 Release (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_RELEASE` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_RELEASE` but for operator 5. | | FM6 Operator 6 Release (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_RELEASE` | 0.0 - 45.0 (seconds) | No | Same as `OSCILLATOR_FM_OP1_RELEASE` but for operator 6. | | FM6 Operator 1 EG Type (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_TYPE` | `adsr`, `dx7` | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op`. Selects envelope type for operator 1: `adsr` (standard ADSR) or `dx7` (DX7-style 4-stage envelope). | | FM6 Operator 2 EG Type (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_TYPE` | `adsr`, `dx7` | No | Same as `OSCILLATOR_FM_OP1_EG_TYPE` but for operator 2. | | FM6 Operator 3 EG Type (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_TYPE` | `adsr`, `dx7` | No | Same as `OSCILLATOR_FM_OP1_EG_TYPE` but for operator 3. | | FM6 Operator 4 EG Type (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_TYPE` | `adsr`, `dx7` | No | Same as `OSCILLATOR_FM_OP1_EG_TYPE` but for operator 4. | | FM6 Operator 5 EG Type (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_TYPE` | `adsr`, `dx7` | No | Same as `OSCILLATOR_FM_OP1_EG_TYPE` but for operator 5. | | FM6 Operator 6 EG Type (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_TYPE` | `adsr`, `dx7` | No | Same as `OSCILLATOR_FM_OP1_EG_TYPE` but for operator 6. | | FM6 Operator 1 EG Rate 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_RATE1` | 0 - 99 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator EG type is `dx7`. DX7 envelope rate 1 for operator 1. | | FM6 Operator 1 EG Rate 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_RATE2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for rate 2. | | FM6 Operator 1 EG Rate 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_RATE3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for rate 3. | | FM6 Operator 1 EG Rate 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_RATE4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for rate 4. | | FM6 Operator 2 EG Rate 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_RATE1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for operator 2. | | FM6 Operator 2 EG Rate 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_RATE2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE2` but for operator 2. | | FM6 Operator 2 EG Rate 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_RATE3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE3` but for operator 2. | | FM6 Operator 2 EG Rate 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_RATE4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE4` but for operator 2. | | FM6 Operator 3 EG Rate 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_RATE1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for operator 3. | | FM6 Operator 3 EG Rate 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_RATE2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE2` but for operator 3. | | FM6 Operator 3 EG Rate 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_RATE3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE3` but for operator 3. | | FM6 Operator 3 EG Rate 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_RATE4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE4` but for operator 3. | | FM6 Operator 4 EG Rate 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_RATE1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for operator 4. | | FM6 Operator 4 EG Rate 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_RATE2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE2` but for operator 4. | | FM6 Operator 4 EG Rate 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_RATE3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE3` but for operator 4. | | FM6 Operator 4 EG Rate 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_RATE4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE4` but for operator 4. | | FM6 Operator 5 EG Rate 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_RATE1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for operator 5. | | FM6 Operator 5 EG Rate 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_RATE2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE2` but for operator 5. | | FM6 Operator 5 EG Rate 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_RATE3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE3` but for operator 5. | | FM6 Operator 5 EG Rate 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_RATE4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE4` but for operator 5. | | FM6 Operator 6 EG Rate 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_RATE1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE1` but for operator 6. | | FM6 Operator 6 EG Rate 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_RATE2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE2` but for operator 6. | | FM6 Operator 6 EG Rate 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_RATE3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE3` but for operator 6. | | FM6 Operator 6 EG Rate 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_RATE4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_RATE4` but for operator 6. | | FM6 Operator 1 EG Level 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_LEVEL1` | 0 - 99 | No | `groupIndex` or `position` contains the 0-based index of the group. Only applies when waveform is `fm6op` and operator EG type is `dx7`. DX7 envelope level 1 for operator 1. | | FM6 Operator 1 EG Level 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_LEVEL2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for level 2. | | FM6 Operator 1 EG Level 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_LEVEL3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for level 3. | | FM6 Operator 1 EG Level 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP1_EG_LEVEL4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for level 4. | | FM6 Operator 2 EG Level 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_LEVEL1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for operator 2. | | FM6 Operator 2 EG Level 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_LEVEL2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL2` but for operator 2. | | FM6 Operator 2 EG Level 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_LEVEL3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL3` but for operator 2. | | FM6 Operator 2 EG Level 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP2_EG_LEVEL4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL4` but for operator 2. | | FM6 Operator 3 EG Level 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_LEVEL1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for operator 3. | | FM6 Operator 3 EG Level 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_LEVEL2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL2` but for operator 3. | | FM6 Operator 3 EG Level 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_LEVEL3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL3` but for operator 3. | | FM6 Operator 3 EG Level 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP3_EG_LEVEL4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL4` but for operator 3. | | FM6 Operator 4 EG Level 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_LEVEL1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for operator 4. | | FM6 Operator 4 EG Level 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_LEVEL2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL2` but for operator 4. | | FM6 Operator 4 EG Level 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_LEVEL3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL3` but for operator 4. | | FM6 Operator 4 EG Level 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP4_EG_LEVEL4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL4` but for operator 4. | | FM6 Operator 5 EG Level 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_LEVEL1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for operator 5. | | FM6 Operator 5 EG Level 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_LEVEL2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL2` but for operator 5. | | FM6 Operator 5 EG Level 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_LEVEL3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL3` but for operator 5. | | FM6 Operator 5 EG Level 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP5_EG_LEVEL4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL4` but for operator 5. | | FM6 Operator 6 EG Level 1 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_LEVEL1` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL1` but for operator 6. | | FM6 Operator 6 EG Level 2 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_LEVEL2` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL2` but for operator 6. | | FM6 Operator 6 EG Level 3 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_LEVEL3` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL3` but for operator 6. | | FM6 Operator 6 EG Level 4 (fm6op only) | `general` | `group` | `OSCILLATOR_FM_OP6_EG_LEVEL4` | 0 - 99 | No | Same as `OSCILLATOR_FM_OP1_EG_LEVEL4` but for operator 6. | | Tag Enabled | `amp` | `tag` | `TAG_ENABLED` | true, false | | `identifier` contains the tag name | | Tag Volume | `amp` | `tag` | `TAG_VOLUME` | 0.0 - 16.0 | | `identifier` contains the tag name | | Tag Polyphony | `general` | `tag` | `TAG_POLYPHONY` | Any whole number (1 for mono, >1 for poly) | | `identifier` contains the tag name. Useful for creating mono/poly switches. | | MIDI CC Binding Enabled | `cc_binding` | `midi` | `ENABLED` | `true` or `false` | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Mapping Enabled | `note` | `midi` | `ENABLED` | Any number | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) | | MIDI Note Binding Enabled | `note_binding` | `midi` | `ENABLED` | Any number | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Binding Change `seqIndex` | `note_binding` | `midi` | `SEQ_INDEX` | Any whole number | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Binding Change `seqLoopMode` | `note_binding` | `midi` | `SEQ_LOOP_MODE` | `forward`, `reverse`, `random`, `random_no_repeat`, `no_loop` | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Binding Change `seqTransposeWithRootNote` | `note_binding` | `midi` | `SEQ_TRANSPOSE_WITH_ROOT_NOTE` | 0 - 128 | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Binding Change `seqPlaybackRate` | `note_binding` | `midi` | `SEQ_PLAYBACK_RATE` | 0.001 - 10000 | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Binding Change `seqTrackMidiInputVelocity` | `note_binding` | `midi` | `SEQ_TRACK_MIDI_INPUT_VELOCITY` | 0.0 - 1.0 | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Note Binding Change `seqTranspose` | `note_binding` | `midi` | `SEQ_TRANSPOSE` | -36 - 36 | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | MIDI Velocity Binding Enabled | `velocity_binding` | `midi` | `ENABLED` | `true` or `false` | | `midiElementIndex` that contains the 0-based index of the note handler within the `` element (this used to be called ``) and `bindingIndex` that contains the index of the binding being referenced. | | Modulator Amount (Depth) | `modulator` | `instrument` | `MOD_AMOUNT` | 0.0 - 1.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | LFO Modulator Rate (or Frequency) | `modulator` | `instrument` | `FREQUENCY` | 0.0 - 22000.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | LFO Modulator Delay Time | `modulator` | `instrument` | `MOD_DELAY_TIME` | 0.0 - 10000.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Attack | `modulator` | `instrument` | `ENV_ATTACK` | 0.0 - 10.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Attack Curve Shape | `modulator` | `instrument` | `ENV_ATTACK_CURVE` | -100 - 100 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Decay | `modulator` | `instrument` | `ENV_DECAY` | 0.0 - 25.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Decay Curve Shape | `modulator` | `instrument` | `ENV_DECAY_CURVE` | -100 - 100 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Sustain | `modulator` | `instrument` | `ENV_SUSTAIN` | 0.0 - 1.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Release | `modulator` | `instrument` | `ENV_RELEASE` | 0.0 - 25.0 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Envelope Modulator Release Curve Shape | `modulator` | `instrument` | `ENV_RELEASE_CURVE` | -100 - 100 | | `modulatorIndex` or `modulatorTags` identifies the target modulator(s) | | Sequence Rate | `note_sequence` | `instrument` | `RATE` | 0.01 - 100 | | `seqIndex` contains the 0-based index of the note sequence in question | | All Notes Off | `general` | `instrument` | `ALL_NOTES_OFF` | true | | | ### UI Parameters NOTE: The table below scrolls to the right. | Description | `type` | `level` | `parameter` | Valid Range | Modulatable | Additional required parameters | |:-----------------------------------------------------|:-----------------------|:------------------------|:--------------------------------|:--------------------------------------------------------------|:------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | UI Background Image Path | `general` | `ui` | `BG_IMAGE` | Text | | | | UI Button State Binding Enabled | `button_state_binding` | `ui` | `ENABLED` | true, false | | `tags` or `controlIndex` contains the 0-based index of the control in question (see note 1 below), `stateIndex` contains the 0-based index of the state in question, and `bindingIndex` that contains the index of the binding being referenced. | | UI Control Enabled | `control` | `ui` | `ENABLED` | true, false | | `tags` or `controlIndex`/`position` contains the 0-based index of the control in question (see note 1 below) | | UI Control Visible | `control` | `ui` | `VISIBLE` | true, false | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | UI Control Value | `control` | `ui` | `VALUE` | Any number | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | UI Control Text | `control` | `ui` | `TEXT` | Text | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | UI Control Minimum Value | `control` | `ui` | `MIN_VALUE` | Any number | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | UI Control Maximum Value | `control` | `ui` | `MAX_VALUE` | Any number | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | UI Control Value Type | `control` | `ui` | `VALUE_TYPE` | float, integer, musical_time | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | Image or Animation File Path | `control` | `ui` | `PATH` | Text | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | Image or Animation Opacity | `control` | `ui` | `OPACITY` | 0.0 - 1.0 | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | UI Keyboard Coloring Enable / Disable | `keyboard_color` | `ui`. | `ENABLED` | true, false | | `colorIndex` that contains the 0-based index of the color element within the `` element | | UI Keyboard Coloring Low Note | `keyboard_color` | `ui` | `LO_NOTE` | 0 - 127 | No | `colorIndex` that contains the 0-based index of the color element within the `` element | | UI Keyboard Coloring High Note | `keyboard_color` | `ui` | `HI_NOTE` | 0 - 127 | No | `colorIndex` that contains the 0-based index of the color element within the `` element | | Animation Frame Rate | `control` | `ui` | `FRAME_RATE` | 0 - 24 | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | Animation Current Frame | `control` | `ui` | `CURRENT_FRAME` | Any number | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | Animation Playback Mode | `control` | `ui` | `PLAYBACK_MODE` | Valid values: `forward_loop`, `forward_once`, `reverse_loop`, `reverse_once`, `ping_pong_loop` (forth and back), and `stopped`. Default value is `forward_loop`. | | `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | X-Y Pad X Value | `control` | `ui` | `X_VALUE` | 0.0 - 1.0 | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | X-Y Pad Y Value | `control` | `ui` | `Y_VALUE` | 0.0 - 1.0 | | `tags` or `controlIndex` or `position` contains the 0-based index of the control in question (see note 1 below) | | Rectangle X Position | `control` | `ui` | `X` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the rectangle control in question (see note 1 below) | | Rectangle Y Position | `control` | `ui` | `Y` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the rectangle control in question (see note 1 below) | | Rectangle Width | `control` | `ui` | `WIDTH` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the rectangle control in question (see note 1 below) | | Rectangle Height | `control` | `ui` | `HEIGHT` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the rectangle control in question (see note 1 below) | | Line X1 Position | `control` | `ui` | `X1` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the line control in question (see note 1 below) | | Line Y1 Position | `control` | `ui` | `Y1` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the line control in question (see note 1 below) | | Line X2 Position | `control` | `ui` | `X2` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the line control in question (see note 1 below) | | Line Y2 Position | `control` | `ui` | `Y2` | Any number (pixels) | | `tags` or `controlIndex` or `position` contains the 0-based index of the line control in question (see note 1 below) | 1. NOTE: The indexes of the controls within the UI also include UI controls that are not editable, such as `