QjackCtl – Interfejs graficzny dla JACK | Część 2

Poprzednim razem omówiliśmy funkcje interfejsu QjackCtl dla JACK Audio Connection Kit i zobaczyliśmy jak łatwo można za jego pośrednictwem łączyć ze sobą elementy systemu dźwiękowego. Dzisiaj natomiast zagłębimy się w świat konfiguracji serwera JACK.

 

Po kliknięciu przycisku Setup po prawej stronie okna głównego QjackCtl otworzy się okienko, na którym będzie widoczna pierwsza zakładka ustawień (poniżej).

 

zaklatka ustawien servera dzwieku jack

 

Na samym szczycie znajduje się pole opisane jako Preset Name. Razem z klawiszami Save i Delete pozwala na zarządzanie plikami ustawień.

 

Trochę poniżej znajduje się sekcja Server, w której możemy wybrać ścieżkę dostępu do aplikacji serwera JACK (Server Path). U mnie domyślnie znajduje się tam „/usr/bin/jackd”, chociaż równie dobrze mogę wybrać samo „jackd”. W przypadku maszyn wieloprocesorowych można pokusić się o ustawienie „jackdmp”. Dalej możemy wybrać nazwę serwera (Name) oraz mechanizm obsługi dźwięku (Driver), z którym będzie współpracować. Domyślnie (przynajmniej od kernela 2.6) jest to ALSA. Możemy wybrać inny, używany w naszym systemie, np. OSS.

 

Ciekawostka 1

Wszystkie dane konfiguracyjne QjackCtl są zapisywane do pliku znajdującego się w lokalizacji: $HOME/.config/rncbc.org/QjackCtl.conf, więc najłatwiej się ich pozbyć usuwając ten plik.

 

Kolejna – najważniejsza – sekcja to Parameters. To tutaj skonfigurujemy gros zmiennych mających wpływ na funkcjonowanie naszego serwera dźwięku. Pogrupowane są w trzech kolumnach.

 

Kolumna lewa – kontrolki

  • Realtime – zaznaczenie tej kontrolki skutkuje pracą serwera JACK z dostępem do jądra w czasie rzeczywistym. Co nam to daje? Serwer dźwięku jest traktowany priorytetowo pośród innych, uruchomionych aplikacji, a co za tym idzie jest dla niego przeznaczana wystarczająca moc obliczeniowa procesora. Skutkuje to brakiem przycięć w trakcie nagrywania/odtwarzania i mniejszymi opóźnieniami.
  • No Memory Lock – czyli: „nie-blokuj-pamięci-pod-aplikacje”. Przy małej ilości RAMu zaznaczenie tej kontrolki może być zabójcze 😉 Czasami się zdarzy, że pamięć będzie współdzielona pomiędzy klientami serwera JACK, co może rodzić problemy. Raczej nie zaznaczamy.
  • Unlock Memory – czyli: „odblokuj-pamięć-bo-mam-jej-za-mało”. Po wystartowaniu syntezatorów, efektów czy co tam będziemy łączyć przez JACKa, pamięć przeznaczona na ich interfejsy graficzne (GUI) zostanie odblokowana i jeśli zajdzie taka potrzeba, to zostanie wykorzystana w inny sposób. Przydatne zwłaszcza przy małej ilości dostępnej pamięci.
  • Soft Mode – w tym trybie, jeśli pojawi się spora ilość błędów XRUN, to zostaną one zignorowane a serwer dźwięku nie zostanie automatycznie zatrzymany. O ile przy komponowaniu zaznaczenie tej kontrolki jeszcze przejdzie to przy nagrywaniu utworu na żywo jest raczej nieakceptowalne.
  • Monitor – zaznaczenie tej kontrolki powoduje dodanie wirtualnych wyjść do odsłuchu podczas startu serwera. Z racji tego, że sygnał zazwyczaj i tak trafia na wyjście karty dźwiękowej i słyszymy go na bieżąco, dla mnie przynajmniej, jest to mało interesująca kontrolka.
  • Force 16bit – wymusza szesnastobitowy tryb pracy. Zaleca się pracę w trybie 24- lub nawet 32-bitowym ze względu na szerszy zakres dynamiki dźwięku, więc tej kontrolki raczej nie zaznaczamy. Wyjątek może stanowić sytuacja gdy sprzęt ewidentnie sobie nie radzi z uciągnięciem tak wyśrubowanych parametrów.
  • H/W Monitor – to samo co przy kontrolce Monitor, z tym że dotyczy uaktywnienia dodatkowego wyjścia sprzętowego, dedykowanego do odsłuchu (jeśli jest).
  • H/W Meter – Nie jestem pewien jak to sformułować, ale domyślam się, że chodzi o sprzętowe urządzenia kontrolno-pomiarowe typu VU Metr czy inne podobne.
  • Ignore H/W – zaznaczenie wymusza zignorowanie wewnętrznych ustawień sprzętu i zastosowanie tych z kolumny obok.
  • Verbose messages – uaktywnienie tej kontrolki sprawi, że QjackCtl stanie się strasznie rozgadany. Wystarczy spojrzeć na okno komunikatów, aby zobaczyć wiele ponadstandardowych informacji. Przydatne przy diagnostyce.

Kolumna środkowa – parametry przetwarzania dźwięku

  • Priority – priorytet. Generalnie im wyżej tym mniejsza szansa, że nasz procesor zajmie się czymś innym niż obsługa JACKa. Maksymalna wartość to 89 (dla hardkorów).
  • Frames/Period – ilość ramek w cyklu przetwarzania, czyli liczba próbek na kanał, które zostaną zbuforowane podczas danego cyklu przetwarzania.
  • Sample Rate – częstotliwość próbkowania sygnału, czyli liczba próbek na sekundę pobranych z sygnału ciągłego w celu przetworzenia go na sygnał dyskretny. Mimo, iż pasmo częstotliwości słyszalnych przez człowieka zawiera się w granicach ok 20Hz – 20kHz, najlepiej ten parametr ustawić na 48 lub nawet 96kHz, jeśli tylko możliwości sprzętowe na to pozwalają. Ma to związek z częstotliwością Nyquista, stromością zbocza impulsu i paroma innymi, nudnymi rzeczami.
  • Periods/Buffer – ilość zbuforowanych cykli przetwarzania.
  • Word Length – rozdzielczość bitowa próbki dla niektórych sterowników.
  • Wait (usec) – czas oczekiwania pomiędzy procesami w mikrosekundach.
  • Channels – maksymalna liczba kanałów.
  • Port Maximum – maksymalna liczba portów jakimi jest w stanie zarządzać serwer dźwięku.
  • Timeout (msec) – okres oczekiwania w milisekundach zanim JACK stwierdzi, że „klient nie odpowiada” i uraczy nas stosownym okienkiem.

Kolumna prawa – wejścia, wyjścia i interfejs audio

  • Interface – nasza karta dźwiękowa.
  • Dither – wybór rodzaju ditheringu. Więcej o ditherze w artykule: Co to jest Dithering i Noise Shaping.
  • Audio – tryb pracy karty: Duplex czyli przechwytywanie/odtwarzanie, Capture Only – tylko przechwytywanie lub Playback Only – tylko odtwarzanie.
  • Input Device – urządzenie wejściowe.
  • Output Device – urządzenie wyjściowe.
  • Input Channels – liczba kanałów wejściowych.
  • Output Channels – liczba kanałów wyjściowych.

Nie jestem pewien do czego służą parametry: Input Latency i Output Latency. Jeśli chodzi o samą latencję, czyli opóźnienie wprowadzane przez serwer dźwięku to jej wartość jest wyświetlana w prawym dolnym rogu okna ustawień. Liczymy ją według schematu w poniższej ramce. Należy dbać o to aby była zawsze jak najniższa, ale nie możemy przy okazji doprowadzać do zniekształceń dźwięku, albo odnotowywać błędów xrun. Zjeżdżamy więc z parametrami w ramce (no może poza częstotliwością próbkowania – tę możemy zwiększyć) jak się da, ale bez przesady.

 

Ciekawostka 2

W przypadku JACK Audio Connection Kit latencję liczymy ze wzoru:

Latency = Frames/Period x Periods/Buffer / Sample Rate

 

Oprócz latencji w prawym dolnym rogu, pośrodku znajduje się pole, w którym wprowadzamy wartość opóźnienia pomiędzy startem klienta (wtyczki – pluginu) a startem serwera dźwięku. Po lewej stronie na tym samym poziomie mamy menu wyboru sterownika MIDI.

 

Na dzisiaj to już wszystko. Następnym razem zajmiemy się pozostałymi zakładkami w oknie ustawień.

 

3 odpowiedzi na: „QjackCtl – Interfejs graficzny dla JACK | Część 2”

  1. jerzyk napisał(a):

    Artykuł bardzo ciekawy.Pierwszy raz udało mi się Ciebie Vibender znaleźć w sieci.
    Bardzo mi się przyda bo od dłuższego czasu męczę się z jackiem i nie rozumiem jego działania .Ciekaw jestem innych artykułów.Pozdrawiam ,może ludziska mało korzystają bo większość to windziarze.A ja lubię Linuksa ,no i jacka .

  2. jerzyk napisał(a):

    Co tu komentować ?
    Artykuł potrzebny i więcej takich bo ciekawy.
    Dobra opcja możliwość wydruku .

    Mam taki problem z Jackiem w dystrybucji AV Linux – co 3 minuty przez około 18 sekund są zakłócenia .Zjawisko regularne.
    Co może być przyczyną ?

    • Vibender napisał(a):

      Przyznam, że nie mam pojęcia. Może gdybym usłyszał ich brzmienie, coś przyszłoby mi do głowy. Tak czy owak mam nadzieję, że zakłócenia już ustąpiły.

Dodaj komentarz

Do formatowania tekstu możesz użyć następujących tagów oraz atrybutów HTML-a:

  • <strong> wytłuszczenie </strong>
  • <em> emfaza </em>
  • <a href="" title=""> hiperłącze </a>
  • <abbr title=""> skrótowiec </abbr>
  • <code> kod źródłowy </code>