niedziela, 4 listopada 2012

Wiosłem w linuxa 2, czyli z jackiem wgłąb part 1.

Dzisiaj będzie o łączeniu oprogramowania audio pod linuxem. Na początek nadmienię, że wszystkie aplikacje, które opisałem w poprzedniej notce i mam zamiar opisać dzisiaj powinny być dostępne bez większych kombinacji w repozytoriach każdej sensownej dystrybucji. Oczywiście można również zainstalować którąś z dystrybucji dedykowanych do multimediów jak np Musix GNU+Linux lub Ubuntu Studio. Dodatkowo warto napisać, ze użytkownicy standardowego (K, L, X, Ed) Ubuntu mogą zaciągnąć wszystkie aplikacje audio wchodzące w skład Ubuntu Studio korzystając ze swojego menedżera pakietów (np. muon, lub klasycznie apt-get) instalując metapakiety rozpoczynające się od ubuntustudio:
$sudo apt-get install ubuntustudio-*
Oczywiście zaciągnie to absolutnie wszystkie pakiety wchodzące w skład dystrybucji, co zasadniczo nie musi być potrzebne (ale jak ktoś ma za dużo miejsca na dysku, to czemu nie?).

Dodatkowo do tej notki zakładam, że czytelnicy nie mają problemów z podstawową konfiguracją nagrywania z wejścia mikrofonowego lub line-in swojej karty dźwiękowej (jeśli skype działa poprawnie, to właściwie nic więcej nam nie potrzeba).

Do dzisiejszej notki oprócz opisanych poprzednio guitarixa i rakarracka, potrzebujemy jeszcze co najmniej dwóch innych programów. Pierwszy z nich posłuży nam do nagrania tego, co wyjdzie spod naszych biegających po strunach palców. Programów nagrywających w  świecie linuxa jest pełno, ale ja chcę zwrócić uwagę czytelników na jeden z nich - ardour. Jest to ni mniej ni więcej tylko profesjonalny, wielościeżkowy edytor dźwięku, z mnóstwem mniej lub bardziej przydatnych opcji. Ogólnie wygląda tak:



Mamy więc trzy różne aplikacje. Gdybyśmy je teraz uruchomili, niewiele by nam z tego wyszło, bo potrzebujemy jeszcze możliwości przekazania dźwięku z jednej aplikacji do drugiej. Innymi słowy potrzebujemy komputerowego analogu kabli, wtyczek i gniazdek. W linuxowym świecie aplikacji proaudio odpowiednikiem takiego okablowania jest JACK, czyli Jack Audio Connection Kit. JACK jest daemonem, który udostępni nam mechanizmy umożliwiające połączenie wszystkich naszych aplikacji w jeden zespół oraz ich synchronizację (ważne przy stosowaniu np sekwencerów). JACK jak na daemona przystało jest zasadniczo odpalany i konfigurowany "z palca", jednak z racji, że wymagałoby to wkucia odpowiedniej ilości poleceń i ich składni, pójdziemy na skróty i skorzystamy z jednej z graficznych aplikacji do sterowania tymże. Takich programów jest kilka, osobiście na początek proponuję QJackCtl, który jest mały i łatwy w użyciu.

Tak więc jadziem z koksem.

Zacząć pracę należy od odpalenia właśnie QJackCtl:

$qjackctl
Pojawi nam się główne okno programu, wyglądające tak:



Teraz możemy skonfigurować jacka. Teoretycznie standardowa konfiguracja powinna zadziałać, ale jak to z ustawieniami uniwersalnymi, nie musi. Co więcej, prawidłowa konfiguracja jacka nie zawsze jest oczywista, i może wymagać kilku podejść (i włączonych kilku stron w przeglądarce). Klikamy więc guziczek "Setup" i robimy przegląd opcji.



Na początek sprawdzamy "driver". W większości dystrybucji będzie to "alsa", ale do dyspozycji mamy również kilka innych sterowników jak chociażby oss czy portaudio. Kolejna rzecz, to "Interface". Sprawdzenie tej opcji jest konieczne w sytuacji, kiedy nasz komputer dysponuje kilkoma kartami dźwiękowymi (np. w mojej konfiguracji mam do dyspozycji standardową zintegrowaną kartę na mobo, do tego wyjście dźwięku hdmi z karty graficznej oraz mikorofon z podłączonego przez USB webcama). Sprawdzić to warto, ponieważ nie skonfigurowany odpowiednio linux może dynamicznie zmieniać przypisania kart dźwiękowych (np. karta dźwiękowa może być jako hw:0, innym razem jako hw:1 i jeśli wybór będzie niewłaściwy, jack się nie uruchomi). Aby zobaczyć co możemy wybrać, klikamy guzik ze strzałeczką po prawej stronie i z listy wybieramy właściwą kartę.

"Input device" i "Output device" to dwie opcje, które możemy stosować zamiennie z "interface" (jeśli skorzystamy z nich, pole "Interface" się wyłączy). Ustawiamy je dokładnie tak samo jak "interface".

Na koniec powinniśmy jeszcze ustawić odpowiednio opcje "Frames/period", "Sample rate" i "Periods/buffer" - od tych trzech opcji zależy opóźnienie jakie będzie wprowadzał jack podczas przetwarzania dźwięku. Opóźnienie przy aktualnej konfiguracji jest widoczne w okienku "Latency" w prawym dolnym rogu. Sample rate powinno być zgodne z możliwościami naszej karty, natomiast w przypadku pozostałych dwóch opcji  najlepiej poeksperymentować kierując się jako wskazówką opóźnieniem (które powinno być najlepiej mniejsze niż 5ms) i faktem, że przy złej konfiguracji jack albo się nie uruchomi, albo będzie działał niestabilnie.

Klikamy "ok" i próbujemy odpalić jacka wciskając przycisk "start". Jeśli wszystko ustawiliśmy właściwie, jack wystartuje i w głównym oknie pojawi się komunikat "started".



Teraz możemy przystąpić do łączenia. Klikamy przycisk "Connect" i pojawia się okno, w którym będziemy mogli bawić się przełączaniem różnych wejść i wyjść. Lewa strona to porty wyjściowe. Tu aplikacje umieszczą porty, z których można bedzie czytać dane. Prawa strona to wejścia, czyli miejsca do których będzie można podłączać dane wysyłane z wyjść (zamotałem trochę, ale zaraz się rozjaśni).



Na starcie mamy do dyspozycji tylko dwa wpisy system. Nie wnikając w szczegóły można w skrócie (bardzo skrótowym skrócie) powiedzieć, że po lewej stronie mamy wyjścia z naszych gniazdek wejściowych karty dźwiękowej, a z prawej strony wejścia do głośników (głupie porównanie, ale lepszego nie potrafiłem wymyślić). Możemy teraz podłączyć wyjście naszego wejścia, z wejściem naszego wyjścia i posłuchać sobie mikrofonu lub gitary na głośnikach. Żeby to zrobić, łapiemy za pozycję "capture_1" i przeciągamy ją na pozycję "Playback_1". To samo robimy z opcją nr 2. Jeśli zrobiliśmy to dobrze, między pozycjami pojawią się linie oznaczające połączenie. Oczywiście nie musimy łączyć tak po prostu, ale możemy łączyć capture_1 do playback_2 i na odwrót, dzięki czemu zamienimy miejscami kanały stereo.



Teraz czas na aplikacje. Proponuję odłączyć od siebie capture i playback zaznaczając pola "system" z lewej i prawej strony i klikając przycisk "disconnect" (można też zrobić to pojedyńczo).

Uruchamiamy teraz na przykład guitarixa. Część aplikacji audio (w tym guitarix) jest tak skonfigurowana, że automatycznie utworzy odpowiednie połączenia za pomocą jacka. Po uruchomieniu programu możemy zobaczyć to w oknie "connections":



Jak widać, guitarix utworzył dwa klienty:  gx_head_amp oraz gx_head_fx i podłączył odpowiednio wejście karty dźwiękowej (lewa strona) do wejścia gx_head_amp (prawa strona), wyjście gx_head_amp do wejścia gx_head_fx, a wyjście gx_head_fx do wyjścia karty dźwiękowej. Teraz każdy dźwięk z mikrofonu lub gitary będzie przechodził przez guitarix, zanim trafi do głośników. Można już zaczynać grać korzystając z możliwości wirtualnego pieca.



Teraz wyłączmy guitarixa i włączmy rakarrack. Jak widać efekt jest podobny. Po wciśnięciu w oknie rakarracka przycisku "on" możemy już sobie poplumkać bawiąc się opcjami naszego multiefektu.



Ponieważ robi się z tego tl;dr ciąg dalszy nastąpi...

3 komentarze:

  1. Mam problem, Po podłączeniy keyboardu do pc, pc do głośników, nie Głośniki nie dają dźwięku. fizycznie wszystko jest sprawne. Prosze o pilną odpowiedź>

    OdpowiedzUsuń
  2. Moim zdaniem bardzo fajnie opisany problem. Pozdrawiam serdecznie.

    OdpowiedzUsuń
  3. W sumie dla mnie to wszystko jeszcze jest nowe, ale jestem również zdania, że na pewno rozważę instalację Linuxa w firmie. Bardzo ciekawie na stronie https://ceo.com.pl/red-hat-w-firmie-35173 napisano właśnie jak ta dystrybucja systemu sprawdza się w firmach.

    OdpowiedzUsuń