Update Ring LEDs by switching preset
MikeDoor
2020-07-22 22:34:27
Hey,
I wanted to update my LED from rings, after switching a preset. (Akai Apc40 MK II)
When I`m using a timer this don`t wanna run correctly. I wanted to update my LED rings to my takeover values from the knobs together.
For Example, if I`ll go to Channel 1 preset, my Knobs should be stay on this last saved point together with the ring LEDs. If I switch to Channel 2 preset, my Knobs should be switch to this last saved point together with ring LEDs.
I`ve tried to put a timer updater on preset activation with different global variables in the rules. But I can`t figure it out to activate my LEDs on it.
What did I forget to do?
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-23 23:09:21
Hi,
If you post your project file I will take a look. As you switch presets, you will need to send the new values to the APC40 MKII LEDs as CC messages. If you are already doing this, make sure you have your APC40 MKII in the right mode. If I remember, the default Mode is 0 which does not allow remote update of LED rings. I think Mode 1 and 2 both allow for remote LED ring update but Mode 1 allows for both local and remote update. I may be wrong so check the manual.
When you start your project, have it send the following raw message to your APC40 MK2 depending on the mode you want
F0 47 7f 29 60 00 04 pp 09 07 01 f7
Where pp = 40 for mode 0 (the default) 41 for mode 1 and 42 for mode 2.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
MikeDoor
2020-07-24 00:36:37
Hey Steve,
we took this controller to the Mode 2, after start the project by press ESC. So the value is on pp=42
If you take a look to this project, maybe you can remember some parts of it.
I have changed only the ---LED to the new CC message, where I wanted to update the rings from the knobs.
---right are here unedited, so maybe you can better understand, what`s going on here.
You will see, that I`ve changed the CC=51 to CC=101, because I wanted to make my Nudge- and Nudge+ for changing channels of the knobs and update LED rings together, to use them like in the past CC=51 from 1 to 8 with different local variables.
It would be amazing, if the led rings could be updated together with the takeover of my channel knobs.
kindest regards
Mike
Attachments:
Steve-Bome Forum Moderator
2020-07-24 02:15:29
Well I'm not sure why you are updating the rings gy times where gw is the channel number. I think it should always be 8 times for 8 knobs.
Also, it looks like you have the counter for updating the rings wrong as you are not sending the right cc messages for the knobs in question which is probably why the LED's are not being updated.
So when you switch a channel, you need to
- Enable the appropriate preset
- On activate of the preset, put all of LED rings for that preset into temporary global variable space.
- Use timer to update the LED rings based on the temporary global variables
When changing the encoders in each channel/preset, you update the permanent global variable and also send back to the LED the same value of the knob you are turning.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
MikeDoor
2020-07-24 02:45:43
comment
Thank you for taking your time :)
Normally I only should change the outgoing message in point 2-0. This is the efficient difference of all. I have for all temporary knobs and LEDs another global variable. You can see in the line 3-0 (Channel Change)
I can´t understand, why I get LED feedback from the CC=51 in Raw message from point 5-0 with 8 different local variables, but can`t get the feedback, when I wanna change the channel.
Should it be for each knob a seperate timer "on activation" with timer update which brings me the right variable?
So if I have 16 knobs would I need another preset with 16 on activation timer updates which gets the right value from each knob?
It would be nice to get a small example, where I could understand how it works with timers. I`ve tried similar things, this was the last try from all and is only a part of the whole project.
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-24 17:39:59
Hi Mike,
If I find a file that is similar, I will provide, however something of this complexity for new development is beyond the scope of free Bome support. Also it is 10x more difficult to analyse someone else's project file then to use your own. I found several flaws but obviously not all. In general, I usually use the timer's counter global variable and then rules to determine which CC that I need to update on each iteration. I usually start with the highest and work my way down but that is really a matter of preference as long as all of the CC's are correct and each one is updated. The project file looks like something that I definiately was involved with initially, so if I can find what I started. I can certainly send to you again.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
MikeDoor
2020-07-24 21:17:26
comment
Hey Steve, that`s sounds great! :)
Yeah. You made an example for 2 knobs on 2 channels and I could continue for all 8 channels. It works awesome and everything is nice to use.
But for now, I have tried out ableton with the APC40 MKII and have to say, it`s a very powerfull controller with Ableton.
But in User mode I have only 8 knobs as CC in channel 3 is to less for me. So I wanted to expand the knobs to 7 more channels. it would be change in Usermode with Nudge- and Nudge+ different channels with the help of BOME and getting this solved perfect. But the LED updater don`t wanna run as was before for the other project we did.
I can`t understand how the timer works, so I can`t configure it to this point. I`ve tried to seperate all points to find out, how I would get the ring LEDs to the different presets, but I think, this is more deeper than I can understand. Because we made in past the LED update for the 8 channel changer Note: CC51 which are the 8 bright buttons on the MKII.
I wanted to convert the command from this to the Nudge or better to the different presets.
Normally it should run, if I give for my different global variables on the knobs similar to the LEDs from the rings.
Example would be:
If my knob CC16 would have g0 on channel 1 and g1 on channel 2, temporary variable is gz.
So the LED ring would have for example for the same knob h0 on channel 1 and h1 on channel 2 temporary variable is hz.
g0=h0 on channel 1
g1=h1 on channel 2
So the timer would know, that it would update the ring on the same value as the knob value. But I can`t figure this out.
Thank you, for your explanation and I hope we could find a small solution for it :)
The timer is a powerful feature on BOME so far as I can see, but I don`t understand the work from it.
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-24 22:11:59
Hi Mike,
Try the attached. I have it set up for 8 channels with 16 knobs. (128 global variables for knobs)
I use nudge+ and nudge- to change presets. Only one of the channel presets is active at a given time. At activation the temporary variables are updated with the permanent ones and the LED's are updated. Turning the knobs on a given preset (channel) updates the permanent values for the knob.
I use the global variable gc for the encoder timer counter.
I use numerical presets that all need to be put together for it to work. I set the variable gd to offset the first 2 presets which are note channel presets.
I deactivate all presets at startup using a preset timer global variable ge.
Then activate only the channel 1 preset.
The "Update Encoders" timer has rules to determine based on the iteration number, which encoder to update (pp) and the current value from temporary variable (qq).
I do the normal setting to Mode 2 upon Init.
Hopefully this will be enough to keep you moving along.
As usual all of my global variables used are in the Init Preset in the rules under "Initialize Globals" translator.
The Channel Change timer, enables the appropriate preset which in turn sets the temporary variables and then does the encoder LED update.
Have fun!
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
Attachments:
MikeDoor
2020-07-24 23:37:15
comment
Hey Steve,
this updater is amazing! I know my problem now. I`ve tried to do it with the CC Notes not with the RAW capture of the knobs. Of course all knobs have the first same hexa, with 2 other parts which change. So this was the result to could make it happen. I don`t think so, if there`s an other way to run the timer in CC right?
If I take a deeper look I think, it was easy to do for the first part, but without your help I couldn`t solve this in this one.
The new way to change presets is amazing. Don`t know about that`s give an easier way to do it =)
So if I see right, I can use global variables to send them to the presets? How the translator know, that the beginning is on 2? I would think, we need a rule for pp=2 for example and then get it from this point increment and decrement. But never thought that this runs automatic with only two global variables.
Okey, with the global variable to the encoder timer I`m out. This I can`t understand for what it is. But the other things seems to be a logical process, after spending some hours with BOME and your help to get deeper view of functionallity of it, I can understand it more and more.
I appreciate it very much that you take your time and your help with all the questions I had. I think, all the amazing stuff you can do with it. It must be a big fun place to make awesome things with different controllers =)
I think with this project I can combine it with my other project (of course with different global variables) to get it run.
I will give an update when I`m ready with it =)
One thing I´ve found in your attached file, if you will using this project for future: On 0-5 = Update encoders in line "if 00==7 then qq=z5" there should be changed to "if oo==6 then qq=z5" then all rings update perfectly :)
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-25 00:44:09
Yeah there may be a typo or two so look it over and test it closely. I just did a quick run through test but did not test extensively.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
MikeDoor
2020-07-25 02:15:47
comment
Last thing. If I wanna change the channel, the last used knob goes within to the last saved point of next channel.
So if I use Knob 48 on channel 1, switch to channel 2 the knob value from knob 48 on channel 1 goes to the value from knob 48 on channel 2. If I go to channel 3 the other 2 knobs play around the values.
Did you know, what`s happen here?
I`ve could found out, that it could be something with 0-5-update encoders. I think something with the first 2 lines?
Because the timer makes an update from the last knobs I´ve used.
Hope you understand what I mean.
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-25 03:18:34
Hi,
Maybe put a bit more of a delay on the update timer. It is possible the global variable update is not complete in time enough and the last value is updated before the update is complete. If not, just double check my math to make sure I'm updating the right variable in the update timer.
Steve-Bome Forum Moderator
2020-07-25 04:10:09
The error is in the rules of 0.5 "Update Encoders". Corrected rules are below:
oo=gc
gc=gc-1
// Which encoder
if oo==16 then pp=23
if oo==15 then pp=22
if oo==14 then pp=21
if oo==13 then pp=20
if oo==12 then pp=19
if oo==11 then pp=18
if oo==10 then pp=17
if oo==9 then pp=16
if oo==8 then pp=55
if oo==7 then pp=54
if oo==6 then pp=53
if oo==5 then pp=52
if oo==4 then pp=51
if oo==3 then pp=50
if oo==2 then pp=49
if oo==1 then pp=48
// which value
if oo==16 then qq=zf
if oo==15 then qq=ze
if oo==14 then qq=zd
if oo==13 then qq=zc
if oo==12 then qq=zb
if oo==11 then qq=za
if oo==10 then qq=z9
if oo==9 then qq=z8
if oo==8 then qq=z7
if oo==7 then qq=z6
if oo==6 then qq=z5
if oo==5 then qq=z4
if oo==4 then qq=z3
if oo==3 then qq=z2
if oo==2 then qq=z1
if oo==1 then qq=z0
MikeDoor
2020-07-25 13:09:06
comment
Hey Steve, I`ve tested the delay it seems, that this isn`t it. Now it needs more time to change automatic the value of the linked controller. Did I need one more rule for the encoder updater maybe, who let`s stay the current value from the knob and don`t go with the next channel value?
The rules are exactly the same as before, or I can`t see the difference…
Steve-Bome Forum Moderator
2020-07-25 15:46:52
There was one rule that wasn\'t updating encoder #6 on the top correctly. I think you found this already. I tested everything else and it looks like it is working for me.
Which encoder is not updating correctly for you? I guess I don\'t understand the issue you are having.
When switching channels, all encoders will switch channels at the same time. The way it is written you cannot use encoder 1 on channel 1 then encoder 2 on channel 2. You would rather switch everything to channel 2, update encoder 2, then switch back to channel 1 if you want to update a channel 1 encoder again.
MikeDoor
2020-07-25 17:29:21
Hey Steve,
I could only do one screen capture at time, so what you see is, when the knobs go hard down or up, it runs after switching channel with nudge. If I click to the different channels, it happens the same. So it must be an update problem I think or could it give a rule, which holds on the right knob on the position after switching channel? Maybe a temporary problem?
LED rings updating perfect, but when I add translator with outgoing knob messages to link controller. After linking the controller happening this what you see.
I`ve used the takeover rules from the other project to see what happen. And it`s the same, the hard up and downs, after switching channels are exist again.
That`s why I think, that one rule more needs maybe on the updater?
https://easyupload.io/gb88t3
I hope you can understand what I try to say =)
kindest reagards
Mike
Steve-Bome Forum Moderator
2020-07-25 17:56:04
Hi,
What I didn't do is
- Send outgoing CC messages to the application. Right now all I do is update the CC value (and the LED's to those values when switching channels)
- Use the application to update the CC values if changing with the application. You will need to add translators to do this.
So I can understand why it is not working with your DAW.
I looked at your video and it seems that your issues are not with the LED ring update but with writing translators to and from your DAW to update the CC values and the LED's while you are on a given channel.
If you need this, let me know via email and I will provide you a quotation to make this happen.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
MikeDoor
2020-07-25 18:50:38
comment
Hey Steve, so normally I should only use the takeover rules from the MIDImix project and add a new translator, where we did it, but only have to clean up with the correct global variables or isn`t it?
If I can`t figure this out, of course I would write you an email. But I think, all the rules are on my hand, I only need to convert them to the right place.
You know, I only need a small example with 2 knobs and 2 channels, the rest I can figure out alone. Only so I can learn more about using BOME.
It`s more tricky with LEDs as without LEDs. There`s the last step to get this thing to run.
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-25 22:23:20
Mike, make sure your MIDI mix uses different global variables
I'll set up a few translators when I get back to my computer
Steve
Steve-Bome Forum Moderator
2020-07-26 00:34:41
Hi Mike,
This version has a few translator set up for you that not only updates the global variables, but also does the conversion for you. Translators 2.2 and 2.3 for channel 1 and 3.2 and 3.3 for channel 2.
2.2 translates from MK2 to Application same MIDI message same channel
2.3 translates from Applicatino to MK2 same MIDI message same channel
3.2 translates from MK2 MIDI CH 1 to Application MIDI CH 2
3.3 translates from Application MIDI CH 2 to MK2 MDI CH 1
For the remaining, you need to
- Define the appropriate input and output for each translator
- For MK2 to Application, make it MIDI CH 1 to MIDI CH x
- For Applicatino to MK2, make it MIDI CH x to MIDI CH 1.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
Attachments:
MikeDoor
2020-07-26 02:05:41
comment
Hey Steve,
first of all, thank you so much for taking the time again.
I`ve tried the following rules but they don`t effect for me and I don`t understand why.
For example, if I would give the Knob CC48 in CH1 – the global variable g0 temporary gz and in CH2 – g1 and temporary of course gz too.
If I would take the LED ring for this knob on CH1 – the global variable g0 and temporary gz and on CH2 – global variable g1 and temporary gz. Normally the update should be the same aswell the knob. But why this don`t wanna run? It`s the same thing, but one for LED and the other for the knob and they should run parallel together. Of course with some more added rules we did before in MIDImix. Got the same issue with the hard change of knob value…..
I`ve tried another way and made 8 translator each for one LED ring in the current channel without outgoing message and gave them another global variables as for the knob – CH1 – global variable h9 temporary z1 and on CH2 – global variable i9 and temporary z1. Take a rule if g0==gz then h9=qq and this don`t wanna run too. I thought this would be a logical solution, but now I think, I don`t understand the rules. After reading all your informations and all your help it looks like, that I`ve learned nothing…..
Steve-Bome Forum Moderator
2020-07-26 02:56:58
Mike, in MODE 2 the LED rings should update themselves. The only time the temporary variables are affected is when you switch channels at which point you update the temporary variables with the permanent ones for the LED ring refresh. Other than that the CC messages themselves should handle keeping the LED\'s current in real time.
Are you setting your APC40 MK2 to Mode 2 as I did in translator 0.3?
Of course if your DAW doesn\'t send LED ring updates when you move the knobs on your screen then it won\'t work properly.
I\'m testing all of this with Ableton Live and not seeing any issues.
I\'m not using g0-gf for anything . I\'m using ga-ge for other reasons however. Look at the Initialize Globals preset, where all my global variables are documented.
I don\'t remember what i used with your old MIDIMIX project, but again, everything needs to be unique so you may need to change some global variables to merge them.
I\'m using h0-hf for encoders on channel 1 i0-if for channel 2 j0-jf for channel 3 k0-kf for channel 4 l0-lf for channel 5 mo-mf for channel 6 n0-nf for channel 7 and y0-yf for channel 8. Temporary is z0-zf
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
PS, on translator 1.5 make sure the output is going to your APC40 mkII
MikeDoor
2020-07-26 04:46:14
comment
Hey Steve,
this preset is amazing! Thank you so much to made an example for me. It brang me a little bit more to my result I wanted. I`ve got run, every Channel with no issues. My all trys before were lost. You helped me again much out :)
But now I`ve found another problem. I can`t make a workaround for the user mode in Ableton with the MKII. This is terrible! I`ve made a small switcher, to turn on/off the presets from BOME, when I press the User Mode, because CH1 is from Ableton reserved for Pan and Send/Return. So I could made a bridge, which don`t crossed this first 2 modes in Ableton
So far so good. But when I`m change to User mode, Ableton don`t accept my BOME configuration, only the CH3. from User Mode from the Ableton Control Surface Script. It would be another workaround, if I could tell all CCs from CH1 would switch to CH8 and begin from this point till CH16, but it seems, that the User Mode overrides all the messages from BOME, is this possible? I don`t found a script edit from the control surface without another third party software calls remotify....
MikeDoor
2020-07-26 04:54:55
comment
The LEDs update perfect. This wasn`t the issue on the way, only the takeover is my problem. The hard value changes from the other point were the issue, like you saw in the video. I gived up to edit in my project. It don`t want to run correct. But with your help and the preset you send me last, I could figure out the issue. It looks like so simple. But Why I?m sending all channels to channel one? Because there are the temporary variables? Or only because the LED feedback? I can remember we made on the MIDImix everything from Channel1 to the other channel. So the Incoming message was always from channel 1 and then spread to the other channels from the presets. So I think, it`s direct back routing what here happens right?
The translator seems to be right. But I think you mean 0.5 right? Because in 1 only have till .3.
Okey. Also the second way I`ve tried was the better way, with different global variables. But it don`t wanted run too.
I`m very thankfull of all your work and your time Steve.
Kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-26 19:51:35
But Why I?m sending all channels to channel one?Because there are the temporary variables? Or only because the LED feedback?
SJC> The APC-40 LED rings are only on MIDI channel 1, however we transmit and receive to and from different channels depending on which channel you have selected.
I can remember we made on the MIDImix everything from Channel1 to the other channel. So the Incoming message was always from channel 1 and then spread to the other channels from the presets. So I think, it`s direct back routing what here happens right? The translator seems to be right. But I think you mean 0.5 right? Because in 1 only have till .3. Okey. Also the second way I`ve tried was the better way, with different global variables. But it don`t wanted run too. I`m very thankfull of all your work and your time Steve. Kindest regards Mike
SJC> If you want direct update of the LED values (but no the LED rings) no matter what channel you have selected. Then you will need to have a single translator (in a preset that is always one) to receive from the DAW and updating the proper global variable depending on the receiving channel it is coming from. Have the rules look at the incoming channel number and then use a goto rule to dispatch to the right section for your global variable bitmapping.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
MikeDoor
2020-07-30 17:17:37
comment
Hey Steve,
Sorry for the late answer,
Okey. It looks like that in all channels are some other LED feedbacks, but only for the launchpads but of course not for the rings. So I was a bit confused, why this don`t wanted run there. I will take a look to your tip and hope I can figure it out aswell everything, what I wanted in the past I could do with your awesome help. Normally I should change a small line on the APCs script directly, which should help me out, to get open the feature and don`t dissapears in USER mode section. This would be a workaround which should work too. We will see =)
I`m very thankful of all your help to all the topics I had and learning something about BOME`s powerful features. Of course the rules are another thing, but with the last project, I see if I know some rules and know how to work with them, they opens expanded options in BOME. That`s amazing!
Stay health, good soul :)
kindest regards
Mike
Steve-Bome Forum Moderator
2020-07-30 19:22:45
Great, Mike!
Keep me apprised. Yes Ableton User Mode is kind of interested as it has it's own internal mode switching which makes the same knobs act in a different capacity and could indeed confuse MT Pro since it does not have any concept on which Ableton Mode we are in.
In order for MT Pro to see user mode differently, we would need to track the state of the User Mode button and track the led ring values separately in different global variables for user mode then we do for normal mode.
User mode switching in Ableton Live is similar to what we are doing in MT Pro with the various channels but at this point, they will clearly not be in sync since we are not tracking Ableton Live state of user mode in MT Pro.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz