New codebase for OmniMIDI, completely rewritten from scratch using code laid down through various tests in the Shakra branch.
Two reasons; the old code was too bloated, and I wanted to completely move the new release as far away from it as possible.
This code has been written completely in C++, instead of taping random code on top of the already unstable C code from OmniMIDI v1 (pre 15.0). This will get rid of all the issues that have been plaguing the old branch so far, while also making the code more readable by normal human beings. I became unable to read my own code in there...
I feel like I should probably get to know C++ more, before moving to Rust. A Rust rewrite is not out of the question though! Maybe someday.
Here are the main differences:
- v2 is pure C++ code. (Duh!)
- Written with modularity in mind, to allow other developers to take full advantage of it (Modules support!) and...
- ... support for more operating systems other than Windows, and more architectures other than i386 and AMD64, thanks to a built-in implementation of TinySoundFont! (Both a WinRT ARM32 and Linux AMD64 release have been tested internally so far.)
Keppy's Direct MIDI API, introduced in OmniMIDI v1, will continue to be supported in OmniMIDI v2.
I will make sure old applications will still be able to communicate with v2, but it will definitely be deprecated in favor of a better API implementation with a better name. To be continued...
Here's what available with OmniMIDI v2 so far.
- ✔️ Driver (Uh...)
- ✔️ Modular synthesizer system, with built-in support for:
- ✔️ BASSMIDI (With support for WASAPI, ASIO, DirectSound and XAudio2)
- ✔️ FluidSynth
- ✔️ XSynth
- ✔️ TinySoundFont
- ❌ Events parser overrides (change note length, ignore events etc...)
- ❌ Hotkey support for hot reload of settings or SoundFont lists
- ❌ MIDI Feedback feature
- ❔ Blacklist system
- ❔ Audio limiter (anti-clipping)
- ❔ WinMMWRP support
- ✔️ Modular synthesizer system, with built-in support for:
- ❌ Configurator
- ❌ MIDI channel mixer
- ❌ Debug window
Stop asking. No.