converting absolute controllers to relative,


    Apr 06 2006 | 9:27 pm
    Hello,
    I'm about to build an object to convert absolute MIDI data to relative,
    but before I do, I just wanted to make sure no one else has already done
    this. A quick search of the forum and maxobjects tells me "no" - but you
    never know...
    Yes, it may seem strange to want to do this, but I have here the new
    faderfox LV1 and it has 13 modes of absolute rotary knobs set to
    absolute, which is silly, so I want to remap them to be relative [since
    its rotary encoders]
    wk,
    seb.

    • Apr 07 2006 | 9:01 am
      Hello,
      If an abstraction rather than an object is OK for you, have a look at
      this patcher...
      Roald Baudoux
      max v2;
      Roald Baudoux
    • Apr 07 2006 | 12:25 pm
      wow thats more than i was expecting! thanks!
      i especially like how you use the "bucket" object, elegant.
      however, its not this simple, since i need to go from:
      0-127
      to:
      1+ = up
      127- = down
      and at the edges, when the rot knob is spinning in only one direction it initially sends values say from 127 down to 0 and then it just keeps sending 0's with every 'tick' in the left dir. Same thing with the updirection, great relative 2 bits until it hits 127 and then it just sends 127 out.
      My follow up question is; how can I measure the the rate of the knob spin [to translate it into an integer in "relative 2's compared" format] in an elegant manner?
      The only solution I can think of is to have a seperate clock/metro running which measures the rate at which the successive 0's or 127's enter to then translate that into a more meaningful value... but this doesn't feel right; too complicated.
      Would anyone have an alternative method for measuring "rate of change" at the edges?
      Once i've built the converter for the faderfox LV2 [incl. listeners for the correct midi cc, ch its set to], I'll post it so others can also use it.
      :)
      Here is what I have so far:
      Thanks again,
      S Chedal.
    • Apr 07 2006 | 6:40 pm
    • Apr 07 2006 | 6:49 pm
      I guess it has something to do with the mouse tracking. The 0s and 127s
      are there because you do not have a change of value for every mouse
      displacement. That's quite logical because you get only 128 values for
      something like 360 degrees. You can get rid of these values by
      inserting a change object at the output of the dial but I guess this
      wouldnt' happen with a slider or a real MIDI controller.
      However some jumps still happen...
      Roald Baudoux
    • Apr 07 2006 | 8:28 pm
      Thanks Roald Baudoux,
      Couple of things:
      1st: I resolved the issue by realizing that the faderfox has a feedback
      system so I don't need to transform the abs to relative anymore! doh!
      and: youpie!
      :)
      2nd: I have made a new feature for the LV2 called "auto track select on
      fader touch" - many other LV2 owners may find this useful, you can find
      the code at the bottom of this email.
      For the book, let me at least clarify what the issue was:
      Ok, I guess I was not very clear...
      Here is an example:
      When I turn the external abs controller to the right, it sends the
      following data:
      {123,124,125,126,127,127,127,127,127,...}
      If I turn it fast to the right it could send something like this:
      {100,104,108,112,120,127,127,127,127,127,...}
      In both cases, the code works because it moves a relative signed 2 bit
      controller in my software [Ableton live].
      However, in "case one" I am turning slowly, in case two I am turning
      fast. When i reach the end of the data range of the absolute controller
      it sends out "127" no mater how fast i am turning the knob; so I need
      some other mechanism to determine how fast I am turning otherwise I get
      a non-linear/unpredictable output. Hence my idea to use a counter to
      measure the rate at which the "127" data enters the system.
      The output of the system is either 1 or 127. But the way relative 2 bit
      works is that you can also have an output of 4 or 122. A "4" means move
      up 4 steps and a "122" means move down 128-122=6 steps. this makes it
      possible to "spin" these kinds of relative controllers quickly for rapid
      changes - a form of smart acceleration.
      What i was asking is if there was a smart / elegant way to measure a
      rate of change, or if the only way to measure rate is to use a
      time-control object; like metro?
      --
      LV2 feature addition: Auto select track on fader touch: Connect the out
      port of your system back to the LV2 to have the LV2 auto-switch tracks
      when moving a fader! Enjoy!
      ;)
    • Apr 08 2006 | 12:40 am
      If I understand correctly, you should be able to just trigger dec- or
      incrementation. If you're getting a stream of 127s, you should
      transform that into a stream of +1s, if that makes sense... assuming
      your controller does not skip values when used quickly. Otherwise it's
      unreliable.
      For rate of change, off the top of my head, you might want to look into
      thresh and zl len. Haven't tried this one myself but it seems workable.
    • Apr 08 2006 | 4:36 am
      Here is a version I made that responds to rate of the input from a relative controller. It was made for the jog wheel of a US-224 so its input values ( inc and dec) may need to be changed for your purposes.
      HTH
      S.
    • Apr 08 2006 | 6:38 am
      inforazor wrote:
      > My follow up question is; how can I measure the the rate of the knob
      > spin [to translate it into an integer in "relative 2's compared"
      > format] in an elegant manner?
      Have a look at my dialin objects @ cycling/share.
      Stefan
      --
      [][] [][][] [][] [][][]
      [][][][][][][][][][][][][][][]
      Stefan Tiedje
      Klanggestalter
      Electronic Composition
      &
      Improvisation
      /~~~~~
      \ /|() ()|
      ))))) )| | |( \
      /// _/)/ )))))
      ___/ ///
      -------------------------x----
      --_____-----------|-----------
      --(_|_ ----|-----|-----()----
      -- _|_)----|-----()-----------
      ----------()------------x-----
      14, Av. Pr. Franklin Roosevelt,
      94320 Thiais, France
      Phone at CCMIX +33-1-57 42 91 09