LinuxForum.Fans
Тема

Настройка ALSA

Автор: Konlor95 42 сообщений 11061 просмотров
#372057

Вот измененный конфиг.

text

#
#  ALSA library configuration file
#

# pre-load the configuration files

@hooks [ { func load files [ { @func concat strings [ { @func datadir } "/alsa.conf.d/" ] } "/etc/asound.conf" "~/.asoundrc" ] errors false } ]

# load card-specific configuration files (on request)

cards.@hooks [ { func load files [ { @func concat strings [ { @func datadir } "/cards/aliases.conf" ] } ] } { func load_for_all_cards files [ { @func concat strings [ { @func datadir } "/cards/" { @func private_string } ".conf" ] } ] errors false } ]

# # defaults #

# show all name hints also for definitions without hint {} section defaults.namehint.showall off # show just basic name hints defaults.namehint.basic on # show extended name hints defaults.namehint.extended off # defaults.ctl.card 0 defaults.pcm.card 0 defaults.pcm.device 0 defaults.pcm.subdevice -1 defaults.pcm.nonblock 1 defaults.pcm.compat 0 defaults.pcm.minperiodtime 5000 # in us defaults.pcm.ipc_key 5678293 defaults.pcm.ipc_gid audio defaults.pcm.ipc_perm 0660 defaults.pcm.dmix.max_periods 0 defaults.pcm.dmix.rate 48000 defaults.pcm.dmix.format "S24_LE" defaults.pcm.dmix.card defaults.pcm.card defaults.pcm.dmix.device defaults.pcm.device defaults.pcm.dsnoop.card defaults.pcm.card defaults.pcm.dsnoop.device defaults.pcm.device defaults.pcm.front.card defaults.pcm.card defaults.pcm.front.device defaults.pcm.device defaults.pcm.rear.card defaults.pcm.card defaults.pcm.rear.device defaults.pcm.device defaults.pcm.center_lfe.card defaults.pcm.card defaults.pcm.center_lfe.device defaults.pcm.device defaults.pcm.side.card defaults.pcm.card defaults.pcm.side.device defaults.pcm.device defaults.pcm.surround40.card defaults.pcm.card defaults.pcm.surround40.device defaults.pcm.device defaults.pcm.surround41.card defaults.pcm.card defaults.pcm.surround41.device defaults.pcm.device defaults.pcm.surround50.card defaults.pcm.card defaults.pcm.surround50.device defaults.pcm.device defaults.pcm.surround51.card defaults.pcm.card defaults.pcm.surround51.device defaults.pcm.device defaults.pcm.surround71.card defaults.pcm.card defaults.pcm.surround71.device defaults.pcm.device defaults.pcm.iec958.card defaults.pcm.card defaults.pcm.iec958.device defaults.pcm.device defaults.pcm.modem.card defaults.pcm.card defaults.pcm.modem.device defaults.pcm.device # truncate files via file or tee PCM defaults.pcm.file_format "raw" defaults.pcm.file_truncate true defaults.rawmidi.card 0 defaults.rawmidi.device 0 defaults.rawmidi.subdevice -1 defaults.hwdep.card 0 defaults.hwdep.device 0 defaults.timer.class 2 defaults.timer.sclass 0 defaults.timer.card 0 defaults.timer.device 0 defaults.timer.subdevice 0

# # PCM interface #

# redirect to load-on-demand extended pcm definitions pcm.cards cards.pcm

pcm.default cards.pcm.default pcm.sysdefault cards.pcm.default pcm.front cards.pcm.front pcm.rear cards.pcm.rear pcm.center_lfe cards.pcm.center_lfe pcm.side cards.pcm.side pcm.surround40 cards.pcm.surround40 pcm.surround41 cards.pcm.surround41 pcm.surround50 cards.pcm.surround50 pcm.surround51 cards.pcm.surround51 pcm.surround71 cards.pcm.surround71 pcm.iec958 cards.pcm.iec958 pcm.spdif iec958 pcm.hdmi cards.pcm.hdmi pcm.dmix cards.pcm.dmix pcm.dsnoop cards.pcm.dsnoop pcm.modem cards.pcm.modem pcm.phoneline cards.pcm.phoneline

pcm.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type hw card $CARD device $DEV subdevice $SUBDEV hint { show { @func refer name defaults.namehint.extended } description "Direct hardware device without any conversions" } }

pcm.plughw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type plug slave.pcm { type hw card $CARD device $DEV subdevice $SUBDEV } hint { show { @func refer name defaults.namehint.extended } description "Hardware device with all software conversions" } }

pcm.plug { @args [ SLAVE ] @args.SLAVE { type string } type plug slave.pcm $SLAVE }

pcm.shm { @args [ SOCKET PCM ] @args.SOCKET { type string } @args.PCM { type string } type shm server $SOCKET pcm $PCM }

pcm.tee { @args [ SLAVE FILE FORMAT ] @args.SLAVE { type string } @args.FILE { type string } @args.FORMAT { type string default { @func refer name defaults.pcm.file_format } } type file slave.pcm $SLAVE file $FILE format $FORMAT truncate { @func refer name defaults.pcm.file_truncate } }

pcm.file { @args [ FILE FORMAT ] @args.FILE { type string } @args.FORMAT { type string default { @func refer name defaults.pcm.file_format } } type file slave.pcm null file $FILE format $FORMAT truncate { @func refer name defaults.pcm.file_truncate } }

pcm.null { type null hint { show { @func refer name defaults.namehint.basic } description "Discard all samples (playback) or generate zero samples (capture)" } }

# # Control interface # ctl.sysdefault { type hw card { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } } ctl.default ctl.sysdefault

ctl.hw { @args [ CARD ] @args.CARD { type string default { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } } type hw card $CARD }

ctl.shm { @args [ SOCKET CTL ] @args.SOCKET { type string } @args.CTL { type string } type shm server $SOCKET ctl $CTL }

# # RawMidi interface #

rawmidi.default { type hw card { @func getenv vars [ ALSA_RAWMIDI_CARD ALSA_CARD ] default { @func refer name defaults.rawmidi.card } } device { @func igetenv vars [ ALSA_RAWMIDI_DEVICE ] default { @func refer name defaults.rawmidi.device } } }

rawmidi.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_RAWMIDI_CARD ALSA_CARD ] default { @func refer name defaults.rawmidi.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_RAWMIDI_DEVICE ] default { @func refer name defaults.rawmidi.device } } } @args.SUBDEV { type integer default -1 } type hw card $CARD device $DEV subdevice $SUBDEV hint { description "Direct rawmidi driver device" device $DEV } }

rawmidi.virtual { @args [ MERGE ] @args.MERGE { type string default 1 } type virtual merge $MERGE }

# # Sequencer interface #

seq.default { type hw }

seq.hw { type hw }

# # HwDep interface #

hwdep.default { type hw card { @func getenv vars [ ALSA_HWDEP_CARD ALSA_CARD ] default { @func refer name defaults.hwdep.card } } device { @func igetenv vars [ ALSA_HWDEP_DEVICE ] default { @func refer name defaults.hwdep.device } } }

hwdep.hw { @args [ CARD DEV ] @args.CARD { type string default { @func getenv vars [ ALSA_HWDEP_CARD ALSA_CARD ] default { @func refer name defaults.hwdep.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_HWDEP_DEVICE ] default { @func refer name defaults.hwdep.device } } } type hw card $CARD device $DEV }

# # Timer interface #

timer_query.default { type hw }

timer_query.hw { type hw }

timer.default { type hw class { @func refer name defaults.timer.class } sclass { @func refer name defaults.timer.sclass } card { @func refer name defaults.timer.card } device { @func refer name defaults.timer.device } subdevice { @func refer name defaults.timer.subdevice } hint.description "Default direct hardware timer device" }

timer.hw { @args [ CLASS SCLASS CARD DEV SUBDEV ] @args.CLASS { type integer default { @func refer name defaults.timer.class } } @args.SCLASS { type integer default { @func refer name defaults.timer.sclass } } @args.CARD { type string default { @func refer name defaults.timer.card } } @args.DEV { type integer default { @func refer name defaults.timer.device } } @args.SUBDEV { type integer default { @func refer name defaults.timer.subdevice } } type hw class $CLASS sclass $SCLASS card $CARD device $DEV subdevice $SUBDEV }

#372085

"Konlor95" написал:
поменял, все равно speaker-test -c 2 выдает S16_LE. Комп перезагружал.
По-моему, speaker-test выдает значения не карты, а собственного генерируемого потока.
#372090

urfin написал:
[quote="Konlor95"]поменял, все равно speaker-test -c 2 выдает S16_LE. Комп перезагружал.
По-моему, speaker-test выдает значения не карты, а собственного генерируемого потока.[/quote]
Вот. Я тоже так думаю. А реально - есть отличия?
#372103

"mvt" написал:
Вот. Я тоже так думаю. А реально - есть отличия?
После контузии я не обладаю настолько хорошим слухом, чтобы различить такие тонкости :)
#372105

urfin
Да ТС - про микрофон. Может, если на "той стороне" плохо слышно - канал может быть узковат? Не?

#372106

Волшебным образом контент 44.1(48.0)/16 лучше звучать не станет, как ни выкручивай частоты/битрейты, скорее хуже и плюс ещё железо будет больше напрягаться работая над передискретизацией.

#372107
verg написал:
Волшебным образом контент 44.1(48.0)/16 лучше звучать не станет, как ни выкручивай частоты/битрейты, скорее хуже и плюс ещё железо будет больше напрягаться работая над передискретизацией.

Вот, было подозрение - что железка, но подумал, что что-то можно сделать... :)

#372108

mvt, а где у ТС про микрофон?


verg, ну, да, так и есть. Может случиться, что и двойная нагрузка будет, сначала программное преобразование по одним параметрам, а потом еще и аппаратное в свои собственные.

#372110
urfin написал:
mvt, а где у ТС про микрофон?

А

Konlor95 написал:
поменял, все равно speaker-test -c 2 выдает S16_LE. Комп перезагружал.
я как-то неправильно понял?
PS Простите, попробовл. Но - фигня какая-то
[console]mvt@mvt-runtu:~$ speaker-test -c 2

speaker-test 1.0.25

Устройство для проигрывания - default
Параметры потока - 48000Гц, S16_LE, 2 каналов
Используется 16 октав "розового" шума
Установлена частота в 48000Гц (запрошено 48000Гц)
Размер буфера от 2048 до 8192
Размер периода от 1024 до 1024
Используется максимальный размер буфера 8192
Периоды = 4
был установлен period_size = 1024
был установлен buffer_size = 8192
0 - Передний левый
1 - Передний правый
Время в периоде = 5,822256
[/console]
И где смысл? Ну, шипит что-то. Что ищем?
#372111

"mvt" написал:
я как-то неправильно понял?
Неправильно :) speaker-test - это программка, генерирующая поток для проверки звуковой системы.
#372115

mvt, чтобы не разводить флейм, просто посмотрите в мане, что может и для чего эта утилитка.

#372116
urfin написал:
mvt, чтобы не разводить флейм, просто посмотрите в мане, что может и для чего эта утилитка.

хорошо. Просто - никогда не возникало необходимости...

#372183

urfin написал:
[quote="Konlor95"]поменял, все равно speaker-test -c 2 выдает S16_LE. Комп перезагружал.
По-моему, speaker-test выдает значения не карты, а собственного генерируемого потока.[/quote]

Да, вы правы. Поменял 48000Hz на 44100Hz и перезагрузил, все равно выдает 48000. Но как тогда качественный звук получить ? Жалко, так как на Windows он качественней. Каждый звук слышен четко, и при большой громкости динамики не выдают дребезг, как на Linux( я уже столько дистров перепробовал, чтобы мне подошел, но ни в одном проблемы со звуком решить не смог).
#372189

Konlor95, есть такое в Linux, постарайтесь не выставлять в миксере PCM на максимум (достаточно 90%), в большинстве случаев от искажений помогает.

#372242

А еще способов нет ? Качество ресемплинга повысить как-нибудь ? Снизить уровни некоторых частот ?

#372247

Konlor95, покажите вывод

text
aplay -D plughw:0,0 -v /usr/share/sounds/alsa/test.wav

только вместо 0,0 подставьте реальные данные, если они отличаются (посмотрите по выводу aplay -l).

#372312
text
    
datafile4@linux-5x5h:~> aplay -D plughw:0,0 -v /usr/share/sounds/alsa/test.wav
Playing WAVE '/usr/share/sounds/alsa/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Plug PCM: Hardware PCM card 0 'HDA Intel PCH' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 22052
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 22052
  stop_threshold   : 22052
  silence_threshold: 0
  silence_size : 0
  boundary     : 6207086186423386112
  appl_ptr     : 0
  hw_ptr       : 0

#372322

Konlor95, скачайте себе этот файлик в ~/TEMP. Установите в /usr/share/alsa/alsa.conf следующие параметры:

text
defaults.pcm.dmix.rate 48000
defaults.pcm.dmix.format "S24_LE"

В /etc/pulse/daemon.conf установите следующие параметры (да, я знаю, что вы отключили pulseaudio, но все равно):

text
resample-method = src-sinc-best-quality
default-sample-format = s24le
default-sample-rate = 48000
alternate-sample-rate = 48000

Перезагрузитесь, чтобы alsa приняла параметры.
Выполните команду:

text
aplay -D plughw:0,0 -v ~/TEMP/1.wav

1.wav это файл, который вы скачали, он кодирован в 48000Гц и 24bit. Покажите вывод, должно быть что-то типа:

Показать
aplay -D plughw:0,0 -v ~/TEMP/1.wav
Playing WAVE '/home/onn/TEMP/1/1.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
Plug PCM: Linear conversion PCM (S32_LE)
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S24_3LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 24
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 24000
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
Slave: Hardware PCM card 0 'HDA ATI SB' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : S32_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 32
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 24000
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
appl_ptr : 0
hw_ptr : 0

#372470
text

datafile4@linux-5x5h:~> aplay -D plughw:0,0 -v /home/datafile4/Downloads/1.wav
Playing WAVE '/home/datafile4/Downloads/1.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
Plug PCM: Linear conversion PCM (S32_LE)
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S24_3LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 24
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 24000
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 6755399441055744000
Slave: Hardware PCM card 0 'HDA Intel PCH' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 24000
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 6755399441055744000
  appl_ptr     : 0
  hw_ptr       : 0

но aplay -D plughw:0,0 -v /usr/share/sounds/alsa/test.wav выдает то же самое, что и до этого. Причем дребезг про воспроизведении скачанного файла присутствует.

Войдите или зарегистрируйтесь, чтобы ответить.