【问题标题】:How do I set volume in SuperCollider in Decibels?如何以分贝为单位设置 SuperCollider 的音量?
【发布时间】:2017-08-17 09:38:09
【问题描述】:

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

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

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

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

如何设置精确的 dB 级别或进行监控以显示我的级别?

【问题讨论】:

    标签: audio supercollider


    【解决方案1】:

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

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

    示例:(来自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);
    

    【讨论】:

    • 这听起来像是这样做的方式!我现在要搞砸了,但是一个例子会很棒
    • 是的,我用 The SuperCollider Book 中的一个例子更新了我的答案。
    【解决方案2】:

    如果 0.01 的值是增益,那么只需将其替换为

    的结果
    10^(-97/20) = 0.00001412537
    

    【讨论】:

    • 很好的答案,但不如其他人的好。无论如何谢谢(:
    • 当然。我不知道 sclang,所以我只是发布了规范转换。这可能就是.dbamp 在幕后所做的一切
    • 有趣。你怎么知道这是“规范”转换?我不认为这种事情会是标准的。
    • dB 只是在对数尺度相关时以可掌握的方式表示的比率(这对于与人类感知有关的事物是典型的 - 韦伯定律)。线性到 dB 就是 20*log10(linear_value),正如我发布的那样,dB 到线性就是 10^(dB/20)。这就是这些实用函数在后台所做的所有事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2023-03-31
    • 2013-10-29
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多