HMSynth Keyboard Page

Home                               Craigs Pages                               Heathers Pages

HMSynth MIDI Keyboard
April 2022

I am slowly building my own Home Made Synthesizer and that is what HMSynth stands for. At the current time just the MIDI keyboard has been built and tested. The synth engine will be added later. The keyboard case was made out of sapele wood and turned out great. The keyboard has the concept of splits built in and supports 3 independent splits (of twelve keys each) which can each have their own MIDI channel, voicing/patch, velocity, keyboard offset and portamento. If the joystick is moved forward, pitch is increased. If moved backwards, pitch is decreased. If moved to the left or right, modulation is added to the currently selected voice.
The keyboard is powered by USB and can output MIDI messages via the standard 5 pin MIDI connector or via USB MIDI.

I wrote most of the software which provides the keyboard functionality with providing the rest. The software runs on an embedded Teensy 3.6. I used the Teensy because it has plenty of digital and analog I/O pins, has lots of memory and is quite powerful.
The Teensy microcontroller scans the keyboard for key presses as well as all of the controls on the control panel.
It also manages the SPI LCD display.
All in real time with no hint of latency.

In the distant past I designed a hardware MIDI synthesizer based upon the SAM-2195 chip and a Teensy 3.1. That devices pairs nicely with the new MIDI keyboard described here. You can read about the MIDI Buddy at:
Here is the control panel for the MIDI keyboard.

The following is a summary of the control functionality.

Single Click Functions
Double Click Functions
Long Click Functions
Portamento On/Off
All Notes Off
Keyboard Reset
Split Octave Up
Split Patch Increment

Split Octave Down
Split Patch Decrement

Rotary Encoder
Menu Selection
Menu Return
Splits Channels Set*

The four control pots send MIDI control change messages.
 They are also split aware, sending CC messages to the active split.
 By default Pot1 controls portamento time.
Pot2 control volume.
 Pot3 controls panning. 
Pot4 controls reverb.
Of course the CC messages associated with each Pot can be changed via configuration.

The rotary encoder manages the keyboard's configuration.
All aspects of the keyboards operation can be controlled via a nested menuing system.
*If the rotary encoder is given a long click it sets Split1 to MIDI channel 1, Split2 to MIDI channel 2 and Split3 to MIDI channel 3.

Here are some pictures of the finished keyboard

Questions and comments to me Craig at:

Home                               Craigs Pages                               Heathers Pages