ALSA Library Reference Manual
NANE
snd_mixer_element_build - Mixerインターフェースのエレメントの制御情報を取得する関数
SYNOPSIS
DESCRIPTION
snd_mixer_element_build関数はMixerインターフェースのelement->eidの示すエレメントの制御情報をelement->data共用体のそれぞれ適した構造体に取得する。
この関数で取得した情報にはmallocで確保された領域を含むことがあるので使用した情報はsnd_mixer_element_free関数で解放すること。また、呼び出すエレメントの種類によっては、snd_mixer_element_info_build関数からの情報も使うことがあるので、必要な場合には前もって情報を取得しておくこと。
この関数では、element->eidの示すエレメントの種類によってそれぞれ以下の情報が取得できる。
- SND_MIXER_ETYPE_SWITCH1
- このエレメントはチャネルのスイッチである。
int element->data.switch1.swに割り当てられたビット数を返し、unsigned int element->data.switch1.psw[0...n]の下位ビットから順に現在設定されているスイッチの状態を返す。指定ビットがセットされていればONであり、そうでなければOFFである。
- SND_MIXER_ETYPE_SWITCH2
- このエレメントはモノラルチャネルのスイッチである。
int element->data.switch2.swの最下位ビットに現在設定されているスイッチの状態を返す。指定ビットがセットされていればONであり、そうでなければOFFである。
- SND_MIXER_ETYPE_SWITCH3
- このエレメントはチャネルの入力から出力への経路の変更が可能なスイッチである。
int element->data.switch3.rswに経路情報を示す表の要素数を示す。このスイッチに属するチャネルは、入力チャネルであり出力チャネルでもある。よってこの表の要素数は、このエレメントの持つチャネル数の2乗に等しくなければならない。
unsigned int element->data.switch3.prsw[0...(rsw - 1) / 32]に下位ビットから順に現在設定されているスイッチの状態を返す。指定ビットがセットされていればONであり、そうでなければOFFである。
このビットは出力チャネル順に配置され、入力チャネル分用意されている。これらのチャネルの順序と情報はsnd_mixer_element_info_build関数より得られる。それらの情報も取得しておく。
- SND_MIXER_ETYPE_VOLUME1
- このエレメントはチャネルの音量設定を行なう。
int element->data.volume1.voicesにチャネル数を返し、int element->data.volume1.pvoices[0...(voices-1)]に現在の音量を返す。このチャネルの順序および情報はsnd_mixer_element_info_build関数より得られる。それらの情報も取得しておく。
- SND_MIXER_ETYPE_VOLUME2
- このエレメントはソースボイスから各接続先のチャネルへの音量を設定する。
int element->data.voloume2.avoicesに経路情報を示す表の要素数を示す。この表の要素数は、ソースボイス数と接続先のチャネル数の積に等しくなければならない。
int element->data.volume2.pavoices[0...(avoices - 1)]にソースボイスの各接続先のチャネルに対する音量を返す。
この音量は各出力チャネル順に配置され、ソースボイス分用意されている。これらのソースボイスおよびチャネルの順序と情報はsnd_mixer_element_info_build関数より得られる。それらの情報も取得しておく。
- SND_MIXER_ETYPE_ACCU3
- このエレメントは出力の利得を変更できる加算器である。
int element->data.accu3.voicesにチャネル数を、int element->data.accu3.pvoices[0...(voices-1)]に現在設定されている音量を返す。
- SND_MIXER_ETYPE_MUX1
- このエレメントは入力エレメントの選択をする。
このエレメントで選択できる入力エレメントは、このエレメントへの経路を持つエレメントだけである。その情報は、snd_mixer_routes関数によって現在使用しているMixerインターフェースより探す必要がある。
int element->data.mux1.outputにエレメント数を、snd_mixer_eid_t element->data.mux1.poutput[0...(output-1)]に接続されているエレメントを返す。
- SND_MIXER_ETYPE_MUX2
- このエレメントは一つだけの入力エレメントを扱う。
このエレメントで選択できる入力エレメントは、このエレメントへの経路を持つエレメントだけである。その情報は、snd_mixer_routes関数によって現在使用しているMixerインターフェースより探す必要がある。
snd_mixer_eid_t element->data.mux2.outputに接続されているエレメントを返す。
- SND_MIXER_ETYPE_TONE_CONTROL1
- このエレメントはトーンコントローラである。
unsigned int element->data.tc1.tcにこのトーンコントローラの機能をSND_MIXER_TC1_XXXXに照合されるビット値で示す。
- SND_MIXER_TC1_SW
- このトーンコントローラにはon/offのスイッチがある。
unsigned int info->data.tc1.swの最下位ビットがセットされていればONであり、そうでなければOFFである。
- SND_MIXER_TC1_BASS
- このトーンコントローラには低音の制御がある。
int element->data.tc1.bassに低音域の音量を返す。
- SND_MIXER_TC1_TREBLE
- このトーンコントローラには高音の制御がある。
int element->data.tc1.trebleに高音域の音量を返す。
- SND_MIXER_ETYPE_PAN
_CONTROL1
- このエレメントはPANの調整を行なう。
int element->data.pan1.panにチャネル数を返し、int element->data.pan1.ppan[0...(pan-1)]に現在のPANの位置を返す。
- SND_MIXER_ETYPE_3D_EFFECT1
- このエレメントは3Dエフェクタである。
unsigned int element->data.teffect1.effectにこの3Dエフェクタの機能をSND_MIXER_MUX1_XXXXに照合されるビット値で返す。
- SND_MIXER_EFF1_SW
- この3Dエフェクタにはon/offのスイッチがある。
unsigned int element->data.teffect1.swの最下位ビットがセットされていればONであり、そうでなければOFFである。
- SND_MIXER_EFF1_MONO_SW
- この3Dエフェクタにはモノラルのon/offのスイッチがある。
unsigned int element->data.teffect1.mono_swの最下位ビットがセットされていればONであり、そうでなければOFFである。
- SND_MIXER_EFF1_WIDE
- この3Dエフェクタにはワイドエフェクトがある。
int element->data.teffect1.wideにワイドエフェクトの大きさを返す。
- SND_MIXER_EFF1_VOLUME
- この3Dエフェクタにはボリュームエフェクトがある。
int element->data.teffect1.volumeにボリュームエフェクトの大きさを返す。
- SND_MIXER_EFF1_CENTER
- この3Dエフェクタにはセンターエフェクトがある。
int element->data.teffect1.centerにセンターエフェクトのの大きさを返す。
- SND_MIXER_EFF1_SPACE
- この3Dエフェクタにはスペースエフェクトがある。
int element->data.teffect1.spaceにスペースエフェクトの大きさを返す。
- SND_MIXER_EFF1_DEPTH
- この3Dエフェクタにはディプスエフェクトがある。
int element->data.teffect1.depthにディプスエフェクトの大きさを返す。
- SND_MIXER_EFF1_DELAY
- この3Dエフェクタにはディレイエフェクトがある。
int element->data.teffect1.delayにディレイエフェクトの大きさを返す。
- SND_MIXER_EFF1_FEEDBACK
- この3Dエフェクタにはフィードバックエフェクトがある。
int element->data.teffect1.feedbackにフィードバックエフェクトの大きさを返す。
- SND_MIXER_EFF1_DEPTH_REAR
- この3Dエフェクタにはディプスリアエフェクトがある。
int element->data.teffect1.depth_rearにディプスリアエフェクトの大きさを返す。
- SND_MIXER_ETYPE_PRE_EFFECT1
- このエレメントはプリエフェクタである。
int element->itemに項目IDを返す。-1であればユーザーパラメータである。
int element->data.peffect1.parametersにパラメータ数を返し、int element->data.peffect1.pparameters[0...(parameters-1)]にパラメータの設定値を返す。
RETURN VALUES
snd_mixer_element_build関数は成功すれば0を返し、そうでなければエラーコードを返す。
SEE ALSO
snd_mixer_element_read, snd_mixer_element_free, snd_mixer_routes, snd_mixer_element_info_build, snd_mixer_element_switch1, snd_mixer_element_switch2, snd_mixer_element_switch3, snd_mixer_element_mux1, snd_mixer_element_mux2, snd_mixer_element_accu3, snd_mixer_element_volume1, snd_mixer_element_volume2, snd_mixer_element_tone_control1, snd_mixer_element_pan_control1, snd_mixer_element_3d_effect1, snd_mixer_element_pre_effect1