ベロシティ値を設定しようとしています。ベロシティの範囲は0〜127です。ウェブ音量を得る音量ベロシティ
web audio apiのドキュメントは実際にはこれについて何も言いません。私は、ゲインを適用gain nodeを見つけましたが、0から127までの範囲で速度値を使用するために何かを見つけることができませんでした
play(key, startTime) {
this.audioContext.decodeAudioData(this.soundContainer[key], (buffer) => {
let source = this.audioContext.createBufferSource();
source.buffer = buffer;
source.connect(this.audioContext.destination);
source.start(startTime);
});
}
:私はサウンドを再生するには、このをした瞬間に
。
だから私の機能は今、このです:
play(key:string, startTime, velocity) {
this.audioContext.decodeAudioData(this.soundContainer[key], (buffer) => {
let source = this.audioContext.createBufferSource();
source.buffer = buffer;
source.connect(this.gainNode);
this.gainNode.connect(this.audioContext.destination);
this.gainNode.gain.value = velocity;
source.start(startTime);
});
}
Eehhh ...私はゲインにMIDIベロシティ値を適用した場合、私は明らかにめちゃくちゃ大声で音を持っています。だから私はこれらの2つの質問のいずれかを知りたいと思います:
- 私は何とか速度値を直接使用できますか?
- どのようにしてベロシティ値をゲインに変換できますか?
ありがとう、私はこれを試しました。結果は静かで畏敬の念でした。なぜなら、あなたが「この減衰量をゲイン係数にマッピングしなければならない」ということを誤解していたかもしれないからです。とにかく、別の数式を試してみると、私はそれが提供するダイナミクス(gain =velocity²/ 6400)で十分に良いものを見つけました。それは科学的に正確ではないかもしれませんが、あなたの公式で私は80速度20 * log(16129/6400)= 8に対して8 dbゲインを得ました。私は正しいと思われるので答えを受け入れるだろうが、それは私が推測するものではない。 – Ced
dBを線形因数にマッピングするには(利得ノードが使用する場合)、20 *対数を落とし、減衰は利得の逆であることに注意してください。ゲイン係数は 'velocity²/127²'になります。 –