The MIDIbox Operating System (MIOS) facilitates design of flexible MIDI controller applications. MIOS adheres to a non-commercial, open platform as fundamental to the exchange of ideas and personal adaptations not possible with commercial controllers. Most controllers built by the community are based on existing documented designs, and begin life with the feature set provided by the existing firmware. End users can enhance their devices with exchangeable program code, and customize them to suit their host application, synthesizer or other MIDI device. Users can also customize to suit their own preferred
workflow, or design a new project from scratch. Application source code, module schematics and PCB layouts are available free for non-commercial use as templates for modifications and improvements. Thus MIOS and the Hardware Platform allow an easy entry to hobbyist microcontroller development, while making possible applications outside the realms of the commercial, mainstream MIDI market. MIOS was licensed under the
GPL until version 1.8. Later versions now require Thorsten Klose's permission for commercial use.
Specifications The operating system consist of a kernel that provides user hooks to hardware and software events, and functions for interaction with Hardware Platform modules. One core module with a PIC18F452 microcontroller can handle • up to 128 digital inputs • up to 128 digital outputs • up to 64 analog inputs • character and graphical
LCDs • up to 8 BankSticks (
I2C EEPROMs) • one MIDI In and one MIDI Out, or an
RS-232 serial
COM port Background drivers are available for the following control tasks: • MIDI I/O processing • Bootstrap loader • Analog conversion of up to 64
pots, faders or other analog sources with a 10-bit resolution • Motor handling for up to 8 motorized moving faders with a 10-bit resolution • Handling of up to 64
rotary encoders • Handling of up to 128 buttons, touch sensors or similar digital input devices • Handling of up to 128 LEDs, relays, Digital-Analog-Converters or similar output devices. In
multiplex mode a nearly unlimited number of LEDs, LED rings and LED digits can be driven • Read/Write from/to EEPROM, Flash, and BankStick • Linking PIC18F Core modules via MIDIbox Link The whole operating system has been written in assembly language and has been optimized for speed. MIOS currently uses 8k of program memory and 640 bytes of RAM. Only 75
μs is required to read 128 digital input pins and to write to 128 output pins. 16 rotary encoders are handled within 100 μs. Analog inputs are scanned in the background every 200 μs; changes larger than a definable minimum range trigger a user hook. Up to 256 MIDI events can trigger dedicated functions; processing of the event list requires about 300 μS. MIDI events can also be processed by a user routine for
sysex parsing or similar jobs. A user timer is available for time triggered code. Support for other high-level languages apart from C is possible. == MIOS hardware ==