Sample Aid
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Logic 9 Using Logic as VI Host

Discussion in 'Logic 9' started by bayswater, Jul 9, 2014.

  1. bayswater

    bayswater Senior member

    I'm trying to set up a Logic project I can use as an external VI slave. I have project in DP that needs to access samples that will only play in EXS 24. I'm using IAC and Soundflower to send MIDI from DP to Logic, and to return audio from Logic to DP.

    There are five tracks in Logic, each with an instance of EXS 24 and a different sound in each. The MIDI channels in the Inspector are set 1 to 5. Outputs are set to the first 5 pairs on Soundflower. In DP, it is sending MIDI on channels 1 to 5 (I checked this with MIDI Monitor), and hearing audio on 5 stereo aux channels in Soundflower. Generally, this works, but:

    The problem is that Logic is listening to all the MIDI channels on all the tracks, meaning that the audio going back to each of the 5 aux channels in DP has the sound from all 5 DP outputs.

    How do I get Logic tracks, channels, etc, to listen only on one MIDI channel? Is there a mysterious Environment setup I need? Or is this something I should be setting up in MainStage?
  3. Eli

    Eli Senior member

    Have you assigned the audio output routing of those Logic tracks to each output to an individual Soundflower channel? I suspect this is your problem, since you didn't mention the audio output routing of those five EXS 24 instruments.
  4. bayswater

    bayswater Senior member

    Yes, they are assigned sequentially to pairs of Soundlower channels. (See "Outputs are set to the first 5 pairs on Soundflower.", and I have 5 corresponding Aux inputs in DP.)

    Are you saying the EXS instances should only be responding to input on the MIDI channel selected in the Inspector? That's what I expected, but that's not what I'm seeing. I'll have another run at it in the morning.
  5. Eli

    Eli Senior member

    Try this:

    1. In the Clicks and Ports layer of the Environment, create a Channel Splitter object.

    2. From the Physical Input object, cable the node for the IAC port to it.

    3. Cable each of the first five channel splitter output nodes to the corresponding EXS 24 software instruments respectively. You can hold down the Option key to cable to objects on another layer (your software instruments are likely residing on another layer in the Environment).

    4. Assign the channel splitter object to the currently selected Track.
  6. bayswater

    bayswater Senior member

    Thanks Eli. I'll do that.
  7. bayswater

    bayswater Senior member

    Well, I thought I might end up in a Kafka novel if I opened up the Env window, and I am. It has always baffled me.

    I can see the EXS instruments I've created in the All Objects view. Going to Clicks and Ports, I can add a Channel Splitter, and draw a connection to it from the Physical Input, specifically from the IAC bus set up to receive MIDI from DP. But I can't see a way to draw a cable from the Channel Splitter output to the input of an EXS instrument.

    The Channel Splitter only appears as a graphic object in the Clicks and Ports view. If I open up any view that shows the EXS instruments, (All Layers appears to be the only place that mentions EXS) all I see is a list of objects, and nothing that shows a graphic view of an EXS instance with a MIDI input. I see no apparent way to draw a cable from the Splitter outputs to an EXS instance. I tried to copy and paste an EXS from the All Objects view to the Clicks and Ports layer, but with that, I lost the graphic view of Clicks and Ports which now appears as a list of object.

    Is there a yellow brick road I'm not seeing?
  8. Eli

    Eli Senior member

    Click hold the cable outlet of the channel splitter while holding down the Option key. Then select the desired destination from the menu that appears.

    Eli Krantzberg
    Sent from my iPhone using Tapatalk
  9. bayswater

    bayswater Senior member


    Thanks a million times. This worked. Probably the first time someone has explained the environment to me with any success. You have the golden touch.

    When I assigned inputs to the first of the VIs, somehow, a copy of the channel strip for that VI showed up in Clicks and Ports. I realized I could copy and paste the other channel strips there as well, and use the drawing capability to complete the Environment setup.

    This setup is very usable. With the Logic buffer set to 128, latency between MIDI and recorded audio is very low.

    For anyone interested, here is a video of DP playing 5 EXS24 instances in Logic and recording the audio in DP.<>Logic/Resources/DP<>
  10. bayswater

    bayswater Senior member

    A couple of things I forgot to ask about this:

    1) while the setup I described above works well, I don't understand why simply setting the MIDI channel in the inspector for each instance of EXS24 didn't work. Is there any point in this setting if EXS24 listens to and responds to all 16 channels anyway? Is it only relevant to multitimbral instruments? I know the question is academic at this point, but an answer would help me understand how Logic works.

    2) would there be an advantage in efficiency to set this up using MainStage rather than Logic? I'm about half way through Doug Zanger's videos on MainStage and it's not apparent how MainStage would do this, but I'd have to think it would be more efficient if it can.
  11. Eli

    Eli Senior member

    When MIDI arrives at Logic, it is being routed to the selected track. Logic doesn't know which MIDI stream is destined for which instrument at this point. It only knows to send it to the object assigned to the selected track. That's why the Channel Splitter works well in this case. The whole job of the Channel Splitter is to route info it receives on various MIDI channels out to unique MIDI paths. So with this as the track object, it routes the incoming MIDI data out to the appropriate outputs - which are cabled to the desired destinations.

    In this particular scenario no, it's not relevant because the data arriving at each EXS 24 instrument is being filtered by MIDI channel at the Channel Splitter.

    Yes, the EXS 24 "listens" on all channels.But it only responds to the channel it is set to in the Inspector. "All" is one of the possibilities which means it will respond to any channel. But otherwise, it should only respond to the channel set in the Inspector.

    If you want to try a little experiment, try this:

    1. Forget about that channel splitter object. Instead, create a generic new "Instrument" from the New menu in the Environment. Set it's MIDI channel to "all".

    2. Cable the IAC port on the Physical Input object to this new dummy instrument.

    3. Route cables out of this dummy instrument to each of the EXS 24 instruments (each time you drag a cable from it, it will "grow" an additional node. )

    4. Assign each EXS 24 instrument to the desired MIDI channel.

    5. Assign this dummy instrument to be the instrument assigned to the currently selected track.

    The data is being sent out all cables on that dummy instrument, but each EXS 24 Instrument is only "listening" on one channel. Now try playing your tracks from DP. It _should_ work as expected. You can probably even use a generic Monitor object from the New menu instead of an Instrument if you wanted to.

    Sorry, I don't know Mainstage; I don't use it.
  12. bayswater

    bayswater Senior member

    Well, I think this is how I ended up down this path. All EXS 24 instances were playing the MIDI from all channels. I'll try to replicate that arrangement with monitors to check again.
    Thanks. I'll try this out.
  13. bayswater

    bayswater Senior member

    Eli, I tried the experiment. I disconnected the Channel Splitter and put a Multi Instrument in its place. No other changes. In this setup, all the EXS24 instance are responding to, and sending out audio on all channel. You can see it in the linked video. The earlier video using the Channel Splitter has each VI receiving only its intended MIDI channel (obviously because no other MIDI information reaches it).

    So what I'm seeing is, not only do the EXS24 instances I have listen on all channels, they also play info from any channel, regardless of the MIDI channel setting in the Inspector.
  14. Eli

    Eli Senior member

    Just for fun, if you have a minute, try it with a regular "Instrument". Not a multi instrument. Set the instrument's channel to "All", and set each EXS 24 instrument to a unique channel.

    .... On second thought, just use a "Monitor" object instead of an instrument.
  15. bayswater

    bayswater Senior member

    Simple Instrument and Monitor give the same result as the MultiInstrument. MIDI from all channels go to all instances of EXS24 and all instances of EXS24 play all the notes from all the MIDI channels.
  16. Eli

    Eli Senior member

    Well then, back to the channel splitter :D
  17. bayswater

    bayswater Senior member

    Did some more experimenting. When I use keyboard input to the sequencer input the logic projects works as expected. Only record enabled tracks respond so whether or not EXS24 is selective is academic. When the midi input arrives on iac every EXS24 instance responds to everything.

    I've set up splitters and Interapp MIDI to get 32 midi from DP to Logic and 64 audio channels back to DP, so it's all good. And I actually learned something too. Thanks for the discussion and help.
  18. Eli

    Eli Senior member

    Glad it all worked out. And no prob, you're welcome.....

Share This Page