MIDIbox
MIDIbox is a non-commercial open source project with a series of guides on how to build musical instrument device interfaces. Through a series of do it yourself tutorials, users are guided in the process of building a basic microcontroller that can also be used to build hardware MIDI control units for various synthesizers, multi-track recording software, and other MIDI devices; as well as stand-alone synthesizers, sequencers and other projects.
History
The MIDIbox Hardware Platform is the continuation of Thorsten Klose's earlier work on MIDI controllers. Designs are based around a standardized environment of reusable and exchangeable modules. Soon after the release of the first modules, a small group of enthusiasts formed and grew into a thriving open source development community.The MIDIbox Hardware Platform (MBHP)
The platform focuses on well-defined and documented modules based on small, uncomplicated circuits, to allow for amateur assembly. These modules are then assembled into a complete project. All boards can be made as single-layer PCBs and prototype boards designed with a freeware CAD program. Almost all components are through-hole for easier assembly.The first MIDIbox hardware platform,, was based its own open-source operating system– MIOS –written in PIC assembly language, for speed and accuracy. A C wrapper layer provides simplified coding. MIOS is designed and documented to allow simple reconfiguration, adaptation, and extension by hobbyists and enthusiasts.
The new MIDIBox Hardware Platform, MIOS32, runs on ARM-based processors LPC1769, from NXP, and STM32F407, from STMicroelectronics, and is based on a Real Time Operating System derived from FreeRTOS. The toolchain for MIOS32 is based on GCC, and uses only C language.
The modules
Currently, about 15 separate modules are available:Microcontroller modules
- Core Module
- PIC Programmer Modules like an actual PIC-Burner or the JDM Module
Input modules
- AIN Module Analog Input
- DIN Module Digital Input
Output modules
- DOUT Module Digital Output
- LCD Module Liquid Crystal Display
- AOUT Module Analog Out to output Voltages
Sequencer modules
- SEQV4 Sequencer V4
- SEQV4L Sequencer V4 Lite
- SEQV3 Sequencer V3
Sound modules
- SID Module for the MOS Technology SID
- OPL3 Module for the FM-Chips YMF262 and YAC512
- IIC SpeakJet Module for the SpeakJet SoundChip
Memory expansion modules
- BankStick 32k / 64k Memory module
MIDI I/O modules
- LTC Module MIDI LED Indicators + 1 MIDI-Out + 1 Thru
- USB Modules PC/USB Interface
Miscellaneous modules
- MF Module to control Motorfaders
- IIC Modules to communicate to other Devices via I2C
RTP-MIDI module
- MIOS32 firmware includes direct link to KissBox OEM RTP-MIDI module over high-speed SPI
The MIDIbox Operating System (MIOS)
The MIDIbox Operating System 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
- one MIDI In and one MIDI Out, or an RS-232 serial COM port
- 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
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
The MIOS hardware is organized around the concept of MIDIBox Hardware Platform. The MBHP are highly versatile motherboards, offering the highest possible number of connections for a given processor. Four versions of MBHP are currently available:- MBHP for PIC16F877 and PIC18F452. The two chips are pin compatible, but the PCB needs a simple change between the two chips
- MBHP for LPC1769
- MBHP for STM32F407
In the case of the STM32F407 MBHP, the CPU is mounted on a module used as a daughterboard, made by ST and sold as a development board. The final user does not have to deal with SMD components, the daughterboard being mounted on standard 0.1" connectors
Complete solutions
At this point there are 11 fully documented projects available, as well as a large number of user projects generated by the community. The official projects are as follows:- MIDIbox SEQ V3:
- MIDIbox SID V1:
- MIDIbox FM V1:
- MIDI Merger V1:
- MIDI Router V1:
- MIDI Processor:
- MIDIbox CV
- MIDIbox 64:
- MIDIbox 64E V2:
- MIDIO128 V2:
- MIDIbox LC V1:
- MIDImon V2: