Construct your AL instance with
al = new AL("DirectSound3D", 44100, 120, false);
for now, until we can figure out a better way to make sound work properly. I'm talking to the OpenAL dev list at the moment - as usual they're kinda scared of Java and assume that Java's doing something funny to their API to make it misbehave etc. but there's much deeper roots to the problem.
Right now the OpenAL devs seem to have "successful application works so the API must be perfect" heads on brought about by UT2003. This must be addressed!
The construction of OpenAL is anything but platform independent - you have to pick a named device (and
get the capitalization right!) or it plays what sounds like a completely different sound or has 100ms lag!
The context creation parameters are ignored I believe under Win32 which makes them useless. I still can't do synchronous processing which means I'm at the mercy of the thread scheduler, and it shows - I get sounds playing halfway through, or sounds not playing at all, or sounds playing a second after they were scheduled. If you try to call the synchronous processing methods on Win32 instead of returning an error code it just hangs. No good. We need it to work reliably in all implementations.
And of course if I ran that constructor on Linux it would do something completely different and probably not work properly. Arse.
Watch this space.