I have an sfz soundfont with the following structure
soundfont - |
| Presets |
| | many sfz_files
| samples |
| folder1 |
| | subfoldera → many wav_files1
| | subfolderb → many wav_files2
| folder2 |
| subfolderc → many wav_files3
| subfolderd → many wav_files4
The sfz files contain opcodes like
default_path=../../samples/folder1/subfoldera/
In Logic Pro (on my Mac) this strucure works, I can play with
the fonts with sfizz and sforzando plugins.
With sfizz and LinuxSampler on Zynthian, things do not work.
When I restucture to
soundfonts -|
| font1 | font1.sfz
| samples2 |
| many wav files
| font2 | font2.sfz
| samples |
| many wav files
thinsg work
There is an additional problem
in the sfz file I tried
volume=0
ampeg_attack=0.05
ampeg_release=0.05
loop_mode=loop_continuous
amp_veltrack=100
group_amplitude=-3
amplitude=-3
and then I did not get any sounds.
Removing
amplitude=-3
in the section
made things work.
Which sf3 player respects which opcodes
whnd which folder structures
is nowhere clearly documented.
Sorry for the indentation, the discourse does not resprect leading spaces.
THe default_path opcode must be under the <control> header and doesn’t make so much sense if you have multiple sample folders. It may work, but may also not be intended to insert a control block everytime the sample destination changes in your script. what I would do is to make one control block right at the start of each sfz and state default_path=../../samples/ and then write for each region sample=folder1/subfoldera/X.wav or similar.
EDIT: your path structure is not so clear to me, but if it’s like I expect the ../../ would be replaced by ../ because each sfz in the Preset folder goes to Parent (soundfont -) and then downwards the path. By the way, if each sfz has a respective sample subfolder (like if every sample in sfza is in subfoldera and so on), the default_path opcode makes sense again.
While all volume opcodes are dBfs (-144 to +6 dB, while values above +6 also work, at least in sfizz), the amplitude opcode is in range 0 (silent) to 100 (full), so -3 is something like quiter than silent.
I would use amplitude only if I wanted to modulate the amplitude with cc messages (like fading in with the modwheel or so). For global or group volumes I’d use the respective volume opcode (global_volume, group_volume, volume,…). Here is an example: Your violin samples are way to quiet, you pimp them a bit with global_volume=6 in the global header, now your fff samples are to loud, you use group_volume=-3 in the group header. Now you want to control the amplitude with your exp pedal. in global header use use amplitude=0 (means silent), but you modulate it to full amplitude with amplitude_oncc11=100 in global header (for all). Now set full amplitude as default in your control header (set_cc11=127). Of course you could also modulate with amplitude=100 and amplitude_oncc11=-100, but then you have to turn your exp pedal upside down.
Here is most you want to know about opcodes:
You mean sfz player?
Sfizz: Opcodes Support Table - SFZTools
Linuxsampler: The Linux Sampler Project
1 Like