Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Przejdę do rzeczy, chciałbym aby w odtwarzaczu MOC zaczęła działać mi kontrola dźwięku. W tym momencie, gdy włączę go, widzę nazwę PCM (chyba) zgodnie z konfiguracją, lecz nie mogę ani ściszać, ani robić głośniej. Zgodnie z wiki ALSY zrobiłem plik .asound i zgodnie z jego konfiguracją umieściłem odpowiednie wpisy w .moc/config, ale to również nie doprowadziło mnie do szczęśliwego końca. Przedstawię wyniki poleceń, żeby ułatwić diagnozę oraz zawartość plików konfiguracyjnych:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CA0106 [CA0106], device 0: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 1: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 2: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 3: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
aplay -L
default:CARD=CA0106
CA0106, CA0106
Default Audio Device
front:CARD=CA0106,DEV=0
CA0106, CA0106
Front speakers
rear:CARD=CA0106,DEV=0
CA0106, CA0106
Rear speakers
center_lfe:CARD=CA0106,DEV=0
CA0106, CA0106
Center and Subwoofer speakers
side:CARD=CA0106,DEV=0
CA0106, CA0106
Side speakers
surround40:CARD=CA0106,DEV=0
CA0106, CA0106
4.0 Surround output to Front and Rear speakers
surround41:CARD=CA0106,DEV=0
CA0106, CA0106
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=CA0106,DEV=0
CA0106, CA0106
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=CA0106,DEV=0
CA0106, CA0106
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=CA0106,DEV=0
CA0106, CA0106
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=CA0106,DEV=0
CA0106, CA0106
IEC958 (S/PDIF) Digital Audio Output
Zawartość .asound
pcm.!default {
type hw
card 0
device 1
}
pcm.!default {
type hw
card 0
device 1
}
pcm.blaser {
type hw
card CA0106
}
ctl.blaster {
type hw
card CA0106
}
pcm.blaster1 {
type hw
card 0
device 1
}
ctl.blaster1 {
type hw
card 0
device 1
}
Zawartość .moc/config ten fragment, odpowiedzialny za konfigurację dźwięku
AlsaMixer = Analog Front
# Second ALSA mixer device.
#AlsaMixer2 = Master
# ALSA output device.
AlsaDevice = blaster
Błagam o pomoc, bo wertuję materiały w internecie od paru godzin, oczy wychodzą mi z orbit, a do niczego konkretnego nie doszedłem ;/
Edit: próbowałem w AlsaMixer wpisywać inne wartości - blaster1, default lub blaster- ale bez rezultatu, w AlsaDevice podobnie.
Edit2: dzwięki na kompie normalnie działają, nie mam z nimi problemu, ale chciałbym żeby w MOC możnabyło ściszać i robić głośniej, i żeby nie ściszało mi głównym suwakiem, który wycisza wszystko w całym kompie, tylko w jakimś lokalnym, o ile się wyraziłem jasno...
Ostatnio edytowany przez garp (2010-11-10 22:51:53)
Offline
Jeżeli chcesz mieć niezależną kontrolę głośności to zwykle w playerze powinna być opcja "software volume control" lub coś w ten deseń. Jeżeli nie ma, ALSA oferuje plugin "Softvol", myślę że powinieneś do swojego pliku ~/.asoundrc (lub /etc/asound.conf jeżeli z niego korzystasz) wpisać takie coś:
pcm.newdevice { type softvol slave.pcm "default" control.name "Softmaster" control.card 0 }
zaś w playerze (zapewne ustawienie Softmaster w .moc/config zamiast tego co masz teraz pomorze) ustawić urządzenie wyjściowe na "Softmaster" - po pierwszym włączeniu playera w alsamixerze powinna dojść kontrolka "Softmaster" za pomocą której będziesz mógł kontrolować dźwięk tej aplikacji.
Te wpisy:
pcm.!default { type hw card 0 device 1 } pcm.!default { type hw card 0 device 1 } pcm.blaser { type hw card CA0106 } ctl.blaster { type hw card CA0106 } pcm.blaster1 { type hw card 0 device 1 } ctl.blaster1 { type hw card 0 device 1 }
Są raczej do wywalenia - zapewne rozwalisz sobie za ich pomocą miksowanie software'owe w systemie, a Twoja karta hardware-mixingu nie obsługuje.
Tak na koniec - oczywiście z PulseAudio nie korzystasz??
Offline
Do moca użyj servera jack i bedzie działać niezależnie od globalnej głośności.
Offline
Wkleiłem tylko to
pcm.newdevice { type softvol slave.pcm "default" control.name "Softmaster" control.card 0 }
i faktycznie w alsamixerze pojawiła się nowa kontrolka, co mnie ucieszyło. W configu MOC nie wiem za bardzo jak ustawić - AlsaMixer ustawiam na Softmaster, jak napisałeś, a AlsaDevice ma być hw:0 czy newdevice jak nazwa definicji w .asoundrc? W MOC widzę "Softmixer" i mogę, w teori, robić głośniej i ciszej, ale w praktyce nic się nie zmienia.
Edit: @ilin zależałoby mi, żeby zrobić bez żadnych dodatków. Na laptopie mam Master i PCM (to są mixery?) i w ustawieniach MOC wybałem PCM, i działa dobrze. Tutaj niestety nawet Master już mi nie śmiga.
Ostatnio edytowany przez garp (2010-11-09 22:40:42)
Offline
Wyjaśnijmy parę kwestii:
1.W pliku .asoundrc ma być TYLKO ten wpis który podałem, wszystko inne jest zbędne.
2.Wszelkie wpisy zastępujące urządzenie "default" które porobiłeś wcześniej tylko mącą - standardowo ALSA działa tak:
Aplikacja->Alsa(wejście "default")->DMIX(mixer software'owy)->Urządzenie(najczęściej hw:0)
Kiedy nadpisujesz "default" (wpisy pcm.!default{}) i każesz mu słać strumień bezpośrednio do hw:0 tracisz mikser software'owy - a jako że 99% nowych kart dźwiękowych nie posiada miksera sprzętowego, ograniczy cię to do jednej aplikacji korzystającej z karty na raz (karty oparte o CAO106 w tym najtańsze X-Fi (te droższe chyba zresztą też nie - Creative umie wciskać ludziom kit więc biorą "super" karty ;] ), Audigy SE czy Live! 24bit 7.1 - też takiego nie posiadają). Tak więc w pliku .asoundrc masz mieć TYLKO wpis który podałem i nic więcej.
Tyle w ramach wyjaśniania do wcześniejszych wpisów które miałeś ;]
Teraz tak, jako że nie mam tego playera i go na oczy nigdy nie widziałem to nie wiem jak to wygląda, ale stawiam że należny w pliku .mon/config zmienić konfig na coś takiego:
AlsaMixer = Softmaster # ALSA output device. AlsaDevice = Softmaster
Jeżeli program ten działa tak jak podejrzewam to dźwięk będzie szedł do Softmastera którym będzie się dało kontrolować głośność, a dzięki wpisowi "AlsaMixer=Softmaster" player podepnie się do tej kontrolki i będzie ją dostosowywał przy zmianie głośności automatycznie - spróbuj, zobaczymy czy zadziała.
Ostatnio edytowany przez Huk (2010-11-10 01:40:07)
Offline
Przy wpisaniu
AlsaDevice = Softmaster
dostaję taki komunikat
ALSA lib control.c:882:(snd_ctl_open_noupdate) Invalid CTL Softmaster
ALSA lib pcm.c:2190:(snd_pcm_open_noupdate) Unknown PCM Softmaster
FATAL_ERROR: No valid sound driver
Gdy ustawię
AlsaDevice = default
, mogę kontrolować poziom dźwięku, ale faktycznie głośność się nie zmienia - tylko procenty skaczą.
Offline
A spróbuj do tego co podałem dopisać jeszcze:
ctl.Softmaster { type hw card 0 }
lub jak nie zadziałą to spróbuj tak:
ctl.newdevice { type hw card 0 }
I jeszcze raz ustawić AlsaDevice na Softmaster
Ostatnio edytowany przez Huk (2010-11-10 12:01:28)
Offline
Niestety, zwraca ten sam komunikat. Może po edycji pliku .asoundrc trzeba coś jeszcze zrobić, żeby te ustawienia zadziałały? Dziwne jest również to, że po ustawieniu AlsaDevice na "default" i AlsaMixer na "Master", nie mogę w dalszym ciągu kontrolować dźwięku... nie wiem czym to jest spowodowane.
Offline
Tak dla testu
Zainstaluj jacka
aptitude install jackd
Potem w jednym terminalu klepnij
jackd -dalsa -dhw:0 -r48000 -p256 -n4 -P
W drugim zaś uruchom moca
mocp -R jack
Zobacz czy będzie Ci odpowiadać.
Offline
@Ilin
W ten sposób działa wyciszanie softmixerem, ale już w ogóle nie działa dźwięk w Iceweasel'u, więc nie przejdzie.
Offline
A u mnie działa.
Trzeba sobie plugin w ~/.asoundrc zrobić który przekierowuje alsę na jacka.
Ale twoja wola jak to zrobisz.
Offline
Ok zainstalowałem to coś i taki config powinieneś ustawić żeby działał:
Po pierwsze: plik .asoundrc ma wyglądać tak:
pcm.plugxxx{ type plug slave.pcm "newdevice" } ctl.plugxxx{ type hw card 0 } pcm.newdevice { type softvol slave.pcm "default" control.name "Softmaster" control.card 0 }
Następnie w moc/config takie coś:
AlsaMixer = Softmaster # ALSA output device. AlsaDevice = plugxxx
Następnie restart mocp (ja to zrobiłem poprzez "sudo killall -v -s 9 mocp" - czyli zabiłęm mocp i włączyłem ponownie), i wszystko powinno działać ;] (przynajmniej u mnie działa).
Jeżeli przy pierwszym włączeniu kontrolka Softmaster będzie miała wartość 0% (w moc'u) to zabij go raz jeszcze i wszystko powinno być ok.
Jak by coś mogę wytłumaczyć czemu tak ma być ustawione, a nie inaczej.
@ilin:
Jack, niestety nie zawsze jest rozwiązaniem - spora ilość aplikacji nadal ma z nim problemy (znaczy się z pluginem Jack dla ALSY), parę dni temu coś drgnęło na liście mailingowej ALSY odnośnie tego pluginu, więc może sytuacja się poprawi - fajnie by było mieć jacka zamiast np PA.
Ostatnio edytowany przez Huk (2010-11-10 20:52:02)
Offline
ALSA lib dlmisc.c:236:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/alsa-lib/libasound_module_pcm_plyg.so FATAL_ERROR: No valid sound driver
Ciągle pod górę. Ale czemu nie działa kontrola głośności przy domyślnych ustawieniach, gdy na laptopie działa bezproblemowo?
Offline
Czasem nie walnąłeś się przy wpisywaniu i nie wpisałeś "plyg" zamiast "plug" w:
pcm.plugxxx{
type plug
slave.pcm "newdevice"
}
Bo na taki błąd mi to wygląda.
A czemu nie działa standardowo nie wiem - może inna wersja ALSY/Jajka/bibliotek/playera - take your pick.
sprawdź czy wpisałeś poprawnie.
Offline
Ale czemu nie działa kontrola głośności przy domyślnych ustawieniach, gdy na laptopie działa bezproblemowo?
Bo to zależy od karty dźwiękowej.
Metoda Huk'a działa.
Sprawdzałem.
Musiałeś jakąs literówkę strzelić najprawdopodobniej jak wyżej podano.
U mnie na ca0106 nawet z kilku źródeł dxwięk idzie.
Sprawdzałem na moc i mplayerze równocześnie.
Offline
Działa, faktycznie literówka :) Wielkie dzięki.
Pisałeś HUK, że możesz wyjaśnić czemu takie ustawienia a nie inne, masz może jakiś artykuł opisujący działanie tego wszystkiego? Bo na wiki ALSY są jakieś, ale niewiele mi to dało do myślenia.
Offline
Jeden artykuł raczej nie, samemu naczytałem się "trochę", jak pisałem swój plugin do kontroli głośności per aplikacja. Musiałbyś poprzeglądać oficjalną stronę ALSY jak i "unofficial ALSA wiki" - niestety na tych stronkach panuje nieporządek i nie zawsze łatwo znaleźć chciane info.
Generalnie plugin "plug" jest to taka fajna wtyczka która dokonuje automatycznie konwersji strumienia na to czego chce aplikacja lub dalsza wtyczka - jeżeli aplikacja chce np wysłać dźwięk o częstotliwości 32000 Hz (32 KHz) do dmixer'a który ma ustawiony sampling na 44100 Hz czy też 48000 Hz to mogą być jajka bo sampling jest niezgodny - "plug" dokona za nas niejawnej konwersji tak aby wszystko działało (przynajmniej tak to rozumiem po naczytaniu się dziesiątek wpisów odnośnie ALSY).
Zaś wpis ctl.plugxxx, mówi aplikacji że plugxxx jest prawdziwym urządzeniem, a nie wyjściem wirtualnym - wg tego co czytałem, nie powinno to być wymagane, ale jako że w API ALSY panuje niezły burdel, a aplikacje uzyskują dostęp do karty na różne sposoby - wymagana często jest.
Wpis odnośnie softvol znasz - nie działał, bo z tego co widzę nie można dla niego symulować prawdziwego urządzenia (czytaj - wpis ctl.costam - nic nie daje), stąd potrzeba była pluginu pośredniego.
Tak więc teraz to idzie tak:
moc->plugxxx(który jest widziany jako prawdziwe urządzenie, przez co nie ma błędu który był wcześniej)->Softmaster(za pomocą którego idzie realna kontrola głośności)->default(które standardowo przekierowuje na dmix)->dmix(który miksuje programowo kanały)->hw:0(Twoja karta - tutaj trafia już zmiksowany strumień ze wszystkimi dźwiękami)
Tak dodam od siebie - co by o ALSIE nie mówić, to architektura wtyczek jest zrobiona bardzo sprawnie - nie ma chyba drugiego takie API, które dawało by taką łatwość manipulowania przez usera tym co się dzieje z dźwiękiem i to bez konieczności przeładowywania systemu dźwiękowego ;]
Offline