Format messages OCS
Closed this issue · 5 comments
Salut!
Je viens de réussir à faire tourner un premier dump! Yes.
Je n'ai pas encore branché sur la musique, il y a qqs détails dans les messages OSC qui sont bizarros:
Si on prend par example la premiere ligne de ce qui est dans le README:
plantoid/numero_sculpture(int)/numero_boitier(int)/analog 1 valeur(int,min 0 ,max 1024)
- en général un message OSC commence par un "/", je n'avais pas relevé ce détail. Mais du coup il y a certains programmes qui ne parseront pas le message. Je ne suis pas encore 100% sur pour supercollider, mais c'est mieux de la jouer safe.
donc dans l'example ci dessus, ca donnerait:
/plantoid/numero_sculpture(int)/numero_boitier(int)/analog 1 valeur(int,min 0 ,max 1024)
- ensuite, dans ce que je recois du dump, il y a sans doute un petit probleme de formattage: je recois l'index du capteur comme faisant partie de l'adresse du message, et non pas comme une des valeurs transmises
Par ex, dans le dump, si je recois le message
plantoid/9/9/sonar 1 121.22
quand je le parse, l'adresse du message est "plantoid/9/9/sonar 1 " , avec une seule valeur
alors que ca devrait etre:
adresse: "/plantoid/9/9/sonar"
valeur 1: 1
valeur 2: 121.22
Voili
Salut,
C'est la solution initiale que Martin avait implémenté je crois, mais on s'était mis d'accod pour changer ca. SI on peut éviter ca j'aime autant, ca complexifie le parsing du coté musique, d'autant que OSC est vraiment prévu pour transmettre des tableaux de valeurs et pas seulement des valeurs uniques.
En général il suffit d'invoquer plusieurs fois la méthode "add" sur un objet message pour ajouter des valeurs dans le tableau:
OSCMessage msg(oscAddr);
msg.add(sensorIndex);
msg.add(sensorValue);
ou alors peut ete qq chose comme
msg.add(sensorIndex).add(sensorValue);
(c'est possible d'apres ce que je lis de la méthode add dans le OSCMessage.h)
Merci!
Oui bien sur
a se moment c'est pas mieux
OSCMessage msg(oscAddr); // "/plantoid"
msg.add(plantoidNumber); // uint8
msg.add(boitierNumber); // uint8
msg.add(SensorName); // string ex: "analogue"
msg.add(SensorIndex); // uint8 ex: 0
msg.add(SensorValue); // float32 or uint32
Oui effectivement ca peut se discuter ... mais pas à ce stade du projet, car j'ai déjà écrit le parsing OSC musique en me basant sur le protocole du README. Je n'ai pas le temps de refaire ca.
:-)
Merci!
Ok donc on pars sur:
OSCMessage msg(oscAddr); // "/plantoid/9/9/sonar"
msg.add(SensorIndex); // uint8 ex: 0
msg.add(SensorValue); // float32 or uint32