Jump to content

DIY USB-MIDI Controller


KennethGraham

Recommended Posts

  • Members

Hi List,

 

After a number of months I've finally come up with a first product offering that I think will serve the do-it-yourselfers here. It's a simple PCB that converts Analog and Digital I/O into MIDI note/control messages over USB. Data and power is provided via a single USB cable. The I/O

Link to comment
Share on other sites

  • Members

 

wait, so like you can plug your guitar in and it into your computer via USB, and a midi host will sense the notes you play and convert?

 

 

No, according to the spec sheet that's not what it does.

 

It has 32 pins that can be configured as either analog or digital inputs. When a pin is configured as an analog input it will convert the voltage on the pin to a MIDI controller value, and send the MIDI message over the USB cable to the host computer. When the pin is configured as a digital input it will sense a button press on that pin and generate a MIDI note message over the USB cable.

 

In other words, it could be used as the core of a relatively simple MIDI keyboard controller or other MIDI instrument.

 

I see a few problems with it.

 

First, the range of MIDI notes it can generate is only half of the full MIDI range. That's enough for a 5 octave keyboard, but not enough for a full 88-key.

 

Second, the MIDI note generation is limited to 32 notes with the shift pin open, and 32 different notes when the shift pin is grounded. From what I can determine, the one shift pin affects all input pins. This means you couldn't simultaneously play notes in the lower and upper registers without separate electronics to manage the shift pin and serialize note triggers. Kind of useless for playing conventional two part piano music.

 

It would have made more sense to program 7 pins as outputs and 8 as inputs, and then use a conventional keyboard matrix scanning technique. This would allow you to get a full 128 notes with unlimited polyphony using only steering diodes on the key matrix.

 

Even better would be an 8 x 8 matrix system. This would allow you to put two switches on each key, mounted so that the first switch triggers before the second when the key is pressed. This would allow you to measure the time difference between switch activations, and generate note velocity values with each key press.

 

64 notes in two banks of 32 each, with no velocity and no aftertouch, has very limited usefulness. You could build a simple harpsichord, but not a piano or other expressive instrument. I think you could improve the versatility enormously with just a firmware upgrade.

 

While I wouldn't use it to build a MIDI instrument, I initially saw some real potential to use it as a controller for a MIDI control surface for recording. With 32 analog inputs, you could build a control surface with a combination of 32 sliders and knobs - extremely handy for mixing with your favorite DAW software. Well, that idea went out the window when I saw that the controller numbers are not assignable - analog channel 1 generates messages for controller number 1, etc. What's more, the controller numbers are also shifted by 32 when the shift pin is grounded. This means you can't change octaves on the digital pins without also shifting controllers on the analog pins. There's no way you could configure this to send MIDI volume messages on all 16 MIDI channels, since only pin 7 is going to send MIDI volume controller messages, and only on MIDI channel 1, and only when the shift pin is off.

 

Ken, this is a noble effort, but I think you've restricted the usefulness severely by going overboard in simplifying the offboard electronics. There's so much more that could be done with the electronics you've got here. I really think you should consider overhauling the firmware.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...