Home Products Shop Support Info    
sfz FAQ: Basics 

What's sfz?
sfz is a freeware high-quality multitimbral player.
sfz was developed as a 'component' for rgc:audio's next synthesizer. However, we offer two versions of the raw component packed in an instrument: sfz (freeware) and sfz+ (commercial).

What can I do with it?
You can play SoundFonts (.sf2 files) multitimbrally with high quality without spending any money. It can also play standard wave files (.wav) and ogg-vorbis compressed files (.ogg).

What platforms does it support?
sfz can be loaded in any application capable of hosting VSTi plugins, on Microsoft Windows platforms.

What is a SoundFont?
A SoundFont is a sample, instrument and performance data collection in a single file. The file format is very powerful: it allows unlimited keyboard regions, velocity switching, supports high samplerates (96k/192k) and stocking samples in a very convenient way.



How do I install sfz VSTi?
Run the installer (sfz<version number>.exe), and when asked, point it to your VstPlugins folder. Then, restart the VST host in which you intend to use it.


How do I load a SoundFont into sfz?
There are two methods:
1- Click on the 'SoundFont' selector. The "Open SoundFont" dialog will appear, from which you can select the desired soundfont.
2- Drag any .sf2 file from a Windows Explorer window.

Please note that loading a new SoundFont will replace any SoundFont already loaded into sfz. Only one SoundFont file can be loaded in each instance of sfz.

How do I select a preset for each MIDI channel?
1- Select the channel either using the CHANNEL text selector or the channel menu (by clicking the small arrow in the CHANNEL text selector).
2- Select the desired bank and program using the BANK/PROGRAM text selectors (or menus).

Alternatively, it is possible to send a MIDI Bank/Program Change message on the appropriate channel to sfz.

Is there any way to preview the selected preset?
Yes. In the bottom part of sfz interface there's a 'preview ribbon'. Clicking (and dragging) on it will send MIDI notes to sfz, on the selected channel. The POLYPHONY and LAYERS indicators will show the number of Voices and Layers played.

The vertical position of the mouse inside the preview ribbon determinates the velocity of the note sfz will play.

When pressing left and right mouse buttons simultaneously on the preview ribbon, sfz will perform an 'All Notes Off' and 'All Controllers Off' on selected MIDI channel. This is a quick method to revert to original settings.

What is a Voice?
A voice is a set of layers which are defined inside the SoundFont. A new voice is allocated for each new MIDI Note-On message, and it expires after the last layer in the voice has finished playing.

What is a Layer?
A layer is the individual unit of polyphony in sfz. Layers can effectively be considered as 'simultaneously-playing wave files'.

The SoundFont standard allows an unlimited number of layers to be assigned to individual notes and velocity ranges. For instance, a single note could have several dozen layers, which could switch according to incoming MIDI note velocity. Any kind of multiple keyboard-switching and velocity-switching can be obtained with a SoundFont, and sfz will play them accordingly.

How many Voices can sfz play?
sfz can play a maximum of 256 -true- voices.
This means that if a voice has 10 layers in the SoundFont definition, sfz will play up to 2560 layers. Note that many other instruments’ polyphony specification is indicated in terms of Layers, not Voices.

Can the number of voices be limited?
Yes. Use the POLY selector to specify the maximum number of voices a channel will play. After reaching POLY setting, subsequent voices will 'steal' another voice, starting with the oldest voice.

How many Keyboard Splits/Velocity Layers per voice sfz supports?
There is no limit to the number of keyboard splits or velocity Layers per Voice in sfz.

What is the 'Quality' setting in sfz?
The QUALITY text selector (and menu) in sfz allows you to alter the playback quality from standard (draft) to extremely high.

Except when using extreme sample sets containing one or several samples for each note across the keyboard, sample playback engines have to perform the trivial task of changing the pitch of a sample by using some algorithmic process.

This process is known as 'resampling', and there's a lot of theory and practical implementations of it. You can find more information about resampling at http://www.google.com

The goal of a resampling engine is to change the pitch of a sample without introducing any degrading sonic artifacts such as aliasing, delays, phase-shifts, frequency response alterations, noise and distortion. At the same time, this process will most likely define the CPU utilization of the whole sampler engine.

As a consequence, there is always a quality vs. speed compromise in any resampling algorithm. Whereas most sampling hardware and software uses a pre-determined quality level for the resampling algorithm, sfz allows the user to determine the level of resampling quality their processor can afford, by using the QUALITY selector. This also offers the possibility of using the highest quality settings when rendering, even under conditions where the processor power isn't enough for real-time playback.

A simple test of the sfz's interpolation performance can be seen at:

sfz performance test

This test was performed over a one-octave range for comparison purposes only. George Raoul Reales, from DiscoDSP (http://www.discodsp.com) has kindly compiled the performance tests of several well-known samplers at http://www.buzzxp.com/samplers/.

As the SoundFont specification states that the required resampling engine should be capable of an up-pitching in a two octave range, we've also plotted sfz performance for that range:

sfz two octaves transpose test

Ok, looks terrific but... does a sample really need to be transposed over a two-octave range?
No, unless you're after that Mickey-Mouse-Violin.

Even if the resampling engine is capable of this feat, the need to do this indicates that the sample-set being used is very limited (i.e. a small amount of samples relative to the range it occupies over the keyboard), and so the results will most likely be poor anyway.

So, why did you make the interpolator capable of that?
Because we wanted to write the best possible SoundFont Player, and the SoundFont specification states that:

The SoundFont 2 specification wavetable oscillator model is capable of playing back a sample at an
arbitrary sampling rate with an arbitrary pitch shift. In practice, the upward pitch shift (downward
sample rate conversion) will be limited to a maximum value, typically at least two octaves.

Ok. How many voices can sfz play in my PC?
As described above, a 'Voice' can have many Layers, and two Voices can have two different numbers of Layers. Therefore, it would be more useful to consider how many Layers your PC can play.

There are two main factors when determining this: the Quality level and, of course, the speed of the PC’s CPU. As a reference, the Pentium IV/3GHz used to write this document can play 700 simultaneous layers in the lowest interpolation mode, and about 210 in the highest before crackles begin to be heard. DFD (Disk Streaming) mode will take even higher CPU under certain circumstances.

Please note that many sampler manufacturers refer to this amount of Layers as ‘voices’.

What sample rates does sfz support?
All, sfz will work at all standard samplerates including 11kHz, 22.05kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 192kHz and 384kHz, plus any arbitrary samplerate supported by the host application.

All quality modes will work at any samplerate.

Does sfz play from disk?
Yes, when DFD (direct from disk) mode is used.
In all other modes, it loads either the whole SoundFont file or the samples used by the selected preset (according to the MODE setting) into memory in order to play it.

How much memory does sfz take?
sfz features four loading modes, and the amount of memory a SoundFont file can take depends on the loading mode selected, as follows:


In this mode, sfz will attempt to load the whole SoundFont file to memory at once, and will convert all samples to 32-bit during the loading operation.
This scenario results in optimum performance and flexibility: Bank/Program change can be sent to sfz while voices are playing, without interruptions, clicks or any kind of artifacts.

However, this requires a memory amount of around 2.5 times the size of the SoundFont file. In other words, in order to load a 100Mb SoundFont file, for example, you will need about 250Mb of free RAM. For computers with a lot of RAM, or for small SoundFont files, this is the suggested setting.

If the required amount of memory for the 32-bit storage isn't available, sfz will switch to SF16 automatically, and will load all samples as 16-bit, performing the conversion to 32-bit 'on-the-fly' during playback.
Using this method, memory usage is cut by half, but performance will suffer as the conversion process takes some extra CPU cycles.

Only processors featuring SSE acceleration can use SF32 mode.


sfz will load the whole SoundFont file, but all samples will be loaded and played as 16-bit. This mode has the advantage of taking half of the memory space than SF32, but the processor utilization will be higher due to the real-time conversion process.


When in this mode, only the samples required by current preset will be loaded from disk, and converted to 32-bit during the loading operation. As a result, only the memory required for those samples will be used, which can drastically reduce the RAM required to play certain SoundFont files.

In this mode, when a Bank/Program change message is received (or when changing programs with the interface selector), all voices will be immediately stopped before loading the next set of samples. Consequently, changing programs during playback could result in an undesirable click.

Only processors featuring SSE acceleration can use PR32 mode.

This mode is similar to PR32, but the samples are loaded as 16-bit. This is the setting that takes the less RAM amount, suitable for old computers.

Disk Streaming mode. sfz will play the samples directly from Disk, without loading them to memory. This mode takes the smallest memory amount, and allows for playing sample sets larger than available memory space.

This mode has the added advantage of having a very short loading time.

In the case of multiple instances of sfz loading the same SoundFont file, only one set of samples will be loaded and they will be shared by all instances to save memory.

The upcoming sfz proprietary format (.sfz) will take advantage of the 32-bit conversion process to playback 24-bit samples.
When sfz has to load a file in 16-bit format, you'll see an indicator next to the SoundFont name (i.e.: "EMUAPS.sf2 (16-bit)").

Will the quality of the output be different in 16-bit mode than in 32-bit mode?
No. The only disadvantage is that CPU usage will be higher in 16-bit mode.

Will the quality be different in DFD mode?
No. CPU usage might rise under certain circumstances (small amount of free memory, overly fragmented hard disk, etc), but the quality result will be the same.

Is there any way to get rid of the message stating sfz will load a .sf2 as 16-bit?
Sure. The message means that you're trying to load a SoundFont file which doesn't fit in the available memory after converting it to 32-bit. The workarounds are:

1- Set MODE to PR32 (or PR16 if a small amount of free physical memory is available) then reload the SoundFont.
2- Set MODE to DFD. sfz will stream all samples from disk.
3- Add more memory to your PC.

I have plenty of free memory in my PC, but sfz still loads SoundFonts as 16-bit
This indicates your processor most likely doesn't support SSE acceleration. sfz will detect SSE-capable CPUs on startup, and it will load all sample-sets as 16-bit if SSE is not supported. The 16-bit nag screen won't appear when using non-SSE processors.

I have plenty of memory in my PC, and sfz says 'there's not enough memory'
Most likely your 'plenty' memory is fragmented. After a while of using your computer and loading and unloading several applications, your memory starts to become 'fragmented', which means there's no contiguous areas of free memory. Under those circumstances, sfz probably won't find a contiguous area large enough to allocate the selected SoundFont.

There are several utilities which will defragment your system memory, and which will allow you to monitor how fragmented it is. Of the freeware ones, we suggest FastDefrag 2.0 (http://www.amsn.ro/). Run it when you get the error, and take a look of the before/after ratio. You'll be surprised.

What's the EFFECTS text selector for?
It turns the internal Chorus and Reverb effects on/off. This way you can choose to use internal or external effects.

How great is the performance difference when using SSE?
Depends on several factors related to the speed of your system components but, in general, CPU-usage can be 30-50% lower when using SSE.

How do I turn on SSE?
You don't. sfz will detect it automatically and use it if possible.

sfz takes more CPU than <anything_here>... Is that a bug?

It might be, and it might not. CPU-usage comparisons need a lot of detail about results obtained, and results can vary widely depending on which systems and SoundFonts were used for the tests.

sfz compares very favorably with very expensive commercial samplers in terms of the CPU/Quality ratio. We would be happy to hear of a SoundFont player with a better CPU/Quality ratio. We will be glad to look at your test results if you find one.

When I play in DFD mode, I get clicks. How do I solve this?
DFD mode has to locate and read the data from disk as soon as you press a key. This takes a few milliseconds, and largely depends on your hard disk. Average seek time determinates how long it takes to sfz to find the data in the disk, and if it can't get the data on time, a click occurs. Under these circumstances, increasing the latency will give sfz more time, reducing the clicks amount.

A faster disk with bigger internal cache will allow using lower latencies. SCSI disks mounted on good SCSI adapters, and RAID-0 configurations (stripe) will also perform better.



What MIDI controls sfz will respond to?

sfz responds to all MIDI controls defined in the General MIDI specification:

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)
Cutoff (CC74)
Reverb Level (CC91)
Chorus Level (CC93)
Attack (CC73)
Hold (CC76)
Decay (CC75)
Sustain (CC70)
Release (CC72)
All Notes Off
All Controllers Off

sfz will respond to the above messages in each MIDI channel.

.SF2 Compatibility

I have a SoundFont file that doesn't sound the same in sfz than in <any_sampler_here>... Is that a bug?
We've done zillions of tests of SoundFont compatibility using hardware and test SoundFonts from the creators of the SoundFont specification. We will continue performing these tests, until we can make sure all SoundFonts play as they should. sfz might of course contain bugs or misbehaviors regarding the SoundFont specification, but our test results so far are impressive.

However, many samplers have a rather flexible approach with regard to SoundFont compatibility, because of technical considerations when supporting several formats (Akai, Kurzweil, etc.), or just to simplify the signal path or make them more efficient.

We will act upon any SoundFont misbehavior report we get. However, sfz will -not- be 'tweaked' or 'modified' in any way which makes it sound like any particular sampler. We consider that this would be disrespectful to a well-made specification which was adopted by almost every sampler manufacturer on earth.

If there's any doubt on how a SoundFont "should" sound, we'll be using the original EMU hardware for comparison. If this can't be done, the SoundFont specification will prevail. In the case that an 'interpretation' of the spec should appear, we will decide based on users' expectations.

Ok. Can I email you this .sf2 file to you for testing?
Please don't. First of all, make sure you are enabled to allow us to test it by reading the license of your soundware package.
Only once this is cleared, u
pload it somewhere, and send us a link.


Feature Set/Requests

Can you make sfz take less CPU?
sfz features many SSE acceleration routines, which were hand-crafted in assembly code. Some snippets in the code took months to be working precisely.
However, the interpolation methods used on the best quality settings imply zillions of calculations being performed each sample, resulting in... higher CPU usage. That's natural. That is not a bug.
Not that we wouldn't want it to take 1/10th of the CPU usage it takes, but... quality is first. Now, if you don't need this quality level, then you don't need sfz.

However, and despite of all above, sfz has a pretty competitive performance. In the lowest quality settings (draft, 08), the CPU usage is pretty similar than most samplers, and sfz still offers a better quality. In highest settings, it just can't compare to any other sampler, so sfz naturally wins.

So, in short, if we haven't built sfz
to take less CPU is due to:

1- the changes would adversely affect the quality.
2- the changes would mean abandoning the SoundFont specification, as if, for instance, we'd use 'cheaper' (lower CPU but not precise or not-as-in-the-spec) components.
3- our main coder has a pretty limited IQ.

Can you add some controls in the GUI?
We have a version of sfz featuring controls. It's called sfz+. It features much greater control over the SoundFont’s parameters, and it's very inexpensive.

Could you allow multiple SoundFonts to be loaded?
We have a version of sfz featuring multiple SoundFont files. It's called sfz+.
It allows loading up to 16 SoundFont (or Wave) files in a single instance for multitimbral, velocity/keyboard splitting or layering them. And it's very inexpensive.

Can the sfz engine be applied to <any_rgc_instrument_here>
Unfortunately not. sfz was designed from scratch with a completely different paradigm, so it can't be 'coupled' to our previous instruments. The good news is, it will be part of future instruments.

I want sfz to play 500 voices in q=72, using 32-bit, taking 64k of memory and in my SBLive.
Can you do that?
Of course we can. Actually, we're already shipping a version which does that.

Prices starting as low as $52315. We had to adjust this value due the increased Euro-vs-u$s ratio.
Please drop us a line if you're interested, we'll be shipping one week after receiving your payment.

Copyright © 2003 rgc:audio Software. All rights reserved.
All specifications and prices specified on this web site may be subject to change without notice.