Hi, great to see that there's an alternative to the now seemingly dead OgreAL project. But before I dive into this library, I'll like to know what features this lib provides.
Threaded? Format support? EAX?
If this works out, I'll be using this lib for my game which I intend to port to linux and mac. I think I will be able to help work on getting this lib into those platform when it comes.
Thanks for the interest, if you check out my sig, there is a link to the sourceforge web pages, where you can get a full list of features via the download link.
* OGG / WAV format
* XRAM/EAX support
* Full 2D/3D support
* Audio capture support
* (Optional) Multi-threaded support for streaming audio
* Source management
* OGRE Plugin support
* Windows/Linux builds
Hope that meets your requirements
I'll have a look at the source. Since we are making a racing title, we need to be able to fine control the way sound loops and pitch. Hopefully OgreOggSound will give us that flexibility.
Hey, the code looks pretty good. Clean and well structured. However It would be great if you could add a few features. I hope I'm not asking too much.
1. Add pitch tuning
2. Add ability to seek to a particular time in a sound.
3. Use a system known as virtual sounds (Basically page sound into "virtual" mode base on spatial surroundings when channels run out. In this virtual mode, the sound still "plays" but doesn't actually render the sound. This can be done using the seek ability when the sound page back in when it's significant enough to be played in the spatial surroundings again.)
4. Add speex support for sound recording/playing and allow custom output stream buffer instead of the current write to file method. This will allow streaming of voice over the wire. Very nice for network games.
I could go on with adding SFX track support where one could do fine grain control like mixing multiple sound, partially loop sound, etc etc.. But let's not go there. It's a whole different ball game from what this lib is all about.
Oh yeah, another thing. I noticed you are using position and orientation check to find if a sound needs update. Actually you can optimize that away by overriding the _notifyMoved method of MovableObject to set a flag instead.
P.S. Sorry for the double post.
I'm always open to requests for additional features, I'll look into them and see how easy/quickly I can integrate some of them.
1. What exactly do you mean by pitch tuning? you can already adjust pitch per sound.
2. Should by trivial for static sounds, I'll investigate stream sounds on that one..
3. This sounds like you want sounds to still update themselves if they've been kicked off the most significant list by a higher priority sound, is that corect?
4. I'll look in this..
5. I shall switch to the _notifyMoved() method if that suits the needs, thanks!
Hey, thanks for the reply
1. Oops, really sorry, I didn't observe properly. It's already there. My bad.
3. Yes, that's the idea. Btw, I'm not sure if I'm correct or not, but it seemed that if a sound is kicked off into the reactivate queue list, it will still get played if it's stopped. Need test however, it's only based on what I observed through code.
Other than these, it looks good enough for usage.
I'll be using this.
I'll check the reactivate issue, its possible that does happen, thanks.
Just a heads up, updated SVN version of library with the following additions:
* Added seeking ability to sounds - should now be able to set the playback position in seconds on any sound
* Fixed bug in reactivateSounds() where sound has been previously stopped.
* Switched to _notifyMoved()
Hope you find this useful
Hopefully you can confirm the updates work, they appeared to behave during my quick testing, but I haven't really got a complete scenario to fully test them, any probs let me know!
Sure thing, I'll be working on sound pretty soon. Right now, I'm rather busy improving my game's rendering speed. After that, I intend to work on networks and game scripting which will tie in sound system. But as of now, I'm certain I will be using this as opposed to OgreAL.