Nova Midi
Nova Midi is a midi I/O library that is inspired by libremidi and minimidio, providing a simple to use and unified function and interface to send and received midi messages across multiple backend. Currently, the library is still in a prototype and proof of concept phase where only winmm and alsa is supported.
https://codeberg.org/Logickin-Lambda/nova-midi
But… Why?
Like you have said before, there are libremidi and minimidio, and possibly many more; why even bother to build another midi library?
Well, I didn’t have no attempts on trying to link the existing solutions, but most of the existing solutions are written in c++ while they have heavy uses of operator overloading and templates, making to understand and to build the library difficult. Some solutions are C based, but there is no midi 2.0 support or the backend is selected at comptime which could crash the target device if they don’t have specific backend instead of safely escaping the problem with an error and let the program continue. Most of the zig solutions I could found are inactive, a few versions ago.
Because of the problems above, I decided to write my own solution, a midi library that is written zig so that zig users could easily maintain without touching other languages, while reducing a layer of translation.
Supported Zig versions
zig-0.16.0
Help wanted:
Currently, the library is still in an early phase, and because of lacking a mac and still attempting on understanding how different platforms handling their endingpoint connections, some part of the features are currently missing. If you have any interest, ideas, questions or even contributions, please let me know through the issues, pull requests and here down below.