Overview
In the 1980s, toy robots like the Tomy Omnibot 2000 and the Radio Shack/Tomy Robie Sr. were "programmed" by playing a cassette tape: motion commands were encoded as audio tones the robot listened for. This tool brings that workflow into a modern editor. You drop commands onto a visual timeline, record voice clips for the robot to speak, arrange everything by drag-and-drop, and export a single mixed audio file ready to record back onto a cassette.
Background
The original brief is short and specific -; written by hand, then built with AI assistance: "There should be 2 seconds of no sound after each command… The SoundOn command tells the robot to play whatever audio is on the cassette tape… until it hears the SoundOff command." That spec drove the whole design, and it shipped as a v1.0 release with a packaged download and working sample files.
How It Works
The clever core decision: it doesn't synthesize tones. Each of the eight commands is a real recording of the actual cassette tone the robot listens for -; 16-bit stereo WAV, sampled from the genuine article -; so the output is bit-accurate to whatever the robot expects, no reverse-engineering of the tone encoding required.
# the 8 commands, each a real recorded tone clip Forward 3.4s Back 5.1s Left 4.2s Right 4.5s Light 0.5s Bleep 0.5s SoundOn 0.4s SoundOff 3.0s # plus Rest (silent pause) and Voice (mic / imported clip) # "smart spacing" -- the 2s processing gap is inserted only # between DIFFERENT command types; repeated identical commands # butt together so the robot keeps driving continuously
The app's real job is assembly, not generation: it lays the chosen command clips onto a
zero-filled numpy buffer at the right sample offsets, with the silent gaps already there
as zeros, then writes the mixed-down result. Voice clips (recorded live at 44.1 kHz
with a boost slider and a real-time dB meter, or imported) get auto-wrapped
SoundOn → Voice → SoundOff, encoding the robot's protocol straight
into the UX so you can't get it wrong. The timeline is a custom tkinter canvas with
colour-coded blocks, a time ruler, mouse-wheel zoom, and a playhead that follows along
during playback.
Current Status
Archived as a finished, released v1.0 tool -; not a prototype. It's packaged, publicly downloadable from the project page, and ships with working sample artifacts that prove the full record-to-export pipeline end to end.
- All eight commands, the timeline editor, live voice recording, and audio export work.
- Projects save to JSON, with recorded audio embedded inline as base64 float32 -; no sidecar files.
- Published v1.0 with two commits: initial release (Jul 2025) and a docs update (Sep 2025).