Salut,
Je suis nouveau sur ce forum, et relativement nouvel utilisateur de Pd... Je suis pas mal de tutos et de docs pour apprendre, mais je n'arrive pas à comprendre l'utilisaition de $ et #:
Pour les, ça rentre... Je comprend que je peux récupérer les variables de création avec $1 - $n... (comme des inlets en fait?)
Mais je ne comprends pas vraiment la différence entre
-$0 et $1 et plus
-la différence entre $ et #
-comment faire des retours (outlets) dans les abstractions
En fait je voudrais comprendre comment faire simplement une abstraction qui gère la surface de contrôle BCF2000, où il faenviron 90 connexions. Pour l'instant, j'ai fait des send depuis les fader ou les nombres (properties): "midi1" à "midi90", et je remarque qu'en ouvrant simplement le patch bcf à côté du principal (sans abstraction ou sous-patch, ni $) je peux tout de même récupérer les valeurs (receive sur un nombre p.ex)...
enfin, si vous connaissez un tuto qui explique ça bien, ou si quelqu'un peut l'exposer en deux mots, je suis preneur
Merci
Hors ligne
Il y a un pdf qui parle de la terminologie sur Pure Data, ça peut t'apporter des éléments de réponses :
à la fin du pdf
impala.utopia.free.fr/pd/patchs/PureData_Initiation_fr.pdf
Hors ligne
Bonjour Blindekinder,
Le signe dollar ($), représente une variable, auquel on attribue un numéro,
$1, $2, etc. La variable $0, dans une abstraction, est un cas particulier,
puisqu'elle prend automatiquement un numéro généré par Pure Data.
Les sorties se font avec l'objet [outlet], comme pour les sous-patch.
Pour le caractère "#"...dans quel cas l'utilises-tu?
solipse.
Hors ligne
Merci,
=> matohawk: oui, je connais ce document... il m'a déjà bien aidé, mais pas trop pour ce sujet...
=> solipse: je ferai quelques essais avec $0, mais je ne vois pas très bien comment l'utiliser... Quant au #, je ne comprends pas la différence avec $... Et pour être plus précis, qu'est ce que ça change si je met un #, un $, ou rien avant la chaine dans un send (properties par exemple)?
Hors ligne
le # n'est pas utilisé en principe.
Mais je sais par exemple si tu mets plusieurs arguments dans un objet graphique : style slider, Pure Data remplace le $ par un #.
du genre dans send variable tu mets $1$2
tu fais ok puis tu réouvre les propriétés de l'objet et tu trouve ceci $1#2
mais ça marche très bien quand même
Sinon fais attention car dans les messages Pure Data les $ ont une valeur de variable locale ça n'a pas du tout la même fonctionnalité.
Thomas
Hors ligne
bon, en fait ce que je ne comprends pas, c'est cette citation (Help Browser => manuals/ => 0.Intro/ => 33.guis.pd [pd dollar] ):
the_dollar_thing If you want to send to, or to receive from gui-objects in abstractions, you have to write into the property-entry: #1-label (instead of $1-label). if you want a unique send-receive-symbolname: type #0-uniquelabel (instead of $0-uniquelabel).
à quoi ça sert de mettre $ ou # dans les send, si de toute façon apparemment toutes les abstraction, tous les patch et les sub-patch le reçoivent avec une simple chaine?
Hors ligne
Bonjour Blindekinder,
Le signe $ ou #, pour les propriétés d'un objet GUI, permet d'identifier ce qui
suit comme étant une variable.
Pour ce qui est de la citation, elle me semble claire...pour les objets GUI, il faut
substituer # à $.
Dans la forme "#0-uniquelabel", la numérotation de la variable est faite par PD,
comme je te l'écrivais dans un post précédent.
solipse.
Hors ligne
euh, merci, mais tu aurais un tout petit minuscule exemple à me donner? ça reste vraiment flou pour moi... Pourtant je connais le jargon de développement, puisque j'ai fait un peu de Python et pas mal de PHP...
Disons: qu'est ce que je peux faire de spécial avec mon GUI si je l'appelle $1-bla plutôt que bla? Et d'ailleurs quand je met # dans les properties d'un GUI, il me le remplace par $...
Hors ligne
Salut,
concrètement c'est pratique quand tu dois instancier un grand nombre de fois la même abstraction.
avec le $0 c'est réalisé dynamiquement, tu n'as plus à t'en soucier, en quelque sorte, cela donne une portée locale à tes variables puisque le $0 est unique. Tu cours toujours le risque avec $1 d'oublier que tu l'as déjà nommé de cette façon ailleurs.
Pd c'est un peui l'inverse de python: avec python il faut déclarer explicitement une variable comme globale à chaque appel de fonction comme
global mavariable
sinon tu peux la lire mais pas la modifier. Avec Pd, si tu crées l'objet suivant:
[receive $1]
il te suffira de faire
[send $1]
depuis un patch au même niveau ou un patch imbriqué ou un patch n'importe où ailleurs pour modifier la variable pourvu que $1 ait la même valeur.
quand à la BCF2000, plutot que de réinventer la roue, Iohannes Zmoelnig a déjà publié du code voire un objet compilé qui le fait. Vincent Rioux également je crois. tu peux chercher dans les archives de la liste pd
++
O.
Edit: tu trouveras dans l'archive jointe quelques patches Pd permettant de communiquer avec la bcf 2000, dont Vincent Rioux est l'auteur cf http://vincentrioux.net/
Dernière modification par oli44 (2009-01-28 23:57:48)
Hors ligne
merci oli44...
Je crois que le dollar reste un peu flou (peut-être mes tendances partisanes de la décroissance?)... Je le comprends déjà bien dans les abstractions et son utilisation dans les messages... Mais pour les GUI...
Bref, j'approfondirai le sujet...
A part ça je n'arrive pas à décompresser ton archive:
tar: Ceci ne ressemble pas à une archive de type « tar »
tar: On saute à l'en-tête suivant
tar: Des erreurs ont provoqué l'arrêt du programme
Mais je te remercie, une recherche avec les noms que tu m'as donné n'a presque rien donné; tu peux vérifier l'archive?
Dernière modification par Blindekinder (2009-02-03 21:49:25)
Hors ligne
C'est curieux. Quand je met un #n dans un objet Gui, il est transformé en $n au premier enregistrement du patch (0.40.3-extended)
Hors ligne
Pages: 1