A modern twist on a classic musical instrument: the Virtual MIDI pipe organ
The following schematic converts MIDI input messages from the M-Audio Keystation keyboards to something the Teensy can understand. There are many examples around how to do this, so no need to reinvent the wheel. I selected a schematic using the highly recommended 6N137 Logic Output Optoisolator chip used by many commercial products:
As I have 3 MIDI streams that I have to convert, I decided to create single input PCBs (as opposed to a single PCB with 3 MIDI inputs). The only reason I decided to do this is that OSHpark.com where I get my PCBs made, has a minimum order quantity of three.
The final PCB design:
And the finished item:
This is the basic design for the VPO (Virtual Pipe Organ). The white boxes are organ components, the purple boxes are custom modules I have designed.
The organ will have three manuals (keyboards). While the M-Audio Keystation 61es devices have a USB interface, the issue I found while testing is that when multiple keyboards are connected the order won't always be the same. I therefore decided to use the MIDI output port with a custom PCB to convert the MIDI output stream to something the Teensy can understand. The downside to doing this is that the keyboard receives power via USB, which means it now needs a separate power supply.
Another advantage of using the Teensy 3.2 here is that is has three hardware serial ports, one for each manual. This means we can read multiple MIDI input streams and simultaneously output a USB MIDI stream to the connected PC.
The main PCB will house the Teensy 3.2 as well as providing 3.3V to the auxiliary circuits and 9V to power the three manuals.
Most of the work for the pedalboard was done in the previous project. I realized the Arduino Uno shield method I was using was very limiting, therefore decided to use the amazing Teensy 3.2 for this project.
The pedalboard will have 32 pedals with reed or mechanical wiper switches. The switches are read by four daisy chained 74HC165 shift registers on a custom PCB. I went with the 74HC165 instead of the CD4021 I used previously as they handle 3.3V better.
The pistons are just push-to-make switches and function exactly the same as the pedalboard. These switches are also read using the same custom shift register PCB daisy chained together.
The swell & crescendo shoes' position will be read using a linear potentiometer, also on a custom PCB, by the Teensy.