sfizz

Link to good samples/soundfonts at http://wiki.linuxaudio.org/wiki/free_audio_data

Moderators: MattKingUSA, khz

User avatar
Michael Willis
Established Member
Posts: 1002
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Contact:

sfizz

Post by Michael Willis »

There's an apparently new SFZ sampler project brewing on github: https://github.com/sfztools/sfizz
Along with it, the developer appears to be working on a VST3 implementation: https://github.com/paulfd/sfizz-vst3

Can anybody tell me more about this? I don't recognize the name Paul Ferrand, is that somebody that uses a pseudonym here?

I haven't actually tried doing anything with it yet, but it looks like development is happening at a roaring pace. I might be inclined to build a simple LV2 + VST2 plugin for this if I get some indication that it is stable enough to warrant such a project.

User avatar
milk
Established Member
Posts: 251
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: sfizz

Post by milk »

I think they were in #lad not too long ago. 22nd Sep.
<paulfd> hi all
<paulfd> I have been reading this thread: https://discourse.ardour.org/t/not-jack ... face/89043
<paulfd> Paul Davis comments: " I ceased my involvement with JACK over a year ago, and have actively worked to encourage Ardour users to consider ceasing their use of JACK. I also encouraged the development of the non-JACK backends for Ardour, as well as designing and implementing the abstract audio/MIDI engine in Ardour precisely so that we could move away from JACK iself. JACK is pretty cool (if i say so myself), but it is unnecessary and
<paulfd> inappropriate for most DAW users."
<rgareus> amen
<paulfd> is there something wrong with jack or is it just that routing in DAWs is done within the DAW?
<paulfd> I'm just curious :)
<rgareus> paulfd: the main reason for jack was that at that time (2000ish) there was no proper plugin-standard. so jack filled that gap (along with various session-management tools)
<rgareus> paulfd: these days LV2 solves *almost* all issues that jack was intended for.
<paulfd> but you still need some host for LV2 no?
<paulfd> sorry for being dense ^^
<rgareus> well, yeah
<rgareus> you'd also need a jack-server otherwise :)
<paulfd> that's a fair point ahah
<dvzrv> paulfd: the plugin use-case however is only one of (potentially) plenty a user might have. however, it seems to be a very prominent one
<paulfd> yeah definitely
<rgareus> yeah, jack still has its place. mainly for inter-application routing (like Rewire)
<rgareus> what I like about jack is that it's one of the simplest APIs to write some application for. and yet also one of the most powerful ones for pro-audio.
<paulfd> yeah I love jack's API
<paulfd> I mean, compared to the pain I felt dredging through VST3 it was a breeze..
<paulfd> LV2 seems nice too though
<paulfd> thanks for the answers :)
<rgareus> as opposed to ALSA, ASIO, I meant. CoreAudio is also rather complex
<rgareus> but CoreAudio is also very well designed.
<rgareus> pulseaudio. tricky. The simple API for a simple desktop player is neat.
<paulfd> I will take your word for it :D
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
d.healey
Established Member
Posts: 224
Joined: Fri Sep 22, 2017 8:33 pm

Re: sfizz

Post by d.healey »

LV2 version in the works too - https://github.com/sfztools/sfizz-lv2
David Healey
Patreon - HISE scripting and sample library dev tutorials
Libre Wave - Freedom respecting instruments and effects.

paulfd
Established Member
Posts: 4
Joined: Wed Oct 02, 2019 6:40 pm

Re: sfizz

Post by paulfd »

Hi there,

I had no account here no, but now I do :) To tell you more about the project, I wanted to have something akin to a library to integrate into another of my project (https://github.com/sfztools/beatbox) which is a rhythm box. I tend to have very bad rhythm and I don't really enjoy metronomes, and convinced myself I could probably achieve something like this. It was fine with midi, and I integrated sfzero into it, but I wanted more compliance and access to more complex drum libraries. Then I got carried away :D

For drums now it works fine; there's a branch that at https://github.com/sfztools/beatbox/tree/sfizz that integrates it and for my personal "consumption" it's ok. For different instruments it's still a bit work in progress. The basics are here, it's missing the more advanced SFZ stuff like LFOs, custom envelopes, filters and such, but I'd like to get to the point where it's supporting the major part of SFZ used by banks I know of.

I have to admit though that these are my first foray into audio development, so I'm still discovering things. Everything is a bit rought, but the interfaces (VST and JACK) particularly so. In the short term I'd like to make a gui-less LV2, since it's the only plugin framework I know that may support it: for an SFZ plugin you basically need a "file" parameter, and that's it. LV2 apparently provides a "URI/Path" extension and there are examples around about using them, folks from #lad gave me some pointers :) I've also quickly worked on the VST port because i) it gives me an easy graphical representation of the output, along with say frequency analysis, and ii) I can route the same midi file through the plugin and Sforzando to compare the rendering and timing to see if I am understanding the specs well enough.

About the "roaring pace" I am having a very busy month now so I will calm down, but I still plan to go on after this. If you feel confident about whipping out VST or LV2 front-ends you are welcome to do so, although I have to admit I also need to document a bit the code and interface. Basically you need to dispatch all the midi events in a block to the Synth, and render the block afterwards. From the latest changes I made you should also be able to load files in a thread-safe manner; calling the file loading method should bypass the audio callback. There is a JACK client in https://github.com/sfztools/sfizz/blob/ ... client.cpp that shows the principles, and there is my own tentative steps with VST3...

User avatar
Michael Willis
Established Member
Posts: 1002
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Contact:

Re: sfizz

Post by Michael Willis »

paulfd wrote:Hi there
Hi Paul, it's great to meet you.
paulfd wrote:Then I got carried away :D
Ha! I know what you mean. I once told myself that I would spend a few weekends porting Hibiki Reverb to run natively on Linux. Then Rob van den Berg got involved and things got way out of hand.

It looks like this started out as a Juce project, but now it seems like there is no longer a dependency on Juce, is that correct?

I now understand that your primary motivation is for this to serve as a utility for your beatbox project, as such it seems like supporting percussive samples would be your main priority. I would love to see this support some of the free orchestral SFZ collections, what's the likelyhood of supporting the opcodes required by something like Virtual Playing Orchestra?

glowrak guy
Established Member
Posts: 1450
Joined: Sat Jun 21, 2014 8:37 pm

Re: sfizz

Post by glowrak guy »

Very cool that you've joined the forum! As linux Reaper supports linux vst,
the reaper linux forum might be another good connection.
I believe the SFZero dev who posts here sometimes also contributes there,
and could be a good sounding board.

As a Dimension Pro fan, I'm always happy to see more and better SFZ support
for linux. A pipedream of mine is that someday, yoshimi or zynaddsubfx
would be able to import sfz as sound sources for synthesis. I guess that
outs me as having absolutely no coding knowledge, so be it,
but I'll dream of 8) stuff 8) until the train leaves the station :wink:

reaper linux: https://forum.cockos.com/forumdisplay.php?f=52

Looking forward to trying your sfz machine!

redtide
Posts: 2
Joined: Sun Oct 01, 2017 7:24 am

Re: sfizz

Post by redtide »

Michael Willis wrote:It looks like this started out as a Juce project, but now it seems like there is no longer a dependency on Juce, is that correct?
Paul did a very nice job to make work the library with minimal dependencies (abseil, libsndfile) in the current version, but as he said there also much things left to do. I'm currently testing and using it in a small Qt GUI with my electronic drum. Except for a limitation of SFZ with the HiHat (similar issues also with Sforzando) the rest is working fine, at least there is enough opcodes support for drums to play with (random) round robins. I also did an experiment with a free drum kit to play my Roland TD-12 module snare positional sensing feature (have different sounds when you hit away from the drum head center). It could be nice to have other people collaborating in the project, for this purpose we created the sfztools GitHub organization. I hope to see more SFZ enthusiasts joining.

paulfd
Established Member
Posts: 4
Joined: Wed Oct 02, 2019 6:40 pm

Re: sfizz

Post by paulfd »

Yes as redtide said, no Juce. Abseil provides some practical things for string handling and backward C++17/20 facilities in C++11 (spans, string views, charconv and the likes), and libsndfile for reading samples.

I've checked up some of the files of the orchestral collections, the big thing that will be missing are LFOs for vibratos on instruments like flutes or strings for now, but I do plan to get it implemented yes :)

User avatar
Michael Willis
Established Member
Posts: 1002
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Contact:

Re: sfizz

Post by Michael Willis »

paulfd wrote:I've checked up some of the files of the orchestral collections, the big thing that will be missing are LFOs for vibratos on instruments like flutes or strings for now, but I do plan to get it implemented yes :)
LFO doesn't seem too scary to me. I don't know how much you have implemented, and it's been a while since I looked through SFZ files and the spec, but if I remember right there are some other things like high pass, low pass, maybe other EQ-related bits, maybe stuff related to the attack-decay-sustain-release envelope, etc. Like you, I'm still kind of new to DSP programming, but most of that stuff seems common enough that we can probably find existing open source implementations for most or all of it.
redtide wrote:I hope to see more SFZ enthusiasts joining.
I'll see what I can do about carving out some time to contribute! I'm thinking about spinning up a project with DPF, which facilitates building VST2 and LV2 plugins for Linux, Mac, and Windows.

tavasti
Established Member
Posts: 1069
Joined: Tue Feb 16, 2016 6:56 am
Location: Kangasala, Finland
Contact:

Re: sfizz

Post by tavasti »

This sounds like great project, which we have waited for!
Linux veteran & Novice musician

Latest track: https://www.youtube.com/watch?v=ycVrgGtrBmM
More my music https://audiu.net/users/tawaste

paulfd
Established Member
Posts: 4
Joined: Wed Oct 02, 2019 6:40 pm

Re: sfizz

Post by paulfd »

Not scary no, in essence every needed part in the processing is here but it's more like dispatching code and handling the possible targets of the LFOs, while still preallocating the required space to hold the LFO states for each voice somewhere. SFZ version 2 has very flexible LFOs that can basically modulate many parameters and subsumes the LFOs from v1. Anyway, as you said, it's not too scary. For the filters and EQ it's a bit the same, they have flexible targets but it's always 1 or 2 pole filters so the signal processing part is quite straightforward until you want to support wild variations of the filter parameters.

User avatar
Michael Willis
Established Member
Posts: 1002
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Contact:

Re: sfizz

Post by Michael Willis »

paulfd wrote:while still preallocating the required space to hold the LFO states for each voice somewhere
Why is it necessary to preallocate space to hold LFO states? Isn't it just a function of time? Or do you mean having audio buffer space to store the modulation effects influenced by the LFOs?

rghvdberg
Established Member
Posts: 966
Joined: Mon May 12, 2014 7:11 am

Re: sfizz

Post by rghvdberg »

If we go dpf, I'm in.

User avatar
Michael Willis
Established Member
Posts: 1002
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Contact:

Re: sfizz

Post by Michael Willis »

rghvdberg wrote:If we go dpf, I'm in.
Michael Willis wrote:Then Rob van den Berg got involved and things got way out of hand.

rghvdberg
Established Member
Posts: 966
Joined: Mon May 12, 2014 7:11 am

Re: sfizz

Post by rghvdberg »

Michael Willis wrote:
rghvdberg wrote:If we go dpf, I'm in.
Michael Willis wrote:Then Rob van den Berg got involved and things got way out of hand.
10/10 this will get out of hand

Post Reply