Constructive Field Synthesis

Constructive Field Synthesis (CFS) is a method of generating Ambisonic soundfields by directly synthesizing the constituent B-format components as independent, phase-correlated signals. By bypassing traditional encoding algorithms and instead modulating the phase and amplitude relationships between components at audio rates, CFS allows for complex, emergent spatial movements and textures that are unattainable through static point-source encoding: constructing replaces decoding.


CFS with SC and Reaper

Technically, the whole concept can be implemented in SC (or other audio coding environments), but using the DAW allows for more flexible decoding options, visualization and recording for further processing. Read External DAW Routing for infomation on how to route audio between programs on different operating systems.

In this example, the FOA components W,Y,Z,X are created in SuperCollider - according to the AmbiX convention- and forwarded to a 4-channel bus in Reaper. The signal is visualized with the IEM EnergyVisualizer and decoded with IEM's BinauralDecoder:

/images/spatial/CFS.png

Constructing in SC - decoding in the DAW.

Make sure that Reaper has enough input channels (set in Preferences>Audio>Device) and that the channel used has a 4-channel input.


Omni-Only

For exploring CFS and left-right shifting with binaural decoding, the SC server needs four outputs to send the FOA signal to Reaper:

(
// increase the number of SC output channels
s.options.numInputBusChannels  = 0;
s.options.numOutputBusChannels = 4;
s.boot;

// show SC meter
s.meter;
)

First, only the omidirectional component W is sent to Reaper. This happens in a simple synth that creates a sawtooth with frequency and amplitude as parameters:

(
// W Component going to output 0
~s_0 = { arg f=150, a=0.2 ;
    Out.ar(0, VarSaw.ar(f,0,mul:a));
}.play;
)

The visualization of this omni-only signal shows that it is evenly distributed across the sphere:

/images/spatial/foa_omni.png

Visualization of the omni component.


Left-Right

To shift the sound field hard left, create a second synth with the same structure, that outputs an identical signal to the second output bus of SC.

(
~s_1 = { arg f=150, a=0.2;
    Out.ar(1, VarSaw.ar(f,iphase:0,mul:a));
}.play;
)
/images/spatial/foa_left.png

Shifted hard left.


Free only the second synth before moving on:

~s_1.free()

To shift the sound field hard right, create the same synth as before but shift the phase by a half cycle (pi): iphase:0.5.

(
~s_1 = { arg f=150, a=0.2;
    Out.ar(1, VarSaw.ar(f,iphase:0.5,mul:a));
}.play;
)
/images/spatial/foa_right.png

Shifted hard right.


Dynamic Left-Right

The following step utilizes detuned components to craete a dynamically shifting sound field. It adds a minimal GUI slider to control the frequency of the left-right component:

// Make sure to free the existing synths before trying this.
(
~s_1 = { arg f=150, a=0.2;
    Out.ar(1, VarSaw.ar(f,iphase:0,mul:a));
}.play;

// add a miniml GUI slider
w = Window("Control", Rect(200, 400, 900, 50)).front;
EZSlider(w, Rect(10, 10, 800, 20), "Freq", [100, 200, \exp], { |sl| ~s_1.set(\f, sl.value) },150);
)

This allows to change the resulting effect from slow spatial modulations (minimal difference in frequencies) to spatial textures (maximal difference):


All Dimensions


Example: A 3rd Order Composition

The fixed media composition Villeurbanne is entirely based on Ambisonics field synthesis and sound field rotations:

Different layers are generated with different Ambisonics orders: first order for the analog synths, third order for the high-frequency textures.

Instead of using digitally created signals, analog synth layers are stacked to create a constantly cnanging FOA sound filed. The same synth track is recorded four times with only slightly detuned oscillators and altered parameters to create one FOA synth voice. Multiple of these voices are combined in the final mix.

For the high-frequency textures, 16 randomly selected sections of heavily stretched voices are used as individual channels of third order Ambisonics signals:

/images/spatial/cfs_ardour.png

Visualization of the omni component.