Page 1 of 3

cAudio 1.6 Released!

Posted: Sun Jun 29, 2008 11:40 pm
by wildrj
The cAudio Audio Engine is made for the community. Download is now at main DeathTouchStudios site. This release comes with a shiny new irrlicht scene node.

Special Thanks to KittyCat,Sudi,Rooly,and BloodInch

BackGround:

The main reason behind making cAudio was there wasn't a hole lot of choices for getting sound into your game. Basically there was audiere, fmod, bass, irrKlang,and SDL mixer. Also there was openal which cAudio is built on. The only problem with using openal is its hard to use in games. So cAudio was born.

Image

Supports: ogg,mod,xm,s3d,and it

Features:
* 2d Audio
* 3d Audio
* Pitch control
* Directional control
* Velocity control
* Listener orientation control
* Doppler control
* Looping
* Multiple streams
* Load file into memory and play
* Stream file
* Play,pause,and stop controls
* Easy to use Audio manager
* Self contained *no longer need runtime installed*

You can download it from http://www.deathtouchstudios.com

If you have any questions feel free to ask here or in the forums.

Posted: Mon Jun 30, 2008 4:50 am
by BlindSide
Hey that's pretty cool, so it uses OpenAL.

Haha I remember back in the day you were working on an OpenAL sound implementation with us for that Hovercraft game me and omaremad were working on, is this an extension of that experience?

Cheers

Posted: Mon Jun 30, 2008 5:56 am
by Halifax
That is cool indeed. Some great stuff to learn from, and very lightweight.

Posted: Mon Jun 30, 2008 8:33 am
by rogerborg
Urgh, it requires installation of the openAL runtime? That's a deal breaker for me. It's so 20th century.

Posted: Mon Jun 30, 2008 9:13 am
by dejai
Looks great!

I have a spelling bug fix..

Code: Select all

bool isvalid();//checks to make sure everything is erady to go
Should be?
bool isvalid();//checks to make sure everything is ready to go
Lol,

Posted: Mon Jun 30, 2008 3:58 pm
by wildrj
Lol thanks guys :) and if you remember correctly blindside i was working with you guys on that project. Yeah i need to clean it up a bit. Has for the run time being needed im not entirely sure if it is needed.

I just remember around 3 years ago when i tried to use openal the run time was needed :/.If someone could try it out without the run time id be very grateful. The next release ill beautify the code and add some features. Ill also try to figure out how to not need the openal run time.

Im also going to try and make it easier to use :) if you have any request / suggestions feel free to tell me :)

Posted: Mon Jun 30, 2008 9:47 pm
by Halifax
Also, what about some hardware buffers? Any plans to support the loading of data into hardware buffers.

Posted: Mon Jun 30, 2008 10:02 pm
by wildrj
give me time im working on it :) i code this as i learn more openal. Ill be releasing a update today or tomorrow becuase i found that i never gave the user the ability to play the file after the initial load. Im also taking out it playing immediately after its loaded becuase i believe you would want to preload then tell it when to play.

Hardware buffers hmm ill try gotta keep learning more about openal and audio.

Posted: Tue Jul 01, 2008 2:56 am
by wildrj
Alright don't kill me for the 1.0 status of the project now. I made it a 1.0 becuase i had to basically recode most of the inner workings. 0.01 could not change its values after the initial opening of a file. I also changed the api up to resemble that of irrklangs for ease of use *sorry niko*. Please re download and don't give 0.01 any mind now.

Download the new version at:
http://www.wild.deathtouchstudios.com

Posted: Tue Jul 01, 2008 5:02 am
by Halifax
Haha, I like you easter egg after shutting down the audio system. :lol: One thing I would like to say about the API though is that it would be cool if identification was done more by strings. I just generally find it helps, especially if someone wants to automate your system. It also helps immensely when developing big systems, because then functions need not have knowledge of the actual instance, just the name. (Thus, sometimes, this frees up the programmers parameter list if they have prior knowledge.) So instead of just doing the following:

Code: Select all

cAudio audio1;
cAudio audio2;
cAudio audio3;

audio1.open("MySuperCoolSong.ogg");
audio2.open("MyOtherSuperCoolSong.ogg");
audio3.open("Uncool.ogg");

audio1.play2d(true);
audio2.play2d(true);
audio3.play2d(true);

audio1.release();
audio2.release();
audio3.release();
You could do something like this: (Of course you would have to create a manager, that holds a map, or something of that sort, and also do garbage collection.)

Code: Select all

cAudioManager& AudioMgr = CAudioManager::getInstance();

AudioMgr.create("Song1", "MySuperCoolSong.ogg");
AudioMgr.create("Song2", "MyOtherSuperCoolSong.ogg");
AudioMgr.create("Song3", "Uncool.ogg");

AudioMgr.get("Song1")->play2d(true);
AudioMgr.get("Song2")->play2d(true);
AudioMgr.get("Song3")->play2d(true);
Less code, still easy to understand, and it gives the user the option to obtain instances. But this is just a suggestion of what I like, and possibly some others.

Posted: Tue Jul 01, 2008 4:02 pm
by wildrj
The original plan was to pull of something like that. But has i coded i learned i couldn't get it to work like that exactly. Give me some time ill figure it out.

Edit: I should have the manager done by the end of today :D

Posted: Tue Jul 01, 2008 6:17 pm
by Halifax
wildrj wrote:The original plan was to pull of something like that. But has i coded i learned i couldn't get it to work like that exactly. Give me some time ill figure it out.

Edit: I should have the manager done by the end of today :D
I could help out if you don't get it working, just post the code so far for the manager, and message me.

Posted: Tue Jul 01, 2008 11:05 pm
by wildrj
Alright it is done and ready to be used :) this makes it the 1.5 update *my number update thing is totally messed up i know but it makes it sound cool*

Anyways i took what you said literal halifax here is the code:

Code: Select all

#include <iostream>
#include "Headers/cAudioManager.h"

using namespace std;

int main(int argc,char* argv[]){

cAudioManager *audiomgr = cAudioManager::Instance();
audiomgr->init(argc,argv); 
audiomgr->create("test","1.ogg");
audiomgr->getSound("test")->play2d(false);

while(){
audiomgr->update();
}

cin.get();
}
Hope you enjoy the audio manager it should make life really easy to make use of . instead of -> just put a & after the cAudioManager and remove the *.

Posted: Tue Jul 01, 2008 11:08 pm
by FlyingIsFun1217
It really is a shame that it's based on OAL. I wish there were a nice Audio Lib that was (almost) as advanced as FMod, just licensed open source.

FlyingIsFun1217

Posted: Wed Jul 02, 2008 4:37 am
by Halifax
Awesome wildrj, that's looking sweet, I like it. Keep up the good work.
FlyingIsFun1217 wrote:It really is a shame that it's based on OAL. I wish there were a nice Audio Lib that was (almost) as advanced as FMod, just licensed open source.

FlyingIsFun1217
I really don't get what your saying there. If you could expand upon what features you are looking for, then that would be great. And the fact that it is based on OpenAL is the good part. :lol: