From 9b83effc87b8d2f5d83b2ab31a51dbaf7ac462fa Mon Sep 17 00:00:00 2001 From: bonaime Date: Wed, 21 Oct 2026 09:34:44 +0200 Subject: [PATCH 1/5] Fix rtmidi import problem --- source/audio/midioutputdevice.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/audio/midioutputdevice.h b/source/audio/midioutputdevice.h index 4ea8aaf3..f78976c7 100644 --- a/source/audio/midioutputdevice.h +++ b/source/audio/midioutputdevice.h @@ -33,7 +33,8 @@ #include #include -class RtMidiOut; +namespace rt { namespace midi { class RtMidiOut; } } +using RtMidiOut = rt::midi::RtMidiOut; class MidiOutputDevice { From a728b912c29836d69db0fed5b7eaea2674a2283b Mon Sep 17 00:00:00 2001 From: bonaime Date: Wed, 21 Oct 2026 10:04:28 +0200 Subject: [PATCH 2/5] update rtmidi minimum version to 6.0 --- cmake/third_party/rtmidi.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/third_party/rtmidi.cmake b/cmake/third_party/rtmidi.cmake index 957fbabd..63382cdf 100644 --- a/cmake/third_party/rtmidi.cmake +++ b/cmake/third_party/rtmidi.cmake @@ -17,7 +17,7 @@ if ( FETCH_RTMIDI ) target_include_directories( rtmidi::rtmidi INTERFACE ${rtmidi_src_SOURCE_DIR} ) else () - find_package( rtmidi 4.0 REQUIRED ) + find_package( rtmidi 6.0 REQUIRED ) add_library( rtmidi::rtmidi IMPORTED SHARED ) target_include_directories( rtmidi::rtmidi INTERFACE ${rtmidi_INCLUDE_DIRS} ) From 0a4060837cdcc24eecb6c8eafbfdb2c327a40160 Mon Sep 17 00:00:00 2001 From: bonaime Date: Wed, 21 Oct 2026 10:40:40 +0200 Subject: [PATCH 3/5] fix multi plateform complation issue --- source/audio/midioutputdevice.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/audio/midioutputdevice.h b/source/audio/midioutputdevice.h index f78976c7..3ef0c618 100644 --- a/source/audio/midioutputdevice.h +++ b/source/audio/midioutputdevice.h @@ -34,7 +34,6 @@ #include namespace rt { namespace midi { class RtMidiOut; } } -using RtMidiOut = rt::midi::RtMidiOut; class MidiOutputDevice { @@ -95,8 +94,8 @@ class MidiOutputDevice private: bool sendMidiMessage(unsigned char a, unsigned char b, unsigned char c); - std::vector> myMidiOuts; - RtMidiOut *myMidiOut; + std::vector> myMidiOuts; + rt::midi::RtMidiOut *myMidiOut; /// Maximum volume for each channel (as set in the mixer). std::array myMaxVolumes; /// Volume of last active dynamic for each channel. From a0ae5ed2b7d8db9adaffa648f7bc9d69c60fd129 Mon Sep 17 00:00:00 2001 From: bonaime Date: Wed, 21 Oct 2026 12:01:47 +0200 Subject: [PATCH 4/5] fix: update RtMidi API usage to version 6.0 and fix related tests --- source/audio/midioutputdevice.cpp | 7 ++++--- test/audio/test_midioutputdevice.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/source/audio/midioutputdevice.cpp b/source/audio/midioutputdevice.cpp index abb3c742..f5a350b9 100644 --- a/source/audio/midioutputdevice.cpp +++ b/source/audio/midioutputdevice.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -53,7 +54,7 @@ MidiOutputDevice::MidiOutputDevice() : myMidiOut(nullptr) { try { - myMidiOuts.emplace_back(std::make_unique(api)); + myMidiOuts.emplace_back(std::make_unique(api)); } catch (RtMidiError &e) { @@ -127,7 +128,7 @@ MidiOutputDevice::initialize(const std::string_view &preferred_api, for (auto &&midi_out : myMidiOuts) { - if (RtMidi::getApiName(midi_out->getCurrentApi()) != preferred_api) + if (rt::midi::RtMidiOut::getApiName(midi_out->getCurrentApi()) != preferred_api) continue; for (unsigned int i = 0, n = midi_out->getPortCount(); i < n; ++i) @@ -172,7 +173,7 @@ size_t MidiOutputDevice::getApiCount() std::string MidiOutputDevice::getApiName(size_t api) { - return RtMidi::getApiName(myMidiOuts[api]->getCurrentApi()); + return rt::midi::RtMidiOut::getApiName(myMidiOuts[api]->getCurrentApi()); } unsigned int MidiOutputDevice::getPortCount(size_t api) diff --git a/test/audio/test_midioutputdevice.cpp b/test/audio/test_midioutputdevice.cpp index f5f68fd5..f6587473 100644 --- a/test/audio/test_midioutputdevice.cpp +++ b/test/audio/test_midioutputdevice.cpp @@ -31,8 +31,8 @@ TEST_CASE("Audio/MidiOutputDevice/Basic") // Ensure we aren't using the dummy API that is used when RtMidi was // compiled without support for the appropriate platform-specific API. If // this is the case, MIDI output won't do anything. - std::vector apis; - RtMidi::getCompiledApi(apis); - for (RtMidi::Api api : apis) - REQUIRE(api != RtMidi::RTMIDI_DUMMY); + std::vector apis; + rt::midi::RtMidi::getCompiledApi(apis); + for (rt::midi::RtMidi::Api api : apis) + REQUIRE(api != rt::midi::RtMidi::RTMIDI_DUMMY); } From 08c64bb64869ca09e406a999af45b1416f3bd133 Mon Sep 17 00:00:00 2001 From: bonaime Date: Wed, 21 Oct 2026 15:08:22 +0200 Subject: [PATCH 5/5] fix: restore RtMidiOut alias to resolve incomplete type errors --- source/audio/midioutputdevice.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/audio/midioutputdevice.h b/source/audio/midioutputdevice.h index 3ef0c618..a090ccee 100644 --- a/source/audio/midioutputdevice.h +++ b/source/audio/midioutputdevice.h @@ -33,7 +33,12 @@ #include #include -namespace rt { namespace midi { class RtMidiOut; } } +namespace rt { +namespace midi { +class RtMidiOut; +} +} +using RtMidiOut = rt::midi::RtMidiOut; class MidiOutputDevice {