mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
juce_audio_devices: Add support for JACK on Windows and macOS
This commit is contained in:
parent
b7d0364e69
commit
f608e7cce2
4 changed files with 36 additions and 15 deletions
|
|
@ -100,7 +100,7 @@ void AudioIODeviceType::callDeviceChangeListeners()
|
||||||
AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_ALSA() { return nullptr; }
|
AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_ALSA() { return nullptr; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (JUCE_LINUX || JUCE_BSD) && JUCE_JACK
|
#if (JUCE_LINUX || JUCE_BSD || JUCE_MAC || JUCE_WINDOWS) && JUCE_JACK
|
||||||
AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_JACK() { return new JackAudioIODeviceType(); }
|
AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_JACK() { return new JackAudioIODeviceType(); }
|
||||||
#else
|
#else
|
||||||
AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_JACK() { return nullptr; }
|
AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_JACK() { return nullptr; }
|
||||||
|
|
|
||||||
|
|
@ -176,19 +176,6 @@
|
||||||
#include "native/juce_ALSA_linux.cpp"
|
#include "native/juce_ALSA_linux.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if JUCE_JACK
|
|
||||||
/* Got an include error here? If so, you've either not got jack-audio-connection-kit
|
|
||||||
installed, or you've not got your paths set up correctly to find its header files.
|
|
||||||
|
|
||||||
The package you need to install to get JACK support is "libjack-dev".
|
|
||||||
|
|
||||||
If you don't have the jack-audio-connection-kit library and don't want to build
|
|
||||||
JUCE with low latency audio support, just set the JUCE_JACK flag to 0.
|
|
||||||
*/
|
|
||||||
#include <jack/jack.h>
|
|
||||||
#include "native/juce_JackAudio_linux.cpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (JUCE_LINUX && JUCE_BELA)
|
#if (JUCE_LINUX && JUCE_BELA)
|
||||||
/* Got an include error here? If so, you've either not got the bela headers
|
/* Got an include error here? If so, you've either not got the bela headers
|
||||||
installed, or you've not got your paths set up correctly to find its header
|
installed, or you've not got your paths set up correctly to find its header
|
||||||
|
|
@ -258,6 +245,25 @@ namespace juce
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (JUCE_LINUX || JUCE_BSD || JUCE_MAC || JUCE_WINDOWS) && JUCE_JACK
|
||||||
|
/* Got an include error here? If so, you've either not got jack-audio-connection-kit
|
||||||
|
installed, or you've not got your paths set up correctly to find its header files.
|
||||||
|
|
||||||
|
Linux: The package you need to install to get JACK support is libjack-dev.
|
||||||
|
|
||||||
|
macOS: The package you need to install to get JACK support is jack, which you can
|
||||||
|
install using Homebrew.
|
||||||
|
|
||||||
|
Windows: The package you need to install to get JACK support is available from the
|
||||||
|
JACK Audio website. Download and run the installer for Windows.
|
||||||
|
|
||||||
|
If you don't have the jack-audio-connection-kit library and don't want to build
|
||||||
|
JUCE with low latency audio support, just set the JUCE_JACK flag to 0.
|
||||||
|
*/
|
||||||
|
#include <jack/jack.h>
|
||||||
|
#include "native/juce_JackAudio.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "midi_io/juce_MidiDevices.cpp"
|
#include "midi_io/juce_MidiDevices.cpp"
|
||||||
|
|
||||||
#if ! JUCE_SYSTEMAUDIOVOL_IMPLEMENTED
|
#if ! JUCE_SYSTEMAUDIOVOL_IMPLEMENTED
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Config: JUCE_JACK
|
/** Config: JUCE_JACK
|
||||||
Enables JACK audio devices (Linux only).
|
Enables JACK audio devices.
|
||||||
*/
|
*/
|
||||||
#ifndef JUCE_JACK
|
#ifndef JUCE_JACK
|
||||||
#define JUCE_JACK 0
|
#define JUCE_JACK 0
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,11 @@ static void* juce_loadJackFunction (const char* const name)
|
||||||
if (juce_libjackHandle == nullptr)
|
if (juce_libjackHandle == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
#if JUCE_WINDOWS
|
||||||
|
return GetProcAddress ((HMODULE) juce_libjackHandle, name);
|
||||||
|
#else
|
||||||
return dlsym (juce_libjackHandle, name);
|
return dlsym (juce_libjackHandle, name);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#define JUCE_DECL_JACK_FUNCTION(return_type, fn_name, argument_types, arguments) \
|
#define JUCE_DECL_JACK_FUNCTION(return_type, fn_name, argument_types, arguments) \
|
||||||
|
|
@ -604,8 +608,19 @@ public:
|
||||||
inputNames.clear();
|
inputNames.clear();
|
||||||
outputNames.clear();
|
outputNames.clear();
|
||||||
|
|
||||||
|
#if (JUCE_LINUX || JUCE_BSD)
|
||||||
if (juce_libjackHandle == nullptr) juce_libjackHandle = dlopen ("libjack.so.0", RTLD_LAZY);
|
if (juce_libjackHandle == nullptr) juce_libjackHandle = dlopen ("libjack.so.0", RTLD_LAZY);
|
||||||
if (juce_libjackHandle == nullptr) juce_libjackHandle = dlopen ("libjack.so", RTLD_LAZY);
|
if (juce_libjackHandle == nullptr) juce_libjackHandle = dlopen ("libjack.so", RTLD_LAZY);
|
||||||
|
#elif JUCE_MAC
|
||||||
|
if (juce_libjackHandle == nullptr) juce_libjackHandle = dlopen ("libjack.dylib", RTLD_LAZY);
|
||||||
|
#elif JUCE_WINDOWS
|
||||||
|
#if JUCE_64BIT
|
||||||
|
if (juce_libjackHandle == nullptr) juce_libjackHandle = LoadLibraryA ("libjack64.dll");
|
||||||
|
#else
|
||||||
|
if (juce_libjackHandle == nullptr) juce_libjackHandle = LoadLibraryA ("libjack.dll");
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
if (juce_libjackHandle == nullptr) return;
|
if (juce_libjackHandle == nullptr) return;
|
||||||
|
|
||||||
jack_status_t status = {};
|
jack_status_t status = {};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue