Program Changes for Songs from External Device

I’ve read the posts on this I think but just double checking myself. I too use Bandhelper to trigger program changes to many devices for the band. I’m looking to use that with Gigperformer.

I’ve noticed that my songs are numbered 1 through 138 based on what I’ve set up. And I assume if I turn off “remap incoming bank select messages” that as it exists now 0 0 0 would map to song 1 and 0 1 0 (MSB, LSB, Program) would map to song 129 etc.

My concern is that if I were to delete a song, or add a song would gig performer renumber my remaining ones?

If so, (and even if not), I’m assuming that the best way to ensure they stay in sync with Bandhelper is to take song part 1 of each song and in Song Part Properties, assign a program change number for this part which would always stay with it? Is that correct or is their a better idea.



Hmmm… Well I’ve realized two things.

If I assign a program change for a song part in a setlist view, it only applies to that setlist view. So if I create a new setlist, those “permanent” program changes do not carry with it.

I thought maybe the “Assign a permanent program change number” in the variation properties section would work but that only works in the rackspace area and does not carry over into the setlist views.

So, I guess my question is whether there is a way to permanently assign program changes to songs or song parts so that an external program (like Bandhelper) can trigger them and not worry about having them renumber???

Help :slight_smile:



I too have questions around PC changes so I am watching this thread because I don’t understand what the best way to approach it is and the documentation is a little limited on this topic.

What you’ve stumbled across is something that concerns me because I don’t want to have to re-program my midi controller for every new setlist I might make. I’m sure that’s not the reality but it sounds like that’s the question you’re asking.

Does this article help at all @WITELITE? Gig Performer | How to use the same set of PC messages to select parts in any song

As for PC changes as an overall approach: what is best and why…?

Should I send PC changes from a controller to change rackspaces or song/parts in GP? (and which… rackspaces or song parts?)

Should I send PC changes from GP to change a hardware controller/synth’s internal patch?


I can send PC from both my keyboard controllers. One is just a controller (SL73), the other is a synth/controller I use audio from (routed back to GP). I could see using the synth/controller to receive PC to keep it’s internal sounds in line with what song I am playing/working on from GP and possibly also send PC to GP from the synth/controller to switch songs or parts.

What I want to avoid is making a bunch of keyboard patches for each song and having numerically ordered lists in two places that don’t match up.

@Brandon I’ve read that article and as many others as I can find in the forum and am still struggling. In essence, I am looking for some way to Permanently Assign a Program Change to a song (or song part as once you get to the first song part you can easily switch scenes) .

I use Bandhelper as do all the other members of the Band and its portability (iPad), ability to quickly sync setlists across devices, notify band members of changes to set lists, and many other functions make it a pretty indispensable app. I know some of these functions are available in Gig Performer but I believe coexistence is best at this point for everyone else.

At this point, I’ve programmed foot switches to change between song parts and rackspaces and I believe that works well as a best practice (to your question) and if no one else in your band is syncing up with you, I think you could even send PC changes from GP to change patches on other pieces of hardware.

But I really need the ability to permanently assign PCs to song parts without having to worry about them changing or getting out of sync.

Hopefully the gurus like @dhj and @pianopaul and others who have been so immensely helpful have this on their radar or better yet, have a solution.

Thanks and we can learn together.


1 Like

@Brandon This article is the closest I’ve found to our discussion. Right now I think the “all songs option” in setlist mode is the best (Don’t use setlist mode beyond that) but it still wouldn’t permanently assign them and I’d be concerned that if they were alphabetical and a new song was added or a song was deleted that this would be impacted too.

1 Like

It seems like based on that older thread… that if another program is acting like your ‘setlist’ manager, that you might be best off doing what you have just suggested or… if possible, not using setlists at all and setting the PC change numbers to Rackspaces instead?

I’d love to hear some expert level opinions on this.

GP can be set so incoming PC messages do or do not automatically set to Setlists mode, so if that option is turned off, you can hard-assign PC numbers to Variations (not Rackspaces).

In this way you could hard-code Variations to respond to PC messages and avoid Songs/Parts totally, which if you’re using a 3rd party program to manage your setlists and presumably charts/lyrics and switching other hardware patches, you don’t need Songs/Parts.

Each rackspace can also send a PC when activated by having a Midi Out block with that option selected so you could in theory trigger a rackspace from Bandhelper and then GP would in turn send PC to something else (EDIT: provided that outgoing PC number was unique and not associated with another rackspace or else you might get a change:change happen).

I haven’t seemed to be able to make a rackspace send a PC command though.

EDIT: So you mentioned this above I now remember but no, you can’t then export this rackspace and have it preserve the PC number when it’s imported back in.

Here is the best solution I’ve found

  • Use the All Songs Mode in Setlist
  • Go to Edit , Reset Program Change Numbers (First Song Part only) which will sequentially assign them
  • Go to External Device (Bandhelper) and enter those PC numbers and LSB numbers. If you have over 128 songs, make sure to enter a 0 in the LSB column for the first 128 and a 1 for 129 through 256 etc
  • I’ve noticed that deleting a song or reordering songs won’t change the assigned PC numbers which is good.

What this doesn’t do is enable you to add setlists for a subset of songs so you’ll always have to use All Songs Setlist. The biggest problem with that I see is if you are using predictive modeling, you could be jumping all over the place which will require longer load times as the program will not be able to accurately predict the next song well.

I REALLY think it would be great to have an option to LOCK PC #'s in the All Songs section so that if you create other setlists they are preserved. PLEASE, PLEASE… :slight_smile:



This seems like a great suggestion @WITELITE.

Yes, this is on our list.

1 Like

@dhj Thanks so much. While I have your attention on this another suggestion that’s similar.

Your adding songs from backspaces worked brilliantly!!

I was able to easily convert all the rackspaces to songs and then number each one with an LSB and PC number as described above.

And today I went in to add a song (Reelin in the Years as I know you are a Steely Dan fan :))

My steps included after setting up the sounds and rackspace

  • Changing the rackspace numbering to my LSB and PC format for the first variation.
  • Going in and adding a song and manually selecting the rackspace for the associated song parts
  • Going into the first song part and coding in the LSB and PC

There may be an easier way but it would be great if you could

  • Add “Selected” rackspaces as songs for after you have done the batch conversion.
  • Somehow be able to assign the next PC and LSB automatically for each new rackspace or song.

Thanks for listening!


I missed the session today but just went through it and it doesn’t look like this came up. Any update on this functionality? I’d be happy to be a beta tester :smile:

1 Like

An easy way of doing this is the one thing that will stop me from purchasing this program.

Are you talking about locking PC numbers to songs?

Hi, I’m using the trial version of 4.5.8.

I use a product called Linkesoft Songbook which uses a Program Change command, which works quite well until you get to Song 128. I have been using this with Mainstage on stage, and the Program changes have worked quite well. The PC command is embedded in the Songs txt file (which is in chord Pro format).
The Global Midi Manager is Receiving the Program change messages when I receive songs, but doesn’t seem to change songs in the setlist section ( I assume that should work?). I have added the corresponding PC number in the song. I will probably do a seperate Post.

Please do. Gig Performer 4.5 does a really good job with program change messages, and you can find on the blog examples how it works with BandHelper and OnSong.

It works with another apps such as ForScore, MobileSheets, etc.

Please explain what you want to do in a new thread.

No worries.

Agree. 4.5 changed things for me and the ability to hold program change messages makes it work VERY well with external devices sending them…I use Bandhelper and it works fine now.

@Darug Take a look at 4.5:)

1 Like

I’m using 4.5.8

Did you post a separate topic? I didn’t see one…

I’m sure these guys will figure it out. Great forum!!