我一直在尝试获得类似于audiomath examples中的动态平移演示的效果
import math
import audiomath as am
s = am.TestSound('12').MixDownToMono()
p = am.Player(s)
period_in_seconds = 4.0
p.Play(loop=True, pan=lambda t: math.sin(2 * math.pi * t / period_in_seconds))然而,平底锅听起来并不平滑:当声音在中间时,音量会膨胀,而两边的音量会略有减弱。对于如何让这样的过渡听起来很流畅,有什么建议吗?
发布于 2020-02-20 03:52:13
根据-1和+1之间的标量值计算级别的方式取决于
.norm。
对于
Player实例p,如果将p.pan设置为-1和+1之间的标量值,则左声道和右声道的相对级别计算如下:
left ** p.norm + right ** p.norm = 1
值p.norm=2会生成听起来自然的平移效果,但这意味着立体声声音在默认情况下会减少到最大振幅的70.71%。因此,默认情况下使用无穷大范数p.norm='inf',它确保两边中较大的一个始终为1.0
因此,默认设置确实是非平滑平移。将norm=2添加到您的Player属性可能是可行的-这将保持通道之间的总信号功率恒定。顺便说一句,判断这一点最敏感的方法是使用像ToneTest()那样的连续音调刺激
import math, audiomath as am
am.RequireAudiomathVersion('1.10')
period_in_seconds = 4.0
p = am.ToneTest(norm=2, pan=lambda t: math.sin(2 * math.pi * t / period_in_seconds) )
p.Play()
# now experiment with `p.norm` while it's playing您也可以尝试norm=1 (使通道振幅之和保持恒定,而不是功率)。
https://stackoverflow.com/questions/60307636
复制相似问题