Bonjour, j'aimerais faire un mix de ces deux codes https://www.youtube.com/watch?v=NWY89IO4w_0&t=1837s&ab_channel=YaoKevin et https://codepen.io/nfj525/pen/rVBaab
Je m'explique, j'aimerais le visuel du codepen avec les barres de couleurs en fonction de la musique mais avec le système de la vidéo youtube où quand on clic ça lance direct sans avoir à sélectionner un fichier. Si quelqu'un peut m'aider car je ne maitrise pas du tout le .js, Merci (Si je ne suis pas clair n'hésitez pas à me demander)
Sûrement quelques chose à modifier dans le .js du coup :
Je m'explique, j'aimerais le visuel du codepen avec les barres de couleurs en fonction de la musique mais avec le système de la vidéo youtube où quand on clic ça lance direct sans avoir à sélectionner un fichier. Si quelqu'un peut m'aider car je ne maitrise pas du tout le .js, Merci (Si je ne suis pas clair n'hésitez pas à me demander)
Sûrement quelques chose à modifier dans le .js du coup :
window.onload = function() {
var file = document.getElementById("thefile");
var audio = document.getElementById("audio");
file.onchange = function() {
var files = this.files;
audio.src = URL.createObjectURL(files[0]);
audio.load();
audio.play();
var context = new AudioContext();
var src = context.createMediaElementSource(audio);
var analyser = context.createAnalyser();
var canvas = document.getElementById("canvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var ctx = canvas.getContext("2d");
src.connect(analyser);
analyser.connect(context.destination);
analyser.fftSize = 256;
var bufferLength = analyser.frequencyBinCount;
console.log(bufferLength);
var dataArray = new Uint8Array(bufferLength);
var WIDTH = canvas.width;
var HEIGHT = canvas.height;
var barWidth = (WIDTH / bufferLength) * 2.5;
var barHeight;
var x = 0;
function renderFrame() {
requestAnimationFrame(renderFrame);
x = 0;
analyser.getByteFrequencyData(dataArray);
ctx.fillStyle = "#000";
ctx.fillRect(0, 0, WIDTH, HEIGHT);
for (var i = 0; i < bufferLength; i++) {
barHeight = dataArray[i];
var r = barHeight + (25 * (i/bufferLength));
var g = 250 * (i/bufferLength);
var b = 50;
ctx.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
ctx.fillRect(x, HEIGHT - barHeight, barWidth, barHeight);
x += barWidth + 1;
}
}
audio.play();
renderFrame();
};
};