Υποενότητα 10.3: Ήχος στο p5

Χειριστήρια play και pause

Για να ελέγξουμε αν ο ήχος μας θα παίξει ή θα σταματήσει μπορούμε να δημιουργήσουμε ένα κουμπί το οποίο θα παύσει τον ήχο αν παίζει ή θα τον κάνει να παίζει.

Έχουμε ήδη δει πώς μπορούμε να κάνουμε αναπαρέγουμε ένα ηχητικό ντοκουμέντο. Για να το θέσουμε σε παύση, χρησιμοποιούμε τη συνάρτηση  pause() .

Ωστόσο, πώς μπορούμε να εντοπίσουμε αν παίζει κάποιος ήχος;

Το p5.js έχει τη συνάρτηση  isPlaying() function. Αυτή η συνάρτηση επιστρέφει μια τιμή boolean που είναι αληθής εάν ο ήχος παίζει και είναι ψευδής αν δεν παίζει.

Ας δούμε πώς μπορούμε να το χρησιμοποιήσουμε για να παίξουμε / να παύσουμε το τραγούδι μας.

Παράδειγμα

Ακολουθεί ένα παράδειγμα κώδικα όπου χρησιμοποιούμε ένα κουμπί για αναπαραγωγή / παύση ενός ήχου:

// create a variable for the button
let myBtn;
function preload() {
 mySound = loadSound('sounds/Sg.mp3');
}

function setup() {
  createCanvas(200,200);
  // create the button to control sound
  myBtn = createButton('play');
  // call the function playPause when the user presses the mouse
  myBtn.mousePressed(playPause);
}
function playPause(){
  //use the isPlaying to determine whether the sound is playing or not
  // if the sound is not playing
  if (!mySound.isPlaying()){
    // make it play
    mySound.play();
    // define the sound level
    mySound.setVolume(0.5);
  }
  // else pause it
  else {
    mySound.pause();
  }
}

Μπορείτε να δείτε το αποτέλεσμα του παραπάνω κώδικα here. Αυτό το παράδειγμα λειτουργεί καλύτερα στο mozilla firefox.

Exercise

  1. Open your Visual Studio editor and the p5yourName folder.
  2. Open the file ex812.js in your editor and save it as ex1032.js
  3. Open the file ex812.html in your editor and save it as ex1032.html
  4. In the ex1032.html file, update the link to ex1032.js  from exersice812.js
  5. Go to the index.html file and create, under Module 10, a link to the ex1032.html  file with the title "play and pause buttons".

Modify the ex1032.jsfile and use as a base the above example and load a sound which will start from the beginning each time the user presses the button. To do this you should use the stop() function for which you can learn more here. You can see here an example.

Answer:

// create a variable for the button
let myBtn;
function preload() {
 mySound = loadSound('sounds/Sg.mp3');
}

function setup() {
  createCanvas(200,200);
  // create the button to control sound
  myBtn = createButton('play');
  // call the function playPause when the user presses the mouse
  myBtn.mousePressed(playPause);
}
function playPause(){
  //use the isPlaying to determine whether the sound is playing or not
  // if the sound is not playing
  if (!mySound.isPlaying()){
    // make it play
    mySound.play();
    // define the sound level
    mySound.setVolume(0.5);
  }
  // else stop it
  else {
    mySound.stop();
  }
}


Κάντε μια  Git commit με το μήνυμα "play and pause buttons".

  • Δείτε περισσότερα για την isPlaying() function
  • Δείτε περισσότερα για την pause() function