Sonic Screwdriver - audio BAUDOT decoder experiment.

Use HTTPS

Decoded:

 Press start 

BAUDOT codes found

This WebAudio sample trys to decode BAUDOT modem, using a ScriptProcessor. It's necessary to use a ScriptProcessor in order to not miss any clipping samples - otherwise you could implement this using a RealtimeAnalyser to only grab samples when necessary.

The usage is quite easy:

var meter = createAudioMeter(audioContext,clipLevel,averaging,clipLag);

[ mic ] -+--[ iir filter ]--[ mark energy  ]--+ [ comparitor ]--[ UART ]--[code]
         \--[ iir filter ]--[ space energy ]--/   
 
 mark 1400Hz, space 1800Hz, serial --_12345-- UART to codes -- 
 
audioContext: the AudioContext you're using.
meter.checkClipping(); 
returns true if the node has clipped in the last clipLag milliseconds.
meter.shutdown();
used to destroy the node (it's important to disconnect and remove the event handler for any ScriptProcessor).

Copied from the source on Github and V.21

I would like to use the microphone on the plugged in earbuds. this page is only using the microphones on the screen

media recorder example - using Using the MediaStream Recording API seems to be using the ear bud mic, but I cannot work out why.


Generate samples tools

Send - BAUDOT: Use @ for SHIFT_LTRS , and # or SHIFT_FIGS/numbers. Start with "@#@"

BAUDOT: Add Shifts: or TypeHere: ( experimental! )

This section generates samples to decode to keep the web page smaller.

extra stopBits: random extra number of stop bits between characters: bits repeat : to allow CI repeat_noise : to allow CI

UART:baudot baud: 50,110,300,75,600,1200

Samples captured using Audacity. mono, 8000 samples per second.

BAUDOT reference | audio to BAUDOT