Rename multi XY pads

Ah en fait qlab sépare les x et les y, donc 1 valeur par message... dans ce cas le plus simple serait d'enlever le script et d'écrire ça dans le champ value du multixy:

[
  OSC{/track/1/x, 0},
  OSC{/track/1/y, 0},
  OSC{/track/2/x, 0},
  OSC{/track/2/y, 0}

]

Il faut tout écrire à la main, mais c'est aussi plus simple à comprendre.

Doc de la syntaxe : Advanced syntaxes - Open Stage Control

je viens d'essayer, (la syntaxe donnée n'était pas pour qlab mais pour le logiciel de spatiallisation), cela fonctionne mais il y a plein d'infos eratiques, lorsque je bouge un personnage, parfois tous les autres reprennent une autre valeur en même temps (soit une valeur genre 0,0 soit une valuer antérieure, du coup ce n'est pas utilisable tel quel.
En fait ce retour du logiciel ne m'est pas indispensable, par contre j'aimerais que mes envois de qlab directement à Open stage control soient compris et eux retransmis à Holophonix. Qlab envoie des infos : track/a/xy Xa Ya, j'ai donc tenté de modifier le message osc en : OSC{/track/1/xy, 0, 1}, mais cela ne fonctionne pas, j'ai loupé autre chose? merci
Capture d’écran 2023-10-15 à 12.17.58

Ah oui c'est un peu plus compliqué que ce ce que j'avais cru comprendre, du coup non ça ne marche pas avec la syntaxe que je t'ai donnée, on cherche à obtenir une liste de la forme

[
  x1,
  y1,
  x2,
  y2
]

et là tu as des listes imbriquées avec ce que tu as écris, quelque chose comme

[
  [x1, y1],
  [x2, y2]
]

C'est un peu le bazar, un logiciel fonctionne par paires xy, un avec x et y séparés, et o-s-c avec tous les xy dans le même message.

Pour bien faire les choses, je ne vois pas d'autre solution que d'écrire un "custom module" dans open stage control, qui s'occupera de faire la traduction entre tout ça (et c'est d'ailleurs le seul moyen de faire en sorte qu'o-s-c renvoie à message en réponse à un message reçu), le problème c'est que ça demande une bonne compréhension du langage javascript, je peux te mettre sur la voie avec un bout de code mais je ne peux pas me lancer dans un cours de programmation, c'est plus que je ne veux faire en terme de support sur ce logiciel

/*
Custom module à enregistrer dans un fichier .js et à  charger avec l'option du meme nom dans la config du serveur o-s-c.

L'idée est de laisser le widget multixy fonctionner de sa manière la plus simple (sans script) et de filtrer les messages entrants / sortants  pour réconcilier les logiques des différents logiciels.
*/ 

// config

var points = 5
var holoport = 5555

// filtres des messages entrants & sortants

module.expors = {

    oscOutFilter: (data)=>{
        // messages sortants

        if (data.address === '/multixy_address') {
            // séparer le message en paires xy
            for (var i = 0; i < points; i++) {
                send('127.0.0.1', holoport, '/track/' + (i + 1) + '/xy' , data.args[i * 2].value, multixy_state[i * 2 + 1].value)
            }
            
            // ne pas laisser passer le message initial
            return
        }

        // laisser passer les autres messages
        return data
    },

    oscInFilter: (data)=>{
        // messages entrants

        // si l'addresse est /track/X/xy
        if (data.address.match(/\/track\/[0-9]+\/xy/)) {
            // récuperer le numéro de track dans l'addresse osc
            var index = parseInt(data.address.split('/')[2])

            // transmettre les valeurs au widget
            // en ne mettant que les valeurs qui ont changées
            // dans une liste de la bonne taille
            var widget_value = Array(points * 2).fill('')
            widget_value[index * 2] = args[0].value
            widget_value[index * 2 + 1] = args[1].value
            receive('/multixy_address', ...widget_value)

            // renvoyer le message tel quel à holophonix ?
            send('127.0.0.1', holoport, data.address, ...data.args)
            
            // ne pas laisser passer le message initial
            return
        }

        // laisser passer les autres messages
        return data
    }
    
}

Bonjour,
Merci pour ta réponse, et oui bien évidemment je comprends la limite du support logiciel que tu es prêt à faire, c'est déjà énorme. Et pour moi effectivement je suis ingé son et non programmateur et mes connaissances en javasript sont proches de zéro....:wink:
J'ai trouvé un moyen de m'arranger de tout ça en utilisant
pour la réception de Holophonix vers o-s-c : OSC{/track/1/x, 0}, OSC{/track/1/y, 0},
et pour l'envoi de o-s-c vers Holophonix ton script modifié send('/track/' + (i + 1), '/xy/', value[i * 2], value[i * 2 + 1])
Pour qlab je l'envoie directement à Holophonix (qui fait tout seul la traduction track/A/xy vers track/A/x et track/A/y) qui le renvoie ensuite à o-s-c pour la syncro.
Tout fonctionne parfaitement ainsi!

Je vais récupérer une grosse tablette tactile en 18 pouces et j'aimerais partager l'écran avec d'un côté la télécommande multiball vers Holophonix et de l'autre une télécommande vers ableton live, du coup une autre question: si j'utilise les rappels d'état est-ce possible que certains éléments ne soient pas rappelés et restent free, comme les niveaux de fader par exemple? si je modifie un volume et que je rappelle un état de position je ne veux pas que mon volume soit rappelé dans l'état. j'imagine que ce n'est pas possible mais je demande au cas où?
Et est-ce possible de personnaliser les dots du multiball avec des images comme pour les fonds en utilisant la commande background mais pour chaque dot? cela permettrait dans mon cas de mettre une image de trompette, basse, man, .... au lieu de balles de couleur?
Merci à toi

Pas avec la commande que je t'ai donnée, ce serait possible d'une autre manière en faisant un peu de magie avec les scripts et le custom module, mais du coup c'est peut-être pas judicieux comme piste, et je me dis que ce serait pas compliqué d'ajouter la possibilité de spécifier quels plusieurs widgets sauvegarder dans la commande /STATE/SAVE. À voir pour une future mise à jour.

Et est-ce possible de personnaliser les dots du multiball avec des images comme pour les fonds en utilisant la commande background mais pour chaque dot? cela permettrait dans mon cas de mettre une image de trompette, basse, man, .... au lieu de balles de couleur?

Ce n'est pas possible de manière simple, mais en tordant un peu le html et le css on peut arriver à quelque chose...

JS{
// propriété html

var html = ''
  
for (var i=0; i<2; i++) {
  
  html += `<div class="image image-${i}"></div>`
}

return html
  
}
/* propriété css */
.html {
  position: absolute;
  --margin: calc(1rem + var(--widget-spacing) + var(--line-width) + var(--widget-padding));
  top: var(--margin);
  left: var(--margin);
  right: var(--margin);
  bottom: var(--margin);
  width: auto;
  height: auto;
  display: block;
}

.image:before {
  content:"";
  --size: 40rem;
  width: var(--size);
  height:var(--size);
  margin-top: calc(-0.5 * var(--size));
  margin-left: calc(-0.5 * var(--size));
  position: absolute;
  background-size: cover;
  background-position: center;
}

JS{
  
var rangeX = @{this.rangeX}
var rangeY = @{this.rangeY}
var value = @{this.value}
var points = 2
var css = ''

// remplacer les couleurs par des
// url(chemin/vers/fichier.jpg)
// et replacer "background:" par "background-image:" plus bas
// pour afficher des images
var backgrounds = [
  'red',
  'blue'
]
  
for (var i=0; i<points; i++) {
  var x = 100 * (value[i*2] - rangeX.min) / (rangeX.max - rangeX.min),
      y = 100 * (value[i*2 + 1] - rangeY.min) / (rangeY.max - rangeY.min)
  
  css += `
  .image-${i}:before {
    top: ${100 - y}%;
    left: ${x}%;
    background: ${backgrounds[i]}
    
  }
  
  `
}

return css
  
}

de ce que j'ai compris j'ai testé avec 2 dots:



mais sans doute des erreurs de me part, il n'y a plus rien...;-(

Il faut des guillemets autours des url() et des virgules entres les elements de la variable-liste backgrounds.

je l'ai fait et maintenant j'ai des carrés à la place, pourtant les images existent bien, au dessus j'ai mis une trompette en .png sur un bouton avec le même chemin et elle s'affiche...

Ah mince il faut mettre background-image: ${} au lieu de background: ${} sinon les règles au dessus (background-size et background-position) sont ignorées.

@FlexP ils sont chouettes tes faders !

ça y est ça marche, c'est d'enfer!
Merci beaucoup.
Et en modifiant la valeur du Top j'ai pu décaler l'icone au dessus du texte, c'est parfait

Bonjour,
Je finalise ma prépa de spectacle pour la semaine prochaine et j'ai une question:
est-il envisageable que pour passer d'un état à un autre on puisse mettre un temps? et surtout est-ce possible d'envisager une transition d'un état à un autre? Je sais que sur Maxmsp c'est facile, il y a une commande qui permet de faire varier les valeurs entre deux états, par exemple état 1 fader à 0 et état 2 fader à -20 en 5s et il calcule et envoie toutes les valeurs entre les deux, idem pour des positions, cela permettrait des automations indépendantes des logiciels pilotés et universelles...!
Est-ce que c'est une chose envisageable dans une MAJ? en même temps que le fait de sélectionner quel widget est rappelé ou non dans un état?
Merci beaucoup pour tout ça
Cordialement
Félix

Salut, désolé pour le délai de réponse. Ce n'est pas possible actuellement à moins de gerer sois même les états depuis un custom module par example et de manipuler les listes de valeurs pour en exclure certaines ou calculer des valeurs intermédiaires, mais ça demande de creuser pas mal côté javascript et c'est pas évident à faire bien. Ça me semble pas impossible d'ajouter ça un jour, mais honnêtement je ne sais pas si ça arrivera dans les prochains mois donc à ta place je ne compterais pas trop dessus pour le spectacle si tu arrives bientôt à la fin de la créa.