delphi - 带 Bass.DLL 的简单婴儿监视器

标签 delphi bass bass.dll

我正在尝试为 Windows 编写一个简单的 Babymonitor(个人使用)。 婴儿监视器应该只检测麦克风的 dB 级别并在一定音量下触发。

经过一番研究,我找到了 Bass.dll 库,并发现了它的函数 BASS_ChannelGetLevel,这个函数很棒,但似乎有限制,不符合我的需求(峰值等于 DWORD 值) )。

在示例中,我找到了一个 livespec 示例,它“几乎”是我需要的。该示例使用 BASS_ChannelGetData,但我不太知道如何处理返回的数组...

我想让它尽可能简单:检测麦克风的音量为 dB 或任何其他值(例如值 0-MAXINT)。

如何使用 Bass.dll 库来完成此操作?

最佳答案

BASS_ChannelGetLevel 返回上限为 0dB 的值(在本例中返回值为 32768)。如果您调整源级别(声卡设置中较低的麦克风级别),那么它就会正常工作。

另一种方法,如果您想获得无上限的值,请使用 BASS_ChannelGetLevelEx 函数:它返回浮点级别,其中 1 是对应于 BASS_ChannelGetLevel 的 32767 的最大 (0dB) 值,但它可以超过 1 以检测您可能需要的高于 0dB 的声音级别。

我还建议您监视一段时间的声音级别:仅当特定级别存在至少 2-3 秒时才触发(这样您就可以排除误报)。

关于delphi - 带 Bass.DLL 的简单婴儿监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40327832/

相关文章:

delphi - 如何在Delphi中进行屏幕保护预览?

delphi - 如何安全绕过Delphi错误: "types of formal and actual parameters must be identical"

c# - BASS WASAPI BPMCounter

c# - Bass.dll多次播放PushStream

java - 加载 .so 库时出现问题

delphi - 使用新事件创建自定义框架

php - Delphi IdHTTP.get 和 PHP file_get_contents 显示相同 URL 的不同文本

c++ - 使用 Bass 库绘制音频频谱

Delphi:BASS.dll - 如何将 MP3 流的一部分复制到另一个文件