Writing Docs Gigedit SFZ Instrument Scripts NKSP Language NKSP Reference


This function can be used to modify the volume of active voices during their entire life time. So you may for example implement very sophisticated volume envelopes by script by using this function. You need to pass the note ID of the voices you want to alter. This function will change the volume of all active voices associated with the requested note. So if you are using a layered instrument patch, then it will change the volume of all layers.

Internally the sampler always fades the volume from its current value to the new volume as requested, however that volume fade by default is so fast that it sounds like its value jumps directly from its old to the new value, it is yet slow enough though to avoid undesired click sounds. You may also override that automated fade time explicitly by calling change_vol_time() before calling the change_vol() function.

The volume changes set by calling this function are always applied relatively to the volume calculated by the synthesis model and sampler format. That means the various sources of volume factors like MIDI CC #7, Amplitute Envelopes, Amplitutude LFOs and other volume factors that may be defined by the instrument patch, are always processed and calculated for the voices first, and the final volume applied is always a relative combination of all those factors and the one set with this function call. This does also not change when you pass 1 for argument relative. Or in other words: you cannot replace the volume set by other synthesis sources with this function.

Release Trigger Samples: In case the affected voices cause release trigger samples to be spawned later on, the volume of those release trigger voices will not be affected by this function at all. So if you need to control the volume of release trigger samples by script, then you might rather also trigger those release trigger samples by script with play_note() instead of using the sampler format's internal support for release trigger samples.

Function Prototype

change_vol(note, volume, [relative])


Argument Name Data Type Description
note Note ID Number or Note ID Array All voices of this note will be modified.
volume Integer Number Volume change in Milli dB. A positive value increases the volume, a negative value decreases the volume.
relative Integer Number Whether change_vol() calls should be relative to each other.
0: A call to change_vol() upon the same note will replace the volume change value set by previous change_vol() calls upon the same note.
1: Successive calls to change_vol() upon the same note will be relatively applied against each other.
[optional, default: 0]

Return Value



This functions optionally accepts B (for "Bel") as standard unit and finalness for its argument volume.


None yet.

See also

change_vol_time(), fade_in(), fade_out()


Since LinuxSampler 2.0.0.svn11.

The third argument of this function relative is only optional with NKSP. If you want to keep compatibility with KSP, then you should always pass a value for that third argument of this function.

Document Updated:  2019-09-17  |  Author:  Christian Schoenebeck