liquidsfz 0.3.1

The main goal of liquidsfz is to implement a library that supports playing .sfz files and is easy to integrate into other projects. We also provide a JACK client and a LV2 plugin.

This week, liquidsfz-0.3.0 was released, and liquidsfz-0.3.1 which fixes some problematic bugs in 0.3.0.

The most important changes are:

The sound quality was improved. CPUs are getting faster every year, and systems which have multiple cores are increasingly common. So instead of trying to be ultra fast when playing samples, liquidsfz now provides good quality by default (and it has two lower quality modes if you really need maximum efficiency).

We load samples on demand now, only preloading the start of every sample. This reduces the startup time and memory usage for large sample sets.

For .sfz files which do not define CC7 (Volume) and CC10 (Pan) liquidsfz now provides default behaviour for these CCs (#30).

The license is now MPL2 which is a bit less restrictive than our previous license (LGPL).

The full list of changes is in the NEWS file.

8 comments ↓

#1 Antonio on 05.19.23 at 00:27

I’m looking for a lightweight program that would allow me to play piano samples with my midi keyboard without a lot of overhead (like ardour).
I installed and tried fluidsfz, but for some reason, when i try to connect the MIDI to Fluidsfz input in Qjacktctl patchbay, it does not allow me to do so (although both appear in the graphic window).
So my forst question would be, can i play sfz samples with mi keyboard and fluidsfz?
If so, how would I go about setting up the qjackctl patchbay?

#2 stw on 05.19.23 at 16:10

Yes, absolutely, you can use liquidsfz to play piano samples with your midi keyboard.

My guess would be that it doesn’t work for you because liquidsfz has a “JACK” midi input (displayed in red color in Qjackctl) and the midi you see from your keyboard is an “ALSA” midi input (displayed in purple in Qjackctl). So you need something to make your keyboard appear as “JACK” midi to be able to connect them. Typically this can be done either by configuring JACK or by using an extra program which bridges these, as discussed here:

https://linuxmusicians.com/viewtopic.php?t=17074

I can also recommend the excellent program “Cadence” for starting and configuring JACK, which has a simple button to enable the ALSA MIDI bridge.

#3 Antonio on 06.25.23 at 18:05

Thanks for your reply.

I tried to open Dore Mark’s Yamaha S6 font and got the following error:

liquidsfz/sfz/The_Experience_Yamaha_S6_V1.3/’The Experience Yamaha S6 AB Omni V1.3.sfz’

[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 14: unsupported opcode ‘polyphony’
[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 47: unsupported opcode ‘sustain_cc’
[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 48: unsupported opcode ‘ampeg_dynamic’
[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 49: unsupported opcode ‘ampeg_release_shape’
[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 362: unsupported opcode ‘sustain_cc’
[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 363: unsupported opcode ‘ampeg_dynamic’
[liquidsfz::warning] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 364: unsupported opcode ‘ampeg_release_shape’
[liquidsfz::error] /sfz/The_Experience_Yamaha_S6_V1.3/The Experience Yamaha S6 AB Omni V1.3.sfz: line 675: toplevel parsing failed
parse error: exiting

Is there any workaround?

#4 stw on 06.25.23 at 23:01

I’ve added a github issue for this now:

https://github.com/swesterfeld/liquidsfz/issues/40

As a workaround, you can remove the extra spaces around the = sign in each line with a toplevel parser error. Note that there are a few unsupported opcodes so there may be other issues for this .sfz file.

#5 Antonio on 06.27.23 at 17:51

Thanks a lot,

I’ll try that. I love liquidsfz and am working on my first sfz, a (comparatively) lightweight Fazioli 308.

#6 Antonio on 06.27.23 at 18:04

Update,

when loading the Fazioli font, I get the following errors:

[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 841: unsupported opcode ‘ampeg_attack’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 841: unsupported opcode ‘ampeg_decay’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 841: unsupported opcode ‘ampeg_sustain’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 841: unsupported opcode ‘ampeg_release’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 843: unsupported opcode ‘ampeg_release_shape’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 844: unsupported opcode ‘ampeg_releasecc64’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 846: unsupported opcode ‘ampeg_release_curvecc64’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 850: unsupported opcode ‘trigger’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 853: unsupported opcode ‘lovel’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 853: unsupported opcode ‘hivel’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 854: unsupported opcode ‘amp_velcurve_1’
[liquidsfz::warning] /media/mac/Files/sounds/Fazioli/Fazioli.sfz: line 855: unsupported opcode ‘amp_velcurve_127’

However, the corresponding opcodes have no spaces around the = signs:

ampeg_attack=.005 ampeg_decay=60 ampeg_sustain=5 ampeg_release=0.8

ampeg_release_shape=-6 //set the sustain curve dropoff curvature
ampeg_releasecc64=15 //make maximum release time 15 seconds

ampeg_release_curvecc64=11 //use the curve_index 11

trigger=release

lovel=1 hivel=127
amp_velcurve_1=1
amp_velcurve_127=1

and the opcodes appears in the list of liquidsfz supported opcodes.

What am i missing?

#7 stw on 06.28.23 at 23:23

Well, whether or not an opcode is supported depends on what section type you are in. Typically the opcodes you mention work in “region” and “group” section types, but not in “control” or “curve”. See also https://sfzformat.com/headers/

#8 Antonio on 06.28.23 at 23:39

Thanks a lot for the explanation. Liquidsfz rocks!

Leave a Comment