DIY MIDI Controllers, Decoders, & Retrofits—Worldwide Delivery
News: February 2, 2012: NTH Music Synthesizer Available Now at Kickstarter.com-------Shopping Cart: 0 Items-------Facebook Twitter Youtube

MIDISpeak: ROM Mode B Operation

Overview

In ROM Mode B, the MIDISpeak module triggers speech or sound synthesis at a specific address inside the toy's ROM. In this mode, the toy's phrases, individual words, word fragments, and sound effects are directly accessible via MIDI. Memory locations which do not contain proper speech data can also be addressed to generate abstract but repeatable sound effects. Literally, thousands of sounds are available.

MIDI Note to Address Conversion

The Speak & Spell series of devices use 20-bit ROM addressing. Each 20-bit address is composed of five 4-bit "nibbles". The MIDISpeak uses the "note number" from five MIDI Note-On messages to form a ROM address. Each 4-bit "nibble" is taken from the low-order bits in the note number:

addressing

Sound generation begins upon receipt of every fifth note. Since only the lowest 4 bits of each note number are used, any address can be formed using a range of just 16 keys on a MIDI controller.

In ROM Mode B, send 5-Note sequences to the MIDISpeak to trigger synthesis. Each note forms part of a ROM address (the ROM address is composed of five 4-bit nibbles). When the fifth note is received, the MIDISpeak causes the host machine's synthesizer to read from the specified address in ROM and begin sound generation.

The following table shows a range of 16 notes and the corresponding ROM address nibble for each. The last 4 bits of the note number are used to form the nibble (the first 3 bits of the note number are discarded). Any of the 128 MIDI notes can be used, but a range of any 16 notes is all that is needed to specify every possible ROM address.

Note MIDI Note Number Corresponding Address Nibble
Decimal Hex Binary Hex Binary
E46440011000000000
F46541011000110001
F#46742011001020010
G46843011001130011
G#46944011010040100
A47045011010150101
A#47146011011060110
B47247011011170111
C57348011100081000
C#57449011100191001
D5754A0111010A1010
D#5764B0111011B1011
E5764C0111100C1100
F5774D0111101D1101
F#5784E0111110E1110
G5794F0111111F1111

The next table shows example 5-note sequences and the resulting ROM address for each. The MIDISpeak triggers synthesis automatically upon the receipt of 5 Note-On messages. When exploring the ROM of your machine, start with low-numbered addresses and work your way up.

1st
Note
2nd
Note
3rd
Note
4th
Note
5th
Note
Resulting ROM Address
Hex Binary
E4E4E4E4E4000000000 0000 0000 0000 0000*
E4E4E4E4F4000010000 0000 0000 0000 0001
E4F4E4A4F#50105E0000 0001 0000 0101 1110
* The special address consisting of all zeros tells the MIDISpeak to reset the host device's sleep timer (no sound is generated).

Prevent Automatic Shutoff

The Speak & Spell series of toys have an auto-shutoff feature. After a period of keypad inactivity, the toy will power down. When MIDI notes forming the "zero" address (binary 0000 0000 0000 0000 0000) are sent to the MIDISpeak, the MIDISpeak resets the toy's "sleep timer"—preventing the toy from automatically powering down. MIDISpeak Version 2 also resets the "sleep timer" automatically each time a sound is generated.

Synthesis "Speed"

The Speak & Spell series of toys can synthesize speech and sound in one of two modes: "normal" or "slow". The mode affects the pace of speech, but not the pitch. The MIDISpeak responds to MIDI program change commands to select the type of synthesis. "Normal" mode is assigned to program 0. "Slow" mode is assigned to program 1.
---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------