I'm absolutely new in Bome Translator. Have a little experience with SysEx and no programming skills at all. Whatever, I'm trying to create controller from NI Maschine for E-MU P2k (Command Station in my case) arpeggiator.
By P2k sysex manual, for controlling, let say pitch on step 1, first i have to choose that step. Means, for encoder on Maschine i have to create 2 functions:
1) ARP_PATTERN_STEP_SELECT
F0 18 0F 01 55 01 02 02 06 00 00 F7
(step N#1)
Execute it only once, and jump to function
2)ARP_STEP_KEY_OFFSET
F0 18 0F 01 55 01 02 10 06 pp qq F7.
It's probably simple task for experienced Bomers, but i stack in two problems:
1) how to create from one variable in CC value TWO variables in SysEx?
2) wich rule i have to create for "choose step number" only once?
Not knowing the details of either the E-MU, I can provide some guidance but it may not be exactly what you need.
If you need only to send the first Sysex Once (per Bome session), I would recommend you use incoming action as “Project Opened” and send it then.
With that said, what I usually do for my project is hav a “Project Opened” action that sets a timer “Init”. Then I create a number of translators that look for timer “Init” each doing whatever they need to do at project start (like setting global variables, sending initialization sequences etc”. I usually also create an incoming action with a keystroke and output action of timer “Init” so that I can hit that key at any point to get my project back to a known state.
Once you send the Init Sysex, then you can use a translator to look at the CC number to translate to Sysex for your other required output.
Say you want to monitor CC 25 on MIDI CH 1 and capture its controller number and value into pp and qq and pass those values onto a Sysex String
Incoming: CC on MIDI CH 1 CC 25 set to pp Any value set value to qq
Now if you want both messages going out each time you turn the knob, you would create two translators with the same incoming message each with a different outgoing message.
Typically for Sysex, you need to include some type of delay before sending another one so I would recommend you set a delay of 20ms in the second translator.
Good luck!
Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist bome@sniz.biz
For LSB, there are two possible approaches.
1 – Leave it 0
2 – Set to the same value as the MSB
Both should work but the second might give you a bit more accuracy and would cover both the highest value 7F7F and the lowest value 0000 of the 14 bit range.
There are no negative values in MIDI unless the receiving equipment interprets the high order bit as a sign indicator. In this case, I’m not sure what the receiving equipment expects for -52 or any other negative number for that matter.
Yes SysEx Manual
So if the value is -1 then it would be 63 for -2 it would be 62? For +1 it would be 66 and for +2 it would be 66?
Once I determine how the synth interprets 7 bit and 14 bit values, I could figure it out.
Also the parameter are LSB MSB so would need to see that too?
Looks like (from attached text file) it some way upside down…
MSB have only two values – CC from 1 to 64 = MSB 127
CC from 65 to 127 = MSB 0…
LSB goes – CC from 1 to 64 = LSB 81 to 127
CC from 65 to 127 = LSB 0 to 80…
Just looked at your output. My file is wrong, I will have to look more carefully to determine how negative values are interpreted and get back to you later.
Good job, I’m still struggling with how they are internally calculating negative numbers.
Be careful with what you have though yy is actually a global variable. Anything starting g-n and y-z even though it is double y of same character.
Only letters starting with o-x are local.
Also if the output values range is -52 to +48 then that is 101 output range (0-100) from a 128 input range 0-127. So you might want to apply some scaling.
If you want to reduce MIDI traffic, you can have the knob turn launch a timer that only fires the output after a given delay.
Yeah, your log file steered me in the right direction. They have a very odd way of representing negative values in Sysex. Anything negative has MSB 7F in the LSB.
I would have thought they would either only use the high bit of the MSB or the low bit but not all bits.
Glad to have been of help!
Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist bome@sniz.biz