I am looking for suggestions on how I should approach a project for Resolume. I’m wanting to set my 8×8 buttons to send midi notes “ON” to trigger clips 1-8 and receive LED feedback to signal the clip is active or when the clip is effected which would turn the LED off. I want to be able to enable 2-3 different toggles so I can hit clips 9-16, 17-24, etc. I’d like to be able to switch through these toggles and see any clips in a different “toggle group” either still on or off depending on the assigned clips status.
I was able to create a project where I set the proper global variables and created a preset for clip columns 1-8 (midi channel 2 out ) and one for 9-16 (midi channel 4 out). I also created a shift button preset. I have my shift for 1-8 set to channel 3 and 9-16 to channel 5. I have those buttons mapped to send clips to preview when shift is held in both 1-8’s preset and toggle mode. I have my toggle button setup to activate/deactivate presets when enabled (not sure if that is the best way to do it)
My current project is decent to get me started, but having LED feedback between toggles would go a long way in live environment.
I’m also considering setting all of my LEDS to be on all the time and to have them blink when a clip is active. I just don’t want to get to ahead of myself until I can figure out the LED feedback between toggle modes.
Can any one help in giving me some direction on how I should get this setup? (Bonus points for the blinking feedback option)
Running Resolume with a Livid OHM64 (not the rob one)
Marked as spam
This “kind of works”. Not sure why Resolume is adding another note above the other though,
In Resolume I just mapped the first three clips of layer 1 bottom left are preview Monitor . Ones above are Output Monitor.
I disabled any mode retention but left the capturing the LED state in place (only when launching from the controller). We will need to figure out why Resolume is doing what it is doing if we want to use its feedback to maintain LED state.
Marked as spam
I think I see what is happening. In addition to the manual mapping I did, I had a XML map file. I’m not sure how to disable that. You might want to create one for your controller and then not do any manual mapping.
Hmmm, so you created the xml map file on your own without doing the mapping in resolume? Typically when you assign mapping in resolume it creates an xml for the mapping. This is displayed in the midi section of preferences, also where you can select new and start from scratch
Maybe, not sure how it got there but not sure how to make it go away. I know lots about Bome Midi Translator Pro but very little about the various applications. I generally have to download an eval copy when helping a user, to figure our what they are trying to accomplish and how that particular application works.
If you have a good mapping file, maybe my project will work better for you.
So looking at Resolume, it seems to have knowledge of “decks” and “layers”. To me layers look more like “tracks” in other DAWs and each one can have a number of clips. Probably best to get things working best you can using native functions of Resolume and then analyze what it puts out to affect the change in behavior of your OHM64 lights.
seems like the led feedback project may be at a stand still. the bit manipulation is so close, but the double note out in resolume throws it off. I couldn’t figure out logic to tell it if velocity for a note is 127 and ga already had value for the note, to ignore it. an and statement in the begging of the rules for this scenario may cover it, but i don’t think and statements are valid in BMT.
i posted on the Resolume forums, but they are kind of dead these days sadly :/
Hi, please show a log of what happens when the feedback is turned off. Annotate it with how you want it to behave and I will take a look. If Resolume is sending out notes you don’t want, we may be able to filter them out.
For me, I was able to correct my problem by deleting the mapping file I had and then doing a new mapping. So at that point we can simply monitor the reaction of Resolume and then it have it send the input to do your bit mapping and or manipulation.
I had a hard time understanding your initial requirements because I am not a Resolume user so maybe if you have the capability you can record a short video demonstrating what the current behavior is and how you would like it changed. My initial response did not necessarily address your total requirements but focused more on how to capture and retain LED feedback within MT Pro.
Thanks for our patience!
Like I said the initial bit manipulation worked to an extent. The issue was that Resolume was sending more than one note on when a clip was triggered which would then cause the led to be active/deactive. I did get a response yesterday saying that disabling the ‘move clip to view’ under the general tab in preference was the culprit. This function would move the clips into view on the composition so you could see what is triggered. So to update on where I am with the project: Since disabling I have been able to use the bit manipulation as expected after setting the midi input to be raw midi notes and setting a unique channel per grid “layer”. I reworked the global variable assignments for each led translator, created 3 more clip grid toggle groups. now I can get control and led feed back for a total of 5 button grids, aka 320 clips. Although I haven’t fully grasped bits, I understand the project enough to keep developing it further (actual bit values is weird to me, 2 leds on in a led global variable makes the value 12589,for example. I’m gonna keep digging until I understand it fully) Thank you very much for the help on everything. This is resolved.
Funny part is that they released Resolume 6 beta yesterday which overhauls the midi control/feedback and has a lot more flexibility for led feedback (including colors for those that use those controllers) cheers!
Yes, I saw that lots of users were complaining. Looks like they listen to their user base. Glad to have provided some help to get you on the right path.
Basically each variable is a 32 bit signed integer (Bit 0-31). Bit 31 is a sign value so a -1 is represented in binary as
11111111111111111111111111111111 < 32 bits
Say I want to look at bit 3 of the following 1010 (Hex A or Decimal 10) Bit 3 is the one on the far left.
However in bit map format this represents the number 4 (4th digit to the left).
I shift the variable to the right 3 times to get it in the right most position (1 less than the input number)
shift once = 0101
shift twice = 0010
shift 3 = 0001
Then just in case there were digits to the right (in this case they weren’t ) I would need to mask them
uu=uu&1 – Notice I did not mess with the variable ga?
So bit 4 was a 1
To update it to a 0 it is a bit more complicated
I put it back into position
Then I compliment existing value of ga 1010
ga=ga^-1 (remember -1 is 32 ones) So I get 11111111111111111111111111110101
then I exclusive or it with uu 1000 binary and get 11111111111111111111111111111101
Then I put ga back to normal and get 00000000000000000000000000000010 or in short 0010 (bit 3 cleared)
For exclusive or : 1^1 = 0 : 1^0=1 : 0^1=1 : 0^0 = 0
I know this might seem pretty deep as the MT Pro manual does not explain computer theory (how bit mapping works). Trust me it works. This is more related to computer programming than MIDI or anything else.
Like I said it is a bit of pain to set up but once it is done, it saves you a ton of time in managing tons of global variables.
Now to go further, I created a project that actually also extracts the bits and sends them to the controller to update the LED’s
I use a repeating timer as a loop starting with note 63 and use the loop iteration as the note. I then extract the bit and set the color of the bit based on it’s state. So essentially, with two translators you get an update to all LED’s in the current layer. 1 translator to set up and trigger the timer, and then the timer itself that iterates through all 64 LEDs extracting one value at a time from your global variable.
I posted it here. I used and tested with my APC Mini so if your controller has a different name, you will need to change the input and output ports.
My APC mini has note values 0-63 starting at bottom left going to top right.
I set up ESC key to clear all variables
I set up ALT key to turn on all LED’s
I set up CNTL key to toggle between the two layers.
I filled it with as many comments as I could.
Independent Bome Programming Specialist
Bome Q&A moderator
Marked as spam
I was planning on doing a tutorial on bit manipulation but Florian thought it might be too deep and scare potential Bome customers away. This is something that is really suited only for the most complex projects and most users don’t have to go there. (They can always come to me if they need a programmer).
been busy and without power (thanks irma) for a few days. Back at it…
i’ve been working with this project file trying to sort out a few things on my own. understanding the bit manipulation is challenging but i’m doing my best to follow what happens on each incoming note.
I am getting hit with a challenge related to resolume note output that is causing feedback to be opposite of expected result. when you launch a clip via midi controller, sends out two midi note on messages to BMT. If you click on a clip (not using controller) resolume sends 3 midi note on messages for the mapped midi note. I see your tt variable is looking at the value of rr, but with resolume sending 2 note on’s when i launch clips via my controller it sets rr bounces between 1 and then 0. No LED.
If i manually click the clip in resolume to launch it rr bounces from 1 to 0 and back to 1. led stays lit.
based on your setup, i don’t see a way around it. I thought maybe i could do an AND statement in the rule, but i don’t think BMT allows that.
the project file is incredible and gets me extremely close to what i was after. Thank you very much for taking the time to create/provide it.
Hi, glad to be of help! Not sure I understand the behavior you are describing. Could you capture in a log window, cut and paste into a text file and the annotate what is happening? The file I posted assumed no feedback from Resolume, so perhaps the feedback from Resolome is interfering with the local feedback in the project file? Sine the Work preset has not specified specific ports, the value may be toggling twice, once from local action, and once from resolume. If you override your default input port in the preset, you could see if the behavior changes. The key thing to keep in mind is to determine the source you want for your LED feedback, Resolume or MT Pro. In some cases, you might want a combination of one or the other (but not both for the same trigger).
LED feedback should be derived from Resolume, sorry if i didn’t make that clear in earlier comments. Resolume provides note on feed back when a clip is triggered/note off if clip is ejected. For some reason, they send two note on messages when a clip is triggered via midi …. (3 midi notes if you manually click the clip)
see attached folder to view log export with more details on problem and project setup, as well as my modified project file.
OK, things get more complicated now. When pushing buttons in standard mode, you need to have your controller send MIDI to Resolume, then have feedback fro Resolume to update your LED’s. Does Resolume have knowledge of “layers”. Question is what to do with your stored state of the new layer when switching layers. If Resolume has no knowledge of layers, then you would have to send it all the information to release any clips you had enabled in the old layer and then enable them in the new layer. In general when working with a DAW, it is best practice to control all LED feedback and handling of layers. If your DAW needs to understand layers, you have to give thought of not only LED state but how to reflect the switch of layers within the DAW. I hope this helps! Maybe I should use the term mode instead of layer. Looks like Resolume uses the term layer for something else.
Resolume’s feed back methods are just sending the note on/off messages. Why they send more than one for a given clip is beyond me and also the reason I can’t get the bit manipulation project to work as I’d like. If there was a way to get logic in place to store the state of the notes Velocity (on/off) in with the existing bit manipulation then that’d be perfect. I haven’t been able to get there in my time playing around with the configuration.
When you get to bit manipulation, have a look at the attached project.
In it I have for variables that can control up to 128 lights. I only tested in with 80 because that is all my APC mini has, I didn’t do any layering but you could take the second two translators, put them in a separate preset and change the offsets back to that of the first two presets. When you switch presets, you will need to dump all the values out to your controller (which I haven’t yet done), but at least all of the LED states are captured.
So in essence, it illustrates how to use bit manipulation logic to get the values into the global variable.
Marked as spam
Perfect. Thank you.
Understanding the bit manipulation logic is a whole new thing to me compared to how I was using BMT prior and I don’t see any clear explanations on the manual for how this manipulation works. There are expression explanations, but I’m finding them confusing. I’m taking my time and going through each of your rules for a single translator to understand what is happening. I’m gonna go through a few different notes from both 0-31 and 32-63 to get a better overall picture.Once it “clicks” I will attempt to recreate for my use case. I’ll let you know when I get there 🙂
Hmm if I understand correctly, you want the LED’s to be able to retain their value depending on which preset you have selected. I don’t think your controller has any knowledge to retain LED state so you will have to maintain that in MT Pro.
I see that you have gc for led state 1-8 and gd for led state 9-16. I assume you are storing these values to control a single LED in each preset, correct? If so the point I’m making if everytime you change presets you will have to maintain state for note 1 but 64 led’s. Multiply by 2 for two presets and it comes to 128 global variables.
Looking at your project this is what I was able to glean. Let me know if this is correct.
So I see by playing around that the preset shift state is working and you are sending values to turn on an off led’s but not sure how you are trying to maintain current LED state when changing presets. Unless that is what you are trying to do with global variables gc and gd (which to me appears as only one LED).
I also noticed you are setting devices at the translator level which could be unmanageable later. I suggest you keep you devices organized and set at the preset level instead and only rarely use translator input outputs.
I’ve attached an updated file with some modifications but no way to test it so I hope I didn’t muck it up too bad for you. The main thing I did was move input output from translator to preset level where it made sense. I also assigned aliases so that you can use real names instead of Bome Midi Translator 1 etc.
The aliases are:
Ohm64 Control Surface (on my system assigned to BMT1 in and out)
Resolume (on my system assigned to BMT2 in)
Resulume Out (on my system assigned to BMT2 out)
I hope this helps!
PS. For me to test this further, I will likely need to run everything through a different instance of BMT Pro since y control surfaces all use MIDI channel 1).
Maybe while you mull through this, I can try and set up a better emulated environment in case you need future help.
Marked as spam
Steve – I’ll take a look later tonight.
GB – was pulled from a previous template and I planned to use it as a shift variable later for launching preview clips
GC and GD – these are used for my LED on/off Statuses
H1 and H2 – these are for assigning notes. Notice the rule I set for these variables under the RESIN preset. I set a rule to look for a notes under 64. If they were then I had it assign the notes input (rr) to be the variable for H1/H2. I did this in attempt to avoid creating a translator for each button.
So at this point you understand that I’m attempting to be able to use toggle functions to switch between clip ranges, get LED feedback when I launch one, and be able to switch between the clip views and still see an LED providing feedback if that clip is on when I go back to a previous view. By what I think you are saying, there really isn’t another option to store the led status than creating a translator for each button in a clip views preset. Correct me if I’m wrong.
You also described in your first post a variable assignment structure. Can you elaborate on that a bit more? Had a little trouble understanding it fully.
Thanks for the help!!
Hi, I think you bill be able to update LED status with 4 translators. Each translator managing a 32 bit variable. Two variables for preset 1 LED status and two for preset 2 led status.
Since a variable in MT Pro can handle 32 bits, you can use two of them with to manage the state of each layer of your 64 bit grid.
Once you get past managing the status of 1 LED persistent per preset, come back to me and I can go into more detail on how it is done. In general each bit of the 32 bit variable will represent the LED status. You will need to do bit shift manipulation “>>
Once i get the above figured out, blinking will be my last step of this. it isn’t native to this controller. i know i’d have to do some stuff in BMT to get this to work. I was considering inverting the LED feedback values so that the LEDS are on all the time and only turn off when something is being played. i’m keeping in mind that we usually work in the dark and having a colorful layout would help (OHM64 RGB would be clutch, but Livid seems to be stuttering lately and i can’t find a fair priced RGB any where…)
Marked as spam
How are you tracking your 64 LED states withing MT Pro? Are you using a different global variable for each button state? If not you may have problems with running out of global variables (or managing them).
I suggest you use 2 global variables to control the led state of each layer. Since MT pro uses 32 bit signed int, 2 variables should do the trip, then you bit map these into the button status.
IE layer 1 would be ga and gb . Bit one of ga would be button1, bit 2 button 2 etc up to 32. Bit one of gb would be button 33 etc up to 64.
For layer 2 you could use gc and gd. For layer 3 ge and gf.
The bit manipulation setup could be a bit complicated at first but once established, is actually more manageable and you don’t consume many global variables.
As you move from layer to layer you would simply look at a different global variable pair, hence preserving the state of the other layer.
You could set up a pair of “layer variables” so you don’t have to duplicate code.
For layer one you would assign g1=ga and g2=gb. Then do all you bit manipulation for layer one.
When switching to layer 2 you would just point g1 to gc and g2 to gd then handle all bit manipulation still with g1 and g2. Before switching, you would of course need to copy your g1 and g2 state back to ga and gb. Make sense?
For blinking LED’s, it gets more involved. You would probably need a separate bit map for led blink state for each layer and a timer to control the blinking of the LED’s (since I don’t believe blinking is a native function the Ohm64.
Looking the Ohm64 manual, however I’m a bit confused on the layout pattern for rows and columns. Looks like physical layout of the matrix does not match the logical layout.
Sounds like an interesting project!
Independent Bome Programming Specialist
Bome Q&A moderator
Marked as spam
i was able to get my project to allow me to launch a clip, light up the LED. I then was able to hit my toggle button to switch to my 9-16 preset and the LED was shut off and came back on when i went back to 1-18 preset without toggling other clips. I started out just mapping this function to two different notes on channel 2 and 4 to get a proof of concept before committing several note assignments. I did this by following Jared’s instruction on a previous post: https://www.bome.com/forums/viewtopic.php?t=3794 Now, before i go any further, would i be able to just assign my button grid’s note range instead of having to map each individual midi note on each “clip set” preset? For example prior to adding the LED feedback i was able to setup the following translator: [x] Translator 5.2: Ch2ClipLaunch Options: swallow Incoming: MIDI 90 PP 40, on port Ohm64 Control Surface Rules: if pp>=64 then exit rules, skip Outgoing Action if ga>=1 then exit rules, skip Outgoing Action if gb==1 then exit rules, skip Outgoing Action Outgoing: Note On on ch. 2 with note:pp and velocity:127 (0x7F), to port Bome MIDI Translator 1 Virtual Out my button grid is set to notes 0-63. if i can get the LED feedback working along with using the “pp>=” rule for my notes it would save a lot of time and open the doors for some other ideas i have in mind. Thanks.
Hi, thanks! Is there a question in there somewhere? . Is the controller able to retain pre-set states when moving from one preset to another. If so, there is probably nothing more you need to do but I suspect there likey is. Maybe if you post your project file, the lights will turn-on in my mind.
After a coffee and a smoke i came back and played around and got the results i was after! Now i just need to figure out the blinking…
Well, maybe i got ahead of my self. It appears after further review that this is not working as expected. I tried to create a rule to find the note (rr) and assign a global to it, without having to create a translator for each. A few of my buttons stay on even within 1-8 preset when i launch a different clip. when i switch to 9-16 it doesn’t always deactivate the other preset LEDs.
If this isn’t possible or you have a suggestion on how i should create these translators let me know.
Link to project files: https://www.dropbox.com/sh/ghkk9oucuhifgiw/AAAwAgY-sfC8ogzI4LRPkN9Da?dl=0
(I wasn’t following exactly what you were suggesting to do above. Still new, so bear with me please 😀 )
Please log in to post a topic
(this is your bome account, not the old forum account):.