Jump to content

HELP: handling midi out plugin


Dewdman42

Recommended Posts

I am hoping some of you gurus can help me figure out the best way to handle a certain midi-out plugin.  This may involve some environment trickery or not, but I haven't been able to figure out a good way to do it thus far..

 

The plugin is RapidComposer.  It is a VST, so i have to use a wrapper to get it to work in Logic, using BlueCatAudio's, patchwork, which will let me use it as either an AU instrument or AU-MFX midi fx.  So far so good....

 

The problem to solve is how to route the midi.  This plugin will output multiple channels of midi, intended for different instruments, the midi out from it needs to be routed back around to the input to the sequencer, so that it can be directed to different tracks at the same time for playing back other soft synths that are hosted on other tracks/channels.  This is easy enough.  This seems easy enough on the surface then, can use it as a AU-MFX and then in the instrument slot of that channel, use "external instrument" to send the midi to an IAC bus, which will be looped back into Logic, and into the sequencer.  Ok...in theory, but a few problems..

 

  1. the plugin also responds to midi input when you're using it, so the problem is that when the IAC bus is looped around to the input of the sequencer again, the other instruments all get the midi, but so does RapidComposer again, creating an endless loop problem.
  2. Somehow rapidcomposer doesn't quite work right in the AU-MFX slot.  It shows up and seems ok at first, but when I hit play on logic, RapidComposer doesn't play with it.  I'm not sure why.  

So maybe there is some other way to host a midi-out plugin somehow that I am missing?  It needs to be such that the plugin will sync with host playback and such that the midi-out can be routed to all the other tracks/channels hosting actual soft synths and such for playback, without an endless midi loop issue as mentioned above.  At the moment this appears not doable in Logic...but any ideas will be welcomed....

Link to comment
Share on other sites

Create a new channel strip in the Environment and set it to an unused Instrument (Inst 255 for example) and set up rapidcomposer on that. If it isn't selectable in the Arrange, it won't get any MIDI.

 

Or you could use MIDI channels to separate messages from rapidcomposer, using a transformer between the IAC return and the sequencer input object. Use the "auto demix MIDI channels" option.

Link to comment
Share on other sites

When I attempt to create a channel strip in the environment, I go to File->New and scroll down to the bottom of the list for "Channel Strip", but Audio and Instrument options are greyed out.  I think the only way to create an instrument object in the environment is indirectly by adding an instrument track from the GUI, which will create both the track and mixer object.  What am I missing?
Link to comment
Share on other sites

hmm interesting.  I guess I could probably just create a track and then reassign the track to something else to dis-associate the track from the mixer object...but yea..I get your point, I will play with that...

 

Seems like you are suggesting that I can get a mixer object to host the plugin...and it will do what it needs to do, dis-associated from any track, without receiving any midi coming into the sequencer.  that would eliminate the possibility of an endless midi loop, but on the other hand, sometimes I *DO* need incoming midi from my midi controller to get to it for midi interaction...maybe I can patch that in the environment though, I will play with this some more...

 

The idea of putting rapid composer onto a track with some kind of auto demux, etc... I have tried that in the past and it made my head explode trying to keep track of whether it was getting midi or not and was very easy to get into endless midi loop by clicking on buttons on the track header wrong way...  The fundamental problem is the single funnel that Logic uses to pass all incoming midi through one sequencer port to get to all the tracks.  Every time I have tried to mess with that, I have become extremely confused, but I will try it again...

Link to comment
Share on other sites

You could use a switch object in the Environment between your controller's physical input and the "disassociated" channel strip containing the plugin, and toggle the switch on and off. If you have assignable buttons on your MIDI controller you could make that toggle the switch as well for easy access..
Link to comment
Share on other sites

I think that's a bug. Create another type of channel strip (or copy an existing one) and then change the "channel" in the inspector. The instruments are available from there. 

 

It's not a bug.

Choose File > Project Settings > Audio > Channel Strips and disable 'Automatic management of channel strip objects'.

This will enable both Audio objects under the New menu item.

Link to comment
Share on other sites

Eric, if you turn off automatic management of channel strip objects, what are the ramifications of that when using the GUI?  

 

Good info from both of you...  I did manage to get RapidComposer onto a mixer channel object that is not associated with a track.  In order to use midi-out, I have to put the plugin into the AU-MFX slot, so that outgoing midi from the plugin is actually received by the channel strip in logic.  I can do this because I'm using BlueCatAudio patchwork to host the VST plugin, and BlueCatAudio can take a VST and wrap it inside AU-MFX form.  Magically the midi is picked up that way just fine, WITHIN THE CHANNEL STRIP.  

 

Then I use external instrument in the instrument plugin slot to send the output to an IAC bus.  Fine so far for routing midi from rapidcomposer to the sequencer over IAC.  I'm probably getting some strange timing problems using external instrument plugin, but I will figure that out later.  At least its sending all Rapidcomposer midi channels over IAC..and feeding them into the sequencer, where I can demux as needed to feed to various tracks hosting instruments.  fine so far! 

 

The only thing left is to figure out the best way to direct a midi controller to RapidComposer as needed.  For example it has features to record midi patterns and play chords to recognize them, etc..

 

what I have so far is to first turn off the sum input in the environment and then to take the input from actual keyboard and split it using a monitor object, so that the data goes both to the sequencer and to the mixer object holding rapidcomposer that is not associated with any track, and thus not getting input from the sequencer.  This seems to let me use my midi controller normally, and/or to direct to the rapidcomposer plugin.  It all seems to work this way and maybe I need to set up switches to enable or disable this...but the downside I see for now are twofold

 

  1. Rapidcomposer is passing incoming midi data through, so it gets looped around as a double notes.  
  2. Rapidcomposer is ALWAYS listening to incoming midi in this mode so when I'm working on other tracks and just wanted to record midi normally, I would need to switch off the midi input to rapidcomposer in the environment, and visa versa, shoudl probably switch off the midi to other tracks when using rapidcomposer since rapid composer is forwarding the the midi thru.  This could be handled with environment switches, but still a bit of a hassle...I am wondering if there is some other way around this using the auto demix feature or some other way...but I guess not that I an think of so far...

Link to comment
Share on other sites

You will just need an easy way of cutting off the MIDI input to Rapidcomposer as desired. A couple of options are:

 

1. Set up an assignable switch on your MIDI controller to toggle a switch object in the Environment that controls the input to the rapidcomposer instrument object (you could also use mod wheel/pitch bend for these if you don't use them normally)

 

2. Set up an external MIDI instrument in your project, set the Port to "off" and use the fader messages generated through a transformer to drive the aforementioned switch. You can now control Rapidcomposer using the Mute button of the track from the Arrange window

 

3. Use a transformer to route to RapidComposer on the basis of MIDI channel, then change the MIDI channels on your keyboard as desired

 

4. Use MIDIKeys to set up a hot key that toggles on/off the switch described in #1 (via IAC bus)

 

I'm sure there are loads of other ways. As for the timing issue, I have heard of that in the past with IAC, but I've never personally had a problem. If you have a physical MIDI interface, try making a "hardware loopback" with that, and see if that makes a difference.

Link to comment
Share on other sites

Thanks for your thoughts, some good options there, I will play around with it.

 

The timing issues I was mentioning have more to do with the external instrument plugin, in the past I ran a lot of tests and came up with some bizarre results depending on whether I was using that plugin to send the midi or sending from an external midi track, etc.  I can't really remember the results now to be honest.  Anyway I will see how this goes.  Thanks.

Link to comment
Share on other sites

IAC isn't the cuplrit.  I have done many tests and found IAC to have sub-millisecond precision...  

 

The culprit is stuff that Logic does to certain kinds of midi output for reasons related to audio latency and what not I guess.  I can't remember what I figured out when I went through all this.  Logic also does some interesting things on input too particularly when miditimestamps aren't there, which they would not be on the IAC loop around.  But I do know that IAC can get midi events from one app to another pretty darn consistently in less then a millisecond.

 

Vaguely I recall something that external inst plugin does not send midi events the same way external midi tracks do.  The assumption is that external midi tracks will be playing external synths and we will be listening to them through hardware mixing desks, without any regard for  bringing the audio back into the DAW and whatever latency, etc.  Meanwhile the external inst plugin does something different and then it has a checkbox to also do latency compensation in some way if you want.  And I can't remember all the various results, I have to run some tests again later....

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...