MIDIbox

The MIDIbox project is an open source modular DIY framework (hardware and software) MIDI platform built around the PIC family of microcontrollers (specifically the PIC18F452, PIC16F88, PIC18F4620 and PIC18F4685) and recently with STM32FXX and LPC1769 32-bit too. It can 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 (MBHP) was based its own open-source operating system—MIOS (MIDIbox Operating System)—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 called MIOS32 runs on ARM-based processors LPC1769 from NXP and STM32F407 from ST Microelectronics. It is based on a Real Time Operating System (RTOS) derived from FreeRTOS.[1] The toolchain for MIOS32 is based on GCC and uses only C language.

The modules

Currently, about 15 separate modules are available:

Microcontroller modules

Input modules

Output modules

Sequencer modules

Sound modules

Memory expansion modules

MIDI I/O modules

Miscellaneous modules

RTP-MIDI module

The MIDIbox Operating System (MIOS)

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.[4]

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

Background drivers are available for the following control tasks:

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

The MIOS hardware is organized around the concept of MIDIBox Hardware Platform (MBHP). The MBHP are highly versatile motherboards, offering the highest possible number of connections for a given processor. Four versions of MBHP are currently available:

When a project needs less I/O than the ones available on a given MBHP, the MIDIBox concept allows to create a simplified PCB dedicated to this project. This is the approach used on Sammich MIDIBox SID [5] and Sammich MIDIBox FM. These two kits contain the original MBHP design, but with a simplified PCB, dedicated to the connection with a SID chip or a YMF262 chip.

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 (called STM32F4 Discovery by ST).[6] The final user does not have to deal with SMD components, the daughterboard being mounted on standard 0.1" connectors[7]

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:

16 Track Live Step and Morph Sequencer + advanced Arpeggiator

Hardware MIDI-controllable Synthesizer based on the MOS Technology SID (MOS6581) sound chip as shipped with the Commodore 64/128

Hardware synthesizer based on the Yamaha YMF262 sound chip (also known as OPL3) for generating the famous FM sounds known from Soundblaster (compatible) soundcards of the early 90s

Merges two separate MIDI inputs to a single output

Routes various MIDIboxes to a single MIDI port

Provides basic functionality to receive and transmit MIDI events

Provides CV and gate outputs to drive voltage controlled devices such as analog modular synthesizers

Full-fledged 64 channel MIDI controller

Extended version of the MIDIbox 64

The MIDIO128 interface is used to drive up to 128 digital output pins and to react on up to 128 digital input pins via MIDI

Alternative to the MIDIbox 64/64E

Reports events, which are transmitted over the MIDI cable, in a readable form

See also

References

  1. http://www.freertos.org Main website for FreeRTOS
  2. http://midibox.org/forums/topic/18526-midibox-goes-rtp-midi Presentation of RTP-MIDI design concept for MIDIbox
  3. http://kissbox.nl/products_oem.html Webpage of RTP-MIDI OEM module used on MIOS32
  4. "MIOS Change Log". Retrieved 2008-05-23.
  5. http://www.vintagesynth.com/misc/sammichsid.php MIDIBox SID by Sammich
  6. http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419 Reference page for STM32F4 Discovery board
  7. http://beb.digitalaudio.free.fr/RTP-MIDI.html Kit for MBHP based on STM32F4 Discovery

External links

This article is issued from Wikipedia - version of the Wednesday, December 16, 2015. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.