Jackd i PulseAudio.

Jackd + Chromium albo Firefox = problem. Tak się jakoś porobiło w Linuksie, że PulseAudio stało się standardem w obsłudze audio i chyba nie ma w tym nic złego. Mimo tego, że Firefox w Archlinuksie  skompilowany jest z obsługą jackd, to wyjście jackd w FF nie działa. Na szczęście nie jestem z obozu ultra-tradycjonalistów i udało mi się szybko i prosto pożenić jackd z Pulseaudio. Nie zadziała to jednak z jack2 i ogólnie moje doświadczenia z jack2 w ostatnich latach są raczej traumatyczne, więc nie będę tego tematu rozwijał ;).

Potrzebny będzie pakiet pulseaudio-jack zawierający module-jack-sink.so i module-jack-source.so​.  Do /etc/pulse/default.pa trzeba dodać te moduły:

load-module module-jack-sink
load-module module-jack-source

Każdorazowo po odpaleniu jackd pulseaudio musi zostać przeładowane: pulseaudio -k, a potem: pactl set-default-sink jack_out. Dzięki temu pulseaudio przekieruje audio systemowe na jackd, co pozwala jak w moim przypadku bębnić w realtime do kawałków na Youtube. Pozytywne jest to, że po ubiciu jackd, PulseAudio przywraca odtwarzanie na defaultowej karcie dźwiękowej „w locie”.

Przykre, że jackd nie jest traktowane jak należy, a użytkowników w niszy audio na Linuksie chyba nie ma wielu i od przynajmniej dekady nic się w temacie nie robi, żeby im ułatwić życie.

Reklamy

Tahrpup 6 z kernelem RT.

Jestem zachwycony Puppim. Żadna inna dystrybucja nie wykorzystuje w ten sposób aufs (union type filesystem). Z pendrive działa to rewelacyjnie bo wszystko z systemu bazowego ładuje się do pamięci, a kolejne warstwy dogrywane są do obrazu aufs w pamięci z plików sfs. Dzięki temu pendrive się nie zużywa, a system jest bardzo szybki w odróżnieniu od typowej konfiguracji, w której zapisy i odczyty na pendrive powodują, że całość staje się niemal nieużywalna.Do pełni szczęścia potrzebowałem jedynie kernela RT ;). Pierwsze podejście – ze względu na dostępne wersje patchy RT – oryginalne źródła kernel_sources-3.14.11-tahr_PAE.sfs (już z łatkami z Puppiego) spaczowałem 3.14.12-rt8.patch. Et voila! A mój „Pro-audio” setup wygląda tak:

#!/bin/bash
cpufreq-set -g performance
echo 2048 > /sys/class/rtc/rtc0/max_user_freq
echo 2048 > /proc/sys/dev/hpet/max-user-freq
sysctl vm.swappiness=10
sysctl fs.inotify.max_user_watches=524288
#powyższe dwie linie raczej nie są potrzebne w puppim
setpci -v -d *:* latency_timer=b0
setpci -v -s 00:1b.0 latency_timer=ff #intel audio
jackd -R -P89 -dalsa -r44000 -p128 -n2 -D -Chw:0 -Phw:0 -Xseq&
qjackctl&
/etc/init.d/rtirq start
export WINE_RT=10; export WINE_SRV_RT=5
vsthost /some/where/VST.dll

Qjackctl używam ze względu na patchbay, który automatycznie łączy wcześniej zdefiniowane wejścia i wyjścia. Można więc e-drumsy podłączać i odłączać, albo np. zrobić suspend to ram i iść na siku 😉 gr

RT audio w głównej gałęzi Linuksa.

Byłem nieco zacofany w tym temacie. Okazało się, że od 2.6.39, czyli przynajmniej od roku, w stabilnym linuksie znalazła się opcja threadirqs, dzięki której do niskiej latencji audio nie trzeba już kompilować kernela z łatką RT. W praktyce, uruchomienie kernela z opcją threadirqs i dodanie do Archowego DAEMONS rtirq zapewnia 5ms opóźnienie  (pod wine/wineasio!), czyli dokładnie tyle co poprzednio po spaczowaniu łatką RT. Działa super. Jackd nie zgłasza xruns, nic się nie tnie, niezależnie od tego, co akurat dzieje się w tle.

Audio w linuksie RT.

Odkąd pojawił się Kubutek, a w zasadzie dość długo zanim się pojawił, niemal całkowicie zarzuciłem moje gitarowe brzdąkanie. Pewnie każdy rodzic czuje się wieczorem tak samo, człowiek jest tak zmęczony, że podpięcie gitary do komputera stanowi wyzwanie [1]. Od jakiegoś czasu mam drugiego laptoka (też Thinkpad R61 tylko w słabszej wersji z Celeronem), więc postanowiłem zrobić z niego czarne pudełko do którego na stałe podpięty jest interfejs audio (co ma też swoje plusy, bo można posłuchać jakiejś nowej płyty na słuchawkach) i gitara.

Problem z dźwiękiem jest w sumie ogólnosystemowy. Jak opóźnienia są zbyt duże, trzeszczy i piska, a czasem potrafi się przywiesić waląc szumem po uszach. Okazuje się znów, że konfiguracja:

  • procesor efektów w wine z wineasio
  • jackd -R
  • kernel RT z repozytorium debianowego Pengutronix

sprawdza się bardzo dobrze nawet na celeronie. Jackd działający z priorytetem RT i odpowiednio wysoki priorytet handlera IRQ załatwia sprawę. Jest to o tyle ciekawe, że taka konfiguracja w zupełności nie zaburza wygody używania systemu do innych celów i spokojnie można np. brzdąkać + podglądać/podsłuchiwać taba w tuxguitar i oglądać coś na YT.

Nie wiem na ile byłoby to wykonalne pod Windows, ale póki co, w kwestii audio pozostaję linuksiarzem, choć ostatnio jestem niebezpiecznie blisko porzucenia linuksa na domowym komputerze (po 12 latach przyjaźni z tym niedopracowanym systemem dla brodatych, niedomytych geeków… eh).

[1] Celowo piszę o podpięciu do komputera, bo głośne granie przy dziecku wieczorową porą odpada.

PS. Poeksperymentowałem wczoraj trochę z priorytetami, tak aby nie było żadnych opóźnień i nawet hardcorowa aktywność na komputerze nie generowała xruns. Najlepiej sprawdził się taki wariant:

  • handler przerwania usb na którym jest m-audio priorytet 99 (RT)
    (w /proc/interrupts można sobie po chwili działania dźwięku podglądnąć, na którym przerwaniu jest największy „ruch”)
  • jackd priorytet 99 (RT)
  • wine i program do symulacji efektów – wystarczy standardowy priorytet, bez zmian.

Torturowałem komputer nieskończonymi pętlami obciążającymi oba rdzenie w 100%, jednocześnie dało się spokojnie używać komputera  i przeglądarki – skutek – ani jednego xrun w jackd.

Powiem jedno: to jest na prawdę mocne. Czego by nie mówić o Alsie, linuksie jako całości, przy odrobinie chęci da się z linuksa zrobić profesjonalny system do zagadnień związanych z dźwiękiem.

Interfejs audio – Maudio Fast Track USB.

Jako że mam kiepską kartę dźwiękową w laptoku a chciałem sobie ponagrywać swoje marne granie, żeby się jeszcze bardziej zdołować jakie ono marne, kupiłem sobie interfejs usb:

FastTrack USB

Kwestię tego, że przysłali mi z pewnego sklepu uszkodzony, używany syf pomijam, interefejs został wymieniony na nowy i…

Spodziewałem się problemów w kwestii Linuksa. Powiem krótko: Linux w tej kwestii stoi mocno. Samo urządzenie, czy to w alsie, czy przez jackd jest obsługiwane prawidłowo. Nagrywałem z wyjścia liniowego atenuatora Webera i byłem mile zaskoczony jakością. Próbek nie zamieszczam, bo się wstydzę, kto chce i tak znajdzie…

W kwestiach zabawowych. Skompilowałem wineasio, odpaliłem Guitar Rig i co? I działa. Jack widzi wine jako klienta, można sobie podpinać np. ardour na wyjście Guitar rig i go nagrywać… a opóźnienie które podaje GR: ~5ms. Uruchomienie (z jakimś głupim błędem) trwa dość długo, ale jak już wstanie, to nie ma żadnego problemu, zero opóźnień.

Ableton Live działa pod wine, ale uruchomiłem tylko wyjście, wejścia z karty nie jestem w stanie zmusić do działania.

Ogólnie gdyby ktoś chciał nagrywać mikrofon (z góry zaznaczam że dynamiczny, bo nie ma zasilania fantomowego) czy gitarę, polecam. Naprawdę fajny produkt.