To get around the delay problem, you could consider an.amp_follower(). It is based on the typical amplitude envelope follower used in analog (zero delay rise to peaks, exponential decay after each local peak)
On Tue, Jul 16, 2019 at 2:07 PM Bart Brouns <b...@magnetophon.nl> wrote: > > Hi Benoit, > > Sorry for the late reply. > > I originally wrote slidingRMSn for usage in compressors, which is in essence > what you are doing, so this is certainly an option. > > The downsides of using it here are: > > You have to wait a bit for an estimate of the loudness, so it's always late. > With smaller values of N you get faster reaction, but also more distortion. > > If you can find a way to predict the level of your synth before you make the > sound, it will sound better, cause you then could avoid these problems. > > If you want to use slidingRMSn, I suggest you look at > https://github.com/magnetophon/faustCompressors > and in particular > https://github.com/magnetophon/faustCompressors/blob/master/RMS_FBFFcompressor_mono.dsp > Note: they where written before slidingReduce was merged upstream and I > haven't > adopted them yet to the new libs, cause I wasn't able to package the new faust > release for my distro yet. > > As to your other questions: > > maxN is a necessary implementation detail: faust needs to know the maximum > length of a delayline before it can create it. > N can be the same as maxN if you want. It's just that maxN needs to be known > at compile-time, and N can vary continuously during use if you want. > Choosing N is the hard part. It makes sense to have it related to your lowest > freq, but the best value you'll have to determine by ear, afaik. > In other synths I've gotten good results by setting the decay-time of the > built-in > limiter per note. > > Hope that helps, let me know if you have any other questions! > > Cheers, > Bart. > > Benoit Delemps <benoitdelemps....@gmail.com> writes: > > > Hello everyone, > > > > i am trying to build the additive synthesis module like illustrated in this > > example. > > https://faust.grame.fr/doc/tutorials/#additive-synthesis > > > > The thing is that the normalization applied at the end of the signal > > (dividing by the number of harmonics) prevents overloading but in the same > > time reduces drastically the level output if the energy in the spectrum is > > low. > > > > So instead of dividing by number of harmonics, i choose to divide by > > ba.slidingRMSn to prevent overloading and maintain the level ouput. > > > > And here are my questions. > > > > > > - using slidingRMSn, is this the "good" way to normalize ouput knowing i > > want to maintain the level output even if i drop some harmonic's energy? > > > > > > in the documentation, we got: > > usage > > > > _ : slidingRMSn(N,maxN) : _ > > > > > > - What is the purpose of maxN ? > > - N has to be different of maxN ? > > - And last question, how i choose N ? > > > > I tought i should do that: > > nextpowerof2(Fs / 2*lowest frequency) > > but that doesn't work well at low frequency. > > So i did that instead: > > nextpowerof2(Fs / lowest frequency) > > works fine but don't know really why > > > > here is a sample of my code: > > > > additiveSynth = freq <: par(i,nHarmonics,oscilator(i)):>_<:_,(_ : > > ba.slidingRMSn(512,512)) : / :> _*gain : envelope > > with{ > > freq = > > vgroup("[0]control",hgroup("params",hslider("fundamental[style:knob]",440,125,3000,0.01))); > > gain = > > vgroup("[0]control",hgroup("params",hslider("gain[style:knob]",-10,0,-100,0.01): > > ba.db2linear(_))); > > gate = vgroup("[1]control",button("gate")); > > envelope = _*en.asr(0.35,1,0.35,gate); > > nHarmonics = 10; > > }; > > > > I thank you for you help > > > > bests > > > > Benoit > > _ > > 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 -- Julius O. Smith III <j...@ccrma.stanford.edu> Professor of Music and, by courtesy, Electrical Engineering CCRMA, Stanford University http://ccrma.stanford.edu/~jos/ _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users