Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Java Open AL questions


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 xaviarrob   Members   -  Reputation: 103

Like
0Likes
Like

Posted 22 July 2014 - 10:10 PM

So I'm fairly new to the Open AL library, I've been using Open GL for quite some bit (I spent quite a bit of time learning the ins and outs of the rendering pipeline) and am now really confident in the results I have achieved. I've been looking into bringing sound into the game (what better feedback to have when you have little characters animated walking around on the screen already) so figured it would be a good time to get into the sound system.

A friend of mine recommended Open AL so here I am.

I've read through what documentation I could find but have a few questions of the functionality of things.




AL10.alSourcei(sources.get(index), AL10.AL_BUFFER,buffers.get(index));
AL10.alSource3f(sources.get(index), AL10.AL_POSITION, 0,0,0);


These are only two of the examples. The sources.get and buffers.get are both calling the relevant index from a hashmap.

Basicly what I understand these do is they create the source with the given data (the buffer, with it's position, with the gain you set, etc.).

Is my understanding correct? I am wondering because I am looking to load the sound sources in only when a level is loaded (So not all sounds for the whole game are loaded when a single level is loaded.


Additionally I was looking to use

ALint and ALfloat

Where are these located or am I missing an import? I can't seem to find them/documentation on them.

Thanks for the help!


Edited by xaviarrob, 22 July 2014 - 10:10 PM.


Sponsor:

#2 Ian Reed   Members   -  Reputation: 134

Like
0Likes
Like

Posted 01 August 2014 - 12:18 PM

I'm personally using C# instead of Java to access OpenAL, but my answers should still be relevant.

AL10.alSourcei(sources.get(index), AL10.AL_BUFFER,buffers.get(index));
That line associates a source with a buffer.
A buffer holds all the sound data while a source is the object that holds position, gain, and other properties.
They are separated so you can load sound data into a single buffer, then setup multiple sources to use it without needing to have the sound data in memory more than once.

It doesn't create the source, in C# I use AL.GenSource() to create the source, then call the equivalent of your line to associate it with a buffer I've already loaded with sound data.

AL10.alSource3f(sources.get(index), AL10.AL_POSITION, 0,0,0);
That line sets the position of the source.

You mentioned not wanting to load sources until a particular level is loaded.
You'd want to do this for buffers as well since they take much more memory than sources do.
When unloading a level you should also delete the sources and buffers it used unless you will re-use them on the next level.

Not sure about ALint and ALfloat.
The API I use in C# just has me pass int and float instead.

HTH
 






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS