Discussion:
[Linuxsampler-devel] problem with SFZ release samples
David Gritter
2017-07-19 16:22:12 UTC
Permalink
I have been trying to implement release sample (trigger=release) in
linuxsampler using the sfz engine. For these cases the sample triggered
by note on is looped with loop_continuous, and on note off the release
sample which contains instrument turn off and room acoustic information
should be triggered so that the note on sample release time and the
release sample attack time providing a cross fade so that there is no
audible transient during the transition. This approach has worked well
in the past using GIG files

there are two problems: In recent linuxsampler implementations
(2.0.0svn68) the release sample sounds silently (that is no sound is
heard, but qsampler indicates a sample playing after note off) if the
region defining it has not lovel/hivel qualifiers. If these qualifiers
are present the release sample is never activated. This leads me to
believe that the engine is not preserving the note on velocity for use
with the release sample, and that it is also ignoring a group
amp_veltrack=0 command.

In earlier linuxsampler implementations, the release sounds audibly for
both of the cases above. However, the release time for the playing
sample and the attack time for the release sample are not happening
properly. In most cases I see the release time of the playing sample to
be much faster than specified, and the attack time of the release sample
to be the specified time. Also, the release of the playing sample
occurs some time before the beginning of the attack of the release
sample. In order for cross fade to work these both need to begin at the
same instant in time. In other cases I have seen behavior where the
attack and release profiles have large steps in them.

I have copied below an SFZ file to demonstrate these behaviors. The
sample=sine.wav refers to a 262 Hz sine wave of fixed amplitude duration
5 seconds that I created with audacity. The octave below middle C has
the lovel/hivel qualifiers, the octave above has no such qualifier. The
sfz file sounds the release pitched an octave higher than the note on
pitch so recordings with audacity can easily show the transitions
between samples.

<group>
amp_veltrack=0
ampeg_attack=0.05
ampeg_release=0.05
sample=sine.wav

<region>
lokey=60
hikey=71
pitch_keycenter=60
loop_mode=loop_continuous


<region>
lokey=60
hikey=71
trigger=release
pitch_keycenter=48
ampeg_hold=0.2
ampeg_decay=2
ampeg_sustain=0
loop_mode=no_loop

<region>
lokey=48
hikey=59
lovel=30
hivel=100
pitch_keycenter=60
loop_mode=loop_continuous


<region>
lokey=48
hikey=59
trigger=release
lovel=30
hivel=100
pitch_keycenter=48
ampeg_hold=0.2
ampeg_decay=2
ampeg_sustain=0
loop_mode=no_loop


Thanks for your attention
Dave Gritter
Christian Schoenebeck
2017-07-21 12:24:33 UTC
Permalink
Post by David Gritter
there are two problems: In recent linuxsampler implementations
(2.0.0svn68) the release sample sounds silently (that is no sound is
heard, but qsampler indicates a sample playing after note off) if the
region defining it has not lovel/hivel qualifiers. If these qualifiers
are present the release sample is never activated. This leads me to
believe that the engine is not preserving the note on velocity for use
with the release sample, and that it is also ignoring a group
amp_veltrack=0 command.
I haven't checked this, but I guess the sfz engine is using the note-off
velocity for the release triggered samples instead. And most probably your
MIDI keyboard is sending note-offs with velocity 0. Maybe somebody who is more
familiar with the sfz format details can comment on the common expected
behavior here.

CU
Christian

Loading...