xxxxxxxxxx
56
//https://discourse.processing.org/t/applying-envelope-functions-to-a-soundfile/10047
// combine play a wav/mp3 file with the ADSR example
// https://p5js.org/reference/#/p5.SoundFile
// https://p5js.org/reference/#/p5.Envelope/setInput
function preload() {
soundFormats('mp3', 'ogg', 'wav');
// mySound = loadSound('data/sin440.wav'); //ok
mySound = loadSound('data/jingle.mp3'); //ok
}
// ADSR params
var attackLevel = 1.0;
var releaseLevel = 0;
var attackTime = 0.001;
var decayTime = 0.2;
var susPercent = 0.2;
var releaseTime = 0.5;
var env, triOsc;
var usefile = true;//false; // play here to select file or synth
var useenv = true;//false; // play here to hear original sound or ADSR envelope
function setup() {
var cnv = createCanvas(100, 100);
env = new p5.Envelope();
env.setADSR(attackTime, decayTime, susPercent, releaseTime);
env.setRange(attackLevel, releaseLevel);
if (usefile) {
mySound.setVolume(0.1);
mySound.loop();
if (useenv) env.setInput(mySound);
} else {
triOsc = new p5.Oscillator('triangle');
if (useenv) triOsc.amp(env);
triOsc.start();
triOsc.freq(220);
}
if ( useenv ) {
textAlign(CENTER);
text('click to play', width / 2, height / 2);
cnv.mousePressed(playEnv);
}
}
function playEnv() {
env.play();
}