gpt4 book ai didi

audio - 重新调整对数dB值刻度

转载 作者:行者123 更新时间:2023-12-03 00:34:32 30 4
gpt4 key购买 nike

我目前正在努力实现峰值仪表,并且需要重新调整对数dB值。
在搜索现有功能时,我发现了这一点:How do I calculate logrithmic labels for a VU meter scale?

它几乎可以满足我的需求。
我没有那些函数的数学背景。

我希望有人可以解释。

function sigLog(n) {
return Math.log(Math.abs(n) + 1) / Math.log(10) * sig(n);
}

function sig(n) {
return n == 0 ? 0 : Math.abs(n) / n;
}


function sigExp(n) {
return (Math.pow(10, Math.abs(n)) - 1) * sig(n);
}

最佳答案

首先,logarithmic scale只是可能的数字刻度之一,线性的只是另一种。例如,摄氏或华氏温度标度。您可能对“摄氏温度”或“华氏温度”一无所知,但您可以简单地使用以下公式:

[°C] = ([°F] - 32) × 5/9  
[°F] = [°C] × 9/5 + 32

... 并且不要考虑任何(因为严格定义了这些比例)。

至于对数和线性比例尺,您应该考虑一下,因为您应该知道当前使用的是哪种比例尺:例如,您有一些“对数”值,但是目标线性比例尺的限制是什么?从0到32768,或者可以从0到1?另外,标准使用的对数底数是10,但也可以是10。

我在c++中将对数音量参数转换为线性比率系数(从“log”到[0,1]线性标度)的方法:
float db_to_linear_ratio(float db_val)
{
return pow(10.0, db_val/10.0);
}

See: Why is a logarithmic scale used to measure sound?

编辑。 对于峰值仪表,我从未见过真正的线性刻度。在声音编辑器中,峰值表仅以统一的比例显示对数值(-72,-30,-1、0,...):

enter image description here

因此,我为您提供了一个解决方案,您无需将dB值转换为线性比例,而只需以均匀的比例显示它们即可。

关于audio - 重新调整对数dB值刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43516759/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com