Я пытаюсь установить значение скорости, значение которого находится в среднем сигнале для усиления. Скорость колеблется от 0 до 127.Объемная скорость для получения веб-звука
Документация на web audio api, хотя и хорошо сделана, на самом деле ничего не говорит об этом.
В настоящее время у меня есть это, чтобы играть звуки:
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);
});
}
я не нашел ничего, чтобы использовать значения скорости в диапазоне от 0 до 127. Тем не менее, я нашел gain node, который применяется коэффициент усиления.
Так что моя функция теперь это:
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 ... если я применяю миди значение скорости для усиления, я, очевидно, есть звук, который безумно громко. Поэтому я хотел бы знать любой из этих двух вопросов:
- Могу ли я как-то использовать значение скорости напрямую?
- Как преобразовать значение скорости для усиления?
Спасибо, я попробовал это. Результат был тихим, может быть, потому, что я, возможно, неправильно понял то, что вы имели в виду под «вам нужно сопоставить это ослабление с коэффициентом усиления». В любом случае, опробовав разные формулы, я нашел тот, который я нахожу достаточно хорошим в динамике, которую он обеспечивает (коэффициент усиления = скорость²/6400). Это может быть не научно достоверно, но с вашей формулой у меня было 8 дБ для 80-скоростного 20 * log (16129/6400) = 8. Это еще и слишком загруженная. Я соглашусь с ответом, потому что это кажется правильным, но я не думаю, что буду использовать. – Ced
Чтобы отобразить дБ на линейный коэффициент (если это то, что использует узел усиления), отбросьте логарифм 20 * и обратите внимание, что затухание противоположно коэффициенту усиления. Таким образом, коэффициент усиления будет «скорость2/127²». –