-
-
Notifications
You must be signed in to change notification settings - Fork 1
Spatial details
...
Except zones of loudspeakers, which are selected in the spatial trajectory module (SPA module n°12), different spatialisation algorithms are available for each of the 4 main types of trajectories, at the top left of the module above :
1. Position (0 and 1) or trajectory (from 2 to 5 in SPA module n°12) between 2 loudspeakers :
- [2 Eq Po] -> Equal-power panning. If the synthesis is put in mono, thanks to the blue button [BufM] in Synthesis Module n°5, the algorithm is based on Pan2.ar (If the sound file is stereo, only the first left channel is used). If the synthesis is put in stereo, thanks to the red button [BufS], the algorithm is based on Balance2.ar. On the right and below the blue / red button [BufM / BufS], the button and purple slider allow to randomise and select the range of the playback speed (RAT Module n°9) on the second channel, which will be different at each new iteration, to decorrelate the playback speeds on both channels. Moreover, some special synthesis types (i.e. 2-BufMVar, 3-BufMVar2, 5-BufMPitchVar, 6-BufMPitchVar2) in Module n°5 allow also to modulate and oscillate the panning between the two channels of the synthesis thanks to the 2 sliders P [panrate] and PA [pamp] at the right of the PAN module n°14, which can create distortion at high levels.
- [2 Virtu] -> Panning based on delay and amplitude (arguments : pointScale [VM Px] = 1, dbRollOff = (-6), speakerRadius [sp Rad] = 0.3). All algorithms with Virtu are based on VirtualMics.ar and RoundPan.ar from the quark wslib.
- [2 Spect] -> Spectral panning (arguments : panSpectralCurve [Sp2 C] = 7). The algorithm is based on PV_BrickWall.
2. Circular trajectories (from 6 to 15 in SPA module n°12) :
- [C Eq Po] -> Equal-power panning (arguments : circWidth [Cir W] = 2). The algorithm is based on PanAz.ar.
- [C Vbap] -> VBAP Panning (arguments : spread [VB W] = 0.2). The algorithm is based on VBAP.ar.
(For circular trajectories (14 and 15 in SPA module n°12) whose speed is determined by spectral centroid, the red range slider in the middle at the right of [C SP] determines the minimum and maximum speed, and the algorithm is based on PanAz.ar.)
When the synthesis is put in stereo for circular and 2D movements (thanks to the blue / red button [BufM / BufS] in Synthesis Module n°5), trajectories are mirrored for the second channel, correlating movements, and with the possibility to decorrelate the playback speeds, as previously mentioned, for creating a larger image (except for [S Virtu] and [T Virtu], which are too demanding in terms of CPU). In some cases with the algorithms [S Vbap] and [S Vdis], the argument x2Off [VB O2] allows to adjust the offset of the mirror.
3. Trajectories depending on spectral centroid and intensity (from 16 to 17 in SPA module n°12) (common arguments : spaLagTime [SD Lag] = 1, freqMin [SD Freq Min] = 20, freqMax [SD Freq Max] = 6000, freqCurve [SD F Cur] = 0, dbMin [SD dB Min] = 0, dbMax [SD dB Max] = 50) :
- [S Virtu] -> 2D Panning based on delay and amplitude (arguments : pointScale [VM Px] = 1, dbRollOff = (-6), speakerRadius [sp Rad] = 0.3, orientation [orient] = 0.5). Brightness (the spectral centroid) determines the position in horizontal axis and intensity the position in the vertical axis. In normal mapping, low / high frequencies are respectively on the left / right and loud / low intensity is respectively in front / behind. These mappings may be reversed.
- [S Vbap] -> VBAP Panning (angle = spectral centroid / elevation = intensity) (arguments : spread [VB W] = 0.2, x2Off [VB O2] = 180). Brightness (the spectral centroid) determines the angle and the intensity the elevation.
- [S Vdis] -> VBAP Panning with distance perception (arguments : pointScale [VB Px] = 1, spread [VB W] = 1, x2Off [VB O2] = 180, dbRollOff = -6, maxAmpRadius = 2, latencyComp = 0, delayUElev [according to Module DEL for elevation] = 0). Brightness determines the position in horizontal axis and intensity the position in the vertical axis (same below for [S Ambi]).
- [S Ambi] -> First Order Ambisonic Panning (arguments : pointScale [Amb Px] = 0.5, delayUElev [according to Module DEL for elevation] = 0). The FOA algorithm is based on BFEncode2.ar and BFDecode1.ar.
4. Trajectories selected within a library edited in advance with the 2D trajectory library editor based on the WFSCollider editor (from 18 to X in SPA module n°12). Trajectories can adapt automatically to the sound duration [Adap], take into account the edited trajectory time [Traj], or a specific trajectory playback speed [Slid], by defining [TrajRate]. Changes in playback rate or scale of the trajectory can be changed in realtime (common arguments : pointScale [VM Px, VB Px or Amb Px, depending on algorithm] = 1, trajBuf [according to trajectory defined in SPA module n°12], trajBufRatio = 1 [Adap, Traj, Slid], trajBufLoop = 0) :
- [T Virtu] -> 2D Panning based on delay and amplitude (arguments : dbRollOff = (-6), speakerRadius [sp Rad] = 0.3, orientation [orient] = 0.5)
-
[T Vdis] -> VBAP Panning with distance perception (arguments : maxAmpRadius = 2, latencyComp = 0, delayUElev [according to Module DEL for elevation] = 0, spread [VB W] = 1).
⚠️ However, this algorithm, as well as [S Vdis] above, seem to have an issue in the sense that the path through the centre is not well rendered and there is a kind of quick jump in channel volume between one side and the other side of the centre. - [T Ambi] -> First Order Ambisonic Panning (arguments : trajBuf [according to trajectory defined in SPA module n°12], trajBufRatio = 1 [Adap, Traj, Slid], trajBufLoop = 0, delayUElev [according to Module DEL for elevation] = 0)
At the bottom left of the module above, there is a quick selection of main trajectory types and randomisation within models of trajectories within each type or groups, to quickly experiment different spatial possibilities :
1. Pointillistic placement with 2 loudspeakers (Modules OUT L & OUT R select respectively the output channel or loudspeaker for links and right.) :
- [2 Fix] (0 in SPA module n°12) -> Panning between 2 loudspeakers. Module PAN determines the pan position.
- [2 Del] (1 in SPA module n°12) -> Delay between 2 loudspeakers. Module DEL determines the delay time of right channel, to get micro-temporal decorrelation.
2. Trajectories with 2 loudspeakers (In case of linear trajectories, modules OUT L & OUT R select respectively the loudspeaker where the sound event begins and ends. In case of round trip paths, module OUT L selects the loudspeaker where the sound event begins and ends & module OUT R the transitional point in the middle of the sound event. Modules OUT L & OUT R may be reversed.) :
- [2 Mob] (from 2 to 5 in SPA module n°12) -> Linear trajectories (2 and 3) or round trip path (4 and 5) between 2 loudspeakers.
3. Circular trajectories (Module OUT L selects the loudspeaker where the sound event begins in all circular trajectories. For circular trajectories with one rotation with VBAP algorithm [C VBAP], OUT R determines the loudspeaker where the sound event ends, otherwise with equal-power panning [C Eq Po], a complete rotation is done with the series of all the speakers. In case of regular multiple rotations (or rotations whose speed is determined by spectral centroid), module PAN determines (maximum) rotation speed between [\panCircMReg] defined by default at 0.01 (which can be changed in the pattern file) and [~circSpeedRangeMax] defined by default at 66 hz (which can be changed in the GUI file). In case of accelerating or deccelerating multiple rotations, module OUT R determines the minimum rotation speed between 0.001 and [~circSpeedRangeMin] defined by default at 2 hz (which can be changed in the GUI file) and module PAN the maximal rotation speed between the previous minimum rotation speed and [~circSpeedRangeMax] defined by default at 66 hz (which can be changed in the GUI file). In case of circular trajectories ([C 1], [C M Reg], [C M Var]) with VBAP algorithm [C VBAP], module DEL determines the fixed elevation. In order to be able to easily obtain a variable elevation (without the addition of another envelope module), a trick implemented is that 0 and 1 in module DEL trigger upward or downward trajectories respectively, while values between 0 and 1 are fixed elevations at different levels.) :
- [C 1] (from 6 to 7 in SPA module n°12) -> Circular trajectories with one rotation.
- [C M Reg] (from 8 to 9 in SPA module n°12) -> Circular trajectories with multiple regular rotations.
- [C M Var] (from 10 to 13 in SPA module n°12) -> Circular trajectories with multiple regularly accelerating or deccelerating rotations.
- [C SD] (from 14 to 15 in SPA module n°12) -> Circular trajectories whose speed is determined by spectral centroid.
4. Trajectories (Depending on the spatial algorithm, trajectories can be on the lower ring (VirtualMics), on the surface of a dome (VBAP), or in 3D with a simulation of the distance (VDis). In latest case, Module DEL determines the fixed elevation. In order to be able to easily obtain a variable elevation (without the addition of another envelope module), a trick implemented is that 0 and 1 in module DEL trigger upward or downward trajectories respectively, while values between 0 and 1 are fixed elevations at different levels.) :
- [T SD] (from 16 to 17 in SPA module n°12) -> Trajectories depending on spectral centroid and intensity.
- [Traj] (from 18 to X in SPA module n°12) -> Trajectories drawn in advance in the library.
5. Groups gathering different spatial movements :
- [C M] (from 8 to 13 in SPA module n°12) -> gathers [C M Reg] and [C M Var].
- [2 ALL] (from 0 to 5 in SPA module n°12) -> gathers all 2 : [2 Fix], [2 Del], [2 Mob].
- [C ALL] (from 6 to 15 in SPA module n°12) -> gathers all C : [C 1], [C M Reg], [C M Var], [C M].
- [2 C] (from 0 to 15 in SPA module n°12)-> gathers all 2 and C : [2 ALL] and [C ALL].
1. Some spatialisation algorithms are only available for some spatial configurations. For example :
- Spatial algorithms based on VirtualMics.ar and RoundPan.ar from the quark wslib are only available for the lower ring of loudspeakers.
- Zones of loudspeakers is used when there are a large number of (at least 16) loudspeakers and have been implemented for now only for Dome Hexa at Université de Montréal.
- In stereo, 2D trajectories are not available like in multi-speaker setup and trajectory types are only limited to three (static panning between links and right, one way or round-trip between links and right), as well as the panning algorithms (equal-power, delay-based and spectral).
2. Why spatial algorithms or strategies may need to be changed depending on spatial configurations and are not directly transferrable from one loudspeaker setup to another ?
As explained in the section 2 of the page on objectives, sequences integrating a channel-based approach or a multichannel effect system are different according to the number of loudspeakers available and cannot be reproduced in the same way on different loudspeaker configurations.
Also, by comparing a 4-loudspeaker setup with a 32-loudspeaker setup, I remark that I have the tendency to extend the duration of the sounds with the latter spatial setup, particularly when using a channel-based approach with a sound sent to a specific loudspeaker, since the spatial diffusion of loudspeakers is bigger and all the sounds are not stacked and squeezed in the same loudspeaker.
To give another concrete example, circular trajectories with the algorithm [C Eq Po] or [C VBAP] have relatively the same spatial effect with a quadraphony. However, the difference between both algorithms can be really noticed when using spatial setups with a large number of loudspeakers, such as 32, since the algorithm [C Eq Po] will go through all the series of loudspeakers, which has the effect to accelerate the rotation depending on the number of loudspeakers. The algorithm [C VBAP] may be preferred in some cases, if you change a lot of spatial configurations, since it produces more similar effects no matter the spatial setup.
Xon - ChristOn - Live 4 Life
ResearchGate | YouTube | Vimeo | FesseBook | Buy me a coffee | Patreon
- Home
- Photos
- Relationship with the tool
- Motivations behind Live 4 Life
- Global setup and usage
- GUI-views
- Code details
- Audiovisual extension