0

私は現在、C ++でWindow 7の小さなソフトウェアオーディオシンセサイザーのようなものを構築しています。コア エンジンは実行中で、MIDI イベントを受信すると、ノートを再生したり、プログラムを変更したりします。現時点で困惑しているのは、出力チャンネルの 0 db 基準音圧レベルをどこに置くかです。

シンセサイザーが 440 Hz、振幅 |0.5f| の正弦波を生成するとします。. 騒音レベルを db で計算するには、基準レベル (0 db) を設定する必要があります。これのデフォルトのようなものを知っている人はいますか?

4

2 に答える 2

3

フルスケールに対するデシベルが問題となる場合、別名dBFS0 dB が可能な最大デジタルレベルに割り当てられます。ウィキからの引用:

0 dBFS は、可能な最大デジタル レベルに割り当てられます。[1] たとえば、任意のポイントで最大レベルの 50% に達する信号は、-6 dBFS、つまりフルスケールより 6 dB 低いところでピークに達します。最大デジタル値に達しない限り、すべてのピーク測定値は負の数値になります。

于 2011-10-10T12:32:21.153 に答える
1

まず、単位について明確にする必要があります。dBそれ自体は比率であり、絶対値ではありません。@Roman R.が提案したように、0 dBを使用して「フルスケール」を意味すると、範囲は0 dB(最大)から、関心のある最小値に対応する負のdB値(例:-120)になります。 dB)。ただし、これは単なる任意の測定値であり、信号の絶対値については何もわかりません。

あなたの質問で、絶対単位dB SPLである(SPL =音圧レベル)を参照しています。0 dB SPLは、通常20 µPa(RMS)として定義されます。これは、人間の聴覚のしきい値に近い値です。この場合、対象範囲は、たとえば-20dBSPLから+120dBSPLになります。ただし、任意のdB値だけでなく、実際にdB SPLを測定したい場合は、マイクゲイン、マイク周波数応答、AD感度/ゲイン、およびその他のさまざまな要因を考慮してシステムを調整する必要があります。これは重要ですが、実際に何らかのSPL測定システムを実装する場合は不可欠です。

于 2011-10-10T14:18:51.060 に答える