Robot Command Audio Programming
← Project Index Robot Command Audio Programming

Robot Command Audio Programming

A Python GUI for programming vintage cassette-controlled toy robots -; a DAW-style timeline where you sequence motion commands, record your own voice, and export the whole program as one audio file to dub onto a tape.

Archived Started: Jul 2025 Updated: Sep 2025

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).