Difference between revisions of "Custom OSC - pre 1.5.0/fr"

From TidalCycles userbase
Jump to: navigation, search
(Created page with "Le second exemple privilégie plutôt <source inline>MessageStamp</source>, qui est similaire. Au lieu de placer le message dans un lot, la signature temporelle est définie p...")
m (FuzzyBot moved page Custom OSC/fr to Custom OSC - pre 1.5.0/fr without leaving a redirect: Part of translatable page "Custom OSC")
 
(12 intermediate revisions by one other user not shown)
Line 40: Line 40:
 
Le second exemple privilégie plutôt <source inline>MessageStamp</source>, qui est similaire. Au lieu de placer le message dans un lot, la signature temporelle est définie par deux entiers (<code>sec</code> et <code>usec</code>), à savoir le nombre de secondes et de micro-secondes depuis l'epoch UNIX.
 
Le second exemple privilégie plutôt <source inline>MessageStamp</source>, qui est similaire. Au lieu de placer le message dans un lot, la signature temporelle est définie par deux entiers (<code>sec</code> et <code>usec</code>), à savoir le nombre de secondes et de micro-secondes depuis l'epoch UNIX.
  
Note also that the first example doesn't give an oShape. This means that tidal will send whatever parameters you use in the pattern. It will do this as named parameters, that is, each parameter will be preceded by the name of the parameter, as a string.
+
Notez que le premier exemple n'utilise pas un <code>oShape</code>. Cela signifie que Tidal enverra n'importe quel paramètre spécifié dans un pattern. Tidal enverra n'importe quel paramètre nommé dans votre code ; le paramètre sera précédé de son nom, représenté par une <code>string</code>.
  
The second example does give an oShape, as a list of names and default values. Note that the "s" control parameter doesn't have a default value. This means that OSC messages won't get sent unless the "s" control is defined in the pattern.
+
Le second exemple utilise un <code>oshape</code>, une liste de noms et de valeurs par défaut. Notez que le paramètre de contrôle <code>s</code> ne possède pas de valeur par défaut. Cela signifie que les messages OSC ne seront pas envoyés tant que <code>s</code> ne sera pas défini.
  
= Using a target =
+
= Cibles =
  
Once you've defined your target, you can use it like this:
+
Une fois que vous aurez défini une cible, vous pourrez lui adresser un message de cette manière :
  
 
<source>
 
<source>
Line 56: Line 56:
 
</source>
 
</source>
  
If you want to send messages to more than one target at once, you can do it like this:
+
Si vous souhaitez envoyer un message à plusieurs cibles simultanément, vous pouvez faire :
  
 
<source>
 
<source>
Line 66: Line 66:
 
</source>
 
</source>
  
See the standard [https://github.com/tidalcycles/Tidal/blob/master/BootTidal.hs BootTidal.hs] for how the usual functions for interacting with tidal are defined.
+
Consultez la page [https://github.com/tidalcycles/Tidal/blob/master/BootTidal.hs BootTidal.hs] pour observer comment sont structurées les fonctions pour interargir avec Tidal.
  
== Example with FAUST ==
+
== Exemples avec FAUST ==
  
Let's make the [https://faust.grame.fr/doc/manual/index.html#simple-example Simple Example] noise generator from the FAUST manual work with TidalCycles. (Please be careful, loud noise can destroy your speakers or hearing.)
+
Utilisons l'[https://faust.grame.fr/doc/manual/index.html#simple-example exemple] du générateur de bruit issu du manuel à l'aide de Tidal Cycles. Faites attention, un bruit particulièrement fort peut causer des dommages à vos oreilles et à vos hauts parleurs. Compilez le code comme expliqué dans le manuel, afin que le générateur de bruit écoute les messages OSC entrant sur le portè 5510. Le code correspondant pour Tidal est le suivant :
Compile it as explained so it will listen for OSC messages on port 5510.
 
The matching TidalCycles <code>OSCTarget</code> is this:
 
  
 
<source>
 
<source>
Line 81: Line 79:
 
In the second line the OSC message is defined.
 
In the second line the OSC message is defined.
  
To make <code>level</code> usable like usual also define
+
Pour utiliser le paramètre <code>level</code>, définissez : <source>let level = pF "level"</source>
<source>
 
let level = pF "level"
 
</source>
 
  
Now if you run
+
Si vous faites <source>d1 $ level "0.5 1 --let the level jump between -6 and 0 dBFS</source>, le résultat OSC équivalent sera : <source>
<source>
 
d1 $ level "0.5 1" --let the level jump between -6 and 0 dBFS.
 
</source>
 
the resulting OSC message is equivalent to running
 
<source>
 
 
$ oscsend localhost 5510 "/noise/level" f 0.5
 
$ oscsend localhost 5510 "/noise/level" f 0.5
 
$ sleep 1
 
$ sleep 1
 
$ oscsend localhost 5510 "/noise/level" f 1
 
$ oscsend localhost 5510 "/noise/level" f 1
</source>
+
</source> en ligne de commande.
on a command line.
 
  
  
= Debugging =
+
= Débogage =
  
One way to debug OSC is to use a packet sniffer like [https://www.wireshark.org/ wireshark]. You can put "osc" in the filter field (no double quotes) to filter out everything except OSC packets. If you click on an OSC network packet and expand fields you can find a nicely formatted representation of your OSC message.
+
Il peut être utile d'utiliser [https://www.wireshark.org/ wireshark | Wireshark]. Vous pouvez filtrer les messages OSC dans le champ de recherche. Si vous cliquez sur un paquet OSC, vous trouverez une représentation bien formatée de votre message OSC.

Latest revision as of 18:13, 23 May 2020

Other languages:
English • ‎français

Une version de Tidal supérieure à la 1.0.6 est nécessaire.

Il est possible de définir vos propres messages OSC (Open Sound Control), pour atteindre des logiciels autres que SuperDirt ou Dirt. Voici quelques exemples :

  customTarget = OSCTarget {oName = "MyStrangeSoftware", -- Give your target a name
                            oAddress = "127.0.0.1", -- the target network address
                            oPort = 5050, -- the target network port
                            oPath = "/trigger/something", -- the OSC path
                            oShape = Nothing, -- The 'shape' - see below
                            oLatency = 0.02, -- the latency (to smooth network jitter)
                            oPreamble = [], -- Some fixed data to put at the start of messages
                            oTimestamp = BundleStamp -- The style of timestamp
                           }
  anotherTarget :: OSCTarget
  anotherTarget = OSCTarget {oName = "Another one",
                             oAddress = "127.0.0.1",
                             oPort = 7771,
                             oPath = "/play",
                             oShape = Just [("note", Nothing),
                                            ("distortion", Just $ VF 0),
                                            ("loops", Just $ VI 1),
                                            ("vowel", Just $ VS "a"),
                                            ("sec", Just $ VI 0),
                                            ("usec", Just $ VI 0)
                                      ],
                             oLatency = 0.02,
                             oPreamble = [],
                             oTimestamp = MessageStamp
                            }

Dans le premier exemple ci-dessus, BundleStamp permet l'envoi 'ahead of time in batches' d'un message, à la vitesse définie par le cFrameTimespan défini dans la configuration de Tidal. Chaque message OSC sera placé dans un lot de messages avec une signature temporelle. Ce sera au client qui reçoit le message de scheduler le message correctement.

Le second exemple privilégie plutôt MessageStamp, qui est similaire. Au lieu de placer le message dans un lot, la signature temporelle est définie par deux entiers (sec et usec), à savoir le nombre de secondes et de micro-secondes depuis l'epoch UNIX.

Notez que le premier exemple n'utilise pas un oShape. Cela signifie que Tidal enverra n'importe quel paramètre spécifié dans un pattern. Tidal enverra n'importe quel paramètre nommé dans votre code ; le paramètre sera précédé de son nom, représenté par une string.

Le second exemple utilise un oshape, une liste de noms et de valeurs par défaut. Notez que le paramètre de contrôle s ne possède pas de valeur par défaut. Cela signifie que les messages OSC ne seront pas envoyés tant que s ne sera pas défini.

Cibles

Une fois que vous aurez défini une cible, vous pourrez lui adresser un message de cette manière :

tidal <- startTidal customTarget defaultConfig

let p = streamReplace tidal

p 1 $ s "bd sn" # vowel "a"

Si vous souhaitez envoyer un message à plusieurs cibles simultanément, vous pouvez faire :

tidal <- startMulti [customTarget, anotherTarget] defaultConfig

let p = streamReplace tidal

p 1 $ s "bd sn" # vowel "a"

Consultez la page BootTidal.hs pour observer comment sont structurées les fonctions pour interargir avec Tidal.

Exemples avec FAUST

Utilisons l'exemple du générateur de bruit issu du manuel à l'aide de Tidal Cycles. Faites attention, un bruit particulièrement fort peut causer des dommages à vos oreilles et à vos hauts parleurs. Compilez le code comme expliqué dans le manuel, afin que le générateur de bruit écoute les messages OSC entrant sur le portè 5510. Le code correspondant pour Tidal est le suivant :

OSCTarget {oName = "Noise", oAddress = "127.0.0.1", oPort = 5510,
  oPath = "/noise/level", oShape = Just [("level", Just $ VF 0)],
  oLatency = 0.02, oPreamble = [], oTimestamp = MessageStamp}

In the second line the OSC message is defined.

Pour utiliser le paramètre level, définissez :

let level = pF "level"

Si vous faites

d1 $ level "0.5 1 --let the level jump between -6 and 0 dBFS

, le résultat OSC équivalent sera :

$ oscsend localhost 5510 "/noise/level" f 0.5
$ sleep 1
$ oscsend localhost 5510 "/noise/level" f 1

en ligne de commande.


Débogage

Il peut être utile d'utiliser wireshark | Wireshark. Vous pouvez filtrer les messages OSC dans le champ de recherche. Si vous cliquez sur un paquet OSC, vous trouverez une représentation bien formatée de votre message OSC.