2d.wave~ question
Hi,
I've been using Max for a couple of years now but have only recently begun to play around with the 2d.wave~ object. I'm getting some great results with it but I am still a little ignorant as to how it works exactly and I found the help file a little vague. From what I gather, it creates a kind of wave terrain from the file loaded into its buffer~ by slicing(?) it into "rows". But how are these rows arranged "spacially" exactly? How could this be displayed graphically perhaps? I would very appreciative if anybody has, or could point my in the direction of any further info on this object or on wave terrains in general (Ive read Curtis Roads material in the past but do not have immediate access to it at present).
Thanks.
I second this question. Great object, a little vague on the
details...or maybe we're not supposed to know....DUNDAH!!!
On 28/09/2007, at 2:50 PM, Joe Salmon wrote:
if i would have to guess i would say it works exactly like wave~ - it consists of one buffer and the reast is only how you access it.
which is why i use wave~ only. but maybe i am just ignorant.
Well from my experience, 2d.wave works like this-
the number of rows is the number of subdivisions of the buffer, like slices as you mentioned. The left signal inlet (x) will play back one row's worth of the buffer. The y index decides which row(s) (aka slice[s]) will play back.
For example, say you load a 1 measure loop that is 4 beats to the measure. You set the number rows to 4.
Now lets say you connect a phasor~ into the x input and a sig~ into the y input. If you set the sig~ to 0., the phasor will scan the first beat of the loop, 0.25 will scan the 2nd beat. 0.5 and 0.75 are the third and fourth. If the sig~ falls in between these numbers, the phasor will scan a beat's worth of material but not starting directly on a beat.
Here is a simple test patch of the example-
That's Bloody Brilliant!
Ever thought to contribute to the reference manual?
Kel
On 29/09/2007, at 2:45 AM, Nick Inhofe wrote:
if someone wants to pay me to do this, i'd gladly accept. :)
Also, to agree with roman- You could do the same thing with wave~. With the same example you could have a phasor~ multiplied by 0.25 so that it only reads from 0. to .25.
Then you could add a sig~ to the resulting signal from phasor~.
0., 0.25, 0.5, and 0.75 added to the phasor~ would act the same way as in my first example. Here is a test patch.
So the difference is really conceptual. However, it is easy to make comparisons between the two in this simple example. In a more complicated situation, it might be clearly easier to use 2d.wave~ rather than wave~.
----------------------------------------------------
Yeah, thanks Nick - great explanations and articulated beautifully. I guess I'm particularly curious as to how 2d.wave~ makes transitions between rows - does do some kind of interpolation between samples as it moves from row to row or does it simply treat each row as audio channel and crossfades between them? Or perhaps something different entirely? Hope that makes some sense.
Thanks again
Not the first time this has been asked, and someone (JKC?), posted quite
nice explanation in reply some time ago. You might have to Google the old
list to find it (synthesisters.com), even though I think it has come up
again more recently.
A more informative .help file would be nice though :)
Cheers
Roger
out of curiousity, i found jkc's post-
any technical details on how 2d.wave works as far as interpolation etc is beyond my expertise as a user :0
Also, after revisiting the initial 2d.wave patch I posted, and in light of reading jkc's explanation, I'm pretty sure I was incorrect about the interpolation on the y axis.
It seems like the behavior of the y axis more more like a crossfade to the next rows worth of data, rather than a forward movement that would be found in the wave~ example.
I was looking at a patch on a followup post to jkc's explanation that demonstrates this very well-
here's a test patch I built that plays through sample by sample, entirely along th y axis. It achieves pretty much the same result as playing through the same sample along the x axis when the y axis consists of only 1 row. So I gues it follows that there is interpolation between samples.
sorry, here's the text version. Forgive me - its my first time on this forum!
Quote: 86hz wrote on Sat, 29 September 2007 19:13
re:attachement "2d.wave~"
it is a very clever idea to name a patch exactly like one of the standard objects! :)
Hi Joe,
I did my masters thesis on Wave Terrain Synthesis. I looked at a lot
of existing methodology for this technique, and looked at some
alternative methodology for multi-dimensional systems. And I did very
briefly look at 2d.wave~ as an existing implementation in Chapter 1.
Please bear in mind, the examples documented do not utilize many of
the further enhancements made to MaxMSP since I submitted! And
ideally many of the objects and sub-patches should have been
individually compiled for reasons of efficiency.
Find thesis here:
http://portal.ecu.edu.au/adt-public/adt-ECU2006.0037.html
Thanks!
Stuart James
On 28/09/2007, at 12:50 PM, Joe Salmon wrote:
>
> Hi,
>
> I've been using Max for a couple of years now but have only
> recently begun to play around with the 2d.wave~ object. I'm getting
> some great results with it but I am still a little ignorant as to
> how it works exactly and I found the help file a little vague. From
> what I gather, it creates a kind of wave terrain from the file
> loaded into its buffer~ by slicing(?) it into "rows". But how are
> these rows arranged "spacially" exactly? How could this be
> displayed graphically perhaps? I would very appreciative if anybody
> has, or could point my in the direction of any further info on this
> object or on wave terrains in general (Ive read Curtis Roads
> material in the past but do not have immediate access to it at
> present).
>
> Thanks.