[LAU] Need some programming help.

Will J Godfrey WillGodfrey at musically.me.uk
Mon Mar 3 18:49:50 UTC 2014


On Mon, 3 Mar 2014 18:54:26 +0100
Tito Latini <tito.01beta at gmail.com> wrote:

> On Sun, Mar 02, 2014 at 11:18:30PM +0000, Will Godfrey wrote:
> > What is even stranger is that if I compile and run the synth on an old
> > version of debian there is no problem. However *exactly* the same image run on
> > the same machine but with debian upgraded shows the fault.
> > 
> > A possibly significant difference is the change from FLTK V1.1 to V1.3 but
> > looking on their website I can find nothing that would give a clue.
> 
> Now I'm using gcc-4.8.2 and I can reproduce the problem.
> 
> Only a rapid glance: with
> 
> /* From Fl_Valuator.cxx */
> void Fl_Valuator::step(double s) {
>   if (s < 0) s = -s;
>   A = rint(s);
>   B = 1;
>   while (fabs(s-A/B) > epsilon && B<=(0x7fffffff/10)) {B *= 10; A = rint(s*B);}
> }
> 
> there is a roundoff error but if we use the simplest
> 
> /* From Fl_Valuator.H */
> void step(double a, int b) {A = a; B = b;}
> 
> the problem disappears
> 
> --- yoshimi-1.1.0~/src/UI/ADnoteUI.fl	2013-05-08 09:47:45.000000000 +0200
> +++ yoshimi-1.1.0/src/UI/ADnoteUI.fl	2014-03-03 14:41:58.054425629 +0100
> @@ -89,8 +89,9 @@
>          } {}
>          Fl_Value_Output detunevalueoutput {
>            callback {o->value(getDetune((pars->VoicePar[nvoice].PDetuneType == 0) ? (pars->GlobalPar.PDetuneType) : (pars->VoicePar[nvoice].PDetuneType), 0, pars->VoicePar[nvoice].PDetune) * pars->getBandwidthDetuneMultiplier());}
> -          xywh {265 5 45 20} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
> -          code0 {o->value(getDetune(pars->VoicePar[nvoice].PDetuneType, 0, pars->VoicePar[nvoice].PDetune) * pars->getBandwidthDetuneMultiplier());}
> +          xywh {265 5 45 20} labelsize 10 align 5 minimum -5000 maximum 5000 textfont 1 textsize 10
> +          code0 {o->step(0.01, 1);}
> +          code1 {o->value(getDetune(pars->VoicePar[nvoice].PDetuneType, 0, pars->VoicePar[nvoice].PDetune) * pars->getBandwidthDetuneMultiplier());}
>          }
> 
> [ ... censored for avoiding noise in LAU; the complete patch is in a private msg ]
> 
> Tito Latini


Thanks a lot for this. It has been a nagging source of irritation for years!

-- 
It wasn't me! (Well actually, it probably was)

... the hard part is not dodging what life throws at you,
but trying to catch the good bits.


More information about the Linux-audio-user mailing list