Линукс для музыканта: плагины ALSA [Иван Георгиевич Титаренко] (fb2) читать постранично, страница - 16


 [Настройки текста]  [Cбросить фильтры]

для обоих направлений.

pcm.name {
type asym
playback STR # slave
playback { # определение подчиненного устройства воспроизведения
pcm STR # ведомый PCM
pcm { } # определение подчиненного PCM
}
capture STR # захват ведомого устройства
capture { # определение подчиненного захвата
pcm STR # ведомый PCM
pcm { } # определение подчиненного PCM
}
}
Здесь asym объединяет полудуплексные плагины, такие как dsnoop и dmix, в одно полнодуплексное устройство.

pcm.duplex {
type asym
playback.pcm "dmix"
capture.pcm "dsnoop"
}
Таким образом, вы можете использовать "дуплексный" PCM для комбинации dmix/dsnoop. Если задано только одно направление, поток будет полудуплексным.

% aplay -D duplex foo.wav
% arecord -D duplex bar.wav
Плагин asym также можно применить для совместной работы со звуковым сервером Jack, например, чтобы заставить сервер работать с многоканальными устройствами с разным количеством входов и выходов без микширования.

Плагин iec958.

Плагин преобразует 32-битные выборки подкадра IEC958 в линейные или линейные в 32-битные выборки подкадра IEC958.

pcm.name {
type iec958
slave STR # устройство slave
slave { # определение подчиненного устройства
pcm STR # ведомый PCM
pcm { } # определение подчиненного PCM
}
[status status-bytes] # биты состояния IEC958, по умолчанию Z 0x08, Y 0x04, X 0x02
[preamble.z or preamble.b val]
[preamble.x or preamble.m val]
[preamble.y or preamble.w val]
[hdmi_mode true]
}
Когда hdmi_mode определяется как "true", 8-канальные сжатые данные форматируются как 4 смежных кадра одного потока IEC958 (требования спецификация HDMI HBR).

Плагин softvol

Плагин программной громкости. Формат, частота дискретизация, каналы должны совпадать как для источника, так и для места назначения.

Если поток стереофонический (два канала), предполагается, что каналы определены как моно, либо 2.0, 2.1, 4.0, 4.1, 5.1 или 7.1.

Если элемент управления уже существует и является системным элементом (т.е. не задается пользователем), плагин передает подчиненный элемент без каких-либо изменений.

pcm.name {
type softvol
slave STR # устройство slave
slave { # определение подчиненного устройства
pcm STR # ведомый PCM
pcm { } # определение подчиненного PCM
[format STR] # формат
}
control {
name STR # строка идентификатора элемента управления
[card STR] # контрольная карта
[iface STR] # интерфейс элемента
[index INT] # индекс элемента
[device INT] # номер устройства элемента
[subdevice INT] # номер подустройства элемента
[count INT] # каналы управления 1 или 2 (по умолчанию: 2)
}
[min_dB REAL] # минимальное значение дБ (по умолчанию: -51,0)
[max_dB REAL] # максимальное значение дБ (по умолчанию: 0,0)
[resolution INT] # разрешение (по умолчанию: 256), где 2 означает выключатель звука
}

Плагин empty

Плагин перенаправляет поток PCM на другой плагин.

pcm.name {
type empty
slave STR # устройство slave
slave { # определение подчиненного устройства
pcm STR # ведомый PCM
pcm { } # определение подчиненного PCM
[format STR] # формат
[channels INT] # каналы
}
}

Плагин: remap

Плагин может переназначать (переименовывать) идентификаторы (кроме части numid) для дочернего элемента управления. Плагин также может объединить несколько дочерних элементов управления в один или разделить один элемент управления на несколько.

ctl.name {
type remap # преобразование route PCM
child STR # устройство slave
child { # определение подчиненного устройства
type STR
...
}
remap { # строки идентификатора анализируются в стиле amixer
SRC_ID1_STR DST_ID1_STR
SRC_ID2_STR DST_ID2_STR
...
}
map { # объединить два элемента управления стерео в один
CREATE_ID1_STR {
SRC_ID1_STR {
vindex.0 0 # исходный канал 0 в объединенный канал 0
vindex.1 1
}
SRC_ID2_STR {