首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Audiomath中的动态平移不完全平滑

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

Stack Overflow用户
提问于 2020-02-20 03:13:48
回答 1查看 26关注 0票数 1

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

代码语言:javascript
复制
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))

然而,平底锅听起来并不平滑:当声音在中间时,音量会膨胀,而两边的音量会略有减弱。对于如何让这样的过渡听起来很流畅,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 03:52:13

.pan property docstring中:

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

并相应地从.norm property docstring

对于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()那样的连续音调刺激

代码语言:javascript
复制
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 (使通道振幅之和保持恒定,而不是功率)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60307636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档