IRCAM Spatialisateur

Version 28 (Nils Peters, 03/21/2011 01:28 pm)

1 1
h1. IRCAM Spatialisateur
2 1
3 1
{{toc}}
4 1
5 1
h1. Summary
6 1
7 4 Trond Lossius
    * *Description:* The Spatialisateur project started in 1991 as a collaboration between Espaces Nouveaux and Ircam. Its goal is to propose a virtual acoustics processor which allows composers, performers or sound engineers to control the diffusion of sounds in a real or virtual space. This project stems from research carried out within the Ircam room acoustics laboratory on the objective and perceptive characterization of room acoustic quality. It also incorporates research done at Télécom Paris on digital signal processing algorithms for the spatialization and artificial reverberation of sounds. Spat~ is an effort to organize and optimize the experimental patches developped in the Spatialisateur project, in order to make them accessible to musicians and researchers who work with Max/MSP. The current release allows reproduction on multi-channel loudspeaker systems in studios or concert halls. It also integrates 3D stereo reproduction modes for headphones (binaural) or 2 loudspeakers (transaural), as well as Vector Based Amplitude Panning and Ambisonics.
8 1
    * *Manufacturer / Developer:* Ircam / Espaces Nouveaux
9 1
    * *Version:* 4.1.5
10 1
    * *Platform:* Spat 4 runs on Max/MSP version 5.0.0 or higher.
11 1
    * *OS:* Spat 4 is compatible with both Mac OS X (Universal Binary) and Windows XP/Vista.
12 27 Nils Peters
    *  "Flux":http://www.fluxhome.com/products/plug_ins/ircam_spat has ported Spatialisateur to DAW environments
13 1
    * *License:* The use of Spatialisateur and its documentation is restricted to members of the "Ircam software users group":http://forumnet.ircam.fr/?L=1.
14 1
    * *Trademark:* Spatialisateur is an IRCAM registered trademarks.
15 1
    * *Patents:* The design of Spat and the reverberation module are protected under different French and international patents ([FR] 92 02528; [US] 5,491,754, [FR] 95 10111; [US] 5,812,674).	
16 5 Trond Lossius
    * *Status of this entry:* In progress
17 1
18 1
19 1
h1. Parameter definition
20 1
21 1
22 1
h2. Coordinate system convention
23 1
24 1
    * what is the underlying coordinate system?
25 1
    * any relation to the [[proposed coordinate systems]] ?
26 1
27 6 Trond Lossius
Spat 4 implements several coordinate systems, all defined from the listener’s point of view (i.e. the listener is the origin of the coordinate system). In Max/MSP these different coordinate systems are : 
28 6 Trond Lossius
29 6 Trond Lossius
    * xyz : 3D Cartesian coordinates
30 6 Trond Lossius
    * xy : 2D Cartesian coordinate within xy plane
31 6 Trond Lossius
    * ade : azimuth, distance, elevation
32 6 Trond Lossius
    * aed : azimuth, elevation, distance
33 6 Trond Lossius
    * ad : azimuth, distance (2D within xy plane)
34 6 Trond Lossius
    * az : azimuth only (distance = 1 m)
35 6 Trond Lossius
    * spat3 : azimuth, distance, elevation format for backward compatibility with Spat 3.x convention
36 6 Trond Lossius
37 6 Trond Lossius
Spat 4 external objects can interpret messages formatted in any of these coordinate formats. Furthermore utilities objects are provided to perform conversions between the different coordinate systems.
38 6 Trond Lossius
39 7 Trond Lossius
h3. Cartesian coordinates (xyz)
40 6 Trond Lossius
41 6 Trond Lossius
X axis on the right of the listener Y axis in front Z axis to the top
42 6 Trond Lossius
43 8 Trond Lossius
p=. !http://redmine.spatdif.org/attachments/89/spat.xyz.1.png!
44 10 Trond Lossius
_Top view (xy plane)_
45 8 Trond Lossius
46 8 Trond Lossius
p=. !http://redmine.spatdif.org/attachments/90/spat.xyz.2.png!
47 10 Trond Lossius
_Front view (xz plane)_
48 8 Trond Lossius
49 8 Trond Lossius
50 7 Trond Lossius
h3. Navigational coordinates (ade)
51 6 Trond Lossius
52 6 Trond Lossius
The default coordinate system in Spat 4 is called the navigational coordinate system. Positions are expressed in term of azimuth, elevation and distance (format “ade” in Max/MSP). Azimuth is measured toward the y axis, with 0° in front of the listener.
53 6 Trond Lossius
Elevation is 0° within xy plane. +90° on top, -90° bottom.
54 6 Trond Lossius
55 12 Trond Lossius
p=. !http://redmine.spatdif.org/attachments/91/spat.azimuth.png!
56 11 Trond Lossius
_Navigational coordinates: Azimuth convention_
57 1
58 12 Trond Lossius
p=. !http://redmine.spatdif.org/attachments/92/spat.elevation.png!
59 11 Trond Lossius
_Navigational coordinates: Elevation convention_
60 1
61 11 Trond Lossius
h3. Spat 3.x coordinate system (spat3)
62 11 Trond Lossius
63 12 Trond Lossius
p=. !http://redmine.spatdif.org/attachments/93/spat.spat3-backwards-compatibility.png!
64 11 Trond Lossius
_Spat 3.x coordinate system for backwards compatibility_
65 6 Trond Lossius
66 1
67 15 Trond Lossius
h2. Parameters configuring the system
68 13 Trond Lossius
69 13 Trond Lossius
|_. *parameter*  |_. *description*|_. *data format*|_. *range*|_. *initial state*|_. *unit*|_. *example*|_. *misc*|
70 14 Trond Lossius
|numsources      |number of sources                                 |int|1-64 |1|N/A|@numsources 5  |Declared as an attribute to the external @spat.spat~@. This attribute can not be dynamically reconfigured.| 
71 14 Trond Lossius
|numspeakers     |number of speakers                                |int|0-128|1|N/A|@numspeakers 8 |Declared as an attribute to the external @spat.spat~@. This attribute can not be dynamically reconfigured.|
72 14 Trond Lossius
|numreverbs      |number of shared reverbs                          |int|1-64 |1|N/A|@numreverbs 8  |Declared as an attribute to the external @spat.spat~@. This attribute can not be dynamically reconfigured.|
73 14 Trond Lossius
|numinternals    |number of internal feedback channels              |int|1-64 |1|N/A|@numinternals 8|Declared as an attribute to the external @spat.spat~@. This attribute can not be dynamically reconfigured.| 
74 14 Trond Lossius
|numcascades     |number of cascaded filters for output equalization|int|1-8  |1|N/A|@numcascades 5 |Declared as an attribute to the external @spat.spat~@. This attribute can not be dynamically reconfigured.|
75 28 Nils Peters
|panning         |panning type (angular, binaural, xy, ms, ab, surround, panr, angular, vbap2d, vbap, dbap, bformat, hoa2d, hoa3d, null)|symbol|N/A|angular|N/A|@panning vbap|Declared as an attribute to the external @spat.spat~@. This attribute can not be dynamically reconfigured.|
76 25 Trond Lossius
| directsoundrerouting  | enable/disable direct sound rerouting (for wfs)  | int  | 0 .. 1 | 0|   |   |   |
77 25 Trond Lossius
| stereo  | stereo source as input  | int  | 0 .. 1 | 0|   |   |   |
78 14 Trond Lossius
79 13 Trond Lossius
80 13 Trond Lossius
81 13 Trond Lossius
82 13 Trond Lossius
83 1
h2. Parameter describing a sound source
84 1
85 1
|_. *parameter*     |_. *description*|_. *data format*|_. *range*|_. *initial state*|_. *unit*|_. *example*|_. *misc*|
86 18 Trond Lossius
| pres   | source presence [list of float]   | list   | 0 .. 120 | 90 |   |   |    |
87 18 Trond Lossius
| warmth  | source warmth [list of float]  | list  | 0 .. 60 | 30 |   |   |    |
88 18 Trond Lossius
| bril  | source brillance [list of float]  | list  | 0 .. 60 | 30 |   |   |    |
89 18 Trond Lossius
| prer  | room presence [list of float]  | list  | 0 .. 120 | 48 |   |   |    |
90 18 Trond Lossius
| revp  | running reverberance [list of float]  | list  | 0 .. 50 | 34 |   |   |    |
91 18 Trond Lossius
| env  | envelopment [list of float]  | list  | 0 .. 50 | 25 |   |   |    |
92 18 Trond Lossius
| pitch  | source pitch [list of float]  | list  | -90 .. 90 | 0 |   |   |    |
93 18 Trond Lossius
| sourcemute  | mute/unmute sources [list of int]  | list  | 0 .. 1 | 0 |   |   |    |
94 18 Trond Lossius
| sourcesolo  | enable/disable solo mode [list of int]  | list  | 0 .. 1 | 0 |   |   |    |
95 18 Trond Lossius
| sourceairabsorption  | enable/disable air absorption filtering [list of int]  | list  | 0 .. 1 | 1 |   |   |    |
96 18 Trond Lossius
| doppler  | enable/disable doppler effect [list of int]  | list  | 0 .. 1 | 1 |   |   |    |
97 18 Trond Lossius
| omni  | source omni filter parameters [list of float]  | list  |  |  |   |   |    |
98 18 Trond Lossius
| axis  | source axis filter paramaters [list of float]  | list  |  |  |   |   |    |
99 18 Trond Lossius
| reverbid  | index of reverb associated with source [list of int]  | list  |  |  |   |   |    |
100 18 Trond Lossius
| drop  | drop factor [list of float]  | list  | -10 .. 30 | 6 |   |   |    |
101 18 Trond Lossius
| dropmode  | drop mode [list of int] (0: log drop; 1:linear drop)  | list  | 0 .. 1 | 0 |   |   |    |
102 18 Trond Lossius
| pan_rev  | pan/rev factor [list of float]  | list  | 0 .. 1 | 0 |   |   |    |
103 18 Trond Lossius
| sourceinputgain  | source input gain [list of float]  | list  | -30 .. 10 | 0 |   |   |    |
104 1
| sourceoutputgain  | source output gain [list of float]  | list  | -30 .. 10 | 0 |   |   |    |
105 25 Trond Lossius
| source [index] [coordinates format] [list of coordinates]  | sets source positions  | anything  |  | |   |   |   |
106 25 Trond Lossius
| source [index] color [symbol]  | "sets source color (green, blue, red, yellow) " | anything  |  | |   |   |   |
107 25 Trond Lossius
| source [index] name [symbol]  | sets source name  | anything  |   |  |  |   |
108 25 Trond Lossius
| source [index] yaw [float]  | sets source yaw  | anything |   |   |   |   |   |
109 25 Trond Lossius
| source [index] aperture [float]  | sets source aperture  | anything |   |   |   |   |   |
110 25 Trond Lossius
| source [index] radius [float]  | sets source radius  | anything |   |   |   |   |   |
111 25 Trond Lossius
| source [index] pres [float]  | sets source presence  | anything |   |   |   |   |   |
112 25 Trond Lossius
| source [index] warmth [float]  | sets source warmth  | anything |   |   |   |   |   |
113 25 Trond Lossius
| source [index] bril [float]  | sets source brillance  | anything |   |   |   |   |   |
114 25 Trond Lossius
| source [index] prer [float]  | sets source room presence  | anything |   |   |   |   |   |
115 25 Trond Lossius
| source [index] revp [float]  | sets source running reverberance  | anything |   |   |   |   |   |
116 25 Trond Lossius
| source [index] env [float]  | sets source envelopment  | anything |   |   |   |   |   |
117 25 Trond Lossius
| source [index] pitch [float]  | sets source pitch  | anything |   |   |   |   |   |
118 25 Trond Lossius
| source [index] drop [float]  | sets source drop factor  | anything |   |   |   |   |   |
119 25 Trond Lossius
| source [index] dropmode [int]  | sets source drop mode (0: log drop; 1:linear drop)  | anything |   |   |   |   |   |
120 25 Trond Lossius
| source [index] pan_rev [float]  | sets source pan/rev factor  | anything |   |   |   |   |   |
121 25 Trond Lossius
| source [index] air [int]  | enable/disable air absorption filtering  | anything |   |   |   |   |   |
122 25 Trond Lossius
| source [index] doppler [int]  | enable/disable doppler effect  | anything |   |   |   |   |   |
123 25 Trond Lossius
| source [index] mute [int]  | mute/unmute sources  | anything |   |   |   |   |   |
124 25 Trond Lossius
| source [index] reverb [int]  | sets index of reverb associated with source  | anything |   |   |   |   |   |
125 26 Trond Lossius
| source [index] azim [float]        | sets azimuth and keep current elevation and distance unchanged |   |   |   |   |   |   |
126 26 Trond Lossius
| source [index] elev [float]        | sets elevation and keep current azimuth and distance unchanged |   |   |   |   |   |   |
127 26 Trond Lossius
| source [index] dist [float]        | sets distance and keep current azimuth and elevation unchanged |   |   |   |   |   |   |
128 26 Trond Lossius
| source [index] az [float]          | sets azimuth but use default elevation (0 deg) and distance (1m) |   |   |   |   |   |   |
129 26 Trond Lossius
| source [index] ae [float][float]   | sets azimuth and elevation but use default distance (1m) |   |   |   |   |   |   |
130 26 Trond Lossius
| source [index] ad [float][float]   | sets azimuth and distance but use default elevation (0 deg) |   |   |   |   |   |   |
131 26 Trond Lossius
| source [index] xy [float][float]   | sets x,y but use default z (0) |   |   |   |   |   |   |
132 26 Trond Lossius
| source [index] azim++ [float]      | increments azimuth and keep current elevation and distance unchanged |   |   |   |   |   |   |
133 26 Trond Lossius
| source [index] elev++ [float]      | increments elevation and keep current azimuth and distance unchanged |   |   |   |   |   |   |
134 26 Trond Lossius
| source [index] dist++ [float]      | increments distance and keep current elevation and azimuth unchanged |   |   |   |   |   |   |
135 26 Trond Lossius
| source [index] x++ [float]         | increments x and keep y and z unchanged |   |   |   |   |   |   |
136 26 Trond Lossius
| source [index] y++ [float]         | increments y and keep x and z unchanged |   |   |   |   |   |   |
137 26 Trond Lossius
| source [index] z++ [float]         | increments z and keep x and y unchanged |   |   |   |   |   |   |
138 19 Trond Lossius
139 19 Trond Lossius
140 19 Trond Lossius
141 19 Trond Lossius
142 19 Trond Lossius
	
143 19 Trond Lossius
	
144 19 Trond Lossius
145 19 Trond Lossius
h2. Parameter describing a virtual space
146 19 Trond Lossius
147 19 Trond Lossius
148 19 Trond Lossius
|_. *parameter*     |_. *description*|_. *data format*|_. *range*|_. *initial state*|_. *unit*|_. *example*|_. *misc*|
149 18 Trond Lossius
| reverberance  | room reverberance [list of float]  | list  | 0 .. 100 | 65 |   |   |    |
150 18 Trond Lossius
| heaviness  | room heaviness [list of float]  | list  | 0 .. 50 | 25 |   |   |    |
151 18 Trond Lossius
| liveness  | room liveness [list of float]  | list  | 0 .. 50 | 35 |   |   |    |
152 18 Trond Lossius
| early_start  | early start time [list of float]  | list  | 1 .. 120 | 20 |   |   |    |
153 18 Trond Lossius
| early_end  | early end time [list of float]  | list  | 1 .. 120 | 40 |   |   |    |
154 1
| early_distr  | early distribution centroid [list of float]  | list  | 0.1 .. 0.9 | 0.5 |   |   |    |
155 1
| early_shape  | early shape factor [list of float]  | list  | 0 .. 1 | 0.5 |   |   |    |
156 1
| early_width  | early width [list of float]  | list  | 10 .. 180 | 30 |   |   |    |
157 1
| cluster_start  | cluster start time [list of float]  | list  | 1 .. 300 | 40 |   |   |    |
158 1
| cluster_end  | cluster end time [list of float]  | list  | 1 .. 300 | 100 |   |   |    |
159 1
| cluster_distr  | cluster distribution centroid [list of float]  | list  | 0.1 .. 0.9 | 0.5 |   |   |    |
160 1
| reverb_start  | reverb start time [list of float]  | list  | 1 .. 500 | 95 |   |   |    |
161 1
| modaldensity  | reverb modal density [list of float]  | list  | 0.2 .. 2 | 0.9 |   |   |    |
162 1
| roomactive  | enable/disable reverb [list of int]  | list  | 0 .. 1 | 1 |   |   |    |
163 1
| roomairabsorption  | enable/disable air absorption in reverb [list of int]  | list  | 0 .. 1 | 1 |   |   |    |
164 1
| infinite  | enable/disable infinite reverb  | list  | 0 .. 1 | 0 |   |   |    |
165 24 Trond Lossius
| roomairrolloff  | air absorption filtering roll off frequency [list of float]  | list  | 20 .. 20000 | 10000 |   |   |    |
166 24 Trond Lossius
| roominputgain  | reverb input gain [list of float]  | list  | -30 .. 10 | 0 |   |   |    |
167 1
| roomoutputgain  | reverb output gain [list of float]  | list  | -30 .. 10 | 0 |   |   |   |
168 25 Trond Lossius
| room [index] reverberance [float]  | sets room reverberance  | anything |   |   |   |   |   |
169 25 Trond Lossius
| room [index] heaviness [float]  | sets room heaviness  | anything |   |   |   |   |   |
170 25 Trond Lossius
| room [index] liveness [float]  | sets room liveness  | anything |   |   |   |   |   |
171 25 Trond Lossius
| room [index] air [int]  | enable/disable air absorption filtering  | anything |   |   |   |   |   |
172 25 Trond Lossius
| room [index] active [int]  | enable/disable reverb  | anything |   |   |   |   |   |
173 25 Trond Lossius
| room [index] early start [float]  | sets early start time  | anything |   |   |   |   |   |
174 25 Trond Lossius
| room [index] early end [float]  | sets early end time  | anything |   |   |   |   |   |
175 25 Trond Lossius
| room [index] early distr [float]  | sets early distribution  | anything |   |   |   |   |   |
176 25 Trond Lossius
| room [index] early shape [float]  | sets early shape factor  | anything |   |   |   |   |   |
177 25 Trond Lossius
| room [index] early width [float]  | sets early width  | anything |   |   |   |   |   |
178 25 Trond Lossius
| room [index] cluster start [float]  | sets cluster start time  | anything |   |   |   |   |   |
179 25 Trond Lossius
| room [index] cluster end [float]  | sets cluster end time  | anything |   |   |   |   |   |
180 25 Trond Lossius
| room [index] cluster distr [float]  | sets cluster distribution  | anything |   |   |   |   |   |
181 25 Trond Lossius
| room [index] reverb start [float]  | sets reverb start time  | anything |   |   |   |   |   |
182 25 Trond Lossius
| room [index] reverb modaldensity [float]  | sets reverb modal density  | anything |   |   |   |   |   |
183 24 Trond Lossius
184 1
185 1
h2. Parameter describing the position of loudspeakers
186 1
187 24 Trond Lossius
188 24 Trond Lossius
189 24 Trond Lossius
190 1
|_. *parameter* |_. *description*|_. *data format*|_. *range*|_. *initial state*|_. *unit*|_. *example*|_. *misc*|
191 25 Trond Lossius
| speakers [coordinates format] [list of speakers coordinates]  | sets speakers positions  | anything  |  | |   |   |   |
192 25 Trond Lossius
| speaker [index] [coordinates format] [list of speakers coordinates]  | sets speaker position  | anything  |  | |   |   |   |
193 25 Trond Lossius
| speaker [index] name [symbol]  | sets speaker name  | anything |   |   |   |   |   |
194 24 Trond Lossius
195 24 Trond Lossius
196 24 Trond Lossius
197 24 Trond Lossius
198 25 Trond Lossius
h2. Parameter describing the post-processing of loudspeaker signals
199 25 Trond Lossius
200 25 Trond Lossius
201 25 Trond Lossius
202 24 Trond Lossius
|_. *parameter* |_. *description*|_. *data format*|_. *range*|_. *initial state*|_. *unit*|_. *example*|_. *misc*|
203 24 Trond Lossius
| delays   | output channel delays for time alignment [list of float]   | list   | 0 .. 100 | 0|   |   |   |
204 24 Trond Lossius
| outputfiltersfreq  | output channel equalizer cutoff/center frequency [list of float]  | list  | 50 .. 20000 | 1000|   |   |   |
205 24 Trond Lossius
| outputfiltersQ  | output channel equalizer resonance factor [list of float]  | list  | 0.5 .. 25 | 1|   |   |   |
206 24 Trond Lossius
| outputfiltersgain  | output channel equalizer gain [list of float]  | list  | -30 .. 30 | 0|   |   |   |
207 24 Trond Lossius
| outputfilterstype  | output channel equalizer filter type [list of symbol]  | list  |  | null |   |   |   |
208 24 Trond Lossius
| channel [index] delay [float]  | sets output channel delay  | anything |   |   |   |   |   |
209 24 Trond Lossius
| channel [index] cascade [index] freq [float]  | sets output channel equalizer cutoff/center frequency  | anything |   |   |   |   |   |
210 24 Trond Lossius
| channel [index] cascade [index] Q [float]  | sets output channel equalizer resonance factor  | anything |   |   |   |   |   |
211 24 Trond Lossius
| channel [index] cascade [index] gain [float]  | sets output channel equalizer gain  | anything |   |   |   |   |   |
212 24 Trond Lossius
| channel [index] cascade [index] type [symbol]  | sets output channel equalizer type  | anything |   |   |   |   |   |
213 25 Trond Lossius
214 25 Trond Lossius
215 25 Trond Lossius
h2. Other parameter
216 25 Trond Lossius
217 25 Trond Lossius
218 25 Trond Lossius
|_. *parameter* |_. *description*|_. *data format*|_. *range*|_. *initial state*|_. *unit*|_. *example*|_. *misc*|
219 25 Trond Lossius
| version   | prints object version in Max window   |  |  | |   |   |   |
220 25 Trond Lossius
| info  | prints infos (when available) in Max Window  |  |  | |   |   |   |
221 25 Trond Lossius
| hrtffile  | binaural filter set  | smybol  |  | |   |   |   |
222 25 Trond Lossius
| transauralfile  | transaural filter set  | symbol  |  | |   |   |   |
223 24 Trond Lossius
| clear  | clears internal buffers and filters memories |   |   |   |   |   |
224 24 Trond Lossius
| read [symbol]  | loads binaural filters from file  | anything |   |   |   |   |   |
225 24 Trond Lossius
| readtrans [symbol]  | loads transaural filters from file | anything |   |   |   |   |   |
226 1
227 1
h1. Projects, sound, and music
228 1
229 1
    * art or research projects utilizing this spatial renderer
230 1
231 1
h1. References
232 1
233 1
    * Bibliography
234 1
235 1
h1. External Links
236 1
237 1
    * http://forumnet.ircam.fr/692.html?&L=1
238 27 Nils Peters
    * DAW plug-in version: http://www.fluxhome.com/products/plug_ins/ircam_spat
239 1
240 1
h1. Media
241 1
242 1
    * GUI screenshots
243 1
    * Example patches
244 1
    * things which might explain the listed content better
245 1
    * you can add files to a wiki page by clicking on "new file" at the bottom