Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thestk/rtmidi
A set of C++ classes that provide a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI) and Windows (Multimedia)
https://github.com/thestk/rtmidi
Last synced: 3 months ago
JSON representation
A set of C++ classes that provide a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI) and Windows (Multimedia)
- Host: GitHub
- URL: https://github.com/thestk/rtmidi
- Owner: thestk
- License: other
- Created: 2013-10-11T13:41:17.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-03-28T13:23:25.000Z (3 months ago)
- Last Synced: 2024-03-28T14:45:44.224Z (3 months ago)
- Language: C++
- Homepage:
- Size: 1.95 MB
- Stars: 924
- Watchers: 56
- Forks: 259
- Open Issues: 63
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-open-synth - rtmidi
- awesome-android-cpp - thestk/rtmidi - A set of C++ classes that provide a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI) and Windows (Multimedia) (TODO scan for Android support in followings)
README
# RtMidi
![Build Status](https://github.com/thestk/rtmidi/actions/workflows/ci.yml/badge.svg)
[![Conan Center](https://shields.io/conan/v/rtmidi)](https://conan.io/center/rtmidi)A set of C++ classes that provide a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI & JACK), Windows (Multimedia Library & UWP), Web MIDI, iOS and Android.
By Gary P. Scavone, 2003-2023.
This distribution of RtMidi contains the following:
- `doc`: RtMidi documentation (also online at http://www.music.mcgill.ca/~gary/rtmidi/)
- `tests`: example RtMidi programsOn Unix systems, type `./configure` in the top level directory, then `make` in the `tests/` directory to compile the test programs. In Windows, open the Visual C++ workspace file located in the `tests/` directory.
If you checked out the code from git, please run `./autogen.sh` before `./configure`.
## Overview
RtMidi is a set of C++ classes (`RtMidiIn`, `RtMidiOut`, and API specific classes) that provide a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA, JACK), Macintosh OS X (CoreMIDI, JACK), and Windows (Multimedia Library) operating systems. RtMidi significantly simplifies the process of interacting with computer MIDI hardware and software. It was designed with the following goals:
- object oriented C++ design
- simple, common API across all supported platforms
- only one header and one source file for easy inclusion in programming projects
- MIDI device enumerationMIDI input and output functionality are separated into two classes, `RtMidiIn` and `RtMidiOut`. Each class instance supports only a single MIDI connection. RtMidi does not provide timing functionality (i.e., output messages are sent immediately). Input messages are timestamped with delta times in seconds (via a `double` floating point type). MIDI data is passed to the user as raw bytes using an `std::vector`.
## Windows
In some cases, for example to use RtMidi with GS Synth, it may be necessary for your program to call `CoInitializeEx` and `CoUninitialize` on entry to and exit from the thread that uses RtMidi.
## Further reading
For complete documentation on RtMidi, see the `doc` directory of the distribution or surf to http://www.music.mcgill.ca/~gary/rtmidi/.
## Legal and ethical
The RtMidi license is similar to the MIT License, with the added *feature* that modifications be sent to the developer. Please see [LICENSE](LICENSE).