Audio 如何设置超级对撞机的音量(分贝)?

Audio 如何设置超级对撞机的音量(分贝)?,audio,supercollider,Audio,Supercollider,我有一个简单的SinOsc,它播放432赫兹的音调。我希望能够将音调设置为-97 dB。以下是我目前掌握的情况: { SinOsc.ar(432, 0, 0.01 /*edit this for volume*/, 0) }.play; 即使我能看到如何编辑音量,我也看不到设置精确dB级别的方法 如果你想知道我为什么这么做,我需要一个音调来测试24位和16位音频 我如何设置精确的dB级别,或通过监控显示我的级别?如果该0.01值是增益,则只需将其替换为 10^(-97/20) = 0.

我有一个简单的SinOsc,它播放432赫兹的音调。我希望能够将音调设置为-97 dB。以下是我目前掌握的情况:

{
    SinOsc.ar(432, 0, 0.01 /*edit this for volume*/, 0)
}.play;
即使我能看到如何编辑音量,我也看不到设置精确dB级别的方法

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


我如何设置精确的dB级别,或通过监控显示我的级别?

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

10^(-97/20) = 0.00001412537

啊,在顶级问题中看到超级对撞机问题很酷

我相信您正在寻找的方法是
.dbamp
。看

示例:(摘自第2章)


听起来是这样做的!我现在要把它搞砸了,但一个例子会让人大吃一惊是的,我用超级对撞机手册中的一个例子更新了我的答案。答案很好,但不如其他人的好。无论如何谢谢(:当然。我不知道sclang,所以我只是发布了规范转换。这可能就是
.dbamp
在幕后所做的一切。你怎么知道这是“规范”呢转换?我不认为这类事情是标准的。当对数标度相关时,dB只是一个可用可理解的方式表示的比率(这是与人类感知相关的事物的典型情况——韦伯定律)。与dB的线性关系就是
20*log10(线性值)
,正如我发布的dB to Linear就是
10^(dB/20)
。这些实用功能将在引擎盖下完成。
/* 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);