Max-based multi-channel panning/localization techniques/strategies
Hi all,
I'm interested in Max-based multi-channel panning/localization techniques/strategies. We are taking delivery later today of an octophonic (plus sub) monitor setup in our computer music studio. We also recently acquired a large multi-channel concert sound system (32x8x2x1 mixer, 8 mains, 2 subs, 4 wedge monitors). I'm intending to introduce my students to a variety of approaches to multi-channel panning & localization using Max. If anyone has relevant links, patches, or other references/suggestions, please do let me know. Thanks!
Thanks in advance for any assistance.
Best,
Steven
usually i try to stay away from telling people to rtfm, but in this case ... there is plenty on the forums, search and you will find several discussions and patches.
-110
Yes, have already done some searches and found some interesting things. However, I'm also hoping to perhaps get pointers to things not already discussed on here - I'm guessing there are a number of things people have done in this area which haven't been posted about in the forums.
Thanks anyway.
Hi Steven.
IRCAM's Spat is by far the most advanced spatialization tool for Max I know. Unfortunately, it is not free.
hth
aa
Hi Andrea,
Yes, thanks - I'm familiar with Spat. I am considering whether to ask my school to shell out the money for it. It would certainly be useful as a demonstration tool, though my students would perhaps not be able to afford to get their own copies.
Thanks again!
Best,
Steven
Hi Steve,
I can help you with this, I modified the signal controlled 4 channel panner in Max5 to eight channels, just need to modify my patch before sending.
You should also check: Zachary Seldess abstractions which are more detailed than mine.
Best
Tony.
PS. Check out my max utility tool: Multi Object Instance Gen over on Toolbox page.
Comments, suggestions welcomed.
Hi Tony,
Thanks much, will check them out. Look forward to seeing your modified patch when you get a chance.
Best,
Steven
Hi Steve,
Here you go:
Hi Tony,
In taking a quick look at your patch, there seems to be a problem with the subpatch to fill the buffer: the curve never gets to 1 (so it will never set a channel to full volume) and most of the samples above the 3rd section are non-zero. These show up when I double click on the cycle or buffer. This is also apparent when using the demo patch - no channel gets to full volume and there are clicks in the channels when they hit the non-zero discontinuities.
Not exactly sure where the problems are...will have another look tomorrow (it's almost 11:30 pm here in Singapore).
Best,
Steven
Here's an edit that fixes the issues I mentioned in the previous post.
For that matter, the [pan4s] abstraction in the Max examples folder needs a fix, too...it also never reaches unity gain. The formula is slightly wrong: the [expr sqrt($i1/256.] should be [expr sqrt($i1/128.] (i.e., buffer size (512) in samples divided by 4, not divided by 2). When you compare this to the [pan2s] abstraction, you can see the difference.
Here it is again in Max 5 format...with a little more cleanup. Now it's time for bed! hahaha
Hi Steven,
I've been developing some streamlined amplitude panning externals this past year for use in graphics-driven sound projects on large tiled-display environments. Pretty much the same idea as pans4s, my abstractions, etc., but written in C (Mac only) and designed to scale waaay up. The objects use Internal sample-rate interpolation of coordinates, so the panners are driven by Max messages (no need to do smoothing or drive with a signal). Second version (zns.apan2) uses some internal bus summing (kind of like send~/receive~ functionality) to send many panners to one receiver, providing a big boost in efficiency... plus it works inside [poly~ @parallel 1].
Here's a stampede simulation rendering 3072 sound objects across a 5.1ch setup (on one MacPro... with headroom still!). Sound driven by a Most-Pixels-Ever application (my fork: https://github.com/zseldess/Most-Pixels-Ever/ ). Video has 5.1 mixed down to stereo. Sounds much better in the actual room (this is a direct capture of the sound from the app...).
- http://vizoasis.net/share/Audio/Stampede1_2ch_mix(small).mov
And again with only 300 objects:
- http://vizoasis.net/share/Audio/Stampede2_2ch_mix(small).mov
I'm not ready to release any code at this point, and there are still a few issues (i.e. no guarantees), but I thought I'd just post the externals for anyone interested in trying.
best,
Zachary
hi.
knowing zachary's work, his stuff above is likely brilliant. i am gonna check it out.
in the mean time, you should look into:
vbap and dbap. the easiest way to do this is install the latest jamoma, where you will be able to easily experiment with the different approaches. i use vbap / dbap for everything.
if you are interested in 5.1 / 7.1 / 10.2 etc, it is a minefield of bullshit. good luck. all possible in max, and there is even a cheap and cheerful example in the examples folder i think. the nightmare is different situations, different management, different renderings, different ways of dealing with sub in pre (max) or post (commercial) environments.
in general, if you do not research sub and how to use in multichannel environments, leave it out from your system completely.
ambisonics is wonderful, scalable, and very max doable.
there are very interesting Pd patches for all of this downloadable from that institution in austria. more inspiration: the gold standard for completely scalable multichannel goodness is BeastMulch written in supercollider - worth downloading for interest at least. max is not very good at scalability, but excellent at everything else.
of course you could forget max and just go the acousmonium style route.
2 cents. have fun.
and if you consider SC, more recent approach to advanced spatialization is ATK quark:
http://www.ambisonictoolkit.net/Help/Guides/Intro-to-the-ATK.html
Zachary - thanks for the post, links, and the externals. I'll give them a go some time this week.
pid - thanks also for the warnings/heads-up. Luckily, I'm not so much looking for finished solutions as examples of various techniques/strategies to show my students, who will then decide how they want to address the issue(s) in their own projects. Learning about inconsistencies and conflicting aims is part of the process!
Andrzej - thanks for the pointer. My students are working in Max, but it's good to have other options to at least demonstrate the possibilities to them.