DSPRelated.com
Forums

Extracting digital FM data from unwanted audio

Started by W Marsh March 13, 2005
Hi. I want to extract digital data (where 1022Hz represents a 0, and
2044Hz represents a 1) from an audio signal where it is mixed with a
song. An example of the signal I want after separating from the noise
is http://funge.8bit.co.uk/cleandata.gif

My knowledge of DSP is purely investigative, i.e. I haven't really
studied the subject, so I've no idea how to best approach this. I've
tried simple bandpass filtering, but this doesn't seem to give clean
results - for example, if I filter to leave only frequencies near
1022Hz, I end up with a signal with a constant sinusoid occasionally
raising in volume, rather than a clean signal with clear spikes. I
imagine that to recover the signal I would need to account for more
than just these two frequencies anyway, due to the extra frequencies
brought about from the modulation(?). I've tried spectral analysis of
the extracted data, but it's not given me very useful data - a filtered
signal retaining the wanted frequencies under spectral analysis gives
me data where there are 1s overlapping 0s, and large continuous blocks
of each (and yes, I have zoomed in!).

If anybody can correct my terminology and suggest an approach, I'd be
much obliged.

W Marsh wrote:
> Hi. I want to extract digital data (where 1022Hz represents a 0, and > 2044Hz represents a 1) from an audio signal where it is mixed with a > song. An example of the signal I want after separating from the noise > is http://funge.8bit.co.uk/cleandata.gif > > My knowledge of DSP is purely investigative, i.e. I haven't really > studied the subject, so I've no idea how to best approach this. I've > tried simple bandpass filtering, but this doesn't seem to give clean > results - for example, if I filter to leave only frequencies near > 1022Hz, I end up with a signal with a constant sinusoid occasionally > raising in volume, rather than a clean signal with clear spikes. I > imagine that to recover the signal I would need to account for more > than just these two frequencies anyway, due to the extra frequencies > brought about from the modulation(?). I've tried spectral analysis of > the extracted data, but it's not given me very useful data - a
filtered
> signal retaining the wanted frequencies under spectral analysis gives > me data where there are 1s overlapping 0s, and large continuous
blocks
> of each (and yes, I have zoomed in!). > > If anybody can correct my terminology and suggest an approach, I'd be > much obliged.
That site is unavailable at the moment (13 March 19:11 GMT). One detail you did not include is the data rate. If for the moment it is assumed that the background is AWGN, the ideal bandpass filter will have a sinc frequency response centered at the tone frequency and with the first null at the inverse data rate. John
W Marsh wrote:
> Hi. I want to extract digital data (where 1022Hz represents a 0, and > 2044Hz represents a 1) from an audio signal where it is mixed with a > song. An example of the signal I want after separating from the noise > is http://funge.8bit.co.uk/cleandata.gif > > My knowledge of DSP is purely investigative, i.e. I haven't really > studied the subject, so I've no idea how to best approach this. I've > tried simple bandpass filtering, but this doesn't seem to give clean > results - for example, if I filter to leave only frequencies near > 1022Hz, I end up with a signal with a constant sinusoid occasionally > raising in volume, rather than a clean signal with clear spikes. I > imagine that to recover the signal I would need to account for more > than just these two frequencies anyway, due to the extra frequencies > brought about from the modulation(?). I've tried spectral analysis of > the extracted data, but it's not given me very useful data - a
filtered
> signal retaining the wanted frequencies under spectral analysis gives > me data where there are 1s overlapping 0s, and large continuous
blocks
> of each (and yes, I have zoomed in!). > > If anybody can correct my terminology and suggest an approach, I'd be > much obliged.
see http://www.wj.com/pdf/technote=ADs/FSK_signals_demod.pdf Mark (credit goes to John who posted this link in another thread)
I believe it's modulated so that each bit is a full cycle of the wave -
i.e. a 0 bit lasts for 1/1022s, and a 1 bit lasts for 1/2044s.

W Marsh wrote:
> I believe it's modulated so that each bit is a full cycle of the wave
-
> i.e. a 0 bit lasts for 1/1022s, and a 1 bit lasts for 1/2044s.
A different interval for 0 than for 1 -- that is rather unusual.
Yeah, it's not straightforward FM - it's designed this way for a
microprocessor to decode the data through simple edge detection.
Specifically, this is how the ZX Spectrum loads data from cassette tape.

Mark wrote:

...
> See > http://www.wj.com/pdf/technote�s/FSK_signals_demod.pdf
The link doesn't work for me. (16:02) Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
On Sun, 13 Mar 2005 16:03:06 -0500, Jerry Avins <jya@ieee.org> wrote:

>Mark wrote: > >... >> See >> http://www.wj.com/pdf/technote&#4294967295;s/FSK_signals_demod.pdf > >The link doesn't work for me. (16:02) > >Jerry
it should be technotes. try this: http://www.wj.com/pdf/technotes/FSK_signals_demod.pdf
mk wrote:
> On Sun, 13 Mar 2005 16:03:06 -0500, Jerry Avins <jya@ieee.org> wrote: > > >Mark wrote: > > > >... > >> See > >> http://www.wj.com/pdf/technote=ADs/FSK_signals_demod.pdf > > > >The link doesn't work for me. (16:02) > > > >Jerry > > it should be technotes. try this: > http://www.wj.com/pdf/technotes/FSK_signals_demod.pdf
For some reason "technotes" printed (in Google) as "technotes-s" in the first link and "technote s" in the second one.
john wrote:

> W Marsh wrote:
>>I believe it's modulated so that each bit is a full cycle of the wave
>>i.e. a 0 bit lasts for 1/1022s, and a 1 bit lasts for 1/2044s.
> A different interval for 0 than for 1 -- that is rather unusual.
I believe this is right for the formats that computer data stored on audio cassettes have used. It is convenient to do with a loop while reading an input port, or writing an output port. -- glen