Last active
November 26, 2016 01:06
-
-
Save cansik/bb40a793766e1da225d25847c4b06164 to your computer and use it in GitHub Desktop.
A simple audio player for processing which is able to loop a certain part of the audio file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class InfinityAudioPlayer implements AudioListener | |
{ | |
private Minim minim; | |
private AudioPlayer player; | |
private int loopStart; | |
private int loopEnd; | |
private boolean stopping = false; | |
public InfinityAudioPlayer(Minim minim) | |
{ | |
this.minim = minim; | |
} | |
public boolean isPlaying() | |
{ | |
return player.isPlaying(); | |
} | |
public void loadFile(String fileName, int bufferSize) | |
{ | |
player = minim.loadFile(fileName, bufferSize); | |
player.addListener(this); | |
setLoop(0, player.length()); | |
} | |
public void setLoop(int start, int end) | |
{ | |
loopStart = start; | |
loopEnd = end; | |
} | |
public void play() | |
{ | |
player.play(0); | |
} | |
public void stop() | |
{ | |
stopping = true; | |
} | |
public void fastStop() | |
{ | |
player.pause(); | |
} | |
void update() | |
{ | |
if (!player.isPlaying()) | |
return; | |
if (!stopping && player.position() >= loopEnd) | |
player.play(loopStart); | |
if (stopping && player.position() < loopStart) | |
{ | |
player.skip(loopEnd); | |
} | |
} | |
public AudioPlayer getPlayer() | |
{ | |
return this.player; | |
} | |
synchronized void samples(float[] samp) | |
{ | |
update(); | |
} | |
synchronized void samples(float[] sampL, float[] sampR) | |
{ | |
update(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ddf.minim.*; | |
import ddf.minim.effects.*; | |
Minim minim; | |
InfinityAudioPlayer player; | |
LowPassSP lowPass; | |
float frequency = 0; | |
void setup() | |
{ | |
size(500, 100); | |
minim = new Minim(this); | |
player = new InfinityAudioPlayer(minim); | |
player.loadFile("test.wav", 1024); | |
player.setLoop(500, 1500); | |
// lowpass | |
lowPass = new LowPassSP(0, player.getPlayer().sampleRate()); | |
player.getPlayer().addEffect(lowPass); | |
player.play(); | |
} | |
void draw() | |
{ | |
background(55); | |
text("Lowpass: " + frequency, 50, 50); | |
} | |
void mouseMoved() | |
{ | |
frequency = map(mouseX, 0, width, 0, 14000); | |
lowPass.setFreq(frequency); | |
} | |
void keyPressed() | |
{ | |
println("Stopping..."); | |
player.stop(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment