MIDI Program Change by pattern effect

Started by RG (aka AUDIOMONSTER), March 18, 2013, 20:32:27

Previous topic - Next topic

RG (aka AUDIOMONSTER)

Hi everyone


Just asking myself a silly question (I'm sure there'll be a simple answer ;-)):

How to send program changes instructions to a bank in a sampler like Kontakt or other, USING A MACRO IN A PATTERN ?

Indeed, when you change "MIDI Program" number in the "Instruments" section, and then play a note with the current instrument, the program change works perfectly in the midi sampler where the midi even is sent. (Kontakt Bank)

So it is for sure possible, but what would be the MIDI macro to use for, in a sequence ? (the goal is to get equivalent to sort of Keyswitch between articulations, each articulation beeing a program in a bank file)


Untill now, to change program number in a Kontakt Bank, I used as much Openmpt instruments as programs in a bank, with each Openmpt instrument on the same midi channel, but with a different "Program number".


I suppose it will be sort of S.. and Z... macro ? But which exactly ?

Any idea ?


Thanks a lot ;-)

Saga Musix

Yep, this is indeed quite easy to accomplish.
Create a parametered macro "Ccz" (Note that the first C must be upper-case, the second c lower-case!), then activate this macro on some channel on which the plugin is used using Zxx - Z00 would send a program change for the first instrument, Z01 for the second instrument, and so on. That way, you can access the first 128 programs (Z00...Z7F).
If you also need to switch the bank, you will require an additional Bank Select macro - to accomplish that, choose "MIDI CC" from the "type" dropdown list of some macro slot and select CC 32 - Bank Select [Fine]. Bank select must be immediately sent before program select.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

RG (aka AUDIOMONSTER)

Fantastic, thanks a lot for your quick answer ! I'll try this ;-)

Best regards !

RG (aka AUDIOMONSTER)

OK just to be sure I got it well :

I go to the Zxx Macro configurations, I choose a new SF... macro number (like, here, 14 (SFE)), I select "Custom" type, then input "Ccz" in the "value" case ?

And then I can call it in my sequence by SF9 then Z..., like all other Z macros ? (that's what I just did but without any success ;-))

Saga Musix

I hope you meant SFE in both cases. ;) Yes, it should work that way. Note that the macro must be placed on a channel that is used by the plugin (either by playing some notes there or by assigning the plugin as a channel plugin).
I've added an example module as an attachment so you can verify that you're doing everything like I do. I'm using Synth1 as an example plugin but it should work with any other synthesizer as well.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

RG (aka AUDIOMONSTER)

Indeed, it perfectly works in your module, I'm gonna try to figure out why it doesn't in Kontakt.

Thanks again for your time, really appreciate ;-)

Best regards

RG (aka AUDIOMONSTER)

Really weird...

Program changes work with Kontakt when changing the "MIDI Program number" in "Instruments" sections, as I have said before, but not at all with macro, in a sequence...

I also tried other vsti, and same problem...

However, I noticed that the "Synth1" plugin you are using is a bit special : it has a "Receive program change" and "Receive bank select" option to enable or not, in the "option" menu.

When it is not selected, program changes won't work in the sequence...

And most of other Vsti plugins does not have such "enable or not" option, and show their programs list in the "presets" list ("Synth1" doesn't neither)...

Have you tried it with other Vsti ?

Saga Musix

Yes, I've tried the example module with several synths and they all had no problems with program changes. After all, OpenMPT sends the very same program change message when you specify the MIDI program number on the instrument tab - it is sent directly before sending a note. This is just a wild guess, but here's something you can try: Assign your Kontakt instance to a channel that is left of the channel on which you are playing notes. Then move all Zxx effects to that channel. This way, it should be guaranteed that the program change messages are sent directly before any note events. Maybe this will help.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Saga Musix

Quote from: Saga Musix on March 18, 2013, 21:52:13
Yes, I've tried the example module with several synths and they all had no problems with program changes.
In fact, the only plugin that I had problems with so far was the Korg M1, it stays completely silent in that example module because loading a patch seems to take a while (and during that loading process, new notes are apparently being dropped). But that also happens when using multiple instruments with different MIDI program assignments, so it's not specific to the Zxx method. Can you confirm that using multiple instruments with different MIDI programs work as intended with Kontakt?
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

RG (aka AUDIOMONSTER)

Absolutely ! I'm just doing it, right now ;-)

RG (aka AUDIOMONSTER)

(I even can visually see the real-time changing in the Kontakt bank, when swapping from an instrument to another)

Saga Musix

Ok, this is really weird. Just to rule out yet another possible point of failure, are you running OpenMPT 1.20 or later? Versions older than OpenMPT 1.20 would not interpret the "Ccz" macro correctly. Did you try placing the Zxx macros on a channel left of all notes as I have suggested? Are the Zxx macros placed on the same row as notes, or are they on rows between two notes?
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

RG (aka AUDIOMONSTER)

To all your questions : yes ;-) (I always use a specific channel for Z macros, for more clarity) and indeed, I'm using the latest version of OpenMPT ;-)

RG (aka AUDIOMONSTER)

(Obviously, Openmpt does NOT send the same MIDI message when using the program change Z macro in a sequence, than the one it send in "Instruments" section, when you press a note key after having changed "MIDI Program number")...

Saga Musix

I'm a bit puzzled then. I guess I need a bit more time to think about this. One more question... are you working on MIDI channel 0 (first channel)? If not, try using channel 0 instead and see if that changes anything.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.