Conditional Message Type

Imagine you’re writing out a preset for one of your MIDI pedals and you come across a situation where you want a message to be executed ONLY if a specific condition is met. For example, a common thread topic I see in this forum are topics related to scrolling through all the presets on a Strymon MIDI Device. (Let’s use the BigSky as an example which can hold 300 presets)

Currently this isn’t possible (from what I understand), however it would be possible if there was a “Conditional Message Type” that only executes a specified message if a specific condition is met when the action is executed.

Example

In the above example, you could actually achieve this goal with a few simple steps…

  1. Configure a Scroll Counter (let’s call it Scroll Counter A) to scroll through values 80-82.
  2. Implement a preset with the first message being one that utilizes CC Value Scroll to send a CC Message with Scroll Counter A and a CC# of 0. This will act as pressing down on one of the of the three footswitches.
  3. Add another message that also utilizes CC Value Scroll to send a CC Message with Scroll Counter A and a CC# of 127. This will act as releasing that same footswitch.
  4. Add another message also utilizing CC Value Scroll to increase the value of Scroll Counter A by one with wrap-around. This will act as our Scroll Up Preset.
  5. repeat steps 2-4 in another preset except with decreasing the value of Scroll Counter A by one with wrap-around. This will act as our Scroll Down Preset.

Up to this point, nothing is new and this is all possible in the Morningstar Editor’s current state. However, this will only scroll through the current bank of presets… How would one Bank Up or Down automatically???

Conditional Message Implementation

If we were able to add a “Conditional Message Type”, we could achieve this simply with a few steps:

  • Add a “Conditional Message” to our Scroll Down preset that ONLY executes if the following condition is met: Scroll Counter A == 80
  • If the condition is met, send a Strymon Bank Down Message\

Repeat the process with banking up and now you can navigate all 300 presets using only two switches!

This is just one example of what I could see being a massive programming feature that could provide even more possibilities to an already EPIC MIDI Programming tool. I understand that this may be a bit niche of a problem, but I could foresee many problems being solved by adding this feature. Just a thought!!

Cheers to the Morningstar team for the amazing work you’ve already done to bring this incredible piece of gear to where it currently is!!

5 Likes

Card created

A Trello card has been created for this request: Conditional Message Type

2 Likes

@james
Hi,
I’d like to back this request. I’ve actually thought about this, too.
If you are considering this it would be great if it was possible to implement logic operations (AND, OR, XOR) in conjunction with toggle states, scroll counter positions and action types.
For example something like this:

IF (preset A/pos 1) AND (scroll counter 1 < 22) =>
TRUE: execute x
FALSE: execute y

3 Likes

Thanks for the suggestion.

Yes actually we had this idea back when we launched the MC6MK2 but it just never got past the info gathering phase - the need to know how people are what people actually want to use this for. Basically the conditions for IF and the actions for THEN.

The actions would likely just be like

  1. Execute Msg 1
  2. Or, Jump to message xxx.

Happy to check this out again.

3 Likes

Status updated

Card has been moved from Requests to Selected
URL: Conditional Message Type

3 Likes

I wonder if this could also be used to overcome an irritating feature of the EAE Sending V2.

With the Sending, if you send the same program change twice via MIDI it disengages the preset rather than doing nothing, which is probably not what most people want. So when I come to setting up my bank and presets I always first send PC 0 on bank enter and then send the PC I need in the different presets and hope I don’t find a combination of footswitch presses where the same PC gets sent twice to the Sending.

I initially tried to select PC 0 followed by PC X in each preset but I noticed some undesirable effects as the Sending swaps between its presets.

So ideally, if the midi controller could remember the state of a device and then send the PC depending on this state. i.e.

  1. Set a conditional variable somewhere called SV2 and initialize it to 0 to mean PC 0 was sent to the Sending

  2. In each preset, send a PC X to the device conditionally on the value of SV2. If SV2 == X do nothing, otherwise send PC X and update SV2 to X.

BTW, if anyone knows a better way to what I am doing right now, I’d appreciate the feedback.

1 Like

Hi,
how are your presets organized. Do you use toggles and/or shift? If not you could utilize ‘set toggle’ to sync presets that are programmed with the same pc#.
Lets say you got two presets A and B with the same pc#. If you press A the pc will be send and B is toggled to pos 2. Position 2 of B contains the same messages as pos 1 of B but without the pc message. Now if you press B the pc won’t be send again.
Programm a ‘set toggle’ message to all of the other presets to reset A and B to position 1. In case you are using toggles for other stuff, the same thing should be possible when using ‘shift’ instead.

1 Like

Hi @james !!

I understand things have been busy with NAMM, the MC8 Pro, and ML5R releases, etc etc… but I was curious if there were any updates on the progress of this concept? I’ve been periodically checking Trello for quite some time and see that it’s been in the Selected tab since last August.

Any updates?

I have another use case for this (new MC8 pro user): I have two pedals in Loop 1 and 2 of an ML5. I have toggling presets A and B to engange each of the loops. Preset C should engage both loops and set presets A and B to the toggled (pos2) state. Now when I toggle either A or B back off (pos1), I want to also toggle preset C back to pos1. I think this could be done with either multiple toggle (cancel) groups or conditional messages. First iteration could be something like an “IF” selector where you could select the toggle state of another preset. It could be also interesting to check, what the last fired command/message/preset was. But the workflow would be like: define a message like you did before and add a condition, where the message only fires if the condition is met. Full flexibility would come with some kind of logic expression language but this might be a bit to much for most users.

1 Like

I’d also love to have this feature for the following use case:

Presets A and B toggle clean and distorted amp channels.
Preset C toggles overdrive on/off in the loop of ML10X
I want preset A to always have overdrive off for cleans
I want preset B to have overdrive on or off based on the state of preset C

1 Like

I see a dev ticket raised and has been for a while does anyone know if this has been built or have Any workarounds? My use case is with a nano cortex, it has limited signal path so between my clean and distorted channels i need to change nano cortex presets to get the right effects on each state. I have set my MC8 Pro with 2 switches controlling Clean so a PC to set the preset and CC’s to toggle effects for a dry and wet clean sound. and 4 Distorted sounds Crunch, Drive, Lead, Boost. I want to be able to go from any clean to any distorted and any distorted to any clean hence i have the PC mesage as well as CC assigned to all buttons. Issue is the 60ms gap on preset switching, i dont mind if going from clean to distorted i can live with that but i want to be able to hit any of the distorted buttons and only send the PC message if iam going from one of the clean channles, If in the distorted channels I only want to send CC as the distorted options are essentially snapshots/scenes within a presest.

A workaround i am going to try is that when i hit clean it activates a bank on the MC8 to has the clean buttons with no PC changes on them two buttons, but when i hit any distorted button it switches the BANK to an almost identical bank which activates the PC for distorted nano preset and whichever MC8 preset selected (sends CC messages to cortex to match). Then from that bank the Distored options only send CC, but the clean has switched roles and if i hit a clean button it throws me back to the original bank. I think this will work but will have to see if i can set the right toggle states.

I would howvevr prefer to do this cleaner in one bank as there are fewer things to edit if i need to make tweaks but im hoping this workaround is fine :sweat_smile: - Anyone got experience - BTW SUPER new to midi so excuse any potential ignorance

Curious if there have been any updates on this @james. I continue to think this would be an incredibly helpful functionality that would unlock a lot of sophisticated use cases. Hoping it’s still in the works!

1 Like

Want to voice my support here as well. This would be really really huge!

My use-case is I have a couple different guitars and each one has its own amp sim settings (and sometimes other effects). So I want to be able to set a variable that says I’m playing X guitar, then use a conditional message that says if guitar = X then amp = Y else amp = Z. I could duplicate my entire set list a new set of banks so I could use a different set list depending on the guitar but that is a maintenance nightmare.

Thanks for the suggestion! This is a really interesting idea and we can definitely see how a conditional message type would open up a lot of possibilities.

It’s something we’d definitely like to explore, but we haven’t started work on it yet as we’re currently focused on a few other priorities.

That said, we’ve noted this down and will revisit it when we have bandwidth. Please keep the use cases coming because they’re super helpful for shaping how we might approach it!

1 Like

Of course, actual conditional messages would be ideal, but in cases where it’s just two options, I like to offload a command to another switch, where toggle pos:1 is condition 1 and toggle pos:2 is condition 2. This is especially usable if you tend to leave the last page of your bank blank and can afford to throw some junk in there.

For example, let’s say you use PC=1 for your amp sim on guitar 1, and PC=5 on guitar 2. You could have a helper switch that sends PC=1 on press (pos:1) and PC=5 on press (pos:2), and then on your main preset, you call “Engage Preset => Press” on that helper. To sync all the helpers, you could put them in the same Toggle Group, tied to a master toggle that switches between the two guitars.

If it’s more than two, this gets too unwieldy to be useful.

@james
I personally always envisioned it conceptually as an additional tool in the Morningstar tool belt to assist in maintaining and keeping track of the current state of any user’s pedalboard. Conceptually I’d love it if the Morningstar device was all I’d have to press on the board, and I feel that’s the mission of the MIDI control, from what I understand.

Conditional Messages to me, seem to be one of the last remaining obstacles from that being possible. In the current state of Morningstar software, we can track device state with Toggle Groups and Toggle Reset Groups, set the state of the connected devices with PC and CC messages and effect the connected devices live via automated MIDI or expression….

That said, especially with the complexity of effect pedals increasing, different pedals have different functions based on what state they’re in and having the option for conditional messages would allow for a more dynamic control from the Morningstar device that currently isn’t possible.

For instance being able to keep track of the last sent PC message sent to the device is already implemented… Now imagine being able to take advantage of that by having a switch behave differently based on the condition of what the previously sent PC message was and allowing the user to define what that means.

Some ideas for what to potentially track the state of in order to trigger a condition:

  • last sent PC message to specific MIDI channel (either specific PC# or ranges)
  • last sent CC message to specific MIDI channel (either specific PC# or ranges)
  • current state of a specific counter (either specific counter# or ranges)
  • state of a toggle group
  • state of a toggle reset group

Feel free to share other ideas below!!

Additionally being able to track the state of Toggle Groups/Toggle Reset Groups across multiple banks would be incredibly beneficial to my workflow specifically as I describe here and would work in conjunction with my proposition above nicely! Enable Multiple Toggle Groups with *one* Preset