The MIDIbox project is a non-profit, do-it -yourself platform for MIDI hardware and software that runs on the PIC family of microcontrollers, especially the PIC18F452, PIC16F88, PIC18F4620 PIC18F4685 and, as well as the STM32F103RE and LPC1769 32 - bit ARM Cortex- M3 based microcontrollers. With this platform, it is possible to build standalone MIDI controller, sequencer and synthesizer.


The MIDIbox Hardware Platform ( MBHP ) based on Thorsten Klose's work with MIDI controllers. The design is based on a standardized environment of reusable and interchangeable modules. Shortly after the first modules have been published, has formed from a small number of enthusiasts an ever growing open source developer community.

The MIDIbox Hardware Platform ( MBHP )

The focus of the platform is on well-designed and documented modules based on small simple circuits to facilitate beginners to get started. These modules are then connected in a complete structure. All maps can be produced as a single- layer PCB. Prototype boards can be designed with a freeware CAD program. Almost all of the components are through-hole, designed to facilitate assembly.

The MIDIbox Hardware Platform operates its own open- source operating system: MIOS ( MIDIbox Operating System), which is written for speed and accuracy in PIC assembly language. There is a C wrapper layer to be able to program more easily. MIOS is designed and documented that this simple reconfiguration, modifications and enhancements may be made by hobbyists and developers.

The MIDIbox Operating System ( MIOS )

MIDIbox the Operating System ( MIOS ) was developed to allow the creation of flexible MIDI controller applications. MIOS adheres to the idea of ​​a non- commercial, open platform, which is considered essential for the exchange of ideas and personal adjustments that would not be possible with conventional controllers.

Most controllers that are built by the community, insist on already documented designs and start their lives with the feature set that is provided by the existing firmware. End users can expand their devices with replaceable program code and thus adjust the device to the host application, synthesizer or other MIDI devices. Also, an individual adjustment is possible that supports their own preferred workflow.

Application source code, module schematics and PCB layouts are free for non - commercial use as templates for changes and improvements. Thus, MIOS and the hardware platform is an easy introduction to the microcontroller development hobby, to allow applications outside of the areas of commercial MIDI mainstream market.

MIOS was licensed to version 1.8 under the GNU GPL. Later versions now require Thorsten Klose's permission for commercial use.

The operating system consists of a kernel which provides the user with hooks to hardware and software events are available, as well as functions for interacting with modules.

A core module, the following can be processed with a PIC18F452 microcontroller:

  • Up to 128 digital inputs
  • Up to 128 digital outputs
  • Up to 64 analog inputs
  • Matrix displays and graphic LCDs
  • Up to 8 bank sticks (I2C EEPROMs)
  • MIDI In ​​and MIDI Out or an RS232 serial COM port

Background drivers are available for the following control tasks:

  • MIDI I / O processing
  • Bootstrap loader
  • Analog conversion for up to 64 knobs, faders or other analog sources with a resolution of 10 bits
  • Engine handling for up to 8 motorized faders with a resolution of 10 bits
  • Handling of up to 64 encoders ( incremental encoder)
  • Handling of up to 128 keys, touch sensors or similar digital input devices
  • Handling of up to 128 LEDs, relays, digital -to-analog converter, or similar output devices.
  • In multiplex mode, an almost unlimited number of LEDs, LED rings and LED digits are used
  • Read / Write from / to EEPROM, Flash, and Bankstick
  • PIC18F Core Module connection via MIDIbox Link

The entire operating system is written in assembly language and optimized for speed. MIOS currently uses 8kb program memory and 640 bytes of RAM. This means that only 75 microseconds ( microseconds) are required to read 128 digital input pins and write 128 output pins. 16 knobs are updated within 100 microseconds. Analog inputs are updated every 200 microseconds in the background; Changes that exceed a definable minimum, trigger a hook.

Up to 256 MIDI events can trigger functions; The processing of the event list requires about 300 ĩS. MIDI messages can be processed by a user routine for the SysEx parsing or similar jobs. A user - Timer is available for code time - based. Support for other high-level languages ​​in addition to C is possible.

MIOS hardware

MIOS is a dedicated operation system for the microcontroller PIC18F452. This PIC is pin-compatible with the PIC16F877, which was used in earlier MIDIbox projects. Thus, it is backward compatible with older MIDIbox -core modules.

The PIC18F452 has more internal flash, more internal RAM, a few new instructions and a better system architecture. It is available in most countries for the same price as the PIC16F877.

For the newer MIOS32 a core module is based on the ARM Cortex -M3 STM32F103RE available. This 32-bit controller is significantly faster than its predecessor and PIC has a large number of integrated interfaces. The Core32 module is fully compatible with the existing modules. The successor of the Core32 module is the LPC17 module with a 120Mhz LPC1769 ARM Cortex- M3.

Complete Solutions

There are many fully documented projects available, as well as a large number of user projects the community. The official projects are as follows:

  • MIDIbox SEQ V4: 16 Track Live Step Sequencer and Arpeggiator Morph
  • MIDIbox SID V2: Hardware MIDI synthesizer based on the MOS Technology SID sound chip that came with the Commodore 64/128.
  • MIDIbox FM V1: hardware synthesizer based on the Yamaha YMF262 sound chip (also known as OPL3 ) for generating FM sounds of Sound Blaster -compatible sound card of the previous 90 years.
  • MIDI Merger V1: Merges two separate MIDI inputs to one output
  • MIDI router V1: routes of different midi boxes on a single MIDI port
  • MIDI Processor: Provides basic functions to send and receive MIDI events
  • MIDIbox CV: Provides CV and Gate outputs to voltage-controlled devices such as to trigger analog modular synthesizer.
  • MIDIbox 64: Full-size 64- channel MIDI controller
  • MIDIbox 64E V2: Extended version of the MIDIbox 64
  • MIDIO128 V2: The MIDIO128 interface is used to control up to 128 digital output pins, and up to 128 digital input pins to respond via MIDI
  • MIDIbox LC V1: an alternative to the MIDIbox 64/64E
  • SammichSID: Complete kit of community members Wilba and Nils for a Midibox with two SIDs
  • SammichFM: Complete kit of community members Wilba and Nils for a Midibox with YMF262 ( OPL3 ) sound chip