Skip to content

Channel Parameters

These are the parameters that affect the single MIDI channel.

Tip

Consider reading about kinds of parameters to understand the difference between them.

System

Channel System Parameters are parameters that can only be changed via the API, and not via MIDI messages.

An object called DEFAULT_CHANNEL_SYSTEM_PARAMETERS is provided with the library, containing the defaults.

presetLock

boolean

If the preset is locked, preventing any program changes from being sent.

isMuted

boolean

If the channel should not produce any sound and ignore incoming Note On messages.

gain

number

The gain for the channel. From 0 to any number. 1 is 100% volume.

pan

number

The panning of the channel. -1 (left) to 1 (right). 0 is center.

keyShift

number

The channel key shift in semitones. Drum channels DO NOT ignore this value.

Tip

Avoid setting this for drum channels as it may break the drum key mapping.

fineTune

number

The channel tuning in cents. Drum channels DO NOT ignore this value.

Tip

While the range of this parameter is unlimited, it is recommended to keep it in the range of -100 to 100 cents. The values above that should be applied to keyShift instead. For example, if the target value is 156, the recommended approach is: - keyShift = 1 - fineTune = 56 Note that this approach shouldn't be taken for drum channels, as key shift will break them.

interpolationType

InterpolationType?/number? (an enum called InterpolationTypes is provided with the library)

The interpolation type used for sample playback. The interpolation types defined are:

  • 0 - linear interpolation - fast, medium quality
  • 1 - nearest neighbor interpolation - fastest, but lowest quality (it may be desirable in some cases to make the sound "crispier")
  • 2 - Hermite interpolation - slow, high quality (default)

Overrides the global parameter if set.

nrpnParamLock

boolean?

If the channel should prevent changing any parameters via NRPN.

Overrides the global parameter if set.

monophonicRetrigger

boolean?

Indicates whether the channel is in monophonic retrigger mode. This emulates the behavior of Microsoft GS Wavetable Synth, Where a new note will kill the previous one if it is still playing.

Overrides the global parameter if set.

MIDI

Channel MIDI Parameters are parameters that can only be changed via MIDI messages, and not via the API. They get reset via MIDI reset messages, can be locked and have an associated event.

An object called DEFAULT_CHANNEL_MIDI_PARAMETERS is provided with the library, containing the defaults.

pressure

number

The current pressure (aftertouch) of this channel.

pitchWheel

number

The current pitch wheel value (0-16,383) of this channel.

pitchWheelRange

number

The current pitch wheel range, in semitones.

modulationDepth

number

The modulation depth in cents. This is internally converted to a multiplier by dividing by 50.

The MIDI specification assumes the default modulation depth is 50 cents, but it may vary for different sound banks. For example, if a MIDI requests a modulation depth of 100 cents, the multiplier will be 2, which, for a preset with a depth of 50, will create a total modulation depth of 100 cents.

rxChannel

number

The channel's receiving number (0-based index). This allows triggering multiple parts (channels) with a single note message, effectively making multiple channels act as one.

Note

The DEFAULT_CHANNEL_MIDI_PARAMETERS reports the default as 0, but it is initialized with the corresponding channel's number.

polyMode

boolean

If the channel is in the poly mode.

  • true - POLY ON - regular playback.
  • false - MONO ON - one note per channel, others are killed on Note On.

keyShift

number

The channel key shift in semitones. Drum channels ignore this value.

fineTune

number

The channel tuning in cents. Drum channels ignore this value.

randomPan

boolean

Enables random panning for every note played on this channel.

assignMode

number

Assign mode for the channel:

  • 0 - A new note will kill the previous one if it is still playing.
  • Any other value - A new note will not kill the previous notes (default).

While GS and XG differentiate 1 (Limited Multi for GS/Multi for XG) and 2 (Full Multi for GS/Inst (for Drum)), SpessaSynth treats them both as full Multi. (no note killing is performed)

This may be useful for emulating SC-55 hi-hat cutoff or MSGS note cutoff.

Refer to SC-8850 Owner's Manual, page 238 for more description. Note that SAME NOTE NUMBER KEY ON ASSIGN in XG is also recognized as assign mode.

efxAssign

boolean

Indicates whether this channel uses the insertion EFX processor.

cc1

MIDIController

CC1 for GS controller matrix. An arbitrary MIDI controller, which can be bound to any synthesis parameter. Default is 16.

cc2

MIDIController

CC2 for GS controller matrix. An arbitrary MIDI controller, which can be bound to any synthesis parameter. Default is 17.

drumMap

number

Drum map for GS system exclusive tracking. Only used for selecting the correct channel when setting drum parameters through sysEx, as those don't specify the channel, but the drum number.

The only values that are allowed are 0 (melodic) 1 or 2.

velocitySenseDepth

number

The relation between the input and the actual velocity.

If Velo Depth is increased, small differences in your playing dynamics will make a large difference in the loudness of the sound. If Velo Depth is decreased, even large differences in your playing dynamics will make only a small difference in the loudness of the sound.

Examples (with offset being set to normal):

  • 64 is normal.
  • 32 is half velocity at max volume.
  • 127 is max velocity at half volume.

Refer to SC-8850 Owner's Manual, page 56.

velocitySenseOffset

number

The offset to add to the input velocity.

If Velo Offset is set higher than 64, even softly played notes (i.e., notes with a low velocity) will be sounded loudly. If Velo Offset is set lower than 64, even strongly played notes (i.e., notes with a high velocity) will be sounded softly.

Examples (with depth set to normal):

  • 64 is normal.
  • 32 is silent until half velocity, max velocity is half volume.
  • 96 starts at half volume and reaches max volume at half velocity.
  • 127 always forces velocity to max.

Refer to SC-8850 Owner's Manual, page 56.