Matrix of buttons not updated on OSC message

Hello, I'm using a matrix object with buttons and sending OSC messages to build an Ableton launchpad style controller. I'm sending an array of color values to update the matrix, but the only button that gets updated is the very first object in the matrix container.
Here's a video of what's happening:

Here's what I have in props for the matrix:

    {
      "label": "#{OSC{/deck_a_labels}[$]}",
      "mode": "tap",
      "colorWidget": "#{OSC{/deck_a_colors}[$]}"
    }

Here's what the deck_a_colors message looks like:
address: '/deck_a_colors',
args: [
{ type: 's', value: '#bffb00' },
{ type: 's', value: '#bffb00' },
{ type: 's', value: '#bffb00' },
{ type: 's', value: '#ffa529' },
{ type: 's', value: '#ffa529' },
{ type: 's', value: '#bffb00' },
{ type: 's', value: '#bffb00' },
{ type: 's', value: '#bffb00' },
{ type: 's', value: '#ffa529' },
{ type: 's', value: '#efefef' }
],
host: '127.0.0.1',
port: 61814

I've confirmed that the messages are sending the correct values, but the widget doesn't seem to want to update.Preformatted text

To determine whether the props property has changed or not, it's evaluated with $ equal to 0 ; if the result is the same as before no change is made to the matrix' children. It's a known limitation that hasn't been fixed yet. You could force the update by writing

{
  "label": "#{OSC{/deck_a_labels, []}[$]}",
  "mode": "tap",
  "colorWidget": "#{OSC{/deck_a_colors, []}[$]}",
  "_labels": "OSC{/deck_a_labels, []}",
  "_colors": "OSC{/deck_a_colors, []}"
}

(I added default values to the OSC listeners to avoid some errors)

Wow thank you so much for your quick response. This is an amazing piece of software.

how are you sending and recieving from ableton ? i'm using a M4L device but what are you using ?

I built an OSC server/client for Ableton 11. I'd be happy to share the repo with you, but it's currently private as it's part of a codebase for a closed source VST that I'm working on.

sent you a dm about that.

Hey Jean, I'm running into this same issue, but with variable widgets instead of OSC listeners. Any way to force an update? Here's what I'm doing:

props:

{
  "colorWidget": "#{@{clr}[$]}",
  "mode": "tap",
  "_colors": "#{@{clr}[$]}"
}

script:
var clr = get("clr")
console.log(clr)
clr[getIndex(id)] = "#000"
set("clr",clr)
updateProp(id,"colorWidget")

To force the update, the _colors value should not depend on $ and instead return the full content of @{clr}. The issue is fixed in source, I'll cut a release soon hopefully.

Ok that kind of works, it does update the matrix, but then the buttons get all weird.

Here's my script:

var isVisible = get("isVisible")
isVisible = Array(10).fill(0)
isVisible[getIndex(id)] = 1
set("isVisible", isVisible)

if(value[getIndex(id)]){
var color = get("colors")
color = Array(17).fill("#000")
color[getIndex(id)] = "#fff"
set("colors", color)
console.log("Setting colors")
}

As soon as I call set("colors",color), the buttons start spitting out only off values, even though they are in push mode.