cAudio 1.6 Released!

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
wildrj
Posts: 301
Joined: Thu Mar 23, 2006 12:49 am
Location: Texas/ Cyberspace
Contact:

cAudio 1.6 Released!

Post 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.
Last edited by wildrj on Wed Jul 16, 2008 4:37 am, edited 8 times in total.
http://wild.deathtouchstudios.com << My gamedev blog
<Programming is a way of life>
If at first you don't succeed press the delete key till you do :)
BlindSide
Admin
Posts: 2821
Joined: Thu Dec 08, 2005 9:09 am
Location: NZ!

Post 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
ShadowMapping for Irrlicht!: Get it here
Need help? Come on the IRC!: #irrlicht on irc://irc.freenode.net
Halifax
Posts: 1424
Joined: Sun Apr 29, 2007 10:40 pm
Location: $9D95

Post by Halifax »

That is cool indeed. Some great stuff to learn from, and very lightweight.
TheQuestion = 2B || !2B
rogerborg
Admin
Posts: 3590
Joined: Mon Oct 09, 2006 9:36 am
Location: Scotland - gonnae no slag aff mah Engleesh
Contact:

Post by rogerborg »

Urgh, it requires installation of the openAL runtime? That's a deal breaker for me. It's so 20th century.
Please upload candidate patches to the tracker.
Need help now? IRC to #irrlicht on irc.freenode.net
How To Ask Questions The Smart Way
dejai
Posts: 522
Joined: Sat Apr 21, 2007 9:00 am

Post 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,
Programming Blog: http://www.uberwolf.com
wildrj
Posts: 301
Joined: Thu Mar 23, 2006 12:49 am
Location: Texas/ Cyberspace
Contact:

Post 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 :)
http://wild.deathtouchstudios.com << My gamedev blog
<Programming is a way of life>
If at first you don't succeed press the delete key till you do :)
Halifax
Posts: 1424
Joined: Sun Apr 29, 2007 10:40 pm
Location: $9D95

Post by Halifax »

Also, what about some hardware buffers? Any plans to support the loading of data into hardware buffers.
TheQuestion = 2B || !2B
wildrj
Posts: 301
Joined: Thu Mar 23, 2006 12:49 am
Location: Texas/ Cyberspace
Contact:

Post 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.
http://wild.deathtouchstudios.com << My gamedev blog
<Programming is a way of life>
If at first you don't succeed press the delete key till you do :)
wildrj
Posts: 301
Joined: Thu Mar 23, 2006 12:49 am
Location: Texas/ Cyberspace
Contact:

Post 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
http://wild.deathtouchstudios.com << My gamedev blog
<Programming is a way of life>
If at first you don't succeed press the delete key till you do :)
Halifax
Posts: 1424
Joined: Sun Apr 29, 2007 10:40 pm
Location: $9D95

Post 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.
TheQuestion = 2B || !2B
wildrj
Posts: 301
Joined: Thu Mar 23, 2006 12:49 am
Location: Texas/ Cyberspace
Contact:

Post 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
http://wild.deathtouchstudios.com << My gamedev blog
<Programming is a way of life>
If at first you don't succeed press the delete key till you do :)
Halifax
Posts: 1424
Joined: Sun Apr 29, 2007 10:40 pm
Location: $9D95

Post 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.
TheQuestion = 2B || !2B
wildrj
Posts: 301
Joined: Thu Mar 23, 2006 12:49 am
Location: Texas/ Cyberspace
Contact:

Post 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 *.
http://wild.deathtouchstudios.com << My gamedev blog
<Programming is a way of life>
If at first you don't succeed press the delete key till you do :)
FlyingIsFun1217
Posts: 219
Joined: Fri Apr 13, 2007 8:29 pm
Location: Illinois
Contact:

Post 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
Halifax
Posts: 1424
Joined: Sun Apr 29, 2007 10:40 pm
Location: $9D95

Post 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:
TheQuestion = 2B || !2B
Post Reply