单击鼠标从预加载播放随机声音文件(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.length
。 Math.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);
}
}
"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.length
。 Math.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);
}
}