SFZ support in LinuxSampler

SFZ is an open file format for samplers, currently evolving to a standard among many commercial samplers. The articulation files are ordinary human readable text files, which can be viewed and edited with any ordinary text editor. This page documents the current status of LinuxSampler regarding support of the SFZ format. Since development of the SFZ format engine in LinuxSampler is quickly evolving, this page may not be always up to date, so please also check the latest Subversion commits on our frontsite.

SFZ v1 opcodes

The SFZ version 1 opcodes are defined in the SFZ File Format Specification.

Opcode Supported Comment
Instrument Structure
<region>Yes 
<group>Yes 
Sample Definition
sampleYes 
Input Controls
lochanYes 
hichanYes 
lokeyYes 
hikeyYes 
keyYes 
lovelYes 
hivelYes 
loccNYes 
hiccNYes 
lobendYes 
hibendYes 
lochanaftYes 
hichanaftYes 
lopolyaftNo 
hipolyaftNo 
lorandYes 
hirandYes 
lobpmNo 
hibpmNo 
seq_lengthYes 
seq_positionYes 
sw_lokeyYes 
sw_hikeyYes 
sw_lastYes 
sw_downYes 
sw_upYes 
sw_previousYes 
sw_velNo 
triggerYes 
groupYes 
off_byYesAlias: offby
off_modeYesAlias: offmode
on_loccNYes 
on_hiccNYes 
Performance Parameters
Sample Player
delayNo 
delay_randomNo 
delay_ccNNov2-alias: delay_onccN
offsetYes 
offset_randomNo 
offset_ccNNov2-alias: offset_onccN
endYes 
countNo 
loop_modePartialAlias: loopmode
Supported values: no_loop, one_shot, loop_continuous
Unsupported value: loop_sustain
loop_startYesAlias: loopstart
loop_endYesAlias: loopend
sync_beatsNo 
sync_offsetNo 
Pitch
transposeYes 
tuneYes 
pitch_keycenterYes 
pitch_keytrackPartialZero is correct (no change in pitch) but all other values are interpreted as 100.
pitch_veltrackYes 
pitch_randomNo 
bend_upNoAlias: bendup
bend_downNoAlias: benddown
bend_stepNo 
Pitch EG
pitcheg_delayYes 
pitcheg_startYes 
pitcheg_attackYes 
pitcheg_holdYes 
pitcheg_decayYesCould be fine-tuned: sfzplayer uses a linear curve, LS uses an exponential.
pitcheg_sustainYes 
pitcheg_releaseYesCould be fine-tuned: sfzplayer uses a linear curve, LS uses an exponential.
pitcheg_depthYes 
pitcheg_vel2delayYes 
pitcheg_vel2attackYes 
pitcheg_vel2holdYes 
pitcheg_vel2decayYes 
pitcheg_vel2sustainYes 
pitcheg_vel2releaseYes 
pitcheg_vel2depthNo 
Pitch LFO
pitchlfo_delayYes 
pitchlfo_fadeYes 
pitchlfo_freqYes 
pitchlfo_depthYes 
pitchlfo_depthccNYes 
pitchlfo_depthchanaftYes 
pitchlfo_depthpolyaftNo 
pitchlfo_freqccNYes 
pitchlfo_freqchanaftYes 
pitchlfo_freqpolyaftNo 
Filter
fil_typeYesAlias: filtype
Supported v1 values (all): lpf_1p, hpf_1p, lpf_2p, hpf_2p, bfp_2p, brf_2p.
Supported v2 values: lpf_4p, hpr_4p, lpf_6p, hpf_6p.
Unsupported v2 values: bpf_1p, brf_1p, apf_1p, pkf_2p, lpf_2p_sv, hpf_2p_sv, bpf_2p_sv, brf_2p_sv, comb, pink.
cutoffYes 
cutoff_ccNYesv2-alias: cutoff_onccN
cutoff_chanaftYes 
cutoff_polyaftNo 
resonanceYes 
fil_keytrackYes 
fil_keycenterYes 
fil_veltrackYes 
fil_randomNo 
Filter EG
fileg_delayYes 
fileg_startYes 
fileg_attackYes 
fileg_holdYes 
fileg_decayYes 
fileg_sustainYes 
fileg_releaseYes 
fileg_depthYes 
fileg_vel2delayYes 
fileg_vel2attackYes 
fileg_vel2holdYes 
fileg_vel2decayYes 
fileg_vel2sustainYes 
fileg_vel2releaseYes 
fileg_vel2depthNo 
Filter LFO
fillfo_delayYes 
fillfo_fadeYes 
fillfo_freqYes 
fillfo_depthYes 
fillfo_depthccNYes 
fillfo_depthchanaftYes 
fillfo_depthpolyaftNo 
fillfo_freqccNYes 
fillfo_freqchanaftYes 
fillfo_freqpolyaftNo 
Amplifier
volumeYes 
panYesWorks, but can be fine-tuned. sfzplayer uses L=cos((100 + pan) / 200 * pi / 2) * sqrt(2), Dimension LE uses L=sqrt((100 - x) / 100), but LS uses a line segment approximation measured from GigaStudio, which lies somewhere between to other two.
widthNo 
positionNo 
amp_keytrackNo 
amp_keycenterNo 
amp_veltrackYes 
amp_velcurve_NYes 
amp_randomNo 
rt_decayYes 
outputNo 
gain_ccNNov2-alias: gain_onccN
xfin_lokeyYes 
xfin_hikeyYes 
xfout_lokeyYes 
xfout_hikeyYes 
xf_keycurveYes 
xfin_lovelYes 
xfin_hivelYes 
xfout_lovelYes 
xfout_hivelYes 
xf_velcurveYes 
xfin_loccNYes 
xfin_hiccNYes 
xfout_loccNYes 
xfout_hiccNYes 
xf_cccurveYes 
Amplifier EG
ampeg_delayYes 
ampeg_startYes 
ampeg_attackYes 
ampeg_holdYes 
ampeg_decayYes 
ampeg_sustainYes 
ampeg_releaseYes 
ampeg_vel2delayYes 
ampeg_vel2attackYes 
ampeg_vel2holdYes 
ampeg_vel2decayYes 
ampeg_vel2sustainYes 
ampeg_vel2releaseYes 
ampeg_delayccNYesv2-alias: ampeg_delay_onccN
ampeg_startccNYesv2-alias: ampeg_start_onccN
ampeg_attackccNYesv2-alias: ampeg_attack_onccN
ampeg_holdccNYesv2-alias: ampeg_hold_onccN
ampeg_decayccNYesv2-alias: ampeg_decay_onccN
ampeg_sustainccNYesv2-alias: ampeg_sustain_onccN
ampeg_releaseccNYesv2-alias: ampeg_release_onccN
Amplifier LFO
amplfo_delayYes 
amplfo_fadeYes 
amplfo_freqYes 
amplfo_depthYes 
amplfo_depthccNYes 
amplfo_depthchanaftYes 
amplfo_depthpolyaftNo 
amplfo_freqccNYes 
amplfo_freqchanaftYes 
amplfo_freqpolyaftNo 
Equalizer
eq1_freqNo 
eq2_freqNo 
eq3_freqNo 
eq1_freqccNNov2-alias: eq1_freq_onccN
eq2_freqccNNov2-alias: eq2_freq_onccN
eq3_freqccNNov2-alias: eq3_freq_onccN
eq1_vel2freqNo 
eq2_vel2freqNo 
eq3_vel2freqNo 
eq1_bwNo 
eq2_bwNo 
eq3_bwNo 
eq1_bwccNNov2-alias: eq1_bw_onccN
eq2_bwccNNov2-alias: eq2_bw_onccN
eq3_bwccNNov2-alias: eq3_bq_onccN
eq1_gainNo 
eq2_gainNo 
eq3_gainNo 
eq1_gainccNNov2-alias: eq1_gain_onccN
eq2_gainccNNov2-alias: eq2_gain_onccN
eq3_gainccNNov2-alias: eq3_gain_onccN
eq1_vel2gainNo 
eq2_vel2gainNo 
eq3_vel2gainNo 
Effects
effect1No 
effect2No 

SFZ v2 opcodes

The SFZ version 2 opcodes are listed in the book Cakewalk Synthesizers: From Presets to Power User by Simon Cann. The list below is not quite complete, the book also has opcodes for a noise generator and SFZ v2 effects.

Opcode Supported Comment
Instrument Structure
<global>No 
<control>Yes 
<curve>Yes 
<effects>No 
Sample Definition
md5No 
waveguideNo 
<control> Header Directives
default_pathYes 
octave_offsetYes 
note_offsetYes 
set_ccNNo 
#defineNo 
Loading
load_modeNo 
load_startNo 
load_endNo 
sample_qualityNo 
imageNo 
Wavetable Oscillator
oscillatorNo 
oscillator_phaseNo 
oscillator_qualityNo 
oscillator_table_sizeNo 
oscillator_multiNo 
oscillator_modeNo 
oscillator_detuneNo 
oscillator_detune_onccNNo 
oscillator_detune_smoothccNNoNot listed in the book, but recognized by Dimension LE.
oscillator_detune_stepccNNoNot listed in the book, but recognized by Dimension LE.
oscillator_detune_curveccNNoNot listed in the book, but recognized by Dimension LE.
oscillator_mod_depthNo 
oscillator_mod_depth_onccNNo 
oscillator_mod_smoothccNNo 
Input Controls
loprogNo 
hiprogNo 
lotimerNo 
hitimerNo 
polyphonyNo 
reverse_loccNNo 
reverse_hiccNNo 
start_loccNNo 
start_hiccNNo 
stop_loccNNo 
stop_hiccNNo 
sustain_swNo 
sustenuto_swNo 
rt_deadNo 
Performance Parameters
Sample Player
delay_beatsNo 
stop_beatsNo 
delay_samplesNo 
delay_samples_onccNNo 
loop_crossfadeNo 
Amplifier
volume_onccNYesNot listed in the book, but recognized by Dimension LE.
volume_smoothccNYesNot listed in the book, but recognized by Dimension LE.
volume_stepccNYesNot listed in the book, but recognized by Dimension LE.
volume_curveccNYesNot listed in the book, but recognized by Dimension LE.
pan_onccNYesNot listed in the book, but recognized by Dimension LE.
pan_smoothccNYesNot listed in the book, but recognized by Dimension LE.
pan_stepccNYesNot listed in the book, but recognized by Dimension LE.
pan_curveccNYesNot listed in the book, but recognized by Dimension LE.
width_onccNNoNot listed in the book, but recognized by Dimension LE.
width_smoothccNNoNot listed in the book, but recognized by Dimension LE.
width_stepccNNoNot listed in the book, but recognized by Dimension LE.
width_curveccNNoNot listed in the book, but recognized by Dimension LE.
Pitch
pitch_onccNYes 
pitch_curveccNYes 
pitch_stepccNYes 
pitch_smoothccNYesNot listed in the book, but recognized by Dimension LE.
bend_stepupNo 
bend_stepdownNo 
Filter
fil2_typeNo 
cutoff2No 
cutoff2_onccNNo 
cutoff_smoothccNYes 
cutoff2_smoothccNNo 
cutoff_stepccNYes 
cutoff2_stepccNNo 
cutoff_curveccNYes 
cutoff2_curveccNNo 
resonance2No 
resonance_onccNYes 
resonance2_onccNNo 
resonance_smoothccNYes 
resonance2_smoothccNNo 
resonance_stepccNYes 
resonance2_stepccNNo 
resonance_curveccNYes 
resonance2_curveccNNo 
fil2_keytrackNo 
fil2_keycenterNo 
fil2_veltrackNo 
EG
egN_timeXYes 
egN_timeX_onccYYes 
egN_levelXYes 
egN_levelX_onccYYes 
egN_shapeXYes 
egN_curveXNo 
egN_sustainYes 
egN_loopNo 
egN_loop_countNo 
egN_volumeYes 
egN_amplitudeYes 
egN_panYes 
egN_widthNo 
egN_pan_curveYes 
egN_pan_curveccXYes 
egN_volume_onccXYes 
egN_amplitude_onccXYes 
egN_pan_onccXYes 
egN_width_onccXNo 
egN_freq_lfoXNo 
egN_depth_lfoXNo 
egN_depthadd_lfoXNo 
egN_pitchYes 
egN_pitch_onccXYes 
egN_cutoffYes 
egN_cutoff2No 
egN_resonanceYes 
egN_resonance2No 
egN_cutoff_onccXYes 
egN_cutoff2_onccXNo 
egN_resonance_onccXYes 
egN_resonance2_onccXNo 
egN_eq1freqNo 
egN_eq2freqNo 
egN_eq3freqNo 
egN_eq1bwNo 
egN_eq2bwNo 
egN_eq3bwNo 
egN_eq1gainNo 
egN_eq2gainNo 
egN_eq3gainNo 
egN_eq1freq_onccXNo 
egN_eq2freq_onccXNo 
egN_eq3freq_onccXNo 
egN_eq1bw_onccXNo 
egN_eq2bw_onccXNo 
egN_eq3bw_onccXNo 
egN_eq1gain_onccXNo 
egN_eq2gain_onccXNo 
egN_eq3gain_onccXNo 
egN_decimNo 
egN_bitredNo 
egN_rectifyNo 
egN_ringmodNo 
egN_noiselevelNo 
egN_noisestepNo 
egN_noisetoneNo 
egN_driveshapeNo 
egN_decim_onccXNo 
egN_bitred_onccXNo 
egN_rectify_onccXNo 
egN_ringmod_onccXNo 
egN_noiselevel_onccXNo 
egN_noisestep_onccXNo 
egN_noisetone_onccXNo 
egN_driveshape_onccXNo 
LFO
lfoN_freqYes 
lfoN_freq_onccXYes 
lfoN_freq_smoothccXYes 
lfoN_freq_stepccXYes 
lfoN_delayYes 
lfoN_delay_onccXYes 
lfoN_fadeYes 
lfoN_fade_onccXYes 
lfoN_phaseYes 
lfoN_phase_onccXYes 
lfoN_countNo 
lfoN_waveYes 
lfoN_stepsNo 
lfoN_stepXNo 
lfoN_smoothNo 
lfoN_smooth_onccXNo 
lfoN_volumeYes 
lfoN_amplitudeNo 
lfoN_panYes 
lfoN_widthNo 
lfoN_volume_onccXYes 
lfoN_amplitude_onccXNo 
lfoN_pan_onccXYes 
lfoN_width_onccXNo 
lfoN_volume_smoothccXYes 
lfoN_amplitude_smoothccXNo 
lfoN_pan_smoothccXYes 
lfoN_width_smoothccXNo 
lfoN_volume_stepccXYes 
lfoN_amplitude_stepccXNo 
lfoN_pan_stepccXYes 
lfoN_width_stepccXNo 
lfoN_freq_lfoXNo 
lfoN_depth_lfoXNo 
lfoN_depthadd_lfoXNo 
lfoN_pitchYes 
lfoN_pitch_onccXYes 
lfoN_pitch_smoothccXYes 
lfoN_pitch_stepccXYes 
lfoN_cutoffYes 
lfoN_cutoff2No 
lfoN_resonanceYes 
lfoN_resonance2No 
lfoN_cutoff_onccXYes 
lfoN_cutoff2_onccXNo 
lfoN_resonance_onccXYes 
lfoN_resonance2_onccXNo 
lfoN_cutoff_smoothccXYes 
lfoN_cutoff2_smoothccXNo 
lfoN_resonance_smoothccXYes 
lfoN_resonance2_smoothccXNo 
lfoN_cutoff_stepccXYes 
lfoN_cutoff2_stepccXNo 
lfoN_resonance_stepccXYes 
lfoN_resonance2_stepccXNo 
lfoN_eq1freqNo 
lfoN_eq2freqNo 
lfoN_eq3freqNo 
lfoN_eq1bwNo 
lfoN_eq2bwNo 
lfoN_eq3bwNo 
lfoN_eq1gainNo 
lfoN_eq2gainNo 
lfoN_eq3gainNo 
lfoN_eq1freq_onccXNo 
lfoN_eq2freq_onccXNo 
lfoN_eq3freq_onccXNo 
lfoN_eq1bw_onccXNo 
lfoN_eq2bw_onccXNo 
lfoN_eq3bw_onccXNo 
lfoN_eq1gain_onccXNo 
lfoN_eq2gain_onccXNo 
lfoN_eq3gain_onccXNo 
lfoN_eq1freq_smoothccXNo 
lfoN_eq2freq_smoothccXNo 
lfoN_eq3freq_smoothccXNo 
lfoN_eq1bw_smoothccXNo 
lfoN_eq2bw_smoothccXNo 
lfoN_eq3bw_smoothccXNo 
lfoN_eq1gain_smoothccXNo 
lfoN_eq2gain_smoothccXNo 
lfoN_eq3gain_smoothccXNo 
lfoN_eq1freq_stepccXNo 
lfoN_eq2freq_stepccXNo 
lfoN_eq3freq_stepccXNo 
lfoN_eq1bw_stepccXNo 
lfoN_eq2bw_stepccXNo 
lfoN_eq3bw_stepccXNo 
lfoN_eq1gain_stepccXNo 
lfoN_eq2gain_stepccXNo 
lfoN_eq3gain_stepccXNo 
lfoN_decimNo 
lfoN_bitredNo 
lfoN_noiselevelNo 
lfoN_noisestepNo 
lfoN_noisetoneNo 
lfoN_driveNo 
lfoN_decim_onccXNo 
lfoN_bitred_onccXNo 
lfoN_noiselevel_onccXNo 
lfoN_noisestep_onccXNo 
lfoN_noisetone_onccXNo 
lfoN_drive_onccXNo 
lfoN_decim_smoothccXNo 
lfoN_bitred_smoothccXNo 
lfoN_noiselevel_smoothccXNo 
lfoN_noisestep_smoothccXNo 
lfoN_noisetone_smoothccXNo 
lfoN_drive_smoothccXNo 
lfoN_decim_stepccXNo 
lfoN_bitred_stepccXNo 
lfoN_noiselevel_stepccXNo 
lfoN_noisestep_stepccXNo 
lfoN_noisetone_stepccXNo 
lfoN_drive_stepccXNo 
Curves
vNYes 

ARIA custom opcodes

The ARIA Engine from Plogue / Garritan implements some custom sfz opcodes. Only some of them are listed here.

Opcode Supported Comment
amplitudeNo 
amplitude_onccNNo 
amplitude_smoothccNNo 
amplitude_curveccNNo 
pan_lawNo 

LinuxSampler opcodes

The following LinuxSampler custom opcodes are planned to be implemented as extensions to the SFZ format.

Opcode Supported Comment
Amplifier
position_onccNNo 
position_smoothccNNo 
position_curveccN No 
gain_smoothccNNo 
gain_curveccNNo 
Pitch
transpose_onccNNo 
transpose_smoothccNNo 
transpose_curveccNNo 
tune_onccNNo 
tune_smoothccNNo 
tune_curveccN No 
Filter
cutoff2_chanaftNo 
cutoff2_polyaftNo 
fil2_randomNo 
EG
egN_positionNo 
egN_position_onccXNo 
LFO
lfoN_depthNo 
lfoN_depth_onccXNo 
lfoN_positionNo 
lfoN_position_onccXNo 
lfoN_position_smoothccXNo 
lfoN_position_stepccXNo 
Amplifier LFO
amplfo_delay_onccNYes 
amplfo_fade_onccNYes 
Filter EG
fileg_delay_onccNYes 
fileg_start_onccNYes 
fileg_attack_onccNYes 
fileg_hold_onccNYes 
fileg_decay_onccNYes 
fileg_sustain_onccNYes 
fileg_release_onccNYes 
fileg_depth_onccNYes 
Filter LFO
fillfo_delay_onccNYes 
fillfo_fade_onccNYes 
Pitch EG
pitcheg_delay_onccNYes 
pitcheg_start_onccNYes 
pitcheg_attack_onccNYes 
pitcheg_hold_onccNYes 
pitcheg_decay_onccNYes 
pitcheg_sustain_onccNYes 
pitcheg_release_onccNYes 
pitcheg_depth_onccNYes 
Pitch LFO
pitchlfo_delay_onccNYes 
pitchlfo_fade_onccNYes