liquidsfz-0.2.0

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

liquidsfz-0.2.0

Stefan Westerfeld
liquidsfz-0.2.0 has been released

The main goal of liquidsfz is to provide an SFZ sampler implementation
library that is easy to integrate into other projects. A standalone jack
client and a LV2 plugin is also available.

liquidsfz is implemented in C++ and licensed under the GNU LGPL version
2.1 or later. The release tarball can be downloaded here:

https://github.com/swesterfeld/liquidsfz#releases

Overview of Changes in liquidsfz-0.2.0:
---------------------------------------




* Provide LV2 plugin


* Support for <control>/<global>/<master> sections


* Handle #define
* Lots of new opcodes supported, including
  - key switches
  - crossfading for layers
  - more amp-related opcodes
  - allow changing more parameters using CCs
* API additions
  - load progress function (Synth::set_progress_function)
  - global gain factor (Synth::set_gain)
  - provide list of CCs supported by .sfz file (Synth::list_ccs)
  - support pitch bend (Synth::add_event_pitch_bend)
--
Stefan Westerfeld, http://space.twc.de/~stefan
_______________________________________________
Linux-audio-dev mailing list
[hidden email]
https://lists.linuxaudio.org/listinfo/linux-audio-dev
Reply | Threaded
Open this post in threaded view
|

Re: liquidsfz-0.2.0

Benoît Rouits
Wonderful!
I will update QLiquidSFZ then, to reflect the additions you made.
Many thanks for this cool library.
 Benoît

Le 12/01/2020 à 18:34, Stefan Westerfeld a écrit :

> liquidsfz-0.2.0 has been released
>
> The main goal of liquidsfz is to provide an SFZ sampler implementation
> library that is easy to integrate into other projects. A standalone jack
> client and a LV2 plugin is also available.
>
> liquidsfz is implemented in C++ and licensed under the GNU LGPL version
> 2.1 or later. The release tarball can be downloaded here:
>
> https://github.com/swesterfeld/liquidsfz#releases
>
> Overview of Changes in liquidsfz-0.2.0:
> ---------------------------------------
>
>
>
>
> * Provide LV2 plugin
>
>
> * Support for <control>/<global>/<master> sections
>
>
> * Handle #define
> * Lots of new opcodes supported, including
>   - key switches
>   - crossfading for layers
>   - more amp-related opcodes
>   - allow changing more parameters using CCs
> * API additions
>   - load progress function (Synth::set_progress_function)
>   - global gain factor (Synth::set_gain)
>   - provide list of CCs supported by .sfz file (Synth::list_ccs)
>   - support pitch bend (Synth::add_event_pitch_bend)
>
_______________________________________________
Linux-audio-dev mailing list
[hidden email]
https://lists.linuxaudio.org/listinfo/linux-audio-dev
Reply | Threaded
Open this post in threaded view
|

Re: liquidsfz-0.2.0

Stefan Westerfeld
   Hi!

Am 12.01.20 um 18:59 schrieb Benoît Rouits:
> I will update QLiquidSFZ then, to reflect the additions you made.
> Many thanks for this cool library.

Right. The most interesting (difficult) addition from the UI point of
view is probably

>>   - provide list of CCs supported by .sfz file (Synth::list_ccs)

The thing is that CCs can be used to control aspects of the sound, such
as panning or the number of layers used for the sound (i.e. some layers
will be turned on/off by the cc). From an UI point of view it would be
ideal if each CC was displayed as one slider (or knob), so you would
call list_ccs and create a number of sliders/knobs, one for each CC. The
default value provided by liquidsfz would be the initial position of the
slider/knob. If the user turns the slider/knob, then qliquidsfz would
generate CC events for it.

Its a bit tricky because obviously Synth::add_event_cc() cannot be
executed at the same time Synth::process() is running in the JACK
thread. One way to do this is using some kind of queue for the CC
events, so that the JACK process callback can execute them together with
the other midi events before process().

Also in a perfect world if CC events were be received by MIDI, the UI
would update its state. So using an external midi controller would move
the Qt slider/knob widget. Again, this needs to be implemented carefully
in order to be thread safe.

The CC widgets really cannot be done properly by the text UI, this is
why I only display a list there. If you are looking for a program for
inspiration how a UI could look, I'd recommend sforzando for windows.
This can at least give you an idea of the direction to go. I personally
obtained an old version (win_sforzando_v1.822.exe) which runs in wine.
You'll see in the controls tab what I mean if you load a sfz with CCs.

   Cu... Stefan
--
Stefan Westerfeld, http://space.twc.de/~stefan
_______________________________________________
Linux-audio-dev mailing list
[hidden email]
https://lists.linuxaudio.org/listinfo/linux-audio-dev
Reply | Threaded
Open this post in threaded view
|

Re: liquidsfz-0.2.0

Benoît Rouits
Yes,
I understand your explanation. For the moment, I just forward jack
received CCs to the lib. I will try to make some mokcup before to update
the UI. Cheers,
 Ben

Le 16/01/2020 à 23:34, Stefan Westerfeld a écrit :

>    Hi!
>
> Am 12.01.20 um 18:59 schrieb Benoît Rouits:
>> I will update QLiquidSFZ then, to reflect the additions you made.
>> Many thanks for this cool library.
>
> Right. The most interesting (difficult) addition from the UI point of
> view is probably
>
>>>   - provide list of CCs supported by .sfz file (Synth::list_ccs)
>
> The thing is that CCs can be used to control aspects of the sound, such
> as panning or the number of layers used for the sound (i.e. some layers
> will be turned on/off by the cc). From an UI point of view it would be
> ideal if each CC was displayed as one slider (or knob), so you would
> call list_ccs and create a number of sliders/knobs, one for each CC. The
> default value provided by liquidsfz would be the initial position of the
> slider/knob. If the user turns the slider/knob, then qliquidsfz would
> generate CC events for it.
>
> Its a bit tricky because obviously Synth::add_event_cc() cannot be
> executed at the same time Synth::process() is running in the JACK
> thread. One way to do this is using some kind of queue for the CC
> events, so that the JACK process callback can execute them together with
> the other midi events before process().
>
> Also in a perfect world if CC events were be received by MIDI, the UI
> would update its state. So using an external midi controller would move
> the Qt slider/knob widget. Again, this needs to be implemented carefully
> in order to be thread safe.
>
> The CC widgets really cannot be done properly by the text UI, this is
> why I only display a list there. If you are looking for a program for
> inspiration how a UI could look, I'd recommend sforzando for windows.
> This can at least give you an idea of the direction to go. I personally
> obtained an old version (win_sforzando_v1.822.exe) which runs in wine.
> You'll see in the controls tab what I mean if you load a sfz with CCs.
>
>    Cu... Stefan
>
_______________________________________________
Linux-audio-dev mailing list
[hidden email]
https://lists.linuxaudio.org/listinfo/linux-audio-dev