Le $0 produit apparemment la même valeur en étant dans des sous-patchs différents. Il faut des patchs différents pour avoir des valeurs différentes.
D'où ma question, existe-t-il une solution pour les sous-patch ?
Je bidouille un truc avec des randoms mais c'est pas forcément très propre.
Hors ligne
$0, ça me sert surtout quand je fais des abstractions, pas des sous-patchs qui eux sont codés en dur (valeur fixes).
Hors ligne
Si tu fais une librairie de sous-patchs tu devrais vraiment penser à faire une librairie d'abstractions !
Il te faut faire des abstractions avec des paramètres que tu donnes à la suite du nom de ton abstraction.
Ces valeurs seront reprises dans ton patch par une série de $1, $2 etc...
genre :
[initbang] (dans pd extended seulement)
|
[f $1]
|
Ou :
[phasor~ $2]
|
etc...
Il y a tout d'expliqué dans la doc de Pd ou le Floss manual, il me semble.
Ca n'a rien de compliqué et tu vas te simplifier la vie.
Hors ligne
J'avais déjà essayer, mais pour modifier dynamiquement les paramètres, j'avais trouvé plus facile comme ça.
Je mets mon patch lib en pièce jointe. C'est un peu le bazar, il me sert aussi pour les tests, mais ça te donne une idée de ce que je cherche.
Hors ligne
C'est assez difficile de deviner ce que fait ton patch... Il manque quelques trucs lisibles par des êtres humains.
Dans tes abstractions tu peux définir ce à quoi serviront les arguments comme je t'ai montré un peu plus haut. Tu dois pouvoir trouver des explications plus détaillées dans l'aide de Pd.
Tu peux aussi définir la fenêtre de GOP dans ton abstraction.
Tu peux aussi avoir des inlet/oulet dans ton abstraction.
L'intérêt aussi d'une abstraction c'est que les modifications seront appliquées à chaque instance et tu n'auras pas à te farcir des séries de copier-coller pour distribuer les modifs.
Dernière modification par pob (2013-01-21 12:32:56)
Hors ligne
Juste, comment peux-tu modifier un argument ( donc en mémoire à la réouverture ) depuis une boite chiffre à l'intérieur de l'abstraction. Comme ce que je faisais avec des messages dans les sous-patch. Je sais pas si je suis clair.
Hors ligne
Rapidement... parce que ton patch n'est pas des plus lisible...
L'intérêt du [$0 ] est justement de rendre indépendant les abstractions les une des autres...
S'il avait une valeur différente dans les sous-patchs, on ne pourrait rien en faire... si si... je t'assure...
Mais je pense que c'est parce que tu ne sais pas trop encore ce qu'est une abstraction.
Par exemple, ton [pd m] qui se trouve à des dizaines d'endroit, devrait être une abstraction.
Si d'aventure, tu dois en modifier le contenu (pas la valeur du message mais la structure), tu vas devoir te les taper un par un...
... ce que tu vas devoir faire dans la mesure où elle ne sert pas à grand chose.
Car...
Si tu [set $( une boite message qui contient une valeur... tu ne fais rien...
Colle un [print ] sous ta boite message, tu vas voir... il ne sort rien si tu fais entrer des valeurs dans [set $1(
Bref...
Plutôt que d'essayer de résoudre ton pb de [$0], penches toi sur ce que sont les abstractions.
Tu vas perdre 2 heures pour en gagner 1000.
C'est un assez bon ratio, fait nous confiance.
(le pb de l'initialisation ne sera pas pour autant résolu pour toi, mais déplacé dans un contexte plus "rationnel" dans lequel nous pourrons alors t'aider plus facilement)
Bon courage.
Hors ligne
citation :
Juste, comment peux-tu modifier un argument ( donc en mémoire à la réouverture ) depuis une boite chiffre à l'intérieur de
En bangant [$1], [$2], [$3]... dont les valeurs sont les argument de tes abstractions, dans l'ordre.
[m 100 149 20] par exemple...
Hors ligne
Tiens, jette un œil là dessus si ça peut t'aider :
http://codelab.fr/2197#p11159
http://codelab.fr/2241#p11129
Hors ligne
ou encore ça :
http://codelab.fr/1794#p8846
Je poste des trucs que j'ai fait parce que je m'en souviens, mais il y a certainement d'autres exemples à dénicher.
Hors ligne
Désolé pour la lisibilité, mais ça n'était pas fait pour être montré...
Par contre, je comprends bien les avantages des abstractions, je m'en sers d'ailleurs pour d'autres choses.
J'ai utilisé ce système car il était plus simple pour moi.
Je m'explique.
Quand je fais ( par exemple )
[phasor~ 15]
|
[vcf~ 800 5]
|
[enveloppe 10 20 100 0 100]
|
[dac~]
d'abord, je crée les abstractions ( ou sous-patchs dans mon cas -pour l'instant- )
puis je trifouille les valeurs de chaque module jusqu'à trouver le son qui me convient.
Avec mon [pd mem] dans les sous-patchs, la valeur est conservée
et bangée par
[loadbang]
|
[r ldbg] ( qui me permets d'en renvoyer quand j'ai créé un nouveau sous-patch ).
avec une abstraction [phasor~] par exemple dans laquelle j'aurai inséré une boîte chiffre, je ne sais pas comment conserver la valeur de la boîte chiffre.
Il faudrait qu'elle modifie la valeur de l'argument ?
Si je n'agis que par la modif des arguments de l'objet, ça irait, mais je veux le faire par des boites chiffres ou des sliders.
Pour identifier chaque abstraction, il faudrait la nommer : [abstraction-$0] ?
je ne sais toujours pas si je suis clair :-)
Hors ligne
Je crois comprendre ce que tu cherches à faire là.
Si tes valeurs doivent être stockées dans le patch, je pense que tu dois "mémoriser" la valeur en modifiant le nom de l'abstraction à la main. Je ne suis pas sûr que de le faire style patch dynamique soit évident. Autre solution tu stockes les valeurs dans ton patch parent et tu envoies les valeurs aux différentes abstractions. Là, c'est déjà plus facile à envisager de façon "patch dynamique".
Tu peux aussi stocker les valeurs dans un fichier texte et pointer vers ce fichier pour la sauvegarde et la récupération des valeurs. Dans ce cas, je pense que ton abstraction pourrait avoir comme argument le nom ou l'index du fichier de paramétrage.
Hors ligne