How to use MIDI program change with 3 messages for song select?

When trying to use “Select song” and “PGM change”, VST live always crashes to desktop!

Hydrasynth deluxe. e.g. sends 3 messages: Bank sel MSB / B s LSB / PGM change. PGM change seems to be ignored and not even shown in the VST live Midi mointor:

0xb0 Controller 0 0 (BankSel.MSB) YYMidiDevice
0xb0 Controller 32 0 (BankSel.LSB) YYMidiDevice

==> Checked the MIDI information with a better (working) Midi monitor.
What in fact is being sent in binary form for e.g. Patch 7 (starting count from 0 of course) is:
(Cont. Bank select 0) B0 00 00
(Cont. Bank select fine 0) B0 00 00
(Pgm change 6) C0 06
This works if i send it to whatsoever , just not against VST live

In the meantime i use a workaround by taking the two B0 00 messages triggering “song up”. But if i want to go a song back i have to access the PC. Not usable on stage!

Could you please have all this fixed?

As for Select Song when applied via MIDI, you are unfortunately correct. We have fixed this with the new version.
We also fixed a problem when using MIDI PGM Change (0xc0) with actions (would not apply), if that’s what you mean.
MIDI events for actions are “eaten” by those actions, and therefor don’t make it to the MIDI Monitor. You should see the program change when you remove it from the actions. This will also be improved with the upcoming version, so you will then be able to see it in the MIDI Monitor view as well.

Not sure what you mean…you can select “song down” (called “Previous Song” in the Actions list) as well, and program with whatever you have available.
Anyhoo, you should be fine with the next version coming very soon. Let us know if it works out for you then.

One of those should be controller 32 (0x20), not 00 (same as before), right?
Anyway as mentioned before we fixed all of this, incl. MIDI Monitor display. Sent Bank Select LSB from Cubase to select Song, and PGM CHG to select Part. Hope it works that way for you too then.

Great to hear - any idea about eta of that release?

you are right, after deactivating the “Next song” workaround, the PGM change message appears.
But why is that ignored one eaten up in the display instead of the Banksel. ones (which are processed)? :no_mouth:

Would it be possible to have a switch for the MIDI Monitor to flip it´s position between pre and post processing?
Might be helpful in many cases…

Why i don´t have another option for “PGM down” :
The Hydrasynth has one UP and one DOWN button.
What both do is send a Bank MSB/ Bank LSB/ PGMChange triplet with the calculated value.

Which cannot be distinguished by VST live - not your fault, “works as designed” :grin: omg i hate that phrase…

So i scan for this in the “7 Next song” row to get ANY PGM change interpreted as order for SONG UP
Unfortunately there is no more button left on the Hydrasynth creating a usable MIDI message. As soon as the PGM select will work properly, there won´t be need for this anmore anyway .

Next week, we hope.

That is actually a great question :slight_smile:
There is a possibility that the MIDI Monitor was able to get the event before it was eaten, who knows why. In any case, this has been streamlined and doesn’t apply anymore with the upcoming version. So there’s no need to flip its position either, thanks for the suggestion.

That should be possible then, see my pic which is pretty much the same.

I don’t get that.

Yes, that should work then. Also you could use pgm chg 1 for Next Song and pgm chg 2 for Previous Song etc by setting both data 1 to the according function. Or, a pgm chg number to select a specific Song, by setting data 1 to its index.
But I recon your hydra sends pgm chg with a number increasing or decreasing with the up/down buttons? But what are the Bank Select for then?

Are you sure 128 songs will be enough for every user ? I suggest using “banked” Program Changes (one line in actions containing PC, Bank MSB and Bank LSB) and another CC for Part select, assuming they won’t exceed 128 for a single song!

These thoughts are leading me to another idea : maybe PC could select the songs indexed in a setlist, and then Bank Select MSB should be used to select the setlist. If I go further, Bank Select LSB would select the Part…

By the way, may I suggest that the setlist should not necessary contain all of the songs ? I think it would make more sense.

@Jihem: for me preloading the whole setlist is a must - so my 32GB NB would end up with some 30 songs max. anyway - not that a live performance of 4 hrs without break is realistic. A “Global-layer-with-pgm-switch-option” for saving RAM and recycling of standard sounds would indeed be very appreciated :wink:

Good point. Extended (14 bit) values are provided by atftertouch, polypressure and pitchwheel, those might be used for more than 16.000 Songs :slight_smile:
But we’ll consider sequences of events to control Actions.

That would be rather complex.
Internally, each Song and Part have continuous indices, so if Song 3 has an index of 5, its Part 1 is 6, Part 2 → 7, Song 4 → 8, Song 4 Part 1 → 9 and so on. We could use that index to address every one of a maximum of 16.384 Parts with for instance Bank Select LSB/MSB. Just a thought…

Yes, we thought about a remove from setlist (only). It’s on our list.

Part/Create Global Part, no?
You might also consider Shared Instruments and control via pgm chg.

The device I use so far (Miditemp MSX) offers an unlimited number of songs. I have around 200 programmed, and I can call any of them instantly by Bank MSB-Bank LSB-PC sent from a Yamaha foot controller. The MSX is an old machine with a very little RAM, and songs are loaded in less than 3 seconds. They contain Midi and Wav files.

Its behaviour is perfect for me, as I play in pubs, restaurants and private events, and never know which songs will fit the audience… I usually play between 25 and 35 songs each night.

I hope VST Live will be the successor of my current hardware setup. Very soon :wink:

Should be enough for my usage :wink:

Then if you add a part to Song 2, its index will be 10? Still confusing for the code, in my opinion… You need a table to link PC with indexes, so why not a table to link PC with the setlists indexes ?

:+1: :+1: :+1:

Maybe i didn´t get the global idea right - what seems usable for me woud be a global “instrument” i put into a local layer which sets PGM, keyboard zoning, maybe some controller default values to have leslie slow/fast or Portamento etc. set. That is not implemented in any way atm., right? Would free up most of the RAM usage caused by VSTplugins

Not sure if I get this.
There is the Global Part, which one or more Layers. These are always active.

If you want to address the same Instrument from various Layers (with varying pgm chg etc) you can use a Shared Instrument, which is also “global” and doesn’t eat additional resources at all.

If this is still off, pls let us know your usecase more detailed.

@musicullum : i right gave up the global instrument idea when a popup occured telling me that changing anything (mostly i just think about different PGM numbers) would also change that setting in all other instances of it. Did i understand that popup wrong?

This is not for Global Part but for Shared Instruments.


The dialog mentions the Instrument, not the Layer.
Take multitimbral Instruments. Fill slots of Halion sonic SE and for all Layers select it from the shared menu. Now you can adress 16 sound via a MIDI channel.
The dialog just tells you that whatever you do to the shared Instrument will be valid for all Layers refering it. You can “Don’t show again”.
As you appear to want a “global” Instrument, that should be fine for you as you probably are aware that changes to that Instrument (not its Layer!) are valid for all Layers using it.