I no longer have LED feedback on the macros device when midi value change .Bug ? Missing Listeners ?

0

Hello

Here is a problem that I have for no apparent reason and without touching anything in the script or my midi controller
I manage macros of a device with rotary encoders from 0 to 127 (absolute)
I have LEDs around these rotary encoders that should indicate the position of the knob to me

When I varied the rotary encoder ableton should normally return the corresponding value
Well, without reason, that’s no longer the case
I just opened ableton

I was able to erase it instead of a macro and set different parameters such as send return, and now it works. I have feedback from the LEDs so the problem does not come from the system.

I was also able to map one of the roary encoded to see if I had a return from LED and it was the case but since this makes duplicates with the script, the display is very slow

With a Midi Test software it works

I was able to test with a script that I had developed beforehand and the ca also works
but if I import the script or it works and I relod the scrip in remotify the problem again

I tested
-with several versions 12 of Ableton,
-w10 ,
-w11 ,
-reload the script several times with control surface 2.8 and 2.9
-reinstalled control surface
-tried to create reactions but I only stop at having 0 all turned off and 127 all lit, I don’t have the variation or intermediate positioning

This problem is very strange because it happened all at once without apparent signs of

I wasn’t even going to reload the scirpt when it worked

I am almost sure comes from the generation of the script where there are missing listeners because I don’t have an abstract reference regarding the device macro

Did someone have this problem appear ?

Thank you in advance for your help

Greetings

The HumaniZer Answered question
0

Hi, do you see any errors in the CSS log when using the script?

JohnC Answered question
0

Hello

Where is the report generated by control studio ?

when I mess up the script with Ableton or when I am in control studio in window where is alwas indicated “Nothing to display currently”

It’s different from the log.txt that is located in AppData\Roaming\Ableton\Live 12.2.5\Preferences\Log.txt

I am not familiar with the log of your application.

Greetings

The HumaniZer Answered question
0

If I test with a reaction that sends a specific MIDI value to the knob where the LED ring is, Ableton correctly sends back the value and updates the LED ring to the right position.

The sending only happens when I switch devices or reposition on a device.
But when I work on the same device, for example if I call a snapshot, Ableton no longer sends anything to the controller, so the position is that of the rotary encoder, not the value of the macro or the device parameter in Ableton.

If the value change update occurs when I switch devices or reposition myself on it, why doesn’t it work in real time?

And I repeat that I am using the same controller and the same script without having done a recompilation.

The HumaniZer Answered question
0

What I notice according to some test is that in the new script (after loading it into Control Surface Studio) all the macro listeners for the devices are missing.

def _mode1_ui_listeners(self):
        try:
            self.send_a_id_42_led = eval(self.send_a_id_42["module"])
            self.send_a_id_42_led.add_value_listener(self.send_a_id_42_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.send_a_id_42["element"]) + " does not exist")
        try:
            self.send_b_id_43_led = eval(self.send_b_id_43["module"])
            self.send_b_id_43_led.add_value_listener(self.send_b_id_43_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.send_b_id_43["element"]) + " does not exist")
        try:
            self._session.add_offset_listener(self.scene_up_id_23_led_listener)
        except:
            self.log("_mode1_ui_listeners: self._session does not exist")
        try:
            self._session.add_offset_listener(self.scene_down_id_24_led_listener)
        except:
            self.log("_mode1_ui_listeners: self._session does not exist")
        try:
            self.macro_01_id_30_led = eval(self.macro_01_id_30["module"])
            self.macro_01_id_30_led.add_value_listener(self.macro_01_id_30_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_01_id_30["element"]) + " does not exist")
        try:
            self.macro_02_id_12_led = eval(self.macro_02_id_12["module"])
            self.macro_02_id_12_led.add_value_listener(self.macro_02_id_12_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_02_id_12["element"]) + " does not exist")
        try:
            self.macro_03_id_27_led = eval(self.macro_03_id_27["module"])
            self.macro_03_id_27_led.add_value_listener(self.macro_03_id_27_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_03_id_27["element"]) + " does not exist")
        try:
            self.macro_04_id_28_led = eval(self.macro_04_id_28["module"])
            self.macro_04_id_28_led.add_value_listener(self.macro_04_id_28_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_04_id_28["element"]) + " does not exist")
        try:
            self.macro_05_id_31_led = eval(self.macro_05_id_31["module"])
            self.macro_05_id_31_led.add_value_listener(self.macro_05_id_31_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_05_id_31["element"]) + " does not exist")
        try:
            self.macro_06_id_7_led = eval(self.macro_06_id_7["module"])
            self.macro_06_id_7_led.add_value_listener(self.macro_06_id_7_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_06_id_7["element"]) + " does not exist")
        try:
            self.macro_07_id_8_led = eval(self.macro_07_id_8["module"])
            self.macro_07_id_8_led.add_value_listener(self.macro_07_id_8_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_07_id_8["element"]) + " does not exist")
        try:
            self.macro_08_id_9_led = eval(self.macro_08_id_9["module"])
            self.macro_08_id_9_led.add_value_listener(self.macro_08_id_9_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_08_id_9["element"]) + " does not exist")
        try:
            self.macro_09_id_10_led = eval(self.macro_09_id_10["module"])
            self.macro_09_id_10_led.add_value_listener(self.macro_09_id_10_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_09_id_10["element"]) + " does not exist")
        try:
            self.macro_10_id_29_led = eval(self.macro_10_id_29["module"])
            self.macro_10_id_29_led.add_value_listener(self.macro_10_id_29_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_10_id_29["element"]) + " does not exist")
        try:
            self.macro_11_id_14_led = eval(self.macro_11_id_14["module"])
            self.macro_11_id_14_led.add_value_listener(self.macro_11_id_14_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_11_id_14["element"]) + " does not exist")
        try:
            self.macro_12_id_13_led = eval(self.macro_12_id_13["module"])
            self.macro_12_id_13_led.add_value_listener(self.macro_12_id_13_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_12_id_13["element"]) + " does not exist")
        try:
            self.macro_13_id_17_led = eval(self.macro_13_id_17["module"])
            self.macro_13_id_17_led.add_value_listener(self.macro_13_id_17_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_13_id_17["element"]) + " does not exist")
        try:
            self.macro_14_id_15_led = eval(self.macro_14_id_15["module"])
            self.macro_14_id_15_led.add_value_listener(self.macro_14_id_15_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_14_id_15["element"]) + " does not exist")
        try:
            self.macro_15_id_16_led = eval(self.macro_15_id_16["module"])
            self.macro_15_id_16_led.add_value_listener(self.macro_15_id_16_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_15_id_16["element"]) + " does not exist")
        try:
            self.macro_16_id_11_led = eval(self.macro_16_id_11["module"])
            self.macro_16_id_11_led.add_value_listener(self.macro_16_id_11_led_listener)
        except:
            self.log("_mode1_ui_listeners: " + str(self.macro_16_id_11["element"]) + " does not exist")

In any case, when I copy this part into the code that has the error, the LED response for the macros works again.

You can clearly see the macro number or parameter bnumber (self.macro_02) but but the “id” is different each time (id_12 for macro_02)

Why has this deletion occurred? Is it due to the upgrade from version 2.8 to version 2.9? Has this problem been resolved with version 3.0?

The HumaniZer Answered question