Nachdem ich QjackCtrl und Arour eingestellt habe, kann ich problemlos aufzeichnen, aber das Überspringen von XRUN-Rückrufen ist ärgerlich.
Dies ist meine QjackCtrl-Konfiguration:
In den Protokollen sehe ich:
18:37:22.041 XRUN callback (97).
18:37:22.793 XRUN callback (42 skipped).
18:37:24.794 XRUN callback (111 skipped).
18:37:26.795 XRUN callback (111 skipped).
18:37:28.796 XRUN callback (111 skipped).
18:37:30.798 XRUN callback (75 skipped).
18:38:45.359 XRUN callback (552).
Mon Oct 20 18:38:45 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Running
Mon Oct 20 18:38:45 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:38:45 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:38:46 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:38:46 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:38:46 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:38:46 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
18:38:46.833 XRUN callback (3 skipped).
Mon Oct 20 18:38:46 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:38:46 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:38:46 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:38:46 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Triggered
Mon Oct 20 18:38:46 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
18:38:48.834 XRUN callback (23 skipped).
18:40:28.031 XRUN callback (580).
Mon Oct 20 18:40:28 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Running
Mon Oct 20 18:40:28 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
18:40:28.884 XRUN callback (1 skipped).
Mon Oct 20 18:40:28 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:40:28 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Running
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Triggered
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Triggered
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client PulseAudio JACK Source finished after current callback
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Running
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Sink was not finished, state = Running
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = PulseAudio JACK Source was not finished, state = Triggered
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Mon Oct 20 18:40:29 2014: ERROR: JackEngine::XRun: client = ardour was not finished, state = Triggered
Mon Oct 20 18:40:29 2014: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
18:40:30.885 XRUN callback (32 skipped).
18:40:32.887 XRUN callback (89 skipped).
Was sind XRUN-Callback-Skip? Wie kann ich diese Probleme lösen?
Ausführen von Ubuntu 14.04 mit einem Kernel mit geringer Latenz:
$ uname -a
Linux laptop 3.13.0-38-lowlatency #65-Ubuntu SMP PREEMPT Thu Oct 9 12:04:28 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Antwort1
Bin wieder darauf gestoßen und habe endlich die richtige Antwort darauf, warum Xruns auftreten.
Von der JACKS-Seite:
Geben Sie die Anzahl der Frames zwischen den JACK-Aufrufen von process() an. [b]Dieser Wert muss eine Zweierpotenz sein[/b], der Standardwert ist 1024. Wenn Sie eine geringe Latenz benötigen, setzen Sie -p so niedrig wie möglich, ohne dass Xruns auftreten. Eine
größere Periodengröße führt zu einer höheren Latenz, macht Xruns jedoch weniger wahrscheinlich. Die JACK-Erfassungslatenz in Sekunden ist --period geteilt durch --rate
Sie müssen Ihre einstellen sample rate
und frames/period
korrigieren periods/buffer
. Unten ist optimal fürUSB-Geräte.
(Frames [or buffer] / Sample Rate ) * Periods = Latency in ms
( 16 / 48000 ) * 3 = 1
( 32 / 48000 ) * 3 = 2
( 64 / 48000 ) * 3 = 4
( 128 / 48000 ) * 3 = 8
( 256 / 48000 ) * 3 = 16
( 512 / 48000 ) * 3 = 32
( 1024 / 48000 ) * 3 = 64
( 2048 / 48000 ) * 3 = 128
( 32 / 96000 ) * 3 = 1
( 64 / 96000 ) * 3 = 2
( 128 / 96000 ) * 3 = 4
( 256 / 96000 ) * 3 = 8
( 512 / 96000 ) * 3 = 16
( 1024 / 96000 ) * 3 = 32
( 2048 / 96000 ) * 3 = 64
( 64 / 192000 ) * 3 = 1
( 128 / 192000 ) * 3 = 2
( 256 / 192000 ) * 3 = 4
( 512 / 192000 ) * 3 = 8
( 1024 / 192000 ) * 3 = 16
( 2048 / 192000 ) * 3 = 32
Ich habe die optimalsten genommen, sie sind alle hier: http://wiki.linuxaudio.org/wiki/list_of_jack_frame_period_settings_ideal_for_usb_interface