|
@@ -56,8 +56,22 @@ static void initRtAudioAPIsIfNeeded() |
|
|
{ |
|
|
{ |
|
|
const RtAudio::Api& api(*it); |
|
|
const RtAudio::Api& api(*it); |
|
|
|
|
|
|
|
|
if (api == RtAudio::UNIX_JACK && ! jackbridge_is_ok()) |
|
|
|
|
|
|
|
|
if (api == RtAudio::UNIX_JACK) |
|
|
|
|
|
{ |
|
|
|
|
|
#if defined(CARLA_OS_LINUX) || defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN) |
|
|
|
|
|
if ( ! jackbridge_is_ok()) |
|
|
|
|
|
continue; |
|
|
|
|
|
#else |
|
|
|
|
|
/* NOTE |
|
|
|
|
|
* RtMidi doesn't have a native MIDI backend for these OSes, |
|
|
|
|
|
* Using RtAudio JACK funcitonality is only useful when we need to access the native MIDI APIs. |
|
|
|
|
|
* (JACK audio + ALSA MIDI, or JACK audio + CoreMidi, or JACK audio + Windows MIDI) |
|
|
|
|
|
* Because RtMidi has no native MIDI support outside of win/mac/linux, we skip these RtAudio APIs. |
|
|
|
|
|
* Those OSes can use Carla's JACK support directly, which is much better than RtAudio classes. |
|
|
|
|
|
*/ |
|
|
continue; |
|
|
continue; |
|
|
|
|
|
#endif |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
gRtAudioApis.push_back(api); |
|
|
gRtAudioApis.push_back(api); |
|
|
} |
|
|
} |
|
@@ -76,12 +90,12 @@ static const char* getRtAudioApiName(const RtAudio::Api api) noexcept |
|
|
case RtAudio::UNIX_PULSE: |
|
|
case RtAudio::UNIX_PULSE: |
|
|
return "PulseAudio"; |
|
|
return "PulseAudio"; |
|
|
case RtAudio::UNIX_JACK: |
|
|
case RtAudio::UNIX_JACK: |
|
|
#if defined(CARLA_OS_WIN) |
|
|
|
|
|
return "JACK with WinMM"; |
|
|
|
|
|
|
|
|
#if defined(CARLA_OS_LINUX) |
|
|
|
|
|
return "JACK with ALSA-MIDI"; |
|
|
#elif defined(CARLA_OS_MAC) |
|
|
#elif defined(CARLA_OS_MAC) |
|
|
return "JACK with CoreMidi"; |
|
|
return "JACK with CoreMidi"; |
|
|
#elif defined(CARLA_OS_LINUX) |
|
|
|
|
|
return "JACK with ALSA-MIDI"; |
|
|
|
|
|
|
|
|
#elif defined(CARLA_OS_WIN) |
|
|
|
|
|
return "JACK with WinMM"; |
|
|
#else |
|
|
#else |
|
|
return "JACK (RtAudio)"; |
|
|
return "JACK (RtAudio)"; |
|
|
#endif |
|
|
#endif |
|
@@ -113,19 +127,13 @@ static RtMidi::Api getMatchedAudioMidiAPI(const RtAudio::Api rtApi) noexcept |
|
|
return RtMidi::LINUX_ALSA; |
|
|
return RtMidi::LINUX_ALSA; |
|
|
|
|
|
|
|
|
case RtAudio::UNIX_PULSE: |
|
|
case RtAudio::UNIX_PULSE: |
|
|
|
|
|
case RtAudio::UNIX_JACK: |
|
|
#if defined(CARLA_OS_LINUX) |
|
|
#if defined(CARLA_OS_LINUX) |
|
|
return RtMidi::LINUX_ALSA; |
|
|
return RtMidi::LINUX_ALSA; |
|
|
#else |
|
|
|
|
|
return RtMidi::RTMIDI_DUMMY; |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
case RtAudio::UNIX_JACK: |
|
|
|
|
|
#if defined(CARLA_OS_WIN) |
|
|
|
|
|
return RtMidi::WINDOWS_MM; |
|
|
|
|
|
#elif defined(CARLA_OS_MAC) |
|
|
#elif defined(CARLA_OS_MAC) |
|
|
return RtMidi::MACOSX_CORE; |
|
|
return RtMidi::MACOSX_CORE; |
|
|
#elif defined(CARLA_OS_LINUX) |
|
|
|
|
|
return RtMidi::LINUX_ALSA; |
|
|
|
|
|
|
|
|
#elif defined(CARLA_OS_WIN) |
|
|
|
|
|
return RtMidi::WINDOWS_MM; |
|
|
#else |
|
|
#else |
|
|
return RtMidi::RTMIDI_DUMMY; |
|
|
return RtMidi::RTMIDI_DUMMY; |
|
|
#endif |
|
|
#endif |
|
|