Worklog for ima747

MiniB3D Sound

Return to Worklogs

Updated link(Posted 2009-05-17)
It was brought to my attention that the links are broken. Here's a current link for v1.2

http://toscaledesign.com/minib3d/minib3dSoundv1.2.zip


v1.2 - Stop playing!(Posted 2007-04-21)
http://ima747.gotdns.com/blitzmax/minib3dSoundv1.2.zip

Some speed improvements, a bunch of new functions and updated documentation, debugging etc. It sounds like I got the crackling out.

One thing to note is if you free an entity while it's playing a sound it will cause your program to crash. call EntityStop3DSound() on the entity before freeing it to stop all sounds attached to the entity from playing. It was eroniously stated that freeing an entity would stop it from playing previously but I had forgotten to test that out... if you tried it your program would crash.


v1.1 - Starts and Beginnings...(Posted 2007-04-12)
v1.1 - http://ima747.gotdns.com/blitzmax/minib3dSoundv1.1.zip

Born of necesity, this is a positional 3D sound system for use with MiniB3D. I never used Blitz3D and as such am not designing this around their sound system, so appologies if you're porting code. It is built around the Blitz Audio module, and therefore should work on any system that can play sound. What it does is handle all the panning, channel depth setting, volume tweaking and (if you enable doppler the doppler effect) play rate, making a sound apear to be coming from a point in 3D space relative to the listen point (usualy your camera, or player character's head).

Currently it does not have an environmental simulation so walls etc will not effect a sound. However this is part of the ultimate goal of the project (assuming I can figure out how to do that...). However in it's current form it should be a servicable alternative to just playing sounds straight up.

It is designed as a module, and requires minib3d to be installed as a module as well. As a module it has a documentation through the internal help system. It can very easily be modified to be an external include/import rather than a module, just poke around at the top of the file. I will eventualy distribute it like minib3d, in module and include form, but for now you just have to tweak the top 3 lines or so.

Included in version 1.1 (released along with the start of this worklog) are some example programs to get you started. A basic example of how to add it to an existing project. And an advanced example of most features and functions of the sytem in practice with real world examples of why you might want to use a given feature.

I'm looking for feedback and input so if you are confused, or have any things you'd like to see added please contact me.

Now if only I could screenshot sound to give you a better idea of how this works...