Panned Delay

RobMcT's icon

Hey!

Im totally new to max/msp and finding it difficult to get to grips with so any help would be great.

I am trying to create a patch to output to a 4 speaker surround sound system so i can delay the signal coming from one or several speakers. The idea is that the closer the listener is to a speaker, the smaller the delay in relation to the further away speakers (if this makes sense).

I am familiar with quadpan which deals with amplitude panning using co-ordinantes on a matrix, where u can manually position the pointer in relation to the speakers, but something which handles delay in a similar fashion would be ideal.

Is this even possible? sorry for any incorrect terminology.

Any help would be appreciated. thanks

Rob.

sixtin's icon

Absolutely possible, as a rule of thumb, with Max/MSP - EVERYTHING is possible.

Funnily enough I've been doing exactly this for an installation recently.

Look at tapin~ and tapout~ for your delay lines, poly~ for doing polyphonic-ness i.e. multiple delays.

You could take your XY data and perform a cartesian to polar conversion (or the other way round, I forget) the get the distance from your speakers then use that value to control the delay time (right inlet of the tapout~ object).

RobMcT's icon

Brilliant! You are a saviour. lol

Thanks for taking the time. much appreciated.

Rob.

kassian_sheppard's icon

Hi. I am also a novice Max user and I am currently working on a four speaker installation too. I am using an object called 'msg surround' to facilitate this. My problem is when I pan sound around the four speakers I get a crackling noise along with it. I have tried solving this with the use of a line object to try and smooth it out but had no luck.

Any help would be greatly appreciated :)

Kassian

Luke Hall's icon

It seems like you might be using the [line] object on the max events. If this is the case then try using [line~] on the audio signal instead.

lh

seejayjames's icon

And for the XY-to-distance, you can rely on good old Pythagoras too:

expr sqrt( (pow($i2-$i1),2) + (pow($i4-$i3),2) )

where $i1 and $i2 are your X coordinates, and $i3 and $i4 are your Y coordinates. Though with this method you could switch them. The backslash and comma are just how you tell "pow" to do its calculations, so don't be confused by them :)