Skip to content
/ rmr Public

RMR (or "RtMIDI, reduced") is a C-only rewrite of RtMIDI's Alsa part

License

Notifications You must be signed in to change notification settings

6r1d/rmr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Issues Percentage of issues still open Average time to resolve an issue

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.

Documentation

Latest documentation is available on Read the Docs.

Motivation

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.

Changes

  • 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

Future plans

Jack

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.

Legal and ethical

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