converting a breakpoint function to audiorate


    Aug 03 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

    • Aug 03 2006 | 5:16 pm
      i would think the line~ object would work...
    • Aug 03 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.
    • Aug 03 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.
      >
    • Aug 03 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
    • Aug 03 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?
      >
      >
      >
    • Aug 04 2006 | 1:41 am
      waveform~ is pretty good, gives out x, y mouse data.
    • Aug 04 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
    • Aug 04 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