How do I send multiple CCs from one physical encoder to the same output simultaneously?

Hi,

I’ve been converting a mapping project from Midi-Ox to Bomes MT Pro, but am stuck on something relatively simple.

From a midi controller with 8 accelerated relative encoders, I need each encoder to always be sending 5 different CCs (also with relative and accelerated values) in addition to the original CC.

I’ve managed this for one additional CC but can’t get any more than that to work.

 

The output for the 5 extra CCs needs to be reversed because using a straight translation makes left turns output right turns and vice-versa.

All 5 additional output CCs need to go to the same virtual port as the original messages (that port being used as an input to my DAW).

I can only currently achieve this for one extra CC – any more than that and the DAW hangs requiring a restart.

 

My guess is that perhaps there needs to be some micro delay between each CC set, but it could well be that I’m just missing something basic!

 

I’ve tried various different setups but nothing is working.

 

The working translation is set up like this (with a value of 0x41 being a left turn and 0x01 being a right turn):

 

Translator 1 Incoming: Raw midi, B0 pp 01 - Outgoing B0 rr 41

Translator 2 Incoming: Raw midi, B0 pp 41 - Outgoing B0 rr 01

Translator 3 Incoming: Raw midi, B0 pp 02 - Outgoing B0 rr 41 B0 rr 41

Translator 4 Incoming: Raw midi, B0 pp 42 - Outgoing B0 rr 01 B0 rr 01

Translator 5 Incoming: Raw midi, B0 pp 03 - Outgoing B0 rr 41 B0 rr 41 B0 rr 41

Translator 6 Incoming: Raw midi, B0 pp 43 - Outgoing B0 rr 01 B0 rr 01 B0 rr 01

 

Etc, ending up with 17 translators.

Each translator has the following rules:

 

if pp <16 exit and skip; if pp >23 exit and skip; rr==pp-8

So the source CCs are 16-23 decimal with the translators acting only on these, and I get an output of those original CCs plus a simultaneous output of CCs 8-15 decimal,

with CCs 8-15 having the full acceleration of the originals and the correct turn orientation.

 

All good so far.

Now I want the same thing to happen simultaneously for another four sets of 8 CCs.

 

If I simply repeat the above (so another 17 translators directly after the first 17) with a modified rr value to represent the new CCs, for example rr==pp+40, it crashes.

 

If I interject the new sets of CCs between the first ones, eg:

 

Translator 1 Incoming: Raw midi, B0 pp 01 - Outgoing B0 rr 41 (with rr==pp-8)

Translator 2 Incoming: Raw midi, B0 pp 01 - Outgoing B0 rr 41 (with rr==pp+40)

Translator 3 Incoming: Raw midi, B0 pp 41 - Outgoing B0 rr 01 (with rr==pp-8)

Translator 4 Incoming: Raw midi, B0 pp 41 - Outgoing B0 rr 01 (with rr==pp+40)

 

Etc

It also hangs.

(Note the DAW hangs, not Bomes).

 

I also tried it using a different local variable for each CC set but this doesn’t fix it which is an expected outcome anyway right, as the variables are local to each translator and shouldn’t affect any following translator?

 

I also tried it using a different preset for each CC set but this doesn’t work either. I don’t want to go in and manually change all these translators to global variables unless I know for sure that will solve the problem, but unless there’s something I’m completely misunderstanding, that shouldn’t make any difference.

 

This is driving me crazy, so many thanks in advance for helping me sort this out!!

Hi,

I took a different approach and am using  a few global variables with timers.

I capture the incoming value in the lower byte and the CC in the upper byte of global variable ga (for 16-23).

I strip the upper nibble of rr to determine the count and then use rules to only allow for 3 or less.

I maintain the upper nibble in ga so that I later know whether to sent 0x41 or 0x01 values in the timer.

The timer executes the value of rr times with no delay between iterations.

I do the same but use global variable gb for 24-31

You can duplicate and use for any other sets of 8.  Actually you could just have 1 translator to handle all 4 sets of 8 if you want to do that although there must be  reason you are setting them up in groups so maybe not.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz


Attachments:
1596388285789_multiple-cc-2020-08-02.bmtp

On your original post you said you have rr==pp+40. So see if it is red in the rules as I believe it should be single equals rr=pp+40.

Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz

Hi there Steve!
I originally posed the question asked by Daniel as I’m trying to help him get a mapping sorted (for macOS 10.15) that I originally created in Midi-Ox for PC and MidiPipe for pre-Catalina mac users.
Re the double ‘equals’ , no it’s not in red, that was just a habit on my part, it’s entered as a single ‘=’ in the actual mapping.
There’s no reason I suggested the way I did other than it was an awkward and clumsy attempt made without reading the manual!
Thank you for the .bmtp example, I have some very product-specific questions about integrating Bomes with another product - could I email you directly?
Matt

Hi Matt,

You can email me directly, however depending on the scope of support you need, it may need to be paid service. Free support is usually restricted to Bome Forum activities.

 

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thanks Steve, email sent, it's not a support-based question don't worry!

In relation to this question Steve, thank you for the insights.

I'm a programming n00b so I have some learning to do to fully understand the logic (I had to go to Wikipedia to understand what a XOR gate is/does for example), so once I grasp the maths I will be able to put your information to good use.

I can see how powerful MT is in relation to other apps and am looking forward to getting to grips with it, but I have some homework to do :)

 

 

Yeah, actually we are all on learning, just at a different point.

I’m actually using OR and not Exclusive OR in this case. I also use AND to mask bits.

The user manual (F1 or Help in MT Pro) describes all of this stuff but not necessarily how to apply it for real word situations (which is where I come in).

Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz