The Sforzando Sampler


You have some interesting ideas here! I like the stereo width idea, especially, as well as the nice defaults section. Also, the Response Time (Spitfire calls it Tightness :grimacing:) is fun to play with if I set the offset_cc200 to 80000 then adjust back toward 36000. Lots of great ideas.

As for the Key Noise On/Off, if I recall correctly, the way I was doing volume, zero never really went to zero sound. There was always a low baseline (now that I listen to it again, no, I don’t hear anything…:grinning:). Also, with an off switch, the sample isn’t triggered at all so there may be a bit of CPU savings. Not strictly necessary.


I’ve had a chance to look and listen a little more to your sfz file and I really like it. I hadn’t noticed the polyphony and note_selfmask settings. Those are a nice touch, too!

I have a couple of ideas that I would like to run by you. First, Christian’s page on “How to Sample” references a couple of directories containing samples; an NR (Noise Reduced) directory and an Original directory. I know it’s easy to use the “Replace” function in your text editor to change directories, but I was wondering if there might be some value in using the “default_path” statement in the control section to indicate which directory the file was using. At the least, it might allow for a cleaner look in the mapping sections.

Also, I noticed that I mapped the dynamic markings to MIDI values a little different than you did. It got me thinking that if we have multiple people creating or converting sfz files, maybe we could decide on a mapping for certain value ranges, or everybody would be doing something different. Again, I don’t know how feasible that is given that many pianos have samples that vary from pp to ff in the samples they include. I don’t think there’s an official mapping, but Wikipedia has a chart showing how 3 vendors are doing the mapping at: Dynamics (Music) If we thought it was worthwhile, maybe we could list the values in the header comments or use define statements to pre-map them.

Also, I don’t think the Key Noise On/Off is an issue. I just wasn’t hearing the difference, but I’ll be the first to admit that my hearing isn’t as good as it used to be!



Yep, default_path works great for those pianos that follow Christian’s advice on directory structure.

As for dynamics, I guess I just split them 50/50 for the two levels. After watching the Kontakt tutorial by Christian’s colleagues (, I’m interested in working on better blending at the split point. Probably could use amp_velcurve_N in that. What was your split point?


I wasn’t aware of the video you mentioned, so thanks for the link to it. I set my split point at 55, but I don’t remember the reasoning for that other than it probably had something to do with the softer samples being pp. But that underscores my point about trying to standardize split points for dynamics, especially for multi-level dynamic pianos. Or would it be better to just use the number of dynamic levels and equally divide the range? So with 2 levels (like the Spring Piano), equally divide the range in 2; with 3 levels, equally divide the range into 3 sections.

I will take a closer look at the amp_velcurve_N statement. You are right, it would be nice to have a smoother blend of samples around each velocity point, rather than just on/off.

I’m glad to hear the default_path works well.


Some of the pianos actually put the midi ranges as part of the sample names (pianos with more than two levels), so we could honor that. In any case, I think we could look at the original version (kontakt is easy to peek into) and try to match it.


I’ve been putting together an sfz template based on your Sid - Spring Piano.sfz file. Plus, I’ve added the Stereo Width and Tightness controls and a Default Settings section from my sfz file. And I still find it easier to understand note names in the mappings, so I’m using those. (I see you re-used a sample over a larger region of the keyboard in the Spring Piano. I did that too, but I’m not sure if it was the same sample.)

I have downloaded several other pianos and noticed that the sample start times vary. So, for the Tightness control, I’m experimenting with setting the “offset” value to the very start of the sample and then using a bipolar curve (-1 0 1) to vary the response time around the start of the samples. I can’t find the “offset_curveccXX” opcode documented anywhere, but it seems to (kind of) work. Would you do me a favor and please try it out? Here is what you would need to add to your sfz file (under the appropriate headers):

... label_cc200=Tightness set_cc200=64 //Mid point of Tightness control; 36000 samples ... offset_curvecc200=2 //2=bipolar (-1 0 1) offset=36000 offset_oncc200=-2000

Also, I’m not sure how to “peek into” a kontakt file. Would you please let me know how you are doing that? Or, maybe I’m just going blind, as well as, deaf. :grinning:



I’ll have a look. I’m asking around about that offset_curveccXX. That’s a new one to me.

I use the midi numbers, because I find it easier to scan a list of numbers and know if one is missing or out of order. Also, I have seen Midi 60 (which is supposed to be middle C) mapped to everything from C3 to C5 depending on the plugin or DAW or Keyboard. So there is no standard. ( We can agree to disagree.

Adding some notes: Sforzando assumes C4 is midi 60, 261.63Hz

As for looking at the mapping in Kontakt, here is David H demonstrating with a new instrument. You can do that with most instruments I believe with the Kontakt player, if the feature hasn’t been locked by the instrument maker.


Ok, I did some more experimenting because I couldn’t explain why I had to use a negative number in offset_onccXX to get it to work the way I thought it should. So, here is another version:

... offset_curvecc200=11 //Use custom curve offset=36000 //for Spring Piano offset_oncc200=2000 //Use 5000 for VERY noticeable difference

at the end of the sfz file, I defined my own bipolar curve:


And then I could use positive numbers in the offset_onccXX statement where 0% Tightness is more lag time before the note sounds and 100% Tightness gives a very fast, “compressed” sound. I wonder if the Type 2 curve isn’t an Inverse Bipolar.

And you’re right about the numbers and names; it’s not a big deal. Actually most of the things I have seen say that the first “C” note on a piano is C1 which makes mapping sample names to note names (like I’m doing) a little confusing.

Thanks, I’ll take a look at the Kontakt video you mentioned!

Anyone giving Air Piano some TLC?

hope its ok to rekindle this conversation cos

  1. Not really sure after reading through, what the consensus is on a minimal set of controls to be included, and what minimum features should be supported, in the file and/or in the user interface.

  2. I have spent two weeks becoming a bit familiar with the SFZ format, having spent what turned out to be a wonderful time, which will continue, with Production Voices Estate Grand LE for sfozando, which has become the best free/donationware sampled piano ever IMHO, and one of the best sampled pianos I have ever used - free or paid - it is really good.

Why do I mention this, though it uses the ARIA extensions for the user interface, while I am not advocating any wholesale lifting of his intelllectual property (i,e how he created the piano in SFZ), I think if we could all look at this instrument as a good example to aim for, in simplicity and as a product that has been obviously well tested, it would help us all wrap our heads around a pianobook SFZ template for pianos.

One of his techniques is to separate the Key Up samples which are triggered whenever you lift up a key (which will still sound as long as the note has not been released e.g cos the pedal is down), from the Key release which only plays back when the note ends…(This way if you held the pedal down, you would hear a Keyup sound quietly when you lit up the key on the controller keyboard, and then a release sample when the pedal was lifted up ending the note.)

It would be excellent to incorporate this, as I consider it an intelligent way to “program” an authentic pisno sound, based on the results I have heard in the Production Voices piano.

  1. May I also suggest with the help of the pianobook admins, we maintain this template as downloadable files on the site, and also have versioning, of the template, so just as you would find in Production Voices sfz, the comments would indicate versioning in the template, so anyone can choose which version of the template to base their instrument on.

  2. It is suggested that we pick a consistent set of samples for the template, or at least a nominated one for each version, which then serves as an in-built example including samples/references to samples, for anyone who wishes to build an instrument based on that version of the template. Unlike the sfz basic example on the sfzformat site, which does not include samples, each template on pianobook, could be bundled into a zip which includes the samples required to fully appreciate the sfz, making it an instantly playable example/template.

  3. KISS - keep it simple.

For those who really like pianos, Production voices has a sale on till the end of Jul 2019, for $59, for 4 pianos in a bundle-


Thank you Jim and Sid for making the sfz files available. I’m keeping my fingers crossed that eventually all piano’s will be ported to sforzando, I would be glad to help in any way.


Hi, the Spring piano sfz uses key_release, since there is only one set of release samples. You are right about Estate Grand LE being an excellent piano (in my opinion), and an excellent example of SFZ programming.

I think a stripped down version of either Spring Piano sfz might be useful as a template.

I need to get back to work coding sfz versions of the pianos here (I ran out of disk space from downloading so many pianos! ha!) I got a brand new hard drive, so I can get back to work now.


I have to say, while Kontakt is an absolutely awesome program and clearly an industry standard I do really like the idea of getting a bit of support behind freeware samplers like SFZ for building our instruments (even better if there was a good open source sampler out there?). Mainly because Pianobook is a sharing/open access community so I think anything that helps towards reducing the barriers of entry should generally be encouraged. I’ll definitely look into the format.


I believe was brought up, at some point, in some other thread?


Oh nice. I also just saw this relatively new one called HISE after a quick Google. You can even build your own stand alone plugins using the source code. Also the code is all available on Github and it seems to be pretty well documented too. Some pretty impressive projects have been built using it’s framework.


Wow, I like that! Great to have a GUI builder, in Kontakt you have to guess where to put all the UI bits. Sure, there are external editors, for versions prior to 6, and 6 comes with a dedicated editor


Any progress on the .sfz front? I wonder why most of the Pianobook libraries are Kontakt only? I understand that it’s seen as an industry standard. But .sfz is a much more accessible sample format, that doesn’t require proprietary or commercial tools to use.

Isn’t there an easy solution for those who create their libraries for Kontakt to easily convert those into .sfz format, so that typically both formats can be supplied to the end user?


Just uploaded sfz file for Christian’s “The 9000ft Piano” . Should be online soon.


Thank you. That was such a beautifully sounding piano. I thought I’d have to resort to using the wavs. Like I do for most of the Kontakt instruments that have them. Thanks again for making an sfz version.


That’s fabulous! Thank you for the effort. All of us non-Kontakt users will now have a chance to use this great sounding piano in our music. Could you tell a bit about your mapping process? Did you do it all in a text editor or did you use a specialized application to do it?

I recently saw an open source software that looked very promising for sf2, sf3 and sfz format creation. Here is the website:


I just use a text editor. So much of the process is just copy/paste and search/replace, that I have not found any special tools that are faster. I tried that polyphone application, but I just couldn’t figure out how to use it. I couldn’t figure out the workflow. I should try again.
This website really helps with SFZ syntax etc.

Ok, so I tested that polyphone program again. The older version would crash my computer when I closed the program, but the new one does not crash.
It can help with finding start offset
It can help with finding loop points (manually or auto, auto alters the sample)
It can help with setting sample tuning (it doesn’t alter the sample, just the playback instructions)

It does not do round robins
Setting the sample mapping is with a spreadsheet, not graphically.
I tried to import the 9000ft piano samples and it truncated the file names so half the samples had the same name.