Jump to content

Changing channel strips with Prog Change via IAC


Robert Wilson

Recommended Posts

I also asked about this on LUG forum but maybe someone here knows if there's a way for multiple tracks to switch channel strip settings automatically?

I'm trying to set up a project for live performance that automatically switches channel strip settings but can only get it to work on one track at a time.
I've saved the channel strip settings as performances, set up an IAC bus and and put the program change events on an external track.
This worked well for switching channel strips on one track back and forth.
After a lot frustration, I managed to get it working on a second track. This involved creating a second instance of IAC bus (which may be completely the wrong way to go about it). 
The problem I have with this set up is the events are only picked up on the highlighted track in the arrange window. This means only one track at a time will switch channel strips automatically.

I've tried moving the program change events in the timeline in case they were clashing but that doesn't appear to be the issue.

This is the current set up. Track 1 switches channel strips when highlighted, as does track 2, but not both together.

image.thumb.png.4ecc014b815f85455029ffb3f5f0cc26.png

Link to comment
Share on other sites

Theoretically (i.e., I didn't try this), if you have Logic 10.7 or later, you should be able to achieve this by setting the different tracks to a different MIDI In Port / MIDI In Channel and record enable all tracks you want to receive MIDI data (e.g. program changes).

The MIDI In Port / Channel settings are new in 10.7 and will filter incoming MIDI events on all record enabled tracks by port and channel.

EDIT: From your screenshot it looks like you actually are on 10.7.x, so it's just a matter of record enabling the tracks (which, as your screenshot also shows, you didn't).

Edited by polanoid
  • Like 1
Link to comment
Share on other sites

"you can put all yur tracks into a summing stack and highlight the summing track - it will distribute events it receives to its sub tracks (even if they’re not rec enabled)."

Thank you, I'll give that a try. Would that mean just using the one IAC bus and selecting different MIDI channels for each sub track?

Link to comment
Share on other sites

44 minutes ago, polanoid said:

From your screenshot it looks like you actually are on 10.7.x, so it's just a matter of record enabling the tracks.

Thanks, I just gave that a try and it's now working intermittently which is at least an improvement. I hadn't realised they needed record enabled to receive MIDI.

Now I have them both working at some events but not others so will need to look into that but think it might be something to do with the clueless way I've set up the IAC buses.

  • Like 1
Link to comment
Share on other sites

19 hours ago, David Nahmani said:

Let us know how you progress, I'd be curious to hear if you get it to work. 

Here's a more detailed breakdown of what is sort of working and what isn't.

In the first image shown the set up is:

Track 1, Software inst:  MIDI port - IAC Bus 1, MIDI Channel 1 in and out, rec enabled.

Track 2, Software inst: MIDI port - IAC Bus 2, MIDI Channel 1 in and out, rec enabled.

Track 3, External MIDI: MIDI port (in and out) IAC Bus 1, MIDI Channel 1 in and out.

Track 4, External MIDI: MIDI port (in and out) IAC Bus 2, MIDI Channel 1 in and out.

It has these program changes:

Track 3: Pos. 1 1 2, ch 1, Val 0; Pos 161 1 2, ch 1, Val 101.

Track 4: Pos 1 1 3, ch 1, Val 1; Pos 161 1 3, ch 1, val 102.

The above seems to work around 9 times out of 10. Around 1 time out of 10 only 1 channel will pick up the program change. I still haven't quite figured out what causes it to do this.

Anyway, I could probably work with it if that was the only issue. Unfortunately it starts to break down if I add another tracks with IAC Bus 3 as the port. In the second image I've added the 3rd track but haven't yet set up IAC Bus 3 in the environment. At this point it still works. I then add IAC Bus 3 and track 6, which is assigned to IAC 3. Now track 3 picks up program changes for track 2 and track 2 does nothing.

I'll keep tinkering and update the thread if I make any further progress.

IAC2.png

IAC3.png

Link to comment
Share on other sites

I was able to make it work that way: 

  1. In the MIDI Environment, create three MIDI instruments, let's name them remote 1, remote 2 and remote 3.
  2. Set their outputs to IAC 1, IAC 2 and IAC 3.
  3. Drag each instrument onto its own track. 
  4. In the Tracks view, create three new software instrument tracks. 
  5. Set their inputs to IAC 1 (MIDI All), IAC 2 (MIDI All) and IAC 3 (MIDI All). 
  6. R-enable all three software instrument tracks. 

Now any program change on remote 1 changes the performance on the first software instrument track, remote 2 on the second and remote 3 on the 3rd. 

  • Like 1
Link to comment
Share on other sites

55 minutes ago, David Nahmani said:

I was able to make it work that way: 

  1. In the MIDI Environment, create three MIDI instruments, let's name them remote 1, remote 2 and remote 3.
  2. Set their outputs to IAC 1, IAC 2 and IAC 3.
  3. Drag each instrument onto its own track. 
  4. In the Tracks view, create three new software instrument tracks. 
  5. Set their inputs to IAC 1 (MIDI All), IAC 2 (MIDI All) and IAC 3 (MIDI All). 
  6. R-enable all three software instrument tracks. 

Now any program change on remote 1 changes the performance on the first software instrument track, remote 2 on the second and remote 3 on the 3rd. 

OK, this is continues to be weirdly *almost* working as hoped. I started a new project from scratch and followed these steps. It works fine for all three tracks with 2 prog change events on each. When I add a third set, if I'm switching back to the first set of 3 prog. changes, it's fine. e.g:

 

remote 1 sends changes to prog 0 then prog 101 then back to prog 0.

 

remote 2 sends changes to prog 1 then prog 102 then back to prog 1.

remote 3 sends changes to prog 2 then prog 103 then back to prog 2.

The weirdness starts if I try to make the 3rd program change something else, e.g. if I try to change remote 1's 3rd event to prog 4. Track 1 now changes to prog 4 but track 2's change gets ignored and stays on prog 102 instead of switching. :classic_blink:

Link to comment
Share on other sites

24 minutes ago, Robert Wilson said:

if I try to change remote 1's 3rd event to prog 4. Track 1 now changes to prog 4 but track 2's change gets ignored and stays on prog 102 instead of switching.

What you're describing is the expected behavior: remote 1 controls track 1. 

In case I misunderstood your statement, then attach your project here and describe exactly at which bar number something doesn't behave as expected: 

  • Describe what you're expecting,
  • Describe what you're experiencing.
Link to comment
Share on other sites

35 minutes ago, David Nahmani said:

What you're describing is the expected behavior: remote 1 controls track 1. 

In case I misunderstood your statement, then attach your project here and describe exactly at which bar number something doesn't behave as expected: 

  • Describe what you're expecting,
  • Describe what you're experiencing.

Apologies, I worded it poorly. What I meant was, all 3 tracks changed as expected in the first and second set of program changes. If I copy-paste the first set of 3 changes so that I now have it switching to one set then back again, all 3 sets work as expected. However, if edit remote 1 to send a different prog change in the 3rd set of changes, it seems to clash with the expected change from remote 2, which is now ignored.

Here's a screenshot.

I expected the highlighted region to have sent prog 1 to track 2.

Instead it's still on prog 102.

IAC.png

-Update-

If I leave it looping it sometimes picks up the change and sometimes not. The issue seems to be limited to track 2 for now. The others are working consistently.

 

Edited by Robert Wilson
uploaded uncompressed project.
Link to comment
Share on other sites

Just to wrap this thread up after another day of tinkering with IAC, I'm satisfied that two tracks with automatic program changes is now working reliably well so I think I'll restrict myself to a maximum of two for live performance. Once I go to 3 tracks or more it becomes very flaky and unreliable. 

Thanks all for your help, this old dog has learned a couple of new tricks along the way.

Link to comment
Share on other sites

I think I understand what you are trying to do, you want to sounds you are playing to change automatically with program change commands, right? I personally would never trust that the channel strip would load automatically or quickly enough to rely on it live. Does this have to be automated? Is triggering it the track change yourself an option? If so then I'd use either a controller on the keyboard or (and I do this A LOT in my live show) a foot switch. But rather than going up and down I just always go down to the next set of sounds I want to use. This will mean having duplicates of the strips in the arrange screen, but who cares about that? My method uses the Environment a lot, but it works and once you do it a few times it is a breeze to set up. I start with a Midi Instrument object, that is what will be the track in the Main Window track. From the Midi Instrument I then create Monitor and Midi Instrument objects for the splits, assign key ranges to each of the Midi Instrument objects, then cable each one of those to the instrument that I want it to trigger. In between almost every object is Monitor object so I can see what is coming in and out of everything. Plus Monitors also can act as splitters and allow you to send the same midi data to multiple instruments/objects. Each of the Main Window objects can have the name of the section of the song so it is easy to see which one you are on. 


This could be automated if you really wanted it to be using a Cable Switcher object. The downside of that are you can have stuck notes when you change tracks if you are holding a note when it switches. That is actually fixable in the Environment as well but I'd have to unpack the Macro I made for that to explain it. I do use this a little in my live show, but generally speaking prefer to change my tracks manually. The Logidy midi foot switch is a good, inexpensive one but the MorningStar foot switches are freaking amazing and can send any type of midi command and/or keyboard commands you want. I can't say enough good things about those. 

This may seem more complicated, but it really isn't and it gets rid of the need for IAC, which I would never trust for live work. You can create a Environment page for each song to keep things tidy. 

If you aren't using Logic specific functions then this is exactly what MainStage was built for. My live show is too live and complicated for MainStage but if you have gone to any Broadway shows or major acts with keyboards you have been to a show that uses MainStage. 

I can go in to more detail, but this is already a lot to read.

  • Like 2
Link to comment
Share on other sites

This is a complex task.  MainStage is better suited for it.  I think maybe a different approach with logicpro would be to leave tracks in place spread wide across the mixer and just find a way to change which tracks you are sending midi or audio to.

Another way to try complex  changes to mixer strip settings would be to use some combination of osculator and/or keyboard maestro along with other tools such as AppleScript even…. To send osc commands to logicpro.  Osc is able to direct things to specific mixer strips in mi h the same way that Logic Remote does.  So you can make your own remote control app or script or whatever that does automatic scene changes with more sophistication then what is possible using midi.   But that opens a big rabbit hole of complexity and programming required to achieve it, if at all.

i would rather ask, why not use MainStage?  Ehat is missing from MainStage that requires you to find a way to get logicpro to do this sort of thing?

gigaperformer might be a bit more capable then MainStage in this regard but it’s pretty expensive

  • Like 1
Link to comment
Share on other sites

4 hours ago, Dewdman42 said:

i would rather ask, why not use MainStage?  Ehat is missing from MainStage that requires you to find a way to get logicpro to do this sort of thing?

Getting Mainstage to trigger MIDI regions. I haven't been able to do it to any useable degree so far. 

Link to comment
Share on other sites

yea for sure if you need playback of midi in your live set, MainStage comes short.  Have to look to see if you can find any 3rd party plugins that can do that.  This can be done with Scripter, but its a bit complicated...and certainly not as convenient as dragging and dropping regions into place where you want them, etc..all the benefits of LogicPro.

So another way to think about would be to use IAC to connect LogicPro to MainStage.  Use MainStage to host your instruments and switch them quickly via program change...use LogicPro to send all midi over IAC to MainStage.  Something like that...

The reality is that getting LogicPro to switch its mixer setup on the fly is going to be complicated and finicky, IMHO.  That is where MainStage absolutely shines.  it just doesn't have midi playback built in.  It can playback audio...so if you are cool with capturing your regions into audio form, then you can have MainStage playback audio clips for you...

 

  • Like 1
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...