English Version Spanish Version French Version


Created in May 2002, redesign of the never completed MIDIbox2 project from 1999

Check the long feature list at the bottom :-)


Schematics & PCBs
File Size Description
MBHP LINK see MIDIbox Hardware Platform
MIOS Download LINK MIOS based firmware for PIC18F devices with source code
PIC16F Firmwares LINK Firmware for PIC16F877 (expired, don't use it for new MIDIboxes!)
midibox64e_sfb_table.txt 5k This table lists all functions which can optionally assigned to the buttons aside from MIDI and Meta Events
ChangeLog LINK MIDIbox64E ChangeLog
Panel Layout
midibox16e.fpd 12k The panel layout has been created with Frontplattendesigner, a very usefull program by Schaeffer Apparatebau. I mailed them my file and got back the ready made panel in between 9 days! :-) The panel fits to the TEKO364 chassis, which can be purchased at Reichelt. Feel free to use this file as template for your own panel.
.syx File Generator
mk_syx.zip 11k Creates the configuration dump MIDIbox64E
Archive includes also some configuration examples!
sysex_implementation.txt 2k Regarding the SysEx format
Editor & Download Manager
miostools.midibox.org LINK MIDIbox64E Editor by Serge
Photos LINK Making of...
Tutorial LINK The MIDIbox64E tutorial
LINK LINK 4x20 LED matrix extension for RGB LEDs by Ralf Suckow
MIDIbox Forum LINK Support at the MIDIbox Forum
MIDIbox Wiki LINK A lot of additional informations on MIDIbox and MIOS
midi_thru.gif 50k Optional MIDI Thru Port
midibox_cubase_setup.xml.zip 3k Cubase Remote Control Setup for MIDIbox64 by Tor Arne
midibox_logic_environment.zip 18k Sample Logic Audio environment for V4 and higher.

How many Rotary Encoders should I use?

In priniciple 128 digital inputs are available, every button allocates one input, every rotary encoder allocates 2 inputs. The rotary encoder(s) control 128 virtual pots of a bank, regardless how many physical encoders are connected. The application is very flexible, a lot of different configurations are supported, so don't hesitate to take a look into the main.asm file in order to get an impression about the possibilities.
Here just three examples:

  • A common MIDIbox64E, based on the historical MIDIbox16E design (see picture above) requires 40 DINs: 8 for the buttons, and 32 for the 16 rotary encoders. In the meantime I'm using two DINX4 modules for 32 buttons and 16 rotary encoders, see also this diagram.
    With 16 rotary encoders you will have 8 pages * 16 entries to control the 128 virtual pots - multiplied by 8 (-> 1024) when a BankStick is connected to the box :-)
  • A low-cost MIDIbox64E, stuffed with one rotary encoder only, and with some buttons, requires much less inputs. Here I recomment the use of a single DINX4 module like shown in this diagram, because with one encoder you possibly want to switch faster between the pages in order to select the virtual pot - and for this the additional buttons are useful which can be assigned to the appr. special functions (e.g. 16 page select buttons + vpot increment/decrement buttons).
  • On a full-stuffed MIDIbox64E with 64 rotary encoders all 128 inputs are allocated by the rotary encoders like shown in this diagram. A later version of the application will provide 8 additional inputs at port J5 of the core module for connecting 8 buttons.

Connection diagrams for buttons and rotary encoders can be found here.

How many Buttons should I use?

At least 8 buttons for the menu navigation and for the 4 most important special functions (see MIDIbox64E Tutorial)

How many LEDs should I use?

It has to be differentiated between the LEDs assigned to the buttons and the LEDrings assigned to the rotary encoders.

LEDrings are nice-to-have, but no must. Every LEDring can consist of up to 16 LEDs, the appr. pattern can be defined with the vmidibox editor or with the mk_syx.pl script. I'm using 11 LEDs for every LEDring, and they are connected to the DOUT module like shown in this diagram.

Also the LEDs assigned to the buttons are nice-to-have, but no must. They can either indicate the status of the button (especially usefull if the button is in toggle mode), or they can be controlled via MIDI (-> native MIDI remote support). See also this schematic.

Availability of Rotary Encoders

Hint: rotary encoders which are not mechanically detented (in German: "ohne mechanische Rasterung"), should be preferred for MIDIbox64e, otherwise the quadroubled resolution feature of the firmware will not work correctly and you have to life with the rough resolution of a common encoder handler. So called "vertical types" are useful for mounting. There are also encoders available with built-in switch (button), which could be connected to some free DIN inputs.
A list of rotary encoders can be found in the MIDIbox Wiki at wiki.midibox.org -> WhereToOrder.


If your MIDIbox is stuffed with a display, most parameters can be configured directly on the box. The integrated MIDI-Learn function helps you to assign MIDI events to the pots and buttons fast & easy. Optionally you can use the mk_syx script to convert a .ini textfile to a .syx binary SysEx dump file, which can be uploaded via MIDI. The script has been written in perl and runs under Windows, Macintosh, Be-OS, Linux, ...
Serge developed a Windows GUI which is available under miostools.midibox.org.
Here are some snapshots:


   || Implemented:
  0%|   o 128 virtual pots which can be controlled with up to 
   ||     64 rotary encoders
   ||   o Rotary Encoder Handler with interpolator (quadroubled resolution)
   ||     Example: a STEC16B normaly sends 24 pulses per revolution, but
   ||     the MIOS driver reacts on every falling and rising edge, this
   ||     results to 96 steps per revolution!
   ||   o up to 64 buttons, 64 LEDs (like MIDIbox64)
   ||   o independent selection of parameters (1 of 128) on-the-fly
   ||   o BankStick support (+4*8=32 banks with every BankStick)
   ||   o support for 2*16 display
   ||   o support for (optional) LED-Rings with up to 16*16 LEDs
   ||   o 4 customizable LED-Ring patterns in every bank
   ||   o Menu with 2 cursor and 1 exec button
   ||   o Different Display Modes
   ||   o Named Events (requires BankStick)
   ||   o Snapshot Button with Save/Recall behaviour
   ||   o MIDI Learn Mode for every encoder
   ||   o MIDI Learn for Single encoder, automatic row channel, 
   ||     automatic row add
   ||   o Meta Events allow you to define SysEx strings and more
   ||   o MIDI Merger
   ||   o Exchange setups via SysEx
   ||   o min/max values for encoders
   ||   o Sending absolute values: xx xx [from min to max]
   ||   o Sending relative events: xx xx 40 +/- speed
   ||   o Sending relative events: xx xx 00 +/- speed
   ||   o Sending relative events: xx xx 40 +/- 1
   ||   o Sending relative events: xx xx 00 +/- 1
   ||   o Sending relative CC events: CC Inc/Dec xx
   ||   o Progressive Mode for Encoders (faster turns: higher inc/dec)
   ||   o "Fast" Button to enable the progressive mode
   ||   o "Slow" Button
   ||   o different button behaviour like on MIDIbox Plus
   ||   o optional MIDI event filter for the merger
   || Additional features provided by the MIOS based version:
   ||   o runs on a PIC18F452 under MIOS
   ||   o On-Screen editing of MIDI Events
   ||   o On-Screen editing of pot lables
   ||   o On-Screen editing of banknames
   ||   o up to 8 BankSticks can be connected (-> up to 64 banks)
   ||   o Remote Control via SysEx
   ||   o banks can be copied
   ||   o an optional global MIDI channel
   ||   o Morphing function which allows to fade smoothly between two pot scenes
   ||   o optionally up to 64 pots or up to 8 motorfaders can be connected
   ||     in addition to the rotary encoders

Last update: 2016-08-12

Copyright 1998-2016, Thorsten Klose. All rights reserved.