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.
Extracting digital FM data from unwanted audio
Started by ●March 13, 2005
Reply by ●March 13, 20052005-03-13
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 - afiltered> signal retaining the wanted frequencies under spectral analysis gives > me data where there are 1s overlapping 0s, and large continuousblocks> 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
Reply by ●March 13, 20052005-03-13
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 - afiltered> signal retaining the wanted frequencies under spectral analysis gives > me data where there are 1s overlapping 0s, and large continuousblocks> 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)
Reply by ●March 13, 20052005-03-13
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.
Reply by ●March 13, 20052005-03-13
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.
Reply by ●March 13, 20052005-03-13
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.
Reply by ●March 13, 20052005-03-13
Mark wrote: ...> See > http://www.wj.com/pdf/technote�s/FSK_signals_demod.pdfThe link doesn't work for me. (16:02) Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by ●March 13, 20052005-03-13
On Sun, 13 Mar 2005 16:03:06 -0500, Jerry Avins <jya@ieee.org> wrote:>Mark wrote: > >... >> See >> http://www.wj.com/pdf/technote�s/FSK_signals_demod.pdf > >The link doesn't work for me. (16:02) > >Jerryit should be technotes. try this: http://www.wj.com/pdf/technotes/FSK_signals_demod.pdf
Reply by ●March 13, 20052005-03-13
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.pdfFor some reason "technotes" printed (in Google) as "technotes-s" in the first link and "technote s" in the second one.
Reply by ●March 14, 20052005-03-14
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






