Hatred's Log Place

DON'T PANIC!

integrirovannyj_zvuk_na_platax_s_chipom_nforce4_alsa_i_5.1_zvuk

Jul 11, 2007 - 3 minute read

Интегрированный звук на платах с чипом nForce4, ArchLinux, ALSA и 5.1 звук

Короткое интро

А так же 4.0 звук. Это скорее не руководство, не how-to, а просто записка чтобы не зыбыть, а потом может кому и пригодится.

На платах с чипом nForce4 есть интегрированный 5.1 звук. Про качество звучания ничего говорить не будем - каждому свое. lshwd -cc на моей машине говорит про неё следующее:

nVidia Corp.|CK804 AC'97 Audio Controller

и рекомендует использовать модуль ядра snd-intel8x0. Сама nVidia прекратила поддрежку своего OSS драйвера nvsound и рекомендует использовать данный.

Кратко про конфигурацию

Кратко про конфигурацию: запустить alsaconf, ответить на все вопросы, в /etc/modprobe.conf, по желанию добавить следующее:

# ALSA
install snd_intel8x0 /sbin/modprobe --ignore-install snd_intel8x0 ; sleep 1; /usr/sbin/alsactl restore >/dev/null 2>&1 || :    
remove snd_intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd_intel8x0

# OSS Compatibility
install snd-pcm modprobe -i snd-pcm ; modprobe snd-pcm-oss ; true
install snd-seq modprobe -i snd-seq ; modprobe snd-seq-oss ; true

Все, считаем что звук у вас работает и все играется. Теперь нужно что бы звук был более чем стерео.

Делаем звук многоканальным

Итак, для этого достаточно сделать у вас в домашнем каталоге файл .asoundrc со следующим содержимым:

pcm.CK804 {
type hw
card 0
}

ctl.CK804 {
type hw
card 0
}

pcm.!default {
type route;
slave.pcm "surround51";
slave.channels 6;
ttable.0.0 1;
ttable.1.1 1;
ttable.0.2 1;
ttable.1.3 1;
ttable.0.4 1;
ttable.1.5 1;
}

Это даст нам 5.1 звук. Регуляторы при этом станут: ^ Колонки ^ Регулятор ^ | Front | Master | | Rear | Surround | | Center | Center | | LFE | LFE |

Общего регулятора нет. Плохо. Пока не решил проблему использую метод о котором ниже.

pcm.CK804 {
type hw
card 0
}

ctl.CK804 {
type hw
card 0
}

pcm.!default {
type route;
slave.pcm "surround40";
slave.channels 4;
ttable.0.0 1;
ttable.1.1 1;
ttable.0.2 1;
ttable.1.3 1;
}

Это нам даст 4.0 звук (квадрофонический). Пока использую по причине наличия двух стерео-колонок и отсутствия 5.1 системы. Регуляторы при этом станут: ^ Колонки ^ Регулятор ^ | Front | Master | | Rear | Surround |

Общего регулятора опять таки нет.

Регулирование громкости

Для данного действия написал скрипт что устанавливает громкость по всем указанным каналам.

#!/bin/bash

DIFF=5%

Front="Master"
Rear="Surround"
Center="Center"
LFE="LFE"
Side=""

case "$1" in
 "+"|"-")
    if [ ! -z "$2" ]; then
        DIFF=$2%
    fi

    amixer sset "$Front"  $DIFF$1
    amixer sset "$Rear"   $DIFF$1
    amixer sset "$Center" $DIFF$1
    amixer sset "$LFE"    $DIFF$1
    amixer sset "$Side"   $DIFF$1
 ;;
 *)
    if [ ! -z "$1" ]; then
        amixer sset "$Front"  $1%
        amixer sset "$Rear"   $1%
        amixer sset "$Center" $1%
        amixer sset "$LFE"    $1%
        amixer sset "$Side"   $1%      
    fi
 ;;
esac

Файл обозвал mmix. После чего его можно использовать так:

mmix +|- [шаг]
mmix [значение]

+ или - увеличивает или уменьшает громкость на указанный шаг. Если шаг не указан его значение принимается 5%

Если параметром заданое только числовое значение громкость выставляется сразу в данную величину.

Источники

(c) Alexander ‘hatred’ Drozdov, Vladivostok 2007