Bonsjours...
Je souhaite récupérer un flux de string de caractères accentués de Python vers Puredata...
J'ai tenté avec de l'OSC, mais non seulement la lib de MrPeach ne semble pas gérer l'UTF-8 mais il semblerait que ce ne soit pas non plus le cas de pyOSC + simpleOSC dans Python...
Comment feriez-vous sans avoir à passer par de l'écriture de fichiers txt externes ?
Merci
Hors ligne
J'ai déjà eu le problème, je suis allé lire la norme OSC et c'est de l'ASCII point barre. J'ai réfléchi à trois implémentations sans jamais les mettre en oeuvre (on est fainéant parfois)
La première consisterait à passer par un encodage genre HTML 3.2.
Du côté Python, tu commences par enlever tous les ;
tu récupères la lib qui va bien (laquelle? je sais pas) qui permet d'encoder un é par exemple en é
Comme le ; a un signification spécifique pour Pd, il faut soit l'échapper à nouveau, ou l'encoder en autre chose. Je pense qu'on peut utiliser le signe * sans souci.
é deviendrait donc é*
On a ensuite notre communication OSC.
Du côté Puredata, tu parses le tout avec un assemblage savant de list-abs/list-replace mais cela impose de tout passer en liste, même un simple mot, en tout cas un joli exercice de traitement récursif.
La seconde est sans doute la plus clean et la plus rapide côté Pd: elle consiste à tout encoder du côté python en byte, envoyer en OSC en integer, puis d'utiliser [moocow/bytes2any].
La troisième est la plus chelou, mais elle marcherait du coup pour des images, du son, du caca mental
Python génère à la volée un fichier (une archive?) , l'envoie en udp sur un RAM disk (/dev/shm), donne les instructions pour la désarchiver, puis pour la lire avec [text] ou [qlist].
ça peut paraitre lourdingue, mais si jamais tu connais à l'avance le texte que tu dois envoyer (comme des sous-titres pour une vidéo), il te suffit d'envoyer la commande OSC "affiche moi la ligne 1327 aux coordonnées X,Y" et ce sera instantané.
BOn, je sais , tu ne voulais pas passer par un fichier texte, mais là on écrit à la volée, et en RAM :-P
Hors ligne
Merci Oli...
En voilà des pistes...
En fait, je crois que je suis resté en 1986...
... car ça me semblait impossible de pouvoir écrire dans un fichier et le faire lire dans la procédure suivante.
Du coup, j'ai essayé tout simplement d'écrire un fichier texte et d'envoyer un bang en OSC à Puredata pour qu'il le lise :
... et bien, ça marche.
L'idée, ici, est d'exploiter dans Puredata le flux d'un canal IRC tout en ayant la puissance de feu de parsing de Python...
On va gagner !
Hors ligne
Comment feriez-vous sans avoir à passer par de l'écriture de fichiers txt externes ?
=> Sinon la méthode la plus simple pour passer une string avec des caractères accentués ainsi que la ponctuation est une conversion en ASCII il me semble non? C'est ce que j'ai fait pour un programme qui récupère les actualités facebook vers pd.
Hors ligne
Olivier a écrit:
L'idée, ici, est d'exploiter dans Puredata le flux d'un canal IRC tout en ayant la puissance de feu de parsing de Python...
C'est plein de promesses, cette idée!
Hors ligne
Salut raf,
tu as tous les caractères accentués dans la table ascii? http://www.hobbyprojects.com/ascii-tabl … table1.gif
Le truc c'est qu'il y en a plusieurs, une de 0 à 127, et elle ne les a pas tous , et l'autre de 0 à 255, qui a tous les caractères occidentaux (enfin, français et espagnols).
Hors ligne
Pages: 1