The Future of the SFZ Format

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

Post

Many thanks to infectedpimple for starting this very valuable discussion, and to all the participants.

One of the themes here is the absence of a GUI instrument editor. A couple of the roadblocks have already been mentioned. One is that the developer of such a program would be shooting at a moving target. Another is that the open source and free software development communities are not as vibrant in the computer music field as they are in other aspects of computing.

The world needs an SFZ sampler, ideally with a simple wave editor for trimming samples, setting loop points, and normalizing; a graphical representation for manipulating key ranges and velocity layers; some means for keeping track of articulation groups; and (as someone wisely suggested earlier in this thread) profiles for several target SFZ players. In its absence I have been trying to figure out what to do, with little success.

One approach is to use an existing editor like Kontakt, Halion, LinuxSampler or whatever and rely on one of the existing translation programs to move instrument definitions to and from SFZ files. The list includes Chicken Systems Translator, CdXtract, Extreme Sample Converter and Awave Studio. Which leads to my noobie question for all you seasoned veterans:

Which combination of instrument format (.nki, .gig., etc.) and conversion software provides the most complete (strike "most complete" and replace it with "least incomplete") translation back and forth?

Another approach I am considering is an editor that stores its instruments in text format, so that a converter can be written and maintained by somebody with my archaic and rusty programming skills. TX16Wx is a great tool in its own right, and it writes its instruments in XML. I haven't started trying to map back and forth between its opcodes and SFZ opcodes, so I don't know what the problems are. There may well be other candidates.

Comments and suggestions are welcome. Thank you.
Last edited by rrichard63 on Sun Jun 08, 2014 4:39 pm, edited 2 times in total.

Post

David (or anyone else who knows),
davidv@plogue wrote:... you can 'overload' any parameter in every child 'leaf'. ...
Could you explain to a noobie what this means, perhaps with a simple (if there is such a thing) example? Thanks!

Post

Code: Select all

<global> transpose=-12

<group> loop_mode=one_shot
  sample=sine.wav

<region> lokey=64 hikey=96 loop_mode=continuous
  sample=saw.wav

<region> lokey=16 hikey=48 loop_mode=loop_sustain transpose=+12
  sample=square.wav

<group> lokey=16 hikey=96 loop_mode=continuous
<region> lovel=1 hivel=16 sample=1.wav
<region> lovel=17 hivel=127 sample=2.wav
What plays if I hit note 100? Where is that defined? Well, the defaults for lokey and hikey are 0 and 127 but there's no such thing as a global setting for sample, hence we have to see if there's anything at a lower level overriding it. The <global> gives us transpose=-12 but no sample. The first <group> gives us a sample and a loop_mode. Neither of the two contained <region>s applies and nor does the second <group>, so we've got all the information we can get. So we play sine.wav with transpose=-12 and defaults for all other known parameters.

What plays if I hit note 32? Well we get through as far as <group> just the same and the first <region> does not apply quite clearly. The second <region> has a key range this falls into, so it applies. Here two previously-set values get overridden in the child leaf node: loop_mode (from <group>) and transpose (from <global>) to give the set of parameters used.

But also, the second <group> now matches. Depending on the velocity, we'll also play 1.wav or 2.wav (from whichever <region> matches) with loop_mode continuous (from the second <group>) and transpose=-12 (from <global>).
Last edited by pljones on Sun Jun 08, 2014 5:05 pm, edited 1 time in total.

Post

pljones wrote:... Here two previously-set values get overridden in the child leaf node: loop_mode (from <group> and <transpose> from <global>) to give the set of parameters used. ...
Thank you. This is very helpful.

Post

I just spotted I could have made it more fun by moving the second group's loop_mode=continuous down to one of the contained regions :D

Post

rrichard63 wrote:One of the themes here is the absence of a GUI instrument editor.

There is SFZEd by Steve Holt (see the attached picture). Also, one can use Scripting (e.g., Microsoft Visual Basic) to write information to a TXT file (which gets saved as an SFZ file) based on "filename formatting" parameters of WAV files and this method requires no GUI.
rrichard63 wrote:The world needs an SFZ sampler

Plenty of Samplers already import SFZ (e.g., Camel Audio Alchemy, Image-Line DirectWave). As you mentioned, there's no shortage of Sample Converting programs either to convert to other formats (e.g., SF2).
You do not have the required permissions to view the files attached to this post.

Post

trillnox wrote:There is SFZEd by Steve Holt (see the attached picture).
I have this program. I find it harder to use than instrument editors with wave editors for trimming and setting loop points, and GUI representations of keymaps, velocity layers, etc.
trillnox wrote:Plenty of Samplers already import SFZ (e.g., Camel Audio Alchemy, Image-Line DirectWave). As you mentioned, there's no shortage of Sample Converting programs either to convert to other formats (e.g., SF2).
As I asked above:
rrichard63 wrote:Which combination of instrument format (.nki, .gig., etc.) and conversion software provides the most complete (strike "most complete" and replace it with "least incomplete") translation back and forth?
Thanks in advance.

Post

rrichard63 wrote:
trillnox wrote:There is SFZEd by Steve Holt.
I have this program. I find it harder to use than instrument editors with wave editors for trimming and setting loop points, and GUI representations of keymaps, velocity layers, etc.
Hmm, well what I do is separate WAV editing from SFZ Patch making. SFZEd gives a "virtual keyboard" interface which works as long as you have sfz.dll for "Auditioning".
rrichard63 wrote:As I asked above: Which combination of instrument format (.nki, .gig., etc.) and conversion software provides the most complete (strike "most complete" and replace it with "least incomplete") translation back and forth?
It's likely to me that Chicken Systems is the best.

Post

...And where are we now?

Well, I'd say we're in the same place JavaScript would be if there weren't an abundance of online references/guides on it.

What do we get if we try to find out what sfz is, or how we can use it? A couple of obscure, outdated pages that list the old opcodes with little or no explanation of how to use them or construct a simple file. And as for the sfz 2.0 spec, well there seems to be a worldwide conspiracy to keep that book selling.

It's hardly surprising that most people who look into it would quickly dismiss it as inaccessible. They may just as well go for the proprietary options that have all the fancy bells and whistles because at least they'll get some documentation to tell them how to use all the fancy bells and whistles.

Without proper documentation, an sfz player is only as good as the sample libraries you can get for it. Kind of defeats the point to me.

I don't use Sforzando myself as I haven't figured out how to make it portable yet, but it seems to be the foremost player at the moment. Having comprehensive sfz support and being free, I'd imagine it should be. As such, I'd expect them to lead the way in terms of documentation. whether they'd actually want to pull people to their site to browse online resources is a question for them.

Post

Marctwo wrote:... What do we get if we try to find out what sfz is, or how we can use it? A couple of obscure, outdated pages that list the old opcodes with little or no explanation of how to use them or construct a simple file. And as for the sfz 2.0 spec, well there seems to be a worldwide conspiracy to keep that book selling.

It's hardly surprising that most people who look into it would quickly dismiss it as inaccessible. They may just as well go for the proprietary options that have all the fancy bells and whistles because at least they'll get some documentation to tell them how to use all the fancy bells and whistles.

Without proper documentation, an sfz player is only as good as the sample libraries you can get for it. Kind of defeats the point to me. ...
+1. Very well said. I would add that this situation also make it hard, if not impossible, to develop and maintain players that are compatible with one another -- let alone software to build instruments.

Post

Marctwo wrote:And as for the sfz 2.0 spec, well there seems to be a worldwide conspiracy to keep that book selling.
It covers 1.0 and 2.0 and provides a clear reference guide. It's worth getting if that's what you're after.

Compare the number of people using JavaScript and SFZ. Then compare the number of available resources. You'll probably find it's reasonably in line.

It looks like I need to put some meta tags into my SFZ page as Google now seems to complete ignore it. Or maybe I need to pay them or something.

Post

From my research, Sfz is not a viable format to sell multi-sampled sounds. There are too many compatibility problems with it... It's not very popular and most people don't care about it. Most people are either using Kontakt or any of the commercial sampler options available out there (mostly Ableton Live racks using simpler/sampler).

It's only interesting if you're a software developer who wish to implement the format into their software synthesizer. Otherwise, I don't see the point. For simple mapping it's okay, but I'm not even sure my ADSR programming would translate well in the samplers and synths that loads Sfz. No good...

Post

SampleScience wrote:For simple mapping it's okay, but I'm not even sure my ADSR programming would translate well in the samplers and synths that loads Sfz. No good...
SFZ 2.0 can do any sort of flex EG other samplers can.
No there is no conspiracy involving the book. Its copyrighted work. I for one would love to have the time to build an official spec and publish it for free. time Time time.
David Viens, Plogue Art et Technologie Inc. Montreal.
https://twitter.com/plgDavid
https://plogue.com

Post

SampleScience wrote:From my research, Sfz is not a viable format to sell multi-sampled sounds. There are too many compatibility problems with it... It's not very popular and most people don't care about it.
I don't know about the sell part, but it's certainly popular with people who like free stuff. Lots of times you see comments at BPB to the effect of "I wish there was an SFZ version".

Post

davidv@plogue wrote:
SampleScience wrote:For simple mapping it's okay, but I'm not even sure my ADSR programming would translate well in the samplers and synths that loads Sfz. No good...
SFZ 2.0 can do any sort of flex EG other samplers can.
No there is no conspiracy involving the book. Its copyrighted work. I for one would love to have the time to build an official spec and publish it for free. time Time time.
Please, oh please, try to find that time. Two years, three years, no problem! Maybe at the very least consider taking a long walk to think about how you would do it, if you would do it. It could do so much good and since you're an expert, you really are the person to do it.

The fact that the standard is so hard to get hold of makes the format practically a closed one. The only way to learn more about it is to come by instruments that others have made and then trial and error of what works where and how. It's clearly very versatile, and had it been entirely free I'm sure it would have caught on better.

Post Reply

Return to “Samplers, Sampling & Sample Libraries”