Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmake/third_party/rtmidi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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} )
Expand Down
7 changes: 4 additions & 3 deletions source/audio/midioutputdevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

#include <RtMidi.h>
#include <exception>
#include <iostream>
#include <score/dynamic.h>
#include <score/generalmidi.h>
#include <cassert>
Expand Down Expand Up @@ -53,7 +54,7 @@ MidiOutputDevice::MidiOutputDevice() : myMidiOut(nullptr)
{
try
{
myMidiOuts.emplace_back(std::make_unique<RtMidiOut>(api));
myMidiOuts.emplace_back(std::make_unique<rt::midi::RtMidiOut>(api));
}
catch (RtMidiError &e)
{
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
9 changes: 7 additions & 2 deletions source/audio/midioutputdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,12 @@
#include <vector>
#include <score/generalmidi.h>

namespace rt {
namespace midi {
class RtMidiOut;
}
}
using RtMidiOut = rt::midi::RtMidiOut;

class MidiOutputDevice
{
Expand Down Expand Up @@ -94,8 +99,8 @@ class MidiOutputDevice
private:
bool sendMidiMessage(unsigned char a, unsigned char b, unsigned char c);

std::vector<std::unique_ptr<RtMidiOut>> myMidiOuts;
RtMidiOut *myMidiOut;
std::vector<std::unique_ptr<rt::midi::RtMidiOut>> myMidiOuts;
rt::midi::RtMidiOut *myMidiOut;
/// Maximum volume for each channel (as set in the mixer).
std::array<uint8_t, Midi::NUM_MIDI_CHANNELS_PER_PORT> myMaxVolumes;
/// Volume of last active dynamic for each channel.
Expand Down
8 changes: 4 additions & 4 deletions test/audio/test_midioutputdevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<RtMidi::Api> apis;
RtMidi::getCompiledApi(apis);
for (RtMidi::Api api : apis)
REQUIRE(api != RtMidi::RTMIDI_DUMMY);
std::vector<rt::midi::RtMidi::Api> apis;
rt::midi::RtMidi::getCompiledApi(apis);
for (rt::midi::RtMidi::Api api : apis)
REQUIRE(api != rt::midi::RtMidi::RTMIDI_DUMMY);
}
Loading