Как настроить громкость в SuperCollider в децибелах?

У меня есть простой SinOsc, который играет тон 432 Гц. Я хочу иметь возможность установить этот тон на -97 дБ. Вот что у меня так далеко:

{
    SinOsc.ar(432, 0, 0.01 /*edit this for volume*/, 0)
}.play;

Несмотря на то, что я вижу, как редактировать громкость, я не вижу способа установить точный уровень дБ.

Если вам интересно, почему я это делаю, мне нужен тональный сигнал для тестирования 24-битного или 16-битного звука.

Как я могу установить точный уровень дБ или получить мониторинг, чтобы показать мне, на каком я уровне?

2 ответа

Решение

Ах, круто видеть вопрос SuperCollider в Top Questions.

Я считаю, что метод, который вы ищете .dbamp, Смотрите документы.

Пример: (из книги SuperCollider, глава 2)

/* Figure 2.6 */
(
SynthDef(\UGen_ex6, {arg gate = 1, roomsize = 200, revtime = 450;
    var src, env, gverb;
    env = EnvGen.kr(Env([0, 1, 0], [1, 4], [4, -4], 1), gate, doneAction: 2);
    src = Resonz.ar(
            Array.fill(4, {Dust.ar(6)}),
            1760 * [1, 2.2, 3.95, 8.76] +
                Array.fill(4, {LFNoise2.kr(1, 20)}),
            0.01).sum * 30.dbamp;
    gverb = GVerb.ar(
        src,
        roomsize,
        revtime,
        // feedback loop damping
        0.99,
        // input bw of signal
        LFNoise2.kr(0.1).range(0.9, 0.7),
        // spread
        LFNoise1.kr(0.2).range(0.2, 0.6),
        // almost no direct source
        -60.dbamp,
        // some early reflection
        -18.dbamp,
        // lots of the tail
        3.dbamp,
        roomsize);
    Out.ar(0, gverb * env)
}).add;
)
a = Synth(\UGen_ex6);

Если это 0.01 значение - это усиление, затем просто замените его на результат

10^(-97/20) = 0.00001412537
Другие вопросы по тегам