Я хочу обнаруживать проигрываемые ноты и аккорды с помощью API Web Audio (используя микрофон в качестве устройства ввода). Прежде чем я смогу проанализировать данные, мне нужны отдельные частоты, сопоставленные с их громкостью. Я начал со следующего фрагмента:
const stream = await navigator.mediaDevices.getUserMedia({
audio: true,
video: false
});
const context = new AudioContext();
const source = context.createMediaStreamSource(stream);
const analyser = context.createAnalyser();
const data = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(data);
data
теперь представляет собой массив значений от 0
до 255
. Вопрос, который у меня сейчас возникает, заключается в том, как я могу сопоставить частоты со значениями громкости массива данных?
В идеале мне бы хотелось, чтобы объект был таким:
{
...
438: 128,
439: 200,
440: 255,
441: 200,
...
}
Спасибо за ваше помощь.