wybór karty dźwiękowej w zaleźności od obecności domyślnej

Tylko tematy nie mieszczące się powyżej.
Awatar użytkownika
pogrom
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 15 lip 2008, 15:56
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: pogrom »

Mam Sound blastera Live external, którego po ciężkich bojach z ALSA i plikami konfiguracyjnymi udało mi się wykorzystać na tyle, że dźwięk leci ze wszystkich 5ciu głośników tak jak powinno być.

Kartę USB mam ustawioną jako domyślną, a tą internal jako drugą. Idealnym rozwiązaniem byłoby, gdyby Ubuntu (tak jak to robi, i tu przykład z rękawa - windows) wykrywał sobie czy karta USB jest podłączona czy nie i jakby nie była, puszczał dźwięk na głośniki systemowe lub słuchawki gdy te są podłączone.

Tymczasem niestety przy odłączonej karcie USB dźwięku z zewnętrznych głośników ani słuchawek nie ma w ogóle. Mimo, że niby w opcjach wybieram jako urządzenia audio kartę zintegrowaną.

Można temu jakoś zaradzić? Już mogę okrężną drogą jakoś się pomęczyć te parę minut z każdym razem w tę i z powrotem byle od czasu do czasu móc skorzystać z dźwięku z arty zintegrowanej.
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8656
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: mario_7 »

Mam pewien pomysł, ale wcześniej podaj mi to (gdy obie karty są podłączone):

Kod: Zaznacz cały

cat /proc/asound/modules
Awatar użytkownika
pogrom
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 15 lip 2008, 15:56
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: pogrom »

Kod: Zaznacz cały

 0 snd_usb_audio
 1 snd_hda_intel
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8656
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: mario_7 »

ustawiałeś w systemie kolejność kart dźwiękowych?
Awatar użytkownika
pogrom
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 15 lip 2008, 15:56
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: pogrom »

Hmm chyba tak. Ustawiałem tą USB jako domyślną (wcześniej była jako druga) podczas batalii o jej uruchomienie w pełnym stopniu czyt. żeby wszystkie głośniki działały.
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8656
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: mario_7 »

Pokaż zawartość pliku /etc/modprobe.d/alsa-base
Awatar użytkownika
pogrom
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 15 lip 2008, 15:56
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: pogrom »

Kod: Zaznacz cały

# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd && { /sbin/modprobe --quiet snd-ioctl32 ; : ; }
install snd-pcm /sbin/modprobe --ignore-install snd-pcm && { /sbin/modprobe --quiet snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer && { /sbin/modprobe --quiet snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq && { /sbin/modprobe --quiet snd-seq-midi ; /sbin/modprobe --quiet snd-seq-oss ; : ; }
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi && { /sbin/modprobe --quiet snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe -Qb saa7134-alsa ; : ; }

# Load snd-seq for devices that don't have hardware midi;
#   Ubuntu #26283, #43682, #56005; works around Ubuntu #34831 for
#   non-Creative Labs PCI hardware
install snd /sbin/modprobe --ignore-install snd && { /sbin/modprobe -Qb snd-seq ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=0
options snd-hda-intel model=3stack index=1
options snd-usb-usx2y index=-2
options snd-usb-caiaq index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8656
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: mario_7 »

w takim razie mój pomysł jest następujący:
(zakładam, że nie masz jeszcze pliku .asoundrc, jeśli masz, to potrzebna będzie modyfikacja)
Stwórz plik .asoundrc w katalogu domowym i wklej do niego to:

Kod: Zaznacz cały

pcm.!default {
    type hw
    card 1
}
ctl.!default {
    type hw           
    card 1
}
i zapisz plik.
Działa teraz karta zintegrowana (po zrestartowaniu środowiska graficznego - czyli ponownym zalogowaniu się do systemu)?

Teraz stwórz plik o nazwie dźwięk.run i wklej do niego to:

Kod: Zaznacz cały

if [ -f ~/.asoundrc ]
then
  mv ~/.asoundrc ~/.asoundrc_usb
else
  mv ~/.asoundrc_usb ~/.asoundrc
fi
I nadaj temu plikowi prawa wykonywania.

Gdy będziesz chciał zmienić domyślną kartę dźwiękową wystarczy, że uruchomisz skrypt i zrestartujesz środowisko graficzne.

Jest to metoda na około i przy takiej konfiguracji w alsa-base raczej jedyna. Można by jeszcze tylko dodać skrypt, który sprawdzałby przy starcie systemu, czy karta USB jest i wtedy automatycznie dobierałby ustawienia.

Zamiast opisanego przeze mnie wyżej rozwiązania mógłbyś też spróbować usunąć parametry index dla modułów snd-usb-audio i sna-hda-intel z pliku alsa-base. Prawdopodobnie system wtedy zachowywałby się tak, jak chcesz.
W zasadzie problemem jest ustawianie wszystkiego, gdy podłączysz kartę w trakcie działania systemu (nie miałem okazji sprawdzać co się wtedy dzieje). Jeśli założyć, że karta jest wkładana przed uruchomieniem komputera, to rozwiązanie staje się prostsze.

Napisz co o tym sądzisz i czy jest sens kontynuowania tego sposobu, czy może coś innego potrzebujesz.
Awatar użytkownika
pogrom
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 15 lip 2008, 15:56
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: pogrom »

Dzięki, pobawię się tym i dam znać. W międzyczasie znalazłem coś takiego:
Scenario: you have two sound cards. You want to at the click of an icon switch from one sound card to the other. Here’s an example of how to set it up.

Create definitions for your cards in /etc/asound.conf:

Kod: Zaznacz cały

pcm.usb {
        type hw
        card 1
        device 0
        channels 2
}
pcm.desktop {
        type hw
        card 0
        device 0
        channels 2
}
pcm.!default {
    type plug
    slave.pcm "desktop"
}
Several things are going on here. The first two blocks are providing names for the sound cards in my system. You can find the correct values for card and device by typing “aplay -l” on the command line. For channels, choose 2 unless you have a surround sound system. The !default block defines the system default, i.e. which of the cards is used if you don’t specify which to use.

Next, create additional files for each of your sound cards:

/usr/sound/.asoundrc_desktop

Kod: Zaznacz cały

pcm.!default {
    type plug
    slave.pcm "desktop"
}
/usr/sound/.asoundrc_usb

Kod: Zaznacz cały

pcm.!default {
    type plug
    slave.pcm "usb"
}
Finally, create executable scripts to do the switching:

/bin/alsa_usb


cp /usr/sound/.asoundrc_usb ~/.asoundrc

/bin/alsa_desktop


cp /usr/sound/.asoundrc_desktop ~/.asoundrc

Make icons or menu items that point to these scripts, and test them out. Most programs (e.g. firefox, xmms, etc) will have to be restarted after you switch from one card to the other in order to pick up the change.
Nie sprawdzałem jeszcze, może uda mi się wieczorem ale wygląda wporzo bo nie wymaga re-logowania. Chociaż generalnie bardzo podobne do powyższego pomysłu.

Co myślicie?
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8656
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: wybór karty dźwiękowej w zaleźności od obecności domyślnej

Post autor: mario_7 »

Rozwiązanie bardzo podobne.

Trzeba by sprawdzić, czy w obu przypadkach nie wystarczy zrestartować samych programów zamiast całego środowiska graficznego.

W razie czego można zmiksować oba pomysły.
ODPOWIEDZ

Wróć do „Inne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości