[aquaria] [patch] Positional audio support
False.Genesis
false.genesis at googlemail.com
Sat Nov 26 15:33:27 EST 2011
This patch adds support for sound panning, distance volume control, and
pitch shifting. This affects the following cases:
Internal:
- shot fire/impact sounds
- Entity::sound(): death sounds, entity_checkSplash sound, and some
other cases
Lua:
- entity_sound (now deprecated - but correctly plays positional audio,
at least)
- entity_soundFreq (now an alias for entity_sound)
- playSfx (added optional x,y position and max distance)
- entity_playSfx (now with many additional parameters in the same style
as playSfx)
Fun fact: Most of the code was there, and *would* have worked if there
were no float->int truncations all over the place, and the actual
Channel::setPan/setFrequency() calls had been there.
Support for this could probably be improved in various places of the
code, but i am happy enough with what already works.
The effect of this patch is very noticeable with moneye entities - their
thrust sound was cut off after a distance of 1024, now it gets more and
more muffled with an increasing distance.
And audible feedback from which direction a shot is coming - try this in
a fight with a greenseadragon.
Attached is an entity script for quick sound testing - it sticks to the
mouse and produces sound with random pitch.
I figured it would be necessary to split stereo OGGs into mono to suport
L/R panning, because OpenAL outright refuses to apply distance to stereo
tracks (At least my OpenALSoft/win32 version does).
But since that would require 2 channels per stereo sound, additional
hackery to split each sample pair into seperate buffers for L & R, and
the sound system is not made for more than one channel per playback
instance, i didn't attempt to implement this. At least the volume fades
with the distance.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: soundcheck.lua
URL: <http://icculus.org/pipermail/aquaria/attachments/20111126/fbb88176/attachment.diff>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: positionalsound.patch
URL: <http://icculus.org/pipermail/aquaria/attachments/20111126/fbb88176/attachment-0001.diff>
More information about the aquaria
mailing list