1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| package com.iceengine.audio.sound;
import org.lwjgl.util.WaveData; import org.lwjgl.openal.AL10; import org.lwjgl.openal.AL;
import java.nio.IntBuffer; import org.lwjgl.BufferUtils; public class WaveSound implements Sound { private WaveData myData; private IntBuffer alBuffer = BufferUtils.createIntBuffer(1); private IntBuffer alSource = BufferUtils.createIntBuffer(1);
public void setListener(float[] Position, float[] Velocity, float[] Orientation) { AL10.alListener3f(AL10.AL_POSITION, Position[0], Position[1], Position[2]); AL10.alListener3f(AL10.AL_VELOCITY, Velocity[0], Velocity[1], Velocity[2]); AL10.alListener3f(AL10.AL_ORIENTATION, Orientation[0], Orientation[1], Orientation[2]); } public void loadSound(String Path) { myData = WaveData.create(Path); AL10.alGenBuffers(alBuffer); System.out.println(alBuffer + " " + myData); System.out.println(alBuffer + " " + myData.format + " " + myData.data + " " + myData.samplerate); AL10.alBufferData(alBuffer.get(0), myData.format, myData.data, myData.samplerate); myData.dispose(); } public void genSources(float[] sourcePos, float[] sourceVelocity) { AL10.alGenSources(alSource); AL10.alSourcei(alSource.get(0), AL10.AL_BUFFER, alBuffer.get(0)); AL10.alSourcef(alSource.get(0), AL10.AL_PITCH, 1.0f); AL10.alSourcef(alSource.get(0), AL10.AL_GAIN, 1.0f); AL10.alSource3f(alSource.get(0), AL10.AL_POSITION, sourcePos[0], sourcePos[1], sourcePos[2]); AL10.alSource3f(alSource.get(0), AL10.AL_VELOCITY, sourceVelocity[0], sourceVelocity[1], sourceVelocity[2]); }
public void killSource() { AL10.alDeleteBuffers(alBuffer.get(0)); AL10.alDeleteSources(alSource.get(0)); }
public void init() { try { AL.create(); } catch (Exception e) {
} } public void startPlay() { AL10.alSourcePlay(alSource.get(0)); } public void stopPlay() { AL10.alSourcePause(alSource.get(0)); } public void haltPlay() { AL10.alSourceStop(alSource.get(0)); } } |