Announcement

Collapse
No announcement yet.

Issues getting Messages to trigger once "received,"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Issues getting Messages to trigger once "received,"

    Hey folks!

    So here's what I want to do: Ableton on one mac running Osculator sends a midi note bang-->Osculator on that machine. Osculator on that machine takes that midi note and sends an OSC message OUT to another machine running another instance of Osculator. Osculator on that second machine then takes that incoming osc message and spits out one midi bang to Pro Presenter running on machine b.

    Seems simple enough, but I'm having one heck of a time getting this to work at all.

    So Mac #1 (Ableton,) Say, I have it spit out note c-1 @ velocity 127, ch13 to IAC buss named Ableton-->Osculator. IAC buss is set as a midi input in Osculator (raw and interpreted selected.)

    I bang the midi note, Osculator sees it pop up. I tell it to demux /midi/note/13 (pitch) so the specific note value shows up, then I can map "trigger," to my outgoing osc message. I create a new osc address w/ destination set to a specific device (select that second mac via nearby osc services dropdown or input manually the ip/open port for that device,) message is, for giggles: /Triggerthing number(1)

    When I trigger that ableton midi note, the /Triggerthing message now pops up in osculator on machine b. I can map it to a cc, then map that cc to a second instance of ableton (as a test,) but when I go to fire the thing, it doesn't actually trigger.

    If I manually bang my CC message or /Triggerthing on machine b, it definitely triggers, but it does not seem to be doing so from machine a.

    What am I doing wrong here? I've tried every dang combination of messages and different machines, all with the same result.

  • #2
    Hi Richard,

    Have you tried the Quick Look window or Message Monitor to inspect what is received?
    How did you configure the /Triggerthing message? Did you leave the <all args> token?


    Best,
    Cam

    Comment


    • #3
      Cam!

      ...I have! ...and definitely using "all args."

      Interestingly, I just set up two separate computers on my network to record what I was doing in Quicktime and figured out *part* of what I need to do: Apparently, I need to split the incoming "trigger," message into lo/high, then have the CC fire on high, as the incoming message shows an integer of both 0 and 1. Presumably for the note on and off messages.

      So, that part is worked out!

      ...What I still need to understand is: on the receiving computer, how do I spit out a midi message of, say Midi note g-1 @ velocity 0, based on that incoming message. I'm a little lost when it comes to "Midi note w/ parameters," I know exactly the parameters I want to generate, but don't necessarily need those parameters to be generated based on the incoming values; rather just osculator seeing a particular message, such as, "/HEYDUMMY/DOTHISTHINGNOW/GO," equals midi note g-1 @ velocity 0--->Osculator Out, (or IAC buss,) to Pro Presenter... because Pro Presenter is incredibly stupid, and needs that kind of specificity.

      Thoughts?

      Comment


      • #4
        Hey Richard,

        This is overwhelmingly complex just to forward a MIDI note to another computer!

        I did the test, and found the issue: the trigger argument is an integer number value (not a floating point number). When you assign a MIDI CC to this value, the MIDI CC event interprets the integer as a litteral value, meaning that it output a value of 0 for Note Off, and a value of 1 (instead of the expected 127) for Note On.

        When you split the trigger argument, you effectively convert it to a float, restoring the expected behavior.

        I will modify the MIDI input code to issue a float value for the trigger (will be available in the next release). In the meantime, all you have to do is to convert the value you route to a float, like this:
        route as float.png

        On the other end you will receive a message that will work the expected way with a MIDI CC:
        OSC route trigger.jpg


        Let me know if that helps.

        Best,
        Cam

        Comment


        • #5
          Thanks Cam!

          That's super helpful.

          ...and yes, it is absolutely, ludicrously complex for one midi note. There is a great reason for it though!

          The idea is this: Midi communications are relegated to internal components of each machine, thus eliminating the need for RTP midi connection in a show setting. (I'm using an iConnectivity Mio4 for that currently, because it's a lot more stable than a direct OSx, Midi connection.) Osculator, on the other hand, automatically picks up UDP connections when they come online, and I'm already using it for other show controls, so this seemed like a no-brainer.

          It also provides me with the option to run a third machine as backup elsewhere on the network, just in case the primary Ableton unit dies mid-show or something. The receiving unit doesn't care where the /HeyDummy/DoThisThingNow comes from, it just interprets the command and fires the bang.

          Lastly, It's also a test for a larger-scale project I'd like to run: Multiple Ableton computers in a bunch of rooms in a single venue. Each using Link for clock synchronization, but then also mapped so that specific cues are synchronous across every machine. If I can pull it off, it'll be a really killer immersive experience. I may even use light/FFT sensors with arduino/max to issue some of the triggers. IE, the audience plays a role in shifting musical movement. While I do have some Max for Live components that will send/receive OSC, they're not nearly as robust as your software. (IE one connection per module, and they take *forever* to load.) ...so again, yeah, complicated, but it makes the communication part really bomb resistant.

          Comment


          • #6
            Sounds very interesting!

            ...And no worries, I was more referring to all the contorsions you required to manage to send this event

            The Apple RTP MIDI has a two features though: 1. It advertise and connects to services using Bonjour (like OSCulator does), and 2. It RTP retransmit lost packets.

            Unless this does not integrate well with you setup, you might want to try TCP between two OSCulator instances. TCP enables robustness at the price of a small increase in latency. Some serious improvements to TCP have been made in version 3.2 beta.


            Cam

            Comment


            • #7
              Oh, that sounds like an interesting idea. I do like the possibility of retransmitting lost packets. Do you mean Osculator 3.2 beta? Or are you referring to Mac TCP? I'd love to check out the improvements!

              Comment


              • #8
                Support for OSC over TCP has always been there, but has been improved in OSCulator 3.2 beta. You can simply send packets on TCP by selecting the appropriate OSC Target in the "Nearby OSC devices" menu. OSCulator always advertises a UDP and a TCP service.

                Comment


                • #9
                  Understood. I'll give it a whirl; I do have a small amount of flexibility with altering the timing of the receiver response once triggered, so assuming the additional latency stays within a tolerable window that might be fine.

                  Thanks for your help sir!!

                  Comment


                  • #10
                    TCP worked quite well! Thanks so much for the tip. Communications have been super solid, and my margin of error seems well within the limits of TCP for this particular event. (I had the video team add a few seconds of black on the front end of the *one* video we need to trigger this particular performance, I can adjust the start time of that to within a frame or so. TCP latency seems consistent enough to make that a non-issue!)

                    Now if I can *just* get Renewed vision to get off their butts with implementing full OSC controls...

                    Comment

                    Working...
                    X