Я пытаюсь написать программу с использованием Javascript и библиотеки p5.js для запуска случайного изображения из массива при обнаружении пика в аудиофайле.Звуковая библиотека p5 может обнаружить звуковой пик для меня и затем активировать функцию на этом звуковом пике.Тем не менее, у меня нет большого опыта в Javascript, поэтому я не уверен, куда идти дальше.Я создал массив изображений и планирую создать функцию, используя math.Random, чтобы получить одно из этих изображений.Могу ли я затем вызвать эту функцию в моей функции triggerBeat?
Кроме того, я установил изображение в качестве фона, чтобы оно не входило в функцию рисования p5, поэтому я пытаюсь изменить переменную bg.Я предварительно загрузил фоновое изображение, и у меня также есть код в функции предварительной загрузки, позволяющий пользователю загружать аудиофайл.
Извините, если это не имеет смысла.Я довольно новичок в Javascript, и я провел большую часть сегодняшнего дня, пытаясь обернуть его вокруг.
РЕДАКТИРОВАТЬ: обновленный код
var cnv, song, fft, peakDetect, img, bg;
var imageset = new Array("1.png","2.png","3.png");
function preload(){
img = loadImage("1.png");
var loader = document.querySelector(".loader");
document.getElementById("audiofile").onchange = function(event) {
if(event.target.files[0]) {
if(typeof song != "undefined") {
song.disconnect();
song.stop();
}
song = loadSound(URL.createObjectURL(event.target.files[0]));
loader.classList.add("loading");
}
}
}
function setup() {
cnv = createCanvas(900,900);
drawImage(imageset[0]);
fft = new p5.FFT();
peakDetect = new p5.PeakDetect();
setupSound();
peakDetect.onPeak(drawImage(imageset));
}
function draw() {
drawImage();
}
function drawImage(arr) {
var bg = loadImage(random(arr));
background(bg);
fill(0);
text('play', width/2, height/2);
fft.analyze();
peakDetect.update(fft);
}
function setupSound() {
cnv.mouseClicked( function() {
if (song.isPlaying() ) {
song.stop();
} else {
song.play();
}
});
}