Python Audiomath中的动态平移不完全平滑

Python Audiomath中的动态平移不完全平滑,python,audio,audiomath,Python,Audio,Audiomath,我一直在尝试从audiomath中获得类似于动态平移演示的效果: 导入数学 将audiomath作为am导入 s=am.TestSound('12').MixDownToMono() p=上午球员 以秒为单位的周期=4.0 p、 播放(loop=True,pan=lambda t:math.sin(2*math.pi*t/period(以秒为单位)) 然而,锅的声音并不平滑:当声音在中间时音量会膨胀,两边都会略微变小。关于如何使这样的过渡听起来平滑,有什么建议吗?来自: 从-1和+1之间的标量

我一直在尝试从audiomath中获得类似于动态平移演示的效果:

导入数学
将audiomath作为am导入
s=am.TestSound('12').MixDownToMono()
p=上午球员
以秒为单位的周期=4.0
p、 播放(loop=True,pan=lambda t:math.sin(2*math.pi*t/period(以秒为单位))
然而,锅的声音并不平滑:当声音在中间时音量会膨胀,两边都会略微变小。关于如何使这样的过渡听起来平滑,有什么建议吗?

来自:

从-1和+1之间的标量值计算级别的方式取决于
.norm

并据此从:

对于
Player
实例
p
,如果将
p.pan
设置为介于-1和+1之间的标量值,将计算左右声道的相对电平,以便:

左**p.norm+右**p.norm=1

p.norm=2
会产生一个自然的音域,但这意味着默认情况下立体声会降低到其最大振幅的70.71%。因此,默认情况是使用无穷大范数,
p.norm='inf'
,这确保了两边中的较大值始终为1.0

因此,默认设置实际上是非平滑平移。将
norm=2
添加到您的
Player
属性中可能是保持各频道总信号功率恒定的方法。顺便说一句,判断这一点最敏感的方法是使用连续的音调刺激,就像你从以下方面得到的:

您也可以尝试
norm=1
(保持通道振幅之和不变,而不是功率)

来自:

从-1和+1之间的标量值计算级别的方式取决于
.norm

并据此从:

对于
Player
实例
p
,如果将
p.pan
设置为介于-1和+1之间的标量值,将计算左右声道的相对电平,以便:

左**p.norm+右**p.norm=1

p.norm=2
会产生一个自然的音域,但这意味着默认情况下立体声会降低到其最大振幅的70.71%。因此,默认情况是使用无穷大范数,
p.norm='inf'
,这确保了两边中的较大值始终为1.0

因此,默认设置实际上是非平滑平移。将
norm=2
添加到您的
Player
属性中可能是保持各频道总信号功率恒定的方法。顺便说一句,判断这一点最敏感的方法是使用连续的音调刺激,就像你从以下方面得到的:

您也可以尝试
norm=1
(保持通道振幅之和不变,而不是功率)

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