ProjectF Sound Engine

Started by
3 comments, last by cr88192 10 years, 11 months ago

Hello everybody! Sorry for my english. This is my recent project called ProjectF. This is sound engine based on OpenAL. Main emphasis is on sound effects, like a reverb and sound environment. The main idea - 'zone'. What is 'zone'? Zone is a AABB( axis-aligned bounding box ) or sphere, which uses one of 110 reverb presets. Also you can control air wetness in each zone to create realistic effect in propagation of sound. And second idea is obstacles.

Just listen this


And download the demo and the engine in attachment.

Advertisement

Great work, i thought this effects won't work on my integrated sound card. biggrin.png

I have implemented basic sound system with OpenAL but didn't look into effects yet. From what i have experienced in your demo, i am glad this can work for integrated cards.

you might be interested in some of the work being done on real-time sound propagation at UNC:

http://gamma.cs.unc.edu/GSOUND/ (my work)

http://gamma.cs.unc.edu/research/sound/ (other work)

Aressera

Wow. This is exciting! I try to realize similar things in my engine.

I was also recently working some on a new mixer thing, though it is based on something a little "odd":

basically, a hacked version of a custom MIDI synth.

it adds ability to play arbitrary samples, adds 3D positional effects (position / distance attenuation, Doppler shifts, and propagation delays), adds things like filtering and reverb effects, ... a lot of this is handled per-channel (and I have currently expanded the max number of channels, from 16 to 1024, with each channel having its own spatial location, ...). (it also has support for multiple listeners as well...).

it is still in-development though (not really been put to use in-game yet).

it doesn't currently support anything to take world geometry into account.

bounding regions are possible, but preferable would be being able to infer it dynamically (at a preferably reasonable cost), just I have yet to come up with a good strategy to do so:

possible, but kind of lazy, would be querying the space around the player and then counting up the statistics for certain block-types.

possible, but a bit more expensive, would be doing something similar to "block-lighting", basically figuring out how much of an effect each block will have from the sound-source and listener, then running statistics over the reachable blocks (then using this to dynamically calculate the reverb filters and similar).

basically, we start out at a value of, say, 15, and each adjacent reachable cell is marked at 14, and from these at 13, ..., stopping at 0. from this we could calculate both the local reverb, and also possibly how obstacles would occlude sound (say, crossing through a wall reduces the value by 2 or 4).

the blocks in this case would basically be a regular grid indicating which types of "contents" exist in a given location (giving their sound-properties, ...).

probably this sort of information would be cached though, rather than recalculated each frame (probably recalculated a few times/second or so, say 1Hz or 4Hz).

ADD/Update: did something like the block-for-block sound propagation mentioned above. it seems to work ok, and is fast-enough for real-time use.

(dunno about others, but I am mostly doing the reverb via largish FIR filters...).

EDIT:

yeah, GSound is pretty cool as well...

This topic is closed to new replies.

Advertisement