Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2012-01-10 20:37:57 send et receive d'une abstraction à l'autre

elode
membre
Lieu: Salasc
Date d'inscription: 2011-04-07
Messages: 28
Site web

send et receive d'une abstraction à l'autre



Bonjour,
Comment faire pour envoyer un message d'une abstraction à une autre quand un étage d'abstraction les sépare.

J'ai par exemples cet emboitage d'abstractions :

- Base
   - abstraction01 $0 1
   - abstraction02 $0 1
      - abstration03 $0 1

Si je veux par exemple envoyer un message depuis "Base" vers "abstraction03" (qui est dans "abstraction02), comment procéder ?

Je n'ai pas de problème quand les abstractions sont d'un étage voision.
Si je veux par exemple envoyer un message de "Base" vers "abstraction01", je fais :
- dans "Base" : [s $0-message]
- dans "abstraction01" : [r $1-message]
… et ça marche.

En fait, dès qu'il y a plus d'un étage d'abstractions en poupée russe et que les abstractions que je veux faire communiquer sont séparées, je n'arrive à rien.
Y a-t-il une solution ? Je suppose qu'il me manque quelques bases, mais les renseignements sont assez difficiles à trouver.

Merci d'avance pour vos lumières smile

Hors ligne

 

#2 2012-01-10 22:16:00 Re : send et receive d'une abstraction à l'autre

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: send et receive d'une abstraction à l'autre



Attention réponse smile

[r $1$2-message]

Je te laisse te dépatouiller avec ça. tongue
Mais, au vue de là où tu es arrivé, tu devrais t'en sortir.
Si vraiment tu galères, je prendrais le temps de te faire un patch d'exemple.

Bon courage.


L'Amour au Peuple !

Hors ligne

 

#3 2012-01-10 23:38:38 Re : send et receive d'une abstraction à l'autre

elode
membre
Lieu: Salasc
Date d'inscription: 2011-04-07
Messages: 28
Site web

Re: send et receive d'une abstraction à l'autre



Bon ben… franchement, je cale !
Quelques éclaircissement seraient les bienvenus smile

Hors ligne

 

#4 2012-01-11 00:22:12 Re : send et receive d'une abstraction à l'autre

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: send et receive d'une abstraction à l'autre



Je t'ai fait un petit patch simpliste...
Je pense qu'il parle de lui même.

Bon courage. smile


L'Amour au Peuple !

Hors ligne

 

#5 2012-01-11 11:27:05 Re : send et receive d'une abstraction à l'autre

elode
membre
Lieu: Salasc
Date d'inscription: 2011-04-07
Messages: 28
Site web

Re: send et receive d'une abstraction à l'autre



Merci beaucoup, je vais expérimenter ça !
C'est le genre d'exemple qui m'a vraiment manqué pour avancer avec Puredata smile
J'avais bien acheté le bouquin "Loadbang", de Jehannes Kreidler, mais je n'y ai rien trouvé d'un peu approfondi sur ces problèmes de $.

Hors ligne

 

#6 2012-01-11 11:49:13 Re : send et receive d'une abstraction à l'autre

elode
membre
Lieu: Salasc
Date d'inscription: 2011-04-07
Messages: 28
Site web

Re: send et receive d'une abstraction à l'autre



Bon, j'ai expérimenté un peu et ça avance. Il me reste un problème : Quand j'utilise $0 dans la création de l'instance d'une abstraction.
Dans le patch (simpliste aussi) que je joints, je n'arrive pas à trouver la solution pour envoyer un message du niveau 1 au niveau 3.
Comment faire ?

Hors ligne

 

#7 2012-01-11 12:14:38 Re : send et receive d'une abstraction à l'autre

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: send et receive d'une abstraction à l'autre



L'archive est vide chez moi...
Essaye en .zip... pour voir...

Sinon, pour ce qui est du $0 (nombre aléatoire unique donné à la création), tu n'as pas vraiment moyen de le récupérer si ce n'est en le renvoyant du 3 vers le 1 à l'initialisation...
C'est pourquoi j'attribue moi-même un "ID" à mes abstraction via les arguments...
ID qui me sert aussi à obtenir un comportement spécifique des boites les unes par rapport aux autres (typiquement, construire une grille dans GEM).

Pourquoi es-tu attaché au $0 ?
Pour tous messages internes à une abstraction de "second niveau" [s $1$2 toto], [s $1$2 tata], [r $1$2 toto], [r $1$2 tata] fonctionnent...

Dernière modification par Olivier (2012-01-11 12:15:33)


L'Amour au Peuple !

Hors ligne

 

#8 2012-01-11 12:21:44 Re : send et receive d'une abstraction à l'autre

elode
membre
Lieu: Salasc
Date d'inscription: 2011-04-07
Messages: 28
Site web

Re: send et receive d'une abstraction à l'autre



Ben… d'après ce que j'ai compris, $0 permet que la référence soit unique, et donc d'éviter la communicution entre deux patchs ouverts avec des référence semblables.
Mais je vais creuser un peu dans ta direction.
Sinon, je joints de nouveau le fichier, cette fois en .zip.

Hors ligne

 

#9 2012-01-11 14:13:27 Re : send et receive d'une abstraction à l'autre

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: send et receive d'une abstraction à l'autre



Je vois...
Mais en fait, si tu n'arrives pas à résoudre ton problème c'est que quand tu dis :

citation :

Je n'ai pas de problème quand les abstractions sont d'un étage voisin.

Et bien tu te trompes... tongue

Ton [r $1-message] dans ton "abstraction01"  est en fait aussi atteint dans toutes tes abstraction02, 03, 04...
C'est comme si tu avais mis [s message] dans "base" et [r message] dans les abstractions.

Essaye... tu va t'en rendre compte par toi-même.

Le $0 permet effectivement d'obtenir un numéro unique pour ne pas que les abstractions interfèrent entre elles.
C'est l'équivalent de la notion de "local" dans d'autre langage...

Si tu veux obtenir ce numéro colle un [init $0] dans tes abstraction avec une boite nombre en dessous et relance ton patch.
Tu obtiendras ainsi ce fameux numéro unique que tu pourras utiliser dans "base" si tu le souhaites...

Mon point de vue, si tu veux être méthodique, est de privilégier la numérotation "à la mano" de tes abstractions de manière à pouvoir atteindre rigoureusement et très précisément tes boites.
Par "à la mano", j'entends "en suivant une méthode qui t'est propre"... car ça n'empêche pas le patchage dynamique (bien au contraire, ça le facilite).

Comme dis dans mon précédent message, je t'invite à rendre local tes send et receive avec des $1$2 plutôt qu'avec un très fastidieux $0... (mais uniquement si tu as besoin de les atteindre de l'extérieur, car sinon, le $0 est tout à fait approprié)
D'autant qu'après tu peux avoir des $1$2$3$4... smile

Bon courage.

EDIT :
Cela peut apparaître compliquer mais dis toi qu'une fois que tu auras compris ça, tu auras fait un très grand pas vers l'architecturisation de tes patchs...

BONUS :

1 ) Ne pas commencer la numérotation des abstractions par "0" car "03" sera transmis comme "3" et la communication ne se fera pas... (à moins de transmettre un nombre arbitraire avant "903", par exemple).
2 ) Si $1$2 donne 23, tu obtiens un vrai float avec 2 comme dizaine et 3 comme unité... étonnant non ?

Dernière modification par Olivier (2012-01-11 14:28:56)


L'Amour au Peuple !

Hors ligne

 

#10 2012-01-11 14:41:43 Re : send et receive d'une abstraction à l'autre

elode
membre
Lieu: Salasc
Date d'inscription: 2011-04-07
Messages: 28
Site web

Re: send et receive d'une abstraction à l'autre



Oulala ! Bon, faut que je travaille ! Tout ça est super intéressant !

Hors ligne

 

#11 2012-01-15 20:48:58 Re : send et receive d'une abstraction à l'autre

jerome
membre
Date d'inscription: 2008-03-04
Messages: 103
Site web

Re: send et receive d'une abstraction à l'autre



Pour fabriquer des envois avec deux variables, je conseillerais d'utiliser un séparateur explicite comme un tiret "-". Cela permet d'envoyer un message à l'abstraction 23-1 et non 231.

Pour créer des envois de façon dynamique à deux variables, j'avais fait ce petit patch il y a bien longtemps. Je l'ai remanié un peu si ça peut aidé :
http://codelab.fr/up/messages-2-variables-1.png

Dernière modification par jerome (2012-01-15 20:52:07)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024