Skip to content

adamheinrich/nanomidi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nanomidi

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.

Scope

Implemented:

  • Message encoder midi_encode()
  • 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_encode_usb() and midi_decode_usb()) described in Universal Serial Bus Device Class Definition for MIDI Devices

Examples

To build examples, simply run make in the examples directory.

Example example-libusb requires libusb. On Ubuntu, install it using

sudo apt-get install libusb-1.0-0-dev

Arduino library

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 #include <nanomidi_arduino.h>. See examples/encode_arduino for example usage.

License

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.

See file COPYING for details.

About

Simple stream-based MIDI message encoder and decoder written in C.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published