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:
SF32 |
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. |
SF16 |
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. |
PR32 |
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. |
PR16 |
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. |
DFD |
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.