1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

Trying to connect Puredata and Reaktor with OSC to drive Reaktor with a joystick

Discussion in 'REAKTOR' started by esox, Sep 11, 2012.

  1. esox

    esox New Member

    Messages:
    13
    Hello,

    First, excuse my french, but I'm... french so my english is not perfect.

    Here is what I want to do :

    I want to drive a Reaktor sampler with a joystick (pitch, loop start point, loop length and trigger). I don't use MIDI because 127 steps is a bit weak. So I want to use OSC.

    I made a patch in PureData to get the joystick axis and buttons infos. I already managed to have dummy OSC msg going from Pd to Reaktor in the Reaktor OSC setup window.

    S o I would like to know how to format message out of Pd with the correct OSC syntax and how to get them driving my sampler in Reaktor.

    Could someone help ?

    I'm on win XP.

    The next step would be to drive Reaktor from my Ipad with touchOSC.

    Thanks.
     
  2. arachnaut

    arachnaut NI Product Owner

    Messages:
    3,106
  3. RalfB

    RalfB NI Product Owner

    Messages:
    70
    attached is a Pure Data patch example for sending OSC out of PD to the localhost.
     

    Attached Files:

  4. esox

    esox New Member

    Messages:
    13
    If I want to use OSC it is beacause of the very low definition of MIDI : only 127 steps, wich make impossible to do a pitch slide properly. The smallest joystick allows 65536 steps that OSC can communicate to Reaktor completly.

    Otherwise, thanks for the patch, the next step will be to use OSC through TCP protocol wich is more reliable than UDP.
     
  5. Ch00rD

    Ch00rD NI Product Owner

    Messages:
    3
    I hear you re: limited resolution of plain MIDI CC#. I'm always trying to avoid that as well myself.

    But your assumption that MIDI has a very low definition is incorrect. You can quite easily use 14-bit resolution (i.e. values from 0 to 16383, quite a step up fro 0-127, arguably sufficient for most parameters) using (1) MSB/LSB pairs of CC#'s (MIDI specifies CC#s 0 to 31 as MSB, 32 to 63 as LSB), (2) using (N)RPN CC#'s, and (3) using pitch bend values (easier to handle as a single event, but limited to 16 channels/port, and most hardware does not actually support the full scale, but skips a few bits, you may for example have a keyboard with 10-bit resolution), (4) custom 'hacks' such as combining note-on velocity with note-off velocity to (i.e. two 7-bit values can make one 14-bit value).

    I use Pd or Max a lot for this sort of stuff, but for using analog joysticks, I actually like junXion best (OS X only though). Check it out; it handles OSC as well as MIDI. I know many performers who are *much* more into using joysticks than I am that use it extensively.
     
  6. esox

    esox New Member

    Messages:
    13
    That's right, but I never used that concept. But I think that it is easier to use OSC that can directly carry the 16bits resolution of the joystick directly into reaktor... But you are right, I'll have to learn a bit about those "midi cooking" (that's fun in french midi means mid day, so midi cooking could understood as "what are we going to eat for lunch...).

    Do you know any tutorials about what you said ? I.E. MSB/LSB and midi channels ?

    Anyway as I qill use my Ipad to drive Reaktor, I need OSC. And since last night it works for both joystick and iPad !
     
  7. Ch00rD

    Ch00rD NI Product Owner

    Messages:
    3
    It depends very much on what you exactly want to do, and where... but sometimes it just works out-of-the-box. For example, the BCR-2000 MIDI controller has a few modes to send 14-bit MIDI, and some hardware or plugins natively understands it (for example, u-he's Diva is the most recent one that I'm aware of).

    Otherwise it takes a bit of custom plumbing to combine two controls into a single event, or conversely, a single controller to two events, typically using a bit of simple arithmetics or bit-shifting operations to combine or separate the most / least significant bytes (Pure data is great for playing around with this). The basic concept is quite simple: the first CC# is used for 'coarse' tuning, exactly as you would with a single CC#, but you add a second one (with a CC# number 32 higher than the first) that is used for 'fine tuning' the same value.