Documentation for dynamics/volume control for Zerberus (sfz) fonts

• Apr 18, 2018 - 04:19

Is there any documentation how to control dynamics/volume in sfz (zerberus) fonts?
There seems little or no control via the score when sfz fonts are used, the only thing that really controls volume is mixer...


In reply to by Jojo-Schmitz

Dynamic markings should work equyally well regardless of soundfont format. Perhaps there is a bug in your particular soundfont, or perhaps there is something you have set incorrectly in your particular score. We would need you to attach your score and give more information about the problem you are perceiving in order to help.

In reply to by Marc Sabatella

I use Virtual Playing Orchestra fonts from Musescore recommended download site.

Dynamics markings "work" but the associated volume levels for sfz fonts are not realistic. Attached test2 score and graph of the exported wav file (your system does not accept wav attachments) show that the difference between pp and ff in terms of amplitude is quite small, the amplitude ratio being only 1:2.

There seems also a low-end limit to volume. ppppppp is not any quieter than ppp. Velocity offset/user settings seem ignored when sfz fonts are used.

sfz volume levers are very different when sf3 default font is used with identical dynamic markings in the score.

I am seeking documentation because I wold like to understand/modify volume levels in sfz fonts so that they become realistic.

Attachment Size
test2.mscz 3.99 KB
test2.png 31.79 KB

In reply to by

If you attach a link to the specific soundfont you are using, we're happy to check it out. It's possible it's just implemented in a way where the dynamic range is more limited than some other soundfont - eg, how the samples work for different velocities. After al, some soundfonts provide only a single sound that is scaled to produce different velocities, others provide say one soft sound and one loud one, others provide a whole bunch of intermediate values, etc. None of this is under MuseScore's control

In reply to by Marc Sabatella

Following link from Handbook I use the Performance Orchestra from
the exact download link for scripts is…

In the sample score that I enclosed I used 1-st violins script included in "all-strings-SEC-PERF.sfz"

Musescore must use some parameters from sfz scripts to interface with soundfonts. If there was some documentation I could try to help myself...

In reply to by Marc Sabatella

I just tried using Standard version and while sounds are somehow different, dynamic range is EXACTLY THE SAME, i.e. ppp-ffff range is reduced to pp-mp. Please see the view of attached wav file.

It seems that Musescore cannot use any sfz scripts to have sensible dynamic range. Some documentation would very useful. Maybe with documentation we can find some bugs

Attachment Size
sfz-sr3-std-compare.png 7.48 KB

In reply to by

Which sounds specifically? Like I said, it has to be the normal / mod wheel version. I tried with French horn and it works perfectly. MuseScore sends velocity info for dynamics, it's totally up to the soundfont and the specific Sou d within it whether velocity is interpreted that way or not. I promise this works if you use the correct sounds.

In reply to by

I have corrected the attached file for identical volume at mixer, so that PERF, Standard and sf3 comparison is fair. It turns out that dynamic range for standard Orchestra is even smaller than for PERF....

Just to be sure I downloaded fresh copies of both orchestras and soundlibs and restarted Musescore too before exporting wav file.

It is possible that soundfonts are partially incompatible with Musescore. But there is no documentation how exactly Musescore uses sfz fonts, so that no one knows how to modify scripts...

Attachment Size
sfz-sr3-std-compare-corect.png 7.14 KB

In reply to by

So how to set up the orchestra? I downloaded orchestra scripts and all fonts and reinstalled it.

Which specific scripts do I use for strings? Brass? Woodwind?

It seems that the list is very limited because I have not found any correct scripts by trial and error.

Also it is not clear how to identify correct soundfonts used by Musescore that will actually work? By viewing scripts in text editor?

In reply to by

As explained on the VPO website (specifically, here:, you need to use the "normal MOD wheel" sounds for most purposes. The other articulations work too, but of course are only for those specific sounds.

So, for instance, for violin, you would use 1st-violin-SEC-normal-mod-wheel.sfz for a whole section, or 1st-violin-SOLOS-normal-mod-wheel.sfz for just a solo violin. I tried them both and they work exactly as they should. So does 1st-violin-SEC-pizzicato for pizzicato, 1st-violin-SOLO-sustain, etc. In fact, other than the DXF sounds, they all work, but of course the "normal" ones are the ones you "normally" choose.

So, bottom line: you don't need special documentation from MuseScore. MuseScore uses velocity to control dynamics in the traditional way most synths have done since the dawn of MIDI in the 1980's; there really isn't anything special to document. What you need to do is read the documentation provided by VPO to be sure you are using sounds that respond to velocity for dynamics.

In reply to by Marc Sabatella

Thank you Marc for clarification.
I like sounds of PERF orchestra much more though. "Standard orchestra" sounds a little like a school orchestra...

Is there any documentation about sfz file commands and their syntax/meaning?

I still would like to use PERF sfz files, but in Musescore they require 2 staffs for each instrument (one quiet and one loud mixer entry) to cover the required dynamic range. This means that the score is for computer-use only and parts cannot be easily exported.

I like the concept of mid-staff instrument change, but one thing that needs upgrade is an ability to choose a mixer entry on each instrument change. Mandatory new mixer entry for each mid-staff instrument change is not good because it clutters the User Interface.


In reply to by

As far as I know (again, going from the VPO site itself), it's the exact same samples though, just different scripts. So any difference you perceive is probably an illusion, assuming you have the same version of each. So I'd encourage you to listen again, maybe do some apples-to-apples comparisons (same score, same instruments). If you remain convinced there is some sort of audible difference and wish to continue with your approach of manually changing between samples, then instead of mis-using the change instrument command for these switches, create a custom instruments.xml that sets up the channels for you and then switch using staff text. This will work better for your purposes.

SFZ format is pretty well documented any number of places, just do a web search.

Some day MuseScore may support use of controllers for dynamics in a way that works with VPO.

In reply to by Marc Sabatella

I know that samples are the same. However, scripts change many parameters how these "raw" sounds are played or articulated, and this modifies not just perceived sound but also objective acoustic spectrum (you can check it by doing spectrum analysis of exported *.wav file of a piece).

Limited dynamic range in PERF orchestra in Musescore makes "exact" comparison tricky. One difference that is immediately obvious is that dynamic changes in PERF scripts seem smooth and using NORMAL scripts dynamic changes seem abrupt by comparison.

I could not find any scripts/samples that handle "con sordino" in strings . Have you heard of any?

It looks like I need to make my own sfz scripts with wider range of articulations and extra mixer entries for special loudness effects. Then in Musescore I will use staff text to choose articulations and mixer settings for specific instruments, just like I use "pizzicato" and "arco" for strings today.

Existing scripts use "spaghetti-coding" and are awkward to manage. I plan to make good use pf <#include> feature to make a script set organized and easier to manage.

Thank you again for your help.

Do you still have an unanswered question? Please log in first to post your question.