Dynami c сковородки в Audiomath не совсем гладкие - PullRequest
2 голосов
/ 19 февраля 2020

Я пытался получить эффект, похожий на демонстрацию с динамическим c из аудиомата примеров :

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))

Однако панорамирование не звук плавный: громкость возрастает, когда звук находится посередине, и слегка затухает с обеих сторон. Какой-нибудь совет, как сделать плавные переходы, подобные этому?

1 Ответ

1 голос
/ 19 февраля 2020

Из свойства .pan docstring :

Способ вычисления уровней из скалярных значений от -1 до +1 зависит от .norm.

и соответственно из свойства .norm 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 свойствам может быть подходящим способом, при котором общий сигнал power будет постоянным по каналам. Между прочим, самый чувствительный способ оценить это - использовать непрерывный тональный стимул, как вы получаете от 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 (сохраняет сумма канала амплитуды постоянная вместо мощности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...