Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ddiakopoulos/modern-midi
:musical_score: C++11 MIDI file & realtime io library
https://github.com/ddiakopoulos/modern-midi
midi midi-controller midi-device midi-events midi-files midi-messages midi-parser midi-player
Last synced: 3 months ago
JSON representation
:musical_score: C++11 MIDI file & realtime io library
- Host: GitHub
- URL: https://github.com/ddiakopoulos/modern-midi
- Owner: ddiakopoulos
- License: bsd-2-clause
- Created: 2015-07-30T03:29:47.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-07-28T17:01:47.000Z (over 6 years ago)
- Last Synced: 2024-10-12T16:58:09.543Z (3 months ago)
- Topics: midi, midi-controller, midi-device, midi-events, midi-files, midi-messages, midi-parser, midi-player
- Language: C++
- Homepage:
- Size: 211 KB
- Stars: 92
- Watchers: 15
- Forks: 14
- Open Issues: 12
-
Metadata Files:
- Readme: readme.md
- License: COPYING
Awesome Lists containing this project
README
# ModernMIDI
ModernMIDI brings together a number of support classes to read, manipulate, and generate MIDI data. For realtime input/output, the library gently wraps RtMidi for cross-platform hardware IO. Furthermore, ModernMIDI includes a comprehensive file io module for reading and writing format-0 files. Other features include common music theory concepts expessed in MIDI, along with a decently performing real-time file player. It's currently thin on the example/documentation front, but more samples will be forthcoming.
In various forms, it has been used in performances with the [Seattle Symphony](http://www.geekwire.com/2015/conducting-with-kinect-seattle-symphony-to-use-microsofts-3d-sensor-in-world-premiere-performance/), installations at the [Jewish Contemporary Museum in SF](http://www.thecjm.org/about/press/press-releases/956-pour-crever-by-trimpin), and in many smaller Arduino prototypes in conjunction with [HIDUINO](https://github.com/ddiakopoulos/hiduino).
This code is functional but rarely maintained. For a newer take on midi library support in C++, see [RtMidi17](https://github.com/jcelerier/RtMidi17).
## Building / Usage
To run the included exampes, use the included VS2013 or XCode 6 projects. ModernMIDI will build on any platform with a recent C++11 compiler. At present, ModernMIDI is not packaged into a static or dynamic library -- instead, the usage model is that developers will compile the small number of files directly into a new project.ModernMIDI inherits from the linkage requirements of RtMidi. RtMidi needs a preprocessor macro defined in the project configuration to select the correct backend (e.g. `__MACOSX_CORE__`). On OSX the following frameworks must be included in a project: `CoreAudio.framework`, `CoreMIDI.framework`, and `CoreFoundation.framework`. On Windows, `winmm.lib` must be included although this is automatically handled in `modernmidi.h`.
## Acknowledgements
ModernMIDI is a continuation of the functionality developed in [LabMIDI](https://github.com/meshula/LabMidi) by [@meshula](https://twitter.com/meshula).## License
ModernMIDI is released under the simplified BSD 2-clause license. See the COPYING file for more information on the (license-compatible) third party code included within ModernMIDI.