Octophonic Real-time Spacialization

Multi-Channel Performance Tool

Octophonic Spatialization

Multi-track real-time octophonic spatialization utility

The goal for base functionality of the tool is to allow multi-track audio, during a live performance, to be input to the patch and allow each track to be spacialized within an octophonic space realtime with individual control for each audio track. The controls will be presented in a way that allows them all to be visible and easily accessible during performance. The audio for each track can originate from one source or multiple sources (programs, other computers, network streams, audio card input). The panning will be controlled via one or any of the following: external controller (joystick, X/Y/(Z) sensor), automation from other software, touch screen monitor, or internal preset panning algorithms. The audio tracks will be mixed and output in 8 channels to the chosen output destination. The patch will also operate in quadroponic mode when eight speakers are not available.


Performance view for the single track octophonic sub-patch. Multiple Instances of the sub-patch will be integrated into the top level patch.


Above is a screen shot showing the internals of the surround sub-patch that will be used for each audio track. The wiring is a bit hard to follow in this view but it shows all the sub-patches and objects used to create this sub-patch.

LED Indicators


The LED control sub-patch takes in the track number that an external controller is pointing too along with the LED color assigned to that controller. When a track is selected by the controller the sub-patch illuminates the corresponding color of LED above the active control region for the selected track. The patch turns off the inactive region LED when the controller selects another track. The patch also includes an automated routing system that generates (on startup or color change) 8 unique global objects that can be accessed by all the individual track surround sub-patches. This system replaces what would be 512 wires for an eight track setup.

Eight track LED indicator control and routing sub-patch

Joystick Input


This sub-patch grabs the incoming USB data stream corresponding to the selected USB Joystick. The stream data is sorted by controller number and the data values for each controller number are made available to the rest of the patch. I purchased a cheap USB gaming joystick (Raider Digital Pro) and mapped its parameters in this sub-patch, if a different USB joystick or different platform are used the route numbers can be modified accordingly (use a print object to see what the hi object outputs).

USB joystick (Interactpd) control data input sub-patch

External Control Routing


The control routing patch takes input from an external controller and routes the data to the selected tracks pan control. The destination track can be changed from the controller and the controller can enable/disable its data stream. The selected tracks number is retained by the patch and made available to other sub-patches.

Joystick (Interactpd) control data routing sub-patch – eight track

Eight channel Audio Routing

Each of these sub-patches operate in a similar way and were designed to allow for efficient audio routing during setup or when making changes within the environment. The sub-patch takes in a group name either at startup or from user input and generates eight send objects with similar incremental names. The eight audio channels are sent via the eight send objects contained in the group. The Receive object also requires a group name from which eight receive objects are generated. These objects receive the eight channels of audio sent by the corresponding (same name) send group. The group names can be changed at anytime allowing for fast re-routing of the multi-channel output

Eight Channel Audio Send Sub-patch


Eight Channel Audio Receive Subpatch

Octophonic Speaker Configuration Meter

I set out to create an environment that allows sounds to move within a three dimensional space.

With live performance being the forefront application, I choose a configuration that utilizes a minimal number of speakers to create the desired effect. I want to keep the speakers to a minimum so it will be more realistic to utilizes the setup in performance spaces.
To create a surround image (without phase manipulation) in two dimensions with 360 degrees of possible perceived sound sources, four speakers are required (quadrophonic). To incorporate the third dimension a second quadrophonic setup will be placed in a parallel plane above the first. One plane will be at head level and the second will be above the first. The height of the second plane will be determined by: the size of the space, the type of speakers used and the number of people attending the performance. These factors will also influence the speaker placement within each plane as well as the angle of the speakers. The speakers in the lower plane will be pole mounted for most applications. The speakers in the upper plane can be flown via standard shown rigging technics from the ceiling supports or a truss structure.

I put together a sub patch that gives a visual representation of the speakers placement and the signal level of each speaker. This sub-patch was created to aid the conformation of proper routing and controller orientation.

Octophonic surround signal meter sub-patch

Eight Channel Mixer

This sub-patch is a basic eight channel mixer with track gain and signal metering. There is a master fader that overrides the individual channel faders. There is a eight channel audio Receive object included in the mixer sub-patch to receive a group of audio tracks. There are individual mutes for each channel as well as a master mute with LED indicators. I included pre-mute fader-value recall so the faders are returned to their previous state when mute is turned off.

Eight channel audio mixer

Mute with Restore Last Fader Value

Mute that restores last fader value

Stereo to Octophonic Surround Pan

These three patches create the octophonic spatialized image from a stereo audio input. The sub-patches take in X, Y, Z positional data which is used to control the signal levels for the output channels. The patch preserves any initial L/R stereo image the input audio had. After passing through the three sub-patches eight channels of audio that have specific speaker-location destinations are created. Together the eight tracks and their giving power levels represent a sound positioned in a 3D space. These patches are based on the Max/MSP Panner Objects.

Stereo 2 Quad

The first step in the transition is to turn the stereo signal into a quadraphonic signal based on the X and Y control values. This is done in the first sub-patch called “Stereo 2 Quad”. First the X values is used to pan between left and right. The pan effect is emulated by manipulating the left and right signal power levels using a buffer that implements a square-root curve, which preserves constant power.

Next the left signal and right signal are separately paned between their own front and back channels. The signal from each side Ex. Left is split into two signals that each have their power levels manipulated, based on the Y control value, by a buffer (same as above) to produce front and back signals for each side. This result in a quadrophonic image.

Stereo to quadraphonic audio sub-patch

Quadraphonic 2 Octophonic

Next the Quadrophonic image is turned into an octophonic image with the “Quad 2 Octaphonic” sub-patch which contains four instances of the sub-patch “Mono 2 Stereo”.

Quadraphonic to octophonic audio sub-patch

Mono 2 Stereo

Each of the four quadraphonic channels is sent to its own “Mono 2 Stereo” sub-patch which uses the input signal to create a top and bottom signal with power levels determined by the the Z control value and the same buffer process explained above.

Mono to stereo sub-patch

Square-Root Curve Buffer

The square-root curve preserves constant power and results in very accurate virtual panning


Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

You must be logged in to post an
interactive video comment.