Announcement

Collapse
No announcement yet.

Getting isolated MIDI back from Logic

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

  • camille
    replied
    Unfortunately this is precisely the question I asked. You can not transmit MIDI Control Change or Program Change messages through the Control Surface plug-in. Wether the final format is MIDI or OSC does not matter, it is those controls that are not available to control surfaces.

    Leave a comment:


  • somatic
    replied
    Okay, so actual MIDI data is not going to work...

    But can I ask you to investigate one last chance? in my screenshot above, there are certain mixer channelstrip controls that set/display the MIDI data. The ones labeled orange are currently working with control surface assignments - can you find out if the ones *labeled pink* can also be assigned to control surface? If so, then I wouldn't need actual MIDI data - I'd simply manipulate those controls (which in logic happen to be mapped to MIDI data).

    Leave a comment:


  • camille
    replied
    Bad news, I just got the answer that "There is no way to send MIDI controllers or program changes via assignments."
    Which means that you can't program the Logic Plug-in SDK to communicate these values.


    Best,
    Cam

    Leave a comment:


  • camille
    replied
    Somatic,
    When I thought I found the solution I discovered it was not working.
    I can ask Logic to create a control surface assignment for the currently selected track (I used MIDI controller 1 = modulation for a test).
    I have no clue why I can't get it to work so I've asked the person in charge of the Logic plugin SDK to help me, we'll see if there is a solution.

    Leave a comment:


  • camille
    replied
    Ok, now I get it, sorry it took me so long.
    Let me see what I can do with what the plugin SDK offers.

    Leave a comment:


  • somatic
    replied
    I have an idea about how to get around the MIDI output limitation of logic, by using "control surface" functions instead. Currently, the osculator logic plugin supports a certain set of Logic events, which correspond to most of what you can adjust on a mixer channelstrip (level, pan, sends, a few insert generic insert parameters, etc). When a software instrument or audio channelstrip is used, this allows control of many functions (all of which are logic parameters - fader events? - not MIDI events).

    However, on a purely MIDI instrument channelstrip, the controls are a bit different. You can see this by creating a new "instrument" or "multi-instrument" environment object. These objects can't hold software instrument or even insert audio plugins. When used as tracks they simply capture and record midi data, and it has to be routed to an instrument elsewhere - either a software instrument or an outboard device via MIDI interface. These objects display similar, yet notably different controls in the mixer, as shown in my screenshot. The wider strips are software instruments, and the narrower strips are MIDI-only multi-instruments. From my testing, OSCulator does receive messages for level, pan and mute, just like the normal channelstrips (orange markers). But the "pots" above aren't really audio bus sends - they display the value of MIDI CC data (you can pick which to show), and the topmost button allows display and selection of MIDI program change messages (pink markers). These "pots" provide control and live visual feedback of the MIDI event data being played back on a track. *IF* it is possible, if Logic actually generates and listens to control surface data for these controls, it would permit me to do exactly what I wanted - communicate back thru OSC to touchOSC the current value of a given control - which in this case would represent MIDI CC data values!

    Any chance you could sniff around and see if those pink controls can be tweaked via OSC?

    Leave a comment:


  • somatic
    replied
    Originally posted by camille View Post
    Unfortunately the Logic plugin will not allow to do exactly this. It is designed to display Logic as a Control Surface that speaks OSC.
    I understand. Yes, this function is working great for me.

    Originally posted by camille View Post
    Does Logic sends the MIDI data being played back?
    If so, OSCulator should see it as a MIDI input, and therefore automatically create an OSC routing back to TouchOSC.
    This is the problem - Logic does *not* send the MIDI data out unless I manually create an environment object (external instrument) whose output is assigned to the MIDI "port" of Osculator. This mostly works (except program changes, which don't seem to get passed). And when I do create such an object, it requires specific static routing from a single object within Logic to Osculator - there is no way to specify and cable the output of whichever track happens to be currently selected and active (dynamic routing?).

    This is a limitation of Logic itself - the default behavior is to SUM all of your MIDI source inputs, from any port and any channel, and use any/all of them as the input for whatever track is currently selected. In the environment, this magical object is called "to Recording & Thru" - but there is no similar object for the sequencer output, that would perform the reverse function - taking whatever track we're on, no matter what channel and port and send it out of Logic.

    This, again, is only a MIDI issue. In the scope of "control surface" parameters, there is such a function - Logic outputs data values for a "bank" of 8 channelstrips [/logic/mixer/track/4], as well as just the "current" track [logic/track], no matter which that is. This makes it possible to create a control layout that shows much detail, more than you could cram onto a screen if you had to display all the parameters of all the tracks, all the time.

    My original hope was that if you could somehow tap into the stream of data for *just the selected track*, you could somehow get around the Logic's missing selective MIDI output functionality...

    Leave a comment:


  • camille
    replied
    Thank you for the details.
    Unfortunately the Logic plugin will not allow to do exactly this. It is designed to display Logic as a Control Surface that speaks OSC.

    - Osculator currently allows me to input OSC messages, translates them to MIDI event data (notes, CC, program), and passes them along to Logic for recording.
    ok, this is working for you, right?

    - I need to reverse this flow: listen for MIDI event data being played back in Logic and translate it to OSC messages, which can be passed along to touch OSC objects for visual feedback.
    Does Logic sends the MIDI data being played back?
    If so, OSCulator should see it as a MIDI input, and therefore automatically create an OSC routing back to TouchOSC. This what happens when using Live. I am really sorry but again I am not exactly sure to undersand what you need.

    Leave a comment:


  • somatic
    replied
    A simpler way of describing what I'm after:

    - Osculator currently allows me to input OSC messages, translates them to MIDI event data (notes, CC, program), and passes them along to Logic for recording.
    - I need to reverse this flow: listen for MIDI event data being played back in Logic and translate it to OSC messages, which can be passed along to touch OSC objects for visual feedback.

    Leave a comment:


  • somatic
    replied
    Plain MIDI data. Not a plugin parameter or Logic control. My osc template is setup to translate incoming OSC messages (from ipad, wiimote, etc) to MIDI CC and program change data. That part works great, and gives me a consistent method of controlling various software instruments and samplers (orchestral scoring in particular). I "play" my faders, buttons in realtime and they get recorded to the tracks in Logic as MIDI data.

    The quest to get bi-directional communication from logic, for me, came from the difficulty of getting that same MIDI data I generated with my virtual faders *back out of logic* and to my iPad so that my faders actually respond to the current values (of MIDI CC and program change data) being played back. This way, the faders would be not just "dumb" inputs, but actively show the current value (and even animate in real-time).

    A common example is CC#1 (modwheel), which is frequently used for dynamics changes. I use it to "conduct" a sampled instrument's dynamics levels, completely separate from the *mixer track* level. Osculator does a great job translating my OSC data to MIDI CC data and passing it along to Logic. But I need to route the same CC#1 data back out from Logic thru OSCulator and out to my iPad (running touchOSC).

    The really big catch, however, is that the *only* data I want to be routed back to touchOSC is the currently selected and active track in Logic. This is similar behavior to the "Channel Strip" tab view in touchOSC's LogicPad layout - where the screen reflects only the currently selected track. My MIDI controller layout is designed to only control one instrument at a time, with all commands being automatically routed by logic (regardless of MIDI channel) to the currently selected track. Thus the returning MIDI data needs to reflect only one track as well.

    Another example is with MIDI program changes. I would like to have a text field that displays the string value of the currently active program change - which can change over time throughout a song. I have a grid of buttons to send MIDI program changes, but I have no visual feedback to show me which program is current when I jump around in the song or simply play it through.

    I really don't know if it's at all possible to tap into the actual MIDI events being played back on a given track with the plugin architecture you're using. You've done a great job accessing Logic's "track based automation", which handles mixer faders, pan, even insert sends. I'm just hoping you can go just a bit further and route the MIDI events too...

    Leave a comment:


  • camille
    replied
    Could you describe what "data" you would like to map?
    Is it a plugin parameter? I guess it would not be a problem to generate MIDI from a OSC message coming back from Logic.
    Also, the plugin may need some adjustments to do what you need, if at all possible.
    If you can explain what you have in mind, I will try to see how that could be done.

    Leave a comment:


  • somatic
    replied
    ::facepalm::

    in my defense, the interstitial page that says "your download will begin shortly, if not, click here" was just a *little* confusing...

    So I have the plugin installed, logic control surface setup is working great, and I see dozens of new controls in Osculator for all the logic control surface commands! This will obviously make integrating our own control-surface-style templates MUCH easier!

    However, while I can see how you've made it possible for "control" commands from logic to Osculator, I'm not sure if this new plugin actually supports *MIDI* data output from logic. This is central to the original purpose I had in mind - where my TouchOSC template sent MIDI CC data to be recorded on a given track, and then to somehow "hear" that same MIDI CC data upon playback so that my OSC faders would visually update with the current MIDI CC values.

    Is there something not mentioned in your documentation?

    Leave a comment:


  • camille
    replied
    Hey Somatic,

    The download link is the first thing in the post.
    The beta is stored there to make sure people read the notes.


    Best,
    Cam

    Leave a comment:


  • somatic
    replied
    So excited!! Thank you so much for working on this!

    But - I can't seem to download the beta version from the site - the download page (http://www.osculator.net/downloadthanks.php) just immediately redirects to the release notes. No download starts. I even checked your code - there's only a redirect to the stable and to the legacy version.

    From within Osculator, I did get the sparkle update notice, and it updated to 2.12RC, but only the app - the "Samples Library" folder was unchanged by that update - I assume that only comes with the downloaded disk image :-(

    How can I get the latest beta "Samples Library" folder?

    Leave a comment:


  • camille
    replied
    Hey somatic,

    First of all I would like to let you know that a release candidate of the upcoming version has been released, and that I suggest you try this latest release.

    So, I created a plugin for Logic Pro that sends and receives OSC data between Logic and OSCulator. This is cool because you can use it to communicate with any OSC enabled application as long as you know how to use OSCulator.

    I have bundled the plug-in, some initial documentation and an example OSCulator file here:

    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


    Please note that the example file uses the LogicTouch layout from TouchOSC on iPhone to show how to use OSCulator as a bridge. Therefore you should not use TouchOSC as a control surface in Logic if you want to use OSCulator in between.

    There is some basic configuration to do when using the example file (something I forgot to explain in the README): Once OSCulator is setup as a control surface in Logic, open the Parameters Window go to the OSC Routing tab, then change the OSC target that is not the default target (not TouchOSC) and with the gear button, choose the OSC service that has the name of your computer. I will improve OSCulator so Logic is better recognized in the list of targets as right now it is not trivial to tell.

    Bi-directional communication should be much easier with this, please come back to me if you have any question.


    Best Regards,
    Camille

    Leave a comment:

Working...
X