On Dienstag, 8. Oktober 2019 01:00:15 CEST Ivan Maguidhir wrote:
> Hi Christian
> 
> I really like the graphical render of the LFO settings! The attached
> gigedit patch connects all of the LFO controls to queue_draw() so that
> the graphic gets redrawn while the user is making changes to any of them.

Hmm, and I thought I already took care that all LFO parameter changes in 
Gigedit would cause the LFO preview wave to be redrawn. I'll check that again, 
thanks for your patch!

> I noticed while I was using gigedit that the range for Control Depth and
> Internal Depth of LFO1 and LFO2 is 0..1200. This should actually be
> -4800..4800 according to GSEdit3. The same values are present in LS when
> the LFO1 and LFO2 objects are being instantiated. Also the logic for
> enabling all three LFOs tests if the Control Depth and Internal Depth
> are > 0 instead of if they are != 0.

I think you are confusing some things here. The allowed value range for the 
internal depth and control depth parameters for LFOs was always 0..+1200 with 
Gigasampler/GigaStudio. So that's the allowed and observed value range for 
these raw parameters stored in gig files and they're always positive.

On sampler side (LS/GSt) this can effectively become 0..+2400 exactly when you 
enable both internal depth and a controller depth (e.g. by selecting Depth 
Controller: "internal+modwheel" in Gigedit). Because in that case internal 
depth and control depth are added (on LS and GSt side, not in the gig file 
however!), so the sampler's effective LFO depth becomes internal_depth + 
controller_depth in that case.

> diff -Naur linuxsampler_orig/src/engines/common/AbstractVoice.cpp
> linuxsampler_mod/src/engines/common/AbstractVoice.cpp ---
> linuxsampler_orig/src/engines/common/AbstractVoice.cpp        2019-10-03
> 16:44:03.484547000 +0100 +++
> linuxsampler_mod/src/engines/common/AbstractVoice.cpp 2019-10-08
> 04:47:03.067579768 +0100 @@ -29,8 +29,8 @@
> 
>      AbstractVoice::AbstractVoice(SignalUnitRack* pRack):
>      pSignalUnitRack(pRack) {
>      
>          pEngineChannel = NULL;
> 
> -        pLFO1 = new LFOClusterUnsigned(1.0f);  // amplitude LFO (0..1
> range)
> -        pLFO2 = new LFOClusterUnsigned(1.0f);  // filter LFO (0..1 range)
> +        pLFO1 = new LFOClusterSigned(4800.0f); // amplitude LFO
> (-4800..4800 range) 
> +        pLFO2 = new LFOClusterSigned(4800.0f); //
> filter LFO (-4800..4800 range)> 
>          pLFO3 = new LFOClusterSigned(1200.0f); // pitch LFO (-1200..+1200
>          range)

You don't really want that change on sampler side. ;-) I think your motivation 
was to resemble what you see in GSt's editor preview pane on Gigedit side. But 
making the (rendered output) value range of LFO1 and LFO2 to become signed 
would break their behaviour on LS side. What that would do is you'd get e.g. 
negative cutoff frequencies with LFO2; and LFO1 would start to flip polarity 
of the audio signal at every half LFO phase.

So really, LFO1 (volume) and LFO2 (filter cutoff frequency) must always have a 
positive output value range per definition of their intended purpose.

CU
Christian




_______________________________________________
Linuxsampler-devel mailing list
Linuxsampler-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel

Reply via email to