Hello and welcome to RMR's readme.
RMR or "RtMIDI, reduced" is a simplified rewrite of RtMIDI's Alsa part: C++ → C + GLib library. It allows to interface C programs using MIDI standard. There is no compatibility with API calls and struct members from RtMIDI.
Warning: I might change API a lot, this project is not stable. Use RMR at your own risk.
Latest documentation is available on Read the Docs.
This is my personal, derivative project. I want to use RMR on Linux embedded devices and learn more about MIDI and Alsa while changing the code. I also want to know the library internals well when I am using it so it can be as predictable for me as possible.
It will be great if you will discuss it with me in issues, recommend code improvements, etc.
- C++ → C
- use GLib asynchronous queues and arrays when needed (mostly input code: arrays for variably sized SysEx messages and queues for inter-thread message passing)
- removed OOP parts and use structs to reduce overhead
- changed OOP methods to simple functions to reduce overhead
- currently uses
do {} while (0);
for error handling in many cases - use of
GNU make
for examples and tests - documentation using Sphinx and Hawkmoth
One day, I might try and rewrite JACK API and add it to RMR, I like using it for audio, but I don't use it for MIDI yet.
The RMR is MIT-licensed. If you create a pull request, it will also be very nice of you to add a PR for the original RtMIDI repo and I'm ready to help with that. Initially, I wanted it to have the same non-binding license clause, but that way, GitHub can not detect the license. (Please inform me in the issues if there's anything wrong with it.)
Other great RtMIDI forks
- RtMIDI17: C++17
- libremidi: C++17, based on RtMIDI and ModernMIDI, should handle large SysEx messages better