Outils pour utilisateurs

Outils du site


open_sound_control_osc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
open_sound_control_osc [2018/07/19 08:15] – [Applications qui utilisent OSC] sergeopen_sound_control_osc [2024/03/28 21:44] (Version actuelle) – [Comprendre ce qu'est OSC] Mushussu
Ligne 1: Ligne 1:
 ======Open Sound Control OSC====== ======Open Sound Control OSC======
  
-===== Applications qui utilisent OSC =====+===== Quelques applications qui utilisent OSC =====
  
   * [[https://github.com/kylemcdonald/ofxFaceTracker|Faceosc]] Interprétation du visage en osc.   * [[https://github.com/kylemcdonald/ofxFaceTracker|Faceosc]] Interprétation du visage en osc.
-  * https://hexler.net/software/touchosc +  * [[https://hexler.net/software/touchosc|Touchosc]] 
-  * https://www.lightjams.com/osc.html +  * [[https://www.lightjams.com/osc.html|Lightjams]] 
-  * +  * [[https://fr.wikipedia.org/wiki/Pure_Data|Pure Data]] 
 +  * [[https://fr.wikipedia.org/wiki/Cubase|Cubase]] 
 +  * [[https://fr.wikipedia.org/wiki/Ardour|Ardour]] 
 +  * [[https://openstagecontrol.ammd.net/|Open Stage Control]] Une alternative libre à TouchOSC tournant sur tous les OS
  
-===== Ressources Web ===== 
  
-  * [[http://en.wikipedia.org/wiki/Open_Sound_Control|http://en.wikipedia.org/wiki/Open_Sound_Control]] OSC sur en.wikipedia.org 
-  * [[http://opensoundcontrol.org/|http://opensoundcontrol.org/]] opensoundcontrol.org 
-  * [[http://opensoundcontrol.org/publication/best-practices-open-sound-control|http://opensoundcontrol.org/publication/best-practices-open-sound-control]] les bonnes pratiques de l'OSC 
-  * [[http://blenderartists.org/forum/showthread.php?198931-OpenSoundControl-in-Blender2.54-GE|http://blenderartists.org/forum/showthread.php?198931-OpenSoundControl-in-Blender2.54-GE]] un post avec des fichiers de juin 2011 
  
-===== Pages du wiki Labomedia en rapport avec OSC =====+===== Ressources Web =====
  
-=== Blender Toolsdes class python indispensables ===+  * [[http://en.wikipedia.org/wiki/Open_Sound_Control|http://en.wikipedia.org/wiki/Open_Sound_Control|Open Sound Control sur en.wikipedia.org]] 
 +  * [[https://fr.wikipedia.org/wiki/Open_Sound_Control|Open Sound Control sur fr.wikipedia.org]] 
 +  * [[http://opensoundcontrol.org/|Le site opensoundcontrol.org]] 
 +  * [[http://opensoundcontrol.org/publication/best-practices-open-sound-control|Les bonnes pratiques de l'OSC]]
  
-BlenderTools contient des modules pour les opérations courantes dans le Game Engine, en particulier osc. Ce sont des [[http://fr.wikipedia.org/wiki/Fa%C3%A7ade_%28patron_de_conception%29|**façades**]].+===== Séquenceurs OSC =====
  
-[[Blender_Tools:_des_class_python_indispensables|//' Blender Tools//']]+  * Vezér https://imimot.com/vezer 
 +  * QLab https://figure53.com/qlab/ 
 +  * Un petit français très chouette avec plein de fonctionnalités http://benjamin.kuperberg.fr/chataigne 
 +  * Simple dév en openframework https://github.com/kuflex/KuStudio 
 +  * Un premier multiplateforme  https://ossia.io/ 
 +  * Un vieux plutôt linux http://kymatica.com/apps/algoscore 
 +  * Repear reste un bon "client" à tester, il peut enregistrer et lire de l'osc, peut être possible sans plus de formalités de transformer les rec osc en pattern déclenchable par MIDI 
 +  * Iannix donc https://www.iannix.org/fr/ qui a plein de fonctionnalités
  
-=== Les pages de la catégorie OSC ===+{{youtube>RSBU9MwJNLY?medium}}
  
-:Category:OSC 
- 
-=== Ressources générales === 
- 
-  * [[Le_Principe_des_logiciels_Temps_réel|Le Principe des logiciels Temps réel]] 
-  * [[Les_ressources_logicielles|Les ressources logicielles]] 
-  * [[Les_bases_du_Blender_Game_Engine|Les bases du Blender Game Engine]] pour commencer à prendre en main le Blender Game Engine 
-  * [[Liens_ressources_tutoriaux_Make_Controller|Liens ressources tutoriaux Make Controller]] 
-  * [[Liens_ressources_tutoriaux_Arduino|Liens ressources tutoriaux Arduino]] 
- 
-=== En pratique === 
- 
-  * Kinect Tout sur la kinect 
-  * [[Installation_Kinect_Linux|Installation Kinect Linux]] Comment installer OpenNI Nite OSCeleton sur Linux 
-  * [[Kinect_dans_le_Blender_Game_Engine|Kinect dans le Blender Game Engine]] avec decodeOSC de OSC.py de SimpleOSC 
  
 +==== Les pages Logiciels de communication ====
 +{{topic>logiciels_de_communication&nodate&nouser&sort}}
 ===== Comprendre ce qu'est OSC ===== ===== Comprendre ce qu'est OSC =====
  
-**OSC réalise l'encapsulation et l'extraction de datas**, le transfert des datas se fait en UDP ou en TCP. En gros, encapsuler c'est sérialiser: en python, cela peut se faire avec les modules pickle, cpickle, json. Les données sont converties en bytes pour passer en UDP. OSC définit des règles qui servent de "normes".+**OSC réalise l'encodage et le décodage de datas**, le transfert des datas se fait en UDP ou en TCP. Encoder c'est structurer les datas et les convertir en bytes (octets): en python, cela peut se faire avec les modules pickle, cpickle, json. OSC définit des règles qui servent de "normes".
  
-  * [[http://opensoundcontrol.org/introduction-osc|opensoundcontrol.org]] Ce protocole simple mais puissant fournit tout le nécessaire pour contrôler en temps réel du son et autres supports de traitement tout en restant flexible et facile à mettre en œuvre.+  * [[https://ccrma.stanford.edu/groups/osc/index.html|opensoundcontrol.org]] Ce protocole simple mais puissant fournit tout le nécessaire pour contrôler en temps réel du son et autres supports de traitement tout en restant flexible et facile à mettre en œuvre.
   * [[http://en.wikipedia.org/wiki/Open_Sound_Control|Wikipedia]] liste un grand nombre de logiciels qui utilise OSC en temps réel.   * [[http://en.wikipedia.org/wiki/Open_Sound_Control|Wikipedia]] liste un grand nombre de logiciels qui utilise OSC en temps réel.
   * [[http://opensoundcontrol.org/files/OSC-Demo.pdf|Un pdf]] qui compare les performances de MIDI et OSC.   * [[http://opensoundcontrol.org/files/OSC-Demo.pdf|Un pdf]] qui compare les performances de MIDI et OSC.
-  * [[http://python.developpez.com/cours/Python-agregation-outils/#LIV-C|**Surcouches légères**]] Je cite: Python et l'agrégation d'outils Par Laurent Pointal\\+  * [[http://python.developpez.com/cours/Python-agregation-outils/#LIV-C|Surcouches légères]] Je cite: Python et l'agrégation d'outils Par Laurent Pointal\\
 "Au dessus de TCP ou UDP de nombreuses personnes ont développé des couches logicielles pour répondre à des besoins spécifiques à un domaine en définissant des protocoles ad-hoc. Et dans bien des cas il existe un module tiers Python qui permet d'utiliser ces protocoles. En voici quelques exemples.\\ "Au dessus de TCP ou UDP de nombreuses personnes ont développé des couches logicielles pour répondre à des besoins spécifiques à un domaine en définissant des protocoles ad-hoc. Et dans bien des cas il existe un module tiers Python qui permet d'utiliser ces protocoles. En voici quelques exemples.\\
 Open Sound Control (OSC) est un protocole de communication utilisé dans le domaine du spectacle vivant, qui permet de transmettre des messages contenant des données typées, des ordres de contrôle pour des instruments, ou encore des échantillons numériques. Ce protocole est implémenté en respectant des contraintes de temps (rendu temps réel) et de facilité d'accès par des personnes dont le métier de base n'est pas nécessairement l'informatique. Les paquets OSC peuvent être transportés de différentes façons, liaison série, bus USB, et liaisons réseau TCP ou UDP." Open Sound Control (OSC) est un protocole de communication utilisé dans le domaine du spectacle vivant, qui permet de transmettre des messages contenant des données typées, des ordres de contrôle pour des instruments, ou encore des échantillons numériques. Ce protocole est implémenté en respectant des contraintes de temps (rendu temps réel) et de facilité d'accès par des personnes dont le métier de base n'est pas nécessairement l'informatique. Les paquets OSC peuvent être transportés de différentes façons, liaison série, bus USB, et liaisons réseau TCP ou UDP."
  
-=== Quelle différences entre UDP et TCP ===+=== Quelle différences entre UDP et TCP ?===
  
-TCP est une couche au-dessus de UDP. En gros, UDP va vite mais ne vérifie pas si ce qui a été envoyé à été reçu. C'est bien pour du son, un jeu, ou la vitesse est importante. TCP attend une réponse après l'envoi pour savoir si le message a été bien reçu, sinon il renvoie. C'est sûr, mais ça prend du temps : c'est bien pour du html, des fichiers ..+TCP est une couche au-dessus de UDP. En gros, UDP va vite mais ne vérifie pas si ce qui a été envoyé à été reçu. C'est bien pour du son, un jeu, ou la vitesse est importante. TCP attend une réponse après l'envoi pour savoir si le message a été bien reçu, sinon il renvoie. C'est sûr, mais ça peut prendre du temps : c'est bien pour du html, des fichiers ..
  
 +En pratique, sur un réseau local le TCP va aussi vite que l'UDP. TCP permet le mode connecté, qui permet d'identifier facilement les connectés: [[http://twistedmatrix.com/|Twisted]] est parfait pour ça.
 +
 +{{ ::score.png |ossia screenshot}}
 ===== Comment implémenter OSC en python ? ===== ===== Comment implémenter OSC en python ? =====
- +====oscpy du projet Kivy==== 
-==== txosc ==== +  * **[[kivy_oscpy|]]** 
- +En 2020, ce projet fait partie du projet Kivy: laisser tomber tout le reste, utilisez ça !
-Uniquement python2.7 en avril 2012, mais twisted est en cours de portage. Je cite un des auteurs :"It's the Best implementation of OSC for Python as far as I know.". Des ressources sur [[txosc|**txosc**]] +
 ==== liblo ==== ==== liblo ====
  
-[[http://liblo.sourceforge.net/|**liblo**]] est une bibliothèque d'implémentation d'OSC, et [[http://das.nasophon.de/pyliblo/|**python-liblo**]] en est la version python. Une recherche très approfondie m'a donné quelques projets qui l'utilise:+[[http://liblo.sourceforge.net/|liblo]] est une bibliothèque d'implémentation d'OSC, et [[http://das.nasophon.de/pyliblo/|python-liblo]] en est la version python. Une recherche très approfondie m'a donné quelques projets qui l'utilise:
  
   * OpenNI   * OpenNI
   * RoseGarden   * RoseGarden
  
-Il n'y a pas de fonction "decode": il faut ajouter des méthodes (handle) pour définir ce que l'on veut en fonction du message. Le projet Android meet Blender (OSC): [[http://www.surreal.asturnazari.es/node/178|www.surreal.asturnazari.es]] utilise pyliblo. **txosc** est beaucoup mieux que pyliblo.+Il n'y a pas de fonction "decode": il faut ajouter des méthodes (handle) pour définir ce que l'on veut en fonction du message. Le projet Android meet Blender (OSC): [[http://www.surreal.asturnazari.es/node/178|www.surreal.asturnazari.es]] utilise pyliblo.
  
 ==== pyOSC une implémentation simple de Open Sound Control en Pure Python ==== ==== pyOSC une implémentation simple de Open Sound Control en Pure Python ====
  
-  * [[http://gitorious.org/pyosc|**gitorious.org/pyosc**]] propose le développement de SimpleOSC. +  * [[http://gitorious.org/pyosc|gitorious.org/pyosc]] propose le développement de SimpleOSC. 
-  * [[https://trac.v2.nl/wiki/pyOSC|**trac.v2.nl/wiki/pyOSC**]] donne des explications. Je cite:+  * [[https://trac.v2.nl/wiki/pyOSC|trac.v2.nl/wiki/pyOSC]] donne des explications. Je cite:
  
 "Ce module est vaguement basé sur le bon vieux "SimpleOSC", mis en œuvre par Daniel Holth & Clinton McChesney. Il a surtout été réécrit, et tout un ensemble de nouvelles classes ont été ajoutés: OSC-bundles, un simple OSC-client, un simple OSC-server, threading & forking OSC-servers et un plus complexe "threading & forking OSC-servers OSC-client" qui supporte les abonnements et OSC-address basée sur le filtrage d'adresse." "Ce module est vaguement basé sur le bon vieux "SimpleOSC", mis en œuvre par Daniel Holth & Clinton McChesney. Il a surtout été réécrit, et tout un ensemble de nouvelles classes ont été ajoutés: OSC-bundles, un simple OSC-client, un simple OSC-server, threading & forking OSC-servers et un plus complexe "threading & forking OSC-servers OSC-client" qui supporte les abonnements et OSC-address basée sur le filtrage d'adresse."
  
-== Historique =+===SimpleOSC===
- +
-**SimpleOSC:**+
  
   * Copyright (c) Daniel Holth & Clinton McChesney.   * Copyright (c) Daniel Holth & Clinton McChesney.
  
-encore valable avec python2.6 et c'est cette version qui est dans le pyKit de Julian oliver ! toujours en ligne sur [[http://www.ixi-software.net/content/body_backyard_python.html|ixi-software.net]]+encore valable avec python2.6 et c'est cette version qui est dans le pyKit de Julian oliver ! toujours en ligne sur [[http://www.ixi-software.net/content/body_backyard_python.html|ixi-software.net]], il est aussi utilisé par kivy.
  
-**pyOSC:**+===pyOSC===
  
   * Copyright (c) 2008-2010, Artem Baguinski <artm@v2.nl> et al., Stock, V2_Lab, Rotterdam, Netherlands.   * Copyright (c) 2008-2010, Artem Baguinski <artm@v2.nl> et al., Stock, V2_Lab, Rotterdam, Netherlands.
Ligne 93: Ligne 87:
  
   * Copyright (c) 2010 Uli Franke <uli.franke@weiss.ch>, Weiss Engineering, Uster, Switzerland.   * Copyright (c) 2010 Uli Franke <uli.franke@weiss.ch>, Weiss Engineering, Uster, Switzerland.
- 
-== Version == 
  
 **v0.3.0 - 27 Dec. 2007** Started out to extend the 'SimpleOSC' implementation (v0.2.3) by Daniel Holth & Clinton McChesney. **v0.3.0 - 27 Dec. 2007** Started out to extend the 'SimpleOSC' implementation (v0.2.3) by Daniel Holth & Clinton McChesney.
Ligne 106: Ligne 98:
   * Le dépot sur gitorious.org n'est plus actif en novembre 2017   * Le dépot sur gitorious.org n'est plus actif en novembre 2017
  
-Un lien pour récupérer les sources: [[https://gitorious.org/pyosc/devel/source/6aaf78b0c1e89942a9c5b1952266791b7ae16012?p=pyosc:devel.git;a=snapshot;h=633c0112318a3519314aa798a552a092566c73c1;sf=tgz|sources]] +Un lien pour récupérer les: [[https://gitorious.org/pyosc/devel/source/6aaf78b0c1e89942a9c5b1952266791b7ae16012?p=pyosc:devel.git;a=snapshot;h=633c0112318a3519314aa798a552a092566c73c1;sf=tgz|sources]]
- +
-== Download == +
- +
-Pack des fichiers du 22 juin 2011 : **{{:OSC.py versions.zip|fig:OSC.py versions.zip}}** +
- +
-===== Importer votre module OSC en python =====+
  
-Les explications sur la page [[Importer_un_module_python_dans_un_script|**Importer un module python dans un script**]].+=== Version python 3=== 
 +La version python 3 est [[https://github.com/sergeLabo/pymultilame/tree/master/pymultilame|OSC3.py de pymultulame]]
  
-===== Des exemples simples pour envoyer et recevoir en python ===== 
  
-Des exemples pour un script en boucle avec OSC.py **[[Envoyer_et_recevoir_de_l'OSC_en_python|Envoyer et recevoir de l'OSC en python]]**.+===== Documentation pour Blender en python =====
  
 +  * [[https://github.com/sergeLabo/blenderOSC|blenderOSC sur GitHub]]
 +  * [[https://github.com/sergeLabo/pyOSCcodec|pyOSCcodec sur GitHub]] qui ne contient que code et decode
 +  * [[TapOSC|TapOSC Application Android imitation de TouchOSC]]
 +  * [[https://github.com/sergeLabo/TapOSC|TouchOSC sur GitHub]]
 ===== Des exemples entre puredata et Blender ===== ===== Des exemples entre puredata et Blender =====
  
Ligne 128: Ligne 118:
 ===== Problème de latence très grande ===== ===== Problème de latence très grande =====
  
-Si la latence est énorme, le problème vient du buffer UDP. Si l'envoi de data se fait à une fréquence supérieure à la lecture, le Buffer se remplit et les datas qui sont lues dans ce buffer ne sont pas les dernières envoyées. Des [[Latence_de_l'_OSC_dans_Blender|**explications et des solutions**]].+Si la latence est énorme, le problème vient du buffer UDP. Si l'envoi de data se fait à une fréquence supérieure à la lecture, le Buffer se remplit et les datas qui sont lues dans ce buffer ne sont pas les dernières envoyées. Des **[[Latence_de_l'_OSC_dans_Blender|explications et des solutions]]**.
  
 ===== Bundle or not Bundle ===== ===== Bundle or not Bundle =====
Ligne 141: Ligne 131:
 **Intêret du Bundle**: Si il y a beaucoup de messages qui changent en même temps, tous les messages seront traîtés à chaque boucle du script. Sinon, il serait traîtés dans des boucles successives. **Intêret du Bundle**: Si il y a beaucoup de messages qui changent en même temps, tous les messages seront traîtés à chaque boucle du script. Sinon, il serait traîtés dans des boucles successives.
  
-Particularité d'un script dans Blender: Le script est excécuté à chaque frame, donc maxi 60 fps(60Hz). Le script peut décoder le bundle à chaque frame et Blender n'aura pas de latence. Il faudra aussi s'assurer que la valeur lue est bien la dernère reçue en définissant la [[Latence_de_l'_OSC_dans_Blender|**taille du buffer UDP**]].+Particularité d'un script dans Blender: Le script est excécuté à chaque frame, donc maxi 60 fps(60Hz). Le script peut décoder le bundle à chaque frame et Blender n'aura pas de latence. Il faudra aussi s'assurer que la valeur lue est bien la dernère reçue en définissant la **[[Latence_de_l'_OSC_dans_Blender|taille du buffer UDP]]**.
  
 TouOSC envoie un message toutes les 0.1 secondes en jouant très vite(soit 10Hz), le script avec un sleep de 0.001 tourne à 300 Hz. TouOSC envoie un message toutes les 0.1 secondes en jouant très vite(soit 10Hz), le script avec un sleep de 0.001 tourne à 300 Hz.
Ligne 148: Ligne 138:
  
  
-{{tag>logiciels_de_communication}}+{{tag>logiciels_de_communication sb osc séquenceur}}
open_sound_control_osc.1531988156.txt.gz · Dernière modification : 2018/07/19 08:15 de serge