ALSA project - the C library reference

Loading...
Searching...
No Matches
Primitive control plugins

Control plugins extends functionality and features of control devices. The plugins take care about various control mapping or so.

The child configuration (in one compound):

ctl.test {
type remap
child "hw:0"
... map/remap configuration ...
}
type
uint8_t type
Definition ump_msg.h:1

The child may be defined as compound containing the full specification:

ctl.test {
type remap
child {
type hw
card 0
}
... map/remap configuration ...
}

# Plugin: hw

This plugin communicates directly with the ALSA kernel driver. It is a raw communication without any conversions.

control.name {
type hw # Kernel PCM
card INT/STR # Card name (string) or number (integer)
}

## Function reference

- snd_ctl_hw_open()
- _snd_ctl_hw_open()

# Plugin: Remap & map

This plugin can remap (rename) identifiers (except the numid part) for a child control to another. The plugin can also merge the multiple child controls to one or split one control to more.

ctl.name {
type remap # Remap controls
child STR # Child name
# or
child { # Child definition
type STR
...
}
remap {
# the ID strings are parsed in the amixer style like 'name="Headphone Playback Switch",index=2'
SRC_ID1_STR DST_ID1_STR
SRC_ID2_STR DST_ID2_STR
...
}
map {
# join two stereo controls to one
CREATE_ID1_STR {
SRC_ID1_STR {
vindex.0 0 # source channel 0 to merged channel 0
vindex.1 1
}
SRC_ID2_STR {
vindex.2 0
vindex.3 1 # source channel 1 to merged channel 3
}
}
# split stereo to mono
CREATE_ID2_STR {
SRC_ID3_STR {
vindex.0 0 # stereo to mono (first channel)
}
}
CREATE_ID3_STR {
SRC_ID4_STR {
vindex.0 1 # stereo to mono (second channel)
}
}
# join two stereo to one stereo (minimum value is returned for read operation)
CREATE_ID4_STR {
SRC_ID5_STR.vindex.0 [ 0 1 ] # source channels 0+1 to merged channel 0
SRC_ID6_STR.vindex.1 [ 0 1 ] # source channels 0+1 to merged channel 1
}
}
sync {
# synchronize multiple controls without any translations
sample_group_1 [
SYNC_ID1_STR
SYNC_ID2_STR
]
# synchronize multiple controls without any translations
# add functionality on/off switch
sample_group_2 {
switch SYNC_SWITCH_ID
controls [
SYNC_ID3_STR
SYNC_ID4_STR
]
}
}
}
channel
uint8_t channel
Definition ump_msg.h:4

## Function reference

- snd_ctl_remap_open()
- _snd_ctl_remap_open()