Hi All, I see that I am missing out by not being on Discord!
I like the changes but see that the ones depending on p are not exactly equivalent when p is time-varying. In general I vote for elegance and optimality over exact equivalence, although such changes should be called out in the release notes. (See the JUCE distribution for excellent practices in their file BREAKING_CHANGES.md.) Cheers, Julius On Sat, Nov 25, 2023 at 8:27 AM Oleg Nesterov <o...@redhat.com> wrote: > 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 > -- "Anything that can be automated should optionally be"
_______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users