[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Sc-devel] Amplitude.kr problem
> Will next look at fixing the a-to-k issue...
Done, svn rev 6818 (added two calc funcs specifically to handle
Amplitude.kr(x.ar))
Dan
2007/12/15, Dan Stowell <danstowell@xxxxxxxxx>:
> Thanks Julian, I've committed the fix for this (rev 6807). The UGen
> behaves exactly the same, but is more more efficient with k-rate
> coefficients. Will next look at fixing the a-to-k issue...
>
> Dan
>
>
> 2007/12/14, Julian Rohrhuber <rohrhuber@xxxxxxxxxxxxxx>:
> > yes, this is incorrect.
> >
> > >In fact Julian's code for k-rate modulation (Amplitude_next_kk) looks
> > >wrong to me. This bit:
> > >
> > >if(ZIN0(1) != unit->m_clamp_in) {
> > > clampcoef = exp(log1/(ZIN0(1) * SAMPLERATE));
> > > unit->m_clamp_in = clampcoef;
> > >} else {
> > > clampcoef = unit->m_clamp_in;
> > >}
> > >
> > >should be
> > >
> > >if(ZIN0(1) != unit->m_clamp_in) {
> > > clampcoef = unit->m_clampcoef = exp(log1/(ZIN0(1) * SAMPLERATE));
> > > unit->m_clamp_in = ZIN0(1);
> > >} else {
> > > clampcoef = unit->m_clampcoef;
> > >}
> > >
> > >The same goes for the "relax" input.
> > >
> > >Julian, please correct me if I'm wrong, but it looks to me like you've
> > >conflated the clamp-input and clamp-coefficient variables. The UGen
> > >works correctly but is not as optimal as you intended, because the
> > >recalculation of the coefficient would still happen once every control
> > >period.
> > >
> > >I'll fix this later (and do the a-rate calc func too); let me know if
> > >I've got this right or not...
> > >
> > >Dan
> > >
> > >
> > >
> > >2007/12/14, Dan Stowell <danstowell@xxxxxxxxx>:
> > >> A while ago Julian reworked the Amplitude UGen slightly to allow the
> > >> coefficients to be modulated. Julian, you left some old calc-func code
> > >> in there, deactivated using some "#if" macros. Is it OK to remove the
> > >> old code? Would make it easier to work on fixing the current code...
> > >>
> > >> Dan
> > >>
> > >>
> > >> 2007/12/13, Josh Parmenter <josh@xxxxxxxxxxxxxxxxx>:
> > >> > I think option 1 makes sense. Pitch.kr can take an audio input, so it
> > >> > makes sense (to me at least) that Amplitude should be able to also.
> > >> >
> > >> > Josh
> > >> >
> > >> > On Dec 13, 2007, at 1:50 PM, Dan Stowell wrote:
> > >> >
> > >> > > Hi all,
> > >> > >
> > >> > > Applying Amplitude.kr to an audio-rate signal is allowed, in fact all
> > >> > > the examples in the helpfile do this. However, I noticed that the UGen
> > >> > > doesn't really handle this case "correctly" - if run at control-rate
> > >> > > it simply expects its input to be control rate; the end result on
> > >> > > audio-rate input is a dodgy downsampling which can lead to incorrect
> > >> > > results.
> > >> > >
> > >> > > For example, these two should really give similar results but they
> > >> > > don't (give them a few seconds to converge):
> > >> > >
> > >> > > x = {(Amplitude.kr(Impulse.ar(44100/64, 0.0),1,1)).poll}.play // 1
> > >> > > x = {(Amplitude.kr(Impulse.ar(44100/64, 0.02),1,1)).poll}.play // 0
> > >> > >
> > >> > > Same goes for these:
> > >> > >
> > >> > > x = {(Amplitude.kr(SinOsc.ar(44100/64, 0.0),1,1)).poll}.play // 0.098
> > >> > > x = {(Amplitude.kr(SinOsc.ar(44100/64, pi/4),1,1)).poll}.play // 0.77
> > >> > >
> > >> > > Options for fixing this:
> > >> > >
> > >> > > (1) Alter the UGen source, add a new calc func to deal with the a-to-k
> > >> > > (2) Make Amplitude a subclass of Filter, so it refuses to run k-rate
> > >> > > on an a-rate input (unhelpful!)
> > >> > > (3) Alter the Amplitude class so it automatically replaces
> > >> > > Amplitude.kr(x.ar) with A2K.kr(Amplitude.ar(x.ar))
> > >> > >
> > >> > > Any particular thoughts?
> > >> > >
> > >> > > Dan
> > >> > >
> > >> > > --
> > >> > > http://www.mcld.co.uk
> > >> > > _______________________________________________
> > >> > > Sc-devel mailing list
> > >> > > Sc-devel@xxxxxxxxxxxxxxx
> > >> > > http://www.create.ucsb.edu/mailman/listinfo/sc-devel
> > >> >
> > >> > ******************************************
> > >> > /* Joshua D. Parmenter
> > >> > http://www.realizedsound.net/josh/
> > >> >
> > >> > "Every composer - at all times and in all cases - gives his own
> > >> > interpretation of how modern society is structured: whether actively
> > >> > or passively, consciously or unconsciously, he makes choices in this
> > >> > regard. He may be conservative or he may subject himself to continual
> > >> > renewal; or he may strive for a revolutionary, historical or social
> > >> > palingenesis." - Luigi Nono
> > >> > */
> > >> >
> > >> >
> > >> > _______________________________________________
> > >> > Sc-devel mailing list
> > >> > Sc-devel@xxxxxxxxxxxxxxx
> > >> > http://www.create.ucsb.edu/mailman/listinfo/sc-devel
> > >> >
> > >>
> > >>
> > >> --
> > >> http://www.mcld.co.uk
> > >>
> > >
> > >
> > >--
> > >http://www.mcld.co.uk
> > >
> > >_______________________________________________
> > >Sc-devel mailing list
> > >Sc-devel@xxxxxxxxxxxxxxx
> > >http://www.create.ucsb.edu/mailman/listinfo/sc-devel
> >
> >
> > --
> >
> >
> >
> >
> >
> > .
> > _______________________________________________
> > Sc-devel mailing list
> > Sc-devel@xxxxxxxxxxxxxxx
> > http://www.create.ucsb.edu/mailman/listinfo/sc-devel
> >
>
>
> --
> http://www.mcld.co.uk
>
--
http://www.mcld.co.uk