ALSA в Gentoo.

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
SwapON
Сообщения: 250
ОС: Gentoo Xfce4

ALSA в Gentoo.

Сообщение SwapON »

Интро: Так как генту начал юзать с года пол тому назад, отношу свой вопрос к эту разделу...=)

Для воспроизведения звука всегда ставил пульсу. Сегодня на одном из форумов чел сравнил её с седлом для коровы :) . Почитав сравнение и так как отношу себя к минималисту в ОСи, сделал вывод, что мне пульса не нужна, а нужна ALSA. Полез в вики своего любимого дистрибутива, стал пробовать настраивать, но так как Вы уже наверно догадались, у меня нихрена не вышло :( Сопсна пришёл сюда за ответами, кто чем сможет.

Что мы имеем:
HDMI, подключённый к монитору, по которому должен идти звук
aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
lavrate
Rate Converter Plugin Using Libav/FFmpeg Library
upmix
Plugin for channel upmix (4,6,8)
vdownmix
Plugin for channel downmix (stereo) with a simple spacialization
default:CARD=PCH
HDA Intel PCH, ALC887-VD Analog
Default Audio Device
sysdefault:CARD=PCH
HDA Intel PCH, ALC887-VD Analog
Default Audio Device
front:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
Front output / input
surround21:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
HDA Intel PCH, ALC887-VD Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
usbstream:CARD=PCH
HDA Intel PCH
USB Stream Output
hdmi:CARD=NVidia,DEV=0
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
HDA NVidia, MSI MD241PW
HDMI Audio Output
usbstream:CARD=NVidia
HDA NVidia
USB Stream Output
cat ~/.asoundrc (сделал как описано в вики)
defaults.pcm.!card NVidia
defaults.pcm.!device 0
defaults.ctl.!card NVidia
ffplay Загрузки/Mick\ Jenkins\ —\ Smoke\ Break-Dance\.mp3
ffplay version 6.1.1 Copyright (c) 2003-2023 the FFmpeg developers
built with gcc 13 (Gentoo 13.2.1_p20240210 p14)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/share/doc/ffmpeg-6.1.1-r5/html --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --nm=x86_64-pc-linux-gnu-nm --strip=x86_64-pc-linux-gnu-strip --ranlib=x86_64-pc-linux-gnu-ranlib --pkg-config=x86_64-pc-linux-gnu-pkg-config --optflags='-march=native -O2 -pipe' --disable-static --disable-libaribcaption --enable-avfilter --disable-stripping --disable-optimizations --disable-libcelt --disable-indev=v4l2 --disable-outdev=v4l2 --disable-indev=oss --disable-indev=jack --disable-indev=sndio --disable-outdev=oss --disable-outdev=sndio --enable-bzlib --disable-runtime-cpudetect --disable-debug --disable-gcrypt --enable-gnutls --disable-gmp --enable-gpl --disable-hardcoded-tables --enable-iconv --disable-libxml2 --disable-lzma --enable-network --disable-opencl --disable-openssl --enable-postproc --disable-libsmbclient --enable-ffplay --enable-sdl2 --disable-vaapi --disable-vdpau --enable-vulkan --enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-zlib --disable-libcdio --disable-libiec61883 --disable-libdc1394 --disable-libcaca --disable-openal --enable-opengl --disable-libv4l2 --disable-libpulse --disable-libdrm --disable-libjack --disable-libopencore-amrwb --disable-libopencore-amrnb --disable-libcodec2 --enable-libdav1d --disable-libfdk-aac --disable-libopenjpeg --disable-libjxl --disable-libbluray --disable-libgme --disable-libgsm --disable-libaribb24 --disable-libmodplug --enable-libopus --disable-libvpl --disable-libilbc --disable-librtmp --disable-libssh --disable-libspeex --disable-libsrt --enable-librsvg --disable-ffnvcodec --enable-libvorbis --enable-libvpx --disable-libzvbi --disable-appkit --disable-libbs2b --disable-chromaprint --disable-cuda-llvm --disable-libflite --disable-fontconfig --disable-frei0r --disable-libfribidi --disable-libglslang --disable-ladspa --enable-lcms2 --disable-libass --disable-libplacebo --disable-libtesseract --disable-lv2 --disable-librubberband --disable-libshaderc --enable-libfreetype --enable-libharfbuzz --disable-libvidstab --disable-libvmaf --disable-libzmq --disable-libzimg --disable-libsoxr --enable-pthreads --disable-amf --disable-libvo-amrwbenc --disable-libkvazaar --disable-libaom --enable-libmp3lame --disable-libopenh264 --disable-librav1e --disable-libsnappy --disable-libsvtav1 --disable-libtheora --disable-libtwolame --disable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-neon --disable-vfp --disable-vfpv3 --disable-armv8 --disable-dotprod --disable-i8mm --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-altivec --disable-vsx --disable-power8 --disable-amd3dnow --disable-amd3dnowext --disable-fma4 --disable-xop --enable-pic --cpu=host --disable-doc --disable-htmlpages --enable-manpages
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, mp3, from 'Загрузки/Mick Jenkins — Smoke Break-Dance (Feat. JID) (www.lightaudio.ru).mp3':
Metadata:
encoder : Lavf58.45.100
Duration: 00:02:47.55, start: 0.025057, bitrate: 320 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
encoder : Lavf
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.11/work/alsa-lib-1.2.11/src/pcm/pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave
SDL_OpenAudio (2 channels, 44100 Hz): ALSA: Couldn't open audio device: No such file or directory
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.11/work/alsa-lib-1.2.11/src/pcm/pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave
SDL_OpenAudio (1 channels, 44100 Hz): ALSA: Couldn't open audio device: No such file or directory
No more combinations to try, audio open failed
Failed to open file 'Загрузки/Mick Jenkins — Smoke Break-Dance (Feat. JID) (www.lightaudio.ru).mp3' or configure filtergraph
Не удалось открыть аудиоустройство: такого файла или каталога нет :(

ЧЯДНТ...?!?

P.S> Глобального /etc/asound.conf файла нет. При установке алсы он не создался. Я только ручками создал .asoundrc в хоме.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

SwapON писал:
13.06.2024 09:21
Почитав сравнение и так как отношу себя к минималисту в ОСи, сделал вывод, что мне пульса не нужна, а нужна ALSA.
Пульса нужна для таких как telegram. Хотя был пакет через который можно работать с пульсой. Сейчас больше рулит не пульса а pipewire, но там вполне работает и с утилитами пульсы, такими как pactl. Если собрать с флагом jack-sdk, то будет работать ещё с клиентами jack. Звук при выборе вывода alsa по качеству примерно сопоставим. А так конечно звука не будет, так как не соответствует asoundrc.
Документация по asoundrc:

Shell

$ bzcat /usr/share/doc/alsa-lib-1.2.11/asoundrc.txt.bz2
Как бы не в первый раз в Linux должны догадаться что нужен номер звуковой карты:

Shell

$ cat /proc/asound/cards
Спасибо сказали:
Аватара пользователя
SwapON
Сообщения: 250
ОС: Gentoo Xfce4

Re: ALSA в Gentoo.

Сообщение SwapON »

ormorph писал(а):
13.06.2024 10:18
нужен номер звуковой карты

Shell

# PCM types:
type hw # Kernel PCM
card INT/STR # Card name or number
[device] INT # Device number (default 0)
[subdevice] INT # Subdevice number, -1 first available (default -1)
В описании, логический оператор «or», должен возвращать true, если хотя бы одно из сравнений истинно. То есть имя или номер. Я прописал в конфиге имя карты. Решил что этого достаточно. Или я не прав?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

SwapON писал:
13.06.2024 11:37
Решил что этого достаточно. Или я не прав?
Я такого даже и не пробовал. Мой старый конфиг .asoundrc:
Spoiler

Код: Выделить всё

pcm.!default {
        type hw
        card 0
}

ctl.!default {
        type hw
        card 0
}
Можете взять его за основу, просто дописать в pcm.!default ещё divice <num>. Это должно работать. Сейчас перешёл на pipewire, а там можно для каждого клиента у становить свою звуковую карту, например через гуй qpwgraph.
Спасибо сказали:
Аватара пользователя
yoricI
Сообщения: 2790
ОС: gentoo fluxbox

Re: ALSA в Gentoo.

Сообщение yoricI »

Даже и не знаю, как я так живу, сразу исключил все эти пульсы с пайпвайрами, и альзу не настраивал совсем, кроме alsamixer/alsactl. Ведать не ведаю, где этот asoundrc, а всё работает. Может, конечно, у меня небогатое железо (1 PCI-платка). Главное - чтобы в ядре была поддержка, для начала.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

yoricI писал:
13.06.2024 12:02
Даже и не знаю, как я так живу, сразу исключил все эти пульсы с пайпвайрами, и альзу не настраивал совсем, кроме alsamixer/alsactl. Ведать не ведаю, где этот asoundrc, а всё работает. Может, конечно, у меня небогатое железо (1 PCI-платка). Главное - чтобы в ядре была поддержка, для начала.
Если уже установлена пульса то без файла .asoundrc ни как. А так ему нужно что бы по дефолту вывод шел на hdmi.
Спасибо сказали:
Аватара пользователя
SwapON
Сообщения: 250
ОС: Gentoo Xfce4

Re: ALSA в Gentoo.

Сообщение SwapON »

yoricI писал:
13.06.2024 12:02
Главное - чтобы в ядре была поддержка, для начала.
Я видимо ещё не созрел на сборку ядра самостоятельно. Очкую поломать всё. Сижу на бинарном ядре. Да, мне очень стыдно, что я такой гентовод =)
ormorph писал(а):
13.06.2024 11:52
Можете взять его за основу
Обязательно попробую. Отпишусь. (Пока не за экспериментальным компом)
Спасибо сказали:
fredrick
Сообщения: 51

Re: ALSA в Gentoo.

Сообщение fredrick »

SwapON
А что там в /etc/alsa?
SwapON писал:
13.06.2024 09:21
P.S> Глобального /etc/asound.conf файла нет. При установке алсы он не создался.
А должно быть?
SwapON писал:
13.06.2024 12:05
Я видимо ещё не созрел на сборку ядра самостоятельно.
cat /boot/config-<версия ядра>-amd64|grep -i alsa

Убедиться, что алса в rc загружена.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

fredrick писал(а):
13.06.2024 12:08
cat /boot/config-<версия ядра>-amd64|grep -i alsa
И какое чудо он должен увидеть? Драйвера alsa там в бинарном ядре и так есть если установлено sys-kernel/gentoo-kernel-bin, только вот в их названиях нет слова alsa.
SwapON писал:
13.06.2024 12:05
Убедиться, что алса в rc загружена.
Не надо ни чего загружать, всё и так будет работать, это на совести udev, если только не требуется ещё поддержка oss.
Спасибо сказали:
fredrick
Сообщения: 51

Re: ALSA в Gentoo.

Сообщение fredrick »

ormorph писал(а):
13.06.2024 12:22
И какое чудо он должен увидеть? Драйвера alsa там в бинарном ядре и так есть если установлено sys-kernel/gentoo-kernel-bin, только вот в их названиях нет слова alsa.
В конфиге ядра.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

fredrick писал(а):
13.06.2024 12:31
В конфиге ядра.
Тогда что я делаю не так? Без alsa у него и так бы не работала pulseaudio, так что всё там у него со звуком и так нормально.
Спасибо сказали:
Аватара пользователя
SwapON
Сообщения: 250
ОС: Gentoo Xfce4

Re: ALSA в Gentoo.

Сообщение SwapON »

ormorph писал(а):
13.06.2024 13:47
так что всё там у него со звуком и так нормально.
Парни, ядро бинарное. Вы совершенно правы, что в бинарнике по-дефолту большинство модулей включено! Я завтра (так как у меня уже 21:00) на экспериментальном компе посмотрю, попробую Ваш конфиг и отпишусь.

P.S> Классный велпапер. Мне тоже нравится космос...=)
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1479
ОС: Slackware

Re: ALSA в Gentoo.

Сообщение UnixNoob »

Мне, после обновления системы, помогает открыть pavucontrol и посмотреть что там выставлено по-умолчанию, иногда видеокарта вылезает.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
fredrick
Сообщения: 51

Re: ALSA в Gentoo.

Сообщение fredrick »

Возможно неверно выбрано устройство.
Есть такая питоновская утилита - asoundconf+asoundconf-gtk, но в генту её нет. Может в сторонних оверлеях имеется?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

fredrick писал(а):
13.06.2024 16:44
Может в сторонних оверлеях имеется?
Не имеется и не будет. Это основано на pygtk, той что на python2, а сейчас всё идёт к python3.
Минимализм конечно хорошо, но он по крайней мере должен быть рациональным. Наиболее серьёзные приложения для работы со звуком как правило используют jackd, в таком случае подружить пульсу и jack довольно проблемно, с альсой это проще. С выходом pipewire всё стало на много проще, так как pipewire может работать с клиентами jack без запуска демона jackd, только следует собрать как надо и качество получается по лучше. Первые версии pipewire падали довольно часто, а сейчас всё уже работает довольно стабильно.
Спасибо сказали:
fredrick
Сообщения: 51

Re: ALSA в Gentoo.

Сообщение fredrick »

ormorph писал(а):
13.06.2024 17:14
Это основано на pygtk, той что на python2, а сейчас всё идёт к python3.
https://packages.altlinux.org/ru/p10/srpms/asoundconf/specfiles/
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

Посмотрел, там переписано на pygobject, тогда проще простого добавить в в локальный оверлей, раз добавлены патчи для pygobject. Только это ссылка не та, нужно искать в Arch Linux. Могу прямо сейчас выложить ебилд для добавления в локальный оверлей.
Добавлено (18:12):
Вот добавил ебилд. Как создать локальный оверлей ужа ваше дело. Это просто сборник ебилдов на git, их нужно добавлять самому.
Спасибо сказали:
Аватара пользователя
SwapON
Сообщения: 250
ОС: Gentoo Xfce4

Re: ALSA в Gentoo.

Сообщение SwapON »

UnixNoob писал:
13.06.2024 14:48
pavucontrol
Я глобально отключил pulseaudio, а при попытке установить pavucontrol он его всё равно его силком тащит
media-plugins/alsa-plugins-1.2.7.1-r1
::gentoo USE="mix pulseaudio* usb_stream -arcam_av -debug -ffmpeg* -jack -libsamplerate -oss -speex" ABI_X86="(64) -32 (-x32)" 0 KiB
Спасибо сказали:
Аватара пользователя
SwapON
Сообщения: 250
ОС: Gentoo Xfce4

Re: ALSA в Gentoo.

Сообщение SwapON »

ormorph писал(а):
Теперь звук якобы идёт. То есть ошибок нет, за исключением

Shell

[swscaler @ 0x7fcf08046d80] deprecated pixel format used, make sure you did set range correctly
но это по всей видимости с картинкой альбома связано. Но самое главное, звука, мать его, нет...! Достал наушники, подключил к звуковухе в разъём 3.5 mm, поменял card на 0 в asoundrc - звук есть! Возвращаю на HDMI - звука нет. Ну не дурачок же я, везде громкость покрутил.
Спасибо сказали:
fredrick
Сообщения: 51

Re: ALSA в Gentoo.

Сообщение fredrick »

SwapON писал:
14.06.2024 04:31
Я глобально отключил pulseaudio, а при попытке установить pavucontrol он его всё равно его силком тащит
Разумеется
PulseAudio Volume Control (pavucontrol) is a simple GTK+ based volume
control tool (mixer) for the PulseAudio sound server. In contrast to
classic mixer tools this one allows you to control both the volume of
hardware devices and of each playback stream separately. It also allows
you to redirect a playback stream to another output device without
interrupting playback.
Есть другие микшеры. Я использую PNMixer+alsamixer.
SwapON писал:
14.06.2024 04:51
поменял card на 0 в asoundrc - звук есть! Возвращаю на HDMI - звука нет.
Непонятно.

У меня наушники подключены к монитору.
.asoundrc

Код: Выделить всё

defaults.pcm.card 1
defaults.pcm.device 3
defaults.ctl.card 1
defaults.ctl.device 3
defaults.pcm.rate_converter "speexrate_best"
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3048
ОС: Gentoo

Re: ALSA в Gentoo.

Сообщение ormorph »

Что прописывали в .asoundrc и что в /proc/asound/devices.
В качестве примера:

Код: Выделить всё

  2: [ 0- 0]: digital audio playback
  3: [ 0- 0]: digital audio capture
  4: [ 0- 3]: digital audio playback
  5: [ 0- 7]: digital audio playback
  6: [ 0- 8]: digital audio playback
Тут и смотреть digital audio playback, тут карта 0, а номера устройств hdmi 3,7,8. Как правило если в параметрах плеера указывать, то это должно быть hw:0,3, hw:0,7, hw:0,8. Ну а если нужно получить те же данные через aplay, то нужно указывать не заглавную букву -L, а маленькую:

Shell

$ aplay -l
Скорее всего устройство device не то прописано.
Добавлено (08:48):
Так же в микшере alsamixer должно быть включено S/PDIF.
Спасибо сказали: