On 11/25, Dario Sanfilippo wrote:
>
> Possibly not a big deal, but the reason why ba.pulse checks for the
> derivative is that ba.period is likely to wrap around and end up at value
> different than zero when you lower the period, which can result in missed
> pulses.

Yes, as I mentioned below the changes in period/pulse are not 100% compatible.
And I won't argue if you think that "I don't think this can break something"
is not true.

Thanks for looking at this!

Oleg.

> See this example:
> 
> import("stdfaust.lib");
> period(p) = %(int(p)) ~ +(1) : mem;
> pulse2(p) = period(p) : \(x).(x <= x');
> pulse(p) = period(p) == 0;
> process = 100 - (10 @ 90) - (10 @ 170) - (10 @ 240) <: period , pulse*100 ,
> pulse2*100;
> 
> Dr Dario Sanfilippo
> http://dariosanfilippo.com
> 
> 
> On Sat, 25 Nov 2023 at 16:23, Oleg Nesterov <o...@redhat.com> wrote:
> 
> > Stephane,
> >
> > I am shy to disturb https://github.com/grame-cncm/faustlibraries with
> > such a trivial/random change(s), but I'd like to "finish" the recent
> > discussion on discord. Note that even ba.time is obviously suboptimal.
> > I can make a PR if you think this makes any sense.
> >
> > - ba.time: eliminate -(1)
> >
> >   before:
> >         iRec0[0] = iRec0[1] + 1;
> >         output0[i0] = FAUSTFLOAT(iRec0[0] + -1);
> >         iRec0[1] = iRec0[0];
> >   after:
> >         iRec0[0] = iRec0[1] + 1;
> >         output0[i0] = FAUSTFLOAT(iRec0[1]);
> >         iRec0[1] = iRec0[0];
> >
> > - ba.period: eliminate the delay line created by 1'
> >   with p == 10
> >
> >   before:
> >         iVec0[0] = 1;
> >         iRec0[0] = (iVec0[1] + iRec0[1]) % 10;
> >         output0[i0] = FAUSTFLOAT(iRec0[0]);
> >         iVec0[1] = iVec0[0];
> >         iRec0[1] = iRec0[0];
> >   after:
> >         iRec0[0] = (iRec0[1] + 1) % 10;
> >         output0[i0] = FAUSTFLOAT(iRec0[1]);
> >         iRec0[1] = iRec0[0];
> >
> >   this change is not 100% compatible when p modulates,
> >   but I don't think this can break something.
> >
> > - ba.pulse: simplify the condition, obvious.
> > ---
> >  basics.lib | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/basics.lib b/basics.lib
> > index 6c1fc87..ed3e9c5 100644
> > --- a/basics.lib
> > +++ b/basics.lib
> > @@ -448,7 +448,7 @@ sweep = %(int(*:max(1)))~+(1);
> >  // time : _
> >  // ```
> >  //------------------------
> > -time = (+(1)~_) - 1;
> > +time = +(1)~_ : mem;
> >
> >
> >  //-------`(ba.)ramp`----------
> > @@ -525,7 +525,7 @@ tempo(t) = (60*ma.SR)/t;
> >  // * `p`: period as a number of samples
> >  //------------------------
> >  // NOTE: may be this should go in oscillators.lib
> > -period(p) = %(int(p))~+(1');
> > +period(p) = %(int(p)) ~ +(1) : mem;
> >
> >
> >  //-------`(ba.)pulse`----------
> > @@ -542,7 +542,7 @@ period(p) = %(int(p))~+(1');
> >  // * `p`: period as a number of samples
> >  //------------------------
> >  // NOTE: may be this should go in oscillators.lib
> > -pulse(p) = period(p) : \(x).(x <= x');
> > +pulse(p) = period(p) == 0;
> >
> >
> >  //-------`(ba.)pulsen`----------
> > --
> > 2.25.1.362.g51ebf55
> >
> >
> >
> >
> > _______________________________________________
> > Faudiostream-users mailing list
> > Faudiostream-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> >



_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to