-
Notifications
You must be signed in to change notification settings - Fork 22
Description
I'm sure there's a simple thing required to connect to JACK backend, but after a day trying to connect to JACK, I've not really got anywhere. I can connect to WASAPI no problem, other software is connecting and playing over JACK no problems, but miniaudio seems to not play with JACK? Any ideas.
import os
import miniaudio
def samples_path(filename):
return os.path.join(os.path.abspath(os.path.dirname(__file__)), '', filename)
def choose_device():
devices = miniaudio.Devices(backends=[miniaudio.Backend.JACK])
print("Available playback devices:")
playbacks = devices.get_playbacks()
for d in enumerate(playbacks, 1):
print("{num} = {name}".format(num=d[0], name=d[1]['name']))
choice = int(input("play on which device? "))
return playbacks[choice-1]
if __name__ == "__main__":
selected_device = choose_device()
stream = miniaudio.stream_file(samples_path("stereo.wav"))
with miniaudio.PlaybackDevice(device_id=selected_device["id"]) as device:
device.start(stream)
input("Audio file playing in the background. Enter to stop playback: ")
There's no errors in jackd.exe messages itself, but this is the error in python log and last 3 lines seem to be the issue?
Jack: JackClient::SetupDriverSync driver sem in normal mode
Jack: JackWinSemaphore::Connect jack_pipe.default_miniaudio
Jack: JackLibClient::Open name = miniaudio refnum = 3
Jack: jack_client_close
Jack: JackClient::Close ref = 3
Jack: JackClient::Deactivate
Jack: JackWinNamedPipeClientChannel::Stop
Jack: JackWinThread::Kill
Jack: JackWinNamedPipeServer::Close
Jack: JackWinSemaphore::Disconnect jack_pipe.default_miniaudio
Jack: JackLibClient::~JackLibClient
Jack: JackShmReadWritePtr1::~JackShmReadWritePtr1 3
Jack: Succeeded in unlocking 426 byte memory area
Jack: JackLibGlobals Destroy 60972490
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 1
Jack: Succeeded in unlocking 1196 byte memory area
Jack: JackShmReadWritePtr::~JackShmReadWritePtr 0
Jack: Succeeded in unlocking 107341340 byte memory area
Jack: jack_client_close res = 0
Available playback devices:
Jack: jack_client_open miniaudio
Jack: JackLibGlobals Init 0
Jack: InitTime : multimedia timer resolution set to 1 milliseconds
Jack: JackLibGlobals
Jack: JackWinThread::StartImp : create non RT thread
Jack: JackWinThread::ThreadHandler : start
Jack: JackGenericClientChannel::ServerCheck = default
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::Close
Jack: JackLibClient::JackLibClient table = 609724b0
Jack: JackLibClient::Open name = miniaudio
Jack: JackWinNamedPipeClientChannel::Open name = miniaudio
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: JackLibGlobals Destroy 60972490
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 1
Jack: Succeeded in unlocking 1196 byte memory area
Jack: JackShmReadWritePtr::~JackShmReadWritePtr 0
Jack: Succeeded in unlocking 107341340 byte memory area
Jack: jack_client_close res = 0
Available playback devices:
Jack: jack_client_open miniaudio
Jack: JackLibGlobals Init 0
Jack: InitTime : multimedia timer resolution set to 1 milliseconds
Jack: JackLibGlobals
Jack: JackWinThread::StartImp : create non RT thread
Jack: JackWinThread::ThreadHandler : start
Jack: JackGenericClientChannel::ServerCheck = default
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::Close
Jack: JackLibClient::JackLibClient table = 609724b0
Jack: JackLibClient::Open name = miniaudio
Jack: JackWinNamedPipeClientChannel::Open name = miniaudio
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: JackWinSemaphore::Disconnect jack_pipe.default_qjackctl
Jack: no message buffer overruns
Jack: JackWinThread::Stop
Jack: JackWinThread::ThreadHandler : exit
Jack: JackShmReadWritePtr::~JackShmReadWritePtr 1
Jack: Succeeded in unlocking 1196 byte memory area
Jack: JackShmReadWritePtr::~JackShmReadWritePtr 0
Jack: Succeeded in unlocking 107341340 byte memory area
Jack: jack_client_close res = 0
Available playback devices:
Jack: jack_client_open miniaudio
Jack: JackLibGlobals Init 0
Jack: InitTime : multimedia timer resolution set to 1 milliseconds
Jack: JackLibGlobals
Jack: JackWinThread::StartImp : create non RT thread
Jack: JackWinThread::ThreadHandler : start
Jack: JackGenericClientChannel::ServerCheck = default
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::Close
Jack: JackLibClient::JackLibClient table = 609724b0
Jack: JackLibClient::Open name = miniaudio
Jack: JackWinNamedPipeClientChannel::Open name = miniaudio
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: Succeeded in unlocking 107341340 byte memory area
Jack: jack_client_close res = 0
Available playback devices:
Jack: jack_client_open miniaudio
Jack: JackLibGlobals Init 0
Jack: InitTime : multimedia timer resolution set to 1 milliseconds
Jack: JackLibGlobals
Jack: JackWinThread::StartImp : create non RT thread
Jack: JackWinThread::ThreadHandler : start
Jack: JackGenericClientChannel::ServerCheck = default
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::Close
Jack: JackLibClient::JackLibClient table = 609724b0
Jack: JackLibClient::Open name = miniaudio
Jack: JackWinNamedPipeClientChannel::Open name = miniaudio
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: JackGenericClientChannel::ServerCheck = default
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::Close
Jack: JackLibClient::JackLibClient table = 609724b0
Jack: JackLibClient::Open name = miniaudio
Jack: JackWinNamedPipeClientChannel::Open name = miniaudio
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: JackLibClient::Open name = miniaudio
Jack: JackWinNamedPipeClientChannel::Open name = miniaudio
Jack: JackWinNamedPipeClient::ConnectAux : fName \.\pipe\server_jack_default_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: JackWinNamedPipeServer::BindAux : fName \.\pipe\client_jack_miniaudio_0
Jack: JackWinNamedPipeClientChannel::Start
Jack: JackWinThread::StartImp : create non RT thread
Jack: JackWinThread::ThreadHandler : start
Jack: JackWinNamedPipeClientChannel::Init
Cannot connect server pipe name = \.\pipe\client_jack_miniaudio_0 err = 535
JackWinNamedPipeClientChannel: cannot establish notification pipe
Thread init fails: thread quits
Occasionally the script progresses to selecting the device. Obviously it's always 1 as JACK is just one device, but then the error is:
1 = Default Playback Device
play on which device? 1
Traceback (most recent call last):
File "C:\Users\skhoc\Documents\DANU\test.py", line 26, in
with miniaudio.PlaybackDevice(device_id=selected_device["id"]) as device:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\skhoc\Documents\DANU\venv\Lib\site-packages\miniaudio.py", line 1550, in init
raise MiniaudioError("failed to init device", result)
miniaudio.MiniaudioError: ('failed to init device', -2)