Re: [music-dsp] Dynamic smoothing algorithm
On 8 December 2016 at 06:13, Lubomir I. Ivanov wrote: > > a couple of typos: > - meaure -> measure > - continous - > continuous > - acheived -> achieved > > this is very cool! > did you observe any increment in the THD when applying the routine; > abs() tends to contribute to that? > > thanks > lubomir Glad you like it lubomir! Thanks for the corrections, I'll update the document to fix the typos. The abs(band) is a sudden non-linearity, but this is done to on the signal modulating the cutoff frequency and is not applied to the input signal directly. It will introduce some distortion, but not too much more than a smoother transition like a function starting with band^2 then flattening out to linear. I've found for control signals linear frequency modulation works most musically, but please feel free to try any non-linearity you want in on the bandpass signal that may suit your application better. Cheers, Andy ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Dynamic smoothing algorithm
Original Message Subject: Re: [music-dsp] Dynamic smoothing algorithm From: "Lubomir I. Ivanov" Date: Wed, December 7, 2016 5:13 pm To: "A discussion list for music-related DSP" -- > On 6 December 2016 at 08:26, Andrew Simper wrote: >> Hi Guys, >> >> Another year has almost passed so I thought it was time to release >> another technical paper! >> >> It's a dynamic smoothing algorithm that can do things like this: >> >> http://cytomic.com/files/dsp/dynamic-smoothing.png >> >> I came up with the idea a few years ago when I needed a way to >> de-noise and de-step the cutoff of a self oscillating filter when >> mapped to a midi controller. ... > > this is very cool! > did you observe any increment in the THD when applying the routine; > abs() tends to contribute to that? i think it's only meant to apply to controller or meter data, not directly to audio data. �i think it's to remove jitter from the controller and the trick is that the jitter can be well removed yet the transient response to a step is fast. it's not the same algorithm, but it's a similar purpose to control filter i have done that employs a dead-zone to keep the little jitters out. �it was long ago, dunno where the code is (i *don't* think it was anything i did for Wave Mechanics, in which i would not be sharing it), but if i find it, i can post it too as an alternative. �it looks to me that the performance of Andrew's transient filter is better. if i recall correctly, my dead-zone de-jitterer went something like this: � a simple one-pole LPF looks like: � �y[n] = y[n-1] + (1-p)*( x[n] - y[n-1] ) p is the pole value and 0 < 1-p << 1 . if 1-p is very small, jitter is suppressed but the transient response is very slow. �i think i sped it up when the difference between input and output was large by adding this term: � � �y[n] = y[n-1] + (1-p)*(x[n] - y[n-1]) �+ �(1-q)* DZ(x[n] - y[n-1]) � DZ() is the dead-zone function and might be defined as � � DZ(x) = �x - SAT(x) where SAT() is a saturation function � �SAT(x) = x �for |x| < w �and sgn(x)*w for |x| > w � "w" is some width parameter. to make the non-linearity smooth, the saturation function can be made smooth by using something like a tan() or tanh() function. � � �SAT(x) = w * ( e^(x/w) - e^(-x/w) )�/ ( e^(x/w) + e^(-x/w) ) � this method is not triggered by BPF energy, but is triggered by an input deviating from the output by a large amount. -- r b-j � � � � � � � � �r...@audioimagination.com "Imagination is more important than knowledge." � ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Dynamic smoothing algorithm
hello, On 6 December 2016 at 08:26, Andrew Simper wrote: > Hi Guys, > > Another year has almost passed so I thought it was time to release > another technical paper! > > It's a dynamic smoothing algorithm that can do things like this: > > http://cytomic.com/files/dsp/dynamic-smoothing.png > > I came up with the idea a few years ago when I needed a way to > de-noise and de-step the cutoff of a self oscillating filter when > mapped to a midi controller. It uses a dynamic 2 pole multimode > filter. The basic idea is to use a filter's bandpass output to > modulate its own cutoff frequency. The basic version takes 6+-, 3* and > one absolute value, details here: > > http://cytomic.com/files/dsp/DynamicSmoothing.pdf > > Enjoy, and have a happy holidays everyone :) > a couple of typos: - meaure -> measure - continous - > continuous - acheived -> achieved this is very cool! did you observe any increment in the THD when applying the routine; abs() tends to contribute to that? thanks lubomir -- ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Dynamic smoothing algorithm
On 6 December 2016 at 15:35, robert bristow-johnson wrote: > > > Original Message > Subject: [music-dsp] Dynamic smoothing algorithm > From: "Andrew Simper" > Date: Tue, December 6, 2016 1:26 am > To: "A discussion list for music-related DSP" > -- > >> >> Another year has almost passed so I thought it was time to release >> another technical paper! >> >> It's a dynamic smoothing algorithm that can do things like this: >> >> http://cytomic.com/files/dsp/dynamic-smoothing.png > > that (bottom graph) looks nice. can't be totally linear. It's a linear filter with self fm, so the fm could be thought of as a non-linear element. >> The basic idea is to use a filter's bandpass output to >> modulate its own cutoff frequency. > > so, the more BPF output (abs and LPF'd), the lower the LPF cutoff frequency? The abs of the BPF is taken, and then this is used to increase the same filter's cutoff frequency. It's a 2 pole multi-mode filter, and the final output is a 2 pole low pass. > why a BPF and not an HPF? because the HP component is already well > filtered out, so you need not measure that energy? You want to reject high frequency small changes, so the HPF wouldn't reject that, so wouldn't reject high frequency noise. >>The basic version takes 6+-, 3* and >> one absolute value, details here: > > that's code at "tick", right? Yes, it is the op count for the per sample processing (be that control or audio rate). > >> http://cytomic.com/files/dsp/DynamicSmoothing.pdf >> >> Enjoy, > > thanks, Andrew. it looks like a valuable little slewing alg on the > controls. You're welcome! I fine tuned the initial cutoff and sensitivity to make the plots look nice, but they will need adjusting depending on the target platforms implementation details, but it hopefully won't take long to get it sounding how you want. Cheers, Andy ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
Re: [music-dsp] Dynamic smoothing algorithm
Original Message Subject: [music-dsp] Dynamic smoothing algorithm From: "Andrew Simper" Date: Tue, December 6, 2016 1:26 am To: "A discussion list for music-related DSP" -- > > Another year has almost passed so I thought it was time to release > another technical paper! > > It's a dynamic smoothing algorithm that can do things like this: > > http://cytomic.com/files/dsp/dynamic-smoothing.png that (bottom graph) looks nice. �can't be totally linear. > The basic idea is to use a filter's bandpass output to > modulate its own cutoff frequency. so, the more BPF output (abs and LPF'd), the lower the LPF cutoff frequency? why a BPF and not an HPF? � because the HP component is already well filtered out, so you need not measure that energy? >The basic version takes 6+-, 3* and > one absolute value, details here: that's code at "tick", right? > http://cytomic.com/files/dsp/DynamicSmoothing.pdf > > Enjoy, thanks, Andrew. �it looks like a valuable little slewing alg on the controls. � -- r b-j � � � � � � � � �r...@audioimagination.com "Imagination is more important than knowledge." ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp
[music-dsp] Dynamic smoothing algorithm
Hi Guys, Another year has almost passed so I thought it was time to release another technical paper! It's a dynamic smoothing algorithm that can do things like this: http://cytomic.com/files/dsp/dynamic-smoothing.png I came up with the idea a few years ago when I needed a way to de-noise and de-step the cutoff of a self oscillating filter when mapped to a midi controller. It uses a dynamic 2 pole multimode filter. The basic idea is to use a filter's bandpass output to modulate its own cutoff frequency. The basic version takes 6+-, 3* and one absolute value, details here: http://cytomic.com/files/dsp/DynamicSmoothing.pdf Enjoy, and have a happy holidays everyone :) Cheers, Andrew ___ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp