单击鼠标从预加载播放随机声音文件(mp3 文件)

Play random sound file (mp3 file) from preload on mouse click

"I want it so when mouseispressed it plays a random sound file from the three soundfiles preloaded already at the top of the code. at the moment i can only play one sound file at a time "

function preload() {
    bird = loadSound('kooka.mp3');
    bird2 = loadSound('galah.mp3');
    bird3 = loadSound('cuckoo.mp3');
}

function setup() {
    createCanvas(windowWidth, windowHeight);
    background(0);
}

function draw() {
    kooka(); 
}

function kooka () {

    if (mouseIsPressed) {

        bird2.playMode('untildone');
        bird2.play();
        bird2.setVolume(0.3);

创建一个声音数组并"select"从数组中随机生成一个声音:

let sounds = [bird, bird2, bird3];
let randomSound = sounds[Math.floor(Math.random()*sounds.length)];

Math.random() 生成一个介于 0.0 和 1.0 之间的随机数。所以 Math.random()*sounds.length 是一个浮点数 >= 0.0 且 < sounds.lengthMath.floor 取小于或等于该数的整数值。

如果多次按下鼠标按钮,将播放多个声音。 为确保一次只播放一个声音,您必须在变量 (currentSound) 中记下当前声音并验证声音是否已播放完毕,然后才能开始播放新声音。
此外使用 mousePressed() callback rather than the built-in state variable mouseIsPressed。该事件仅在按下鼠标时发生一次,而只要按下鼠标就会声明变量。例如:

function draw() {
}

let currentSound;
function mousePressed() {

    let is_playing = currentSound && currentSound.isPlaying();
    if (!is_playing) {

        let sounds = [bird, bird2, bird3];
        currentSound = sounds[Math.floor(Math.random()*sounds.length)];

        currentSound.playMode('untilDone');
        currentSound.play();
        currentSound.setVolume(0.3);
    }
}
var input;
var mic; 
var bird;
var bird2;
var bird3; 
var bird4; 
var bird5; 
var bird6; 


function preload() {
       bird = loadSound('kooka.mp3');
       bird2 = loadSound('galah.mp3');
       bird3 = loadSound('lyre.mp3');
       bird4 = loadSound('friar.mp3');
       bird5 = loadSound('whistler.mp3');
       bird6 = loadSound('cuckoo.mp3');

    }


function setup() {
  createCanvas(windowWidth, windowHeight);
  background(0);
  input = new p5.AudioIn();
  input.start();


}

function draw() {



     var volume = input.getLevel();
     var threshold = 0.2;
     var regularArr = [bird, bird2, bird3, bird4, bird5, bird6];

    if (volume > threshold) {
    shuffle(regularArr, true);
        var newArr = shuffle(regularArr);
        var beh = newArr[0]; 
        var bef = newArr[1]; 
        var ben = newArr[2];
        var beq = newArr[3];
        var bek = newArr[4];
        var bez = newArr[5];

        beh.playMode('untilDone');
        beh.play(0.1);
        bef.stop(); 
        ben.stop();
        beq.stop(); 
        bek.stop(); 
        bez.stop();  
        print(beh);


}
}