4

我有一个简单的 SinOsc,它播放 432 赫兹的音调。我希望能够将该音调设置为 -97 dB。这是我到目前为止所拥有的:

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

尽管我可以看到如何编辑音量,但我看不到设置精确 dB 电平的方法。

如果您想知道我为什么要这样做,我需要一个音调来测试 24 位和 16 位音频。

如何设置精确的 dB 电平或进行监控以显示我所处的电平?

4

2 回答 2

3

啊,很高兴在热门问题中看到 SuperCollider 问题。

我相信您正在寻找的方法是.dbamp. 请参阅文档

示例:(来自The SuperCollider Book,第 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);
于 2017-03-24T12:41:08.680 回答
1

如果该0.01值是增益,则只需将其替换为

10^(-97/20) = 0.00001412537
于 2017-03-24T12:39:12.457 回答