Hello Guest

Why does this audio setPosition() not work?

  • 1 Replies
Why does this audio setPosition() not work?
« on: January 22, 2011, 21:55:54 »
I could abstract the problem to two lines of code:
Code: [Select]
import java.io.FileInputStream;
import java.io.IOException;
import org.lwjgl.openal.AL;
import org.newdawn.slick.openal.Audio;
import org.newdawn.slick.openal.AudioLoader;

public class JukeOggTester {

public static boolean positioned;
private static Audio oggEffect;

public static void main(String[] args)
try {oggEffect = AudioLoader.getAudio("OGG",
new FileInputStream("Barry Ryan - Eloise.ogg"));
} catch (IOException e) {e.printStackTrace();AL.destroy();return;}
System.out.println("before setPosition");
positioned = oggEffect.setPosition(100f);
System.out.println("after setPosition");
The try... is working. Why dies the setPosition with OpenAL error: Invalid Name (40961)?
Code: [Select]
Sat Jan 22 22:47:21 CET 2011 INFO:Initialising sounds..
Sat Jan 22 22:47:22 CET 2011 INFO:- Sound works
Sat Jan 22 22:47:22 CET 2011 INFO:- 64 OpenAL source available
Sat Jan 22 22:47:22 CET 2011 INFO:- Sounds source generated
before setPosition
Exception in thread "main" org.lwjgl.openal.OpenALException: OpenAL error: Invalid Name (40961)
at org.lwjgl.openal.Util.checkALError(Util.java:64)
at org.lwjgl.openal.AL10.alSourcef(AL10.java:836)
at org.newdawn.slick.openal.AudioImpl.setPosition(AudioImpl.java:125)
at de.virginiacity.software.JukeOggTester.main(JukeOggTester.java:20)
« Last Edit: January 22, 2011, 21:57:43 by Cottonwood »
Regards. Cottonwood.

Re: Why does this audio setPosition() not work?
« Reply #1 on: April 18, 2012, 20:46:28 »
Hello, I just run in to this problem too, so I'm resurrecting this thread in case anyone else ever runs into the problem

You need to add the line:

Code: [Select]
if (index == -1) return false;
at the top of the setPosition function of the class org.newdawn.slick.openal.Audio

ending up with:

Code: [Select]
public boolean setPosition(float position) {
if (index == -1) return false;

position = position % length;

AL10.alSourcef(store.getSource(index), AL11.AL_SEC_OFFSET, position);
if (AL10.alGetError() != 0) {
return false;
return true;

For some reason the "index" property isn't checked, even in the latest release of Slick2d (I'll comment on their forums asking for a bug fix)