Concept: Advanced Hauptwerk console
Abstract. Hauptwerk MIDI console
The first idea was using three MIDI keyboards in one case, connected through MIDI merger. But when I had started to dig into it, I’ve found that 4 channel MIDI mergers are not cheap, and there was a new idea to use Arduino board to build my own MIDI merger.
After a while, by progressing with Atmel Studio and AVR capabilities I have grown to custom boards and done prototyping with Arduino Mega and Arduino mini.
So, here is the block diagram of what I have now:
Velocity-sensitive keyboards (ATMega48A)
Keyboards are velocity-sensitive, despite the fact that it is not applicable in Hauptwerk: the console can be used with other software like Kontakt, where you can set different instruments to manuals and have a full scale of velocities.
Each keyboard sends NoteOn/NoteOff in MIDI channel 0. While standart is MIDI, since it is internal communication only, the connection speed is set maximum for ATMega UART (gotta check – 512Kbit or 1Mbit actual value).
Each keyboard has MIDI input, and merges input signal from upper keyboard increasing its channel number.
So, keyboard 1 sends channel 0 messages. Keyboard 2 send also channel 0, but passes KBD1 signals through with “+1” channel number (0->1).
Keyboard 3, again, sends channel 0 messages, and adds +1 channel to all input signals, making KBD1 – channel 2, KBD2 – channel 1.
Organ core (ATMega2560)
The console CORE receives MIDI signals with channel numbers 0, 1, 2 etc… In settings mode there is an option to leave these channels as is, or increase it once again +1, to use channel 0 for pedalboard and channels 1-127 to your 127 manuals.
The core is a (Arduino Mega actually):
- power supply 9V to 5V;
- 4-channel MIDI merger (4 inputs, 2 outputs). Output 1 is common output, Output 2 is a pass-through for Console MIDI IN – to control more piston boards as separate devices.
- LED board controller (MIDI+some logic -> TWI)
- LCD display controller (MIDI+some logic -> TWI);
- Piston controller (between keyboards) (MIDI NRPN <-> TWI);
- Pedals controller (IO board for pedals with 5mm jack is not shown on the diagram).
- Separate USB chip with ATMega162USB.
There is three options to power all this garbage:
When using MIDI IN/OUT: +9V power supply(1) or any USB 5V phone charger with USB A to USB B power cord(2).
When using MIDI over USB – direct USB power from PC(3).
While power consumption is still low for the whole setup, I do not recommend using PC to power the console and using MIDI over USB at the same time, because it is very annoying to search for good USB cords if you need it more than 3m long.
Preset buttons communicate with CORE by TWI. CORE translates it to NRPN messages to control Hauptwerk. Selected preset is indicated by button backlight if applicable, thanks to the Hauptwerk back-messaging system.
Status LED panel
Status LED panel indicates system status for Hauptwerk, like “Organ ready”, CPU overload, memory overload, audio clipping etc.
1602 LCD are used to display the current and next selected preset, combination and organ name, and other stuff. Used also in settings mode, but there are not much settings yet.
IO board with MIDI DIN5 connections
Usual stuff. Connectors and opto-couplers.