SFZ format documentation

Sampler and Sampling discussion (techniques, tips and tricks, etc.)
Post Reply New Topic
RELATED
PRODUCTS
Bjoerns Sample Mapper

Post

Bruzz wrote: Sun Mar 15, 2020 8:24 pm Hi all,
some findings using rgc:audio sfz version 2.0.0.1 and plogue sforzando v1.959 (Aria VST3.x plugin v2.059):

sfz Multitimbral / MIDI Multimode:
- on the first instrument you want to use in multi-mode add lochan=1 hichan=1 underneath all its <group> tags.
- Repeat on the next instrument you want to use in multi-mode with lochan=2 hichan=2 after <group>.
- can do that up to lochan=16 hichan=16
- load each modified *.sfz file one by one and verify it gets triggered on the intended channel only
- then copy all these different *.sfz into one large *.sfz file
- load that large file into rgc:audio sfz. You can now address the instruments on their corresponding channels. Nice: most of the registered MIDI controllers work for each channel independently. So you can change volume (cc07), pan(cc10), expression(cc1), reverb(cc91) ... for each instrument seperately.

(Works with rgc:audio sfz. Not working with plogue sforzando - where you would use multiple instances instead.)


MIDI Program/Patch Changes:
Although there seems to be no response for bank and patch change, a simple workaround can enable switching programs via MIDI:
Similar to the multimode method described above, you can store different instruments into one large *.sfz. Instead of the lochan and hichan filter, define a dedicated controller you want to use for program switching. For each instrument (that is for all <group> of one instrument/patch/program) define a corresponding value for that controller via loccNN and hiccNN

eg. for cc32:
<group> // patch 1
locc32=1 hicc32=1
...
<group> //patch 2
locc32=2 hicc32=2
...


In the MIDI file controller 32 = 1 will cause patch 1 to respond to all following note on and off. Sending controller 32 = 2 will cause patch 2 to respond thereafter.

Tested working with:
CC01
CC02
CC32 (Bank Select LSB)

NOT working with:
CC00 (Bank Select MSB)
CC06 (Data Entry)
CC38 (Data Entry)

(Works with both rgc:audio sfz and plogue sforzando)

A combination of multimode and program switching did not work. So it is either multi-channel (MIDI multi mode) or switchable multi patches (on one MIDI channel only) with predefined programs.


List of registered sfz standard MIDI controllers:
Note On/Off
Pitch Bend (default to ±2 semitones)
Modulation Wheel (CC1)
Volume (CC7)
Pan (CC10)
Expression (CC11)
Reverb Size (CC12)
Chorus Speed (CC13)
Sustain (CC64)
Attack (CC73)
Cutoff (CC74)
Hold (CC76)
Decay (CC75)
Reverb Level (CC91)
Chorus Level (CC93)
Sustain (CC70)
Release (CC72)
All Controllers Off (CC121)
All Notes Off (CC123)
These seem to be channel-sensitive. Which allows for different settings on different channels.

Caution: cc91 will stubbornly overwrite all effect1 definitions. So if you use different effect1 (reverb) definitions in your sfz file, (e. g. in a drum set), don't use cc91 ! May need to restart the DAW to get rid of the cc91 tenacity ...


Compatibility:
In order to get a similar response to CC11 of a sfz v1.0 file (rgc:audio sfz) on plogue sforzando add the following to the sfz file:

<global>
amplitude_oncc11=100
<control>
label_cc011=11 Expression
set_cc011=127 // Power-on Default Value: Expression


Couldn't find an appropriate solution for filter cutoff, however.
rgc:audio sfz automatically responds to cc74 (cutoff)
For sfzorzando the opcode cutoff_cc74=9600 is necessary. Works, but results are completely different.

Best regards
Btw, about GM Bank, several years ago I've made a conversion of Fluid GM bank sf2 to Aria/sforzando format. Everything load and functioning fine. It just not having Midi CC for the presets

If anyone is interested to get it, for using or for learning purpose or anything, I can upload it to a dropbox link. Just let me know.

Post

Bruzz wrote: Sun Mar 15, 2020 8:24 pm MIDI Program/Patch Changes:
Although there seems to be no response for bank and patch change, a simple workaround can enable switching programs via MIDI:
I'm not quite sure what you're saying here, but loprog/hiprog work just as I hoped they would, in Sforzando. The tricky part is managing CC's and curves used differently by different SFZ instruments, and also managing directories when the SFZ mapping uses them. Also, group numbers have to be managed.

The different CCs part is fine if they're just input from MIDI, as they only affect the current program. The tricky part is the Control screen and CC labels. Actually, maybe it's only the labels that are an issue. If two

It's nice to have multiple MIDI programs so that I can have a lot more than 16 different sample sets loaded, which is the limit if I only use MIDI channels. (Actually my limit is 8 MIDI channels because of messy details. This is for "live" playing from my keyboard, no such limitation in a DAW.)

David groans when hearing about this kind of use of Sforzando. "It's not meant to be a host!"

BTW, I don't copy the sfz files together. I #include them all from a master sfz file. I have a bash script that builds the master, which looks for stuff I'll need to fiddle, and changes the included files regarding paths.

Post

Love using bash for things like this :)

Post

Bruzz wrote: Sun Mar 15, 2020 8:24 pm Hi all,
some findings using rgc:audio sfz version 2.0.0.1 and plogue sforzando v1.959 (Aria VST3.x plugin v2.059):

sfz Multitimbral / MIDI Multimode: ...
Thanks to let us know how to realize multitimbrality in sfz-format. :tu:
But yet I have to remark:

This multitimbrality is a way of thinking and construction from
the hardware era of the 80s. In those days, hardware ROM
players and synthesizers were connected to the computer via
a MIDI line. And this one MIDI line could - thanks to the
multitimbrality - control 16 instruments.

But nowadays samplers are directly integrated into the DAW.
That's why multi-itimbrality is no longer important. On the
contrary: It's a legacy from times gone by!

And it is much better to make it as simple as possible: One
instrument - one sampler - one audio channel! The simpler
the better for creativity!

In this respect, I find Sforzando absolutely brilliant: it's simple
and fast! If I need more instruments, I simply take more
instances of Sforzando.

Halion and Kontakt still have this outdated concept of multi-
timbrality. In this regard it is nice you pointed out how to
make Sforzando or SFZplayer multitimbral (maybe anyone
still wants this so ardently ... ) :clap:
free mp3s + info: andy-enroe.de songs + weird stuff: enroe.de

Post

Don't forget that some of use software instruments live, driven by a MIDI keyboard. While it's true that we can have a different plugin on each MIDI channel, there are times when it helps to have multiple instruments on one MIDI channel (because we only have 16!) or multiple instruments in one plugin (for various technical reasons, but mostly convenience.)

This is a very different use-case than using a DAW, and it's nice if people keep it in mind when making decisions about what's important and what's not. It's not entirely a legacy thing.

Post

For those who missed it we have some updates on the website mainly regarding the opcodes page.
Recently I've added a javascript library that permits tables column sorting, and now with an awesome contribution from @jpcima also a script to filter opcode names, versions and categories. Hope you'll find them handy!

Post

Great, I've been wanting filtering for a while, probably over a year now. The site's really getting more and more useful.

Post

Is that possble to build a sfz file pitch shift without change speed from a single sample ? thanks !

Post

I don't think any current SFZ player has that feature. I've pre-rendered some pitch-shifted drums an octave down for a kit at some point, I thiiiiink. Or at least I tried, not sure if those made it into the final product.

However, as a matter of the SFZ specification itself, the pitch modulations aren't required to change speed as well; that's just probably the easier and more CPU-efficient way to implement pitch shift. So there's nothing to prevent someone from making an SFZ player that does this.

Post

DSmolken wrote: Fri Nov 06, 2020 8:00 am I don't think any current SFZ player has that feature. I've pre-rendered some pitch-shifted drums an octave down for a kit at some point, I thiiiiink. Or at least I tried, not sure if those made it into the final product.

However, as a matter of the SFZ specification itself, the pitch modulations aren't required to change speed as well; that's just probably the easier and more CPU-efficient way to implement pitch shift. So there's nothing to prevent someone from making an SFZ player that does this.
I get it now, thanks!

Post

Camel Audio's Alchemy was amazing sfz player

Post

need help for round robin
3 samples for every key play round robin

<region>
lokey=0
hikey=127
pitch_keycenter=60
seq_length=3 seq_position=1 sample=Jack FX Horn 10.wav
seq_length=3 seq_position=2 sample=LEAD 5.wav
seq_length=3 seq_position=3 sample=STAB 5.wav

not working ......

Thanks for help !!

Post

bjclulu wrote: Mon Nov 09, 2020 2:32 pm need help for round robin
3 samples for every key play round robin

<region>
lokey=0
hikey=127
pitch_keycenter=60
seq_length=3 seq_position=1 sample=Jack FX Horn 10.wav
seq_length=3 seq_position=2 sample=LEAD 5.wav
seq_length=3 seq_position=3 sample=STAB 5.wav

not working ......

Thanks for help !!
Of course, this can't work. You need one region per
sample:

<group>
lokey=0
hikey=127
pitch_keycenter=60
seq_length=3

<region>
seq_position=1 sample=Jack FX Horn 10.wav

<region>
seq_position=2 sample=LEAD 5.wav

<region>
seq_position=3 sample=STAB 5.wav
free mp3s + info: andy-enroe.de songs + weird stuff: enroe.de

Post

Works now !!
Enroe thank you !

Post

<group>
lokey=0
hikey=127
pitch_keycenter=60
seq_length=3

<region>
seq_position=1 sample=Jack FX Horn 10.wav

<region>
seq_position=2 sample=LEAD 5.wav

<region>
seq_position=3 sample=STAB 5.wav

Dont know why works fine in sforzando but not in zamplerRX

also

<group>
lokey=0
hikey=127
pitch_keycenter=60

<region>
sample=Jack FX Horn 10.wav
hirand=0.250

<region>
sample=LEAD 5.wav
lorand=0.250
hirand=0.500

<region>
sample=STAB 5.wav
lorand=0.500

works fine in sforzando but not in zamplerRX ???

Post Reply

Return to “Samplers, Sampling & Sample Libraries”