Skip to content

How to include Jack in API list for sounddevice (on Windows)? #568

@hockinsk

Description

@hockinsk

I've added ASIO to portaudio.dll for sounddevice to include ASIO devices as options no problem, but how do we use Jack with sounddevice? All documentation i've read on how to do it seems to think C:\Program Files\JACK2\bin exists but I don't think Jack2 uses it anymore. What Jack includes/preprocessors am I meant to be building portaudio.dll with for sounddevice to list Jack as a client api so I can connect/create to Jack ports?

import sounddevice as sd

# List all available host APIs
hostapis = sd.query_hostapis()
print("Available host APIs:")
for idx, api in enumerate(hostapis):
    print(f"Host API {idx}: {api['name']}")

(venv) python -u "C:\Users\skhoc\Desktop\Test\api_test.py"
Jack: JackClient::SetupDriverSync driver sem in normal mode
Jack: JackWinSemaphore::Connect jack_pipe.default_python
Jack: JackLibClient::Open name = python refnum = 3
Jack: JackClient::Deactivate
Jack: JackClient::Deactivate
Jack: jack_client_close
Jack: JackClient::Close ref = 3
Jack: JackClient::Deactivate
Jack: JackWinNamedPipeClientChannel::Stop
Jack: JackWinThread::Kill
Jack: JackWinNamedPipeServer::Close
Jack: JackLibClient::Open name = python refnum = 3
Jack: JackClient::Deactivate
Jack: JackClient::Deactivate
Jack: jack_client_close
Jack: JackClient::Close ref = 3
Jack: JackClient::Deactivate
Jack: JackWinNamedPipeClientChannel::Stop
Jack: JackWinThread::Kill
Jack: JackWinNamedPipeServer::Close
Jack: JackClient::Deactivate
Jack: JackWinNamedPipeClientChannel::Stop
Jack: JackWinThread::Kill
Jack: JackWinNamedPipeServer::Close
Jack: JackWinNamedPipeServer::Close
Jack: JackWinSemaphore::Disconnect jack_pipe.default_python
Jack: JackLibClient::~JackLibClient
Jack: JackShmReadWritePtr1::~JackShmReadWritePtr1 7
Jack: Succeeded in unlocking 426 byte memory area
Jack: JackLibGlobals Destroy 23af2490
Jack: ~JackLibGlobals
Jack: JackWinSemaphore::Disconnect jack_pipe.default_system
Jack: JackWinSemaphore::Disconnect jack_pipe.default_freewheel
Jack: JackWinSemaphore::Disconnect jack_pipe.default_qjackctl
Jack: no message buffer overruns
Jack: JackWinThread::Stop
Jack: JackWinThread::ThreadHandler : exit
Jack: JackShmReadWritePtr::~JackShmReadWritePtr 5
Jack: Succeeded in unlocking 1196 byte memory area
Jack: JackShmReadWritePtr::~JackShmReadWritePtr 4
Jack: Succeeded in unlocking 107341340 byte memory area
Jack: jack_client_close res = 0
Available host APIs:
Host API 0: MME
Host API 1: Windows DirectSound
Host API 2: ASIO
Host API 3: Windows WASAPI
Host API 4: Windows WDM-KS

In my Visual Studio properties I have setup:

Include Path: C:\Program Files\JACK2\include
Library Path: C:\Program Files\JACK2\lib
Linker Dependencies: libjack64.lib

I have a Preprocessor definition of: PA_USE_JACK=1 same way I have PA_USE_ASIO=1 and which worked.

It seems libjack64.dll is also required and that seems to get installed to C:\Windows by Jack2 installer so would be included automatically in the portaudio.dll build.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions