Announcement

Collapse
No announcement yet.

OSCulator Plug-in for Logic Pro 9

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

  • OSCulator Plug-in for Logic Pro 9

    Description

    The OSCulator Plug-in for Logic Pro is a "Control Surface Plug-in" allowing control of Logic Pro using the Open Sound Control protocol (OSC).

    The aim is to create a clean and documented API so OSC applications are easier to interface with Logic Pro.


    The plug-in is compatible with:
    • Logic Pro 9.1.2 or later
    • Logic Pro Express 9.1.2 or later

    It requires OSCulator 2.12 or later.


    How to get it?

    Download the attached zip file.


    Latest changes

    - 2012-05-09: fixed an issue with the example file where the EQ frequencies would not be properly configured.
    Attached Files
    Last edited by camille; 01-23-2021, 12:45 PM.

  • #2
    Firstly, I hope this is the right place to post feedback and questions about this plugin!

    Secondly, thanks for making it! Great job!

    OK to my feedback. I've noticed that in the dictionary file, the definitions for Channel EQ frequencies appear to be incorrect. They are defined as /logic/track/eq/x/frequency where it should be /logic/track/eq/x/freq. They are correct in the example file, however.

    I've had some instances where channel EQ frequencies were being sent through /logic/insert/param/9-16/value instead of /logic/track/eq/1-8/freq as expected. Then without explanation they start outputting correctly. I haven't found a definite repro for this yet, other than it sometimes happens when the EQ is initially placed on the channel strip. I also note that sometimes (rarely) the plugin does not seem to transmit messages at all (I have registered OSCulator so it isn't the registration window popup causing it!), but again I don't have a definite repro.


    OK and now some questions!

    I notice that the channel EQ does not send any OSC messages for the master volume fader (or some of the other functions, e.g. Analyzer button), but the Channel EQ insert does output fader values that can be read in the Logic Environment. In a future version is it likely that these will be accessible with OSC in this plugin?

    A common problem with some inserts (and instruments!) is they do not "bang" (output) their fader values when presets are changed or channel strips are changed. Do you think it could be possible to have a command to cause all plugins/inserts to bang their values? (or does this already exist?) I'm currently trying to find a way to send a bang message in the Environment window via a trigger (like a button), but have not yet found a method. If it were possible using this plugin, it might be very useful!

    Finally, working with TouchOSC (via OSCulator - not the TouchOSC plugin), in order to create a bi-directional communication, I'm defining two rwrite addresses for each control: Logic -> TouchOSC and TouchOSC -> Logic. This can result in some lag/jumping back of the faders/values in TouchOSC as it appears to be trying to update in both directions at once. Is this the correct method? It may be due to connection lag?
    Logic Pro 9.1.7 (64-Bit), Mac Pro (early 2008, Snow Leopard 10.6.8), MacBook Pro (mid 2010, Lion 10.7.4)

    Comment


    • #3
      Hi phocomelus,

      Thanks for trying the plugin.
      And yes, this is the right place to post comments and ideas about this.

      OK to my feedback. I've noticed that in the dictionary file, the definitions for Channel EQ frequencies appear to be incorrect. They are defined as /logic/track/eq/x/frequency where it should be /logic/track/eq/x/freq. They are correct in the example file, however.
      Good catch. It will be fixed in the next release.

      I've had some instances where channel EQ frequencies were being sent through /logic/insert/param/9-16/value instead of /logic/track/eq/1-8/freq as expected. Then without explanation they start outputting correctly. I haven't found a definite repro for this yet, other than it sometimes happens when the EQ is initially placed on the channel strip. I also note that sometimes (rarely) the plugin does not seem to transmit messages at all (I have registered OSCulator so it isn't the registration window popup causing it!), but again I don't have a definite repro.
      I am not sure what could cause the first issue, but I have experienced the second issue (plugin stops transmitting messages). I would tend to believe that it is a problem related to Logic, but wouldn't bet for sure.

      I notice that the channel EQ does not send any OSC messages for the master volume fader (or some of the other functions, e.g. Analyzer button), but the Channel EQ insert does output fader values that can be read in the Logic Environment. In a future version is it likely that these will be accessible with OSC in this plugin?
      Duly noted, I will see if that is possible.

      A common problem with some inserts (and instruments!) is they do not "bang" (output) their fader values when presets are changed or channel strips are changed. Do you think it could be possible to have a command to cause all plugins/inserts to bang their values? (or does this already exist?) I'm currently trying to find a way to send a bang message in the Environment window via a trigger (like a button), but have not yet found a method. If it were possible using this plugin, it might be very useful!
      I've already asked my contact at Apple if the all the parameters could be recalled after a request sent to the plugin, but the reply was that the plugin system was not designed to do this, so the answer is unfortunately no.

      Finally, working with TouchOSC (via OSCulator - not the TouchOSC plugin), in order to create a bi-directional communication, I'm defining two rwrite addresses for each control: Logic -> TouchOSC and TouchOSC -> Logic. This can result in some lag/jumping back of the faders/values in TouchOSC as it appears to be trying to update in both directions at once. Is this the correct method? It may be due to connection lag?
      This is a known problem, caused by the lack of control "touch" support.
      What I mean by that is that Logic should be told to stop sending control feedback while a control is touched (this works via the use of /z messages, see the "Send /z messages" option in TouchOSC). This will hopefully be fixed in a future version.


      Best,
      Cam

      Comment


      • #4
        Thanks for the quick response and for looking into the EQ feature!

        I am not sure what could cause the first issue, but I have experienced the second issue (plugin stops transmitting messages). I would tend to believe that it is a problem related to Logic, but wouldn't bet for sure.
        Yes, I suspect it is Logic too. I've noticed it behaves the same when OSCulator is not involved - even just attaching a Monitor object to a Channel Strip, sometimes a plugin/insert won't (or will randomly stop) output its fader data, but then, for no obvious reason, it will then function again. Re-opening Logic has little effect on this. (9.1.7, 64-bit mode, on both Snow Leopard 10.6.8 and Lion 10.7.4, for the record)

        (As an aside, if you know of a way of banging the fader values through the Environment, other than through the menu, I'd be grateful to hear it!)
        Logic Pro 9.1.7 (64-Bit), Mac Pro (early 2008, Snow Leopard 10.6.8), MacBook Pro (mid 2010, Lion 10.7.4)

        Comment


        • #5
          Hi phocolemus,

          When I said :

          This is a known problem, caused by the lack of control "touch" support.
          What I mean by that is that Logic should be told to stop sending control feedback while a control is touched (this works via the use of /z messages, see the "Send /z messages" option in TouchOSC). This will hopefully be fixed in a future version.
          Well, it was wrong: Logic will always send feedback messages even if the control is touched.
          My contact at Apple gave told me the only solution is to have a controller application that stops updating the controller value while it is touched.

          TouchOSC does not do that and it is very frustating.

          Next one, the mater channel EQ
          Keep in touch.

          Best,
          Cam

          Comment


          • #6
            TouchOSC does not do that and it is very frustating.
            Yes I can appreciate that! Do you think/know if this will be addressed with a later version of TouchOSC? Or is it an issue you would consider attempting to address at the OSCulator/Logic Plugin level?

            Thank you again for looking at the Channel EQ! Can we expect a new release soon?
            Logic Pro 9.1.7 (64-Bit), Mac Pro (early 2008, Snow Leopard 10.6.8), MacBook Pro (mid 2010, Lion 10.7.4)

            Comment


            • #7
              Hey phocomelus,

              You should certainly ask the author of TouchOSC for the update roadmap of his application. The jumping faders problem should be fixed in TouchOSC, this is not an issue belonging to the Logic plugin.

              Also, for the Master Gain EQ parameter, I had a deeper look:
              The Logic MIDI Plugin interface only specifies assignments for EQ bands parameters, which means the master gain and analyzer button are not controllable...

              I am sorry for all these negative answers, but I have something interesting:

              I updated the OSCulator file so feedback is not transmitted from Logic to TouchOSC.
              That works well as a temporary workaround.

              How it works / how to apply the fix in your own OSCulator document:
              - activate the option "Send /z messages" in TouchOSC's options.
              - touch a control in TouchOSC, for example a fader. You will see two OSC message, for example /1/fader1 and /1/fader1/z. The /z message value is 1 if the control is touched and 0 if not touched. We can use that message to filter out the feedback message.
              - Assign an event of type "Enable" to the /z message, and choose in the value list the feedback message that logic sends (for example /logic/track/level).

              Now when you touch the fader, the logic selected track feedback message will be disabled, and reenabled when the control is not touched anymore, which is exactly what we needed.

              The attached file come as an example, and has every faders configured with this idea. Note that EQ controls are a bit special as they use a multi-fader control.

              One last thing: it can become difficult to see exactly what message is sent by TouchOSC and Logic as they is a great number of them in the same window. One way to work around this is to active the dynamic message sorting in OSCulator, a very underrated feature I think. If you click the table header just above the activity monitors, OSCulator will sort the message by last activity, very handy ...


              Best,
              Cam
              Attached Files

              Comment


              • #8
                Hey Camille, thanks for the update again!

                The Logic MIDI Plugin interface only specifies assignments for EQ bands parameters, which means the master gain and analyzer button are not controllable...
                That is a shame about the Master Volume, if the values are no available then that is a shortcoming of the interface (perhaps they had a reasons for not including it?) Sadly I'm not familiar with the specifications for the plugin interfaces to even know where to begin! Is it programmatically possible to access values that are available in the Environment, such as faders? Is that even how it works? If so, could a way of obtaining the Master Volume fader etc. be used?

                I will try your suggestion for the /z messages, and request from the author of TouchOSC that they implement a fix.

                If you click the table header just above the activity monitors, OSCulator will sort the message by last activity, very handy ...
                This is a very handy feature!

                I have found that you can use Meta Event 99 to send a Bang message to a fader/channel strip. Perhaps you already knew this? I am wondering if using an event (like the ping event) to trigger this bang message periodically as a workaround for instruments/plugins that don't output their values automatically. I thought perhaps the ping could send a message (say an unused CC#) to Logic and transform it in the environment to the Bang message. Does this sound like a good idea to you?

                And lastly, as a general question, I was wondering if there is any way to send events based on the name of the plugin/instrument that is loaded on the channel strip? For example, if I load Synth A, send a message to TouchOSC to switch to page x - if I load Synth B, send a message to switch to page y?

                Is this something that could be achieved using the AppleScript section of Osculator? (since it is possible to get the instrument name through the plugin)
                Logic Pro 9.1.7 (64-Bit), Mac Pro (early 2008, Snow Leopard 10.6.8), MacBook Pro (mid 2010, Lion 10.7.4)

                Comment


                • #9
                  Hi phocomelus,

                  Is it programmatically possible to access values that are available in the Environment, such as faders? Is that even how it works? If so, could a way of obtaining the Master Volume fader etc. be used?
                  No, the Logic SDK is limited to a well defined set of values that are corresponding to most control surface needs.

                  I thought perhaps the ping could send a message (say an unused CC#) to Logic and transform it in the environment to the Bang message. Does this sound like a good idea to you?
                  I don't know Logic environment programming very well, but that sounds like a good idea. I think I have used a comparable technique some time ago (in the bi-directional Logic/OSCulator tutorials).

                  And lastly, as a general question, I was wondering if there is any way to send events based on the name of the plugin/instrument that is loaded on the channel strip? For example, if I load Synth A, send a message to TouchOSC to switch to page x - if I load Synth B, send a message to switch to page y?
                  Do you have an idea of what event you would use to determine that a Synth has been loaded?
                  Perhaps use the track focus message ?
                  /logic/mixer/track/N/focus (N: track number)

                  For each of these received messages, you could assign a message to change the page in TouchOSC.
                  Please consult TouchOSC's documentation for page change.
                  You usually send a message that simply has the name of the page "/1" for example.
                  So for example, if you have the two track focus messages :

                  /logic/mixer/track/1/focus : 'OSC Routing' -> "/1"
                  /logic/mixer/track/2/focus : 'OSC Routing' -> "/2"

                  Is this something that could be achieved using the AppleScript section of Osculator? (since it is possible to get the instrument name through the plugin)
                  I don't think AppleScript would be useful in this case.


                  Best,
                  Cam

                  Comment


                  • #10
                    Great bundle! thanks a lot! Do you get all infos to make this kind of control surface bundle when you're a registred apple dev? Can't seem to find this infos/tutorials around.

                    Quick one: Any chance you could add more than 16 params per insert page ? (doc says "param_index is a number between 1 and 16" and in fact you can see those 16 in logic assignments list)? Scrolling pages defeats control surface purpose + those params are very usefull for other usage as well: for ex, i use 8 for their intended usage (=current track/current insert) + i've fixed 4 on aux1 insert + 4 on aux#2 insert. So, a few more directly accessible, like 48 or 64, would be great!

                    Thanks!
                    Chab

                    Comment


                    • #11
                      Hi Chab!

                      That's an interesting suggestion.
                      If I change the number of plug parameters for an insert from 16 to 64, users that have built an interface with 16 parameters will not be able to page through the other parameters. Therefore I can not change this. But then it would be interesting to have a "non-paging" version of the plugin for Logic, I just fear it would make things more confusing than they already are.
                      If you are interested, I can send you a build with the increased number of parameters, just contact me by email at camille at osculator dot net.

                      Best,
                      Cam

                      Comment


                      • #12
                        Configuration via an external file is a very good option, though I don't want to invest too much time into this plugin, at least not before Logic 10 is released. I'll be happy to build you a custom version, just let me know.

                        Comment


                        • #13
                          Am I right in thinking the osculator plugin doesn't transmit the instrument plugin name? I wanted to construct a Lemur controller which would switch layouts for each instrument. Thanks for osculator and any help I can get!

                          Comment


                          • #14
                            Hi oscure,

                            The plugin name should be transmitted to /logic/track/instrument/name.
                            It seems it has not been documented properly.


                            Best,
                            Cam

                            Comment


                            • #15
                              Hi Cam,

                              Is it possible to have OSCulator set the track name in Logic? In the documentation it says that the message is unidirectional only... I am trying to write a Python script that changes the track names in Logic using OSC messages and OSCulator as a bridge.
                              Thanks!

                              Ashirvad

                              Comment

                              Working...
                              X