Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


#Actualcr88192

Posted 12 May 2013 - 08:36 PM

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...


#2cr88192

Posted 12 May 2013 - 01:45 PM

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).

 

 

EDIT:

yeah, GSound is pretty cool as well...


#1cr88192

Posted 12 May 2013 - 01:35 PM

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, 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).


PARTNERS