Ready-Made Software
The example software is designed for the Adafruit Trellis M4 board (though the underlying speech functions can be used with other boards…see “Building From Source” below).
Plug a Trellis M4 into your computer with a USB cable, then double-click the RESET button on the back of the board.
After a moment, a small flash drive called TRELM4BOOT should appear on your system. Drag-and-drop the .UF2 file (downloadable below) on to this flash drive. You may briefly see a file-copying dialog, and then after a few seconds the drive will be ejected and you’ll get a rainbow row of lights on the Trellis.
This will overwrite CircuitPython if that’s what’s currently on your Trellis board. Your CircuitPython code is intact, only the interpreter has been replaced with this project. You can restore CircuitPython by downloading the .UF2 file here.
Triggering Sounds
Connect headphones or a powered speaker to the audio output of the Trellis M4.
This code doesn’t play any of the original’s spelling games, it’s strictly a “sound board.”
The bottom row of buttons on the Trellis M4 will be lit a rainbow of colors. Think of these like the “shift” or “control” keys on your keyboard…they modify all the other buttons. Hold down one of these buttons and the rest of Trellis will light up that same color. Now, still holding that shift button, you can tap any of the other buttons to trigger different words, phrases, letters or numbers. Additionally, the top three rows trigger sounds when no shift button is held. That’s 272 authentic Speak & Spell noises in total!
Other Ways to Experience “The Voice”
If you don’t have a Trellis M4 and don’t want to get into adapting the code, there’s a fully emulated version of Speak & Spell playable in your web browser (seems to work most reliably with Google Chrome).
What’s fascinating about this site is that it’s not simply a reproduction playing back canned WAV samples (though one or two of those exist online as well)…it’s actually fully emulating the Speak & Spell hardware and speech synthesis chip on the fly, and you can play the original spelling games if you want.
Of course you can always just pick one up on eBay. They’re not horribly expensive if you don’t mind one with a few scuffs. The fun of this Trellis project though is that it lets you string together all the sounds as you want, use them in new ways, or as a musical instrument (much more easily than “circuit bending” the original toy).
Building From Source
This Trellis sound board is an Arduino project and the source code can be downloaded from Github. There are two files: TalkieTrellis.ino
(which handles button presses and triggers sounds) and words.h
(containing audio data the same way it was represented by Speak & Spell — these are not simply WAV samples).
Several prerequisite libraries must be installed. This can be done through the Arduino Library Manager (Sketch→Include Library→Manage Libraries…). Search for:
- Adafruit_NeoTrellisM4
- Adafruit_Keypad
- Adafruit_NeoPixel
Additionally, the Adafruit fork of the Talkie library must be downloaded and installed manually (it’s not in the Library Manager):
The Adafruit fork works on SAMD microcontrollers and adds support for emulating the Speak & Spell’s TMS5100 speech chip (the original Talkie lib emulates only the TMS5220, a later speech chip used in the TI99-4/A and others).
Though our example sketch is specific to the Trellis M4, the Talkie library itself should work with pretty much any AVR or SAMD board! Even a classic Arduino Uno, using an Adafruit Wave Shield, or with a piezo speaker between pin 3 and ground. On SAMD boards, pin A0 provides true analog output.
Several examples included with the Talkie library demonstrate its use. These are all emulating the TMS5220 but the basic idea is the same: there are some tables of speech data (usually extracted from some vintage device’s ROM) and one then calls the library’s say()
function, passing in a pointer to different data for different words…for example, these lines from the clock demo speak the word “six”:
const uint8_t spSIX[] PROGMEM = {0x0E,0xD8,0xAE,0xDD,0x03,0x0E,0x38,0xA6,0xD2,0x01,0xD3,0xB4,0x2C,0xAD,0x6A,0x35,0x9D,0xB1,0x7D,0xDC,0xEE,0xC4,0x65,0xD7,0xF1,0x72,0x47,0x24,0xB3,0x19,0xD9,0xD9,0x05,0x70,0x40,0x49,0xEA,0x02,0x98,0xBE,0x42,0x01,0xDF,0xA4,0x69,0x40,0x00,0xDF,0x95,0xFC,0x3F}; voice.say(spSIX);
Our Trellis code just does one thing differently…the Talkie library must be explicitly switched to TMS5100 speech mode before using any Speak & Spell dialogue:
voice.mode(TALKIE_TMS5100);
Copy and paste encoded words and phrases from the TalkieTrellis sketch (in the words.h file) into your own code.
Speech data for the TMS5100 and TMS5220 is not cross-compatible. If you want to use both in the same sketch, it’s necessary to call voice.mode(TALKIE_TMS5100)
before using any TMS5100 words, and voice.mode(TALKIE_TMS5220)
before any TMS5220 words.
Page last edited March 08, 2024
Text editor powered by tinymce.