Skip to content

amp_velcurve_N

User-defined amplifier velocity curve.

This opcode range allows defining a specific point along the amplifier velocity curve. The value of the opcode indicates the normalized amplitude (0 to 1) for the specified velocity. N can be from 0 to 127.

The player will interpolate lineraly between specified opcodes for unspecified ones:

amp_velcurve_1=0.2 amp_velcurve_3=0.3
// amp_velcurve_2 is calculated to 0.25

If amp_velcurve_127 is not specified, the player will assign it the value of 1.

Examples #

There are several common ways to use this opcode. One is to reduce the dynamic range so that low-velocity notes will still produce a fairly loud sound. This is similar (but probably not quite identical mathematically) to setting amp_veltrack to less than 100.

// linear, compressed dynamic range
// amplitude changes from 0.5 to 1
amp_velcurve_1=0.5

It can also be used to set up a specific velocity response.

amp_velcurve_1=0.1
amp_velcurve_63=0.25
amp_velcurve_95=0.5

This opcode is also often used with dynamic layers to make each sample play at its full amplitude at the top of its velocity layer, as shown below for a kick drum with four dynamic layers. Note that there’s no reason to set amp_velcurve_N values for N below the lovel or above the hivel for a particular region. So, in practice, this often ends up meaning just setting amp_velcurve_N=1 with N being equal to the hivel value for each layer.

<region>hivel=31 amp_velcurve_31=1 sample=kick_vl1.wav
<region>lovel=32 hivel=63 amp_velcurve_63=1 sample=kick_vl2.wav
<region>lovel=64 hivel=95 amp_velcurve_95=1 sample=kick_vl3.wav
<region>lovel=96 sample=kick_vl4.wav

This could also be combined with the first example so that velocity 1 hits will still be reasonably audible.

<region>hivel=31 amp_velcurve_1=0.3 amp_velcurve_31=1 sample=kick_vl1.wav
<region>lovel=32 hivel=63 amp_velcurve_63=1 sample=kick_vl2.wav
<region>lovel=64 hivel=95 amp_velcurve_95=1 sample=kick_vl3.wav
<region>lovel=96 sample=kick_vl4.wav

Practical Considerations #

As a MIDI velocity 0 note is a note-off message, amp_velcurve_0 never actually needs to be set. It just creates a slightly different starting point for one side of the interpolation, compared to setting amp_velcurve_1. By default, amp_velcurve_0 is effectively 0. If amp_velcurve is not set for any N, then amp_velcurve_0 is 0 and amp_velcurve_127 is 1, and the volume for notes with velocity is the same as if amp_velcurve_1=0.007874016.

Both amp_velcurve_n and amp_veltrack can be used together, though there’s probably more risk of confusion than benefit to doing this.

Name Version Type Default Range Unit
amp_velcurve_N SFZ v1 float Standard curve (see amp_veltrack) 0 to 1

Category: Performance Parameters, Amplifier