Les 9 - Samples afspelen


Bekijk hieronder de presentatie van de les over samples afspelen:

Javascript-les-9.pdf

Hieronder de code uit de les

EÊn samples inladen en met muis loopen

//maak een lege variabele waar de sample in kan
let sample;

function preload() {
  //bepaal het soundformat dat ingeladen mag worden
  soundFormats('wav');
  //laad de sample in de boven aangemaakte variabele
  sample = loadSound('samples/boomdood.wav');
}

function setup() {
  createCanvas(800,600);
  background(255);
}

function draw() {
  //maak een variabele waarin je de 
  //x positie van de muis schaalt naar 0 tot 2
  let rate = map(mouseX,0,width,0,2);

  //pas de afspeelsnelheid van de sample aan
  sample.rate(rate);
}

//pas de startpositie en duur aan bij een druk op de spatie
function keyPressed() {
  if (key === ' ') {
    // bepaal een random startpositie
    let startPos = random(0,sample.duration());

    //spring naar de startpositie tot startpositie + 0.01 seconde
    sample.jump(startPos,startPos+0.01);
  }
}

//start loopen van de sample bij een muisklik
function mousePressed() {
  sample.loop();
}

//pauzeer het loopen als je de muis loslaat
function mouseReleased() {
  sample.pause();
}

meerdere samples inladen en met toetsenbord afspelen

//maak een lege array waar de samples in kunnen worden opgeslagen
let drums = [];

//maak een array met de samplenamen
let sampleNames = ['BD.wav','SD.wav','CY.wav'];

//maak een array met key-triggers waarmee je de samples wil afspelen
let triggers = ['b','s','c'];

function preload() {
  //geef aan welke soundformats er mogelijk zijn
  soundFormats('wav');

  //maak een for-loop waarmee je door de samplenamen loopt
  //laad de samples in de voorafgemaakte array drums
  for (let i = 0; i < sampleNames.length;i++) {
    drums[i] = loadSound('samples/'+sampleNames[i]);
  }
}

function setup() {
  createCanvas(800,600);
  background(255);
}

function draw() {
}

function keyPressed() {
  //maak een for-loop waarmee je per trigger in de 
  //bovenstaande array een sample afspeelt.
  for (let i = 0; i < triggers.length;i++) {
    if (key === triggers[i]) {
      drums[i].play();
    }
  } 
}