MIDI DESIGNER
The only MIDI controller for iPad, iPhone, and Mac


Talk to other MIDI Designer users about MIDI Designer, iOS MIDI and related topics. Or share layouts, pages, and ideas.

Check out our Facebook Group.

Of course, if you want to send us an email, feel free.

Open problem reports

Summary of user requests
Switching between 2 identical knobsets without using presets? - MIDI Designer Q&A
0 votes
in Advanced by gurbz (2.5k points)
reshown by gurbz
Can you define "switch between two identical sets of controls?" What do you mean by switch?
Well: most ideal would be a sort of morphing between two kind of amp sounds and blending them together, that was my first thought. But my midi controllable amp has not two independent amp sections but one. So I have to switch between 2 settings. As mentioned I could use presets but 2 sets of same controls, controllable on the fly with visible different setting,  is the question here.

So switching between 2 knob sets that control the same parameters and have both different setting. Let’s say set A has all knobs on 10 and set B has alle knobs on 5. How can switch between these 2 sets and settings without using a preset knob?
Let's go with a simple example of two sets, each of which has ONE knob. You have Gain Clean and Gain Dirty, is that right? And they control a different Gain parameter?
Yeah, I can choose which amp to model. Let’s say fender clean and marshall dirty. But the gain knob parameter stays the same
There is an amp model knob, bass knob, gain knob, etc
Let’s stick to amp model knob and gain knob to keep it simple.
Yeah nailed it.

Set it up:

- 2 sets of knobs (subs) and one toggle button for each set with Supercontrol option set to send current value;
- 2 channelchangers, one for each set of knobs, add the knobs as subcontrols and set the channelchangers at two values, 2 ticks, midi 0-1;
- one relative (knob) control that is a super control of the 2 toggle buttons;
- one toggle button as a supercontrol of the relative knob and the 2 channnelchangers. Make one channelchanger as a sub inverted,
- add a simple streambyter output rule to block midichannel 2: B1 = XX +B

I’ll try to make a quick video
One thing though: I get all sysex messages in the log, no one blocked yet. It works now because of sending the right values after each other, I do not see the channelchanger modifying the sysex. When adding an L to the message it becomes to long (16), the amp handles a length of 15 well. How can I solve this last piece?
So: I get the impression that channel changer does not work on sysex messages. Help.
Update: I solved the situation concerning too many parameters to activate ‘send on only’ in both toggle buttons that are supercontrols of the 6 dynamic controls.

Why the sysex stays on the same channel is not solved yet
In the meantime testing how easy it is to dial in a sound. With 20 global presets that’ll be 40 sounds on the fly. Hmm: I could add another row....

3rd row
@teammididesigner: could you help me setup the channel changer correctly for sysex? I got one step further: I made channel changer a supercontrol of the supercontrol button that activates the knobs. However: when using streambyter output script b0 = xx +b I still see all the values being send.
The channel changer can only change L byte of the sysex to something else. It cannot suppress it from being sent. The general idea is that the sysex on a different channel doesn't MAP To anything on your MIDI target. Does that help explain the thought, to start?
Okay, I’ll check that. I created here a group of dynamic controls, the supercontrol is a toggle button. When activating the toggle button, set to ‘send on only’ and ‘send current value’ in menu options as super, the ‘dea tivated’ group gets activated again if i touch one of the sub controls accidentally. What matters to me is that the group of controls outputdata is blocked when the togglebutton is off (and from other group is on)
So the blocking of data is relevant, I’ll check the amp if sound is being altered.

Do you think that a streambyter output rule can be written around the altered L byte?
Yes, but SB doesn't know anything about what's happening inside MD. SB acts on MIDI messages only. So if you can figure out a way to write the rule you want based on the contents of the message, that's the only way to go. Does that make sense?

Personally I don't see why you need the SB rule. The idea is that you change one set of controls from sending an L value that is mapped, and you change the other controls to send an L value that isn't mapped.

Now, that said, you might say, "but they need to get to the same channel!" So that's impossible with one Channel Changer, but you could use two channel changers that are the subcontrols of a another control. One of the channel changers changes the first one, the other changes the second one.

So... a lot is possible, but it's all a hack (and therefore open to experimentation).

Thanks!
Practical: do I need to add the L value to the sysex message? Id yes: where in the string?
The reason you need the L is to alter a sysex string like 1 2 3 4 to 1 L 3 4 so the second byte is either 2 (which is mapped) or ANYTHING ELSE which would then not be mapped. Does that make sense? This is an example.
Already tried some L add-ing before the sysex string, after the sysexstring (after the V), etc. I am not an expert in this: a roland katana sysex string goes like 41 00 00 00 33 12 60 00 00 54 V (excluded F0 and F7) when I added L before the 41 just fell off. Long story short: haven’t got the foggiest where to place, if I can swap it, etc

You mean I should swap the second byte like 41 L 00 or 41 0L 00?

No clue, sorry!
Sorry, there is no concept of channel in sysex, so you need to swap out one of the bytes for the L. Then you need to get the thing to send the message you originally had on one of the channels. Sorry if this is confusing, you're well into the hard stuff here.
Thats fine, not confused but it is uncharted territory for me, I ‘m talking not about stuff I understand yet.

I also thought I couldn’t swap a byte because there unique for each device it controls.
I give it a shot, it is possible that experienced users could give some advice which byte to swap or where to place. I’ll let you know the results.
Ah! I think I understand. L simply changes the sysex so it becomes incompatible! There it was. Right in front of me.
Simple and effective. I do think it is easy to write a SB on that. Just to clean it up. Nice! Brilliant! Thanx!
Example Sb rule for output: F0 41 01 = XX +B
Yes: everything works now and this is a great way to clean up code and go easy on midi buffers.
Coincidence: the amp has 2 fx blocks that look a lot alike. The sysex adress is different. Let say I want to use slider 1 fxblock 1 also for fxblock 2 by altering the sysex adress with a channelchanger.

For example: 41 00 00 00 33 12 60 00 01 70 V must become
41 00 00 00 33 12 60 00 03 7C V.

I then use 2 channelchanger? 41 00 00 00 33 12 60 00 L L V?
With one L being 01-03 and the other L 70-7C?
No, one channel changer per control for now
though I think you can use bit changers in the same way...
You shouldn’t have mentioned that... I tried it! Of course!
But the only values I got changed till now where the V values in the roland sysex messages. Staring now at a interesting mididesigner thread from Brett thedood: https://mididesigner.com/qa/6775/14bit-signed-and-unsigned-midi-data-packets?show=6775#q6775 . Interesting. Anyway, I will edit my answer to this question with the channelchanger update.

1 Answer

0 votes

A matter of relative supercontrol


MIDI Target Manufacturer(s): Roland

Set it up:

- 2 sets of knobs (subs) and one supercontrol toggle button for each set with Supercontrol option set to ‘send current value’ + ‘send on only’;
- one relative (knob) control that is a super control of the 2 toggle buttons;
- one toggle button as a supercontrol of the relative knob.

Setup The channel changers;

- create 2 channelchanger knobs, both are a new super control for each row of sub controls;

- create for each channelchanger 2 ticks, 2 midi values (0-1);

- The toggle supercontrol (which also controls the relative control) becomes a supercontrol for the two channel changers;

- in menu relation --> 'options as a sub',  make one channelchanger 'inverted'.

When you hit the supercontrol you can see both channel changers switch, one from 0 -->1, the other from 1--->0;

Then edit the sysex of each subcontrol, choose a 00 value and replace it with L. Recommended: the first 00 value in the Roland sysex message.

So: 41 00 00 00 33 12 60 00 01 70 V (for example) becomes 41 L 00 00 33 12 60 00 01 70 V.

What does this do: the sysex of the row knobs that does NOT need to be active becomes incompatible with the amp. 

How: the channelchanger alters the L byte. In this case the channelchanger has 00 or 01 (midi channel 1 or 2). When the value 01 is active the Roland sysex message becomes incompatible with the device, the amp.

So when switching between A and B there is a risk of overlapping messages because they address the same values. This is a solution for it.

Then some icing on the cake: add a streambyter output rule (config --> connections) to block this incompatible message so it isn/t even send:

F0 41 01 = XX +B 

# block messages that start with F0 41 01, the last byte is the modified L byte that gets changed by the channelchanger, the F0 41 00 will come through.

This way the amp gets less data to process.

I will upload the updated layout soon.

Downloads: 441
2 preamps - This is the final layout with the channel changer integrated. You will need: - Boss Katana Amp; - Yamaha UD-BT 01 Bluetooth USB-midi host; - an iPad Air 1 and above; - the sensational midi designer pro app. Let me know if you dig this.
Downloads: 441
Images
56898974-6D72-4B99-838C-29DE1A81AFF5.png
56898974-6D72-4B99-838C-29DE1A81AFF5.png
by gurbz (2.5k points)
edited by gurbz
...