【问题标题】:Dynamic pans in Audiomath not completely smoothAudiomath 中的动态平移并不完全平滑
【发布时间】:2020-02-19 19:13:48
【问题描述】:

我一直在尝试获得类似于 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))

但是,声像听起来并不流畅:声音在中间时音量会增大,而在两侧会略微减弱。关于如何使这样的过渡听起来流畅的任何建议?

【问题讨论】:

    标签: python audio audiomath


    【解决方案1】:

    来自.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() 得到的那样:

    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(保持通道幅值之和不变,而不是功率)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多