The <effects> element

Adding global, instrument-wide effects is easy: just add an <effects> element right below your top-level <DecentSampler> element.

It is also possible to have effects that only get added to a specific group. To adding effects that only apply to a specific group, all you need to do is create an <effects> group that lives underneath the <group> element for the group you want to affect.

Group level effects are initialized every time a note is started and destroyed every time a note is stopped. If you play two notes simultaneously, two instances of this effect will be created and these will be independent of eachother. As a result, they use more CPU than global effects.

NOTE: Only certain effects will work as group-level effects: lowpass filter, hipass filter, bandpass filter, gain, and chorus. Delay and reverb cannot work properly as they will be deleted before their tail peters out.

The <effect> element

Within the <effects> element, you can have any number of <effect> sub-elements. These specify parameters for each individual effect that you would like to have in your global effects chain. There are currently only a handful effects available although more could definitely be added on request:

All <effect> elements support a tags attribute — a comma-separated list of tag names. Tags allow bindings to target effects by name instead of by numeric index. For example:

<effects>
  <effect type="lowpass" frequency="22000" tags="main-filter" />
</effects>

A binding can then reference this effect using tags="main-filter" instead of effectIndex="0":

<binding type="effect" level="instrument" tags="main-filter" parameter="FX_FILTER_FREQUENCY"
         translation="linear" translationOutputMin="100" translationOutputMax="8000" />

All <effect> elements also support an enabled attribute. When it is false, the effect is bypassed: audio passes through it untouched, as though it weren’t in the chain at all. This applies to every effect type, in both the global <effects> chain and group-level effects. Default value: true.

<effects>
  <effect type="reverb" wetLevel="0.4" enabled="false" />
</effects>

The most common reason to set it explicitly is to start an effect off and give the user a control to switch it on. Every effect’s enabled state can be bound to a UI control using the ENABLED parameter, so a button that toggles the reverb above looks like this:

<button x="20" y="60" width="80" height="30" style="text" value="0">
  <state name="Reverb Off">
    <binding type="effect" level="instrument" effectIndex="0" parameter="ENABLED" translation="fixed_value" translationValue="false" />
  </state>
  <state name="Reverb On">
    <binding type="effect" level="instrument" effectIndex="0" parameter="ENABLED" translation="fixed_value" translationValue="true" />
  </state>
</button>

See Appendix B for the full list of effect parameters that can be bound.

Low-pass, Band pass, and Hi-pass filter

A 2-pole resonant filter that can be either a lowpass, bandpass, or highpass filter

Example:

<DecentSampler>
  <effects>
    <effect type="lowpass" resonance="0.7" frequency="22000" />
  </effects>
</DecentSampler>

There is also a single pole version of the lowpass filter that can be accessed using the lowpass_1pl effect type. This version does not have a resonance parameter.

<DecentSampler>
  <effects>
    <effect type="lowpass_1pl" frequency="22000" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

The type of filter

Must be either lowpass (legacy: lowpass_4pl), lowpass_1pl, bandpass, or highpass

resonance

Optional

The filter resonance (Q)

0.001 - 5.0, where 5 is big, 0 is small.

0.7

frequency

Optional

The filter frequency

0 - 22000

22000

Notch EQ Filter

A simple notch filter.

Example:

<DecentSampler>
  <effects>
    <effect type="notch"  q="0.7" frequency="22000" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

The type of filter

Must be notch

frequency

Required

The filter frequency

60 - 22000.0

10000

Q

Optional

Q is the ratio of center frequency to bandwidth

0.01 - 18.0

0.7

Peak EQ Filter

A peak filter centred around a given frequency, with a variable Q and gain.

Example:

<DecentSampler>
  <effects>
    <effect type="peak"  q="0.7" frequency="22000" gain="2.0" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

The type of filter

Must be peak

frequency

Required

The filter frequency

60 - 22000.0

10000

Q

Optional

Q is the ratio of center frequency to bandwidth

0.01 - 18.0

0.7

gain

Optional

A linear multiplier for the frequencies around frequency: 1.0 leaves them unchanged, values above 1.0 boost them and values below 1.0 cut them. Before 1.34.0, leaving it out cut the band very deeply, so set it explicitly if a preset has to support older versions.

0.0001 - 10.0 (or -80 - 20 with gainUnit="decibels")

1.0 (0 dB)

gainUnit

Optional

The unit gain is written in. linear (the default) treats it as a multiplier; decibels treats it as a boost or cut in dB, so gain="6" is a 6 dB boost and gain="-3" a 3 dB cut. It also sets the unit for FX_FILTER_GAIN bindings and modulation on this effect. It can appear anywhere among the attributes. Requires Decent Sampler 1.34.0.

linear, decibels

linear

Low Shelf and High Shelf EQ Filters

A shelf boosts or cuts everything on one side of a frequency by the same amount: a low_shelf changes everything below frequency, and a high_shelf changes everything above it. This makes them the gentler way to warm up or brighten a sound, rather than carving out a band as peak and notch do. Requires Decent Sampler 1.34.0.

Example:

<DecentSampler>
  <effects>
    <effect type="low_shelf" frequency="200" gain="1.5" />
    <effect type="high_shelf" frequency="5000" q="0.7" gain="2.0" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

The type of filter

low_shelf or high_shelf

frequency

Optional

The corner frequency of the shelf

60 - 22000.0

200 for low_shelf, 5000 for high_shelf

q

Optional

How sharply the shelf turns the corner. Higher values give a steeper slope with a small bump near the corner.

0.01 - 18.0

0.7

gain

Optional

A linear multiplier for the shelved frequencies: 1.0 leaves them unchanged, 2.0 boosts them by about 6 dB and 0.5 cuts them by about 6 dB.

0.0001 - 10.0 (or -80 - 20 with gainUnit="decibels")

1.0 (0 dB)

gainUnit

Optional

The unit gain is written in. linear (the default) treats it as a multiplier; decibels treats it as a boost or cut in dB, so gain="6" is a 6 dB boost and gain="-3" a 3 dB cut. It also sets the unit for FX_FILTER_GAIN bindings and modulation on this effect. It can appear anywhere among the attributes. Requires Decent Sampler 1.34.0.

linear, decibels

linear

The frequency, q and gain can all be bound to controls and modulators with FX_FILTER_FREQUENCY, FX_FILTER_Q and FX_FILTER_GAIN, and switched on and off with ENABLED, the same as the peak filter. For example, this maps a knob to the high shelf’s gain, from a 6 dB cut to a 6 dB boost:

<control x="10" y="10" label="Brightness" valueType="float" minValue="0.5" maxValue="2" value="1">
  <binding type="effect" level="instrument" effectIndex="1" parameter="FX_FILTER_GAIN" translation="linear" />
</control>

With gainUnit="decibels" on the effect, the same knob can be written in dB, which spreads the change more evenly across the knob’s travel:

<effect type="high_shelf" frequency="5000" gain="0" gainUnit="decibels" />

<control x="10" y="10" label="Brightness" valueType="float" minValue="-6" maxValue="6" value="0">
  <binding type="effect" level="instrument" effectIndex="1" parameter="FX_FILTER_GAIN" translation="linear" />
</control>

Gain effect

Applies a volume boost or cut to the output signal.

Example:

<DecentSampler>
  <effects>
    <effect type="gain" level="-6" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Default

Valid Range

type

Required

Must be gain

gain

level

Optional

The amount of gain to apply. By default (and for backwards compatibility) this is expressed in decibels (e.g. -6 reduces the signal by ~50%). If levelUnit="linear" is also set, this value is treated as a linear multiplier (e.g. 0.5 reduces the signal by 50%, 1.0 is unity gain, 2.0 doubles it). A dB value may also be written with a dB suffix, as in -6dB.

about -6 dB (0.5 linear)

dB: -100 – 24; linear: 0.0 – 8.0

levelUnit

Optional

Specifies the unit for the level attribute. Valid values are decibels (default, for backwards compatibility) and linear. When set to linear, the level attribute is treated as a linear multiplier rather than a dB value. It can appear anywhere among the attributes.

decibels

decibels, linear

Reverb effect

Example:

<DecentSampler>
  <effects>
    <effect type="reverb" roomSize="" damping="" wetLevel="" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be reverb

reverb

roomSize

Optional

The reverb “room size”

0 - 1.0, where 1.0 is big, 0 is small.

0.7

damping

Optional

The reverb damping level

0 - 1.0, where 0 is not damped, 1.0 is fully damped.

0.3

wetLevel

Optional

The volume of reverb signal

0 - 1.0

0

Delay effect

A simple delay effect that can be controlled either in seconds or using musical time increments based on the host tempo. For a complete explanation of how to use tempo-syncing, see here.

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be delay

delay

delayTimeFormat

Optional

Determines whether the delay will be synced to DAW tempo or not, as well as what format you will be using for the delayTime parameter. There are two possible values: 1) seconds, which is the default, means that delayTime will be specified in seconds and will not change when the DAW tempo changes; 2) musical_time means that delay time will be specified using an integer value generated by a control which is setup to use the musical_time valueType parameter. In order for this to work, you will need to be using the plug-in within a DAW that provides a tempo to the plug-in.

seconds, musical_time

seconds

delayTime

Optional

The delay time in seconds

0 - 20.0

0.7

feedback

Optional

The feedback level.

0 - 1.0, where 0 is no feedback, 1.0 is max feedback.

0.2

stereoOffset

Optional

The parameter allows you to introduce delay variations between the left and right channels. Half of this amount is subtracted from the left channel’s delay time and half of this amount is added to the right channel’s delay time. For example, if the delayTime is 0.5 seconds and the stereoOffset is 0.02 s, then the actual left channel delay time will be 0.49s and the actual right channel delay time will be 0.51s so that the two channels are offset by 0.02 seconds.

-10 - 10

0

feedbackCutoff

Optional

A low-pass filter inside the feedback loop, in Hz. Each repeat passes through it once more than the one before, so the echoes get progressively darker, like a tape delay. At 22000 (the default) the filter is off and the delay sounds exactly as before. Requires Decent Sampler 1.34.0.

20 - 22000

22000

wetLevel

Optional

The volume of the delay signal

0 - 1.0

0.5

Example of using the delay effect when specifying time in seconds:

<DecentSampler>
  <effects>
    <effect type="delay" delayTime="0.5" stereoOffset="0.01" feedback="0.2" wetLevel="0.5" />
  </effects>
</DecentSampler>

Example of using the delay effect when specifying time in musical time:

<DecentSampler>
  <ui>
    <tab>
      <labeled-knob x="180" y="40" label="Delay Time" valueType="musical_time" 
                    minValue="0" maxValue="20" value="10" defaultValue="10">
        <binding type="effect" level="instrument" position="0" parameter="FX_DELAY_TIME" />
      </labeled-knob>
    </tab>
  </ui>
  <effects>
    <effect type="delay" delayTimeFormat="musical_time" delayTime="10" stereoOffset="0.01" 
            feedback="0.3" wetLevel="0.5" />
  </effects>
</DecentSampler>

Chorus effect

Example:

<DecentSampler>
  <effects>
    <effect type="chorus" mix="0.5" modDepth="0.2" modRate="0.2"/>
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be chorus

chorus

mix

Optional

The wet/dry mix which controls how much of the chorus signal we hear

0 - 1.0, where 1.0 is just chorus, 0 is just dry signal.

0.5

modDepth

Optional

The modulation depth of the effect

0 - 1.0, where 0 is no modulation, 1.0 is max modulation.

0.2

modRate

Optional

The modulation speed in Hz.

0 - 10.0

0.2

Phaser effect

Example:

<DecentSampler>
  <effects>
    <effect type="phaser" mix="0.5" modDepth="0.2" modRate="0.2" centerFrequency="400" feedback="0.7" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be phaser

phaser

mix

Optional

The wet/dry mix which controls how much of the phaser signal we hear

0 - 1.0, where 1.0 is just phaser, 0 is just dry signal.

0.5

modDepth

Optional

The modulation depth of the effect

0 - 1.0, where 0 is no modulation, 1.0 is max modulation.

0.2

modRate

Optional

The modulation speed in Hz.

0 - 10.0

0.2

centerFrequency

Optional

The center frequency (in Hz) of the phaser all-pass filters modulation

0 - 22000

400

feedback

Optional

Sets the feedback volume of the phaser.

-1 - 1.0

0.7

Convolution effect

This effect allows you to use a convolution reverb or amp simulation to your sample library. Depending on the length of the impulse response, the convolution effect can use substantial CPU, so you’ll definitely want to do some testing both with and without the convolution effect turned on.

Example:

<DecentSampler>
  <effects>
    <effect type="convolution" mix="0.5" irFile="Samples/Hall 3.wav" />
  </effects>
</DecentSampler>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be convolution

convolution

mix

Optional

The wet/dry mix controls how much of the convolution signal we hear

0 - 1.0, where 1.0 is just convolution, 0 is just dry signal.

0.5

irFile

Required

The path of the WAV or AIFF to use as an Impulse Response (IR) file

String

No default

Pitch Shifter effect

As of version 1.13.3, Decent Sampler contains an old-school pitch shifter effect, which allows you to shift the pitch of the audio signal up or down by a specified number of semitones. This can be useful for creating harmonies or for adding subtle chorus effects.

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be pitch_shift

pitch_shift

pitchShift

Optional

The number of semitones to shift the pitch of the audio signal

-24 - 24, where -24 means two octaves down, 0 means no pitch shift, and 24 means two octaves up

mix

Optional

The wet/dry mix controls how much of the pitch-shifted signal we hear

0 - 1.0, where 1.0 is just pitch-shifted signal, 0 is just dry signal.

0.5

Example:

<DecentSampler>
  <effects>
    <effect type="pitch_shift" pitchShift="2" mix="0.5" />
  </effects>
</DecentSampler>

Wave Folder effect

Introduced in version 1.7.2. This effect allows you to fold a waveform back on itself. This is very useful for generating additional harmonic content.

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be wave_folder

wave_folder

drive

Optional

The volume of the input signal

1 - 100, where 100 means the signal is amplified by a factor of 100 and 1 means no amplification is applied

1

threshold

Optional

The amplitude above which wave folding should take place

0 - 10.0

0.25

Because wave folding tends to sound better when applied on a per-voice basis, it usually makes sense to set up the wave folder at the group level (separate group effects get created for each keypress). Example:

<DecentSampler pluginVersion="1">
  <ui>
    <tab>
      <labeled-knob x="180" y="40" label="Drive" valueType="float" minValue="1" maxValue="100" textColor="FF000000" value="1">
        <binding type="effect" level="group" groupIndex="0" effectIndex="0" parameter="FX_DRIVE" translation="linear" />
      </labeled-knob>
      <labeled-knob x="280" y="40" label="Threshold" valueType="float" minValue="0" maxValue="1" value="1" textColor="FF000000">
        <binding type="effect" level="group" groupIndex="0" effectIndex="0" parameter="FX_THRESHOLD" translation="linear" />
      </labeled-knob>
    </tab>
  </ui>
  <groups>
    <group>
        <!-- Samples go here. -->
    <effects>
        <effect type="wave_folder" drive="1" threshold="1" />
      </effects>
    </group>
  </groups>

Wave Shaper effect

Introduced in version 1.7.2. This effect allows you to distort an audio signal. This is very useful for generating additional harmonic content.

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be wave_shaper

wave_shaper

drive

Optional

The amount of distortion. This really just controls the volume of the input signal. The volume of the input signal

1 - 1000, where 1000 means the signal is amplified by a factor of 1000 and 1 means no amplification is applied

1

driveBoost

Optional

Introduces an extra gain boost to the drive

0 - 1.0

1

outputLevel

Optional

The linear output level of the signal

0 - 1.0

0.1

highQuality

Optional

Whether or not oversampling is performed. Oversampling sounds better, but it’s CPU intensive. If you want to save CPU, set this to false.

true, false

false

Because wave shaping tends to sound better when applied on a per-voice basis, it usually makes sense to set up the wave shaper at the group level (separate group effects get created for each keypress). Example:

<DecentSampler pluginVersion="1">
  <ui>
    <tab>
      <labeled-knob x="180" y="40" label="Drive" valueType="float" minValue="1" maxValue="40" textColor="FF000000" value="0.5473124980926514">
        <binding type="effect" level="group" groupIndex="0" effectIndex="0" parameter="FX_DRIVE" translation="linear"/>
      </labeled-knob>
      <labeled-knob x="280" y="40" label="Drive Boost" valueType="float" minValue="0" maxValue="1" value="0.328312486410141" textColor="FF000000">
        <binding type="effect" level="group" groupIndex="0" effectIndex="0" parameter="FX_DRIVE_BOOST" translation="linear"/>
      </labeled-knob>
      <labeled-knob x="380" y="40" label="Output Lvl" valueType="float" minValue="0" maxValue="1" value="0.328312486410141" textColor="FF000000">
        <binding type="effect" level="group" groupIndex="0" effectIndex="0" parameter="FX_OUTPUT_LEVEL" translation="linear"/>
      </labeled-knob>
    </tab>
  </ui>
  <groups>
    <group>
        <!-- Samples go here. -->
      <effects>
        <effect type="wave_shaper" drive="0.5473124980926514" shape="0.328312486410141" outputLevel="0.1"/>
      </effects>
    </group>
  </groups>

Stereo Simulator effect

Introduced in version 1.17.0. This effect converts a mono input signal into a pseudo-stereo signal using one of three classic algorithms.

<effect type="stereo_simulator"
        algorithm="adt"
        width="0.5"
        delayTime="0.005"
        modRate="0.5"
        modDepth="0.3" />

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be stereo_simulator

stereo_simulator

algorithm

Optional

Pseudo-stereo algorithm to use

lauridsen, schroeder, adt

adt

width

Optional

Stereo spread and dry/wet amount; 0 = mono/dry, 1 = full stereo effect

0–1

0.5

delayTime

Optional

Delay time in seconds

0.001–0.030

0.005

modRate

Optional

LFO modulation rate in Hz (ADT algorithm only)

0.1–10.0

0.5

modDepth

Optional

LFO modulation depth (ADT algorithm only)

0–1

0.3

The three algorithms are:

  • lauridsen: Complementary comb filters — simple and CPU-efficient.

  • schroeder: Double-delay comb filters — slightly richer stereo image.

  • adt (default): Artificial Double Tracking with LFO-modulated delay — the most convincing stereo widening effect. The modRate and modDepth parameters only affect this algorithm.

The width parameter serves as both the stereo spread amount and the dry/wet control. Setting width to 0 produces a mono dry signal; setting it to 1 applies the full stereo effect.

All parameters except algorithm are bindable. Example with a width knob:

<DecentSampler pluginVersion="1">
  <ui>
    <tab>
      <labeled-knob x="100" y="40" label="Width" valueType="float" minValue="0" maxValue="1" value="0.5" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0" parameter="FX_WIDTH" translation="linear" translationOutputMin="0" translationOutputMax="1"/>
      </labeled-knob>
    </tab>
  </ui>
  <groups>
    <group>
      <!-- Samples go here. -->
    </group>
  </groups>
  <effects>
    <effect type="stereo_simulator" algorithm="adt" width="0.5" delayTime="0.005" modRate="0.5" modDepth="0.3" />
  </effects>
</DecentSampler>

Bit Crusher effect

The bit crusher reduces the bit depth and sample rate of the audio signal, producing a characteristic lo-fi, digital, crunchy sound. Bit depth reduction introduces quantisation noise, while sample rate reduction creates aliasing artifacts.

<effect type="bit_crusher" bitDepth="8" sampleRateReduction="4" mix="1.0"/>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be bit_crusher

bit_crusher

bitDepth

Optional

The number of bits used to quantise the audio signal. Lower values = more aggressive crushing.

1–24, where 24 is clean and 1 is maximum crushing.

24

sampleRateReduction

Optional

Sample-rate reduction factor. A value of 4 means the effective sample rate is reduced to one quarter of the original.

1–32, where 1 is no reduction and 32 is maximum downsampling.

1

mix

Optional

The wet/dry mix which controls how much of the bit-crushed signal we hear.

0–1.0, where 1.0 is fully crushed and 0.0 is the original dry signal.

1.0

Both bitDepth and sampleRateReduction are bindable, so you can attach knobs to control them in real time.

Binding parameters for the bit crusher effect:

Binding parameter value

Description

FX_BIT_DEPTH

Controls the bit depth (1–24)

FX_SAMPLE_RATE_REDUCTION

Controls the sample-rate reduction factor (1–32)

FX_MIX

Controls the wet/dry mix (0–1)

Example with knobs for all three parameters:

<DecentSampler pluginVersion="1">
  <ui>
    <tab>
      <labeled-knob x="80"  y="40" label="Bit Depth" valueType="float"
                    minValue="1" maxValue="24" value="24" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_BIT_DEPTH" translation="linear"
                 translationOutputMin="1" translationOutputMax="24"/>
      </labeled-knob>
      <labeled-knob x="185" y="40" label="Rate Reduction" valueType="float"
                    minValue="1" maxValue="32" value="1" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_SAMPLE_RATE_REDUCTION" translation="linear"
                 translationOutputMin="1" translationOutputMax="32"/>
      </labeled-knob>
      <labeled-knob x="290" y="40" label="Mix" valueType="float"
                    minValue="0" maxValue="1" value="1" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_MIX" translation="linear"
                 translationOutputMin="0" translationOutputMax="1"/>
      </labeled-knob>
    </tab>
  </ui>
  <groups>
    <group>
      <!-- Samples go here. -->
    </group>
  </groups>
  <effects>
    <effect type="bit_crusher" bitDepth="24" sampleRateReduction="1" mix="1.0"/>
  </effects>
</DecentSampler>

Compressor effect

A standard dynamics compressor that reduces the signal’s volume once it crosses a threshold, by a ratio you specify. Detection is stereo-linked (both channels are measured together, so the stereo image doesn’t shift under compression).

The compressor also supports an optional auto bypass mode. When enabled, the compressor fades itself out (click-free) whenever the input signal stays below threshold, and fades back in as soon as the signal re-engages. This is useful for avoiding any audible noise-floor artifacts on program material that never actually triggers gain reduction.

<effect type="compressor" threshold="-12" ratio="4" attack="5" release="100" inputGain="0" outputGain="0" autoBypass="false"/>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be compressor

compressor

threshold

Optional

The level (in dB) above which compression starts being applied

-60 – 0

-12

ratio

Optional

The compression ratio

1 – 20, where 1 is no compression and 20 is near-limiting

4

attack

Optional

How quickly (in milliseconds) the compressor reacts once the signal crosses the threshold

0.1 – 200

5

release

Optional

How quickly (in milliseconds) the compressor lets go once the signal drops back below the threshold

5 – 2000

100

inputGain

Optional

Gain (in dB) applied to the signal before compression

-24 – 24

0

outputGain

Optional

Makeup gain (in dB) applied to the signal after compression

-24 – 24

0

autoBypass

Optional

When true, the compressor fades itself out (click-free) whenever the input stays below threshold, and fades back in as soon as the signal re-engages

true, false

false

threshold, ratio, attack, release, inputGain, and outputGain are all bindable. autoBypass is not bindable.

Binding parameters for the compressor effect:

Binding parameter value

Description

FX_THRESHOLD

Controls the threshold, in dB (-60 – 0)

FX_RATIO

Controls the compression ratio (1 – 20)

FX_ATTACK

Controls the attack time, in ms (0.1 – 200)

FX_RELEASE

Controls the release time, in ms (5 – 2000)

FX_INPUT_GAIN

Controls the input gain, in dB (-24 – 24)

FX_OUTPUT_GAIN

Controls the output (makeup) gain, in dB (-24 – 24)

Example with knobs for threshold and ratio:

<DecentSampler pluginVersion="1">
  <ui>
    <tab>
      <labeled-knob x="80" y="40" label="Threshold" valueType="float"
                    minValue="-60" maxValue="0" value="-12" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_THRESHOLD" translation="linear"
                 translationOutputMin="-60" translationOutputMax="0"/>
      </labeled-knob>
      <labeled-knob x="185" y="40" label="Ratio" valueType="float"
                    minValue="1" maxValue="20" value="4" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_RATIO" translation="linear"
                 translationOutputMin="1" translationOutputMax="20"/>
      </labeled-knob>
    </tab>
  </ui>
  <groups>
    <group>
      <!-- Samples go here. -->
    </group>
  </groups>
  <effects>
    <effect type="compressor" threshold="-12" ratio="4" attack="5" release="100" inputGain="0" outputGain="0"/>
  </effects>
</DecentSampler>

Stutter effect

A randomized gate. Roughly every 50 milliseconds it flips a coin, weighted by amount, on whether to let the signal through or cut it to silence, crossfading smoothly between the two states so the transitions don’t click. Useful for stutter/dropout-style effects.

<effect type="stutter" amount="0.5" mix="1.0"/>

Attributes:

Attribute

Type

Valid Range

Default

type

Required

Must be stutter

stutter

amount

Optional

The probability that any given decision window gates to silence

0–1.0, where 0 never gates and 1.0 gates constantly

0.5

mix

Optional

The wet/dry mix which controls how much of the gated signal we hear

0–1.0, where 1.0 is fully gated and 0.0 is the original dry signal

1.0

Both amount and mix are bindable.

Binding parameters for the stutter effect:

Binding parameter value

Description

FX_STUTTER_AMOUNT

Controls the probability of gating (0–1)

FX_MIX

Controls the wet/dry mix (0–1)

Example with knobs for both parameters:

<DecentSampler pluginVersion="1">
  <ui>
    <tab>
      <labeled-knob x="80" y="40" label="Amount" valueType="float"
                    minValue="0" maxValue="1" value="0.5" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_STUTTER_AMOUNT" translation="linear"
                 translationOutputMin="0" translationOutputMax="1"/>
      </labeled-knob>
      <labeled-knob x="185" y="40" label="Mix" valueType="float"
                    minValue="0" maxValue="1" value="1" textColor="FF000000">
        <binding type="effect" level="instrument" effectIndex="0"
                 parameter="FX_MIX" translation="linear"
                 translationOutputMin="0" translationOutputMax="1"/>
      </labeled-knob>
    </tab>
  </ui>
  <groups>
    <group>
      <!-- Samples go here. -->
    </group>
  </groups>
  <effects>
    <effect type="stutter" amount="0.5" mix="1.0"/>
  </effects>
</DecentSampler>