Я искал что-то похожее и наткнулся на ваше сообщение, после прочтения, я нашел решение для себя, я работаю с аудио API и хотел динамический цвет, основанный на переменной, поступающей с частоты в звуковой файл. Вот то, что я придумал, и пока оно просыпается, подумал, что я опубликую его на случай, если это поможет, так как я получил вдохновение от вашего вопроса:
function frameLooper(){
window.requestAnimationFrame(frameLooper);
fbc_array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(fbc_array);
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Clear the canvas
bars = 100;
for (var i = 0; i < bars; i++) {
bar_x = i * 3;
bar_width = 2;
bar_height = -(fbc_array[i] / 2);
bar_color = i * 3;
//fillRect( x, y, width, height )
// Explanation of the parameters below
ctx.fillRect(bar_x, canvas.height, bar_width, bar_height);
ctx.fillStyle = "rgb(100," + bar_color + "," + bar_color + ")" ;
// Color of the bars