spatialized

Spatialized
Mac OS X

audio flow : ableton - jack - pd (vbap) - jack - dac

Using jack allows the connection of multiple audio softwares allowing Ableton Live to therefore communicate with Pd and dac. Midi CC values are used to sequence the panning parameters allowing for events to be synced between pd and ableton.

Windows XP

audio flow : reason (rewire) - ableton - pdVst (vbap) - ableton - dac

using PdVst allows for pd to be run inside of Ableton Live with a series of sends and returns creating 8 channel ins and outs. The vbap object was used to care of panning amplitudes while tables where setup to do sequencing of pans.

xp version needs to be updated to handle midi spacialization patch in pure data using vbap here is an older version of the 8 channel patch with effects added. [|8.1 panner.zip] and here is a..... 5.1 spatialization using pure data adhering to "movie standards" as per Thomas Holmann [|5.1_panner.zip]

using these [|instructions]i was able to open Pd as a VST on a computer with Windows XP

Midi
okay so this project is turning into a ton of midi mapping. here i will cover how midi is integrated into the spatialization.

first a realization that the midi sequencing and assignment is so bomb in ableton that i decided to do away with any use of tables in pd and just write tons of midi clips in the ableton session view. These clips are then sending CC values to pd and ableton to control a variety of parameters. Namely a spatialization angle, which with using vbap is something between -180 and 180 (or 0 to 360 offset by -180). Now midi goes from 0-127 so basically 0-127 is scaled to 0-360 then i don't do the offset however because of the nature of angles being circular this works out to being a value of 180 is dead center above that moves clockwise until 360 which is directly behind you and below 180 moves counterclockwise. So in midi values thats essentially 64-127 starts center and goes clockwise, 63-0 starts center and goes counterclockwise. Make sense? A diagram would be nice here. Vbap also has a spread parameter which is sent as well. Spread is a value from 0-100 so 0-127 gets scaled and voila. Spread refers to the specific location of a sound is it only in one location, spread 0, or does it kind of leak out everywhere losing some of its directionality, spread 100.

So there are 8 midi tracks each with their own set of clips sending an angle (azimuth) and spread value to 8 vbap objects inside of pd.

Within ableton I also am using midi clips to send cc values to each channel to control the send values for each track. Every audio track has 8 sends, corresponding to the 8 vbaps in pd, and these midi clips act as presets to create which spatialization path each individual audio track follows or maybe it goes to multiple tracks. Basically this is just mixing but in this complicated setup some automated mix levels will be helpful to allow me to 'perform' as instrumentalist more then as a mix dj.

way too much midi mapping... on the korg microKontrol


 * scene || type || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 ||
 * 1 || encoder || angle A1 || angle B2 || angle C3 || angle D4 || angle E5 || angle F6 || angle G6 || angle H7 ||  ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || spread A1 || spread B2 || spread C3 || spread D4 || spread E5 || spread F6 || spread G7 || spread H8 ||  ||   ||   ||   ||   ||   ||   ||   ||
 * || pads || angle monitor ||  ||   ||   ||   ||   ||   ||   || 1on || 2on || 3on || 4on || 5on || 6on || 7on || 8on ||
 * 2 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * 3 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * 4 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * 5 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 1 send A || 1 send B || 1 send C || 1 send D || 1 send E || 1 send F || 1 send G || 1 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 6 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 2 send A || 2 Send B || 2 send C || 2 send D || 2 send E || 2 send F || 2 send G || 2 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 7 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 3 send A || 3 send B || 3 send C || 3 send D || 3 send E || 3 send F || 3 send G || 3 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 8 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 4 send A || 4 send B || 4 send C || 4 send D || 4 send E || 4 send F || 4 send G || 4 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 9 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 5 send A || 5 send B || 5 send C || 5 send D || 5 send E || 5 send F || 5 send G || 5 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 10 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 6 send A || 6 send B || 6 send C || 6 send D || 6 send E || 6 send F || 6 send G || 6 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 11 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 7 send A || 7 send B || 7 send C || 7 send D || 7 send E || 7 send F || 7 send G || 7 send H ||  ||   ||   ||   ||   ||   ||   ||   ||
 * 12 || encoder ||  ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||   ||
 * || fader || 8 send A || 8 send B || 8 send C || 8 send D || 8 send E || 8 send F || 8 send G || 8 send H ||  ||   ||   ||   ||   ||   ||   ||   ||