【发布时间】:2023-03-12 14:35:01
【问题描述】:
我正在使用 FMOD 库将 FFT 应用于音频流,从而为我提供不断更新的固定数量的频率区间。每个 bin 表示一个相等的频率范围,其值介于 0 和 1 之间,表示处理后的音频中该范围的强度。 FMOD 文档指出这些值可以用分贝表示,其中 val 是介于 0 和 1 之间的值:
Decibels = 10.0f * (float)log10(val) * 2.0f
我正在尝试制作一个类似频闪的自动节拍检测可视化。到目前为止,我以恒定的时间间隔进行测试,以查看特定频率箱的强度值是否超过指定的边界 - 如果是这种情况,则闪光灯会闪烁。虽然这是一种非常粗略的方法,但它对我的要求相当有效。
但是,此指定边界仅在系统/音乐播放器的音量最大时才有效。当我降低任一音量时,频闪灵敏度会降低,变得非常不准确或完全停止闪烁。我假设我需要以某种方式对数据进行归一化,以便独立于体积执行分析,尽管通过按1/value of largest bin 缩放数据,最大值总是最大化。这会永久超出指定的边界,导致闪光灯无限闪烁。我想不出还有什么办法可以做到这一点,并且已经精神障碍好几天了 - 任何帮助或正确方向的观点将不胜感激!
【问题讨论】:
标签: algorithm audio normalization frequency fmod