synthpreset(4) synthpreset(4)
synthpreset - MIDI synthesizer preset file
synthpreset files are ASCII text files containing all the information
necessary to configure a preset in the MIDI synthesizer. This includes
all information about sound sample files, keyboard mapping, detuning,
looping, filtering, modulation, etc.
The current midi synthesizer identifies preset files via a string which
must be used as the first line of the file. Following this is the word
PRESET in all capital letters, on its own line:
#Synth Preset v1.0
PRESET [Toc] [Back]
Following this are lables for the various sections of the preset. Any
line beginning with either a '#' character or a '!' character will be
treated as a comment and ignored by the parser.
HEADER, LABEL, AND VALUE SYNTAX
Synthesizer preset files are structured as a series of nested labels and
values. The header for each section are unquoted character strings
without trailing colons. Some sections may or must contain subsections
which begin (and usually end) with additional labels. The preset
parameter tokens are unquoted character strings with trailing colons.
Examples of each of these can be found below. The parameter values
themselves can take four forms:
Double-precision floating point values [Toc] [Back]
Examples: 23.0045, -0.0001, 99.0
Integer values [Toc] [Back]
Examples: 0, -16, 44100
Quoted string values [Toc] [Back]
Examples: "/disk2/sounds/violin_lowG.aifc", "None", "MultipleReset"
Boolean values [Toc] [Back]
These are a special subset of the quoted string values. Boolean
values are only used to set a parameter to True or False, and the
appropriate quoted strings are "True" and "False".
In addition, a small number of parameters take no value whatsoever.
These tokens are not followed by a colon. An example of such a parameter
is VoiceExclusiveNoEvenValues, which indicates that the voice exclusion
range specified does not include the even-numbered keys.
Page 1
synthpreset(4) synthpreset(4)
CONTROL SOURCE AND MODULATION DEPTH PARAMETERS
One class of parameters merits special attention: the parameters which
specify the source for some form of parameter modulation, such as
oscillator frequency modulation (vibrato). These all the the form
XXXXModulationSource:, or in older files, XXXXControlSource:, where XXXX
represents the parameter being modulated. The parameter value will
always be a quoted string. The complete set of these source parameters
divides into three catagories: synthesis modules, channel voice
parameters, and MIDI controllers. The breakdown is as follows:
Module Sources [Toc] [Back]
"None"
"Envelope1"
"Envelope2"
"Envelope3"
"Envelope4"
"Oscillator1"
"Oscillator2"
"Oscillator3"
"Oscillator4"
Channel Voice Parameters [Toc] [Back]
"NoteOffVelocity"
"NoteOnVelocity"
"PolyKeyPressure"
"ChannelPressure"
"PitchBendChange"
"KeyPosition"
MIDI Controller Parameters [Toc] [Back]
"BankSelect"
"ModulationWheel"
"BreathController"
"FootController"
"PortamentoTime"
"DataEntry"
"ChannelVolume"
"Balance"
"Pan"
"ExpressionController"
"EffectControl1" through "EffectControl12"
"GeneralPurpose1" through "GeneralPurpose8"
"DamperPedal"
"Portamento"
"Sostenuto"
"SoftPedal"
"LegatoFootSwitch"
"Hold2"
"SoundController1" through "SoundController10"
"Effects1Depth" through "Effects5Depth"
The depth of the modulation from any of these sources is set via a
Page 2
synthpreset(4) synthpreset(4)
parameter XXXXModulationDepth: (or XXXXControlDepth:), where XXXX is the
same prefix as used in the ModulationSource parameter. The depth
parameter for each source must follow the parameter for the source itself
with no intervening parameters. The value is always specified as a
double-precision floating point. The initial levels of the Channel Voice
and MIDI Controller sources are floating point values scaled to the range
[0.0 - 1.0], or in the case of symmetrical parameters such as Pan, [-1.0
- 1.0].
Each parameter which accepts some form of modulation input may have up to
five modulation sources. The total modulation will be equal to the sum
of these five after each has been scaled by its ModulationDepth.
Note that a few of these modulation sources are static for the duration
of a voice, and the remainder are dynamic. For example, "NoteOnVelocity"
is fixed at voice initialization time, as is "KeyPosition". Some
modulation inputs only respond to static sources.
Several terms will be used in the parameter descriptions below.
Split [Toc] [Back]
A single sound sample as it is used within a preset oscillator,
including its keyboard mapping range, base pitch information, and
velocity mapping information. Most MIDI "instruments" are made up
of several splits which fill up the available keyboard space for
that instrument's total range.
Sustain Segment [Toc] [Back]
The portion of a sound sample which is played during the time that a
key is held down on the MIDI keyboard. This may or may not include
a Loop.
Release Segment [Toc] [Back]
The portion of a sound sample which is played after the triggering
MIDI keyboard key has been released. This may or may not include a
Loop.
Sample Loop [Toc] [Back]
The portion of the sound sample which will be repeated over and over
to allow the sound to sustain for as long as a key is held down, or
to allow the sound to fade for as long as the release time
indicates. Currently, only two loops are supported, one for the
sustain segment and one for the release segment. Envelopes may also
be looped. See the Envelope section for details.
PRESET SECTIONS AND PARAMETERS
The following is a list of the section headers, followed by the
parameters which may be used in each section, followed by the default
value in brackets. Note that many of the parameters, such as Gain:,
appear in many different sections. Parameters in higher levels (such as
Oscillator) modify the values in the lower levels (such as Sample). In
Page 3
synthpreset(4) synthpreset(4)
this way, a parameter may be set at the higher level when there is no
need to differentiate them at a lower level. Parameters listed after one
another without intervening text are equivalent, i.e., either form can be
used in the preset file.
This section contains strings such as the preset's name and author, and
in the future may include comments, creation date, etc.
PresetName:
The name of the preset, such as "Muted Trumpet". ["Default"]
Author:
The name of the person, as a quoted string, who created the preset
file. [""]
The General section contains preset parameters such as VoiceMode and
VelocityCurve, which modify the preset as a whole.
Gain:
The overall volume for this preset relative to other presets. [1.0]
PitchBendRange:
The maximum interval, in semitones, which the pitch bend wheel can
transpose a voice when the wheel is at maximum excursion. The
interval will be symmetrical about zero. [2.0]
PitchBendQuantizeValue:
The increment, in semitones, into which the pitch bend should be
quantized. For example, a value of 0.1 would cause the pitch bend
to jump in 1/10 semitone increments. [0.0]
VoicePanMode:
The type of panning desired for each voice. The options are:
"Center"
No panning, no response to MIDI pan messages.
"Constant"
Pan value set in preset, no response to MIDI.
"MIDI"
The default. Panning set via MIDI pan messages.
"ConstantSwap"
Alternating channels, value set in preset.
Page 4
synthpreset(4) synthpreset(4)
"MIDISwap"
Alternating channels, value set via MIDI pan.
VoicePanCurve:
The type of curve used to determine the relative amplitude of the
left and right channels during a pan. The options are:
"LinearPower"
The volume for the right channel will be set to (1 - left).
"ConstantPower"
The default. Relative levels of the two channels are determined
based on power, not amplitude. The result is a more consistant
apparent volume as the sound moves from left to right.
PanPositionModulationSource:
PanPositionControlSource:
PanPositionControlSourceX:
Source for modulation of voice's stereo pan position (X dimension).
["None"]
PanPositionControlDepth:
PanPositionControlDepthX:
PanPositionModulationDepth:
PanPositionModulationDepthX:
Depth of above modulation. Maximum pan is +-1.0, so any higher
values are truncated. [0.0]
PanPositionControlSourceY:
Source for modulation of Y dimension (front/back) of a voice's quad
pan position. Only used when preset's OutBus is "Quad1" or "Quad2".
["None"]
PanPositionModulationDepthY:
Depth of above modulation. [0.0]
VoiceExclusiveRangeValueLower:
Lower bound, specified as a MIDI key number, of the exclusive range
for this preset. Any key played which is within the exclusive range
will terminate any other voices sounding in that range. This is
typically used for percussion sounds such as high-hat cymbals. If
both are zero, no exclusive range will be used. [0]
Page 5
synthpreset(4) synthpreset(4)
VoiceExclusiveRangeValueUpper:
Upper bound, specified as a MIDI key number, of the exclusive range
for this preset. [0]
VoiceExclusiveRangeNoteLower:
Lower bound, specified as a MIDI note, such as "A5" or "C#2", for
the exclusive range. [""]
VoiceExclusiveRangeNoteUpper:
Upper bound, specified as a MIDI note, such as "A5" or "C#2", for
the exclusive range. [""]
VoiceMode:
The voice assignment mode. This determines how subsequent voices
are allocated as notes are played on a MIDI channel. The possible
values are:
"Rotate"
Voice pool is cycled; if no available voices, no voice will play.
"RotateSteal"
The default. Voice pool is cycled through, and if none are
available, one will be "stolen" from the active voices.
"Reassign"
Special case; new note will only play if another voice is currently
playing the same pitch, in which case the old voice will be
"reassigned" to the new note event.
"ReassignSteal"
Not currently implemented.
"MonoPriorityLastNote"
Mono mode, most recently played note cuts off all others.
"MonoPriorityLastNoteSteal"
Not implemented. Acts the same as previous.
VoiceLimit:
Specifies the maximum number of simultaneous voices allowed on a
given MIDI channel for this preset. This is extremely useful for
controlling the CPU load for MIDI presets with long sustains, like
Pianos, Harps, and Guitars. [127]
Page 6
synthpreset(4) synthpreset(4)
VelocityCurve:
Specifies the mapping between the keyboard velocity (0 - 127) and
the resulting amplitude. In all cases below, the variable x is the
key velocity scaled to fit between 0.0 and 1.0, and '**' indicates
'to the power of'. The Possible values are:
"Constant"
Key velocity ignored, velocity set to VelocityConstant:.
"Linear"
The default. Amplitude = x
"InverseLinear"
Amplitude = 1.0 - x
"Square"
Amplitude = x ** 2
"InverseSquare"
Amplitude = 1.0 - ((1 - x) ** 2)
"Cube"
Amplitude = x ** 3
"InverseCube"
Amplitude = 1.0 - ((1 - x) ** 3)
"Exponential"
An exponential curve approximated with an averaging of the Square
and the Cube curves.
"InverseExponential"
Exponential curve with opposite concavity; i.e., bulges up rather
than down.
"Logarithmic"
Logarithmic curve with a complex formula. Curve rises more steeply
at first, then levels off gradually.
"InverseLogarithmic"
Logarithmic curve with opposite concavity; i.e., bulges down rather
Page 7
synthpreset(4) synthpreset(4)
than up.
In terms of expressivity, the Constant setting is the least,
followed by Logarithmic, Linear, Square, Exponential, and Cube. The
Inverse settings follow approximately the same sequence.
VelocityConstant:
If VelocityCurve: is set to "Constant", the value will be the
constant. [127]
KeyboardTrackingConstant:
This value determines the pitch interval between successive keys on
the keyboard. A value of 1.0 is default, indicating 1.0 semitone
per key. A value of 2.0 would cause the pitch to go up by 2.0
semitones per key. A value of 0.1 would cause each successive key
to raise the pitch by 1/10th of a semitone, resulting in a 120-
note-per-octave scale. NOTE: The tracking occurs on a per split
basis. Each sample root pitch forms the starting point for a scale.
To achieve a complete keyboard scale in an alternate tuning, the
sample root pitches would need to be adjusted accordingly. [1.0]
Transpose:
An integer value indicating the number of semitones to transpose the
oscillator pitch up or down. Transpose behaves differently from
Tune in that it will interact with the sample keynote mapping
whereas the Tune parameter does not. [0]
SampleSearchPath:
A colon-separated list of directories which should be searched for
samples prior to searching the system default directories. For
example, "/disk/sounds:/tmp/soundfiles". A single directory should
not have a trailing colon. [NULL]
OutBus:
The output assignment for this preset's voices. Midisynth has eight
output busses, which are assigned sequentially to each available
audio port output channel. If midisynth is started in 2-channel
mode (the default), only the first two busses are useful; starting
it in 8-channel mode will allow all eight busses to be used. The
currently supported parameters are:
"Stereo1"
Voices panned across busses (and channels) 1 and 2. The default.
"Stereo2"
Voices panned across busses (and channels) 3 and 4. Only useful in
4- or 8-channel mode.
Page 8
synthpreset(4) synthpreset(4)
"Stereo3"
Voices panned across busses (and channels) 5 and 6. Only useful in
8-channel mode.
"Stereo4"
Voices panned across busses (and channels) 7 and 8. Only useful in
8-channel mode.
"Quad1"
Voices panned across busses 1 through 4. Panning defined as X/Y
values using PanPositionX and PanPositionY for static values, and
PanPositionControlSourceX, PanPositionControlSourceY, etc., for
controllable parameters. Only useful in 4- or 8-channel mode.
"Quad2"
Voices panned across busses 5 through 8. Same rules for panning as
above. Only useful in 8-channel mode.
Parameters for the Nth voice oscillator. Numbering starts with 1, up to
a maximum of 4. Parameters:
Gain:
A fixed gain offset for the oscillator signal. This is generally
used only for oscillators which function as control sources; audio
oscillator gains are adjusted via the GainControlDepth parameter,
below. [0.0]
GateElement:
If this parameter is true, this oscillator will be examined to
determine if a given voice should continue to sound, or if the voice
should be considered "finished" and shut off. If false, the state
of this oscillator will be ignored. ["True"]
Method:
Interpolation:
Specifies the interpolation method to be used to transpose the sound
samples up and down on the keyboard. Possible values are:
"Fixed"
No transposition. Oscillator sounds at root pitch only.
"AddDrop"
The default. Truncated table indexing. This is very useful for
controlling oscillators and sometimes for audio oscillators which
Page 9
synthpreset(4) synthpreset(4)
are playing simple waveforms such as sine waves, but the output
waveform is usually too distorted for audio oscillator use.
"Linear"
Linear interpolative table indexing. This produces the best quality
waveform for audio oscillators. It should not be used for control
oscillators because it takes a larger amount of CPU cycles to
compute.
TuneKeyboardTracking:
Indicates whether this oscillator will track the keyboard, i.e.,
whether its pitch will transpose up and down as different keys are
pressed. This is the default for audio oscillators, but is often
not used for control oscillators. ["True"]
ControlElement:
If "True", indicates that this oscillator is to be used an a control
module, i.e., its output will modulate some other module's
parameters. If "False", then this oscillator will be an audio
oscillator, and its output will be summed in the signal mixer and
added to the voice output. ["False"]
GainControlSource:
GainModulationSource:
Source for modulation of the oscillators's volume. See the section
on CONTROL SOURCE AND MODULATION DEPTH PARAMETERS for details.
["NoteOnVelocity"]
GainControlDepth:
GainModulationDepth:
The depth of the previous modulation source. For most modulating
sources, the resulting gain will be between 0.0 and
GainModulationDepth. [1.0]
TuneControlSource:
TuneModulationSource:
Source for modulation of the oscillators pitch (tuning). See the
section on CONTROL SOURCE AND MODULATION DEPTH PARAMETERS for
details. ["None"]
TuneControlDepth:
TuneModulationDepth:
The depth of the pitch modulation, in semitones. For symmetrical
modulating waveforms, the pitch will rise this number of semitones
above the base pitch, then fall to this number of semitones below
the base pitch. [0.0]
Page 10
synthpreset(4) synthpreset(4)
Oscillator Subsections [Toc] [Back] There are two possible subsections for Oscillator.
An optional subsection of Oscillator; contains parameters for up to 4
sibling oscillator outputs. These are duplicates of the oscillator
waveform with optional detuning and (in the future) gain adjustments.
The final sibling entry must be followed by the subsection termination
lable EndSiblings.
Tune: Tuning factor, in semitones, for this sibling. [0.0]
Phase: Not yet implemented.
SampleSelectMode: Not yet implemented.
A required subsection of Oscillator; contains parameters for each sound
sample which is to be used as part of this voice as expressed through
this oscillator. Any number of Sample listings may be used, but they
must all be listed together and the final entry should be followed by the
subsection termination label EndSamples.
MemoryResident:
Not yet implemented.
ChannelMode:
Not yet implemented.
Direction:
Indicates the direction the sample will be played. Possible values
are:
"Forward"
Default. Sample will be played from beginning to end.
"Backward"
Sample will be played from end to beginning (reversed).
"ForwardAndBackward"
Not yet implemented.
SustainStartTime:
Offset in seconds to the beginning of the sample's sustain segment.
[0.0]
Page 11
synthpreset(4) synthpreset(4)
SustainEndTime:
Offset in seconds to the end of the sample's sustain segment.
[Sample duration].
ReleaseStartTime:
Offset in seconds to the beginning of the sample's release segment.
[0.0]
ReleaseEndTime:
Offset in seconds to the end of the sample's release segment.
[Sample duration]
SustainLoopStartTime:
Offset in seconds to the beginning of the sample's sustain loop.
[0.0]
SustainLoopEndTime:
Offset in seconds to the end of the sustain portion of the sample.
[SustainEndTime].
ReleaseLoopStartTime:
Offset in seconds to the beginning of the sample's release loop.
[0.0]
ReleaseLoopEndTime:
Offset in seconds to the end of the sample's release loop. [Sample
duration]
LoopTune:
Amount in semitones to adjust the sample loops' pitch versus the
unlooped portion. If the sample contains more than one loop, all
will be adjusted. [0.0]
LoopGain:
Not yet implemented.
LoopGaindB:
Not yet implemented.
SustainGain:
Factor to multiply the sample's sustain segment by. [1.0]
SustainGaindB:
Amount in decibels to adjust the sample's sustain segment. [0.0]
SustainTune:
Amount in semitones to adjust the sample's sustain segment versus
the release segment. [0.0]
SustainDirection:
The direction for the sample's sustain segment. See Direction:,
above. ["Forward"]
Page 12
synthpreset(4) synthpreset(4)
ReleaseGain:
Factor to multiply the sample's release segment by. [1.0]
ReleaseGaindB:
Amount in decibels to adjust the sample's release segment. [0.0]
ReleaseTune:
Amount in semitones to adjust the sample's release segment versus
the sustain segment. [0.0]
ReleaseDirection:
The direction for the sample's release segment. See Direction:,
above. ["Forward"]
SustainLoopTune:
Amount in semitones to adjust the sample's sustain loop pitch versus
the unlooped portion(s). [0.0]
SustainLoopGain:
Not yet implemented.
SustainLoopGaindB:
Not yet implemented.
ReleaseLoopTune:
Amount in semitones to adjust the sample's release loop pitch versus
the unlooped portion(s). [0.0]
ReleaseLoopGain:
Not yet implemented.
ReleaseLoopGaindB:
Not yet implemented.
NoteMapValueBase:
Specifies the base (original untransposed) pitch of a sound sample,
in MIDI key number units. [60]
NoteMapValueLower:
Specifies the lower limit of the keyboard range in which this sample
will sound, as a MIDI key number. [1]
NoteMapValueUpper:
Specifies the upper limit of the keyboard range in which this sample
will sound, as a MIDI key number. [127]
NoteMapNoteBase:
NoteMapNotationBase:
Specifies the base (original untransposed) pitch of a sound sample,
as a note name. ["C5"]
Page 13
synthpreset(4) synthpreset(4)
NoteMapNoteLower:
NoteMapNotationLower:
Specifies the lower limit of the keyboard range in which this sample
will sound, as a note name ["C-1"]
NoteMapNoteUpper:
NoteMapNotationUpper:
Specifies the upper limit of the keyboard range in which this sample
will sound, as a note name. ["G9"]
VelocityMapLower:
Specifies the lower limit of the keyboard velocity range for which
this sample will sound. [1]
VelocityMapUpper:
Specifies the upper limit of the keyboard velocity range for which
this sample will sound. [127]
Parameters for the Nth voice filter. Numbering starts with 1 up to a
maximum of 4.
Frequency:
The filter cutoff frequency. This should be specified as a doubleprecision
floating point between 0.0 and 1.0, where 0.0 is
effectively a cutoff of 0.0 Hz., and 1.0 is the maximum cutoff
frequency (set to 1/2 of the current audio sampling rate). [1.0]
Resonance:
The amount of resonance at the cutoff frequency, scaled between 0.0
(no resonance) and 1.0 (maximum resonance). Musically useful values
are between 0.0 and 0.5. Resonance has no affect on first-order
low- and high-pass filters. [0.0]
GaindB:
A gain value, used to compensate for filter settings (such as very
high resonance) which either amplify or attenuate the signal enough
to affect the overall balance. Only implemented for second and
higher order LowPass filters. [0.0]
Mode:
Selects the type of filter to be used. Possible values are:
"LowPass"
Low pass filter.
"HighPass"
High pass filter.
Page 14
synthpreset(4) synthpreset(4)
"BandPass"
Band pass filter.
"BandStop"
Band stop or notch filter.
Order:
Specifies the filter order (number of sections). The more sections,
the steeper the slope of the cutoff point, and the greater the
attenuation (suppression) of frequencies past the cutoff frequency.
Possible values are "1st", "2nd", "4th", and "8th", indicating 1, 2,
4, and 8 sections, respectively. More sections require more CPU
cycles.
SaturationRail:
SaturationRailLower:
SaturationRailUpper:
These three are not yet implemented.
FrequencyControlSource:
FrequencyModulationSource:
Source for modulation of the filter's cutoff frequency. See the
section on CONTROL SOURCE AND MODULATION DEPTH PARAMETERS for
details. ["None"]
FrequencyControlDepth:
FrequencyModulationDepth:
Depth of the previous frequency modulation, as a fraction of the
total frequency range (0.0 - 1.0).
ResonanceControlSource:
ResonanceModulationSource:
Source for modulation of the filter's resonance. See the section on
CONTROL SOURCE AND MODULATION DEPTH PARAMETERS for details.
["None"]
ResonanceControlDepth:
ResonanceModulationDepth:
Depth of the resonance modulation, as a fraction of the total
resonance range (0.0 - 1.0).
Page 15
synthpreset(4) synthpreset(4)
EnvelopeN
Parameters for the Nth envelope generator. Numbering starts with 1, up
to a maximum of 4. Envelopes may have up to 8 segments (8 levels
separated by 7 times). Envelopes may also be looped; the segments
within the specified loop will cycle continuously during the sustain
and/or release portions of the envelope. The complete set of possible
envelope parameters:
LevelCount:
The total number of envelope levels. Value must be between 1 and 8,
inclusive. [4]
Time:
Specify the time required to reach a level, starting with Time1
(time to move from Level0 to Level1). Each subsequent Time: entry
will address a subsequent time, up to Time7. [Time0: 0.0; All
others: 1.0]
TimeN:
Specify the time to go from level (N-1) to level N. N must be
between 1 and 7, and the entries must be in ascending order. The
level count of the envelope will be set to N + 1 for the maximum
(final) value of N found. [Time0: 0.0; All others: 1.0]
DelayTime:
An alternate way to specify the time it takes to go from level0 to
level1. If both of these levels are set to zero, this will function
as an envelope delay. This label cannot be used with AttackTime in
the same envelope section. [0.0]
AttackTime:
An alternate way to specify the time it takes to go from level0 to
level1. This label cannot be used with DelayTime in the same
envelope section. [0.0]
DecayTime:
An alternate way to specify the time it takes to go from level1 (the
attack peak value) to level2 (the sustain level). [1.0]
ReleaseTime:
An alternate way to specify the time it takes to go from level2 (the
sustain level) to level3 (the release level). [1.0]
TimeAttack1:
TimeAttack2:
TimeDecay1:
TimeDecay2:
Page 16
synthpreset(4) synthpreset(4)
TimeRelease1:
TimeRelease2:
These six labels allow for easy specification of the segment times
for a six-level envelope like those found in many commercial
synthesizers. For any given envelope section, they should be used
together as a set and not mixed with the other label types.
Level:
Specify the envelope value for a level, starting with level 0. Each
subsequent Level: entry will address a subsequent level, up to
level7 (eight levels in all). [Level0 and Level1: 1.0; All others:
0.0]
LevelN:
Specify the envelope value for level N. Numbering starts with 0
(the resting state of the envelope) and has a maximum of 7. The
final level always represents the post-release level. [Level0 and
Level1: 1.0; All others: 0.0]
StartLevel:
Alternate for Level0:. [1.0]
AttackLevel:
Alternate for Level1:. [1.0]
SustainLevel:
Alternate for Level2:. [1.0]
ReleaseLevel:
Alternate for Level3:. [0.0]
LevelAttack1:
LevelAttack2:
LevelDecay1:
LevelDecay2:
LevelRelease1:
These five labels allow for easy specification of the levels for a
six-segment envelope like those found in many commercial
synthesizers. For any given envelope section, they should be used
together as a set (with the six time labels described above) and not
mixed with the other label types. Note: Midisynth makes no
assumptions about the initial and final levels for its envelopes, as
opposed to many synthesizers which require them to be zero levels.
When using the above level specifiers, they must be preceeded by a
StartLevel: label and concluded with an EndLevel: label set to the
values you desire (usually 0.0 in this case). If this is not done,
the initial level defaults to 1.0, and the final release stage will
Page 17
synthpreset(4) synthpreset(4)
be missing.
ExponentialCurves:
If "True", envelope will follow an exponential curve between levels.
If "False, envelope will follow straight line segments between
levels. Exponential curves are very useful for sounds with extended
natural decays, such as pianos and guitars. ["False"]
TriggerMode:
Defined the manner in which the envelope will respond to keydown and
keyup events. Possible values are:
"SingleTrigger"
All voices share one envelope which rstarts only on first key press.
"MultipleTrigger"
Not yet implemented.
"SingleReset"
All voices share one envelope which restarts with each new key
press.
"MultipleReset"
Each voice has its own envelope, each one restarts with each new key
press. This is the default.
Start:
SustainStart:
Index of first segment in the sustain portion of the envelope. [0]
End:
SustainEnd:
Index of final segment in the sustain portion of the envelope. [2]
LoopStart:
Index of first segment in the sustain portion of the envelope to be
looped. [0]
LoopEnd:
Index of final segment in the sustain portion of the envelope to be
looped. [2]
LoopType:
The type of loop to be used. Possible values are:
Page 18
synthpreset(4) synthpreset(4)
"Off"
No looping. This is the default.
"Forward"
Forward-moving loop.
"Backward"
Backwards loop.
"ForwardAndBackward"
Loop runs forward to the final segment, then reverses up to the
first segment, then repeats.
SustainLoopStart:
Index of first segment in the envelope's sustain loop. [0]
SustainLoopEnd:
Index of final segment in the envelope's sustain loop. [2]
SustainLoopType:
The type of loop for the sustain loop. See LoopType:, above.
["Off"]
SustainLoopRepeat:
Not yet implemented.
ReleaseStart:
Index of first segment in the release portion of the envelope. [3]
ReleaseEnd:
Index of final segment in the release portion of the envelope. [3]
ReleaseLoopStart:
Index of first segment in the envelope's release loop. [3]
ReleaseLoopEnd:
Index of final segment in the envelope's release loop. [3]
ReleaseLoopType:
The type of loop for the release loop. See LoopType:, above.
["Off"]
ReleaseLoopRepeat:
Not yet implemented.
GateIgnore:
Page 19
synthpreset(4) synthpreset(4)
OneShot:
If set to "True", the envelope will not stop at the end of the
sustain portion and will continue on through the release. This is
used for sounds which have no sustain, such as percussion sounds.
["False"]
Gain:
The output level multiplier for the envelope. Each stage's level
will be scaled by this value. This is typically 0 for envelopes
whose gain is controlled via GainControlSources such as
NoteOnVelocity. [0.0]
GaindB:
The output level in decibels for the envelope. Each stage's level
will be scaled by this value. Same use as Gain:. [-100]
GateElement:
If this parameter is true, this envelope will be examined to
determine if a given voice should continue to sound, or if the voice
should be considered "finished" and shut off. If false, the state
of this envelope will be ignored. ["True"]
GainControlSource:
GainModulationSource:
Source for modulation of the envelope's volume. See the section on
CONTROL SOURCE AND MODULATION DEPTH PARAMETERS for details.
["NoteOnVelocity"]
GainControlDepth:
GainModulationDepth:
The depth of the previous modulation source. For most modulating
sources, the resulting gain will be between 0.0 and
GainModulationDepth. [1.0]
AttackTimeModulationSource:
AttackTimeControlSource:
Source for modulation of the envelope's attack time. This must be a
static source. See the section on CONTROL SOURCE AND MODULATION
DEPTH PARAMETERS for details. ["None"]
AttackTimeModulationDepth:
AttackTimeControlDepth:
The depth of the previous modulation source. For most modulating
sources, the resulting time will be original_time +
(AttackTimeControlDepth * n), where 'n' is between 0 and 1.0. [0.0]
Page 20
synthpreset(4) synthpreset(4)
DecayTimeModulationSource:
DecayTimeControlSource:
Source for modulation of the envelope's decay time. This must be a
static source. See the section on CONTROL SOURCE AND MODULATION
DEPTH PARAMETERS for details. ["None"]
DecayTimeModulationDepth:
DecayTimeControlDepth:
The depth of the previous modulation source. For most modulating
sources, the resulting time will be original_time +
(DecayTimeControlDepth * n), where 'n' is between 0 and 1.0. [0.0]
Combination presets are a special class of presets which allow a single
MIDI patch to combine up to 128 other presets in a variety of ways. Each
individual preset referenced by a combination must exist as a separate
file. Each of these individual presets may be mapped into a portion of
the keyboard range or velocity range in a manner similar to the way
individual samples may be mapped into portions of an oscillator's range.
Combination parameters are the highest-level parameters available; they
will modify or (in a few cases) override any preset parameter of the same
type.
Combination presets are extremely powerful. By allowing any arbitrary
keyboard or velocity range to reference an entire preset, each note on
the keyboard can be configured to have its own sample with its own unique
filters and envelopes. Combination presets may be nested, i.e.,
combination preset A can reference preset B, which itself is a
combination, and so forth. Keyboard ranges may be arbitrarily overlapped
and/or layered to allow the creation of large ensemble presets.
Each referenced preset is called a Zone, and the Zone subsection of the
combination is described below, as well as the zone parameters.
COMBINATION HEADER AND PARAMETERS [Toc] [Back] A combination preset begins with the same first two lines as a regular
preset (see the top of this man page), but instead of using the General,
OscillatorN, etc., headers, a single header, Combination, is used,
followed by the following parameters:
Gain:
The overall volume for this combination preset. This adjusts the
volume of all preset zones. [1.0]
GaindB:
The overall gain in decibels for this combination preset. [0.0]
Transpose:
The interval in integer semitones to transpose the entire
combination. [0]
Page 21
synthpreset(4) synthpreset(4)
Tune:
The amount in semitones to adjust the pitch of the combination.
[0.0]
OutBus:
The output bus assignment for the combination. See the OutBus:
description in the General parameters section for details.
ZONE SUBSECTION AND PARAMETERS
The zone subsection begins with the first Zone header and ends with the
label EndZones. Each preset zone is separated by a Zone header. Many of
the parameters are identical to those in the Sample subsection of the
Oscillator section. The possible zone parameters are:
Name:
The full pathname of the preset file for the current zone. Required
for a zone to exist, and no default.
Gain:
The overall volume for this preset. [1.0]
GaindB:
The overall gain in decibels for this preset. [0.0]
Transpose:
The interval in integer semitones to transpose the preset. [0]
Tune:
The amount in semitones to adjust the pitch of the preset. [0.0]
OutBus:
The output bus assignment for the zone. See the OutBus:
description in the General parameters section for details.
NoteMapValueLower:
Specifies the lower limit of the keyboard range in which this preset
will sound, as a MIDI key number. [1]
NoteMapValueUpper:
Specifies the upper limit of the keyboard range in which this preset
will sound, as a MIDI key number. [127]
NoteMapNoteLower:
NoteMapNotationLower:
Specifies the lower limit of the keyboard range in which this preset
will sound, as a note name ["C-1"]
NoteMapNoteUpper:
Page 22
synthpreset(4) synthpreset(4)
NoteMapNotationUpper:
Specifies the upper limit of the keyboard range in which this preset
will sound, as a note name. ["G9"]
VelocityMapLower:
Specifies the lower limit of the keyboard velocity range for which
this preset will sound. [1]
VelocityMapUpper:
Specifies the upper limit of the keyboard velocity range for which
this preset will sound. [127]
PRESET FILE NAMING CONVENTIONS [Toc] [Back] A synthesizer preset file is identified by midisynth(1) and by the
desktop using the first 8 or so characters in the file, so a preset may
be named anything you wish. However, if you create preset files which
you wish to be a part of a General MIDI 128-preset bank directory, all
preset files must follow the following naming convention: For presets 1
through 128, the first 4 characters of the file's name must be in the
form NNN_, where NNN is the General MIDI preset number of the preset
expressed as three digits. For example, preset 4 would begin with
"004_", preset 27 would begin with "027_", and preset 112 would begin
with "112_". The remainder of the name may be anything, but it is useful
to have it be descriptive of the preset's type. For now, the percussion
preset to be loaded for channel 10 must be named "PercussionMap.preset".
synthpanel(1), midisynth(1), midikeys(1)
PPPPaaaaggggeeee 22223333 [ Back ]
|