Send multiple cc's at the same time

Hi, thank you in advance for any advice. I use BTP to convert midi data to serial and vice versa. I connected 8 motors to arduino that I can manage using the ccs: for example cc n°1 with a value close to 0 causes motor n°1 (M1) to be rotated all the way to the right, values close to 127 makes M1 is rotated all the way to the left. cc n°2 behaves in the same way with M2 and so on. so far I manage everything perfectly through the ableton slots on 8 different channels, this allows me to move the 8 motors simultaneously without any problem. my ambition now would be to transfer this directly to BTP bypassing ableton, this in order to possibly use the 8 engines in ‘standalone’ mode with a boombox. at the moment i managed to create a seesaw (right left) regarding only 1 motor. if I try to apply this procedure simultaneously to several engines, the cc values remain unchanged. basically would it be possible to transfer all the ‘automation’ drawing in ableton to BMT? or even better, would it be possible to record what happens in ableton with a midi capture or something like that and then play it back in BMT without ableton? Thanks again

Hi and welcome back!

My guess is that you are sharing the same global variable with each of your faders which is causing a problem. You will likely need a different global variable for control of each fader position.

If you could post, PM or email, your project file, we can have a closer look.

As far as recording and playback of Ableton, Bome MIDI Translator Pro (hence BomeBox as well) does not have that capability.

Steve Caldwell
Bome Customer Care


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

Thanks Steve, I was on holiday in Iceland for a week and was unable to reply. but I couldn’t wait to try your suggestions. Perfect. using a global variable for each translator I get the desired effect.
________________________________________translator ‘M1’
//M1
oo=0
gt=gt+1
if gt>1 then gt=0

//Calculate note offset: Turn on note
if gt==0 then oo=0
if gt==1 then oo=36
_________________________________________translator ‘M2’
//M2

oo=0
gs=gs+1
if gs>1 then gs=0

//Calculate note offset: Turn on note
if gs==0 then oo=0
if gs==1 then oo=36
__________etc…

//p.s. I started using and modifying your arpeggiator project. otherwise I would never have gotten there.//

I enclose a project in which I have inserted 3 motors out of 8 in which I have developed solutions that allow me to have different repetition times on each motor. certainly there will be more elegant solutions to achieve this, also in function of multiple scenes. the final idea would be to control the robot (the 8 motors are for this) through a launchpad or even better toucosc connected directly to the bomebox if it were possible. Meanwhile, thank you Steve for your passion
prova robot standalone.bmtp (4.7 KB)

Awesome, thanks for posting!

Steve Caldwell
Bome Customer Care


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

Hi Steve, I’ve been practicing a lot with bome midi translator and slowly it’s becoming more and more familiar. I improved the project a lot. my goal would be to automate output control changes at different tempo frequencies. these parameters, as I told you, are used to move 8 motors of a robot. clearly in order to allow for different movements and not always the same repeated ones, I created some ‘patters’ which I called ‘scenes’ in the project and I managed to make sure that once a scene is finished, it can automatically move on to the next one. and so far I think I’ve done a good job. however, (already figured it) I should initialize the cc values ​​with each new scene. I should expect that with each new scene the values ​​of M1,M2,M3 (at the moment I have inserted only 3 motors) should be 0, instead they are rightly out of phase. I didn’t mean to disturb you but probably with your help I could solve the problem much sooner. I would also like to insert an emergency command that would block the motors. I thought of something that can disable all scenes and activate a scene with fixed parameters. do you think it’s a good solution? Do you have any suggestions on how to accomplish this? Thank You very much. Gabriel. (sorry in the project I wrote a little in English and a little in Italian but they should understand each other. thanks again. )
prova robot standalone.bmtp (6.5 KB)

Hi,

For setting all CCs to 0 upon scene change:

I added translators to each Scene to send MIDI Messages for all 3 CC’s and set them to 0. To simplify the process I used a single translator in each scene with a raw MIDI message that sends to all 3 controllers.

For killing all timers:

I added a preset (always on) using the keystroke 5. It also disables your presets, but it unfortunately things start up again, because you have timers that have outgoing delay of 8 seconds. You can’t stop a delay like you can stop a timer. Once it triggers, with a delay, the action will still occur after the delay.
The way I fixed it is to flood kill timer messages (500 of them) and then use a global variable ‘zb’ to disable the preset activation triggers to happen again within each translator on the presets. It may take up to 8 seconds to stop everything from happening.

I’m sure the may be a better way to do this, but this is what I immediately thought of. I use za as a timer counter to disable presets and zb to disable the delayed actions from happening again.

I also fixed something else. To restart the timers you have to deactivate preset 1 and the reactive shortly thereafter because if your preset is already active, the trigger will not occur.
This is in the rules preset.

prova robot standalone-sjc.bmtp (8.8 KB)

Steve Caldwell
Bome Customer Care


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

Just a thought. You cannot kill a delayed outgoing action, but you can kill a timer, so maybe you should instead trigger a timer with an 8 second delay. The timer outgoing action would enable a preset with no delay but since you now have a timer running, you could kill the timer. That way you would not need to set up the extra logic and the kill would be immediate.

Steve Caldwell
Bome Customer Care


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

prova robot standalone-sjc new.bmtp (3.3 KB)
Thanks Steve, your project was inspiring. I delved into RAW MIDI and revolutionized the whole project. the problem was that if some motors are not perfectly synchronized they will surely collide with each other: there are some values ​​that are incompatible with each other. for example when m3=127 m5 MUST be=0 otherwise there would be mechanical damage, therefore writing on a single raw midi string with all parameters compatible with each other undoubtedly solves the problem. now remains the stop of the automated scenes. I need something to break the loop and give me the possibility to manually manage the situation. What did you mean in the last post? A thousand thanks!

Hi,
The attached project illustrates the procedure.

  • The first translator starts a timer that will trigger in 5000ms (5 seconds)
  • The second translator sends the note immediately
  • The third translator kills the timer which means the second translator will never fire.

As I said, you cannot cancel a delayed event but you can cancel an active timer that has not yet fired.

Timer-Cancel.bmtp (1.4 KB)

Steve Caldwell
Bome Customer Care


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