Distance-attenuation Extension

Version 4 (Nils Peters, 07/05/2011 12:59 am)

1 1 Nils Peters
h1. Distance-attenuation Extension
2 1 Nils Peters
3 1 Nils Peters
Review of concepts for simulating distance attenuation of sound sources.
4 1 Nils Peters
5 1 Nils Peters
h2. MIDI Manufacturers Association, Interactive Audio Special Interest Group 3D Level 1 Guideline
6 1 Nils Peters
7 1 Nils Peters
source: http://www.midi.org/techspecs/rp49public.pdf
8 1 Nils Peters
9 4 Nils Peters
4 parameter defining the distance attenuation model:
10 1 Nils Peters
11 1 Nils Peters
* Maximum Distance Parameter
12 3 Nils Peters
** the distance at which no additional distance based attenuation is applied when the sound moves further away
13 1 Nils Peters
* Gain at Maximum Distance Parameter
14 3 Nils Peters
** the maximum distance based attenuation applied to the sound. It is applied when the sound is at Maximum Distance
15 1 Nils Peters
* Reference Distance Ratio Parameter
16 3 Nils Peters
** the distance beyond which distance based attenuation is applied, and below which no distance based attenuation is applied
17 3 Nils Peters
* Distance Ratio Parameter
18 3 Nils Peters
** the normalized distance (0..1). the actual distance is computed by @distanceRatio@ * @maximumDistance@
19 2 Nils Peters
20 1 Nils Peters
!spatial-midi.png!
21 2 Nils Peters
22 3 Nils Peters
The actual attenuation due to distance is computed according to the following model and is the same than the IA-SIG has chosen for the 3D Audio Rendering and Evaluation guidelines Level 2 (I3DL2). 
23 1 Nils Peters
 
24 2 Nils Peters
@attenuation@ = 20*log10(@referenceDistance@ / (@referenceDistance@ + @ROF@ (@distance@ - @referenceDistance@)))
25 2 Nils Peters
26 2 Nils Peters
@ROF@, the roll-off factor is defined as:
27 2 Nils Peters
28 2 Nils Peters
@ROF@ = (@referenceDistance@ * 10^(- @maxAttenuation@ * 0.05) - @referenceDistance@) / (@maxDistance@ - @referenceDistance@)
29 2 Nils Peters
 
30 4 Nils Peters
Another model is proposed as an alternative at the end of the specs:
31 4 Nils Peters
32 4 Nils Peters
 
33 4 Nils Peters
@attenuation@ = 20*log10(@referenceDistance@ / @distance@)^@a@
34 4 Nils Peters
35 4 Nils Peters
@a@ can be found with:
36 4 Nils Peters
37 4 Nils Peters
@a@ = @maxAttenuation@ / 20*log10(@referenceDistance@ / @maxDistance@)