Nanomidi is a simple stream-based MIDI message encoder and decoder written in C. It is suitable for embedded (microcontroller) applications.
For more information, see API documentation (generated by Doxygen) or examples.
- Message encoder
- Message decoder
midi_decode()with support for Running Status (omitted status byte in successive messages of the same type)
- Data structures for Channel Mode Messages (Note On, Control Change, etc.) and System Common Messages
- Support for System Real Time Messages (single-byte messages which can occur anywhere in the stream)
- Support for System Exclusive Messages (SysEx)
- Support for USB MIDI packet format (
midi_decode_usb()) described in Universal Serial Bus Device Class Definition for MIDI Devices
To build examples, simply run
make in the
example-libusb requires libusb. On Ubuntu, install it using
sudo apt-get install libusb-1.0-0-dev
To use Nanomidi as an Arduino library, simply download it into the usual library location:
cd ~/Arduino/libraries git clone https://github.com/adamheinrich/nanomidi.git
Then, include Nanomidi using
examples/encode_arduino for example usage.
Nanomidi is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
COPYING for details.