new FM demodulator

Anders Esbensen anders at
Thu Jan 30 20:18:41 UTC 2014

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.

Den 30/01/2014 kl. 16.35 skrev keenerd <keenerd at>:

> On 1/30/14, keenerd <keenerd at> wrote:
>> On 1/30/14, Anders Lynge Esbensen <anders at> 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"
> 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

More information about the osmocom-sdr mailing list