Jump to content

eliminate Midi Loop with IAC


pianosimon

Recommended Posts

I am trying to setup an external instrument in Mainstage by sending Midi data out through an IAC bus.

When I select the IAC bus 1 in the Midi Out area of the channel strip and then press a note on the keyboard I keep getting an error message saying MIDI LOOP DETECTED.

How do I solve this please!!

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 year later...
I am trying to setup an external instrument in Mainstage by sending Midi data out through an IAC bus.

When I select the IAC bus 1 in the Midi Out area of the channel strip and then press a note on the keyboard I keep getting an error message saying MIDI LOOP DETECTED.

How do I solve this please!!

 

I have a similar issue. "MIDI LOOP DETECTED: A MIDI Loop while receiving MIDI events on Port "Bus 1 IAC Driver" was detected."

 

Has anyone ran into this using the IAC driver, 3rd party plugins (such as Sampletank, omnisphere) and solved it?

 

I'm trying to minimize cpu usage by using the IAC driver to use Spectrasonics OMnisphere outside of Mainstage as an "external instrument"...it works, I saved quite a bit of cpu usage...but I get this midi loop error.

Link to comment
Share on other sites

  • 10 months later...

All you need to do is select the keyboard in Layout mode, and change its hardware input device port from "All" to the port of your actual MIDI keyboard. The "All" port includes IAC, and since anything that is output through an IAC bus comes back in through the same IAC bus, you get a MIDI feedback loop.

 

J.

Link to comment
Share on other sites

Hi Jordito, many thanks for your reply.

 

I am running a MainStage session with 3 MIDI keyboards, each routed to inputs of my MOTU micro lite MIDI interface. In the layout page, there is a keyboard representing each of these, and all have the relevant hardware settings. As far as I know, all MIDI inputs are set correctly, but I'm now going to set up a brand new concert, very simple, to see what happens:

 

First of all, Jack is running to provide 32 channels of audio. Jack is not set up to handle MIDI. I plan to route MIDI from Mainstage to an external instance of Kontakt, on channel 1 of IAC Driver bus 1. The audio will then return to MainStage via Jack channels 31-32.

 

MainStage preferences:

Audio Output on MOTU Ultralite mk3 Hybrid

Audio Input on JackRouter

 

Layout mode - set up one keyboard, with the MIDI Out of the keyboard plugged into Port 1 of the micro lite.

 

Keyboard 1 Hardware Input:

Device: Port 1 micro lite

Channel: Channel 1

 

Sustain pedal 1 Hardware Input:

Device: Port 1 micro lite

Channel: Channel 1

Type: Press/release

Number: 64 (sustain)

MIDI Thru: Automatic

Send Value to: None

 

Edit mode - set up one external instrument

 

In the New Channel Strip dialog box:

1 External Instrument

MIDI Input: Port 1 micro lite

MIDI Output: IAC Bus 1

MIDI Channel: 1

Format: Stereo

Input: 31-32 (these are Jack channels)

Output: 1-2

 

Play notes on the keyboard - fine. Press sustain pedal - MIDI loop detected.

 

So there are no keyboards in Layout apart from the one I have created, which is set to receive on micro lite Port 1 only. There are no channel strips within the concert other than the external instrument I just created, which should only be receiving MIDI from the keyboard on Port 1. Clearly MainStage is responding to MIDI coming back through the IAC bus.

 

At this point I don't even have Kontakt open, but if I do have it open and set to receive MIDI on IAC Bus 1, and set to not pass any MIDI through, the result is the same.

 

Have I missed something obvious?!

 

Steve

Link to comment
Share on other sites

Play notes on the keyboard - fine. Press sustain pedal - MIDI loop detected.

 

So there are no keyboards in Layout apart from the one I have created, which is set to receive on micro lite Port 1 only. There are no channel strips within the concert other than the external instrument I just created, which should only be receiving MIDI from the keyboard on Port 1. Clearly MainStage is responding to MIDI coming back through the IAC bus.

 

At this point I don't even have Kontakt open, but if I do have it open and set to receive MIDI on IAC Bus 1, and set to not pass any MIDI through, the result is the same.

 

Have I missed something obvious?!

 

It doesn't matter if Kontakt is open or not. every time you send MIDI data out an IAC bus, it will come back in again through that same bus. This is why one must block its entrance to the program where the MIDI is originating from. I don't know what's missing in your particular case, but if the loop is being detected, then the IAC bus is somehow finding its way back into Mainstage. I really don't use Mainstage that much so I wouldn't know where else to look...maybe CCT or Eric Bradley or mmm42 or DougZ can chime in on this.

 

J.

Link to comment
Share on other sites

Exactly - whatever is sent on the IAC bus appears to be coming back into Mainstage. And of course Mainstage assumes that any incoming MIDI that you haven't routed anywhere should be sent EVERYWHERE!

 

This is why I created a dummy keyboard in Layout mode - to absorb this incoming MIDI on the IAC bus. Unfortunately this has the effect over time of introducing a massive amount of latency - I'm not sure why. To be honest, I think I'm about ready to give up on the IAC bus idea, as I need it to work in one direction only, or for Mainstage to be able to ignore anything coming in on the IAC bus.

 

I've tried setting up a session using Plogue Bidule as a place to host instruments outside of Mainstage, and this seems to be working. For now, I'd recommend this as a workaround.

Link to comment
Share on other sites

Exactly - whatever is sent on the IAC bus appears to be coming back into Mainstage. And of course Mainstage assumes that any incoming MIDI that you haven't routed anywhere should be sent EVERYWHERE!

 

This is why I created a dummy keyboard in Layout mode - to absorb this incoming MIDI on the IAC bus. Unfortunately this has the effect over time of introducing a massive amount of latency - I'm not sure why. To be honest, I think I'm about ready to give up on the IAC bus idea, as I need it to work in one direction only, or for Mainstage to be able to ignore anything coming in on the IAC bus.

 

How strange, in Logic it's so easy... you just patch an object (to function as a dead end) to the IAC port in the Physical Input object and you're done. Any data coming in from that IAC bus never gets past that object and therefore is completely ignored.

 

The method I proposed took care of it when I tested it. I didn't notice anything strange with latency or whatever...how can a feedback loop form if you're not using IAC as the input for anything in Mainstage? I don't understand :?

 

J.

Link to comment
Share on other sites

  • 1 month later...
Hey Steve I'm having a similar problem with the IAC Driver and am curious about Plogue Bidule. Does it run as a Standalone or a Plugin when you use it to get Mainstage and Kontakt Standalone to talk to each other? Looking through threads online trying to figure this out...
Link to comment
Share on other sites

Hi,

 

Re. Plogue Bidule - I ran it as a standalone program, hosting Kontakt as a plug-in. It's been a few weeks since I did this, but from memory, I used the IAC bus to carry the MIDI from Mainstage to Bidule. Then set up Mainstage audio channels with the Bidule outputs set as inputs, to route the audio from Bidule back into Mainstage.

 

Unfortunately this idea ran aground because everything I did resulted in latency being introduced. The idea I mentioned above, to set up a dummy channel strip to absorb the MIDI messages that were coming back in on the IAC bus, didn't work. Then I found out about going to the Assignments and Mappings tab, selecting the "Unassigned" assignment at the bottom of the list, and unchecking "Send unassigned MIDI to all channel strips". This negated the need for a dummy channel strip, but I still had the latency problem after running for around 30 minutes. It seems that either:

 

- There is a fundamental problem with the IAC bus (unlikely as I haven't found anyone else with the problem)

- There is a problem with Mainstage that makes the IAC bus unusable (possible)

- There is a problem with my specific system that makes this not work (hopefully unlikely as I am using a brand new MacBook Pro with all the latest software and drivers)

 

Having said all of the above, I'm not even sure that using the IAC driver is the solution to my problems, as I *think* I've had the CPU spikes even when using only stock Logic/Mainstage plug-ins. I need to do more research on this.

 

Please keep us updated with how your IAC bus adventures go!

 

Steve

Link to comment
Share on other sites

Play notes on the keyboard - fine. Press sustain pedal - MIDI loop detected.

 

okay, just a HUNCH, since note on/offs didn't trigger this, but a control message did...

 

(this is how it's written up in the MainStage 3 manual, but concept was the same in v2)

 

hope it helps, for me, I needed this setting to stop some pitch/mod wheel messages on one of my controllers routing thru to all channel strips when it shouldn't have...

 

How MainStage passes through MIDI messages

 

Some MIDI messages sent by your keyboard controller (or other MIDI device) are “passed through” to any channel strips in the MainStage concert that are mapped to the same controller (or device). Whether or not MIDI messages are passed through depends on the following conditions:

• If there is no screen control in your layout assigned to receive the message type sent by the controller, the messages are passed through.

• If a screen control for that MIDI message type exists, and the MIDI Thru parameter for the screen control is set to Automatic or to the input device, the messages are passed through. This is the default for screen controls set to receive volume, pan, expression, sustain, modulation, pitch bend, and aftertouch messages.

• If a screen control for that MIDI message type exists, and the MIDI Thru parameter for the screen control is set to “Do not pass through,” the data is not passed through. This is the default for most other screen controls.

The reason for these exceptions is so that when you add a screen control for a modulation wheel or a sustain pedal, for example, it “automatically” responds to the appropriate MIDI message type, without your having to configure it further. If you want to have the screen control respond to a different type of MIDI message, you can choose another MIDI message type from the Number pop-up menu in the Screen Control Inspector.

Incoming MIDI messages that are passed through are passed to any channel strips mapped to the same device sending those messages (that is, to the keyboard controller you are using to “play” those channel strips). If there is no matching device, the MIDI messages are sent to all channel strips.

You can also filter incoming MIDI messages for individual channel strips. For information on filtering MIDI messages, see Filter MIDI messages on page 53.

Link to comment
Share on other sites

Thanks Michael. I solved the sustain pedal issue - it was creating a MIDI loop because Mainstage was set to pass any unassigned MIDI input to ALL channels. The sustain pedal had not been assigned to a specific instrument, so it was being sent to all instruments.
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...