I am trying to test a Guitar amplification software which is:
When I run it with the following Nix shell (with nixld of course) which puts some libraries into the shell etc etc:
with import <nixpkgs> { };
mkShell {
NIX_LD_LIBRARY_PATH = lib.makeLibraryPath [
pkgs.stdenv.cc.cc
pkgs.alsa-lib-with-plugins
pkgs.qt5.qtbase
pkgs.qt5.qtwayland
pkgs.dbus
pkgs.pipewire
pkgs.jack2
];
QT_PLUGIN_PATH = "${qt5.qtbase}/${qt5.qtbase.qtPluginPrefix}:${qt5.qtwayland.bin}/${qt5.qtbase.qtPluginPrefix}";
QML2_IMPORT_PATH = "${qt5.qtdeclarative}/${qt5.qtbase.qtQmlPrefix}:${qt5.qtwayland.bin}/${qt5.qtbase.qtQmlPrefix}";
NIX_LD = lib.fileContents "${stdenv.cc}/nix-support/dynamic-linker";
}
The application downloaded from the release page starts, and
I can start it on my M-Track USB Audio interface:
Starting jackd using:
-R -S -n mod-desktop -C ./jack/jack-session-alsamidi.conf -v -d alsa -r 48000 -p 256 -d hw:2,0
jackdmp 1.9.22
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 Grame.
Copyright 2016-2023 Filipe Coelho.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
Jack: JackPosixThread::StartImp : create non RT thread
Jack: JackPosixThread::ThreadHandler : start
Jack: playback device hw:2,0
Jack: capture device hw:2,0
Jack: apparent rate = 48000
Jack: frames per period = 256
Jack: JackDriver::Open capture_driver_name = hw:2,0
Jack: JackDriver::Open playback_driver_name = hw:2,0
Jack: Check protocol client = 9 server = 9
Jack: JackEngine::ClientInternalOpen: name = system
Jack: JackEngine::AllocateRefNum ref = 0
Jack: JackLinuxFutex::Allocate name = jack_sem.1000_mod-desktop_system val = 0
Jack: JackEngine::NotifyAddClient: name = system
Jack: JackGraphManager::SetBufferSize size = 256
Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0
Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
Jack: JackDriver::SetupDriverSync driver sem in normal mode
audio_reservation_init
Acquire audio card Audio2
creating alsa driver ... hw:2,0|hw:2,0|256|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 256 frames (5.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 24bit little-endian in 3bytes format
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 24bit little-endian in 3bytes format
ALSA: use 2 periods for playback
Jack: JackPosixThread::StartImp : create non RT thread
Jack: JackSocketServerChannel::Open
Jack: JackServerSocket::Bind : addr.sun_path /dev/shm/jack_mod-desktop_1000_0
Jack: JackSocketServerChannel::BuildPoolTable size = 1
Jack: JackEngine::Open
Jack: JackClientSocket::Connect : addr.sun_path /dev/shm/jack_mod-desktop_1000_0
Jack: JackEngine::ClientInternalOpen: name = freewheel
Jack: JackEngine::AllocateRefNum ref = 1
Jack: JackLinuxFutex::Allocate name = jack_sem.1000_mod-desktop_freewheel val = 0
Jack: JackEngine::NotifyAddClient: name = freewheel
Jack: JackDriver::ClientNotify ref = 1 driver = system name = freewheel notify = 0
Jack: JackDriver::ClientNotify ref = 0 driver = freewheel name = system notify = 0
Jack: JackConnectionManager::DirectConnect first: ref1 = 1 ref2 = 1
Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 1 ref2 = 1
Jack: JackDriver::SetupDriverSync driver sem in normal mode
Jack: JackGraphManager::SetBufferSize size = 256
Jack: JackAlsaDriver::Attach fBufferSize 256 fSampleRate 48000
Jack: JackEngine::PortRegister ref = 0 name = system:capture_1 type = 32 bit float mono audio flags = 22 buffer_size = 256
Jack: JackGraphManager::AllocatePortAux port_index = 1 name = system:capture_1 type = 32 bit float mono audio
Jack: JackConnectionManager::AddOutputPort ref = 0 port = 1
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackAlsaDriver::Attach fCapturePortList[i] 1
Jack: JackEngine::PortRegister ref = 0 name = system:capture_2 type = 32 bit float mono audio flags = 22 buffer_size = 256
Jack: JackGraphManager::AllocatePortAux port_index = 2 name = system:capture_2 type = 32 bit float mono audio
Jack: JackConnectionManager::AddOutputPort ref = 0 port = 2
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackAlsaDriver::Attach fCapturePortList[i] 2
Jack: JackEngine::PortRegister ref = 0 name = system:playback_1 type = 32 bit float mono audio flags = 21 buffer_size = 256
Jack: JackGraphManager::AllocatePortAux port_index = 3 name = system:playback_1 type = 32 bit float mono audio
Jack: JackConnectionManager::AddInputPort ref = 0 port = 3
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackAlsaDriver::Attach fPlaybackPortList[i] 3
Jack: JackEngine::PortRegister ref = 0 name = system:playback_2 type = 32 bit float mono audio flags = 21 buffer_size = 256
Jack: JackGraphManager::AllocatePortAux port_index = 4 name = system:playback_2 type = 32 bit float mono audio
Jack: JackConnectionManager::AddInputPort ref = 0 port = 4
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackEngine::ClientNotify: no callback for notification = 9
Jack: JackAlsaDriver::Attach fPlaybackPortList[i] 4
Jack: Clock source : system clock via clock_gettime
Jack: JackServer::Start
Jack: JackThreadedDriver::Start
Jack: JackPosixThread::StartImp : create non RT thread
Jack: JackPosixThread::ThreadHandler : start
Jack: JackThreadedDriver::Init real-time
Jack: JackPosixThread::AcquireRealTimeImp priority = 10
Jack: JackPosixThread::StartImp : create non RT thread
Jack: JackPosixThread::ThreadHandler : start
Jack: JackSocketServerChannel::ClientCreate socket
Jack: JackSocketServerChannel::BuildPoolTable size = 2
Jack: JackSocketServerChannel::BuildPoolTable fSocketTable i = 1 fd = 12
Jack: JackLoadableInternalClient::JackLoadableInternalClient path_to_so = /home/nixos/.local/share/chezmoi/tests/mod-desktop-0.0.12-linux-x86_64/mod-desktop/jack/alsa_midi.so
Jack: No jack_get_descriptor entry-point for alsa_midi
Jack: JackInternalClient::Open name = system_midi
Jack: Check protocol client = 9 server = 9
Jack: JackEngine::ClientInternalOpen: name = system_midi
Jack: JackEngine::AllocateRefNum ref = 2
Jack: JackLinuxFutex::Allocate name = jack_sem.1000_mod-desktop_system_midi val = 0
Jack: JackPosixProcessSync::TimedWait time out = 5000000
JackPosixProcessSync::LockedTimedWait error usec = 5000000 err = Connection timed out
Jack: JackPosixProcessSync::TimedWait finished delta = 5000096.0
Driver is not running
Cannot open client name = system_midi
Cannot load client system_midi from internal session file line 0. Ignoring the line!
Jack: JackLoadableInternalClient::JackLoadableInternalClient path_to_so = /home/nixos/.local/share/chezmoi/tests/mod-desktop-0.0.12-linux-x86_64/mod-desktop/jack/mod-midi-merger.so
Jack: No jack_get_descriptor entry-point for mod-midi-merger
Jack: JackInternalClient::Open name = mod-midi-merger
Jack: Check protocol client = 9 server = 9
Jack: JackEngine::ClientInternalOpen: name = mod-midi-merger
Jack: JackEngine::AllocateRefNum ref = 2
Jack: JackLinuxFutex::Allocate name = jack_sem.1000_mod-desktop_mod-midi-merger val = 0
Jack: JackPosixProcessSync::TimedWait time out = 5000000
ALSA: poll time out, polled for 8000271 usecs, Retrying with a recovery, retry cnt = 1
JackPosixProcessSync::LockedTimedWait error usec = 5000000 err = Connection timed out
Jack: JackPosixProcessSync::TimedWait finished delta = 5000083.0
Driver is not running
Cannot open client name = mod-midi-merger
I get somehow Jack: No jack_get_descriptor entry-point for mod-midi-merger
which I am not sure if this is a problem.
But it does not start. Anybody some ideas what might be wrong (I am on a preemptive linux kernel and rtcqs reports all fine):
╰─❯ rtcqs
rtcqs - version 0.6.2
Root User
=========
[ OK ] Not running as root.
Group Limits
============
[ OK ] User nixos is member of a group that has sufficient rtprio (99) and memlock (unlimited) limits set.
CPU Frequency Scaling
=====================
[ OK ] The scaling governor of all CPUs is set to performance.
Kernel Configuration
====================
[ OK ] Valid kernel configuration found.
High Resolution Timers
======================
[ OK ] High resolution timers are enabled.
Tickless Kernel
===============
[ OK ] System is using a tickless kernel.
Preempt RT
==========
[ OK ] Kernel 6.6.30-rt30 is using threaded IRQs.
Spectre/Meltdown Mitigations
============================
[ WARNING ] Kernel with Spectre/Meltdown mitigations found. This could have a negative impact on the performance of your system. See also https://wiki.linuxaudio.org/wiki/system_configuration#disabling_spectre_and_meltdown_mitigations
RT Priorities
=============
[ OK ] Realtime priorities can be set.
Swappiness
==========
[ OK ] Swappiness is set at 10.
Filesystems
===========
[ OK ] The following mounts can be used for audio purposes: /, /nix, /persist/etc, /var/log, /nix/store, /home, /persist, /swap
[ WARNING ] The following mounts should be avoided for audio purposes: /boot. See also https://wiki.linuxaudio.org/wiki/system_configuration#filesystems
IRQs
====
[ OK ] USB port xhci_hcd with IRQ 55 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 45 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 53 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 43 does not share its IRQ.
[ OK ] Soundcard snd_hda_intel:card0 with IRQ 114 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 51 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 41 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 58 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 48 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 56 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 46 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 54 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 44 does not share its IRQ.
[ OK ] Soundcard snd_hda_intel:card1 with IRQ 115 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 52 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 42 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 49 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 57 does not share its IRQ.
[ OK ] USB port xhci_hcd with IRQ 47 does not share its IRQ.
Power Management
================
[ OK ] Power management can be controlled from user space. This enables DAWs like Ardour and Reaper to set CPU DMA latency which could help prevent xruns.
Maybe anybody has an idea or already got that to work.
I am new to linux audio, but I am using the musnix flake input to make it into a premptive kernel etc.