Bonjour,
Je me casse les dents sur une question simple : je cherche une fonction qui donne la position (les coordonnées x y) d'un sous-patch se trouvant dans un patch.
Je prend un exemple plus précis. Il s'agit d'un patch principal contenant plusieurs sous-patch identiques "toto" qui ont chacun en entrée un bang. Ce bang affiche les coordonnées du sous-patch toto concerné (position x y du sous-patch par rapport à la fenêtre du patch principal).
En fait, toutes ces infos existent puisqu'elles se trouvent dans le fichier texte du patch principal et je sais qu'on peut y accéder avec un objet [textfile]. Mais, cette solution n'est pas bonne car, si on n'a pas sauvegardé à l'instant t, les coordonnées ne sont pas correctes. De plus, dans ce fichier, on ne peut pas distinguer les sous-patch toto.
Est-ce qu'une telle fonction existe ? Sinon, auriez-vous une solution à proposer ?
Hors ligne
une solution serait de les positionner toi même où tu veux dans le patch dès le départ (via des messages à pd).
tu stockes ces infos qque part (tables) et comme ca tu peux savoir plus tard où est chaque objet.
"parser" le fichier txt du patch c'est la misère, je fais ca dans mon système de plugin (qui utilise [pyext]) et c'est pas beau... (mais ca marche)
y
Hors ligne
Merci de ta réponse. Oui, c'est vrai... mais ce n'est vraiment pas pratique comme solution. J'imaginais qu'il pouvait y avoir une solution plus simple. Ce sont des informations qui existent bien quelque part puisqu'elles sont enregistrées avec le patch...
Avec la solution de lecture du fichier txt du patch, il faudrait, en fait, nommer mes sous-patch avec des noms différents "toto1", "toto2", etc. et écrire une sacrée moulinette pour obtenir la position de chacun. Faisable, mais assez lourdingue. Il doit bien y avoir plus simple...
Hors ligne
ça marche en mettant un canvas dans le sous-patch que l'on met en mode graph-on-parent.
il faut ensuite envoyer un message get_pos au canvas et on récupère les ccordonnées du canvas (et donc celles du souspatch) dans le patch principal (à condition que le souspatch soit fermé)
bref je me comprends...
Hors ligne
Excellente idée. Bravo : cela fonctionne très bien.
Merci.
Hors ligne
Sauf un petit problème : si on rajoute une seconde instance de sous-patch, les valeurs ne sont plus correctes puisque les send/receive utilisent les mêmes variables (Cf. code joint).
Je me suis dit qu'il serait intéressant d'utiliser des variables $0, mais comme ce sont des sous-patches et pas des abstractions, elles ne sont pas différenciées apparemment.
Voyez-vous une nouvelle astuce ?
Hors ligne
il faut modifier les noms des canaux émetteurs/récepteurs des objet cnv dans chaque sous-patch
exemple
toto1-snd / toto1-rcv
toto2-snd / toto2-rcv
etc...
ou bien utiliser des abstractions avec un parametre qui sera l'id unique de chaque objet
Hors ligne
Oui, des abstractions avec des identifiants uniques, j'y avais pensé. Merci. Je ne vois pas d'autre solution.
Hors ligne
J'ai trouvé une autre solution, un peu plus souple, avec la bibliothèque iemguts. J'ai beaucoup galéré pour trouver une version de cette bibliothèque qui fonctionne sur mon Mac (OSX). C'est une bibliothèque "non officielle", c'est-à-dire qu'elle n'est pas livrée avec le package standard, mais elle remplit parfaitement la fonction que je recherchais : obtenir la position d'un sous-patch dans une fenêtre, quelque soit le nombre de ces sous-patches (sans avoir à bidouiller les paramètres send/receive de chaque instance).
Je pense que cela peut en intéresser certains, c'est pourquoi je la livre ici dans la version darwin (pour Mac : à recopier dans le répertoire Pd-extended.app/Contents/Resources/extra), UNIX, ainsi que les sources (pour les experts : je n'ai pas su les compiler moi-même).
Je trouve que cette bibliothèque est vraiment super.
Hors ligne
excellent!
Hors ligne
Pages: 1