Forums > MaxMSP

converting a breakpoint function to audiorate

August 3, 2006 | 4:58 pm

I’m looking for a nice way to play back a breakpoint function at audio rate.

The idea is to use something like [function] in combination with pattr to
switch curves, and have these curves converted to a lookup table on the fly
for flexible playback. I want to treat the breakpoint function as if it were
continuous data, so I can jump, reverse, speedup etc. at any time.

My first guess is to convert the function to an audio lookup table, but I
can’t find a good way to write values to a buffer~ instantly /non-realtime
without the need for custom externals. Uzi-ing every sample using peek~
doesn’t feel like the right thing to do.

My main priority is fast curve switching so audio lookup might be overkill
in that sense (?). I think the ideal solution is to interpolate in realtime
between x-y pairs using a signal feed. Like an MSP equivalent of [funbuff]
using floating point values for both x and y.

The only object I know which come close is techno~, but it’s capabilities
and functions are too specific for my needs. Anyone experience with this?

cheers,
-thijs


August 3, 2006 | 5:16 pm

i would think the line~ object would work…


August 3, 2006 | 5:31 pm

Maybe [zigzag~]?

On Aug 3, 2006, at 12:58 PM, Thijs Koerselman wrote:

> I’m looking for a nice way to play back a breakpoint function at
> audio rate.
>
> The idea is to use something like [function] in combination with
> pattr to switch curves, and have these curves converted to a lookup
> table on the fly for flexible playback. I want to treat the
> breakpoint function as if it were continuous data, so I can jump,
> reverse, speedup etc. at any time.


August 3, 2006 | 6:12 pm

One problem with both zigzag~ and line~ is that you can’t jump between
positions. I also need floating point index. If you have one point at
x2.5-y10 and one at x5.2-y3.7 how can you jump to x 3.8?

-thijs

On 8/3/06, David Stanford wrote:
>
> Maybe [zigzag~]?
>
> On Aug 3, 2006, at 12:58 PM, Thijs Koerselman wrote:
>
> > I’m looking for a nice way to play back a breakpoint function at
> > audio rate.
> >
> > The idea is to use something like [function] in combination with
> > pattr to switch curves, and have these curves converted to a lookup
> > table on the fly for flexible playback. I want to treat the
> > breakpoint function as if it were continuous data, so I can jump,
> > reverse, speedup etc. at any time.
>


August 3, 2006 | 6:23 pm

With [zigzag~], you can jump to f.p. indices using the "jump"
message with floating point values. Or am is misunderstanding what
you mean?

On Aug 3, 2006, at 2:12 PM, Thijs Koerselman wrote:

> One problem with both zigzag~ and line~ is that you can’t jump
> between positions. I also need floating point index. If you have
> one point at x2.5-y10 and one at x5.2-y3.7 how can you jump to x 3.8?
>
> -thijs


August 3, 2006 | 8:27 pm

I guess you’re right. I never used the object before, and the reference
manual implies that only ints can be used for jump, but the help file shows
different. I’m going to give it a try. Thanks for the help.

-thijs

On 8/3/06, David Stanford wrote:
>
> With [zigzag~], you can jump to f.p. indices using the "jump"
> message with floating point values. Or am is misunderstanding what
> you mean?
>
>
>


August 4, 2006 | 1:41 am

waveform~ is pretty good, gives out x, y mouse data.


August 4, 2006 | 11:58 am

On 8/4/06, bin ray wrote:
>
>
> waveform~ is pretty good, gives out x, y mouse data.

I don’t see how waveform~ can be used to lookup a interpolate a breakpoint
function. It turns out that explaining myself is a harder than I think most
of the time. Its definitely not one of my strong points:-)

At the risk of being en idiot, I ended up writing a msp external to do what
I want. I wanted to have the interpolation functionality of the [function]
object (input float x and get interpolated value y ) at audiorate and
without the need for the UI.

In case anyone cares I’ll share it once its finished.

-thijs


August 4, 2006 | 12:16 pm

i’ve had some success using waveform~ as a breakpoint editor, you can use the mouse output and selection area to draw curves into the buffer~ that youre working on
i did use uzi and peek~, and i’ve made my curves lower resolution, 1 second of buffer~ for 16 seconds of control at the default pitch. higher rates of control had problems uziing that many values smoothly into the buffer~. it sounds good though, but you need a slide~ object in some instances.
other ways to do it might be copying sections into your buffer~ using a hacked mxj buf.Op
A top tip with animating waveform , is to use thispatcher to draw something over it as you change values, for some reason, this makes waveform~ refresh super fast so it looks nice when its animated. dunno why.

post your ideas , i’m interested to see your solutions, i’ll try and get mine up some time soon


Viewing 9 posts - 1 through 9 (of 9 total)