SFZ Player 10.0.21 in Library now

New update to SFZ player in the Library. If you haven’t played with this yet, I hope that you will. Aside from easy access to free multi-sampled pianos, drums, orchestral instruments and many others, there is much opportunity for sonic mayhems.

Changes in this version include: New panel look borrowed from Comp II and the Mind Meld mixers. Many fixes and enhancements to the core SFZ loader will allow more SFZ to work in SFZ Player, a trigger delay (as suggested by Frozen Wasteland) to allow running pitch CV though some processing while still playing correctly. Implements SFZ looping, which is often used with analog synth samples. Added an octave control, because we usually do this, but forgot this time.

23 Likes

What a great module… thank you many times!

glad you like it! It’s been quite fun to make.

I’ve run into a minor bug. If you load an SFZ, shut down Rack, and rename or otherwise make the SFZ unavailable, Rack will crash upon restarting. I only did such a thing because I’m editing, converting, and testing a pant-load of samples I acquired. This is what log.txt had to say about that matter:

[1.071 fatal src/main.cpp:45] Fatal signal 11. Stack trace:
11: /home/existentia/bin/Rack/Rack() [0x56d2b1]
10: /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7fe2737f6210]
9: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(_ZNK8FilePath8toStringB5cxx11Ev+0xb) [0x7fe24605acab]
8: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(_ZNK8FilePath15getFilenamePartB5cxx11Ev+0x14) [0x7fe24605b0f4]
7: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(_ZNK8FilePath14getExtensionLCB5cxx11Ev+0x10) [0x7fe24605c1d0]
6: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(_ZN10WaveLoader13loaderFactoryERK8FilePath+0x2c) [0x7fe24604a3cc]
5: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(_ZN10WaveLoader12loadNextFileEv+0x76) [0x7fe24604a6c6]
4: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(+0x2203bb) [0x7fe2460a03bb]
3: /home/existentia/.Rack/plugins-v1/squinkylabs-plug1/plugin.so(+0x19cd6b) [0x7fe24601cd6b]
2: /lib/x86_64-linux-gnu/libstdc++.so.6(+0xd6de4) [0x7fe273beede4]
1: /lib/x86_64-linux-gnu/libpthread.so.0(+0x9609) [0x7fe274619609]
0: /lib/x86_64-linux-gnu/libc.so.6(clone+0x43) [0x7fe2738d2293]

This was under Ubuntu 20.04.

Thanks, I’ll take a look.

Yeah, it’s the same issue @PaulPiko reported yesterday. It’s a little sad - SFZ Player has a ton of code in it to report errors pretty well, but right at the last minute instead of reporting the error SFZ Player just crashes. I’ll be pushing a fix soon. If you build yourself the fix is on the par3 branch.

Without the crashing bug, here is what you should see when an SFZ doesn’t exists any more:

image

1 Like

Yes, that is precisely what it does now. Thank you. SFZ creation will be so much more pleasant now.

Are you ok now? I could make a Linux build, although ATM my Linux builds are not quite “by the book”.

Great work man!

Thanks! It has been a lot of work.but fun!

That’s kind of you to offer, but I cloned your par3 branch and built it last night. I see just now that I neglected to make that clear in my previous reply. But I specifically tested a sample being unavailable, and it did what you said it should. I also tried some samples with loops, and those work as well. So I’m content for the moment. Thanks again.

oh, nice! I thought that maybe you had. I’m writing a unit test now so that if in the future if I completely break error reporting I will find out before I ship it :wink:

that wasn’t so bad!

static void testSampCompositeError() {
    Comp::ProcessArgs args;
    Comp comp;
    initComposite(comp);
    comp.setNewSamples_UI("abcdef");
    for (bool done=false; !done; ) {
        if (comp.isNewInstrument_UI()) { done = true; }
        comp.process(args);
    }
    auto inst = comp.getInstrumentInfo_UI();
    assertEQ(inst->errorMessage, "can't open abcdef");
}

So, is it fixed now? Or does it at least fail more gracefully?

The branch that is not yet in the library is fixed. Errors (like can’t find SFZ file, or SFZ is not parsable) are supposed to display an error message on the panel and not play anything. The version now in the library (and I suspect the previous version in the library) will instead crash VCV when this happens.

In no version can I actually play these files, but failing “gracefully” is a lot better than crashing.

2 Likes

and of course now in library.

1 Like