I don't have a paper about this and I don't see how you could get the SNR from it.

For frequency detection (prefilter) -> HilbertTransform -> atan2 gives you the phase differenciate and unwrap gives you the angular frequency: diff = phase_new - phase_old if phase_old > Pi and phase_new < Pi then diff += 2Pi and F Hz = diff * SR

`This estimate is not perfect and has some modulation since the filter is`

`not perfect and so`

`the Hilbert Transform includes more than the lowest partial and atan2 is`

`the sum of all (I think).`

`A better estimate is to only measure the time between wraparounds of the`

`phase:`

`The sub-sample time of the wraparound (the time that is passed when its`

`detected) is`

(phase_value_after_wrap_round / angular_frequency ) * 1/SR I basically start a counter with 1/SR at every phase wrap around and subtract the sub-sample time, and 1/T for F when the cycle is completed. So this gives you an estimate once per cycle, which is more or less in synch with the original waveform.

`If you need more than one estimate per cycle you can add an offset to`

`the phase,`

`and wrap it, and run counters in parallel, or use the angular frequency`

`per sample`

directly.

`I just realized I also have a static prefilter to precondition the`

`signal and a minimum frequency for the dynamic filters`

if I remember correctly this was to avoid that the system tends to

`fall down to dc when there is no signal - your idea to add some noise`

`and to change the Q`

of the bandpass might alos improve things Am 04.02.2018 um 01:45 schrieb Dario Sanfilippo:

Hi, GM.On 3 February 2018 at 18:39, gm <g...@voxangelica.net<mailto:g...@voxangelica.net>> wrote:If your goal is to isolate the lowest partial, why dont you use the measured frequency to steer a lowpass or lowpass/bandpass filter?I'm already piloting a lowpass in my current algorithm but I wasthinking to use a bandpass too, also for another algorithm whichdetects the loudest partial. I haven't properly thought of that but afirst idea was to have the Q of the BP inversely proportional to thederivative of the output of the integrator: that way, when theintegrator is not changing we are around the detected partial and wecan then select even further by increasing the Q. Though, I shouldalso think of a way to "release" the Q when the input signal changesor the system might enter an attractor.Currently, in the algorithm that I described earlier, there is a verytiny amount of energy added to the high spectrum of the crossover;tiny enough to be negligible for the measurement, but big enough tomove the cutoff up when there is no energy in the crossover's input.So if I have a detected lowest at 1k plus a bunch of partials at 10kand higher, if I remover the 1k partial the system will move to 10k.For my time domain estimator I use 4th order Lowpass, 2nd order BP -> HilbertTransform -> Phasedifferenz -> Frequency |________________________cutoff____________________________________________|I'm not familiar with the technique which uses the HT and the phasedifference to calculate the frequency. I'd be very grateful if youcould say a few words about that. Can you also control theSNR/sensitivy in your system?This gives you an estimate (or rather measurement) per sample. A further improvement is to calculate the sub-sample time between phase wraparounds, this basically elimates any spurios modulations from the phase within a cycle, simlar to an integrator. You can have several measurements per cycle again by adding angle offsets to the phase and calculating the time between wraprounds of the new angles as well. I use SVFs for the filters with Q set to a Butterworth response for the LPs and Q=2 for the Bandpass. I dont know if this method has less overhead than yor method because you need the Hilbert Transform, but the prefiltering is more efficient Depending on your input sorces you can try to exchange the HT with a single allpass with adaptive corner frequency All great ideas, thanks a lot for sharing. Have you published anypaper on this or other time-domain algorithms for feature-extration?The reason why I implemented that algorithm is that it will probablybe used in a time-domain noisiness estimator which I'm working on andthat I will perhaps share here if it gets somewhere.Cheers, Dario Am 03.02.2018 um 14:49 schrieb Dario Sanfilippo:Thanks for the links, Steven! Vadim, what is the title of your book? We may have it here at uni. Hi, Robert. I'm working on some time-domain feature-extraction algorithms based on adaptive mechanisms. A couple of years ago, I implemented a spectral tendency estimator where the cutoff of a crossover (1p1z filters) is piloted by the RMS imbalance of the two spectra coming out of the same crossover. Essentially, a negative feedback loop for the imbalance pushes the cutoff towards the predominant spectrum until there's a "dynamical equilibrium" point which is the estimated tendency. A recent extension to that algorithm was to add a lowpass filter within the loop, at the top of the chain, as shown in this diagram: https://www.dropbox.com/s/a1dtk0ri64acssc/lowest%20partial.jpg?dl=0 <https://www.dropbox.com/s/a1dtk0ri64acssc/lowest%20partial.jpg?dl=0>. (Some parts necessary to avoid the algorithm from entering attractors have been omitted.) If the same spectral imbalance also pilots the cutoff of the lowpass filter, we have a nested positive (the lowpass strengthens the imbalance which pushes the cutoff towards the same direction) and negative (the crossover's dynamical equilibrium point) feedback loop. So it is a recursive function which removes partials from top to bottom until there is nothing left to remove except the lowest partial in the spectrum. The order and type of the lowpass (I've tried 1p1z ones, cascading up to four of them), I believe, is what determines the SNR in the system, so what the minimum amplitude of the bottom partial should be to be considered signal or not. Large transition bands in the lowpass will affect the result as the top partials which are not fully attenuated will affect the equilibrium point. Since elliptic filters have narrow transition bands at low orders, I thought that they could have given more accurate results, although the ripples in the passing band would also affect the SNR of the system. Perhaps using Butterworth filters could be best as the flat passing band could make it easier to model a "threshold/sensitivity" parameter. With that regard, I should also have a look at fractional order filters. (I've quickly tried by linearly interpolating between filters of different orders but I doubt that that's the precise way to go.) Of course, an FFT algorithm would perhaps be easier to model, though this time-domain one should be CPU-less-expensive, not limited to the bin resolution, and would provide a continuous estimation not limited to the FFT period. I've tested the algorithm and it seems to have a convincing behaviour for most test signals, though it is not too accurate in some specific cases. Any comment on how to possibly improve that is welcome. Thanks, Dario Dario Sanfilippo - Research, Teaching and Performance Reid School of Music, Edinburgh University +447492094358 <tel:07492%20094358> http://twitter.com/dariosanfilippo <http://twitter.com/dariosanfilippo> http://dariosanfilippo.tumblr.com <http://dariosanfilippo.tumblr.com> On 3 February 2018 at 08:01, robert bristow-johnson <r...@audioimagination.com <mailto:r...@audioimagination.com>> wrote: i'm sorta curious as to what a musical application is for elliptical filters that cannot be better done with butterworth or, perhaps, type 2 tchebyshev filters? the latter two are a bit easier to derive closed-form solutions for the coefficients. whatever. (but i am curious.) -- r b-j r...@audioimagination.com <mailto:r...@audioimagination.com> "Imagination is more important than knowledge." ---------------------------- Original Message ---------------------------- Subject: Re: [music-dsp] Elliptic filters coefficients From: "Dario Sanfilippo" <sanfilippo.da...@gmail.com <mailto:sanfilippo.da...@gmail.com>> Date: Fri, February 2, 2018 6:37 am To: music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> -------------------------------------------------------------------------- > Thanks, Vadim. > > I don't have a math background so it might take me longer than I wished to > obtain the coefficients that way, but it's probably time to learn it. With > that regard, would you have a particularly good online resource that you'd > suggest for pole-zero analysis and filter design? > > Thanks to you too, Shannon. > > Best, > Dario > > On 1 February 2018 at 11:16, Vadim Zavalishin < > vadim.zavalis...@native-instruments.de <mailto:vadim.zavalis...@native-instruments.de>> wrote: > >> Hmm, the Wikipedia article on elliptic filters has a formula to calculate >> the poles and further references the Wikipedia article on elliptic rational >> functions which effectively contains the formula for the zeros. Obtaining >> the coefficients from poles and zeros should be straightforward. >> >> Regards, >> Vadim >> >> >> On 01-Feb-18 12:00, Dario Sanfilippo wrote: >> >>> Hello, everybody. >>> >>> I was wondering if you could please help me with elliptic filters. I had >>> a look online and I couldn't find the equations to calculate the >>> coefficients. >>> >>> Has any of you worked on that? >>> >>> Thanks, >>> Dario >>> >>> >>> _______________________________________________ >>> dupswapdrop: music-dsp mailing list >>> music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> >>> https://lists.columbia.edu/mailman/listinfo/music-dsp <https://lists.columbia.edu/mailman/listinfo/music-dsp> >>> >>> >> -- >> Vadim Zavalishin >> Reaktor Application Architect >> Native Instruments GmbH >> +49-30-611035-0 >> >> www.native-instruments.com <http://www.native-instruments.com> >> _______________________________________________ >> dupswapdrop: music-dsp mailing list >> music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> >> https://lists.columbia.edu/mailman/listinfo/music-dsp <https://lists.columbia.edu/mailman/listinfo/music-dsp> >> >> > _______________________________________________ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> > https://lists.columbia.edu/mailman/listinfo/music-dsp <https://lists.columbia.edu/mailman/listinfo/music-dsp> _______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp <https://lists.columbia.edu/mailman/listinfo/music-dsp> _______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp <https://lists.columbia.edu/mailman/listinfo/music-dsp>_______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu <mailto:music-dsp@music.columbia.edu> https://lists.columbia.edu/mailman/listinfo/music-dsp <https://lists.columbia.edu/mailman/listinfo/music-dsp>_______________________________________________ dupswapdrop: music-dspmailing list music-dsp@music.columbia.eduhttps://lists.columbia.edu/mailman/listinfo/music-dsp

_______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp