38 lines
936 B
Java
38 lines
936 B
Java
package com.gnarly.engine.audio;
|
|
|
|
import org.lwjgl.openal.AL10;
|
|
|
|
public class Sound {
|
|
|
|
private int buffer;
|
|
private int sourceId;
|
|
|
|
public Sound(String path) {
|
|
sourceId = AL10.alGenSources();
|
|
buffer = AL10.alGenBuffers();
|
|
WaveData waveData = WaveData.create(path);
|
|
AL10.alBufferData(buffer, waveData.format, waveData.data, waveData.samplerate);
|
|
AL10.alSourcei(sourceId, AL10.AL_BUFFER, buffer);
|
|
AL10.alSourcef(sourceId, AL10.AL_GAIN, 1);
|
|
AL10.alSourcef(sourceId, AL10.AL_PITCH, 1);
|
|
}
|
|
|
|
public void play(boolean loop) {
|
|
AL10.alSourcei(sourceId, AL10.AL_LOOPING, loop ? 1 : 0);
|
|
AL10.alSource3f(sourceId, AL10.AL_POSITION, 0, 0, 0);
|
|
AL10.alSourcePlay(sourceId);
|
|
}
|
|
|
|
public void stop() {
|
|
AL10.alSourceStop(sourceId);
|
|
}
|
|
|
|
public void setVolume(float volume) {
|
|
AL10.alSourcef(sourceId, AL10.AL_GAIN, volume);
|
|
}
|
|
|
|
public void destroy() {
|
|
AL10.alDeleteBuffers(buffer);
|
|
AL10.alDeleteSources(sourceId);
|
|
}
|
|
}
|