Hi Kyle I’ve looked at your commit. They way you are calculating the derivative of the sample may not actuate enough. I’m calculating the derivative as ds(n) = (s(n+1) - s(n-1))/2. Implementing a higher order derivative gives better sound, but eats the performance gain.
I’ve also tried to make a integer only version of the demodulator, but the rounding errors makes it sound terrible. Strange enough it is also faster doing things partly in integer and partly in floats. I’v tried to profile the four methods in osx: atan Fast: 11.5%running time aran:lut 17.6% running time atan std: 49.6% running time aes: fm_demod2 22.9% running time The percentage given is time spend in fm_dmod relative to the rest of the program. /Anders Den 30/01/2014 kl. 16.35 skrev keenerd <[email protected]>: > On 1/30/14, keenerd <[email protected]> wrote: >> On 1/30/14, Anders Lynge Esbensen <[email protected]> wrote: >>> I've implemented a faster FM demodulator for rlt_fm. >> >> Let me see if I can get a fixed-point version written. > > I've cleaned it up and it is in my repo. You can enable it with "-A ale" > https://github.com/keenerd/rtl-sdr/commit/025fb56dff98 > > Some quick benchmarks: > std: 10% > fast: 7% > lut: 7% > ale: 7% > > Sound quality is also noticably worse with ale, but that might be from > an error in the fixed point conversion. How does the math look to > you? > > -Kyle > http://kmkeen.com >
