Help to understand how rules work

0
0

https://i.imgur.com/KbXYazW.png

I am trying to set a simple rule scheme as you can see in the picture: if I press a CC in Channel 14, like in x1, then according to the rules, if this makes yy==1 then it should trigger one note, in this case note 12.

If you look at the screenshot though, I’m clearly doing something wrong because the CC triggers even the second note in Y=2, as you can see in the Ougoing window.

Marked as spam
Posted by (Q&A Forum: 1, Answers: 7)
October 26, 2017 2:13 am
77 views

You do not need to tell it to execute the action. It does this by default. It is generally used if you want to execute the action and not process the rules further down the list.

( at October 26, 2017 7:09 pm)
Yes I know that. The rule should be: if CC 102 in Channel 14 is pressed then trigger midi note 24 and 12. And the other rule should be: if CC 3 in Channel 14 is pressed then trigger 26 and 13. How can I achieve this? I want to use rules and not another Translator action for each CC for convenience.
( at October 26, 2017 8:05 pm)
0
Private answer

Without opening another topic: is it possible to assign a controller to another one (for example CC1 is CC2) and then use CC1 to control translators that have CC2 as input? I tried but it doesn’t work because in this case CC2 is sent as midi out, of course.

 

I would like 4 buttons to have the same exact same functions of  other 4 buttons without having to duplicate the translators and then replace every input of these translators (hundreds!).

Marked as spam
Posted by (Q&A Forum: 1, Answers: 7)
October 27, 2017 10:09 pm

Hi, need more detail and since it is a new question can you open it as another topic?

If I understand correctly, you want to do this
CC1 -> MT Pro – CC2 -> MPro -> Output

If this is what you are asking, you will not be able to use BMT Virtual ports to connect MT-Pro back to MT-Pro.
Instead you will have to use a 3rd party loop connector like LoopBE or LoopMIDI (or if you have an older machine, MIDI Yoke). I would caution you need to protect for infinite MIDI loops if doing something like this.

If this is not what you are asking or want further clarification, please open another topic and I will be happy to help.

Steve

( at October 27, 2017 10:26 pm)

That’s exactly what I needed, thank you! I used loopMIDI and it works perfectly fine.

( at October 27, 2017 10:42 pm)

Glad to be of help!

Steve

( at October 27, 2017 10:44 pm)
1
Private answer

One question: if I wanted to exclude from the rules just a range of controllers, like from CC 51 to CC 60, how can I write this in a line or two?

if pp>59 then skip next rule
if pp>50 then exit rules, skip outgoing action
// then continue on
if pp>59 then skip next rule
exit rules, execute outgoing action

Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 27, 2017 5:22 am
Perfect. Very simple but a little bit tricky being used to the more straightforward: if 50>pp>60 then exit rules, skip outgoing action. Also we have to write more lines because there are no logical operators (and/or).
( at October 27, 2017 4:27 pm)

Agreed, logical AND and OR operations are on the close to the top of my wishlist for future improvements. Took me a while to figure out how to work around this.

( at October 27, 2017 5:55 pm)
0
Private answer

DAMN, I managed to do it thank you a lot.

Here is the working result:

 

Rules for translator Note On:

if qq==0 then exit rules, skip Outgoing Action

if pp<11 then yy=12
if pp<11 then xx=pp+23
if pp>10 then skip next rule
exit rules, execute Outgoing Action
if pp<21 then yy=13
if pp<21 then xx=pp+13
if pp>20 then skip next rule
exit rules, execute Outgoing Action
if pp<31 then yy=14
if pp<31 then xx=pp+3
if pp>30 then skip next rule
exit rules, execute Outgoing Action
if pp<41 then yy=15
if pp<41 then xx=pp-7
if pp>40 then skip next rule
exit rules, execute Outgoing Action
if pp<51 then yy=16
if pp<51 then xx=pp-17
if pp>50 then skip next rule
exit rules, execute Outgoing Action

 

Outgoing: 90 xx 7F 90 yy 7F

 

Rules for translator Note Off:

if qq!=0 then exit rules, skip Outgoing Action

(…) same rules as before

Outgoing: 80 xx 7F 80 yy 7F

 

One question: if I wanted to exclude from the rules just a range of controllers, like from CC 51 to CC 60, how can I write this in a line or two?

Marked as spam
Posted by (Q&A Forum: 1, Answers: 7)
October 27, 2017 5:03 am
0
Private answer

Hi I would do something similar to the below. You would only need two translators. One for note on and one for note off. Any edits you do for the first translator, you would just need to duplicate and adjust a few values.

Input Any Controller on channel 1 set pp to controller and qq to value

Rules

// Since you didn’t mention cc 1 I assume we don’t want to do anything here
if pp==0 then exit rules, skip outgoing action
// You didn’t mention anything after 50 so we will skip those too
if pp>50 then exit rules, skip outgoing action
// I assume you only want to send note on if qq>0. If not, modify accordingly
if qq=0 then exit rules skip outgoing action

// Set primary note number 25 for cc1 26 for cc2 etc
xx=pp+24
// Set secondary note
if pp<11 then yy=pp+11
if pp>11 then skip next rule
exit rules execute outgoing action
if pp<21 then yy=pp+12
if pp>21 then skip next rule
exit rules execute outgoing action
//.. continue until you get to 51

Outgoing
Raw MIDI message

90 pp 7f 90 yy 7f

For note off translator you would use qq=0 and change out output to something like this

80 pp 00 80 yy 00

I hope this helps!

Steve

bome@sniz.biz

Independent Bome Programming Specialist

Bome Q&A moderator

 

 

Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 27, 2017 1:08 am
0
Private answer

Each translator can trigger one and only one outgoing action. If you want multiple outgoing actions, there are several ways to achieve this.

 

  1. Raw midi
  2. Timer
  3. Multiple translator

Raw midi multiple notes would be something like  90 24 7f 90 26 7f

In the above example a note on message would be sent for note 24 velocity 127 (7F H) and 26. You could put this all in the same translator

Timer

You could trigger a one shot timer and have one or more translators to monitor for the timer event, each triggering their own action. You could also create a loop with a variable and have the rules modify the outgoing action on each iteration or the outgoing translator.

Multiple translators – Each monitor the same incoming action and trigger a different event.

 

I hope this helps!

Steve

bome@sniz.biz

Independent Bome Programming Specialist

Bome Q&A moderator

 

Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 26, 2017 8:16 pm
Thank you, very interesting. I wanted to use the “rule” option because I have to set up the configuration for 50 remote CCs, and if used the multiple translator option I should have to set up 100 translators instead of 50… not very convenient. So for example take CC 1,2,3,4,5,6,7,8,9,10; they should trigger note 24 and note 12 (for CC1), note 25 and note 12 (for CC2), note 26 and note 12 (for CC3), and so on. Then take CC 11,12,13,14,15,16,17,18,19,20; these should trigger note 24 and note 13 (for CC11), note 25 and note 13 (for CC12), note 26 and note 13(for CC13), and so on. What would you do in this situation?
( at October 27, 2017 12:43 am)
0
Private answer

The way your controller is working, it is sending the value 127 when pressing and 0 when releasing.

If you only want it to trigger a note when pressing and not releasing add the following rule

if pp!=127 then exit rules, skip outgoing action

Steve

bome@sniz.biz

Independent Bome Programming Specialist

Bome Q&A moderator

 

Marked as spam
Posted by (Q&A Forum: 22, Answers: 1001)
October 26, 2017 7:05 pm
0
Private answer

here’s the preview

Attachments:
Marked as spam
Posted by (Q&A Forum: 1, Answers: 7)
October 26, 2017 5:04 pm