didn’t take time to read everything in details since the last time I read this thread. A lot has been going on… I just would like to say (particularly to Marty who found it first) that indeed the input from the mic (or the live input source) is very bad. And this is not a problem with the mic since recording with the same device and playing back the file as the file source in the modulator gives a correct audio. It is the same with all audio modulators: AM, NFM, SSB so I guess this is a problem with the interfacing with QAudioDevice in the AudioInput object. On the output side the code seems much more complex so my implementation on the input side is maybe too simplistic.
I tried to look at the magnitude of the signal in AM with the channel analyzer so I could see the waveform and it looks like it is modulated at higher frequency. This may indicate that the bytes are not put in the correct order.
I am going to open an issue for that (https://github.com/f4exb/sdrangel/issues/43).
Note: this seems to happen when the channel sample rate is equal to twice the audio sample rate (hence 96 kS/s) and higher so a workaround is to keep the channel sample rate between 48 kS/s inclusive and 96 kS/s exclusive. This does not work with WFM because audio is always interpolated at 384 kS/s before modulation.
As an example this setup works around the problem for AM, NFM, SSB since the channel sample rate is 93.75 kS/s thus +/- 48 kHz spurs are also rejected:
Note: problem found. Fixed in future version 3.5.4 now in dev branch.
Note2: v3.5.4 has just been released.
Best regards, Edouard.