Quick&Dirty File System v0.008
Copyleft 1979-20?? Mylgd Corp. ./ <DIR>
A_simple_MIDI_Keyb_Controller.url <URL>
JDP_homepage.url <URL>
MKCC151.HEX 2Ko
MKCC2.HEX 2Ko
Mkcc2.txt 5Ko
components.txt 1Ko
keyboard.htm 6Ko
mkcc152.hex 3Ko
mkcc152.txt 6Ko
mkcp.jpg 97Ko
10 file(s) 126315 bytes
1 folder(s)
qdfs - Midi_keyboard
[jambonbill.free.fr Midi_keyboard]$

NEW programs for MKC MIDI keyboard controller! 
---------------------------------------------
(MKC controller homepage: http://www.geocities.com/jdpetkov/)

What is this for?

Using this MKCC2.HEX (for MKCC151.HEX see the APPENDIX at the end of text) 
file and a simple schematic change you may program at runtime keyboard's 
MIDI channel, Starting octave, Starting note (Transposition) and default 
Velocity value!

This is possible due to PIC ability to store and hold a number 
of data bytes in its non-violative EEPROM memory.

What to do?

- First, you should change JP1 jumpes (as shown on schematic) with any kind of
pushbutton. This button wil be called "Program button".
- Second, you should download mkcc2.HEX file wich contains the new PIC program.
- Third, you should burn this program into PIC. At this moment you keyboard is
almost ready to work. Default settings are:

MIDI channel   : 1  (MIDI channel number range is 1..16)
Starting octave: 4  (Octave number range is 1..11)
Starting note  : 41 (F-Fa, note number range is 0..127)
Velocity value : 127(Velocity value range is 0..127)

To adjust these values you should press Program button, and holding it down,
press once or more times some of first (leftmost) 8 keys on your keyboard. 
The meaning of these keys is:

Key1: MIDI channel -1
Key2: MIDI channel +1
Key3: Starting octave -1
Key4: Starting octave +1
Key5: Starting note -1
Key6: Starting note +1
Key7: Velocity -1
Key8: Velocity +1

Every parameter you change this way becomes default until you change it next way.
You may experiment new values at runtime. The last change you make is memorized and remembered every time the keyboard is switched on.

EXAMPLES:
All examples consider that keyboard is connected to PC Joystick port and PC is on.
In order to hear changes you make, proper software (MIDIkey, MIDImon, Cakewakl etc.)
must run on the PC. You can download my 'midikey.exe' or M$ 'midimon.exe' from 
MKC controller homepage. During adjustements, every time when changing some setting,
you will hear sound, generated thru current MIDI channel and having new settings.

1. You want to use your keyboard to generate percussive sounds:
   Percussive sounds are placed on MIDI channel #10 (GM - General MIDI). 
   This means you have to change you keyboard's MIDI channel to #10.
   What to do:
   - press and hold down keyboard's Program button  
   - press Key2 as many times as needed to go to MIDI channel#10. 
   - release Program button

2. You want to transpose your keyboard a octave down. 
   What to do:
   - press and hold down keyboard's Program button  
   - press Key3 once
   - release Program button

3. Your keyboard first key is C (Do) starting while controller's default starting note is      #41 (F-Fa), so you want to adjust controller's starting note to C(Do).
   What to do:
   - press and hold down keyboard's Program button  
   - press Key5 5 (five) times to go to lower C(Do) - MIDI note #36 
     OR press Key6 7 (seven) times to go to upper C(Do) - MIDI note #47
   - release Program button
   
4. You want to change default keyboard Velocity.
   What to do:
   - press and hold down keyboard's Program button  
   - press Key7 as many times as needed to decrease Velocity
     OR press Key8 as many times as needed to increase Velocity
   - release Program button  

NOTES:
   MIDI channel and Velocity are open (linear) range settings. 
   When increasing such setting you reach it's maximum value, next increase 
   will no take effect. 
   When decreasing such settingthe you reach it's minimal value, next decrease
   will no take    effect.

   Starting octave and Starting note are closed (circular) range settings. 
   When increasing such setting you reach it's maximum value, next increase 
   will set it to range staring value (minimal value). 
   When decreasing such settingthe you reach it's minimal value, next decrease
   will set it to range ending value (maximal value).

---------
APPENDIX:
---------
Originally file MKCC2.HEX was designed to work with ANY souncard. Some of the 
cheaper soundcards (mine Yamaha for example) ocasionally miss 'NoteOff' message 
generated by controller. This causes 'hanging notes' (notes that continue after 
the proper key was released). To avoid this effect I designed MKCC2.HEX to 
generate 'AllNotesOff' event after the last key is released. This could cause 
problems on systems using more than one keyboard controllers working on the same 
MIDI channel. Let's imagine that user plays on two-keyboards on the same MIDI 
channel and the second of them is MKCC2. If user is holding an accord on the first 
keyboard and at the same time press and release one or more keys on MKCC, this 
would cause breaking accord held on the first keyboard. 
There were demands for a version of MKCC that doesn't generate 'AllNotesOff' 
during playing. Such file has been added to this ZIP file (MKCC151.HEX). It 
supports ALL features of MKCC2.HEX mentioned above, excluding the 'AllNotesOff' 
message after last key releasing.


Jordan D.Petkov,
j.d.petkov@mailcity.com
www.geocities.com/jdpetkov