mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-26 07:00:11 -05:00
This patch allows for gain in the softvol plugin, in addition to attenuation. The plugin now has a "max_dB" parameter (up to 50 dB) as well as the original "min_dB" parameter (down to -51 dB). max_dB defaults to 0 dB, so unless max_dB is specified in a device conf, the behavior of the plugin will be the same as before (attenuation only). HDA-Intel.conf is also modified to use softvol for its default capture. So now, capture is filtered through softvol (range -30 to +30 dB) before being passed on to dsnoop as before. The softvol plugin allows a range of -51 to +50 dB, so max_dB could be increased to 50. But eventually samples are going to get clipped. At 40 dB I was beginning to get clipping when recording a sample sound at a "reasonably soft" volume using a digital mic on the stac9205 HDA codec. The motivation for this work is that some HDA codecs have no hardware gain control for some paths. For instance, the stac9205 has support for digital mics, but there is no gain control widget for this signal before it is placed on the Azalia link (only a mute). Therefore gain can only be accomplished via software. Signed-off-by: Steve Longerbeam <stevel@embeddedalley.com>
151 lines
2.1 KiB
Text
151 lines
2.1 KiB
Text
#
|
|
# Configuration for the Intel HD audio (ICH6/ICH7)
|
|
#
|
|
|
|
<confdir:pcm/front.conf>
|
|
|
|
HDA-Intel.pcm.front.0 {
|
|
@args [ CARD ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
type softvol
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
}
|
|
control {
|
|
name "PCM Playback Volume"
|
|
card $CARD
|
|
}
|
|
}
|
|
|
|
# default with dmix+softvol & dsnoop
|
|
HDA-Intel.pcm.default {
|
|
@args [ CARD ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
type asym
|
|
playback.pcm {
|
|
type plug
|
|
slave.pcm {
|
|
type softvol
|
|
slave.pcm {
|
|
@func concat
|
|
strings [ "dmix:" $CARD ]
|
|
}
|
|
control {
|
|
name "PCM Playback Volume"
|
|
card $CARD
|
|
}
|
|
}
|
|
}
|
|
capture.pcm {
|
|
type plug
|
|
slave.pcm {
|
|
type softvol
|
|
slave.pcm {
|
|
@func concat
|
|
strings [ "dsnoop:" $CARD ]
|
|
}
|
|
control {
|
|
name "Digital Capture Volume"
|
|
card $CARD
|
|
}
|
|
min_dB -30.0
|
|
max_dB 30.0
|
|
resolution 121
|
|
}
|
|
}
|
|
}
|
|
|
|
<confdir:pcm/surround40.conf>
|
|
<confdir:pcm/surround41.conf>
|
|
<confdir:pcm/surround50.conf>
|
|
<confdir:pcm/surround51.conf>
|
|
<confdir:pcm/surround71.conf>
|
|
|
|
HDA-Intel.pcm.surround40.0 cards.HDA-Intel.pcm.front.0
|
|
HDA-Intel.pcm.surround51.0 cards.HDA-Intel.pcm.front.0
|
|
HDA-Intel.pcm.surround71.0 cards.HDA-Intel.pcm.front.0
|
|
|
|
<confdir:pcm/iec958.conf>
|
|
|
|
HDA-Intel.pcm.iec958.0 {
|
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
@args.AES0 {
|
|
type integer
|
|
}
|
|
@args.AES1 {
|
|
type integer
|
|
}
|
|
@args.AES2 {
|
|
type integer
|
|
}
|
|
@args.AES3 {
|
|
type integer
|
|
}
|
|
type asym
|
|
playback.pcm {
|
|
type hooks
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
device 1
|
|
}
|
|
hooks.0 {
|
|
type ctl_elems
|
|
hook_args [
|
|
{
|
|
name "IEC958 Playback Default"
|
|
lock true
|
|
preserve true
|
|
value [ $AES0 $AES1 $AES2 $AES3 ]
|
|
}
|
|
{
|
|
name "IEC958 Playback Switch"
|
|
lock true
|
|
preserve true
|
|
value true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
capture.pcm {
|
|
type hooks
|
|
slave.pcm {
|
|
type hw
|
|
card $CARD
|
|
device 1
|
|
}
|
|
hooks.0 {
|
|
type ctl_elems
|
|
hook_args [
|
|
{
|
|
name "IEC958 Capture Switch"
|
|
lock true
|
|
preserve true
|
|
value true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
hint.device 1
|
|
}
|
|
|
|
<confdir:pcm/modem.conf>
|
|
|
|
HDA-Intel.pcm.modem.0 {
|
|
@args [ CARD ]
|
|
@args.CARD {
|
|
type string
|
|
}
|
|
type hw
|
|
card $CARD
|
|
device 6
|
|
hint.show off
|
|
}
|