User Tools

Site Tools


The SpeakJet Control Application Software v.0.1

You should have come here from the Midibox SpeakJet Project. On this page you'll find descriptions of the Application Software kII for the Core Module, that controls the MBHP-IIC-SpeakJet-Module.

The SJ Control Application Software provides full access to all SJ-Functions via MIDI!

kII is a MIDI control application for the MBHP_SpeakJet Module. By connecting a Core equipped with this program to the SpeakJet Module via IIC you can control nearly all functions of the SpeakJet Chip by Midi-Messages.

kII stands for “Kempelen Two”, Baron Wolfang von Kempelen has been a hungarian inventor and creator of famous automats. Whereas his most famous creatin has been the “Turkish Chessplayer” (which was a late-revealed fake with a chess-player sitting inside), he also invented one of the first talking machines ever. Baron Kempelen lived from 1734 to 1804.

If you are improving the application, please send me an email or PM me in the forum, so I can update the project! –audiocommander


  • Full MSA and SCP Control via Midi!
  • Trigger Allophones and SoundFX by Notes
  • Trigger Allophones only by Notes
  • Trigger SoundFX only by Notes
  • Jaw/Tongue control: set position of jaw and tongue by CC, play pitched Allophone by Notes
  • Different Jaw/Tongue sets available: Vowels/Consonants/Pauses
  • Change the pitch of currently played Allophones by Notes 0..59
  • Play the 5 Oscillators by Notes, one OSC per Channel
  • Harmonic subtractive syntesis Multi-OSC playmode by Notes(!)
  • Control Waveforms (shapes) of harmonic synthesis Multi-OSC mode
  • Change Allophone Pitch by using the 14bit PitchBend-Wheel
  • Control Bend with CH_AFTERTOUCH
  • Control Speed by CC
  • Control Master Volume by CC
  • Send Pauses by CC
  • Send Next Slow/High/Low/Fast by CC
  • Control OSC-Frquencies and Levels by CC
  • Control ENV-Frequency and Type by CC
  • Control Distortion (OSC 4 & 5) by CC
  • Fire Phrases by CC
  • Supports System Realtime Messages START, STOP, CONTINUE, RESET
  • Send PANIC by Foot & AllNotes/SoundsOFF Messages
  • Custom assignable controls by editing the definition listing (IIC_SpeakJetMidiDefines.h)

Sometimes it's more important to know what it can't do (yet?):

  • AIN sensors to trigger & control natural speech (allophone) output 1)
  • Multiple MBHP-IIC-Speakjet Modules (cascaded SpeakJets!) 2)
  • Bankstick support to save patches 2)
  • Phrase storage (use the Phrase-A-Lator from Magnevation via RS232!) 3)

1) will be available with the next version
2) would be nice, I'm thinking about it…
3) don't wait for it (or help coding :)


  • SpeakJet Application Software 'kII' v 0.1.5 build 20061210 (138 kb)
  • runs on the PIC18F Core to enable the full control of the SpeakJet Module by MIDI-Messages. The package contains the source, an X-Code 2.0 project, ACSim-Classes and precompiled .hex and .syx files.
  • Note that you will also need the PIC16F Firmware for the SpeakJet IIC Module!
  • Check out the audio-examples at the bottom of the Midibox SpeakJet page!


A 16×2 LCD is optional. You see following infos:


  • N: (Note) Base Note Listener. '-' ⇒ inactive, '*' ⇒ next note will get new base
  • H: (Harmony) Current Base Note, eg 'D#'
  • V: (Value) Last Value (0..127)
  • J: (Jaw) Jaw Position, 0x0 opened, 0xB closed
  • T: (Tongue) Tongue Position, 0x0 front, 0x5 back
  • O: (OSC) Subtractive Synthesis Waveshape: SAW, TRIANGLE, SQUARE
  • E: (ENV) Envelope Waveshape: SINE, SAW, TRIANGLE, SQUARE
  • R: (REC) Record Buffer Mode (hidden feature)


Function #define default assingment Channel Mode Description
== NOTES ==
Soundcodes SJCH_SOUNDCODES CH 1 Omni Play all available Sounds
Allophones SJCH_ALLOPHONES CH 2 Omni Play all available Vocal Allophones
Sound-FX SJCH_FX CH 3 Omni Play all available Sound-FX
Pitch SJCH_PITCH CH 4 Omni Change the pitch of current Sounds; if nothing is triggered, you can't hear anything!
Vowels SJCH_VOWELS CH 5 Omni Trigger Pitched Allophone; Jaw- and Tongue-Controls are needed to change the vowel
Consonants SJCH_CONSONANTS CH 6 Omni Trigger Pitched Consonants; Jaw- and Tongue-Controls are needed to change the consonant
Vowels/Cons SJCH_VOWELS_CONSONANTS CH 7 Omni Trigger Pitched Allophones; Jaw- and Tongue-Controls are needed to change the consonant
Vowels w. Pauses SJCH_VOWL_PAUS CH 8 Omni Trigger Pitched Vowels with Pauses; Jaw- and Tongue-Controls are needed to change the consonant
Vowels/Cons w. Pauses SJCH_VOWL_CONS_PAUS CH 9 Omni Trigger Pitched Vowels & Consonants with Pauses; Jaw- and Tongue-Controls are needed to change the consonant
Vocal Percussion SJCH_PERCUSSIVE CH 10 Omni Trigger percussive sounds only
OSC1 SJCH_OSC1 CH 11 Poly Play OSC 1
OSC2 SJCH_OSC2 CH 12 Poly Play OSC 2
OSC3 SJCH_OSC3 CH 13 Poly Play OSC 3
OSC4 SJCH_OSC4 CH 14 Poly Play OSC 4
OSC5 SJCH_OSC5 CH 15 Poly Play OSC 5
Synth SJCH_OSC_Omni CH 16 Omni Subtractive Soundsynthesis with all 5 OSCs (Single Voice only). Apply different waveforms for both synth & envelope and add distortion for soundmodelling!
== CONTROL CHANGE (Sliders) ==
Phrases SJCC_PHRASE CC 9 Omni Fire SpeakJet Phrase
Jaw Open SJCC_MOUTH_JAW CC 40 Omni Open Jaw, eg: closed 'u', opened 'a'
Tongue Position  SJCC_MOUTH_TONGUE  CC 41 Omni Position Tongue, eg: front 'th', back 'err'
Stress SJCC_MOUTH_STRESS  CC 43 Omni Bend Voice from high env to low env (pitch independent)
Speed SJCC_MOUTH_SPEED CC 44 Omni Speed up or slow down allophone lengths
Pauses SJCC_MOUTH_PAUSES CC 45 Omni Inserts Pauses from 0 to 640 ms (0..127)
Volume  SJCC_MASTER_VOL CC 108 Omni Set Main Volume
OSCx Freqency SJCC_OSCx_FREQ CC 101..105 Poly Set Frequency of OSC 1 to 5
OSCx Level SJCC_OSCx_LVL CC 111..115 Poly Set Volume of OSC 1 to 5
Envelope Frequency SJCC_ENV_FREQ CC 106 Omni Set Envelope's frequency
Envelopy Waveform  SJCC_ENV_TYPE CC 116 Omni Set Waveshape of ENV: Saw, Sine, Triangle, Square
Distortion SJCC_DISTORTION CC 118 Omni Set Distortion Amount (0..127)
Base Note SJCC_HARMONY_BASE CC 39 Omni Set base note (0..127)
== CONTROL CHANGE (Buttons) ==
Phrases 0..3 SJCC_PHRASEx CC 29..32 Omni  Fire SpeakJet Phrases 0 to 3
Pauses 0..6 SJCC_PAUSEx CC 21..24 Omni Fire Pauses; currently implemented: 1,2,3,5
Slower SJCC_NEXT_SLOW CC 25 Omni Play next Allophone slower
Lower SJCC_NEXT_LOW CC 26 Omni Play next Allophone lower
Higher SJCC_NEXT_HIGH CC 27 Omni  Play next Allophone higher
Faster SJCC_NEXT_FAST CC 28 Omni Play next Allophone faster
Synth Waveshape SJCC_OSC_WAVESHAPE CC 50 Omni Toggle Synth Waveshape: Saw, Triangle, Square
Envelope Waveshape SJCC_ENV_WAVESHAPE CC 51 Omni Toggle Env Waveshape: Saw, Triangle, Square, Sine
Base Note SJCC_HARMONY_LISTEN CC 37 Omni Toggle on to set new base note by next incoming note
Scale SJCC_HARMONY_SCALE CC 38 Omni Next Scale; 0=none, 1=major, 2=minor
Pitch SJCC_PITCH - Omni Changes the Pitch of Soundcodes
Bend MIDI_POLY_AFTER - Omni Changes the Bending of Soundcodes
Bend MIDI_CH_AFTER - Omni Changes the Bending of Soundcodes
STOP MIDI_STOP - - Pause Enunciating
RESET MIDI_RESET - - Hardware-Reset (similar to switching power off/on)

Tools & Helpers

If you're a developer and are working on your own implementations, you will find these sources useful:

speakjet_application_software_v_0.1.txt · Last modified: 2007/04/17 14:21 (external edit)