Bome MIDI Translator stuck

Hi, so i have made a preset with a math mistake.
This preset activates on project launch. And my project is default - it opens with Bome.
So when I open Bome, it gets stuck…
Is there a way to open Bome with presets turned off?
Or is there a way to edit project file to turn there my fault preset off?

Haven’t made a backup for years…(((((

so i see that there is an option to open .bmtp file…
but there is no info about my fault preset…
it is really strange…

oh, sorry… preset naming in the file goes with numeris order and my 12th preset was on top))

fixed that by typing - Active=0

Hi,

When you close a Bome MIDI Translator Pro project, the preset state will be the same state as the last time you saved the project file.

You can add startup actions (series of translators) that trigger when the project file is opened. See this video on best practices.

Since Perform was introduced, however I now use that instead of a timer.

I have one translator trigger a perform “init” at project start. Then several other translators with incoming trigger of perform “init” as a trigger to handle other housekeeping tasks.

If your project gets stuck when it opens, you can always quickly hit the ‘stop’ button. The keyboard shortcut is SHIFT-ESC.

Steve Caldwell
Bome Customer Care


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

Thank you!

I am facing a strange issue…
I thought that I have made math mistake due that Bome stucks…
But I have not done a mistake. Instead of it Bome just change variables for its own…

Can you please help me and review the project?

Hellem Default.bmtp (36.6 KB)

Here is the project.
The issue is with 10th oreset called SMC - VS.
Turn it on to run it.
The idea is to cycle throu 16 iterations and send out midi notes.
Variable named "‘ve’ need to go from 1 to 17.
And i used ve=ve+1 to uncrease it.
But after 1 iteration - it goes straight higher than 17…

i see that shift+esc was designed to prevent midi loops…

but my case is different - i got rules infinite cycle sometimes whet a variable is set to ve=ve+1 and there is no imiter for that iteration, so Bome just continues to increase the value and stucks…

the only was to fix that is kill the process from task manager, and not to save the project with that preset active. Or if it was saved in active state - disable active state by editing project file in notepad app.

also i see that some variables increases by its own… there are no rules for them to increase… but they are increasing…

like variables for colors:
//purple
vp=7
// cyan
vk=23
// green
vn=4
// red
vr=56

i have spotted that they increases…
(i saw that before Bome stucks)
but why??

and before bome stucked - everything worked fine…
may b i need to reinstall Bome?

Can Bome be damaged by infinite rules loops?

here is my log:

327051 - Activated preset 10: SMC - VS
327051 - RULE 10.0:2 assignment: (pf=3) = 3
327051 - RULE 10.0:3 Perform ‘perf_calculate’, pf
327051 - RULE 10.5:2 expression: (vo=pf*16) = 48
327051 - RULE 10.5:3 expression: (vo=vo-16) = 32
327051 - RULE 10.5:6 assignment: (ve=1) = 1
327051 - RULE 10.5:10 assignment: (vp=7) = 7
327051 - RULE 10.5:12 assignment: (vk=23) = 23
327051 - RULE 10.5:14 assignment: (vn=4) = 4
327051 - RULE 10.5:16 assignment: (vr=56) = 56
327051 - RULE 10.5:18 Perform ‘perf_oct_3_color_set_counter’, vo, ve, vp, vk, vn, vr
327051 - RULE 10.1:1 condition satisfied: if ve<17 then Goto ‘EXEC’
327051 - RULE 10.1:5 condition satisfied: if ve==1 then vs=vp
327051 - RULE 10.1:5 assignment: (if ve==1 then vs=vp) = 7
327051 - RULE 10.1:24 Perform ‘perf_oct_3_color_set_exec’, ve, vs, vo
327051 - RULE 10.1:26 expression: (ve=ve+1) = 2
327051 - RULE 10.1:27 Perform ‘perf_oct_3_color_set_counter’, ve, vo, vp, vk, vn, vr
327051 - RULE 10.1 exit rules, skip Outgoing Action
327051 - RULE 10.2:1 expression: (vu=ve+vo) = 33
327051 - RULE 10.2:2 expression: (vu=vu-1) = 32
327051 - MIDI OUT [SMC-PAD-Bt-DAW]: 90 20 07
327051 - RULE 10.1:2 condition satisfied: if ve>=17 then Goto ‘STOP’
327051 - RULE 10.1 exit rules, skip Outgoing Action

Without fixing your code (because I don’t completely understand it) I make the following suggestions.

When possible use local variables to pass parameters. You are using a lot of global variables and it is unclear whether some translators are overwriting global variables that they should not. As a general rule, only 1 translator should be in charge of changing a given global variable.

You might consider using a repeating timer for an outgoing action instead of perform as perform will only happen once (unless it calls itself in which case, there should be a way to stop it in rules).

On the version you posted there is no continuous loop.

It would help if you documented what each parameter is used for in rules and maybe its intended use also in incoming rules of the perform.

Right now this doesn’t tell me much.

Perform "perf_oct_3_color_set_counter", vo, ve, vp, vk, vn, vr

Looks like vo has something to do with the octave, ve is the iteration number and the rest are colors.

Documenting the parameters and their use, will also save you a lot of time if you come back 6 months later to figure out what you were trying to do.

I assume that you want to iterate through LED’s when the preset is activated to update them all to a given color. Beyond that, I’m having trouble following your logic.

Steve Caldwell
Bome Customer Care


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

The difference between local and global variables is unclear for me - I will dig into, thanks.

The preset I am focused to us 10th. All other presets can be inactive.
So fot 10th preset variables and translators are:

Init - starts the action and tells on what octave the task should be done via pf variable. And send it to pf_calculate

Then pf_calculate defines starting note via vo and 1st iteration via ve
And colors - vp, vk, vn, vr
And sends them to counter (OCT 3 Color set counter)

Counter acts for iteration counts of ve ( in range of 1-16), calculates colors as velocity and send tasks to executor (OCT3 Color Set exec)

That’s all.

So counter increases ‘ve’ on each cycle. But after 1st cycle it breaks. ‘ve’ becomes 2, but rule identifies it like it is >17…
How could it be true?

327051 - RULE 10.1:26 expression: (ve=ve+1) = 2
327051 - RULE 10.1:2 condition satisfied: if ve>=17 then Goto ‘STOP’

I am talking about this

i am following that rule::
pf_calculate - changes ‘vo’
OCT 3 Color Set counter - changes ‘ve’
perf_oct_3_color_set_exec - changes ‘vu’

but looks like it is not the issue

Yes, i use stoppper.
And right now there are no infinite loops.

But at some point there were some - bome stucked - was killed by task manager. Infinite loops were found by me and rewritten. And after that Bome started to act abnormal - it changes variables by its own…

yes, thats clearly all for now - for active translators in 10th preset.

all other presets are not fot this purpose - let them stay incative.
and all inactive translators in 10th preset - shouldn’t be used for now

so the isseu is with 10th preset and 0,1,2,5 translators

Hellem Default - test.bmtp (3.4 KB)

so i have removed all unnecesarry stuff
changed ve to vz - but that doesnt helped…
moved vu calculation to conter - doesnt helped…
and issue still presist
can you execute and share the log please?

mine is:
2407564 - Deactivated preset 0: SMC - VS
2408073 - Activated preset 0: SMC - VS
2408073 - RULE 0.0:2 assignment: (pf=3) = 3
2408073 - RULE 0.0:3 Perform ‘perf_calculate’, pf
2408073 - RULE 0.3:2 expression: (vo=pf*16) = 48
2408073 - RULE 0.3:3 expression: (vo=vo-16) = 32
2408073 - RULE 0.3:6 assignment: (vz=1) = 1
2408073 - RULE 0.3:11 assignment: (vp=7) = 7
2408073 - RULE 0.3:13 assignment: (vk=23) = 23
2408073 - RULE 0.3:15 assignment: (vn=4) = 4
2408073 - RULE 0.3:17 assignment: (vr=56) = 56
2408073 - RULE 0.3:19 Perform ‘perf_oct_3_color_set_counter’, vo, vz, vp, vk, vn, vr
2408073 - RULE 0.1:1 condition satisfied: if vz<17 then Goto ‘EXEC’
2408073 - RULE 0.1:5 condition satisfied: if vz==1 then vs=vp
2408073 - RULE 0.1:5 assignment: (if vz==1 then vs=vp) = 7
2408073 - RULE 0.1:24 expression: (vu=vz+vo) = 33
2408073 - RULE 0.1:25 expression: (vu=vu-1) = 32
2408073 - RULE 0.1:26 Perform ‘perf_oct_3_color_set_exec’, vs, vu
2408073 - RULE 0.1:28 expression: (vz=vz+1) = 2
2408073 - RULE 0.1:29 Perform ‘perf_oct_3_color_set_counter’, vz, vo, vp, vk, vn, vr
2408073 - MIDI OUT [SMC-PAD-Bt-DAW]: 90 20 07
2408073 - RULE 0.1:2 condition satisfied: if vz>=17 then Goto ‘STOP’

the issue it with this:
2408073 - RULE 0.1:28 expression: (vz=vz+1) = 2
2408073 - RULE 0.1:2 condition satisfied: if vz>=17 then Goto ‘STOP’

vz should be <17
but for unknown reason it is >17…

Your outgoing parameters order are wrong on this rule in translator 10.1.

ve should be the second parameter not the first.

Perform "perf_oct_3_color_set_counter", ve, vo, vp, vk, vn, vr

Parameters are passed by value and position.

This was based on your initial project posting.

Steve Caldwell
Bome Customer Care


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

okay, but what is the rule for transfered parameter order?

i have discovered that if i remove
vo=pf*16
vo=vo-16
from pf_calculate
the cycle goes normal way with no issue

yeah, i putted
vo=pf*16
vo=vo-16
back
and changed the order in counter

Perform ‘perf_oct_3_color_set_counter’, vo, vz, vp, vk, vn, vr
so now vz(ve) is on a second place
and it works fine

so what is the rule for transfered parameters order?

i suppose that if translators triggering action is a perform action - so there is a line for parameters. And the order in that line should be exact same as in the line where we call this perform:
Perform ‘perf_oct_3_color_set_counter’, vo, vz, vp, vk, vn, vr

right?

Parameters are passed in the order they are called by value. The order they are called and received should be the same.

You can read the user guide for more information. Press F1 within Bome MIDI Translator Pro and the PDF file with all of the documentation will open,

Steve Caldwell
Bome Customer Care


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