Any recommendation for sound card FSK demodulator software?

MFB

Senior Member
Can anyone recommend a simple software modem that uses the PC sound card. There are a few free mult-mode packages available but they seem rather complex, with internet access etc. All I really need is FSK demodulation.
 

manuka

Senior Member
It's assumed that you mean Audio Freq.Shift Keying (AFSK) & perhaps Radio Teletype (RTTY)? Do you only need to receive - perhaps weather forescasts ? Maybe you're decoding POTS Bell 202 AFSK 1200/2200 Hz caller ID?

Sound card RTTY decoding software indeed abounds,but "simple" may mean crippled - what have you looked at so far? Are you a radio ham ? Best you help us by first outlining your intentions! Mark/space freqs ? Data rate? Actual (RTTY?) mode?

Approaches with ASFK ICs (XR2211 etc) may interest too, although with older PCs now so abundant ICs are hardly worth the effort for an "easy" application like yours. Stan. (ZL2APS)
 

MFB

Senior Member
Thanks Stan and sorry for the lack of detail in my request. All I really need is a replacement for the MX614 modem that I often use for simple telemetry projects, like ( http://www.picaxeforum.co.uk/showthread.php?13023-Low-power-433MHz-Telemetry-System&highlight=MFB+telemetry ).

Audio FSK is very forgiving and I use it for all sorts of applications, like sending data over the audio channel of a 2.4GHz video link. However, as the data normally ends up in a PC, it would be nice to replace the modem chip with sound card software.

The software would not need to send data or support non-standard modulation frequencies or baud rates.
 

srnet

Senior Member
With referance to the Morse decoder I have been playing with, how do modem chips compare with the NE567 for tone decoding when there is a fair bit of noise about ?
 

MFB

Senior Member
Both the modem and tone decoder chips are good at extracting data from noisy signals but the later is not restricted to standard modulation frequencies and baud rates. The NE567 can therefore be configured to take advantage of much longer tone/lower data rate reception.
 

MFB

Senior Member
Forgot to mention that because the MX614 modem operates to a modulation standard, it has the advantage of being crystal controlled and can therefore use very narrow-band (but fixed) input filters.
 

srnet

Senior Member
Forgot to mention that because the MX614 modem operates to a modulation standard, it has the advantage of being crystal controlled and can therefore use very narrow-band (but fixed) input filters.
Thats sort of the reason for the question, some of the modem recieve frequencies are close to the frequency I have been using for morse, and that frequency could also be fixed, helpful if the transmiter was itself crystal controlled. And no doubt you could juggle the xtal frequencies if you cant quite get the tone you want.

Just checked my board of ancient ICs, there is an Am7910 on there, a power hungry beast, I recall modifying TNC for portable use and replaced the circuits 7910 with a far more power friendly TCM3105. I have a XR2211 hanging about somewhere also.

If I was to try this, is there a chip out there that performs better than the others ?
 

srnet

Senior Member
And on the subject of sound card software, is there something out there that will draw a moving spectrum of the received audion on screen, such that you can see, in a signal full of noise, the weak morse tones from my lost model locators ?
 

MFB

Senior Member
I found the XR2211 more difficult to use than the MX614 (which is still in production) but to make the most of its performance it will be necessary to transmit a frequency for the 'space' rather than just leaving a gap in transmission. This will give FSK modulated Morse that can be at a slow rate provided you stick to the two standard modulation frequencies.
 

srnet

Senior Member
Sounds like a pile of hassle, having mark and space frequncy for morse would make it difficult to read by ear.

I posted an example in the project section of the amount of noise the NE567 and filtering can cope with.

Playing the same audio file and using Spectran on it, you can easily see the morse and numbers are quite easy to decode by sight (hanndy bit of software)
 

geoff07

Senior Member
There is a lot of stuff out there on Software Defined Radio (using the full width of a sound spectrum to view and demod all kinds of radio signals in software). GNU Radio, Winrad and Linrad for examples. Much is GPL code so potentially usable. I haven't played with it for a while but I'm sure you would find something of interest under SDR.
 

MFB

Senior Member
I agree that it sounds a pile of hassle to change from the NE567 to an FSK modem chip, and that was my point. No advantage unless you add the complexity of FSK modulation.
 

manuka

Senior Member
Although such superior soundcard software as Spectrum Lab exists,it's use can be complicated & with a steep learning curve. I continue to swear by Spectran,as it's powerful but intuitively easy to drive,and have used it for all sorts of insights. Typical have been ST Hell and even VLF seismic precursors.

MFB: It's assumed the rocket's AFSK encoder is still based around your ~Aug. 2009 circuitry (below)? This should really be more widely promoted- that's if it's kept working reliably! My initial trials with such approaches,but using Jaycar's Keymark/Spiriton 433 MHz tx, were unsatisfactory. I must have another look it -any comments first appreciated.

I've found MMTTY suitable for my PC soundcard based decoding needs in the past, but haven't kept up with such offerings as FLdigi. Perhaps shuffle your way thru' this near overwhelming swag !

Extra: Given the increased "M2" horsepower it may be worth re-considering digital & fuzzy modes that previously challenged basic PICAXEs. The 2009 era SMT (Sequential MultiTone Hellschreiber)- which completely filled a 08M- perhaps could benefit for starters. Stan.
Code:
'********************************************************************************
'*  VK/ZL PICAXE-08M HELLSCHREIBER Sequential Multi-Tone (SM/T) beacon code     *
'*  Looks capable of storing ~25 chs. on an 08M  ZL2APS & VK6HV collaboration.  *
'*  This demo entirely fills (256/256 bytes) a 08M.      Sept 2009/Jan.2010     *
‘*  Program may be downloaded from www.picaxe.orcon.net.nz/VKZLHELL.BAS         *
'********************************************************************************
REM PC soundcard decode via SPECTRAN V2 "Waterfall" visual display 
REM Tweak SPECTRAN auto bright, contrast, speed, gain & palette settings etc to suit
REM NOTE: Feel free to add, change, modify or optimize required. 
REM PICAXE tone generating syntax is in form PIN,(SOUND,DURATION)
REM Sound has values 0 (silence) to 128,with output freq =12048/(128.1-sound)
REM So sound =95 output ~12000/(128-95)= 12000/33 =~364 Hz, doubling to 728Hz when 8MHz SETFREQ M8
REM NB – freq. varies slightly with temp. & individual PICAXE internal oscillator calibration.
REM CALIBFREQ +/-30 ( POKE $90 ) conveniently tweaks internal osc. freq.
REM ------------------------------------------------------------------------------------------
Symbol Testbyte = B0
Symbol Column_Numbers = B4
Symbol Character = B8
Symbol Column_Elements = B6
Symbol Column_Bits = B2
Symbol Tones = B10
Symbol Increment = B12
SetFreq M8
Start:
Wait 10 'Message repeat delay-8MHz clock halves value! Use SLEEP (& BOD) etc to enhance battery life
REM Lookup command below accesses your pre-stored message. Modify to suit- pad out with spaces (0)?
REM shows VK.ZL PICAXE "HELL" BEACON - make upper column_number same as number of ch. elements.
For Column_Numbers = 0 to 151              'setting col.number too high repeats last character!
Lookup Column_Numbers,(31,32,64,32,31,0,127,8,20,34,65,0,8,0,97,81,73,69,67,0,127,64,64,64,64,0,0,0,0,0,0,0,127,9,9,9,6,0,65,65,127,65,65,0,62,65,65,65,65,0,124,10,9,10,124,0,65,34,28,34,65,0,127,73,73,73,73,0,0,0,0,0,0,1,1,0,127,8,8,8,127,0,127,73,73,73,73,0,127,64,64,64,64,0,127,64,64,64,64,0,1,1,0,0,0,0,0,0,127,73,73,73,62,0,127,73,73,73,73,0,124,10,9,10,124,0,62,65,65,65,65,0,62,65,65,65,62,0,127,4,8,16,127,0,0,0,0,0,0,8),Character 
Testbyte = Character
Tones = 95
Increment = 0                            'Resets default to 0 after each 5x7 matrix col. sent 
Gosub Hellscreiber
Next
Goto Start
Hellscreiber:
For Column_Elements = 1 to 7
Column_Bits = Bit6                       '7th bit in Byte B0 (Bit0 - Bit7).
If Column_Bits = 1 Then Gosub ToneON     'Send tone if "Bit6" of Byte B0 = "1", 
If Column_Bits = 0 Then Gosub ToneOFF    'else send quiet if "Bit6" of Byte B0 ="0".only bit tested.
Testbyte = Testbyte * 2                  'Shift left! 
Next Column_Elements
Return 
ToneON:     
Poke $90, Increment                     'CALIBFREQ to bring tones (& thus images) tighter.       
Sound 1, (Tones, 15)                    'PICAXE tone generating syntax in form pin,(sound, duration)
Bit6 = 0                                'Reset Bit6 of Byte B0 to "0" so Hellschreiber: can retest 
Increment = Increment + 2               'Increment a value + 1 to be POKEd at $90
Return 
ToneOFF:
Poke $90, Increment
Sound 1, (0, 15)                        'Sound value of 0 gives silence 
Bit6 = 0
Increment = Increment + 2               'Increment a value +1 to be POKEd at $90  
Return 
REM -------------------------------------------------------------------------------------
REM Ch.images shown scrolling down the screen "waterfall" style -SPECTRAN horiz. display turns 90°
REM Rt. mouse button click on SPECTRAN display toggles waterfall scroll from downward to leftwards
REM Construct own characters by considering them scrolling downwards -thus N viewed as Z etc
REM                                       Bit6(this is the 7th bit of the 8bit byte, of Byte B0)
REM                                                             |
REM                                                             |        Last sent Bit0 column 5  
REM 5 wide by 7 high matrix                                     |             |                |
REM                                                             V             |                V
REM  Column numbers  1-5          Ex. letter "A" = 124 - *1111100       ##### V                #   
REM  #1  #2  #3  #4  #5                             10 - *0001010          # #               #   #
REM [ 1][ 1][ 1][ 1]((1)) (Bit0                      9 - *0001001 thus =>  #  #            #       #
REM [ 2][ 2][ 2][ 2][ 2]  (Bit1)                    10 - *0001010          # #             # # # # #
REM [ 4][ 4][ 4][ 4][ 4]  (Bit2)                   124 - *1111100       #####              #       #
REM [ 8][ 8][ 8][ 8][ 8]  (Bit3)                                                           #       #
REM [16][16][16][16][16]  (Bit4)           This is Bit6 of column 1,the first bit sent.--> #       #
REM [32][32][32][32][32]  (Bit5)            Then Bit5 of column 1, then Bit 4 of column 1,             
REM (64)[64][64][64][64]  (Bit6)            Bit3, Bit2, Bit1, Bit0, etc. etc. Then Bit6 
REM [ *][*][ *][ *][ *]  (Bit7,not used)   of column 2, then Bit 5, Bit4 and so on until
REM                                         all 35 bits are "shifted left" through the BIT6
REM                                         of byte B0 location (with appropriate tone or
REM                                         silence) & a complete 5x7 character matrix sent.
REM Bit6 (64) in column #1 is the first 
REM bit sent of the 5 x 7 matrix, Bit0    
REM ((1)) in column #5 is the last bit sent.
REM -------------------------------------------------------------------------------------------
REM         LETTERS:                  and  NUMBERS:                 PUNCTUATION etc: 
REM .
REM A = 124, 10,  9, 10,124       T =   1,  1,127,  1,  1     	! =   0,  0, 95,  0,  0
REM B = 127, 73, 73, 73, 62       U =  63, 64, 64, 64, 63	# =  20,127, 20,127, 20
REM C =  62, 65, 65, 65, 65       V =  31, 32, 64, 32, 31	[ =   0,127, 65, 65,  0
REM D = 127, 65, 65, 65, 62       W = 127, 32, 16, 32,127	] =   0, 65, 65,127,  0
REM E = 127, 73, 73, 73, 73       X =  65, 34, 28, 34, 65	\ =   2,  4,  8, 16, 32	
REM F = 127,  9,  9,  9,  9       Y =   1,  2,124,  2,  1	/ =  32, 16,  8,  4,  2
REM G =  62, 65, 73, 73, 57       Z =  97, 81, 73, 69, 67	" =   0,  1,  1,  0,  0
REM H = 127,  8,  8,  8,127       			        . =   0, 64,  0,  0,  0
REM I =  65, 65,127, 65, 65       0 =  62, 65, 65, 65, 62       , =   0, 96,  0,  0,  0 
REM J = 113, 65, 65,127,  1       1 =  68, 66,127, 64, 64       < =   8, 20, 34, 65,  0 
REM K = 127,  8, 20, 34, 65       2 = 121, 73, 73, 73, 70       > =   0, 65, 34, 20,  8
REM L = 127, 64, 64, 64, 64	  3 =  65, 73, 77, 75, 49       ? =   0,  1, 89,  9,  6 
REM M = 127,  2,  4,  2,127	  4 =  15,  8,  8,  8,127       * =  73, 42,127, 42, 73   
REM N = 127,  4,  8, 16,127	  5 =  79, 73, 73, 73, 49       % =  35, 19,  8,100, 98  
REM O =  62, 65, 65, 65, 62	  6 =  60, 74, 73, 73, 49       + =   8,  8,127,  8,  8
REM P = 127,  9,  9,  9,  6	  7 =   1,  1,121,  5,  3       - =   8,  8,  8,  8,  8
REM Q =  62, 65, 81, 33, 94       8 =  54, 73, 73, 73, 54       = =  20, 20, 20, 20, 20 
REM R = 127,  9, 25, 41, 70	  9 =   6,  9,  9,  9,127       
REM S =  70, 73, 73, 73, 49           			 
REM -------------------------------------------------------------------------------------
REM  Ham radio call example.(0,)= space-use one between letters & perhaps six between words.
REM          V               K                6               H              V     
REM (31,32,64,32,31,0,127,8,20,34,65,0,60,74,73,73,49,0,127,8,8,8,127,0,31,32,64,32,31)
Stan.
 

Attachments

Last edited:

MFB

Senior Member
Thanks for the advice Stan. The simple Schmitt base encoder has provided good service but, if you don't mind the extra size and cost not stuck for space, the FX614 modem chip will offer higher stability and lower harmonics. I now also use the new PICAXE rf in/out commands with basic 433MHz modules but have found that Manchester encoding is not as robust as FSK and, of course, provide lower data rates for the same bandwidth.
 

MFB

Senior Member
Stan, as suggested I have downloaded MTTY and Spectran. Only just started playing but they look good. Spectran should come in pretty useful for a future VLF project. One of the things I would like to do with MTTY is export incoming files to other applications and have yet to see if this is a standard option.
 

manuka

Senior Member
Great! FWIW my own trials with PICAXE generated tone sending over popular(NZ/Aus) Keymark/Spiriton 433 transmitter modules used an isolating capacitor on the TX data input line, along with a 10k pullup. See below.

Open source MMTTY has been around ~10 years & no doubt a file export feature has evolved. This has not been something I've needed - GOOGLE ? Perhaps more of an issue to you is that MMTTY is essentially ham RTTY orientated, with quite modest mark/space frequency "shifts". 170 Hz is typical, & although others are selectable your Bell 202 AFSK (1200/2200 Hz) may not be easily decoded. Of course you could readily organise another shift with your nifty encoding hardware- perhaps 850 Hz ? However then it'd not strictly be Bell 202 & others may have hassles decoding.

An enormous swag of tone modes have evolved,and these sound samples make for enthralling listening & waterfall viewing. As a kid I well recall hearing many of these on an old valve short wave radio !

EXTRA: Your original posting set me Googling for bare bones AFSK 1200 sound card decoders, & Danish space physicist Alexandru Csete's very recent (mid 2011) "QTMM" AFSK1200 (~5MB) emerged as a prospect. It uses Thomas Sailer's Linux Multimon AFSK1200 engine,and Nokia's Qt toolkit. Qtmm is available for Linux, Mac OS X and Windows, & -YES- it looks to have a file saving feature too. Check operation at these satellite telemetry AO-27 & ISS YouTube clips,& (if it appeals) perhaps download & give it a whirl.

Naturally PLEASE let us all know how it handles your rocket's AFSK encoder ! Stan.
 

Attachments

Last edited:

manuka

Senior Member
Update: PCs are so 2010. I'm informed there's now even an Android AFSK decoding application. Time I got a basic smart phone to investigate! Like many of my era, hand me up (!) cell phones from my kids are the norm- the last such "gift" being a 2007 era SE k770i that works just fine. At the rate dual core smart phones are arriving I probably can expect a 2010 single core Android for Xmas however...
 

MFB

Senior Member
This look like it will be quickly adopted by near space balloon recovery crews. Batter than those big old netbooks.
 

manuka

Senior Member
MFB- netbooks indeed look to have peaked & passed.However can you PLEASE check that the Qtmm program works OK ! Just what are your needs when tracking ? Now that APRSDroid has surfaced perhaps also grab a smart phone & verify if it's actually capable of 2 way AFSK (encoding & decoding),as this YouTube implies generation only. There's also a DroidRTTY version that seems to offer both ( + even a waterfall display).
 

MFB

Senior Member
I don't currently have a need for tracking requirement but near space balloon recovery crews seems to have adopted dl-fldigi as a standard for tracking (http://bit.ly/acqaNY).

My phone is decidedly dumb but if Santa brings me an Andriod version I'll certainly give the above RTTY applications a try.

Having played around a bit with sound card communications software, I'm coming to the conclusion that using a single chip FSK demodulator may still be the best approach for simple telemetry. Basically, anything the PICAXE outputs via an FSK modulator can be accepted by a PC serial port and plotted in real-time. I have not yet found PC sound card that does this as standard because they are aimed at meeting the communications requirements of hams.
 

manuka

Senior Member
Fair enough there MFB. Given the new "M2" horsepower, you've set me pondering diverse wireless data issues (speeds, interference, atmospherics & fading, bandwidth, S/N ratio, tx power,decoding, time stamping/ file saving, data display versus 2 way conversation, ease of PICAXE generation etc).There have long been numerous possibilities, & today's sound card decoding era has opened up even more- far more! Check "hear" for quite a selection!

Morse as such is pretty quaint these days, BUT perhaps a little known FSK (Frequency Shift Keying) variant may have some PICAXE mileage ? This DFCW (Dual Freq.CW),is intended for slow "seconds per dot" work with mW level transmitters, & is much faster that normal morse for the same message.The essence is that the long DASH is replaced by the short DOT with a tone shift. High frequency stability is not essential as it's just the tone shift that matters. Decoding can be via eye or even ear ( if slow) If a 3rd reference tone is included,it becomes 100% duty cycle & is called DFCWi ( "i" = idle). The "i" allows visual decoding to be greatly improved during signal fade or interference. All manner of variations exist - see vdFSK !

I'd say PICAXE generation of these in the style of the SM/T Hellscheiber approach should be feasible, & the technique could especially be handy for slow data acquired over difficult links. It's even been used with modest powers & dishes for moon bounce work at GHz freqs!
 

Attachments

Last edited:

MFB

Senior Member
Thanks manuka. I had assumed that the ham radio sound card decoders could do what I wanted (e.g. front-end modem for something like StampPlot) but it was only when I started to evaluate some of these software packages that I realised how much additional development would be needed. It would probably be better for someone (with a lot more PC programming experience than me) to write a dedicated 'telemetry modem and data display/storage" application. This could support popular PICAXE projects, like GPS tracking and remote monitoring, that tend to use very low speed and power radio telemetry.
 
Top