MIDI-Keyboard Conva-64.
Self-made microcontroller based midi-keyboard.
Please read this first.



Var1 & Var1h

These versions are intended for 8x8x8 keyboard matrix with sequential contact pairs that start at C of second octave.
Synchronization can be provided by low as well as by high (with suffix h) logic levels.

Matrix keybord 8x8x8

View (download)
3378x957



Matrix keybord 8x8x8 High

View (download)
3378x957





One Layer Version


Conva64Syn PIC18F45k22 Schematic

View (download)
2339x1843



Conva64SynH PIC18F45k22 Schematic

View (download)
2339x1843



Current limiting resistors should be adjusted according to the LED types and power voltage.

Set up mode is entered by pressing Setup button.
Further presses of this button result in transitions between other menu entries.

Setting parameter values is performed by pressing keyboard keys from C of the first octave up to D# of the second one. These keys are denoted by numbers 1 to 16 in the tables below. Some NO/Yes and -/+ settings are performed by pressing keys D and D# of second octave. For setting transposing we start key numberings with 0. For that one should press shift modification key first followed by two keys with numeric values.
Inappropriate values by number entering are replaced with maximum/minimum possible ones.
Exiting the setup mode is performed automatically after 10 seconds of setup or control buttons inactivity. Modified settings are saved in a non-volatile memory at exit.

Pressing and holding buttons for 3 seconds or more results in sending Panic messages.



Settings Range Default Indication
MIDI-Channel All 1 HL1
Transpose +/-24 0 HL2
Shape 1 - 4 1 HL3
Threshold Sliders 1 - 7 1 HL4
Send Sustain No-Yes Yes HL7
Send Wheels No-Yes Yes HL8
Running Status No-Yes Yes HL9




Keys used for settings (1 is the 1st octave, 2 is the 2nd one, transposing is ignored):

  1C 1C# 1D 1D# 1E 1F 1F# 1G 1G# 1A 1A# 1H 2C 2C# 2D 2D#
MIDI-Channel
Shape
Threshold Sliders
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Transpose 0 1 2 3 4 5 6 7 8 9 x x x x - +
Send Sustain
Send Wheels
Running Status
x No Yes





Variants of Shape (Tables of Velocity):

Shape


1 - Line
2 - Log
3 - Back Log
4 - Hard





Short setting description:

MIDI-Channel: MIDI-channel number.
Transpose: Key shift in half-tones.
Shape: Sets relation of MIDI message "Velocity" and the real key pressing speed.
Threshold Sliders: Sensitivity threshold of Modulation and Pitch encoders.
Should be increased for worn off encoders.
Send Sustain: Enable/disable Sustain messages.
Send Wheels: Enable/disable Modulation and Pitch state messages.
Running Status: Enable/disable system messages to save traffic.
Amount of saving depends on message types.





Firmware

Var Current Version For MCU:
1 1.0.0* PIC18F46k22, PIC18F45k22, PIC18F44k22, PIC18F43k22
1h 1.0.0* PIC18F46k22, PIC18F45k22, PIC18F44k22, PIC18F43k22


* - Verified by several independent testers.






MIDI Implementation Chart

Function Transmitted Recognized Remarks
CHANNEL Default
  Changed
1
1-16
X
X
 
  Default
MODE Messages
  Altered
Mode 3
X
*********
X
X
X
 
NOTE  
NUMBER True voice
12-99
*********
X
X
 
VELOCITY Note On
  Note Off
O
O
X
X
 
AFTER Key's
TOUCH Channel
X
X
X
X
 
PITCH BEND O or X X Setting
CONTROL 1, 33
CHANGE 64
O
O
X
X
Modulation
Sustain
PROGRAM  
CHANGE True Number
X
*********
X
X
 
SYSTEM EXCLUSIVE X X  
  Quarter Frame
SYSTEM Song Position
COMMON Song Select
  Tune Request
X
X
X
X
X
X
X
X
 
SYSTEM Clock
REAL TIME Commands
X
X
X
X
 
  All Sound Off
  Rst All Contr
AUX Local Control
MESSAGES All Notes Off
  Active Sense
         Reset
X
X
X
X
X
X
X
X
X
X
X
X
 
 
 
 
 
 
NOTES Running Status Mode Support  
Mode 1: OMNI ON, POLY Mode 2: OMNI ON, MONO O:  Yes
Mode 3: OMNI OFF, POLY Mode 4: OMNI OFF, MONO X:   No











Version with two layers and extended functionality

"Two layers" means that that one physical keyboard contains two simultaneously operational virtual ones.


Conva64SynLay PIC18F45k22 Schematic

View (download)
2469x1854



Conva64SynLayH PIC18F45k22 Schematic

View (download)
2469x1854



Current limiting resistors should be adjusted according to the LED types and power supply voltage.
HL1 and HL7 indicate the active layer, the other LEDs are for the menu settings.
Buttons Layer 1 and Layer 2 select active keyboard level. After power-up Layer 1 is on and Layer 2 is off.

Each layer can be tuned independently.
Entering the layer setup mode is accomplished by pressing the Setup button.
Subsequent pressings of this button switch between the menu settings.

The device also has some global settings.
To enter the global setup mode one should turn off power, then press and hold Layer 1, layer 2 and Setup buttons, turn power on, and then release all buttons. The global tuning setup mode is indicated by lighting up both layer LEDs.
Press of Setup buttons causes changes of setup options.

Setting parameter values is performed by pressing keyboard keys from C of the first octave up to D# of the second one. These keys are denoted by numbers 1 to 16 in the tables below. Some NO/Yes and -/+ settings are performed by pressing keys D and D# of second octave. For setting transposing we start key numberings with 0. For that one should press shift modification key first followed by two keys with numeric values.
The Bank number is entered by pressing of 3 numeric buttons if Controller32 mode is enabled, and 5 buttons if it is disabled. Bank numbering starts with 0.
To set the key range (Split) one should press two buttons corresponding to the selected range in any order.
Inappropriate numeric values are replaced with the corresponding valid maximum/minimum values.
Leaving the setup mode is accomplished by pressing the Exit button. It is also done automatically after 10 seconds of setup inactivity. Modified settings are saved in non-volatile memory upon exiting the setup mode.

To reset all settings to their default values one should turn off power, press and hold buttons Layer1, Layer2, Exit, and turn it on. The settings will be reset upon releasing these buttons.
Reset of all global settings can be done similarly with buttons Layer1, Layer2, Setup, and Exit.

Pressing and holding the Exit buttons for 3 seconds or more results in sending Panic messages.



Settings Range Default Indication
MIDI-Channel All 1,2 HL2
Split All keys All HL3
Transpose +/-24 0 HL4
Shape 1 - 4 1 HL5
Bank Select 0 - 127(16383) 0 HL6
Program Change 0 - 127 0 HL8
Send Sustain No-Yes Yes HL9
Send Soft No-Yes Yes HL10
Send Wheels No-Yes Yes HL11
Send PrgCh & BnkSel No-Yes Yes HL12



Settings Range Default Indication
Threshold Sliders 1 - 7 1 HL2
Global Velocity 1 - 4 2 HL3
Controller32 No-Yes Yes HL8
Running Status No-Yes Yes HL9
Note OFF as ON No-Yes No HL10
Active Sensing No-Yes Yes HL11




Keys used for settings (1 is the 1st octave, 2 is the 2nd one, transposing is ignored):

  1C 1C# 1D 1D# 1E 1F 1F# 1G 1G# 1A 1A# 1H 2C 2C# 2D 2D#
Split All keys
MIDI-Channel
Shape
Threshold Sliders
Global Velocity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Transpose 0 1 2 3 4 5 6 7 8 9 x x x x - +
Bank Select
Program Change
0 1 2 3 4 5 6 7 8 9 x x x x x x
Send Sustain
Send Soft
Send Wheels
Send PrgCh & BnkSel
Controller32
Running Status
Note OFF as ON
Active Sensing
x No Yes





Variants of Shape (Tables of Velocity):

Shape


1 - Line
2 - Log
3 - Back Log
4 - Hard





Short setting description:

MIDI-Channel: Layer MIDI channel number.
Split: Sets key range for layers.
Transpose: Keyboard shift in half-tones.
Shape: Sets relation of MIDI message "Velocity" and the real key pressing speed.
Bank Select: Bank number for selected instrument.
Program Change: Selected instrument number.
Send Sustain: Enables/disables sending Sustain pedal state messages.
Send Soft: Enables/disables sending Soft pedal state messages.
Send Wheels: Enables/disables messages on Modulation and Pitch.
Send PrgCh & BnkSel: Enables/disables group of messages on selected instrument at every Layer activation.
These messages are send by exiting the setting mode.
Threshold Sliders: Sensitivity threshold of Modulation and Pitch encoders.
Should be increased for worn off encoders.
Global Velocity: Global pressing speed sensitivity.
V = Vmin * 2^(n-1) (V-keyboard scanning speed, n-this parameter).
Corrections might be necessary for various key types.
Controller32: Determines bank number message format.
If disabled, the bank number is a 2-byte value (range 0 – 16383).
If enabled, the bank number range (0 – 127) is duplicated.
This depends on used synthesizer/tone generator.
Running Status: Enable/disable system messages to save traffic.
Amount of saving depends on message types.
Note OFF as ON: Enable/disable Note OFF messages as Note ON with a zero pressing/releasing speed.
Most synthesizers do not use parameter Velocity in the Note OFF message, which allows you to save the amount of message traffic when Running Status mode is enabled.
Active Sensing: Enable/disable connection status control messages.
Not every synthesizer supports this message.
In most cases there are errors by using various software/hardware converters like USB-MIDI.







MIDI Implementation Chart

Function Transmitted Recognized Remarks
CHANNEL Default
  Changed
1,2
1-16
X
X
 
  Default
MODE Messages
  Altered
Mode 3
X
*********
X
X
X
 
NOTE  
NUMBER True voice
12-99
*********
X
X
 
VELOCITY Note On
  Note Off
O
O or X 9n V=0
X
X
 
Setting
AFTER Key's
TOUCH Channel
X
X
X
X
 
PITCH BEND O or X X Setting
  0, 32
CONTROL 1, 33
CHANGE 64
  67
O
O
O
O
X
X
X
X
Bank Select
Modulation
Sustain
Soft
PRORGAM  
CHANGE True Number
O
*********
X
X
 
SYSTEM EXCLUSIVE X X  
  Quarter Frame
SYSTEM Song Position
COMMON Song Select
  Tune Request
X
X
X
X
X
X
X
X
 
SYSTEM Clock
REAL TIME Commands
X
X
X
X
 
  All Sound Off
  Rst All Contr
AUX Local Control
MESSAGES All Notes Off
  Active Sense
         Reset
X
X
X
X
O or X
X
X
X
X
X
X
X
 
 
 
 
Setting
 
NOTES Running Status Mode Support  
Mode 1: OMNI ON, POLY Mode 2: OMNI ON, MONO O:  Yes
Mode 3: OMNI OFF, POLY Mode 4: OMNI OFF, MONO X:   No






Discuss on the forum







Feedback  E-mail   More Elctronics Hardware  More Elctronics Hardware

Home
Home



Visit counter

MIDI-keyboard on the PIC microcontroller hardware replacement


Copyright © 2018 by Dmitry Dubrovenko.