ALSA:在播放声音时在 C 代码中使用插件

ALSA: Use plugin in c code while playing sound

我正在播放一个带有一些 c 代码的 wav 声音文件,例如 this。它使用所有 API:

snd_pcm_*

我想使用均衡器插件:

libasound_module_ctl_equal.so, libasound_module_pcm_equal.so

发现于 "libasound2-plugin-equal"

如何从 C 代码集成和调用 Alsa 插件?

你需要让它成为 alsa 链的一部分,例如在 ~/.asoundrc add

pcm.plugequal {
    type equal;
    slave.pcm "plughw:0,0";
}

pcm.!default {
    type plug;   
    slave.pcm plugequal;  
}

可以使用命令播放声音文件

aplay some.wav

对于 Ctl 设备,您可以在 ~/.asoundrc 中添加以下内容

ctl.!default {
    type equal;
}

你可以打电话 混合器

答案比我想象的要简单:

snd_pcm_open(&pcm_handle, "equal", SND_PCM_STREAM_PLAYBACK, 0) < 0);

您可以使用正确的默认文件集将插件名称传递给 snd_pcm_open。