#define

Creates a variable and gives it a value.

Variable names start with the $ character.

Example

#define $KICKKEY 36
#define $LOWEBENDT 507

The defined variables can then be used like this:

<control>
#define $KICKKEY 36
#define $SNAREKEY 38
#define $HATKEY 42

<region>key=$KICKKEY sample=kick.wav
<region>key=$SNAREKEY sample=snare.wav
<region>key=$HATKEY sample=closedhat.wav

This can be used to make an instrument easier to configure - for example, to change key maps, MIDI CC assignments, pitch bend ranges etc. which can then be used repeatedly in the SFZ file, but can be easily changed just by editing their #define value in one place.

Using #define as a constant with a single value thorughout an instrument works easily. Defining the same variable to have multiple values at different points in the same instrument, however, requires care.

The following does not work well in ARIA/Sforzando, assuming that B.sfz uses MYVAR:

#define $MYVAR cc12
#include B.sfz
#define $MYVAR cc13
#include B.sfz

However, a workaround there is to use #include to put each set of #define statement with different values in a separate file. In simple tests, that has been successful.

Name Version Type Default Range Unit
#define SFZ v2 string N/A N/A

Category: Instrument Settings