<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://getdlight.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nomatter</id>
	<title>wiki - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://getdlight.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nomatter"/>
	<link rel="alternate" type="text/html" href="https://getdlight.com/wiki/index.php/Sp%C3%A9cial:Contributions/Nomatter"/>
	<updated>2026-04-29T03:17:49Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://getdlight.com/wiki/index.php?title=OSC&amp;diff=411</id>
		<title>OSC</title>
		<link rel="alternate" type="text/html" href="https://getdlight.com/wiki/index.php?title=OSC&amp;diff=411"/>
		<updated>2015-02-14T13:56:58Z</updated>

		<summary type="html">&lt;p&gt;Nomatter : /* Syntaxe OSC de la version 4.0.0._b22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L&#039;&#039;&#039;&#039;OSC&#039;&#039;&#039; (&#039;&#039;Open Sound Control&#039;&#039;) est un protocole de transmission de données en temps réel entre plusieurs logiciels. La communication entre ces logiciels assure l&#039;envoi et la réception des flux de données par une connexion réseau en utilisant le protocole UDP (&#039;&#039;User Datagram Protocol&#039;&#039;), qui est la couche de transport du protocole TCP/IP (&#039;&#039;Transmission Control Protocol&#039;&#039;, &#039;&#039;Internet Protocol&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
L&#039;&#039;&#039;&#039;OSC&#039;&#039;&#039; se caractérise par sa rapidité et sa flexibilité. Il ne provoque aucune latence perceptible lors de l&#039;envoi ou de la réception des données.&lt;br /&gt;
&lt;br /&gt;
Les logiciels mis en communication peuvent être installés sur la même machine ou sur des machines distinctes. Ainsi, D::Light peut être piloté par une autre application installée sur le même ordinateur ou bien être commandé à distance depuis depuis un iPhone ou un autre ordinateur par connection filaire, WIFI ou Internet.&lt;br /&gt;
&lt;br /&gt;
En utilisant le protocole OSC, D::Light peut aussi lui-même commander d&#039;autres machines par le biais d&#039;une application comme Pure Data ou Max/Msp: un pas de séquence peut par exemple déclencher les pistes-son d&#039;un player et des submasters peuvent être affectés à de multiples fonctions de déclenchement (play, pause, controle d&#039;un fade son, etc.).&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Communication OSC avec D::Light ==&lt;br /&gt;
&lt;br /&gt;
La transmission des données vers D::Light doit impérativement spécifier l&#039;adresse de la machine (&#039;&#039;localhost&#039;&#039; ou adresse IP) et le numéro du port.&lt;br /&gt;
&lt;br /&gt;
Par défaut, le port assigné à D::Light pour l&#039;envoi des messages est &#039;&#039;&#039;7000&#039;&#039;&#039;. La réception des données provenant de D::Light est assignée au port &#039;&#039;&#039;7001&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Le statut et le port d&#039;envoi OSC de D::Light doivent également être activés. Lorsqu&#039;on enregistre une conduite, si la communication OSC de D::Light est activée, l&#039;activation reste mémorisée dans la conduite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activation OSC dans la version 3.0.3 ===&lt;br /&gt;
Dans cette nouvelle version, l&#039;activation OSC est accessible par le menu Display puis [[SETUP]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activation OSC dans les versions antérieures à 3.0.3 ===&lt;br /&gt;
Dans le menu &#039;&#039;OSC&#039;&#039;, la fenêtre &#039;&#039;OSC Control&#039;&#039; permet l&#039;activation de l&#039;envoi et de la réception OSC en cochant les cases respectives.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:OSCcontrol302.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bibliothèque OSC de D::Light ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dans les tableaux suivants, le signe # correspond toujours à un numéro (de circuit, de pas de séquence, de submaster). Lorsqu&#039;aucune valeur n&#039;est mentionnée, c&#039;est que seule la syntaxe de l&#039;adresse suffit. Lorsque la syntaxe de réception est absente, c&#039;est qu&#039;elle est inexistante (inutile ou pas encore implémentée)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntaxe OSC de la version 3.0.2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Niveau du circuit # || /circ/# || 0-255 || /circ || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau Grandmaster || /grandmaster || 0-255 || /grandmaster || 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Pas de séquence || /seq || # || /seq || #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Go || /seq/go || || /go || #&lt;br /&gt;
|-&lt;br /&gt;
| GoBack || /seq/goback || || /goback || #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pause || /seq/pause || || /pause || #&lt;br /&gt;
|-&lt;br /&gt;
| Fader X1 || /seq/xfade_x1 || 0-255 || /XfadeX1 || # 255-0&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X2 || /seq/xfade_x2 || 0-255 || /XfadeX2 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time ou Flash || /sub/#/flash || 0-255 || /sub || /# 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur Time/Flash du sub # || /sub/#/mode || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Solo (sub # prioritaire) || /sub/#/type || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pavé numérique || /pad/1...9 || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Point du pavé numérique || /pad/dot || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CHANNEL || /pad/channel || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| LEVEL || /pad/level || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| FULL || /pad/ff || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| THRU || /pad/thru || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CLEAR || /pad/clear || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) || /pad/freeze || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout || /pad/blackout || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| + || /pad/plus || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| - || /pad/moins || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| +% || /pad/pluspourcent || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| -% || /pad/moinspourcent || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| ALL || /pad/all || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Validation (ENTER) || /pad/enter || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélection active à zéro || /pad/clearclear || || || &lt;br /&gt;
|-&lt;br /&gt;
| Clone || /pad/clone || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Inv || /pad/inv || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Scène || /pad/scene || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Scène || /pad/X1 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/prepa || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/X2 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Ouverture de la fenêtre de check || /checkcirc/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Circuit à checker || /checkcirc/circ || 0-512 || || &lt;br /&gt;
|-&lt;br /&gt;
| Niveau de test des circuits || /checkcirc/level || 0-255 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Teste le circuit suivant || /checkcirc/next || || || &lt;br /&gt;
|-&lt;br /&gt;
| Teste le circuit précédent || /checkcirc/prev || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes à propos de la version 3.0.2 ===&lt;br /&gt;
* &#039;&#039;&#039;Circuits et Submasters&#039;&#039;&#039; : Dans le tableau ci-dessus, les messages renvoyés par D::Light concernant les circuits et les submasters correspondent à la syntaxe de la version 3.0.2. Dans les versions antérieures, la syntaxe est la suivante:&lt;br /&gt;
** &#039;&#039;/circ/#&#039;&#039; renvoie la valeur (0-255) du circuit #.&lt;br /&gt;
** &#039;&#039;/sub/#&#039;&#039; renvoie la valeur (0-255) du submaster #.&lt;br /&gt;
* &#039;&#039;&#039;Fader X1&#039;&#039;&#039; : La valeur du Fader X1 renvoyée par D::Light est toujours inversée. &#039;&#039;Exemple: si la valeur envoyée est 255, la valeur retournée est 0&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Temporisation des Submasters&#039;&#039;&#039; :&lt;br /&gt;
** Lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, si le submaster est temporisé (mode TIME), son temps de montée est celui de la temporisation, sinon (mode FLASH) sa montée est instantanée.&lt;br /&gt;
** Pour contrôler la temporisation indépendamment du temps programmé dans la mémoire du submaster, il faut utiliser la syntaxe &#039;&#039;/sub/#/level&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Niveau des Submasters&#039;&#039;&#039; :&lt;br /&gt;
** En mode TIME, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light sont indifférents à la valeur envoyée. Ils ne dépendent que du niveau mémorisé dans le submaster (TARGET). Pour activer le submaster, il suffit que la valeur soit supérieure à 0 (entre 1 et 255).&lt;br /&gt;
** En mode FLASH, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light dépendent du niveau mémorisé dans le submaster (TARGET) &#039;&#039;ET&#039;&#039; de la valeur envoyée. &#039;&#039;Exemple: si le TARGET est 128 et la valeur envoyée est 128, le niveau effectif sera 25% et la valeur renvoyée 64&#039;&#039;.&lt;br /&gt;
** En mode TIME ou FLASH, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/level&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light correspondent uniquement à la valeur envoyée, quelle que soit la valeur TARGET mémorisée dans le submaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modifications de syntaxe OSC dans la version 3.0.3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le tableau ci-dessous récapitule uniquement les changements de syntaxe qui apparaissent dans la &#039;&#039;&#039;version 3.0.3&#039;&#039;&#039; de D::Light (21 décembre 2010).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| Go ||rowspan=&amp;quot;3&amp;quot;| /seq/go ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /go #&lt;br /&gt;
|-&lt;br /&gt;
| /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| GoBack ||rowspan=&amp;quot;3&amp;quot;| /seq/goback ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /goback #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;30%&amp;quot;|  Pause ||width=&amp;quot;20%&amp;quot;| /seq/pause ||width=&amp;quot;15%&amp;quot;| ||width=&amp;quot;20%&amp;quot;| /seq ||width=&amp;quot;15%&amp;quot;| /pause #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X1 (mode scène) ||rowspan=&amp;quot;2&amp;quot;| /seq/X1 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X2 (mode prépa) ||rowspan=&amp;quot;2&amp;quot;| /seq/X2 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X1 || /seq/fadeX1 || 0-255 || /fadeX1 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Fader X2 || /seq/fadeX2 || 0-255 || /fadeX2 || # 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Submaster # Flash || /sub/#/flash || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time || /sub/#/flash || 1-255 || /sub || /#/level 0-255&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes à propos de la version 3.0.3 ===&lt;br /&gt;
L&#039;essentiel des modifications concerne les informations renvoyées par D::Light. Les messages de retour sont moins nombreux et leur syntaxe est simplifiée alors que les informations renvoyées sont plus complètes.&lt;br /&gt;
&lt;br /&gt;
Le revers de cette simplification, c&#039;est une complexité plus grande dans le traitement des informations retournées par D::Light puisque une même commande déclenche en retour le renvoi de plusieurs informations différentes, regroupées en listes dont les valeurs ne sont pas toutes numériques.&lt;br /&gt;
&lt;br /&gt;
Ces modifications permettent tout particulièrement un meilleur suivi des &#039;&#039;&#039;pas de séquences&#039;&#039;&#039; pour toutes les commandes de séquences qui retournent systématiquement les états respectifs en X1 et X2. Désormais, une syntaxe unique (&#039;&#039;/seq&#039;&#039;) permet de connaître le type de commande utilisée (&#039;&#039;go&#039;&#039;, &#039;&#039;goback&#039;&#039;, &#039;&#039;pause&#039;&#039;, &#039;&#039;mode scène&#039;&#039;, &#039;&#039;mode prépa&#039;&#039;), le pas de séquence commandé et les pas de séquence en X1 et en X2 &#039;&#039;en fin d&#039;action&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxe OSC de la version 4.0.0._b22 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;| Go ||rowspan=&amp;quot;5&amp;quot;| /seq/go ||rowspan=&amp;quot;5&amp;quot;| ||rowspan=&amp;quot;5&amp;quot;| /seq || /go #&lt;br /&gt;
|-&lt;br /&gt;
| /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
| /X1ActiveCue #&lt;br /&gt;
|-&lt;br /&gt;
| /X2ActiveCue #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| GoBack ||rowspan=&amp;quot;3&amp;quot;| /seq/goback ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /goback #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;30%&amp;quot;|  Pause ||width=&amp;quot;20%&amp;quot;| /seq/pause ||width=&amp;quot;15%&amp;quot;| ||width=&amp;quot;20%&amp;quot;| /seq ||width=&amp;quot;15%&amp;quot;| /pause #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X1 (mode scène) ||rowspan=&amp;quot;2&amp;quot;| /seq/X1 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X2 (mode prépa) ||rowspan=&amp;quot;2&amp;quot;| /seq/X2 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X1 || /seq/fadeX1 || 0-255 || /fadeX1 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Fader X2 || /seq/fadeX2 || 0-255 || /fadeX2 || # 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Goto Step # || /seq/goto || # ||  ||&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot; &lt;br /&gt;
| Load &amp;amp; Goto CUE ||/seq/X2LoadAndFireCue ||# || || &lt;br /&gt;
|-&lt;br /&gt;
|- &lt;br /&gt;
| Kill Submasters || /sub/kill || # ||  ||&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Submaster # Flash || /sub/#/flash || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time || /sub/#/flash || 1-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Niveau du circuit # || /circ/# || 0-255 || /circ || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau Grandmaster || /grandmaster || 0-255 || /grandmaster || 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur Time/Flash/Inhib du sub # || /sub/#/mode || 1-2-3 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Solo (sub # prioritaire) || /sub/#/type || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pavé numérique || /pad/1...9 || 1 ||pad/saisieText ||#&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Point du pavé numérique || /pad/dot || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CHANNEL || /pad/channel || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| LEVEL || /pad/level || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| FULL || /pad/ff || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| THRU || /pad/thru || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CLEAR || /pad/clear || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) (Toggle mode)|| /pad/freeze || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) (Set mode)|| /force/freeze || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout (Toggle mode)|| /pad/blackout || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout (Set mode)|| /force/blackout || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| + || /pad/plus || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| - || /pad/moins || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| +% || /pad/pluspourcent || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| -% || /pad/moinspourcent || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| ALL || /pad/all || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Validation (ENTER) || /pad/enter || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélection active à zéro || /pad/clearclear || || || &lt;br /&gt;
|-&lt;br /&gt;
| Clone || /pad/clone || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Inv || /pad/inv || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Scène || /pad/scene || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Scène || /pad/X1 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/prepa || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/X2 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Ouverture de la fenêtre de check || /checkcirc/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Circuit à checker || /checkcirc/circ || 0-512 || || &lt;br /&gt;
|-&lt;br /&gt;
| Niveau de test des circuits || /checkcirc/level || 0-255 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Teste le circuit suivant || /checkcirc/next || || || &lt;br /&gt;
|-&lt;br /&gt;
| Teste le circuit précédent || /checkcirc/prev || || || &lt;br /&gt;
|-&lt;br /&gt;
| Open PATCH window || /patch/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Checking level (patch) || /patch/levelRequest || 0-255 ||/patch/displayLevel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Pad Digits (patch) || /patch/# || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Dot (patch)|| /patch/dot ||1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Inserted Digits (patch)||  ||  || /patch/input||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Clear (patch)|| /patch/clear || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pad Thru (patch)|| /patch/thru || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Next (patch)|| /patch/next || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pad Prev (patch)|| /patch/prev || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Display Channel (patch)||  || ||/patch/displayChannel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Display Patched Dimmer (patch)||  || || /patch/displayDimmer ||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Switch DIM-CHAN (patch)|| /patch/switch || 0-1 ||/patch/displayActiveSwitch ||DIM-CH &lt;br /&gt;
|-&lt;br /&gt;
| Active Channel (patch)||  ||  ||/patch/displayActiveChannel ||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Active Dimmer (patch)||  || ||/patch/displayActiveDimmer ||# &lt;br /&gt;
|-&lt;br /&gt;
| Active Thru Dimmer (patch)||  ||  || /patch/displayActiveThru||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Add Patch|| /patch/plus ||1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Remove Patch||/patch/moins ||1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Test Channel (patch)|| /patch/testChannel || 0-1 ||/patch/testChannel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Test Dimmer (patch)||/patch/testDimmer  ||0-1  ||/patch/testDimmer ||# &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Communication OSC entre D::Light et Pure Data ==&lt;br /&gt;
&lt;br /&gt;
=== L&#039;envoi des données vers D::Light ===&lt;br /&gt;
Un seul objet est nécessaire :&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;sendOSC&#039;&#039;&#039;. Il doit recevoir un message qui établit la connexion (&#039;&#039;connect&#039;&#039;), indique à &#039;&#039;sendOSC&#039;&#039; vers quelle machine envoyer les informations (&#039;&#039;localhost&#039;&#039; si c&#039;est la même machine ou adresse IP s&#039;il s&#039;agit d&#039;une machine distante) et lui précise que l&#039;on s&#039;adresse à D::Light en spécifiant son port (&#039;&#039;&#039;7000&#039;&#039;&#039;). Un second message (&#039;&#039;disconnect&#039;&#039;) permet la déconnexion manuelle. Facultativement, un objet &#039;&#039;&#039;loadbang&#039;&#039;&#039; permet d&#039;activer automatiquement la connexion à l&#039;ouverture du patch Pd. Mais l&#039;état de la connexion ne peut pas être affiché. La syntaxe des messages d&#039;envoi doit toujours commencer par le préfixe &#039;&#039;send&#039;&#039; (exemple : &#039;&#039;send /seq/go&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La réception des données provenant de D::Light ===&lt;br /&gt;
Deux objets sont nécessaires :&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;dumpOSC&#039;&#039;&#039; permet de recevoir les messages OSC. On lui attribue en paramètre le numéro de port de D::Light (&#039;&#039;&#039;7001&#039;&#039;&#039;).&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;OSCroute&#039;&#039;&#039;, permet de trier les messages arrivant par l&#039;objet &#039;&#039;dumpOSC&#039;&#039;. Les messages de réception des données provenant de D::Light constituent les paramètres de cet objet. Par chaque sortie on récupère les valeurs et/ou les symboles correspondants aux messages inscrits en paramètres selon leur ordre respectif. En l&#039;absence de paramètre, la sortie de gauche liste les dernières informations reçues (par exemple : &#039;&#039;/4 255&#039;&#039; si le submaster 4 est à full).&lt;br /&gt;
[[Fichier:send-dump-osc.png]]&lt;br /&gt;
&lt;br /&gt;
=== Les objets OSC de Martin Peach ===&lt;br /&gt;
L&#039;informaticien canadien Martin Peach a implémenté depuis 2008 de nouveaux objets qui sont intégrés à l&#039;une des bibliothèques associées aux dernières versions de Pd-extended. Outre leur meilleure fiabilité par rapport aux objets &#039;&#039;sendOSC&#039;&#039;, &#039;&#039;dumpOSC&#039;&#039;, &#039;&#039;OSCroute&#039;&#039;, ils permettent de créer des messages plus complexes avec une syntaxe simplifiée et, surtout, l&#039;envoi, la réception et le tri de paquets pouvant comporter des milliers d&#039;informations simultanées (et cela, sans le moindre bug).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Note: le patch ci-dessous est écrit pour la version 3.0.3 de D::Light&#039;&#039;. [[Média:udpsend-receive.png|Voir le patch écrit pour les versions antérieures.]])&lt;br /&gt;
[[Fichier:udpsend-receive-303.png]]&lt;br /&gt;
&lt;br /&gt;
* Pour l&#039;envoi des données, l&#039;objet &#039;&#039;sendOSC&#039;&#039; est remplacé par un couple d&#039;objets : &#039;&#039;&#039;packOSC&#039;&#039;&#039; et &#039;&#039;&#039;udpsend&#039;&#039;&#039;. Les messages de connexion et déconnexion restent identiques. La sortie de &#039;&#039;udpsend&#039;&#039; peut recevoir un nombre qui affiche l&#039;état de la connexion (0 ou 1). La syntaxe des messages d&#039;envoi est simplifiée : il n&#039;est plus nécessaire d&#039;utiliser le préfixe &#039;&#039;send&#039;&#039; (il suffit, par exemple, d&#039;écrire &#039;&#039;/seq/go&#039;&#039;). De plus, les envois simultanés peuvent être regroupés en &#039;&#039;&#039;un seul message&#039;&#039;&#039;, chaque syntaxe étant séparée par une virgule suivie d&#039;un espace (exemple : &#039;&#039;/grandmaster 127, /seq/go, /sub/1/flash 188, /sub/4/flash 255, /circ/22 50, /circ/24 220&#039;&#039;).&lt;br /&gt;
* Pour la réception des données, les 2 objets &#039;&#039;dumpOSC&#039;&#039; et &#039;&#039;OSCroute&#039;&#039; sont remplacés par le trio &#039;&#039;&#039;udpreceive&#039;&#039;&#039;, &#039;&#039;&#039;unpackOSC&#039;&#039;&#039;, &#039;&#039;&#039;routeOSC&#039;&#039;&#039;. La sortie de droite de &#039;&#039;udpreceive&#039;&#039; donne l&#039;adresse IP de D::Light qui se trouve dans l&#039;OSCwriter.&lt;br /&gt;
* Cette bibliothèque d&#039;objets est associée à Pd-extended mais elle doit être importée dans le patch. L&#039;invocation se fait sous forme d&#039;objets nommés &#039;&#039;&#039;import mrpeach/udpsend&#039;&#039;&#039; et &#039;&#039;&#039;import mrpeach/packOSC&#039;&#039;&#039; pour l&#039;envoi, &#039;&#039;&#039;import mrpeach/udpreceive&#039;&#039;&#039;, &#039;&#039;&#039;import mrpeach/unpackOSC&#039;&#039;&#039; et &#039;&#039;&#039;import mrpeach/routeOSC&#039;&#039;&#039; pour la réception.&lt;br /&gt;
&lt;br /&gt;
On peut accéder à la documentation dans Pd par &#039;&#039;help/browser&#039;&#039;:&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/packOSC-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/routeOSC-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/udpreceive-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/udpsend-help.pd&lt;br /&gt;
Sous linux:&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/packOSC.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/routeOSC.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/udpreceive.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/udpsend.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/unpackOSC.pd_linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le tri des données OSC provenant de D::Light ===&lt;br /&gt;
D::Light renvoie les données sous la forme de &#039;&#039;&#039;nombres&#039;&#039;&#039; (valeurs) ou de &#039;&#039;&#039;listes&#039;&#039;&#039; qui peuvent comporter des nombres mais aussi des symboles. Ces données doivent être triées par Pd afin d&#039;être exploitées séparément. de plus, la version 3.0.3 utilise un &#039;&#039;bundle&#039;&#039; qui envoie des paquets de données multiples qui doivent être séparées.&lt;br /&gt;
* Lorsque le message de réception renvoie un seul nombre, la sortie correspondante de l&#039;objet &#039;&#039;routeOSC&#039;&#039; reçoit un nombre. C&#039;est le cas uniquement pour le message &#039;&#039;/grandmaster&#039;&#039; (niveau) dans la version 3.0.3. C&#039;était le cas, dans les versions antérieures, pour &#039;&#039;/go&#039;&#039; (pas), &#039;&#039;/goback&#039;&#039; (pas) et &#039;&#039;/pause&#039;&#039; (pas).&lt;br /&gt;
* Les messages de réception &#039;&#039;/fadeX1&#039;&#039; et &#039;&#039;/fadeX2&#039;&#039; (anciennement: &#039;&#039;/XfadeX1&#039;&#039; et &#039;&#039;/XfadeX2&#039;&#039;) renvoient une liste de 2 nombres (pas de séquence et niveau). Ils doivent être séparés par l&#039;objet &#039;&#039;&#039;unpack&#039;&#039;&#039; avec 2 arguments &#039;&#039;f f&#039;&#039; (=float) qui spécifient qu&#039;il s&#039;agit de nombres.&lt;br /&gt;
* Les messages de réception &#039;&#039;/X1&#039;&#039;, &#039;&#039;/X2&#039;&#039;, &#039;&#039;/go&#039;&#039;, &#039;&#039;/goback&#039;&#039; et &#039;&#039;/pause&#039;&#039; doivent être extraits par un objet &#039;&#039;&#039;routeOSC&#039;&#039;&#039; de second niveau relié à la sortie du premier &#039;&#039;&#039;routeOSC&#039;&#039;&#039; qui correspond à &#039;&#039;/seq&#039;&#039;.&lt;br /&gt;
* Les messages de réception &#039;&#039;/sub&#039;&#039; et &#039;&#039;/circ&#039;&#039; renvoient une liste qui comporte un symbole (&#039;&#039;/#/level&#039;&#039;) et un nombre (niveau).&lt;br /&gt;
** L&#039;opération la plus simple mais aussi la plus fastidieuse consiste à établir un routage à plusieurs niveaux. Pour les submasters, par exemple, le premier &#039;&#039;&#039;routeOSC&#039;&#039;&#039; extrait les données &#039;&#039;/sub&#039;&#039;, le second les données &#039;&#039;/#&#039;&#039;, le troisième les données &#039;&#039;/level&#039;&#039;, c&#039;est-à-dire la valeur du niveau. Ce qui oblige à reproduire l&#039;opération 250 fois pour les 250 submasters disponibles. De même pour les circuits.&lt;br /&gt;
** Une opération, plus économique, consiste à extraire directement les valeurs numériques en séparant les éléments symboles, non numériques(&#039;&#039;/&#039;&#039; et &#039;&#039;/level&#039;&#039;), grâce à un séparateur. Symbole et nombre doivent préalablement être séparés par l&#039;objet &#039;&#039;&#039;unpack&#039;&#039;&#039; avec 2 arguments qui sont &#039;&#039;s&#039;&#039; (=symbole) et &#039;&#039;f&#039;&#039; (=float). Le séparateur permet ensuite d&#039;extraire le numéro de sub. On utilise pour cela l&#039;objet &#039;&#039;&#039;symbol2list&#039;&#039;&#039; qui reçoit à gauche le symbole et à droite un message comportant le signe séparateur. Un nouvel objet &#039;&#039;&#039;unpack&#039;&#039;&#039; ayant &#039;&#039;f&#039;&#039; comme argument permet alors de récupérer le nombre qui était associé au slash. On peut procéder de la même manière pour les circuits. L&#039;avantage est de taille: 2 nombres permettent la réception de &#039;&#039;toutes&#039;&#039; les données concernant les submasters (numéro de sub et niveau), de même pour les circuits. Il ne reste plus qu&#039;à les dispatcher selon les besoins... (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Note: les patches ci-dessous sont écrits pour la version 3.0.3 de D::Light&#039;&#039;. [[Média:receive-osc.png|Voir le patch écrit pour les versions antérieures.]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Routage &amp;quot;classique&amp;quot; des données :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:receive-osc-303a.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Routage &amp;quot;économique&amp;quot; des données :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:udp-sr-extract-303.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le dispatch des données OSC &#039;&#039;/sub&#039;&#039; et &#039;&#039;/circ&#039;&#039; provenant de D::Light ===&lt;br /&gt;
Dans le routage &amp;quot;économique&amp;quot; présenté ci-dessus, toutes les données envoyées par D::Light concernant les submasters et les circuits sont concaténées en deux objets &#039;&#039;nombre&#039;&#039;: l&#039;un pour le numéro de sub (ou de circuit), l&#039;autre pour la valeur du niveau. Pour qu&#039;elles soient lisibles et exploitables il faut effectuer leur séparation et leur répartition.&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;dispatch&#039;&#039;&#039; va permettre de faire apparaître, pour chaque submaster et pour chaque circuit, sa valeur respective.&lt;br /&gt;
* Cet objet &#039;&#039;&#039;dispatch&#039;&#039;&#039; nécessite l&#039;importation d&#039;une bibliothèque associée à &#039;&#039;Pd-extended&#039;&#039;: pour cela, on crée un objet &#039;&#039;&#039;import moonlib/dispatch&#039;&#039;&#039;.&lt;br /&gt;
* On crée ensuite 2 objets &#039;&#039;&#039;dispatch&#039;&#039;&#039;, l&#039;un pour les &#039;&#039;subs&#039;&#039;, l&#039;autre pour les &#039;&#039;circuits&#039;&#039;, dans lesquels on déclare en arguments la syntaxe générique utilisée pour chacun et les minima et maxima, c&#039;est-à-dire les numéro du premier et du dernier submasters dont on veut récupérer les données (dans l&#039;exemple ci-dessous, de 1 à 10). Même déclaration pour les circuits. Ce qui donne: &#039;&#039;&#039;dispatch $0-sub 1 10&#039;&#039;&#039; et &#039;&#039;&#039;dispatch $0-circ 1 10&#039;&#039;&#039;. Si l&#039;on veut récupérer les valeurs de 250 submasters et de 120 circuits, on déclarera: &#039;&#039;&#039;dispatch $0-sub 1 250&#039;&#039;&#039; et &#039;&#039;&#039;dispatch $0-circ 1 120&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le &#039;&#039;dispatch&#039;&#039; des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; (exemple pour 10 submasters et 10 circuits) :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:osc-dispatch-303-1.png]]&lt;br /&gt;
&lt;br /&gt;
* Reste à créer les objets qui vont réceptionner les données (dans l&#039;exemple, ce sont des objets &#039;&#039;nombre&#039;&#039; mais on pourrait utiliser des &#039;&#039;sliders&#039;&#039;, des objets &#039;&#039;symbole&#039;&#039; ou faire apparaître les données comme &#039;&#039;label&#039;&#039; de &#039;&#039;canvas&#039;&#039;). Chacun devra comporter en &#039;&#039;label&#039;&#039; le nom et le numéro qui lui correspond afin de les identifier (&#039;&#039;Sb-1&#039;&#039;, &#039;&#039;Sb-2&#039;&#039;... &#039;&#039;Ch-1&#039;&#039;, &#039;&#039;Ch-2&#039;&#039;...).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les objets de réception des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; (exemple pour 10 submasters et 10 circuits) :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:osc-dispatch-303-2.png]]&lt;br /&gt;
&lt;br /&gt;
Dernière opération: la création des messages d&#039;envoi et de réception.&lt;br /&gt;
* Les nombres issus de &#039;&#039;&#039;routeOSC&#039;&#039;&#039; qui correspondent aux numéros et aux valeurs sont compactés par un objet &#039;&#039;&#039;pack f f&#039;&#039;&#039; puis envoyés (&#039;&#039;s&#039;&#039; = &#039;&#039;send&#039;&#039;) par un message qui reprend la syntaxe générique initialement déclarée à laquelle on ajoute le suffixe &#039;&#039;-rcv&#039;&#039; (&#039;&#039;receive&#039;&#039;). Ce qui donne: &#039;&#039;&#039;s $0-sub-rcv&#039;&#039;&#039; et &#039;&#039;&#039;s $0-circ-rcv&#039;&#039;&#039;.&lt;br /&gt;
* Chaque objet objet &#039;&#039;nombre&#039;&#039; appelé à réceptionner les données doit avoir la même déclaration en réception à laquelle s&#039;ajoute son numéro propre: &#039;&#039;&#039;r $0-sub1-rcv&#039;&#039;&#039; pour le sub n°1 et &#039;&#039;&#039;r $0-sub2-rcv&#039;&#039;&#039; pour le sub n°2, etc. De même pour les circuits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les messages de réception des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:osc-dispatch-303-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et hop, le tour est joué: chaque objet &#039;&#039;nombre&#039;&#039; reçoit instantanément son dû!&lt;br /&gt;
&lt;br /&gt;
Pour tester, on peut créer dans D::Light 10 groupes affectés aux submasters 1 à 10 et envoyer le message suivant:&lt;br /&gt;
[[Fichier:sub-envoi-1.png]]&lt;br /&gt;
&lt;br /&gt;
On peut éventuellement sophistiquer l&#039;ensemble en établissant au préalable une conversion des niveaux 0-255 en 0-100, puis transformer ces valeurs numériques en symboles, grâce à l&#039;objet &#039;&#039;&#039;ftos&#039;&#039;&#039; (&#039;&#039;float to symbol&#039;&#039;) afin d&#039;ajouter, par un sélecteur, un message qui remplace la valeur 100 en FF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
=== Documents complémentaires ===&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=0AhgzuANs_G4GdDR4MkhmTm5ZN053bTh0MzVmeTB4ZXc&amp;amp;hl=fr Tableau Google.doc avec annotations pour la Bibliothèque OSC de D::Light]&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://opensoundcontrol.org Site officiel OSC]&lt;br /&gt;
* [http://www.interface-z.com/patchs/ut-osc.htm La communication OSC selon Interface-Z]&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels ===&lt;/div&gt;</summary>
		<author><name>Nomatter</name></author>
	</entry>
	<entry>
		<id>https://getdlight.com/wiki/index.php?title=OSC&amp;diff=302</id>
		<title>OSC</title>
		<link rel="alternate" type="text/html" href="https://getdlight.com/wiki/index.php?title=OSC&amp;diff=302"/>
		<updated>2015-02-01T19:37:53Z</updated>

		<summary type="html">&lt;p&gt;Nomatter : /* Syntaxe OSC de la version 4.0.0._b18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L&#039;&#039;&#039;&#039;OSC&#039;&#039;&#039; (&#039;&#039;Open Sound Control&#039;&#039;) est un protocole de transmission de données en temps réel entre plusieurs logiciels. La communication entre ces logiciels assure l&#039;envoi et la réception des flux de données par une connexion réseau en utilisant le protocole UDP (&#039;&#039;User Datagram Protocol&#039;&#039;), qui est la couche de transport du protocole TCP/IP (&#039;&#039;Transmission Control Protocol&#039;&#039;, &#039;&#039;Internet Protocol&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
L&#039;&#039;&#039;&#039;OSC&#039;&#039;&#039; se caractérise par sa rapidité et sa flexibilité. Il ne provoque aucune latence perceptible lors de l&#039;envoi ou de la réception des données.&lt;br /&gt;
&lt;br /&gt;
Les logiciels mis en communication peuvent être installés sur la même machine ou sur des machines distinctes. Ainsi, D::Light peut être piloté par une autre application installée sur le même ordinateur ou bien être commandé à distance depuis depuis un iPhone ou un autre ordinateur par connection filaire, WIFI ou Internet.&lt;br /&gt;
&lt;br /&gt;
En utilisant le protocole OSC, D::Light peut aussi lui-même commander d&#039;autres machines par le biais d&#039;une application comme Pure Data ou Max/Msp: un pas de séquence peut par exemple déclencher les pistes-son d&#039;un player et des submasters peuvent être affectés à de multiples fonctions de déclenchement (play, pause, controle d&#039;un fade son, etc.).&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Communication OSC avec D::Light ==&lt;br /&gt;
&lt;br /&gt;
La transmission des données vers D::Light doit impérativement spécifier l&#039;adresse de la machine (&#039;&#039;localhost&#039;&#039; ou adresse IP) et le numéro du port.&lt;br /&gt;
&lt;br /&gt;
Par défaut, le port assigné à D::Light pour l&#039;envoi des messages est &#039;&#039;&#039;7000&#039;&#039;&#039;. La réception des données provenant de D::Light est assignée au port &#039;&#039;&#039;7001&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Le statut et le port d&#039;envoi OSC de D::Light doivent également être activés. Lorsqu&#039;on enregistre une conduite, si la communication OSC de D::Light est activée, l&#039;activation reste mémorisée dans la conduite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activation OSC dans la version 3.0.3 ===&lt;br /&gt;
Dans cette nouvelle version, l&#039;activation OSC est accessible par le menu Display puis [[SETUP]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activation OSC dans les versions antérieures à 3.0.3 ===&lt;br /&gt;
Dans le menu &#039;&#039;OSC&#039;&#039;, la fenêtre &#039;&#039;OSC Control&#039;&#039; permet l&#039;activation de l&#039;envoi et de la réception OSC en cochant les cases respectives.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:OSCcontrol302.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bibliothèque OSC de D::Light ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dans les tableaux suivants, le signe # correspond toujours à un numéro (de circuit, de pas de séquence, de submaster). Lorsqu&#039;aucune valeur n&#039;est mentionnée, c&#039;est que seule la syntaxe de l&#039;adresse suffit. Lorsque la syntaxe de réception est absente, c&#039;est qu&#039;elle est inexistante (inutile ou pas encore implémentée)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntaxe OSC de la version 3.0.2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Niveau du circuit # || /circ/# || 0-255 || /circ || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau Grandmaster || /grandmaster || 0-255 || /grandmaster || 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Pas de séquence || /seq || # || /seq || #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Go || /seq/go || || /go || #&lt;br /&gt;
|-&lt;br /&gt;
| GoBack || /seq/goback || || /goback || #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pause || /seq/pause || || /pause || #&lt;br /&gt;
|-&lt;br /&gt;
| Fader X1 || /seq/xfade_x1 || 0-255 || /XfadeX1 || # 255-0&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X2 || /seq/xfade_x2 || 0-255 || /XfadeX2 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time ou Flash || /sub/#/flash || 0-255 || /sub || /# 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur Time/Flash du sub # || /sub/#/mode || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Solo (sub # prioritaire) || /sub/#/type || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pavé numérique || /pad/1...9 || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Point du pavé numérique || /pad/dot || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CHANNEL || /pad/channel || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| LEVEL || /pad/level || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| FULL || /pad/ff || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| THRU || /pad/thru || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CLEAR || /pad/clear || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) || /pad/freeze || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout || /pad/blackout || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| + || /pad/plus || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| - || /pad/moins || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| +% || /pad/pluspourcent || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| -% || /pad/moinspourcent || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| ALL || /pad/all || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Validation (ENTER) || /pad/enter || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélection active à zéro || /pad/clearclear || || || &lt;br /&gt;
|-&lt;br /&gt;
| Clone || /pad/clone || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Inv || /pad/inv || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Scène || /pad/scene || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Scène || /pad/X1 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/prepa || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/X2 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Ouverture de la fenêtre de check || /checkcirc/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Circuit à checker || /checkcirc/circ || 0-512 || || &lt;br /&gt;
|-&lt;br /&gt;
| Niveau de test des circuits || /checkcirc/level || 0-255 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Teste le circuit suivant || /checkcirc/next || || || &lt;br /&gt;
|-&lt;br /&gt;
| Teste le circuit précédent || /checkcirc/prev || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes à propos de la version 3.0.2 ===&lt;br /&gt;
* &#039;&#039;&#039;Circuits et Submasters&#039;&#039;&#039; : Dans le tableau ci-dessus, les messages renvoyés par D::Light concernant les circuits et les submasters correspondent à la syntaxe de la version 3.0.2. Dans les versions antérieures, la syntaxe est la suivante:&lt;br /&gt;
** &#039;&#039;/circ/#&#039;&#039; renvoie la valeur (0-255) du circuit #.&lt;br /&gt;
** &#039;&#039;/sub/#&#039;&#039; renvoie la valeur (0-255) du submaster #.&lt;br /&gt;
* &#039;&#039;&#039;Fader X1&#039;&#039;&#039; : La valeur du Fader X1 renvoyée par D::Light est toujours inversée. &#039;&#039;Exemple: si la valeur envoyée est 255, la valeur retournée est 0&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Temporisation des Submasters&#039;&#039;&#039; :&lt;br /&gt;
** Lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, si le submaster est temporisé (mode TIME), son temps de montée est celui de la temporisation, sinon (mode FLASH) sa montée est instantanée.&lt;br /&gt;
** Pour contrôler la temporisation indépendamment du temps programmé dans la mémoire du submaster, il faut utiliser la syntaxe &#039;&#039;/sub/#/level&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Niveau des Submasters&#039;&#039;&#039; :&lt;br /&gt;
** En mode TIME, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light sont indifférents à la valeur envoyée. Ils ne dépendent que du niveau mémorisé dans le submaster (TARGET). Pour activer le submaster, il suffit que la valeur soit supérieure à 0 (entre 1 et 255).&lt;br /&gt;
** En mode FLASH, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light dépendent du niveau mémorisé dans le submaster (TARGET) &#039;&#039;ET&#039;&#039; de la valeur envoyée. &#039;&#039;Exemple: si le TARGET est 128 et la valeur envoyée est 128, le niveau effectif sera 25% et la valeur renvoyée 64&#039;&#039;.&lt;br /&gt;
** En mode TIME ou FLASH, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/level&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light correspondent uniquement à la valeur envoyée, quelle que soit la valeur TARGET mémorisée dans le submaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modifications de syntaxe OSC dans la version 3.0.3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le tableau ci-dessous récapitule uniquement les changements de syntaxe qui apparaissent dans la &#039;&#039;&#039;version 3.0.3&#039;&#039;&#039; de D::Light (21 décembre 2010).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| Go ||rowspan=&amp;quot;3&amp;quot;| /seq/go ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /go #&lt;br /&gt;
|-&lt;br /&gt;
| /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| GoBack ||rowspan=&amp;quot;3&amp;quot;| /seq/goback ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /goback #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;30%&amp;quot;|  Pause ||width=&amp;quot;20%&amp;quot;| /seq/pause ||width=&amp;quot;15%&amp;quot;| ||width=&amp;quot;20%&amp;quot;| /seq ||width=&amp;quot;15%&amp;quot;| /pause #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X1 (mode scène) ||rowspan=&amp;quot;2&amp;quot;| /seq/X1 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X2 (mode prépa) ||rowspan=&amp;quot;2&amp;quot;| /seq/X2 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X1 || /seq/fadeX1 || 0-255 || /fadeX1 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Fader X2 || /seq/fadeX2 || 0-255 || /fadeX2 || # 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Submaster # Flash || /sub/#/flash || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time || /sub/#/flash || 1-255 || /sub || /#/level 0-255&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes à propos de la version 3.0.3 ===&lt;br /&gt;
L&#039;essentiel des modifications concerne les informations renvoyées par D::Light. Les messages de retour sont moins nombreux et leur syntaxe est simplifiée alors que les informations renvoyées sont plus complètes.&lt;br /&gt;
&lt;br /&gt;
Le revers de cette simplification, c&#039;est une complexité plus grande dans le traitement des informations retournées par D::Light puisque une même commande déclenche en retour le renvoi de plusieurs informations différentes, regroupées en listes dont les valeurs ne sont pas toutes numériques.&lt;br /&gt;
&lt;br /&gt;
Ces modifications permettent tout particulièrement un meilleur suivi des &#039;&#039;&#039;pas de séquences&#039;&#039;&#039; pour toutes les commandes de séquences qui retournent systématiquement les états respectifs en X1 et X2. Désormais, une syntaxe unique (&#039;&#039;/seq&#039;&#039;) permet de connaître le type de commande utilisée (&#039;&#039;go&#039;&#039;, &#039;&#039;goback&#039;&#039;, &#039;&#039;pause&#039;&#039;, &#039;&#039;mode scène&#039;&#039;, &#039;&#039;mode prépa&#039;&#039;), le pas de séquence commandé et les pas de séquence en X1 et en X2 &#039;&#039;en fin d&#039;action&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxe OSC de la version 4.0.0._b18 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;| Go ||rowspan=&amp;quot;5&amp;quot;| /seq/go ||rowspan=&amp;quot;5&amp;quot;| ||rowspan=&amp;quot;5&amp;quot;| /seq || /go #&lt;br /&gt;
|-&lt;br /&gt;
| /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
| /X1ActiveCue #&lt;br /&gt;
|-&lt;br /&gt;
| /X2ActiveCue #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| GoBack ||rowspan=&amp;quot;3&amp;quot;| /seq/goback ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /goback #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;30%&amp;quot;|  Pause ||width=&amp;quot;20%&amp;quot;| /seq/pause ||width=&amp;quot;15%&amp;quot;| ||width=&amp;quot;20%&amp;quot;| /seq ||width=&amp;quot;15%&amp;quot;| /pause #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X1 (mode scène) ||rowspan=&amp;quot;2&amp;quot;| /seq/X1 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X2 (mode prépa) ||rowspan=&amp;quot;2&amp;quot;| /seq/X2 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X1 || /seq/fadeX1 || 0-255 || /fadeX1 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Fader X2 || /seq/fadeX2 || 0-255 || /fadeX2 || # 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Goto Step # || /seq/goto || # ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| Kill Submasters || /sub/kill || # ||  ||&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Submaster # Flash || /sub/#/flash || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time || /sub/#/flash || 1-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Niveau du circuit # || /circ/# || 0-255 || /circ || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau Grandmaster || /grandmaster || 0-255 || /grandmaster || 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur Time/Flash/Inhib du sub # || /sub/#/mode || 1-2-3 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Solo (sub # prioritaire) || /sub/#/type || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pavé numérique || /pad/1...9 || 1 ||/pad/saisieText ||#&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Point du pavé numérique || /pad/dot || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CHANNEL || /pad/channel || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| LEVEL || /pad/level || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| FULL || /pad/ff || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| THRU || /pad/thru || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CLEAR || /pad/clear || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) (Toggle mode)|| /pad/freeze || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) (Set mode)|| /force/freeze || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout (Toggle mode)|| /pad/blackout || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout (Set mode)|| /force/blackout || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| + || /pad/plus || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| - || /pad/moins || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| +% || /pad/pluspourcent || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| -% || /pad/moinspourcent || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| ALL || /pad/all || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Validation (ENTER) || /pad/enter || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélection active à zéro || /pad/clearclear || || || &lt;br /&gt;
|-&lt;br /&gt;
| Clone || /pad/clone || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Inv || /pad/inv || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Scène || /pad/scene || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Scène || /pad/X1 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/prepa || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/X2 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Ouverture de la fenêtre de check || /checkcirc/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Circuit à checker || /checkcirc/circ || 0-512 || || &lt;br /&gt;
|-&lt;br /&gt;
| Niveau de test des circuits || /checkcirc/level || 0-255 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Teste le circuit suivant || /checkcirc/next || || || &lt;br /&gt;
|-&lt;br /&gt;
| Teste le circuit précédent || /checkcirc/prev || || || &lt;br /&gt;
|-&lt;br /&gt;
| Open PATCH window || /patch/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Checking level (patch) || /patch/levelRequest || 0-255 ||/patch/displayLevel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Pad Digits (patch) || /patch/# || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Dot (patch)|| /patch/dot ||1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Inserted Digits (patch)||  ||  || /patch/input||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Clear (patch)|| /patch/clear || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pad Thru (patch)|| /patch/thru || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Next (patch)|| /patch/next || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pad Prev (patch)|| /patch/prev || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Display Channel (patch)||  || ||/patch/displayChannel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Display Patched Dimmer (patch)||  || || /patch/displayDimmer ||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Switch DIM-CHAN (patch)|| /patch/switch || 0-1 ||/patch/displayActiveSwitch ||DIM-CH &lt;br /&gt;
|-&lt;br /&gt;
| Active Channel (patch)||  ||  ||/patch/displayActiveChannel ||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Active Dimmer (patch)||  || ||/patch/displayActiveDimmer ||# &lt;br /&gt;
|-&lt;br /&gt;
| Active Thru Dimmer (patch)||  ||  || /patch/displayActiveThru||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Add Patch|| /patch/plus ||1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Remove Patch||/patch/moins ||1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Test Channel (patch)|| /patch/testChannel || 0-1 ||/patch/testChannel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Test Dimmer (patch)||/patch/testDimmer  ||0-1  ||/patch/testDimmer ||# &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Communication OSC entre D::Light et Pure Data ==&lt;br /&gt;
&lt;br /&gt;
=== L&#039;envoi des données vers D::Light ===&lt;br /&gt;
Un seul objet est nécessaire :&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;sendOSC&#039;&#039;&#039;. Il doit recevoir un message qui établit la connexion (&#039;&#039;connect&#039;&#039;), indique à &#039;&#039;sendOSC&#039;&#039; vers quelle machine envoyer les informations (&#039;&#039;localhost&#039;&#039; si c&#039;est la même machine ou adresse IP s&#039;il s&#039;agit d&#039;une machine distante) et lui précise que l&#039;on s&#039;adresse à D::Light en spécifiant son port (&#039;&#039;&#039;7000&#039;&#039;&#039;). Un second message (&#039;&#039;disconnect&#039;&#039;) permet la déconnexion manuelle. Facultativement, un objet &#039;&#039;&#039;loadbang&#039;&#039;&#039; permet d&#039;activer automatiquement la connexion à l&#039;ouverture du patch Pd. Mais l&#039;état de la connexion ne peut pas être affiché. La syntaxe des messages d&#039;envoi doit toujours commencer par le préfixe &#039;&#039;send&#039;&#039; (exemple : &#039;&#039;send /seq/go&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La réception des données provenant de D::Light ===&lt;br /&gt;
Deux objets sont nécessaires :&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;dumpOSC&#039;&#039;&#039; permet de recevoir les messages OSC. On lui attribue en paramètre le numéro de port de D::Light (&#039;&#039;&#039;7001&#039;&#039;&#039;).&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;OSCroute&#039;&#039;&#039;, permet de trier les messages arrivant par l&#039;objet &#039;&#039;dumpOSC&#039;&#039;. Les messages de réception des données provenant de D::Light constituent les paramètres de cet objet. Par chaque sortie on récupère les valeurs et/ou les symboles correspondants aux messages inscrits en paramètres selon leur ordre respectif. En l&#039;absence de paramètre, la sortie de gauche liste les dernières informations reçues (par exemple : &#039;&#039;/4 255&#039;&#039; si le submaster 4 est à full).&lt;br /&gt;
[[Fichier:send-dump-osc.png]]&lt;br /&gt;
&lt;br /&gt;
=== Les objets OSC de Martin Peach ===&lt;br /&gt;
L&#039;informaticien canadien Martin Peach a implémenté depuis 2008 de nouveaux objets qui sont intégrés à l&#039;une des bibliothèques associées aux dernières versions de Pd-extended. Outre leur meilleure fiabilité par rapport aux objets &#039;&#039;sendOSC&#039;&#039;, &#039;&#039;dumpOSC&#039;&#039;, &#039;&#039;OSCroute&#039;&#039;, ils permettent de créer des messages plus complexes avec une syntaxe simplifiée et, surtout, l&#039;envoi, la réception et le tri de paquets pouvant comporter des milliers d&#039;informations simultanées (et cela, sans le moindre bug).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Note: le patch ci-dessous est écrit pour la version 3.0.3 de D::Light&#039;&#039;. [[Média:udpsend-receive.png|Voir le patch écrit pour les versions antérieures.]])&lt;br /&gt;
[[Fichier:udpsend-receive-303.png]]&lt;br /&gt;
&lt;br /&gt;
* Pour l&#039;envoi des données, l&#039;objet &#039;&#039;sendOSC&#039;&#039; est remplacé par un couple d&#039;objets : &#039;&#039;&#039;packOSC&#039;&#039;&#039; et &#039;&#039;&#039;udpsend&#039;&#039;&#039;. Les messages de connexion et déconnexion restent identiques. La sortie de &#039;&#039;udpsend&#039;&#039; peut recevoir un nombre qui affiche l&#039;état de la connexion (0 ou 1). La syntaxe des messages d&#039;envoi est simplifiée : il n&#039;est plus nécessaire d&#039;utiliser le préfixe &#039;&#039;send&#039;&#039; (il suffit, par exemple, d&#039;écrire &#039;&#039;/seq/go&#039;&#039;). De plus, les envois simultanés peuvent être regroupés en &#039;&#039;&#039;un seul message&#039;&#039;&#039;, chaque syntaxe étant séparée par une virgule suivie d&#039;un espace (exemple : &#039;&#039;/grandmaster 127, /seq/go, /sub/1/flash 188, /sub/4/flash 255, /circ/22 50, /circ/24 220&#039;&#039;).&lt;br /&gt;
* Pour la réception des données, les 2 objets &#039;&#039;dumpOSC&#039;&#039; et &#039;&#039;OSCroute&#039;&#039; sont remplacés par le trio &#039;&#039;&#039;udpreceive&#039;&#039;&#039;, &#039;&#039;&#039;unpackOSC&#039;&#039;&#039;, &#039;&#039;&#039;routeOSC&#039;&#039;&#039;. La sortie de droite de &#039;&#039;udpreceive&#039;&#039; donne l&#039;adresse IP de D::Light qui se trouve dans l&#039;OSCwriter.&lt;br /&gt;
* Cette bibliothèque d&#039;objets est associée à Pd-extended mais elle doit être importée dans le patch. L&#039;invocation se fait sous forme d&#039;objets nommés &#039;&#039;&#039;import mrpeach/udpsend&#039;&#039;&#039; et &#039;&#039;&#039;import mrpeach/packOSC&#039;&#039;&#039; pour l&#039;envoi, &#039;&#039;&#039;import mrpeach/udpreceive&#039;&#039;&#039;, &#039;&#039;&#039;import mrpeach/unpackOSC&#039;&#039;&#039; et &#039;&#039;&#039;import mrpeach/routeOSC&#039;&#039;&#039; pour la réception.&lt;br /&gt;
&lt;br /&gt;
On peut accéder à la documentation dans Pd par &#039;&#039;help/browser&#039;&#039;:&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/packOSC-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/routeOSC-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/udpreceive-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/udpsend-help.pd&lt;br /&gt;
Sous linux:&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/packOSC.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/routeOSC.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/udpreceive.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/udpsend.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/unpackOSC.pd_linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le tri des données OSC provenant de D::Light ===&lt;br /&gt;
D::Light renvoie les données sous la forme de &#039;&#039;&#039;nombres&#039;&#039;&#039; (valeurs) ou de &#039;&#039;&#039;listes&#039;&#039;&#039; qui peuvent comporter des nombres mais aussi des symboles. Ces données doivent être triées par Pd afin d&#039;être exploitées séparément. de plus, la version 3.0.3 utilise un &#039;&#039;bundle&#039;&#039; qui envoie des paquets de données multiples qui doivent être séparées.&lt;br /&gt;
* Lorsque le message de réception renvoie un seul nombre, la sortie correspondante de l&#039;objet &#039;&#039;routeOSC&#039;&#039; reçoit un nombre. C&#039;est le cas uniquement pour le message &#039;&#039;/grandmaster&#039;&#039; (niveau) dans la version 3.0.3. C&#039;était le cas, dans les versions antérieures, pour &#039;&#039;/go&#039;&#039; (pas), &#039;&#039;/goback&#039;&#039; (pas) et &#039;&#039;/pause&#039;&#039; (pas).&lt;br /&gt;
* Les messages de réception &#039;&#039;/fadeX1&#039;&#039; et &#039;&#039;/fadeX2&#039;&#039; (anciennement: &#039;&#039;/XfadeX1&#039;&#039; et &#039;&#039;/XfadeX2&#039;&#039;) renvoient une liste de 2 nombres (pas de séquence et niveau). Ils doivent être séparés par l&#039;objet &#039;&#039;&#039;unpack&#039;&#039;&#039; avec 2 arguments &#039;&#039;f f&#039;&#039; (=float) qui spécifient qu&#039;il s&#039;agit de nombres.&lt;br /&gt;
* Les messages de réception &#039;&#039;/X1&#039;&#039;, &#039;&#039;/X2&#039;&#039;, &#039;&#039;/go&#039;&#039;, &#039;&#039;/goback&#039;&#039; et &#039;&#039;/pause&#039;&#039; doivent être extraits par un objet &#039;&#039;&#039;routeOSC&#039;&#039;&#039; de second niveau relié à la sortie du premier &#039;&#039;&#039;routeOSC&#039;&#039;&#039; qui correspond à &#039;&#039;/seq&#039;&#039;.&lt;br /&gt;
* Les messages de réception &#039;&#039;/sub&#039;&#039; et &#039;&#039;/circ&#039;&#039; renvoient une liste qui comporte un symbole (&#039;&#039;/#/level&#039;&#039;) et un nombre (niveau).&lt;br /&gt;
** L&#039;opération la plus simple mais aussi la plus fastidieuse consiste à établir un routage à plusieurs niveaux. Pour les submasters, par exemple, le premier &#039;&#039;&#039;routeOSC&#039;&#039;&#039; extrait les données &#039;&#039;/sub&#039;&#039;, le second les données &#039;&#039;/#&#039;&#039;, le troisième les données &#039;&#039;/level&#039;&#039;, c&#039;est-à-dire la valeur du niveau. Ce qui oblige à reproduire l&#039;opération 250 fois pour les 250 submasters disponibles. De même pour les circuits.&lt;br /&gt;
** Une opération, plus économique, consiste à extraire directement les valeurs numériques en séparant les éléments symboles, non numériques(&#039;&#039;/&#039;&#039; et &#039;&#039;/level&#039;&#039;), grâce à un séparateur. Symbole et nombre doivent préalablement être séparés par l&#039;objet &#039;&#039;&#039;unpack&#039;&#039;&#039; avec 2 arguments qui sont &#039;&#039;s&#039;&#039; (=symbole) et &#039;&#039;f&#039;&#039; (=float). Le séparateur permet ensuite d&#039;extraire le numéro de sub. On utilise pour cela l&#039;objet &#039;&#039;&#039;symbol2list&#039;&#039;&#039; qui reçoit à gauche le symbole et à droite un message comportant le signe séparateur. Un nouvel objet &#039;&#039;&#039;unpack&#039;&#039;&#039; ayant &#039;&#039;f&#039;&#039; comme argument permet alors de récupérer le nombre qui était associé au slash. On peut procéder de la même manière pour les circuits. L&#039;avantage est de taille: 2 nombres permettent la réception de &#039;&#039;toutes&#039;&#039; les données concernant les submasters (numéro de sub et niveau), de même pour les circuits. Il ne reste plus qu&#039;à les dispatcher selon les besoins... (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Note: les patches ci-dessous sont écrits pour la version 3.0.3 de D::Light&#039;&#039;. [[Média:receive-osc.png|Voir le patch écrit pour les versions antérieures.]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Routage &amp;quot;classique&amp;quot; des données :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:receive-osc-303a.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Routage &amp;quot;économique&amp;quot; des données :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:udp-sr-extract-303.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le dispatch des données OSC &#039;&#039;/sub&#039;&#039; et &#039;&#039;/circ&#039;&#039; provenant de D::Light ===&lt;br /&gt;
Dans le routage &amp;quot;économique&amp;quot; présenté ci-dessus, toutes les données envoyées par D::Light concernant les submasters et les circuits sont concaténées en deux objets &#039;&#039;nombre&#039;&#039;: l&#039;un pour le numéro de sub (ou de circuit), l&#039;autre pour la valeur du niveau. Pour qu&#039;elles soient lisibles et exploitables il faut effectuer leur séparation et leur répartition.&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;dispatch&#039;&#039;&#039; va permettre de faire apparaître, pour chaque submaster et pour chaque circuit, sa valeur respective.&lt;br /&gt;
* Cet objet &#039;&#039;&#039;dispatch&#039;&#039;&#039; nécessite l&#039;importation d&#039;une bibliothèque associée à &#039;&#039;Pd-extended&#039;&#039;: pour cela, on crée un objet &#039;&#039;&#039;import moonlib/dispatch&#039;&#039;&#039;.&lt;br /&gt;
* On crée ensuite 2 objets &#039;&#039;&#039;dispatch&#039;&#039;&#039;, l&#039;un pour les &#039;&#039;subs&#039;&#039;, l&#039;autre pour les &#039;&#039;circuits&#039;&#039;, dans lesquels on déclare en arguments la syntaxe générique utilisée pour chacun et les minima et maxima, c&#039;est-à-dire les numéro du premier et du dernier submasters dont on veut récupérer les données (dans l&#039;exemple ci-dessous, de 1 à 10). Même déclaration pour les circuits. Ce qui donne: &#039;&#039;&#039;dispatch $0-sub 1 10&#039;&#039;&#039; et &#039;&#039;&#039;dispatch $0-circ 1 10&#039;&#039;&#039;. Si l&#039;on veut récupérer les valeurs de 250 submasters et de 120 circuits, on déclarera: &#039;&#039;&#039;dispatch $0-sub 1 250&#039;&#039;&#039; et &#039;&#039;&#039;dispatch $0-circ 1 120&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le &#039;&#039;dispatch&#039;&#039; des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; (exemple pour 10 submasters et 10 circuits) :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:osc-dispatch-303-1.png]]&lt;br /&gt;
&lt;br /&gt;
* Reste à créer les objets qui vont réceptionner les données (dans l&#039;exemple, ce sont des objets &#039;&#039;nombre&#039;&#039; mais on pourrait utiliser des &#039;&#039;sliders&#039;&#039;, des objets &#039;&#039;symbole&#039;&#039; ou faire apparaître les données comme &#039;&#039;label&#039;&#039; de &#039;&#039;canvas&#039;&#039;). Chacun devra comporter en &#039;&#039;label&#039;&#039; le nom et le numéro qui lui correspond afin de les identifier (&#039;&#039;Sb-1&#039;&#039;, &#039;&#039;Sb-2&#039;&#039;... &#039;&#039;Ch-1&#039;&#039;, &#039;&#039;Ch-2&#039;&#039;...).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les objets de réception des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; (exemple pour 10 submasters et 10 circuits) :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:osc-dispatch-303-2.png]]&lt;br /&gt;
&lt;br /&gt;
Dernière opération: la création des messages d&#039;envoi et de réception.&lt;br /&gt;
* Les nombres issus de &#039;&#039;&#039;routeOSC&#039;&#039;&#039; qui correspondent aux numéros et aux valeurs sont compactés par un objet &#039;&#039;&#039;pack f f&#039;&#039;&#039; puis envoyés (&#039;&#039;s&#039;&#039; = &#039;&#039;send&#039;&#039;) par un message qui reprend la syntaxe générique initialement déclarée à laquelle on ajoute le suffixe &#039;&#039;-rcv&#039;&#039; (&#039;&#039;receive&#039;&#039;). Ce qui donne: &#039;&#039;&#039;s $0-sub-rcv&#039;&#039;&#039; et &#039;&#039;&#039;s $0-circ-rcv&#039;&#039;&#039;.&lt;br /&gt;
* Chaque objet objet &#039;&#039;nombre&#039;&#039; appelé à réceptionner les données doit avoir la même déclaration en réception à laquelle s&#039;ajoute son numéro propre: &#039;&#039;&#039;r $0-sub1-rcv&#039;&#039;&#039; pour le sub n°1 et &#039;&#039;&#039;r $0-sub2-rcv&#039;&#039;&#039; pour le sub n°2, etc. De même pour les circuits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les messages de réception des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:osc-dispatch-303-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et hop, le tour est joué: chaque objet &#039;&#039;nombre&#039;&#039; reçoit instantanément son dû!&lt;br /&gt;
&lt;br /&gt;
Pour tester, on peut créer dans D::Light 10 groupes affectés aux submasters 1 à 10 et envoyer le message suivant:&lt;br /&gt;
[[Fichier:sub-envoi-1.png]]&lt;br /&gt;
&lt;br /&gt;
On peut éventuellement sophistiquer l&#039;ensemble en établissant au préalable une conversion des niveaux 0-255 en 0-100, puis transformer ces valeurs numériques en symboles, grâce à l&#039;objet &#039;&#039;&#039;ftos&#039;&#039;&#039; (&#039;&#039;float to symbol&#039;&#039;) afin d&#039;ajouter, par un sélecteur, un message qui remplace la valeur 100 en FF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
=== Documents complémentaires ===&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=0AhgzuANs_G4GdDR4MkhmTm5ZN053bTh0MzVmeTB4ZXc&amp;amp;hl=fr Tableau Google.doc avec annotations pour la Bibliothèque OSC de D::Light]&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://opensoundcontrol.org Site officiel OSC]&lt;br /&gt;
* [http://www.interface-z.com/patchs/ut-osc.htm La communication OSC selon Interface-Z]&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels ===&lt;/div&gt;</summary>
		<author><name>Nomatter</name></author>
	</entry>
	<entry>
		<id>https://getdlight.com/wiki/index.php?title=OSC&amp;diff=301</id>
		<title>OSC</title>
		<link rel="alternate" type="text/html" href="https://getdlight.com/wiki/index.php?title=OSC&amp;diff=301"/>
		<updated>2015-01-24T00:30:22Z</updated>

		<summary type="html">&lt;p&gt;Nomatter : /* Bibliothèque OSC de D::Light */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;L&#039;&#039;&#039;&#039;OSC&#039;&#039;&#039; (&#039;&#039;Open Sound Control&#039;&#039;) est un protocole de transmission de données en temps réel entre plusieurs logiciels. La communication entre ces logiciels assure l&#039;envoi et la réception des flux de données par une connexion réseau en utilisant le protocole UDP (&#039;&#039;User Datagram Protocol&#039;&#039;), qui est la couche de transport du protocole TCP/IP (&#039;&#039;Transmission Control Protocol&#039;&#039;, &#039;&#039;Internet Protocol&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
L&#039;&#039;&#039;&#039;OSC&#039;&#039;&#039; se caractérise par sa rapidité et sa flexibilité. Il ne provoque aucune latence perceptible lors de l&#039;envoi ou de la réception des données.&lt;br /&gt;
&lt;br /&gt;
Les logiciels mis en communication peuvent être installés sur la même machine ou sur des machines distinctes. Ainsi, D::Light peut être piloté par une autre application installée sur le même ordinateur ou bien être commandé à distance depuis depuis un iPhone ou un autre ordinateur par connection filaire, WIFI ou Internet.&lt;br /&gt;
&lt;br /&gt;
En utilisant le protocole OSC, D::Light peut aussi lui-même commander d&#039;autres machines par le biais d&#039;une application comme Pure Data ou Max/Msp: un pas de séquence peut par exemple déclencher les pistes-son d&#039;un player et des submasters peuvent être affectés à de multiples fonctions de déclenchement (play, pause, controle d&#039;un fade son, etc.).&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Communication OSC avec D::Light ==&lt;br /&gt;
&lt;br /&gt;
La transmission des données vers D::Light doit impérativement spécifier l&#039;adresse de la machine (&#039;&#039;localhost&#039;&#039; ou adresse IP) et le numéro du port.&lt;br /&gt;
&lt;br /&gt;
Par défaut, le port assigné à D::Light pour l&#039;envoi des messages est &#039;&#039;&#039;7000&#039;&#039;&#039;. La réception des données provenant de D::Light est assignée au port &#039;&#039;&#039;7001&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Le statut et le port d&#039;envoi OSC de D::Light doivent également être activés. Lorsqu&#039;on enregistre une conduite, si la communication OSC de D::Light est activée, l&#039;activation reste mémorisée dans la conduite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activation OSC dans la version 3.0.3 ===&lt;br /&gt;
Dans cette nouvelle version, l&#039;activation OSC est accessible par le menu Display puis [[SETUP]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Activation OSC dans les versions antérieures à 3.0.3 ===&lt;br /&gt;
Dans le menu &#039;&#039;OSC&#039;&#039;, la fenêtre &#039;&#039;OSC Control&#039;&#039; permet l&#039;activation de l&#039;envoi et de la réception OSC en cochant les cases respectives.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:OSCcontrol302.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bibliothèque OSC de D::Light ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dans les tableaux suivants, le signe # correspond toujours à un numéro (de circuit, de pas de séquence, de submaster). Lorsqu&#039;aucune valeur n&#039;est mentionnée, c&#039;est que seule la syntaxe de l&#039;adresse suffit. Lorsque la syntaxe de réception est absente, c&#039;est qu&#039;elle est inexistante (inutile ou pas encore implémentée)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntaxe OSC de la version 3.0.2 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Niveau du circuit # || /circ/# || 0-255 || /circ || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau Grandmaster || /grandmaster || 0-255 || /grandmaster || 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Pas de séquence || /seq || # || /seq || #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Go || /seq/go || || /go || #&lt;br /&gt;
|-&lt;br /&gt;
| GoBack || /seq/goback || || /goback || #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pause || /seq/pause || || /pause || #&lt;br /&gt;
|-&lt;br /&gt;
| Fader X1 || /seq/xfade_x1 || 0-255 || /XfadeX1 || # 255-0&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X2 || /seq/xfade_x2 || 0-255 || /XfadeX2 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time ou Flash || /sub/#/flash || 0-255 || /sub || /# 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur Time/Flash du sub # || /sub/#/mode || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Solo (sub # prioritaire) || /sub/#/type || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pavé numérique || /pad/1...9 || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Point du pavé numérique || /pad/dot || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CHANNEL || /pad/channel || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| LEVEL || /pad/level || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| FULL || /pad/ff || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| THRU || /pad/thru || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CLEAR || /pad/clear || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) || /pad/freeze || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout || /pad/blackout || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| + || /pad/plus || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| - || /pad/moins || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| +% || /pad/pluspourcent || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| -% || /pad/moinspourcent || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| ALL || /pad/all || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Validation (ENTER) || /pad/enter || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélection active à zéro || /pad/clearclear || || || &lt;br /&gt;
|-&lt;br /&gt;
| Clone || /pad/clone || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Inv || /pad/inv || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Scène || /pad/scene || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Scène || /pad/X1 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/prepa || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/X2 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Ouverture de la fenêtre de check || /checkcirc/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Circuit à checker || /checkcirc/circ || 0-512 || || &lt;br /&gt;
|-&lt;br /&gt;
| Niveau de test des circuits || /checkcirc/level || 0-255 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Teste le circuit suivant || /checkcirc/next || || || &lt;br /&gt;
|-&lt;br /&gt;
| Teste le circuit précédent || /checkcirc/prev || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes à propos de la version 3.0.2 ===&lt;br /&gt;
* &#039;&#039;&#039;Circuits et Submasters&#039;&#039;&#039; : Dans le tableau ci-dessus, les messages renvoyés par D::Light concernant les circuits et les submasters correspondent à la syntaxe de la version 3.0.2. Dans les versions antérieures, la syntaxe est la suivante:&lt;br /&gt;
** &#039;&#039;/circ/#&#039;&#039; renvoie la valeur (0-255) du circuit #.&lt;br /&gt;
** &#039;&#039;/sub/#&#039;&#039; renvoie la valeur (0-255) du submaster #.&lt;br /&gt;
* &#039;&#039;&#039;Fader X1&#039;&#039;&#039; : La valeur du Fader X1 renvoyée par D::Light est toujours inversée. &#039;&#039;Exemple: si la valeur envoyée est 255, la valeur retournée est 0&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Temporisation des Submasters&#039;&#039;&#039; :&lt;br /&gt;
** Lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, si le submaster est temporisé (mode TIME), son temps de montée est celui de la temporisation, sinon (mode FLASH) sa montée est instantanée.&lt;br /&gt;
** Pour contrôler la temporisation indépendamment du temps programmé dans la mémoire du submaster, il faut utiliser la syntaxe &#039;&#039;/sub/#/level&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Niveau des Submasters&#039;&#039;&#039; :&lt;br /&gt;
** En mode TIME, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light sont indifférents à la valeur envoyée. Ils ne dépendent que du niveau mémorisé dans le submaster (TARGET). Pour activer le submaster, il suffit que la valeur soit supérieure à 0 (entre 1 et 255).&lt;br /&gt;
** En mode FLASH, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/flash&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light dépendent du niveau mémorisé dans le submaster (TARGET) &#039;&#039;ET&#039;&#039; de la valeur envoyée. &#039;&#039;Exemple: si le TARGET est 128 et la valeur envoyée est 128, le niveau effectif sera 25% et la valeur renvoyée 64&#039;&#039;.&lt;br /&gt;
** En mode TIME ou FLASH, lorsque le message d&#039;envoi est &#039;&#039;/sub/#/level&#039;&#039;, le niveau effectif du submaster et la valeur retournée par D::Light correspondent uniquement à la valeur envoyée, quelle que soit la valeur TARGET mémorisée dans le submaster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modifications de syntaxe OSC dans la version 3.0.3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Le tableau ci-dessous récapitule uniquement les changements de syntaxe qui apparaissent dans la &#039;&#039;&#039;version 3.0.3&#039;&#039;&#039; de D::Light (21 décembre 2010).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| Go ||rowspan=&amp;quot;3&amp;quot;| /seq/go ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /go #&lt;br /&gt;
|-&lt;br /&gt;
| /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| GoBack ||rowspan=&amp;quot;3&amp;quot;| /seq/goback ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /goback #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;30%&amp;quot;|  Pause ||width=&amp;quot;20%&amp;quot;| /seq/pause ||width=&amp;quot;15%&amp;quot;| ||width=&amp;quot;20%&amp;quot;| /seq ||width=&amp;quot;15%&amp;quot;| /pause #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X1 (mode scène) ||rowspan=&amp;quot;2&amp;quot;| /seq/X1 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X2 (mode prépa) ||rowspan=&amp;quot;2&amp;quot;| /seq/X2 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X1 || /seq/fadeX1 || 0-255 || /fadeX1 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Fader X2 || /seq/fadeX2 || 0-255 || /fadeX2 || # 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Submaster # Flash || /sub/#/flash || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time || /sub/#/flash || 1-255 || /sub || /#/level 0-255&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes à propos de la version 3.0.3 ===&lt;br /&gt;
L&#039;essentiel des modifications concerne les informations renvoyées par D::Light. Les messages de retour sont moins nombreux et leur syntaxe est simplifiée alors que les informations renvoyées sont plus complètes.&lt;br /&gt;
&lt;br /&gt;
Le revers de cette simplification, c&#039;est une complexité plus grande dans le traitement des informations retournées par D::Light puisque une même commande déclenche en retour le renvoi de plusieurs informations différentes, regroupées en listes dont les valeurs ne sont pas toutes numériques.&lt;br /&gt;
&lt;br /&gt;
Ces modifications permettent tout particulièrement un meilleur suivi des &#039;&#039;&#039;pas de séquences&#039;&#039;&#039; pour toutes les commandes de séquences qui retournent systématiquement les états respectifs en X1 et X2. Désormais, une syntaxe unique (&#039;&#039;/seq&#039;&#039;) permet de connaître le type de commande utilisée (&#039;&#039;go&#039;&#039;, &#039;&#039;goback&#039;&#039;, &#039;&#039;pause&#039;&#039;, &#039;&#039;mode scène&#039;&#039;, &#039;&#039;mode prépa&#039;&#039;), le pas de séquence commandé et les pas de séquence en X1 et en X2 &#039;&#039;en fin d&#039;action&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Syntaxe OSC de la version 4.0.0._b18 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#FFEEDD;&amp;quot; rowspan=&amp;quot;2&amp;quot;| Commande&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot; colspan=&amp;quot;2&amp;quot;| Envoi vers D::Light&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;26%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot; colspan=&amp;quot;2&amp;quot;| Réception depuis D::Light&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#CCFFCC;&amp;quot;| Valeur&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Syntaxe&lt;br /&gt;
!scope=&amp;quot;col&amp;quot; width=&amp;quot;8%&amp;quot; style=&amp;quot;background:#E0E0FF;&amp;quot;| Valeur&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot;| Go ||rowspan=&amp;quot;5&amp;quot;| /seq/go ||rowspan=&amp;quot;5&amp;quot;| ||rowspan=&amp;quot;5&amp;quot;| /seq || /go #&lt;br /&gt;
|-&lt;br /&gt;
| /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
| /X1ActiveCue #&lt;br /&gt;
|-&lt;br /&gt;
| /X2ActiveCue #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| GoBack ||rowspan=&amp;quot;3&amp;quot;| /seq/goback ||rowspan=&amp;quot;3&amp;quot;| ||rowspan=&amp;quot;3&amp;quot;| /seq || /goback #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;30%&amp;quot;|  Pause ||width=&amp;quot;20%&amp;quot;| /seq/pause ||width=&amp;quot;15%&amp;quot;| ||width=&amp;quot;20%&amp;quot;| /seq ||width=&amp;quot;15%&amp;quot;| /pause #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X1 (mode scène) ||rowspan=&amp;quot;2&amp;quot;| /seq/X1 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| /X2 #&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| X2 (mode prépa) ||rowspan=&amp;quot;2&amp;quot;| /seq/X2 ||rowspan=&amp;quot;2&amp;quot;| # ||rowspan=&amp;quot;2&amp;quot;| /seq || /X1 #&lt;br /&gt;
|-&lt;br /&gt;
| /X2 #&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Fader X1 || /seq/fadeX1 || 0-255 || /fadeX1 || # 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Fader X2 || /seq/fadeX2 || 0-255 || /fadeX2 || # 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Goto Step # || /seq/goto || # ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| Kill Submasters || /sub/kill || # ||  ||&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau du submaster # || /sub/#/level || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Submaster # Flash || /sub/#/flash || 0-255 || /sub || /#/level 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Submaster # Time || /sub/#/flash || 1-255 || /sub || /#/level 0-255&lt;br /&gt;
|- &lt;br /&gt;
| Niveau du circuit # || /circ/# || 0-255 || /circ || /# 0-255&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Niveau Grandmaster || /grandmaster || 0-255 || /grandmaster || 0-255&lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur Time/Flash du sub # || /sub/#/mode || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Solo (sub # prioritaire) || /sub/#/type || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pavé numérique || /pad/1...9 || 1 ||/pad/saisieText ||#&lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Point du pavé numérique || /pad/dot || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CHANNEL || /pad/channel || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| LEVEL || /pad/level || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| FULL || /pad/ff || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| THRU || /pad/thru || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| CLEAR || /pad/clear || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) (Toggle mode)|| /pad/freeze || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Freeze (gêle le DMX) (Set mode)|| /force/freeze || 0-1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout (Toggle mode)|| /pad/blackout || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Blackout (Set mode)|| /force/blackout || 0-1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| + || /pad/plus || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| - || /pad/moins || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| +% || /pad/pluspourcent || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| -% || /pad/moinspourcent || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| ALL || /pad/all || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Validation (ENTER) || /pad/enter || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélection active à zéro || /pad/clearclear || || || &lt;br /&gt;
|-&lt;br /&gt;
| Clone || /pad/clone || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Inv || /pad/inv || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Scène || /pad/scene || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Scène || /pad/X1 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/prepa || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Sélecteur du mode Prépa || /pad/X2 || || || &lt;br /&gt;
|-&lt;br /&gt;
| Ouverture de la fenêtre de check || /checkcirc/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Circuit à checker || /checkcirc/circ || 0-512 || || &lt;br /&gt;
|-&lt;br /&gt;
| Niveau de test des circuits || /checkcirc/level || 0-255 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Teste le circuit suivant || /checkcirc/next || || || &lt;br /&gt;
|-&lt;br /&gt;
| Teste le circuit précédent || /checkcirc/prev || || || &lt;br /&gt;
|-&lt;br /&gt;
| Open PATCH window || /patch/launch || || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Checking level (patch) || /patch/levelRequest || 0-255 ||/patch/displayLevel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Pad Digits (patch) || /patch/# || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Dot (patch)|| /patch/dot ||1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Inserted Digits (patch)||  ||  || /patch/input||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Clear (patch)|| /patch/clear || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pad Thru (patch)|| /patch/thru || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Pad Next (patch)|| /patch/next || 1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Pad Prev (patch)|| /patch/prev || 1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Display Channel (patch)||  || ||/patch/displayChannel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Display Patched Dimmer (patch)||  || || /patch/displayDimmer ||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Switch DIM-CHAN (patch)|| /patch/switch || 0-1 ||/patch/displayActiveSwitch ||DIM-CH &lt;br /&gt;
|-&lt;br /&gt;
| Active Channel (patch)||  ||  ||/patch/displayActiveChannel ||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Active Dimmer (patch)||  || ||/patch/displayActiveDimmer ||# &lt;br /&gt;
|-&lt;br /&gt;
| Active Thru Dimmer (patch)||  ||  || /patch/displayActiveThru||# &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Add Patch|| /patch/plus ||1 || || &lt;br /&gt;
|-&lt;br /&gt;
| Remove Patch||/patch/moins ||1 || || &lt;br /&gt;
|- style=&amp;quot;background:#F2F2F2;&amp;quot;&lt;br /&gt;
| Test Channel (patch)|| /patch/testChannel || 0-1 ||/patch/testChannel ||# &lt;br /&gt;
|-&lt;br /&gt;
| Test Dimmer (patch)||/patch/testDimmer  ||0-1  ||/patch/testDimmer ||# &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Communication OSC entre D::Light et Pure Data ==&lt;br /&gt;
&lt;br /&gt;
=== L&#039;envoi des données vers D::Light ===&lt;br /&gt;
Un seul objet est nécessaire :&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;sendOSC&#039;&#039;&#039;. Il doit recevoir un message qui établit la connexion (&#039;&#039;connect&#039;&#039;), indique à &#039;&#039;sendOSC&#039;&#039; vers quelle machine envoyer les informations (&#039;&#039;localhost&#039;&#039; si c&#039;est la même machine ou adresse IP s&#039;il s&#039;agit d&#039;une machine distante) et lui précise que l&#039;on s&#039;adresse à D::Light en spécifiant son port (&#039;&#039;&#039;7000&#039;&#039;&#039;). Un second message (&#039;&#039;disconnect&#039;&#039;) permet la déconnexion manuelle. Facultativement, un objet &#039;&#039;&#039;loadbang&#039;&#039;&#039; permet d&#039;activer automatiquement la connexion à l&#039;ouverture du patch Pd. Mais l&#039;état de la connexion ne peut pas être affiché. La syntaxe des messages d&#039;envoi doit toujours commencer par le préfixe &#039;&#039;send&#039;&#039; (exemple : &#039;&#039;send /seq/go&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== La réception des données provenant de D::Light ===&lt;br /&gt;
Deux objets sont nécessaires :&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;dumpOSC&#039;&#039;&#039; permet de recevoir les messages OSC. On lui attribue en paramètre le numéro de port de D::Light (&#039;&#039;&#039;7001&#039;&#039;&#039;).&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;OSCroute&#039;&#039;&#039;, permet de trier les messages arrivant par l&#039;objet &#039;&#039;dumpOSC&#039;&#039;. Les messages de réception des données provenant de D::Light constituent les paramètres de cet objet. Par chaque sortie on récupère les valeurs et/ou les symboles correspondants aux messages inscrits en paramètres selon leur ordre respectif. En l&#039;absence de paramètre, la sortie de gauche liste les dernières informations reçues (par exemple : &#039;&#039;/4 255&#039;&#039; si le submaster 4 est à full).&lt;br /&gt;
[[Fichier:send-dump-osc.png]]&lt;br /&gt;
&lt;br /&gt;
=== Les objets OSC de Martin Peach ===&lt;br /&gt;
L&#039;informaticien canadien Martin Peach a implémenté depuis 2008 de nouveaux objets qui sont intégrés à l&#039;une des bibliothèques associées aux dernières versions de Pd-extended. Outre leur meilleure fiabilité par rapport aux objets &#039;&#039;sendOSC&#039;&#039;, &#039;&#039;dumpOSC&#039;&#039;, &#039;&#039;OSCroute&#039;&#039;, ils permettent de créer des messages plus complexes avec une syntaxe simplifiée et, surtout, l&#039;envoi, la réception et le tri de paquets pouvant comporter des milliers d&#039;informations simultanées (et cela, sans le moindre bug).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Note: le patch ci-dessous est écrit pour la version 3.0.3 de D::Light&#039;&#039;. [[Média:udpsend-receive.png|Voir le patch écrit pour les versions antérieures.]])&lt;br /&gt;
[[Fichier:udpsend-receive-303.png]]&lt;br /&gt;
&lt;br /&gt;
* Pour l&#039;envoi des données, l&#039;objet &#039;&#039;sendOSC&#039;&#039; est remplacé par un couple d&#039;objets : &#039;&#039;&#039;packOSC&#039;&#039;&#039; et &#039;&#039;&#039;udpsend&#039;&#039;&#039;. Les messages de connexion et déconnexion restent identiques. La sortie de &#039;&#039;udpsend&#039;&#039; peut recevoir un nombre qui affiche l&#039;état de la connexion (0 ou 1). La syntaxe des messages d&#039;envoi est simplifiée : il n&#039;est plus nécessaire d&#039;utiliser le préfixe &#039;&#039;send&#039;&#039; (il suffit, par exemple, d&#039;écrire &#039;&#039;/seq/go&#039;&#039;). De plus, les envois simultanés peuvent être regroupés en &#039;&#039;&#039;un seul message&#039;&#039;&#039;, chaque syntaxe étant séparée par une virgule suivie d&#039;un espace (exemple : &#039;&#039;/grandmaster 127, /seq/go, /sub/1/flash 188, /sub/4/flash 255, /circ/22 50, /circ/24 220&#039;&#039;).&lt;br /&gt;
* Pour la réception des données, les 2 objets &#039;&#039;dumpOSC&#039;&#039; et &#039;&#039;OSCroute&#039;&#039; sont remplacés par le trio &#039;&#039;&#039;udpreceive&#039;&#039;&#039;, &#039;&#039;&#039;unpackOSC&#039;&#039;&#039;, &#039;&#039;&#039;routeOSC&#039;&#039;&#039;. La sortie de droite de &#039;&#039;udpreceive&#039;&#039; donne l&#039;adresse IP de D::Light qui se trouve dans l&#039;OSCwriter.&lt;br /&gt;
* Cette bibliothèque d&#039;objets est associée à Pd-extended mais elle doit être importée dans le patch. L&#039;invocation se fait sous forme d&#039;objets nommés &#039;&#039;&#039;import mrpeach/udpsend&#039;&#039;&#039; et &#039;&#039;&#039;import mrpeach/packOSC&#039;&#039;&#039; pour l&#039;envoi, &#039;&#039;&#039;import mrpeach/udpreceive&#039;&#039;&#039;, &#039;&#039;&#039;import mrpeach/unpackOSC&#039;&#039;&#039; et &#039;&#039;&#039;import mrpeach/routeOSC&#039;&#039;&#039; pour la réception.&lt;br /&gt;
&lt;br /&gt;
On peut accéder à la documentation dans Pd par &#039;&#039;help/browser&#039;&#039;:&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/packOSC-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/routeOSC-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/udpreceive-help.pd&lt;br /&gt;
** /usr/lib/pd/doc/5.reference/mrpeach/udpsend-help.pd&lt;br /&gt;
Sous linux:&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/packOSC.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/routeOSC.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/udpreceive.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/udpsend.pd_linux&lt;br /&gt;
** /usr/lib/pd/extra/mrpeach/unpackOSC.pd_linux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le tri des données OSC provenant de D::Light ===&lt;br /&gt;
D::Light renvoie les données sous la forme de &#039;&#039;&#039;nombres&#039;&#039;&#039; (valeurs) ou de &#039;&#039;&#039;listes&#039;&#039;&#039; qui peuvent comporter des nombres mais aussi des symboles. Ces données doivent être triées par Pd afin d&#039;être exploitées séparément. de plus, la version 3.0.3 utilise un &#039;&#039;bundle&#039;&#039; qui envoie des paquets de données multiples qui doivent être séparées.&lt;br /&gt;
* Lorsque le message de réception renvoie un seul nombre, la sortie correspondante de l&#039;objet &#039;&#039;routeOSC&#039;&#039; reçoit un nombre. C&#039;est le cas uniquement pour le message &#039;&#039;/grandmaster&#039;&#039; (niveau) dans la version 3.0.3. C&#039;était le cas, dans les versions antérieures, pour &#039;&#039;/go&#039;&#039; (pas), &#039;&#039;/goback&#039;&#039; (pas) et &#039;&#039;/pause&#039;&#039; (pas).&lt;br /&gt;
* Les messages de réception &#039;&#039;/fadeX1&#039;&#039; et &#039;&#039;/fadeX2&#039;&#039; (anciennement: &#039;&#039;/XfadeX1&#039;&#039; et &#039;&#039;/XfadeX2&#039;&#039;) renvoient une liste de 2 nombres (pas de séquence et niveau). Ils doivent être séparés par l&#039;objet &#039;&#039;&#039;unpack&#039;&#039;&#039; avec 2 arguments &#039;&#039;f f&#039;&#039; (=float) qui spécifient qu&#039;il s&#039;agit de nombres.&lt;br /&gt;
* Les messages de réception &#039;&#039;/X1&#039;&#039;, &#039;&#039;/X2&#039;&#039;, &#039;&#039;/go&#039;&#039;, &#039;&#039;/goback&#039;&#039; et &#039;&#039;/pause&#039;&#039; doivent être extraits par un objet &#039;&#039;&#039;routeOSC&#039;&#039;&#039; de second niveau relié à la sortie du premier &#039;&#039;&#039;routeOSC&#039;&#039;&#039; qui correspond à &#039;&#039;/seq&#039;&#039;.&lt;br /&gt;
* Les messages de réception &#039;&#039;/sub&#039;&#039; et &#039;&#039;/circ&#039;&#039; renvoient une liste qui comporte un symbole (&#039;&#039;/#/level&#039;&#039;) et un nombre (niveau).&lt;br /&gt;
** L&#039;opération la plus simple mais aussi la plus fastidieuse consiste à établir un routage à plusieurs niveaux. Pour les submasters, par exemple, le premier &#039;&#039;&#039;routeOSC&#039;&#039;&#039; extrait les données &#039;&#039;/sub&#039;&#039;, le second les données &#039;&#039;/#&#039;&#039;, le troisième les données &#039;&#039;/level&#039;&#039;, c&#039;est-à-dire la valeur du niveau. Ce qui oblige à reproduire l&#039;opération 250 fois pour les 250 submasters disponibles. De même pour les circuits.&lt;br /&gt;
** Une opération, plus économique, consiste à extraire directement les valeurs numériques en séparant les éléments symboles, non numériques(&#039;&#039;/&#039;&#039; et &#039;&#039;/level&#039;&#039;), grâce à un séparateur. Symbole et nombre doivent préalablement être séparés par l&#039;objet &#039;&#039;&#039;unpack&#039;&#039;&#039; avec 2 arguments qui sont &#039;&#039;s&#039;&#039; (=symbole) et &#039;&#039;f&#039;&#039; (=float). Le séparateur permet ensuite d&#039;extraire le numéro de sub. On utilise pour cela l&#039;objet &#039;&#039;&#039;symbol2list&#039;&#039;&#039; qui reçoit à gauche le symbole et à droite un message comportant le signe séparateur. Un nouvel objet &#039;&#039;&#039;unpack&#039;&#039;&#039; ayant &#039;&#039;f&#039;&#039; comme argument permet alors de récupérer le nombre qui était associé au slash. On peut procéder de la même manière pour les circuits. L&#039;avantage est de taille: 2 nombres permettent la réception de &#039;&#039;toutes&#039;&#039; les données concernant les submasters (numéro de sub et niveau), de même pour les circuits. Il ne reste plus qu&#039;à les dispatcher selon les besoins... (voir ci-dessous).&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Note: les patches ci-dessous sont écrits pour la version 3.0.3 de D::Light&#039;&#039;. [[Média:receive-osc.png|Voir le patch écrit pour les versions antérieures.]])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Routage &amp;quot;classique&amp;quot; des données :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:receive-osc-303a.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Routage &amp;quot;économique&amp;quot; des données :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:udp-sr-extract-303.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le dispatch des données OSC &#039;&#039;/sub&#039;&#039; et &#039;&#039;/circ&#039;&#039; provenant de D::Light ===&lt;br /&gt;
Dans le routage &amp;quot;économique&amp;quot; présenté ci-dessus, toutes les données envoyées par D::Light concernant les submasters et les circuits sont concaténées en deux objets &#039;&#039;nombre&#039;&#039;: l&#039;un pour le numéro de sub (ou de circuit), l&#039;autre pour la valeur du niveau. Pour qu&#039;elles soient lisibles et exploitables il faut effectuer leur séparation et leur répartition.&lt;br /&gt;
* L&#039;objet &#039;&#039;&#039;dispatch&#039;&#039;&#039; va permettre de faire apparaître, pour chaque submaster et pour chaque circuit, sa valeur respective.&lt;br /&gt;
* Cet objet &#039;&#039;&#039;dispatch&#039;&#039;&#039; nécessite l&#039;importation d&#039;une bibliothèque associée à &#039;&#039;Pd-extended&#039;&#039;: pour cela, on crée un objet &#039;&#039;&#039;import moonlib/dispatch&#039;&#039;&#039;.&lt;br /&gt;
* On crée ensuite 2 objets &#039;&#039;&#039;dispatch&#039;&#039;&#039;, l&#039;un pour les &#039;&#039;subs&#039;&#039;, l&#039;autre pour les &#039;&#039;circuits&#039;&#039;, dans lesquels on déclare en arguments la syntaxe générique utilisée pour chacun et les minima et maxima, c&#039;est-à-dire les numéro du premier et du dernier submasters dont on veut récupérer les données (dans l&#039;exemple ci-dessous, de 1 à 10). Même déclaration pour les circuits. Ce qui donne: &#039;&#039;&#039;dispatch $0-sub 1 10&#039;&#039;&#039; et &#039;&#039;&#039;dispatch $0-circ 1 10&#039;&#039;&#039;. Si l&#039;on veut récupérer les valeurs de 250 submasters et de 120 circuits, on déclarera: &#039;&#039;&#039;dispatch $0-sub 1 250&#039;&#039;&#039; et &#039;&#039;&#039;dispatch $0-circ 1 120&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Le &#039;&#039;dispatch&#039;&#039; des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; (exemple pour 10 submasters et 10 circuits) :&#039;&#039;&#039;&lt;br /&gt;
[[Fichier:osc-dispatch-303-1.png]]&lt;br /&gt;
&lt;br /&gt;
* Reste à créer les objets qui vont réceptionner les données (dans l&#039;exemple, ce sont des objets &#039;&#039;nombre&#039;&#039; mais on pourrait utiliser des &#039;&#039;sliders&#039;&#039;, des objets &#039;&#039;symbole&#039;&#039; ou faire apparaître les données comme &#039;&#039;label&#039;&#039; de &#039;&#039;canvas&#039;&#039;). Chacun devra comporter en &#039;&#039;label&#039;&#039; le nom et le numéro qui lui correspond afin de les identifier (&#039;&#039;Sb-1&#039;&#039;, &#039;&#039;Sb-2&#039;&#039;... &#039;&#039;Ch-1&#039;&#039;, &#039;&#039;Ch-2&#039;&#039;...).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les objets de réception des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; (exemple pour 10 submasters et 10 circuits) :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:osc-dispatch-303-2.png]]&lt;br /&gt;
&lt;br /&gt;
Dernière opération: la création des messages d&#039;envoi et de réception.&lt;br /&gt;
* Les nombres issus de &#039;&#039;&#039;routeOSC&#039;&#039;&#039; qui correspondent aux numéros et aux valeurs sont compactés par un objet &#039;&#039;&#039;pack f f&#039;&#039;&#039; puis envoyés (&#039;&#039;s&#039;&#039; = &#039;&#039;send&#039;&#039;) par un message qui reprend la syntaxe générique initialement déclarée à laquelle on ajoute le suffixe &#039;&#039;-rcv&#039;&#039; (&#039;&#039;receive&#039;&#039;). Ce qui donne: &#039;&#039;&#039;s $0-sub-rcv&#039;&#039;&#039; et &#039;&#039;&#039;s $0-circ-rcv&#039;&#039;&#039;.&lt;br /&gt;
* Chaque objet objet &#039;&#039;nombre&#039;&#039; appelé à réceptionner les données doit avoir la même déclaration en réception à laquelle s&#039;ajoute son numéro propre: &#039;&#039;&#039;r $0-sub1-rcv&#039;&#039;&#039; pour le sub n°1 et &#039;&#039;&#039;r $0-sub2-rcv&#039;&#039;&#039; pour le sub n°2, etc. De même pour les circuits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les messages de réception des données &#039;&#039;sub&#039;&#039; et &#039;&#039;circ&#039;&#039; :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:osc-dispatch-303-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et hop, le tour est joué: chaque objet &#039;&#039;nombre&#039;&#039; reçoit instantanément son dû!&lt;br /&gt;
&lt;br /&gt;
Pour tester, on peut créer dans D::Light 10 groupes affectés aux submasters 1 à 10 et envoyer le message suivant:&lt;br /&gt;
[[Fichier:sub-envoi-1.png]]&lt;br /&gt;
&lt;br /&gt;
On peut éventuellement sophistiquer l&#039;ensemble en établissant au préalable une conversion des niveaux 0-255 en 0-100, puis transformer ces valeurs numériques en symboles, grâce à l&#039;objet &#039;&#039;&#039;ftos&#039;&#039;&#039; (&#039;&#039;float to symbol&#039;&#039;) afin d&#039;ajouter, par un sélecteur, un message qui remplace la valeur 100 en FF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
=== Documents complémentaires ===&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=0AhgzuANs_G4GdDR4MkhmTm5ZN053bTh0MzVmeTB4ZXc&amp;amp;hl=fr Tableau Google.doc avec annotations pour la Bibliothèque OSC de D::Light]&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://opensoundcontrol.org Site officiel OSC]&lt;br /&gt;
* [http://www.interface-z.com/patchs/ut-osc.htm La communication OSC selon Interface-Z]&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels ===&lt;/div&gt;</summary>
		<author><name>Nomatter</name></author>
	</entry>
</feed>