Program Change Issues

I’ve recently sold some gear and I’m down to one single mono synth.

So I thought I would see how creative I could be using program change messages and multiple tracks.

It seems that program change messages for tracks are only sent when the tracks pattern resets.

That means when I mute one track, and unmute another, the unmuted pattern will start to play but the program change message only gets spit out when the pattern comes back around to the start. I’ve only tested this with manual track mute/unmute changes so far. With default settings patterns will start at the current playback position (even if mid pattern) and not the start of the pattern. I know there’s a setting to change the delay time between unmuting and playing. For me I think it’s set to 1 bar.

It really would be more realistic to have the program change message sent when the track is unmuted.

In addition, with my synthesizer at least, because the program change message gets sent out EVERY TIME the pattern resets, I can’t live edit params on the synth and have them stick for more than the rest of the currently playing track pattern. The pattern restarts, the program change message gets sent out again, and the preset is loaded.

There’s very little info about program change technicalities in the manual.

Is there a setting I’m missing? Can I achieve program changes only when the track gets unmuted and not every time the pattern starts?

Without having tried, one idea comes to mind. You could dedicate a separate one-shot track that you sequence along with the track changes on the melody whenever you want a program change.

Sucks having to dedicate tracks just for that.
I think it would be nice to be able to be able to choose per-track program change behavior. And if not per-track, at least as global option in SETTINGS.

Do you have your Program Changes programmed at only the start of the track? If so, it’s not surprising that it waits until the start of the pattern since Program Changes are treated like any other CC - If you really want it to do the change regardless of where you are in the track, you could try is placing a program change message on each step, or at least more frequently spaced out than once in the track. I know it seems annoying, but this way of doing things is actually pretty nice if you’re doing more complex program changes - I use one of my monosynths to play Kick-Snare-Hat patterns via rapid Program Change automation since it changes instantly without sound interruption, and if each track had a dedicated program it would make this type of automation impossible.

As to live-changes, sadly program change messages will reset most synths to their preset settings. That’s more of a synth problem given the current implementation of Program Changes. You could try dabbling in CC-automation to overcome some of this, or perhaps you could make your tracks a lot longer via copy and pasting, and only include the Program Change at the start, but that doesn’t solve the first problem.

The one-shot idea that @maximee suggested is also quite clever, though it does waste a track/tracks - it’s up to you if it’s worth that, but I think it’s a decent compromise since you have 64 of them + patterns.

I suppose Pyramid could include an option for per-track program changes that played when the track was started, but I would really hope they allowed us the option of using the original behavior as well, since I quite like the no-nonsense way it is set up currently.

2 Likes

Currently I’m using the program change feature thats attached to each track - in the same menu in which you enable patterns for a track. I find CC automation kind of clumsy on the Pyramid and prefer to use synth’s LFOs and other modulation features primarily. So far I’m just using the Pyramid to sequence MIDI notes.

I wasn’t aware I could sequence Program Changes mid pattern until just recently. I saw this video and it seems like too many steps to do this regularly. At least for my tastes. And with no way to really copy all three sets of values it just doesn’t seem ideal.

I’ll keep playing around.

1 Like

I actually wasn’t aware tracks had a program change mode - I guess that means that Squarp is already halfway to implementing what I suggested in the last paragraph then, they just need to make it work like you suggested.

Sequencing CC’s isn’t that bad really, especially since 2nd+Encoder turn helps you rapidly scroll through values, and the results can be really really cool, neater than anything the LFO can do. You should try giving it a shot for Program Changes, since it could help you get what you’re looking for (or something closer to it). That video makes it look a lot harder than it is.

1 Like

did you ever figure out parameter reset issue?

I’ve been going through the same thing with my Dave Smith Mopho. My work around is setting the Synth to relative mode, which means the parameters are as the knobs are set. This is annoying if I’m changing programs though, because my presets are out of whack.

I just bought a used Pyramid MKIII and I spent an entire day figuring out how to use the step CC messages to change the bank and preset on my JV1080. So I got it going and it works great when in sequence/perform mode. As soon as I build a sequence and put it into sequence/play mode it doesn’t work at all.

I have patterns enabled so I made a pattern for the JV1080 track that is sequenced to come in a couple of bars early and is unmuted but has no notes so that it will trigger the preset change on the JV1080 before the pattern with notes starts. I was worried that the pattern change would cause the beginning of the first note to get cut off. But it still isn’t changing the preset in sequence/play mode.

Does anyone use this feature and have any tips for me?

Hi @leatherfacemc, I haven’t used program change messages on Pyramid but I have a feeling that maybe the issue you are having may have something to do with the way Pyramid continually loops patterns, when the sequence(s) change and the run modes you might be using. For instance, if you have patterns that are all 4 bars long in the ‘free’ run mode and you change sequences/patterns at 6 bars, the pattern you change to will be half way through its loop (and so you would miss any MIDI info it contained in its first 2 bars). Really Pyramid should behave the same in Seq Perform as in Seq Play modes as long as the performed sequence changes were done at the same time (relative to the start of the project) but it’s possible that there was some reason why it was behaving differently in your situation (like some setting you have in the settings menu or something).

Can you give us some more specifics? Stuff like the run modes and pattern lengths you have going on and clarify whether the patterns that you have for the program change and the notes are separate patterns or not (how many sequences are involved)?

Hi @hoofjaw,

That is a great educated guess. However, I had already run into that run mode/free issue while trying to build a sequence early on and now I have all of my tracks run mode set to Relatch. At least for what I am doing on this project so far.

Here are details that you asked for:
-My settings are all the default settings that I reset by holding “FX” while powering on the unit. I did that first thing when I got it. I have only had this unit for about a week. I have tried some fixes in settings but one at a time and I reset them back to default after they didn’t work.
-Run modes for all of the tracks in this project are set to Relatch so they start at the top when a sequence is triggered. No free run.
-I am using 5 tracks. One each for a different synth. Inside of the tracks I am using patterns. The lengths of the patterns vary but like I said, all of the tracks are set to Relatch which starts them at the top every time a new sequence is triggered. Also, the particular pattern that I am trying to use to change the preset on my JV1080 is a blank pattern except for the “CC Messages” for MSB, LSB and Program Change messages to change the preset. It is 16 bars long because the other pattern that is playing on a different track is 16 bars long. I created this pattern for the sole purpose of changing the preset. So the blank pattern with the “CC messages” is activated and unmuted in a silent part of the song, for that track, so the program change can happen and has time to load before the next pattern sequence with actual notes comes in. That way the first note doesn’t get cut off while the patch is loading. I do this with my effects on my guitar rig and it works great. No lag because the patch is already where it needs to be before I activate it.
-So the pattern for Program Changes is a separate pattern from the pattern with Notes. They are both on the same track which is the track 2 for the JV1080.
-I only have seven sequence steps, I guess you would call them, so far on this track. Very basic and not a lot going on.
-I am using the USB from the pyramid going into the USB slot on my Conductive labs MRCC midi controller. The midi info is then pushed to the JV1080 from the MRCC also using USB. Just wondering if maybe there is some setting on the Pyramid that turns off the CC Program change messages in play mode that needs to be activated? The manual doesn’t cover this specifically in any detail. Most of what I have learned is from YouTube.

It is strange to me that when in perform mode the preset change works but not in play mode. There is one more thing…I was putting the program change on the first beat of the pattern initially and then I thought maybe it wasn’t getting enough time after the sequence unmute to grab the message so I deleted the program change message on the first beat and put it further into the pattern on the 3rd beat. That still didn’t change anything.

I can’t be the only person the has run into this. Since the Pyramid is reset to its default state and it seems like it should be very simple to do. The only reason I was trying to do this is so I don’t have to write down the presets for all of the synths so I can load them when I load a project. It would be great if they just change to the correct preset when I press play on a sequence. But if I can get this to work in Play mode then it would be great for changing bass sounds, lead sounds, drum kits, etc. during the course of a song.

Thanks for the reply.

I am stumped, I think. At least for now, I’m afraid. It has got me intrugued, though, and I think I will be seeing if I can or can’t replicate this issue with my gear when I get a chance.

It does seem odd that it would work in Perform mode but not Play mode, the way you have things.

Are you running the newest 4.03 version, of the PyraOS firmware (I assume you are but just in case you weren’t…)? The website page where you download it mentions that it contains a bug fix where patterns other than P1 were not sending out Prog Change messages. The list of bug fixes is not very detailed so I wonder if there is a chance that this bug only happened in Seq Play Mode. From other related Pyramid topics I have read on this forum I assume that this particular issue couldn’t have been occuring to users who posted and I suppose maybe that they didn’t use the Seq Play Mode. These topics/posts were from before the last firmware update, and were from about 2021. These are those topics:
https://squarp.community/t/any-tips-for-using-program-change/6078
https://squarp.community/t/program-change-behavior/5635

In case you don’t know, the firmware version that your Pyramid has should be displayed when it boots up. If you miss it (it’s easy to miss) you can check it in Settings/Info/PyraOS Version. There are some MIDI Out monitor pages you can get to from that part of the Settings menu too. These may help you check whether the Prog Change messages are being sent out at least.

You probably have found this out already too, but there are a couple of ways to affect a Prog Change with Pyramid. The Step mode one (like you have used in that Pattern) and one that you access in the Track Options page (2nd + TRACK), the page where you can also do stuff like enable patterns, set run modes, etc. I think setting MSB, LSB and Prog Change here will act a bit differently. It seems that when you do it this way it will send the Prog Change message whenever you change patterns and it sends it at the beginning of a Track when you press play (so it’s the one people tend to use for remembering their synth presets). I wonder if this could possibly point to something that relates to your issue. Could there be conflicting messages in your Project? Again though, why this shouldn’t be a problem for you in Perform mode too would still be a bit of a puzzle.

It seems that Prog Change messages can be a bit problemmatic or at least awkward with some MIDI gear (it seems to create more issues than other CC messages, I think). I get the impression (from forum posts) that Roland gear plays pretty well with Pyramid generally. So, I’d still be fairly hopeful that you will find a solution.

I think there are a few things I might try while I was waiting for a more helpful post on here, If I was you:

With the Project you have;

I might try placing the MSB, LSB and Prog Change messages on separate steps, just to ensure they were sent in the intended order.

I might try shortening the CC Messages Pattern on T2 (i.e. to 4 bars), so that it sent out a few repeated Prog Changes during the Sequence just to see if that made a difference. Perhaps some messages just fail, for whatever reason. Then I would maybe try to not send all three (MSB, LSB and Prg Chg) on each occasion, perhaps delete the MSB/LSB messages on the latter ones, maybe try a few combinations. It may even be that sending the same MSB (or LSB) out repeatedly confuses things, so maybe try just sending the messages that change (this might just be Prg Chg, or LSB and Prg Chg).

I might try using the Free Run Mode on the CC Messages Pattern, and maybe the one that followed it, and maybe even try ‘joining’ the patterns (still in Free Run Mode) and see if that made a difference.

I would then probably try setting MSB, LSB and PRG CHG messages in the Track Options Page, for at least the same two Patterns, but maybe start with the one that follows the Step CC messages Pattern.

I’d also probably try starting a New Project, and keep it as simple as possible (at the start). Set it up to Play a couple of Sequences with a couple of Patterns on one Track. Basically doing what you are doing, with a couple of MSB, LSB, Prog Changes inputted in CC Messages Step Mode. Try changing from Seq Perform to Seq Play and vice versa. See if you get the same issue. If you don’t, work towards something like what you have in the Project you have there and hopefully this process will shed some light on where things go wrong (which might of course have been right at the beginning!!). I’d be tempted to start here rather than the previous suggestions.

Another thing to try, of course, is whether this issue happens when sending MSB, LSB and PRG CHG messages to your other synths.

These are probably all likely to fail, but the hope is that some inkling towards a reason or solution might arise. It’s a long shot, but maybe this sort of thing is worth a try. It’s quite possible you will have tried some of these things already, so apologies if any of this this is old hat.

Good luck!

@hoofjaw Thanks so much for taking the time to dwell on this issue. I haven’t figured it out. Some other things have taken precedence so I haven’t been able to try any of your suggestions…yet. If I figure this out I will come back here and post it.

@leatherfacemc I have tried out a simplified version of your example on my Pyramid (with PyraOS 4.03 firmware installed) and it works the same whether I am in Seq Perform or Seq Play as long as when I’m in Seq Perform mode I perform the sequence change after the automated Program Change (PC) message (I presume this is what you’d want/expect to happen). I am not finding that it works in Seq Perform mode but not in Seq Play mode. I’m not sure why you are getting the results you are getting (I don’t seem to be able to replicate them). Here’s the method I used, which I think should work, and if it doesn’t I think it would be due to some other setting you have or perhaps the firmware version you are running:

I just had one track (T1) with 3 Patterns (P1 - P3, the run mode for each is set to Relatch).

For P1 I set a PC using the Track Options page/screen (2nd + TRACK). This means that Pyramid ‘remembers’ the correct bank and preset on my synth for me (I could have also used CC Step mode to ‘automate’ this - more on this later). For ease let’s just say I set the appropriate PC/MSB/LSB numbers for preset 1, bank 1 on my synth. P1 also contains notes.

P2 has no notes. It contains automation only. By the way, my synth does not require a MSB CC message, so the automation (CC Step mode) I used consisted of just the LSB and PC CC automation (your synth may reqire an MSB value inputted too). If I ‘program’ new LSB and PC CC values at, say, beat 3 of bar 1 this results in the ‘automation’ running the entire length of P2. It behaves the same as if I’d set the bank/preset change using the Track Options page. And for both Seq Play and Seq Perform modes, going from P1 to P2 results in a bank/preset change at the time as when the Sequence change happens (at any point in the Pattern). To have this change actually happen at beat 3, bar 1 (of P2), I would need to input 2 sets of LSB/PC (or have had the PC//LSB set the same as P1 in P2’s Track Options page). I would need to input the same LSB/PC CC values as P1 at, say, step 1 of bar 1 of P2 and then ‘automate’ (program) a change at beat 3, bar 1 (of P2) using the CC Step mode. Basically, P2 needs to be set the same as P1 at its ‘start’. So if you were using CC Step mode only, you would need to input the appropriate bank 1/preset 1 CC messages at beat 1, bar 1, (or at least somewhere before beat 3) as well as the CC messages for (let’s say bank 2, preset 2) at beat 3, bar 1.

P3 contained notes but it contained no LSB/PC messages at all, though if I had used any I would have needed to ensure I’d used the same CC values as I’d inputted at beat 3, bar 1 of P2.

Oh, and I probably should say, that I used 3 Sequences (S1,S2, and S3), one for each pattern, to sequence or ‘perform’ the Pattern changes.

Summary:

If you just used the Track Options page to set the PC/MSB/LSB values for each Pattern it should ‘work’. That is, at least, to change bank/presets on your synth with each sequence change and this should work the same whether you are using Seq Perform mode or Seq Play mode (I think this would be a good place to start as a test. If a simple Project like this doesn’t behave the same for both Seq modes on your Pyramid then I suppose the issue must be due to something like a Setting).

If you do need a change to happen mid-pattern then you just need to make sure that the pattern ‘starts’ with the same MSB/LSB/PC as the previous pattern so that the ‘automation’ you input is actually automating a change (from something else). Entering one ‘automated’ CC step at any point in a pattern that contains no other MSB/LSB/PC information will act the same as if it had been entered on the first step of the Pattern or if it had been entered in the Track Options page (i.e. the CC values run throughout the whole Pattern).

I hope that is of some help to you.

Wow! Thanks so much for the help. I can’t wait to try this when I am back at home. I set my PC/CC preset changes up in the step mode by holding step and turning the encoder to the right to get to the program change messages. Maybe that is the problem. I believe you mentioned that in your previous response about trying to set them up in the track options page. I still haven’t had a chance to try any of these with my pyramid. I’ll be home in a week. Looking forward to it.

Thanks again!

It’s a pleasure. I like to try and help if I can. What goes around comes around. And I was intrigued as I haven’t used PC messages on Pyramid as yet. I was interested because clearly they work a bit differently to other CC messages.

You can use either method (Track Options or CC Step Mode) to enter the bank/program change messages. The Track Options method applies the bank/program change to the whole pattern and if you go to the CC Step mode and look for the messages (by pressing Display) you won’t see anything there for any of the PC, MSB, or LSB CCs, you’ll just see the ‘no automation’ message.

if you use the CC Step mode method to input just one set of values it will also apply to the whole Pattern, but if you press Display (from the CC Step mode page), I think you will see a continuous line for each CC that you have entered in (if I remember correctly). But it will be just one line (one value) and it will span all the steps of the Pattern. And this will be the case no matter which step you inputted the CC value on. You will only see a change in the Pattern Display when you input a second (different) CC value on a different step (you should then see a typical ‘stepped’ automation line on the display).

You will need to use CC Step Mode (at least once) if you want to have the bank/preset change to occur at a specific point in the Pattern. And you may well want to change mid-pattern as the Track Options method doesn’t ensure you won’t get those ‘noisy’ changes either (this depends on how close the notes are to the change and what sounds your synth is playing). So I think you’ll want to use it at least once in that Project you had going. You may find it suits you more to use the CC Step mode method for more, or even all, of the bank/program change messages - I guess that will be a matter of personal preference although there may be instances where one method works better for some specific case.

But you could use the Track Option method to input the bank and PC messages for the Patterns where they’re needed (it is probably a bit easier), but just remember that for your ‘silent’ Pattern you should set it to the same values as the previous Pattern. Then use the CC Step mode on that Pattern to input the new bank and PC messages on the step you want. I think this should now display as a typical stepped automation in the CC Step mode Display page despite there only being one change inputted in the CC Step mode (though I may have to check that).

Okay. That is a lot of information and I am not a pro with midi, PC and CC messages. Haha. Just trying to wrap my head around all of this. So is CC Step input what I have been doing? Press step button while turning encoder to right to choose program change. Where I put in the MSB, LSB and Program Change messages.

It would be great if there was a video tutorial for this kind of thing. I thought it was pretty straight forward at first but it seems to not be as quick and painless as I thought it might be. Once you know how to make it work in all modes it’s probably not difficult but getting there is the issue. Different ways of inputting the same information is confusing but probably needed for certain uses and applications .

Trying to comprehend it all without my pyramid in front of me is difficult.

Thanks!

Yes, that’s right.

It is confusing, I agree. I think there probably are use cases where one way works better than the other. The Track Options page allows you to see each value (PC, MSB and LSB) at the same time, so it’s easier to be sure (and check) you have set all the values correctly. If you want some automation (to change a PC mid-pattern) then you realistically have to use the CC Messages Step Mode. It may also have something to do with the way Pyramid developed. I get the impression that there probably weren’t PC, MSB and LSB Track Options originally and they were possibly added primarily as a convenient way to set your synths presets up at the beginning of a Project. I’m not sure why a single PC/MSB/LSB message on a step applies to a whole Pattern, but I suspect it has something to do with the way Pyramid loops and is able to do polymeters and polyrhythms with on the fly muting and unmuting. Or maybe it just needed to work like that to tie in with the way it worked with Track Options.

And yes, absolutely. I think that will be a lot easier once you can see it all in front of you. I would recommend using the Display button, if you haven’t been already, to see what you are inputting in CC Step mode.

Pyramid takes a bit of getting used to generally anyway, I think. It seems to me that you are making good progress.

it does look like a lot of information but there is a lot of repetition in there, I’m afraid. I’m really bad at being concise (in case you hadn’t realised!).

I’ve had a bit more of a play with doing bank and program changes today and I think exactly how you decide to go about it may depend on quite a few things, but in terms of how ‘smooth’ and unnoticeable the transition will be, it will probably mostly depend on the release time (but probably also the attack time) of the sounds you are changing between. If the PC/MSB/LSB change happens before the release time has elapsed you will probably hear the change. However, if the following sound is more percussive (has a fast attack) and the PC/MSB/LSB change happens at the same time as (well, an instant before) the note message then the change may well sound alright even if the previous sound has not completely faded out. Some sounds will be less suitable than others (though there are often other ways around it like using other CC messages - Volume, for instance). In an ideal world you would have enough multi-timbrality and MIDI channels available to not need PC/Bank changes at all (other than to ‘remember’ and ‘dial up’ your presets initially) because they can be a bit awkward.

Thinking of your Project, though, because you have a long silent Pattern where you were trying to affect a change I think that you might be able to just use the Track Options page for the initial Pattern, then input no bank or program change data at all on the ‘silent Pattern’, and then use the Track Options page to input the desired PC/MSB/LSB messages for the Pattern that follows that. It seems like using the Track Options page for PC/Bank changes will put the change before any note messages (if it is on the same Track*). So presuming the initial sound doesn’t have a really long release time this might be the simplest and most reliable way of doing it for that particular Project of yours. My feeling is that a ‘noisy’ PC/bank change has more to do with cutting off the initial sound than the synth not ‘loading up’ the new sound in time, but I could be wrong (I am basing this on the tests I’ve just been doing with just one synth, a DSI Mopho, so it’s not what you might call ‘extensive research’ by any means).

*You can use a separate Track for the PC/Bank messages if it uses the same MIDI Output and Channel as the notes Track. But if you use a Track with a higher Track number (i.e. T2 for PC/Bank messages to change sounds for the notes on T1) you may find that the change comes too late for notes on the first step (or the same step as the PC/Bank change). I think if you were to use a lower numbered Track (i.e. T1 for PC/Bank messages and T2 for note messages) it may work fine, though I haven’t tested this out yet. I have found that I needed to Offset a note to get it to sound properly when using T2 for PC/Bank messages (using the Track Options page) and T1 for note messages. When I reverted back to using T1 for both notes and PC/Bank messages I didn’t need the Offset.