/** * This sketch demonstrates how to use the removeListener method of a Recordable class. * The class used here is AudioPlayer, but you can also remove listeners from AudioInput, * AudioOutput, and AudioSample objects. The class defined in waveform.pde implements * the AudioListener interface and can therefore be removed as a listener to groove. * The waveform renderer starts off not added to the player, so you will initially not see any waveforms drawn. *

* Press 'a' to add the waveform renderer to the player.
* Press 'r' to remove the waveform renderer from the player.
*
* You'll see that when you remove the waveform renderer as a listener of the player, the waveform freezes. This is * because the waveform is drawing the last buffer of samples that it received from the player. */ import ddf.minim.*; Minim minim; AudioPlayer groove; WaveformRenderer waveform; void setup() { size(512, 200, P3D); minim = new Minim(this); groove = minim.loadFile("groove.mp3", 2048); groove.loop(); waveform = new WaveformRenderer(); } void draw() { background(0); // see waveform.pde for an explanation of how this works waveform.draw(); } void keyPressed() { if ( key == 'a' ) { groove.addListener(waveform); } if ( key == 'r' ) { groove.removeListener(waveform); } } void stop() { // always close Minim audio classes when you are done with them groove.close(); // always stop Minim before exiting. minim.stop(); super.stop(); }