Я экспериментирую с API WebAudio и пытаюсь создать анализатор, с которым пользователь может взаимодействовать и в конечном счете включать и выключать разные частоты в музыке, чтобы изолировать различные удары в треке, то есть бас, удар и т.д.
Я визуализую данные частоты с помощью Canvas и хотел бы, чтобы пользователь мог выделить части визуализации и частоты включения звука в очереди.
По умолчанию визуализация будет выглядеть так, и пользователь будет слышать все частоты.
Но когда пользователь выбирает несколько баров, серые оттенки заглушат связанные частоты:
Мое мышление заключается в том, могу ли я реконструировать массив frequencyData и существенно отключить связанные частоты?
** Обновление **
Итак, я играл, добавляя несколько biquadFilter
с типом notch
последовательно, а затем настраивая их частоту и значения Q. Эта помощь помогает изолировать покровы музыки, но не совсем так, как я хочу. Это код, который я использую до сих пор...
const audioContext = new window.AudioContext();
const source = audioContext.createMediaElementSource(element);
const biquadFilter1 = audioContext.createBiquadFilter();
const biquadFilter2 = audioContext.createBiquadFilter();
const biquadFilter3 = audioContext.createBiquadFilter();
const analyser = audioContext.createAnalyser();
biquadFilter1.connect(analyser);
biquadFilter2.connect(analyser);
biquadFilter3.connect(analyser);
source
.connect(biquadFilter1)
.connect(biquadFilter2)
.connect(biquadFilter3);
analyser.connect(audioContext.destination);
Я не уверен, правильно ли я настроил это, но это позволяет мне очень грубо манипулировать частотами, но похоже, что нет точной науки, чтобы делать это таким образом.
Я пытаюсь сделать это, и если да, то любые предложения действительно оценены:)