No announcement yet.

Pointing Pads buttons from lemur, threw Osculator to Max

  • Filter
  • Time
  • Show
Clear All
new posts

  • Pointing Pads buttons from lemur, threw Osculator to Max

    Hello Camille and the others,
    Considering those three softwares : lemur line, oscillator, and max 6.

    In Max, i've managed to route a simple signal fader from Lemur iPad, threw Osculator, to Max 6. No problems. It works like a charm. Well… Next step : In the Lemur Editor, i create a new interface with one Pad icon composed of 6 columns and 6 rows (which renders, a beautiful grid of 36 triggering buttons). Great… In Osculator, i've got this : /Pads85/x and a sub-levels of numbers (the 36 buttons : 1 2 3 4 5 6 7 and so on). If i tap on my iPad on each button, it works well : Osculator see which button is triggered on the iPad ("Event Type" : Osc routing, and "Value" localhost 9000 set up).

    One step forward, On Max 6 :
    In my patch : I use the "udp" object (udp receive 9000), and the "route" object (written : route /Pads85/x), connected directly to the inlet of a "preset" object. Unfortunately, this manipulation doesn't work, and max don't know what button is triggered on iPad, even if Osculator see the changes.

    Do you know how to tell to Max : "Max, my friend, guess what buttons is triggered under the repertory of /Pads85/x, threw Osculator".
    I think there's a best and more flexible solution to point my pads buttons, instead of typing all the buttons in the route object :
    /Pads85/1 /Pads85/2 /Pads85/3 /Pads85/4 /Pads85/5 /Pads85/6 /Pads85/7 /Pads85/8 and so on… which will be quite long, boring, and impossible to maintain in Max.

    Any idea ?

  • #2
    Hi Crem',

    When routing individual arguments of an OSC message, OSCulator appends the number of the argument to the resulting OSC message (the one that is sent).

    So for example, if you have a message like /Pads85/x and assign a OSC Routing event to for example the 5th of its 36 arguments, the resulting routing address will be /Pads85/x/5. The reason why it is so is to avoid infinite loops if a message is routed to the same OSC server as the one running in the current window.

    Now, there are solutions to this.
    The first solution is not to route a single argument, but the whole message, /Pads85/x and all the arguments at once. To do this, you only have to assign a single OSC Routing event to the message (the top of the directory as you called it), instead of assigning many OSC Routing events to each arguments.

    When you route the whole message to Max, you will be able to access an argument without having to "parse" the addresses. For example after [route /Pads85/x], ou could also use[listfunnel] and then [spray] to get access to every 36 arguments as outlets. As I don't know exactly what you are trying to achieve, I can only give you hints of what is possible in Max.

    I invite you to read the first chapter of the manual ( to understand how OSC message are made. The OSC Routing chapter will also explain more details about this.



    • #3
      Hello Camille,
      Thanks for your previous message

      I forgot to explain how my patch in Max is composed. So here it is : I't's a little sampler patch.
      This patch is composed of a preset objet which hold several samples (sounds).
      For the moment, got some simple messages box (message 1) (message 2) (message 3) directly plugged into the inlet preset object. So, when i click on (message 1) the sample contained in my preset object in preset 1, plays.

      Now, what i would want, is having the ability to trigger those differents samples (stores in the "preset" object), directly from the Lemur interface, with my fabulous grid of pads ( /Pads85/x containing 36 arguments (in my case) )

      As you mentioned, i made some changes (delete the OSC routing from all these arguments (0,1,2,3,4,5,6,7,8,9 and so on…) and assigned OSCRouting directly to the /Pads85/x in Max Localhost.
      In Max, when i tap on any button of my lemur interface, got a sound (good !) but it's the same sound that is triggered for all the buttons.

      The connections are those : [udpreceive …] [route /Pads85/x] -› directly plugged the inlet [preset] box.
      Before taping on my iPad, if i click on, for example, the preset 5 with my mouse, and then i tap on my iPad lemur interface, i will got the sample 5 triggered for all the 36 buttons.
      And so on… i made another click with my mouse on the preset 10, every button on my iPad lemur interface will trigger the sample 10.

      I'm still stuck to this problem.
      I tried to include the two other objects in my entire side chains : [udpreceive …] -› [route /Pads85/x] -›[listfunnel] -› [spray] › directly connected to the [preset] box, but unfortunately got no sounds. Except all these objects, got no other box connected from [udpreceive] to [Preset] (no message box, for example).

      Any idea of something that i would have forgotten (in Max, i think) between these objects ?
      Last edited by cremaster; 03-23-2012, 02:12 PM.


      • #4
        Hi Crem',

        I am sorry but it is extremely difficult to wrap my head around all this. I am not an expert with Max, only use it occasionally so I can't give you a good answer to this problem. You should definitely ask on a forum where there is more good users of Max, like the Cycling '74 forums.

        Here's a tip for getting a good answer to a programming related question: before giving details about how you did things and what does not work, explain first what you would like to do in the most simple as possible terms.



        • #5
          Hello Camille,
          Thanks for your message. I figured out by posting in Max Forum with the object [if then].
          You can close the thread.
          Thanks again !