Kraftor-SpeakJet-MIDI
Media
User Manual
Version 1.0
The Kraftor SpeakJet MIDI is a MIDI-controlled interface for the SpeakJet speech synthesizer. It lets you trigger the
SpeakJet’s allophones and built-in sound effects from MIDI notes, and control volume, pitch, and bend/speed parameters
from MIDI messages.
Version History
- v1.0 (2026-04-17) : Initial SpeakJet MIDI firmware
MIDI Channel Configuration
The firmware listens in MIDI omni mode so it can receive both the phoneme channel and the sound effect
channel. It then checks the incoming MIDI channel and routes notes to the correct SpeakJet code bank.
| MIDI Channel | Function | Note Range | SpeakJet Codes |
|---|---|---|---|
| Channel 1 | Allophones | 36-107 | 128-199 |
| Channel 2 | Sound effects | 36-90 | 200-254 |
MIDI Messages
Note On – SpeakJet Phoneme and Sound Triggering
MIDI notes trigger SpeakJet codes. On channel 1, note 36 is code 128, IY. On channel 2, note 36 is code
200, ROBOT_0.
- Channel 1: notes 36-107 trigger SpeakJet allophone codes 128-199.
- Channel 2: notes 36-90 trigger SpeakJet codes 200-254.
- Notes below 36: ignored
- Notes above each bank range: ignored
| MIDI Note | SpeakJet Code | Label |
|---|---|---|
| 36 | 128 | IY |
| 37 | 129 | IH |
| 38 | 130 | EY |
| 39 | 131 | EH |
| 40 | 132 | AY |
| 41 | 133 | AX |
| 42 | 134 | UX |
| 43 | 135 | OH |
| 44 | 136 | AW |
| 45 | 137 | OW |
| 46 | 138 | UH |
| 47 | 139 | UW |
| 48 | 140 | MM |
| 49 | 141 | NE |
| 50 | 142 | NO |
| 51 | 143 | NGE |
| 52 | 144 | NGO |
| 53 | 145 | LE |
| 54 | 146 | LO |
| 55 | 147 | WW |
| 56 | 148 | RR |
| 57 | 149 | IYRR |
| 58 | 150 | EYRR |
| 59 | 151 | AXRR |
| 60 | 152 | AWRR |
| 61 | 153 | OWRR |
| 62 | 154 | EYIY |
| 63 | 155 | OHIY |
| 64 | 156 | OWIY |
| 65 | 157 | OHIH |
| 66 | 158 | IYEH |
| 67 | 159 | EHLL |
| 68 | 160 | IYUW |
| 69 | 161 | AXUW |
| 70 | 162 | IHWW |
| 71 | 163 | AYWW |
| 72 | 164 | OWWW |
| 73 | 165 | JH |
| 74 | 166 | VV |
| 75 | 167 | ZZ |
| 76 | 168 | ZH |
| 77 | 169 | DH |
| 78 | 170 | BE |
| 79 | 171 | BO |
| 80 | 172 | EB |
| 81 | 173 | OB |
| 82 | 174 | DE |
| 83 | 175 | DO |
| 84 | 176 | ED |
| 85 | 177 | OD |
| 86 | 178 | GE |
| 87 | 179 | GO |
| 88 | 180 | EG |
| 89 | 181 | OG |
| 90 | 182 | CH |
| 91 | 183 | HE |
| 92 | 184 | HO |
| 93 | 185 | WH |
| 94 | 186 | FF |
| 95 | 187 | SE |
| 96 | 188 | SO |
| 97 | 189 | SH |
| 98 | 190 | TH |
| 99 | 191 | TT |
| 100 | 192 | TU |
| 101 | 193 | TS |
| 102 | 194 | KE |
| 103 | 195 | KO |
| 104 | 196 | EK |
| 105 | 197 | OK |
| 106 | 198 | PE |
| 107 | 199 | PO |
Channel 2 Sound Effect Bank
On MIDI channel 2, sound effects start again at note 36:
- Note 36 = code 200, ROBOT_0
- Note 45 = code 209, ROBOT_9
- Note 46 = code 210, ALARM_0
- Note 55 = code 219, ALARM_9
- Note 56 = code 220, BEEP_0
- Note 65 = code 229, BEEP_9
- Note 66 = code 230, BIO_0
- Note 75 = code 239, BIO_9
- Note 76 = code 240, DTMF_0
- Note 87 = code 251, DTMF_R
- Note 88 = code 252, SONAR_PING
- Note 89 = code 253, PISTOLSHOT
- Note 90 = code 254, WOW
- Note On: Sets volume from velocity, then sends the selected SpeakJet code.
- Note Off: No action. SpeakJet sounds play to completion.
Velocity – Volume
Sets the master volume level. Range 0-127; default 96.
Note On velocity sets volume per phoneme or sound effect.
| Velocity | Effect |
|---|---|
| 0 | Silent or minimum volume |
| 1-127 | Increasing SpeakJet volume |
Pitch Bend – Pitch Control
Sets vocalization pitch, making the voice sound higher or lower. For singing, the SpeakJet datasheet cites about three
octaves, approximately 32 Hz-240 Hz. Pitch only affects voiced sounds. Range
0-255; default 88. 0 means 0 Hz and will not really vocalize; values
under about 30 tend to sound clicky rather than voice-like.
MIDI pitch bend controls pitch. The 14-bit pitch bend range is mapped to
20-255.
| Pitch Bend Value | SpeakJet Pitch Value | Effect |
|---|---|---|
| -8192 | 20 | Lowest mapped pitch |
| 0 | about 137 | Center pitch |
| +8191 | 255 | Highest mapped pitch |
The minimum mapped pitch is 20 to avoid glitches at the bottom of the SpeakJet pitch range.
CC1 – Mod Wheel / Bend
Sets frequency bend: adjusts oscillator output frequencies so voicing shifts from a deep, hollow
character toward a high, metallic one. Range 0-15; default 5.
MIDI CC1 controls bend. MIDI values 0-127 are mapped linearly to
bend values 0-15.
| CC1 Value | SpeakJet Bend Value |
|---|---|
| 0 | 0 |
| 127 | 15 |
CC5 – Speed
Sets play speed. Range 0-127; default 114.
MIDI CC5 controls speed per phoneme or sound effect.
| CC5 Value | Effect |
|---|---|
| 0 | Slowest mapped speed |
| 127 | Fastest mapped speed |
Ignored MIDI Messages
- Other Control Change messages not listed above
- Note Off messages
Quick Reference Table
| MIDI Message | Function | Range |
|---|---|---|
| Note On Ch 1 | Trigger SpeakJet allophones | Notes 36-107, codes 128-199 |
| Note On Ch 2 | Trigger SpeakJet sound effects | Notes 36-90, codes 200-254 |
| Velocity | Volume | 0-127 |
| Pitch Bend | Pitch | -8192 to +8191, mapped to 20-255 |
| CC1 | Bend | 0-127, mapped to 0-15 |
| CC5 | Speed | 0-127 |
Connections
The SpeakJet MIDI firmware accepts MIDI from:
- USB MIDI
- Serial MIDI on the hardware serial MIDI input
Both MIDI inputs are active simultaneously and use the same MIDI handlers.
SpeakJet Module Connection
The SpeakJet chip is controlled through the SpeakJet UART at 9600 baud. The firmware resets the SpeakJet on startup,
then sets the initial volume to maximum.
OLED Display
If an OLED display is detected at I2C address 0x3C, it shows:
- SPEAKJET MIDI on startup
- The firmware version
- The last triggered SpeakJet label
After inactivity, the display switches to a simple blinking eyes screensaver. Sending a new MIDI note wakes the display
and shows the triggered label again.
Tools
You can use the following tool to convert text into a sequence of MIDI phonemes
Firmware
Do not use this firmware for Emy or Emy Terminal.
How to install the firmware on Kraftor

