Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:brutbox:dev:wireless:accueil

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édentes Révision précédente
Prochaine révision
Révision précédente
projets:brutbox:dev:wireless:accueil [2020/04/10 14:50]
laurent [osc2alsa-midi]
projets:brutbox:dev:wireless:accueil [2020/04/10 15:07] (Version actuelle)
laurent [la solution ?]
Ligne 69: Ligne 69:
 À ce jour, cette méthode montre encore une latence trop importante pour être dûe au seul traitement de l'OSC à l'intérieur de puredata. Pour vérifier le rôle de la couche réseau de PD, il est nécessaire de l'éviter en utilisant une autre voie de communication.  À ce jour, cette méthode montre encore une latence trop importante pour être dûe au seul traitement de l'OSC à l'intérieur de puredata. Pour vérifier le rôle de la couche réseau de PD, il est nécessaire de l'éviter en utilisant une autre voie de communication. 
  
-Le gain en vitesse de calcul comparé à la réception OSC interne à puredata n'a pas été évalué et il peut être tout de même bénéfique d'externaliser ce traitement en utilisant //liblo// à la place d'une abstraction pd. Un [[https://github.com/reso-nance/brutbox-wifi/raw/master/osc2pd/setup | script d'installation]] pour debian et ses dérivés (ubuntu, raspbian...) ainsi qu'un [[https://github.com/reso-nance/brutbox-wifi/raw/master/osc2pd/example.pd | example puredata]] sont disponibles sur le git. L'installation se fait en téléchargeant le dossier osc2pd sur le disque dur puis en exécutant ''%%sudo bash ./setup%%''. Une connection à Internet est nécessaire pour télécharger les dépendances. Le script peut alors être lancé par la commande ''%%python3 osc2pd.py%%''. Il écoutera sur le port 8000 et renverra à pd sur le port 10000.+Le gain en vitesse de calcul comparé à la réception OSC interne à puredata n'a pas été évalué et il peut être tout de même bénéfique d'externaliser ce traitement en utilisant //liblo// à la place d'une abstraction pd. Un [[https://github.com/reso-nance/brutbox-wifi/raw/master/osc2pd/setup | script d'installation]] pour debian et ses dérivés (ubuntu, raspbian...) ainsi qu'un [[https://github.com/reso-nance/brutbox-wifi/raw/master/osc2pd/example.pd | exemple puredata]] sont disponibles sur le git. L'installation se fait en téléchargeant le dossier osc2pd sur le disque dur puis en exécutant ''%%sudo bash ./setup%%''. Une connection à Internet est nécessaire pour télécharger les dépendances. Le script peut alors être lancé par la commande ''%%python3 osc2pd.py%%''. Il écoutera sur le port 8000 et renverra à pd sur le port 10000.
  
 ==== osc2alsa-midi ==== ==== osc2alsa-midi ====
Ligne 83: Ligne 83:
 === adressage === === adressage ===
 Le script tient une liste des adresses OSC reçues dans le fichier //OSCaddresses.txt// qu'il génère si nécessaire. À tout nouveau message reçu sera attribué un numéro de control change entre 0 et 127. Il est possible d'ajouter ou modifier manuellement les attributions en modifiant ce fichier texte. Pour assigner le CC#5 à l'adresse ///monOSC//, il suffit d'ajouter une ligne : ''%%/monOsc -> 5%%''. Les lignes commençant par le symbole # seront ignorées. Si deux adresses sont assignées au même CC, le script affichera un message d'erreur et la seconde sera ignorée. Pour chaque message, la valeur attendue est un float entre 0 et 1 qui sera transformé en une valeur entière entre 0 et 127 Le script tient une liste des adresses OSC reçues dans le fichier //OSCaddresses.txt// qu'il génère si nécessaire. À tout nouveau message reçu sera attribué un numéro de control change entre 0 et 127. Il est possible d'ajouter ou modifier manuellement les attributions en modifiant ce fichier texte. Pour assigner le CC#5 à l'adresse ///monOSC//, il suffit d'ajouter une ligne : ''%%/monOsc -> 5%%''. Les lignes commençant par le symbole # seront ignorées. Si deux adresses sont assignées au même CC, le script affichera un message d'erreur et la seconde sera ignorée. Pour chaque message, la valeur attendue est un float entre 0 et 1 qui sera transformé en une valeur entière entre 0 et 127
 +
 +==== la solution ? ====
 +Comme nous l'avons vu, le problème de congestion observé provient bien de la façon dont les données sont gérée à l'intérieur de pd. Mes connaissances du fonctionnement interne de pd ne permettant pas d'en déterminer la cause plus avant, j'ai cherché une solution plus simple mais fiable. En limitant la quantité de messages émis par les capteurs à ~30 à 40 messages par secondes, ce phénomène ne se produit plus. Cette limitation n'étant pas liée à un //delay()// dans le code de l'ESP8266, elle n'induit aucune latence additionnelle. Le délai minimal entre deux messages émis par le même capteur est ajustable en en-tête des firmwares par la ligne ''%%#define MAX_RATE 30%%'' où il est renseigné en millisecondes. La valeur de **30ms** (soit ~33 messages/seconde max) semble sûre mais réactive. **Des tests additionnels en situation réelle doivent être poursuivis avant de considérer ce problème comme définitivement clos.**
 ===== Photos ===== ===== Photos =====
 {{:projets:brutbox:dev:wireless:all-bbb-inok.png|}} {{:projets:brutbox:dev:wireless:all-bbb-inok.png|}}
/home/resonancg/www/wiki/data/attic/projets/brutbox/dev/wireless/accueil.1586523043.txt.gz · Dernière modification: 2020/04/10 14:50 de laurent