Duplicate translator with note difference/ascending

Greetings forum.

I’m working with a 64 LED midi pad and each pad requires four translators for my specific setup to work. I’m trying to find a fast way to duplicate my translators while changing one parameter such as the incoming and outgoing note with each duplicate. Please find below an example of my current setup

I will use note 36 as an example:
Translator 1: (Hardware In → Virtual Out)
MIDI IN: Chan 1/Note On #36/Any Velocity → MIDI OUT: Chan 1/Note On #36/Velocity 127

Translator 2: (Hardware In → Virtual Out)
MIDI IN: Chan 1/Note Off #36/Velocity 0 → MIDI OUT: Chan 1/Note Off #36/Velocity 0

Translator 3: (Hardware In → Hardware Out) //Midi out velocities control the LED colour
MIDI IN: Chan 1/Note On #36/Any Velocity → MIDI OUT: Chan 1/Note On #36/Velocity 126 LED

Translator 4: (Hardware In → Hardware Out) //Midi out velocities control the LED colour
MIDI IN: Chan 1/Note Off #36/Velocity 0 → MIDI OUT: Chan 1/Note On #36/Velocity 16

The above, in summary, sends note on and off midi through the virtual output to a program and sends note on and off set velocities (colour response - 126 is green and 16 is blue) to the midi pad to display colour.

Back To The Main Question!
Instead of making 256 translators, is there a fast workaround to duplicate the translator settings while changing the note input and output?
OR
Is it possible to make a single translator where the note is a variable and note variable incoming equals outgoing at a set velocity?

I do have some idea of the hex code midi inside my controller so if I need to make a string of hex just break it down so I can wrap my head around it.

Thanks in advance everyone.

Hi,

So if I understand correctly. You have 64 notes with 2 possible states, on and off, correct?
You want each of them to toggle and send either velocity of 127(ON) and 0 (Off) to your application.
At the same time, you want each of them to send either velocity 15(ON) and 0 (Off) back to your controller

This is possible with a bitmap. It would take 2 global variables (32 bits each) to track the state of the notes 0 or 1.

On each note on, you toggle the bit in question. Then you have a two timers iterate through all of the bits. One timer sending to your application 0 or 127 depending on the state of the bit and another sending either 16 or 0 back to your controller depending on the state of the bit.

So

  1. 1 translator to take the note input and rules to determine which global variable and bit in the bit map and then toggle the bit. The outgoing action would be to trigger a “controller iteration” timer that sends the note state back to the controller
  2. 1 translator to do the same but for the application with different values

So there would be at maybe 6 translators and 4 global variables total

  1. Set bit state - trigger timer 1
  2. Trigger timer 2
  3. Timer 1 iterate bits to the controller
  4. Timer 2 iterate bits to the application

Global variables ga and gb for the bitmap
Global variable gc for timer 1 iterator
Global variable gd for timer 2 iterator

This is beyond the scope of support for me to build it here but I do something similar with the APC-MINI which has 64 pads. You can look it up on the forum by searching bit map or maybe “bitmap” and then modify as you would like.

Or you can contact me via email for paid services. It would probably take a few hours to set up but most of the logic would be built in the rules of the input translator (to toggle the bits) and the iterator translators (to refresh the bit map).

If you don’t want to iterate through 64 buttons every time you push a button, maybe another way would just do reverse bit translator instead of timers just to update the bit pushed but that would probably take a few more global variables to pull off.

If the note numbers are not sequencial, then it might be a bit tougher to pull of but if they have a definite patter maybe not so tough.

Steve Caldwell
Bome Customer Care


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

Thanks for the reply - I’ll have a scan of the forum post regarding the APC mini.

Taking a look at some of the APC forums that are available - I’ve now created a preset with 4 Translators

All of them have the incoming any note set to variable pp.
In the outgoing section - I have a hex message sending Note On/Off, variable pp, and desired velocity.
The two translaters that go to the hardware for LED control have specific defined destinations versus default routing.

So far, looking at the log window - the variable pp is tracking the correct note.
Can you see any possible issues with my above solution?

I couldnt entirely wrap my head around your bitmap idea.

I understand if a response is more leaned towards a paid service.
Cheers

Yes, that is how it is done. I usually do my routings by preset instead of by translator for ease of maintenance, but if you have only 4 translators, this shouldn’t be a problem.

See this tutorial regarding routing to ports.

Steve Caldwell
Bome Customer Care


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

The bitmap idea is to reduce the number of variables you need for toggle states. Since all you want to track is on or off each bit has 2 states. Since a global variable uses 32 bits, then we can use 2 global variables to control the on/off state for 64 buttons instead of 64 variables (in which we would be using only the 0 bit of the 32 bit variable.

Steve Caldwell
Bome Customer Care


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