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.
The SFZ version 1 opcodes are defined in the SFZ File Format Specification.
Opcode | Supported | Comment |
Instrument Structure | ||
<region> | Yes | |
<group> | Yes | |
Sample Definition | ||
sample | Yes | |
Input Controls | ||
lochan | Yes | |
hichan | Yes | |
lokey | Yes | |
hikey | Yes | |
key | Yes | |
lovel | Yes | |
hivel | Yes | |
loccN | Yes | |
hiccN | Yes | |
lobend | Yes | |
hibend | Yes | |
lochanaft | Yes | |
hichanaft | Yes | |
lopolyaft | No | |
hipolyaft | No | |
lorand | Yes | |
hirand | Yes | |
lobpm | No | |
hibpm | No | |
seq_length | Yes | |
seq_position | Yes | |
sw_lokey | Yes | |
sw_hikey | Yes | |
sw_last | Yes | |
sw_down | Yes | |
sw_up | Yes | |
sw_previous | Yes | |
sw_vel | No | |
trigger | Yes | |
group | Yes | |
off_by | Yes | Alias: offby |
off_mode | Yes | Alias: offmode |
on_loccN | Yes | |
on_hiccN | Yes | |
Performance Parameters | ||
Sample Player | ||
delay | No | |
delay_random | No | |
delay_ccN | No | v2-alias: delay_onccN |
offset | Yes | |
offset_random | No | |
offset_ccN | No | v2-alias: offset_onccN |
end | Yes | |
count | No | |
loop_mode | P? | Alias: loopmode. bara delvis, dvs om loop eller inte (+ one_shot?) no_loop, one_shot, loop_continuous, loop_sustain |
loop_start | P? | Alias: loopstart. är det rätt? - TODO use sample loop when loop_start not defined |
loop_end | P? | Alias: loopend. är det rätt? - TODO " |
sync_beats | No | |
sync_offset | No | |
Pitch | ||
transpose | Yes | |
tune | Yes | |
pitch_keycenter | Yes | |
pitch_keytrack | Partial | Zero is correct (no change in pitch) but all other values are interpreted as 100. |
pitch_veltrack | Yes | |
pitch_random | No | |
bend_up | No | Alias: bendup |
bend_down | No | Alias: benddown |
bend_step | No | |
Pitch EG | ||
pitcheg_delay | Yes | |
pitcheg_start | Yes | |
pitcheg_attack | Yes | |
pitcheg_hold | Yes | |
pitcheg_decay | Yes | Could be fine-tuned: sfzplayer uses a linear curve, LS uses an exponential. |
pitcheg_sustain | Yes | |
pitcheg_release | Yes | Could be fine-tuned: sfzplayer uses a linear curve, LS uses an exponential. |
pitcheg_depth | Yes | |
pitcheg_vel2delay | Yes | |
pitcheg_vel2attack | Yes | |
pitcheg_vel2hold | Yes | |
pitcheg_vel2decay | Yes | |
pitcheg_vel2sustain | Yes | |
pitcheg_vel2release | Yes | |
pitcheg_vel2depth | No | |
Pitch LFO | ||
pitchlfo_delay | Yes | |
pitchlfo_fade | Yes | |
pitchlfo_freq | Yes | |
pitchlfo_depth | Yes | |
pitchlfo_depthccN | Yes | |
pitchlfo_depthchanaft | Yes | |
pitchlfo_depthpolyaft | No | |
pitchlfo_freqccN | Yes | |
pitchlfo_freqchanaft | Yes | |
pitchlfo_freqpolyaft | No | |
Filter | ||
fil_type | Yes | Alias: 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. |
cutoff | Yes | |
cutoff_ccN | Yes | v2-alias: cutoff_onccN |
cutoff_chanaft | Yes | |
cutoff_polyaft | No | |
resonance | Yes | |
fil_keytrack | Yes | |
fil_keycenter | Yes | |
fil_veltrack | Yes | |
fil_random | No | |
Filter EG | ||
fileg_delay | Yes | |
fileg_start | Yes | |
fileg_attack | Yes | |
fileg_hold | Yes | |
fileg_decay | Yes | |
fileg_sustain | Yes | |
fileg_release | Yes | |
fileg_depth | Yes | |
fileg_vel2delay | Yes | |
fileg_vel2attack | Yes | |
fileg_vel2hold | Yes | |
fileg_vel2decay | Yes | |
fileg_vel2sustain | Yes | |
fileg_vel2release | Yes | |
fileg_vel2depth | No | |
Filter LFO | ||
fillfo_delay | Yes | |
fillfo_fade | Yes | |
fillfo_freq | Yes | |
fillfo_depth | Yes | |
fillfo_depthccN | Yes | |
fillfo_depthchanaft | Yes | |
fillfo_depthpolyaft | No | |
fillfo_freqccN | Yes | |
fillfo_freqchanaft | Yes | |
fillfo_freqpolyaft | No | |
Amplifier | ||
volume | Yes | |
pan | Yes | Works, 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-approximation measured from GigaStudio, which lies somewhere between to other two. |
width | No | |
position | No | |
amp_keytrack | No | |
amp_keycenter | No | |
amp_veltrack | Yes | |
amp_velcurve_N | Yes | |
amp_random | No | |
rt_decay | Yes | |
output | No | |
gain_ccN | No | v2-alias: gain_onccN |
xfin_lokey | Yes | |
xfin_hikey | Yes | |
xfout_lokey | Yes | |
xfout_hikey | Yes | |
xf_keycurve | Yes | |
xfin_lovel | Yes | |
xfin_hivel | Yes | |
xfout_lovel | Yes | |
xfout_hivel | Yes | |
xf_velcurve | Yes | |
xfin_loccN | Yes | |
xfin_hiccN | Yes | |
xfout_loccN | Yes | |
xfout_hiccN | Yes | |
xf_cccurve | Yes | |
Amplifier EG | ||
ampeg_delay | Yes | |
ampeg_start | Yes | |
ampeg_attack | Yes | |
ampeg_hold | Yes | |
ampeg_decay | Yes | |
ampeg_sustain | Yes | |
ampeg_release | Yes | |
ampeg_vel2delay | Yes | |
ampeg_vel2attack | Yes | |
ampeg_vel2hold | Yes | |
ampeg_vel2decay | Yes | |
ampeg_vel2sustain | Yes | |
ampeg_vel2release | Yes | |
ampeg_delayccN | Yes | v2-alias: ampeg_delay_onccN |
ampeg_startccN | Yes | v2-alias: ampeg_start_onccN |
ampeg_attackccN | Yes | v2-alias: ampeg_attack_onccN |
ampeg_holdccN | Yes | v2-alias: ampeg_hold_onccN |
ampeg_decayccN | Yes | v2-alias: ampeg_decay_onccN |
ampeg_sustainccN | Yes | v2-alias: ampeg_sustain_onccN |
ampeg_releaseccN | Yes | v2-alias: ampeg_release_onccN |
Amplifier LFO | ||
amplfo_delay | Yes | |
amplfo_fade | Yes | |
amplfo_freq | Yes | |
amplfo_depth | Yes | |
amplfo_depthccN | Yes | |
amplfo_depthchanaft | Yes | |
amplfo_depthpolyaft | No | |
amplfo_freqccN | Yes | |
amplfo_freqchanaft | Yes | |
amplfo_freqpolyaft | No | |
Equalizer | ||
eq1_freq | No | |
eq2_freq | No | |
eq3_freq | No | |
eq1_freqccN | No | v2-alias: eq1_freq_onccN |
eq2_freqccN | No | v2-alias: eq2_freq_onccN |
eq3_freqccN | No | v2-alias: eq3_freq_onccN |
eq1_vel2freq | No | |
eq2_vel2freq | No | |
eq3_vel2freq | No | |
eq1_bw | No | |
eq2_bw | No | |
eq3_bw | No | |
eq1_bwccN | No | v2-alias: eq1_bw_onccN |
eq2_bwccN | No | v2-alias: eq2_bw_onccN |
eq3_bwccN | No | v2-alias: eq3_bq_onccN |
eq1_gain | No | |
eq2_gain | No | |
eq3_gain | No | |
eq1_gainccN | No | v2-alias: eq1_gain_onccN |
eq2_gainccN | No | v2-alias: eq2_gain_onccN |
eq3_gainccN | No | v2-alias: eq3_gain_onccN |
eq1_vel2gain | No | |
eq2_vel2gain | No | |
eq3_vel2gain | No | |
Effects | ||
effect1 | No | |
effect2 | No |
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 | ||
md5 | No | |
waveguide | No | |
<control> Header Directives | ||
default_path | P? | "funkar kanske, om det inte ska vara en /" |
octave_offset | Yes | |
note_offset | Yes | |
set_ccN | No | |
#define | No | |
Loading | ||
load_mode | No | |
load_start | No | |
load_end | No | |
sample_quality | No | |
image | No | |
Wavetable Oscillator | ||
oscillator | No | |
oscillator_phase | No | |
oscillator_quality | No | |
oscillator_table_size | No | |
oscillator_multi | No | |
oscillator_mode | No | |
oscillator_detune | No | |
oscillator_detune_onccN | No | |
oscillator_mod_depth | No | |
oscillator_mod_depth_onccN | No | |
oscillator_mod_smoothccN | No | |
Input Controls | ||
loprog | No | |
hiprog | No | |
lotimer | No | |
hitimer | No | |
polyphony | No | |
reverse_loccN | No | |
reverse_hiccN | No | |
start_loccN | No | |
start_hiccN | No | |
stop_loccN | No | |
stop_hiccN | No | |
sustain_sw | No | |
sustenuto_sw | No | |
rt_dead | No | |
Performance Parameters | ||
Sample Player | ||
delay_beats | No | |
stop_beats | No | |
delay_samples | No | |
delay_samples_onccN | No | |
loop_crossfade | No | |
Amplifier | ||
volume_onccN | Yes | Not listed in the book, but supported in Dimension LE. |
volume_smoothccN | Yes | Not listed in the book, but supported in Dimension LE. |
volume_curveccN | Yes | Not listed in the book, but supported in Dimension LE. |
pan_onccN | Yes | Not listed in the book, but supported in Dimension LE. |
pan_smoothccN | Yes | Not listed in the book, but supported in Dimension LE. |
pan_curveccN | Yes | Not listed in the book, but supported in Dimension LE. |
width_onccN | No | Not listed in the book, but supported in Dimension LE. |
width_smoothccN | No | Not listed in the book, but supported in Dimension LE. |
width_curveccN | No | Not listed in the book, but supported in Dimension LE. |
Pitch | ||
pitch_onccN | No | |
pitch_curveccN | No | |
pitch_stepccN | No | |
pitch_smoothccN | No | Not listed in the book, but supported in Dimension LE. |
bend_stepup | No | |
bend_stepdown | No | |
Filter | ||
fil2_type | No | |
cutoff2 | No | |
cutoff2_onccN | No | |
cutoff_smoothccN | Yes | |
cutoff2_smoothccN | No | |
cutoff_stepccN | No | |
cutoff2_stepccN | No | |
cutoff_curveccN | Yes | |
cutoff2_curveccN | No | |
resonance2 | No | |
resonance_onccN | Yes | |
resonance2_onccN | No | |
resonance_smoothccN | Yes | |
resonance2_smoothccN | No | |
resonance_stepccN | No | |
resonance2_stepccN | No | |
resonance_curveccN | Yes | |
resonance2_curveccN | No | |
fil2_keytrack | No | |
fil2_keycenter | No | |
fil2_veltrack | No | |
EG | ||
egN_timeX | Yes | |
egN_timeX_onccY | Yes | |
egN_levelX | Yes | |
egN_levelX_onccY | Yes | |
egN_shapeX | Yes | |
egN_curveX | No | |
egN_sustain | Yes | |
egN_loop | No | |
egN_loop_count | No | |
egN_volume | Yes | |
egN_amplitude | Yes | |
egN_pan | Yes | |
egN_width | No | |
egN_pan_curve | Yes | |
egN_pan_curveccX | Yes | |
egN_volume_onccX | Yes | |
egN_amplitude_onccX | Yes | |
egN_pan_onccX | Yes | |
egN_width_onccX | No | |
egN_freq_lfoX | No | |
egN_depth_lfoX | No | |
egN_depthadd_lfoX | No | |
egN_pitch | Yes | |
egN_pitch_onccX | Yes | |
egN_cutoff | Yes | |
egN_cutoff2 | No | |
egN_resonance | Yes | |
egN_resonance2 | No | |
egN_cutoff_onccX | Yes | |
egN_cutoff2_onccX | No | |
egN_resonance_onccX | Yes | |
egN_resonance2_onccX | No | |
egN_eq1freq | No | |
egN_eq2freq | No | |
egN_eq3freq | No | |
egN_eq1bw | No | |
egN_eq2bw | No | |
egN_eq3bw | No | |
egN_eq1gain | No | |
egN_eq2gain | No | |
egN_eq3gain | No | |
egN_eq1freq_onccX | No | |
egN_eq2freq_onccX | No | |
egN_eq3freq_onccX | No | |
egN_eq1bw_onccX | No | |
egN_eq2bw_onccX | No | |
egN_eq3bw_onccX | No | |
egN_eq1gain_onccX | No | |
egN_eq2gain_onccX | No | |
egN_eq3gain_onccX | No | |
egN_decim | No | |
egN_bitred | No | |
egN_rectify | No | |
egN_ringmod | No | |
egN_noiselevel | No | |
egN_noisestep | No | |
egN_noisetone | No | |
egN_driveshape | No | |
egN_decim_onccX | No | |
egN_bitred_onccX | No | |
egN_rectify_onccX | No | |
egN_ringmod_onccX | No | |
egN_noiselevel_onccX | No | |
egN_noisestep_onccX | No | |
egN_noisetone_onccX | No | |
egN_driveshape_onccX | No | |
LFO | ||
lfoN_freq | Yes | |
lfoN_freq_onccX | Yes | |
lfoN_freq_smoothccX | Yes | |
lfoN_freq_stepccX | No | |
lfoN_delay | Yes | |
lfoN_delay_onccX | Yes | |
lfoN_fade | Yes | |
lfoN_fade_onccX | Yes | |
lfoN_phase | Yes | |
lfoN_phase_onccX | Yes | |
lfoN_count | No | |
lfoN_wave | Yes | |
lfoN_steps | No | |
lfoN_stepX | No | |
lfoN_smooth | No | |
lfoN_smooth_onccX | No | |
lfoN_volume | Yes | |
lfoN_amplitude | No | |
lfoN_pan | Yes | |
lfoN_width | No | |
lfoN_volume_onccX | Yes | |
lfoN_amplitude_onccX | No | |
lfoN_pan_onccX | Yes | |
lfoN_width_onccX | No | |
lfoN_volume_smoothccX | Yes | |
lfoN_amplitude_smoothccX | No | |
lfoN_pan_smoothccX | Yes | |
lfoN_width_smoothccX | No | |
lfoN_volume_stepccX | No | |
lfoN_amplitude_stepccX | No | |
lfoN_pan_stepccX | No | |
lfoN_width_stepccX | No | |
lfoN_freq_lfoX | No | |
lfoN_depth_lfoX | No | |
lfoN_depthadd_lfoX | No | |
lfoN_pitch | Yes | |
lfoN_pitch_onccX | Yes | |
lfoN_pitch_smoothccX | Yes | |
lfoN_pitch_stepccX | No | |
lfoN_cutoff | Yes | |
lfoN_cutoff2 | No | |
lfoN_resonance | Yes | |
lfoN_resonance2 | No | |
lfoN_cutoff_onccX | Yes | |
lfoN_cutoff2_onccX | No | |
lfoN_resonance_onccX | Yes | |
lfoN_resonance2_onccX | No | |
lfoN_cutoff_smoothccX | Yes | |
lfoN_cutoff2_smoothccX | No | |
lfoN_resonance_smoothccX | Yes | |
lfoN_resonance2_smoothccX | No | |
lfoN_cutoff_stepccX | No | |
lfoN_cutoff2_stepccX | No | |
lfoN_resonance_stepccX | No | |
lfoN_resonance2_stepccX | No | |
lfoN_eq1freq | No | |
lfoN_eq2freq | No | |
lfoN_eq3freq | No | |
lfoN_eq1bw | No | |
lfoN_eq2bw | No | |
lfoN_eq3bw | No | |
lfoN_eq1gain | No | |
lfoN_eq2gain | No | |
lfoN_eq3gain | No | |
lfoN_eq1freq_onccX | No | |
lfoN_eq2freq_onccX | No | |
lfoN_eq3freq_onccX | No | |
lfoN_eq1bw_onccX | No | |
lfoN_eq2bw_onccX | No | |
lfoN_eq3bw_onccX | No | |
lfoN_eq1gain_onccX | No | |
lfoN_eq2gain_onccX | No | |
lfoN_eq3gain_onccX | No | |
lfoN_eq1freq_smoothccX | No | |
lfoN_eq2freq_smoothccX | No | |
lfoN_eq3freq_smoothccX | No | |
lfoN_eq1bw_smoothccX | No | |
lfoN_eq2bw_smoothccX | No | |
lfoN_eq3bw_smoothccX | No | |
lfoN_eq1gain_smoothccX | No | |
lfoN_eq2gain_smoothccX | No | |
lfoN_eq3gain_smoothccX | No | |
lfoN_eq1freq_stepccX | No | |
lfoN_eq2freq_stepccX | No | |
lfoN_eq3freq_stepccX | No | |
lfoN_eq1bw_stepccX | No | |
lfoN_eq2bw_stepccX | No | |
lfoN_eq3bw_stepccX | No | |
lfoN_eq1gain_stepccX | No | |
lfoN_eq2gain_stepccX | No | |
lfoN_eq3gain_stepccX | No | |
lfoN_decim | No | |
lfoN_bitred | No | |
lfoN_noiselevel | No | |
lfoN_noisestep | No | |
lfoN_noisetone | No | |
lfoN_drive | No | |
lfoN_decim_onccX | No | |
lfoN_bitred_onccX | No | |
lfoN_noiselevel_onccX | No | |
lfoN_noisestep_onccX | No | |
lfoN_noisetone_onccX | No | |
lfoN_drive_onccX | No | |
lfoN_decim_smoothccX | No | |
lfoN_bitred_smoothccX | No | |
lfoN_noiselevel_smoothccX | No | |
lfoN_noisestep_smoothccX | No | |
lfoN_noisetone_smoothccX | No | |
lfoN_drive_smoothccX | No | |
lfoN_decim_stepccX | No | |
lfoN_bitred_stepccX | No | |
lfoN_noiselevel_stepccX | No | |
lfoN_noisestep_stepccX | No | |
lfoN_noisetone_stepccX | No | |
lfoN_drive_stepccX | No | |
Curves | ||
vN | Yes |
The ARIA Engine from Plouge / Garritan implements some custom sfz opcodes. Only some of them are listed here.
Opcode | Supported | Comment |
amplitude | No | |
amplitude_onccN | No | |
amplitude_smoothccN | No | |
amplitude_curveccN | No | |
pan_law | No |
The following LinuxSampler custom opcodes are planned to be implemented as extensions to the SFZ format.
Opcode | Supported | Comment |
Amplifier | ||
position_onccN | No | |
position_smoothccN | No | |
position_curveccN | No | |
gain_smoothccN | No | |
gain_curveccN | No | |
Pitch | ||
transpose_onccN | No | |
transpose_smoothccN | No | |
transpose_curveccN | No | |
tune_onccN | No | |
tune_smoothccN | No | |
tune_curveccN | No | |
Filter | ||
cutoff2_chanaft | No | |
cutoff2_polyaft | No | |
fil2_random | No | |
EG | ||
egN_position | No | |
egN_position_onccX | No | |
LFO | ||
lfoN_depth | No | |
lfoN_depth_onccX | No | |
lfoN_position | No | |
lfoN_position_onccX | No | |
lfoN_position_smoothccX | No | |
lfoN_position_stepccX | No | |
Amplifier LFO | ||
amplfo_delay_onccN | Yes | |
amplfo_fade_onccN | Yes | |
Filter EG | ||
fileg_delay_onccN | Yes | |
fileg_start_onccN | Yes | |
fileg_attack_onccN | Yes | |
fileg_hold_onccN | Yes | |
fileg_decay_onccN | Yes | |
fileg_sustain_onccN | Yes | |
fileg_release_onccN | Yes | |
fileg_depth_onccN | Yes | |
Filter LFO | ||
fillfo_delay_onccN | Yes | |
fillfo_fade_onccN | Yes | |
Pitch EG | ||
pitcheg_delay_onccN | Yes | |
pitcheg_start_onccN | Yes | |
pitcheg_attack_onccN | Yes | |
pitcheg_hold_onccN | Yes | |
pitcheg_decay_onccN | Yes | |
pitcheg_sustain_onccN | Yes | |
pitcheg_release_onccN | Yes | |
pitcheg_depth_onccN | Yes | |
Pitch LFO | ||
pitchlfo_delay_onccN | Yes | |
pitchlfo_fade_onccN | Yes |