From the Patreon builders live stream, myself and Felix Rieger did a bit of digging into the whole baudot code thing.
For non-patreon context, here is the video where the plan is mentioned:
@lookmumnocomputer then uploaded a Patreon-only video, for Felix and I, that just had the part of the builders livestream with the beeps and boops. Felix Rieger then did some lovely work on starting to decode those beeps and boops that the machine generates
From a cursory glance this uses frequency shift keying with 2 frequencies (hereby denoted L and H):
(0) A bit seems to be 22 ms long. The high frequency H is around 1800 Hz, the low frequency L around 1400 Hz.
(1) There seems to be a sync signal at first consisting of 1.5L, (0.75H, 0.25L) (repeated 5 times), 1.5L, probably for calibrating some timings.
(2) I only looked at A, B, C, but the codes seem to follow the ITA2 code. For example, A is HLLHHHLLLLLLLLLLL. There seems to be one start bit and quite a bit of padding, but the interesting information is in the first 5 bits. H seems to correspond to 0, L seems to correspond to 1, so this gives 0.11000.11111111111. The bits of interest are the 5 bits after the start bit, so 11000, which corresponds to “A” on ITA2 (LSB on the left). Similar with B (H LHHLL LLLLLLLLLLL, 0.10011.11111111111, 10011) and C (H HLLLH LLLLLLLLLLL, 0.01110.11111111111, 01110)
So my plan is to write some code to stick onto a Raspberry PI that will:
(strike through items are done - this is essentially my todo list!)
1) Record sound from a cheap USB sound-card
2) Extract the different frequencies (Felix recommended a Goertzel transform)
3) Decode those frequencies into baudot (digital / binary)
4) Decode the binary into ASCII
5) Pump the ASCII into a simple AI routine. I’m thinking MegaHAL here → GitHub - z0rc/megahal.mod: MegaHAL eggdrop module with UTF-8 support
6) MegaHAL will do it’s thing - process the input string, and use some cleverness to generate a response from its stored history previously processed strings
7) Extract the response
8) Encode the response into baudot (binary / digital)
9) Encode the digital baudot code into beeps and boops, that the Minicom 5000 can then decode and display
10) Make a pin on the raspberry pi go HIGH when responding.
That’s the plan, and this thread will help record any progress made. Also comments, etc, welcome