Hello,
Today i've started to do some things with OpenAL and i want to load a Wave-File, but if i try to load one with the WaveData Class (org.lwjgl.util.WaveData) the returned WaveData Object is a NullPointer.
Here's my code:
package com.iceengine.audio.sound;
/**
*
* @author penguin
*/
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));
}
}
Here's the code how i use my class:
WaveSound mySound = new WaveSound();
mySound.init();
float[] tmp = {0.0f, 0.0f, 0.0f};
mySound.setListener(tmp, tmp, tmp);
mySound.loadSound("hell.wav"); // hell.wav exists in Project folder, also tried with absolute path, but don't work.
mySound.genSources(tmp, tmp);
mySound.startPlay();
I hope someone can help me and, btw sorry for my bad english (I'm German).
Regards,
Penguin