Pages: 1 2
Comment sauvegarder à l'interieur d'une abstraction sans mettre dans un fichier text ???
Voici mon problème
J'ai fait un Midi CC Learner sous forme d'abstraction.
J'ai fait la sauvegarde en plaçant les valeurs dans des messages.
Mais forcement cela ne peut pas marcher dans le cas de l'abstraction.
Quelqu'un aurait il une idée sachant qu'il y aurait forcement n patches.
Hors ligne
Ouaip, un message à l'extérieur de l'abstraction, que tu remplis à coups de [set< et que tu charges avec un bang au chargement, ça devrait le faire...
[abstraction]x[settings<
Hors ligne
c'est ce que je fais mais cela doit être une abstraction donc il peut y en avoir plusieurs CC Learner dans le même patch.
Et si on utilise les messages, il n'en sauvegarde qu'une instance et pas les autres.
Je suis bon pour la sauvegarde dans un fichier texte.
Hors ligne
Enfin, l'idée est un peu absurde à la base, non ?
Une abstraction est faite pour être réutilisée, elle ne comporte donc que des paramètres fixes qui dépendent du fonctionnement de base et des entrées/arguments pour l'ajuster à chaque utilisation.
Les variables sont appelées à la création des instances de ton abstractions et peuvent être modifiées en cours d'exécution.
Comme tout le monde le propose le plus simple c'est dans le patch parent d'avoir le mécanisme au dessus.
Si ça ne te plais pas de voir cette mécanique, tu la planques le [t f f] et le [set $1( dans une abstraction. Et si ça c'est encore de trop, tu encapsules le tout dans une sous-patch.
Autre solution, tu peux te fabriquer un mécanisme qui va sauver tes paramètres dans un fichier texte. Avec pour a ligne 1 les paramètres de l'instance avec l'argument 1, à la ligne 2 les paramètres de l'instance avec l'argument 2 etc.
Mais il y aura forcément un moment où tu vas devoir dire à l'abstraction quelle sont les valeurs à prendre.
Il y a peut-être un moyen de trafiquer un truc en patch dynamique, mais, je ne suis pas certain que ce soit un bonne idée. Je vois ça plus comme une porte ouverte à des plantages. Ca voudrait dire de trouver la ligne qui correspond à l'instance de l'abstraction (bon courage) et de modifier ses paramètres dans le fichier .pd du patch parent. Mouais...
Hors ligne
Et pourquoi pas mettre ce que tu as à sauvegarder en argument de tes abstractions ?
Hors ligne
je vous ajoute le patch
mais comme ce patch doit rejoindre la librairie mtl et que les autres patches ne sauvegardent jamais rien, il sera comme les autres.
Merci pour vos remarques
Dernière modification par Jessica Nichenin (2013-02-20 11:18:28)
Hors ligne
kirobatz a écrit:
Et pourquoi pas mettre ce que tu as à sauvegarder en argument de tes abstractions ?
parce que mon midi learner apprend les paramètres midi après l'instanciation de l'abstraction.
Hors ligne
Ca demanderait un moyen de faire une nouvelle sorte d'instanciation d'objet, au croisement des abstractions et des sous-patchs. Ca serrait de pouvoir instancier cet objet de la même façon qu'une abstraction, mais que ce soit intégré au patch de la même façon qu'un sous-patch.
Hors ligne
C'est sûr que si à chaque fois que tu appelles ton abstraction, tu es obligé d'y rajouter un message ([abs]x[parametres<), c'est un peu relou. Par contre, s'il ne faut le faire qu'une seule fois pour toutes les abstractions, c'est mieux !
On peut imaginer une abstraction en deux parties : une qui fait effectivement le job ([midilearn 1 toto], envoyant ses paramètres via un [send toto]) et que tu déploies en plusieurs exemplaires, et l'autre qui reçoit les réglages de toutes les précédentes via un [receive toto], qui les stocke (dans un message ou un fichier texte, ou avec un [msgfile] ou autre liste indexée) et peut les renvoyer à la demande.
Sinon, il y a sssad...
Dernière modification par dwan (2013-02-20 13:27:34)
Hors ligne
justement pourquoi pas proposer mettre tout ça dans une table dans le main avec l'option save as content, ça fait le compromis avec le fichier texte?
Hors ligne
Ouaip, effectivement. Ça marche bien si tu rentres pas de paramètres exotiques comme du texte ou autre.
Hors ligne
c'est bien pour ça que je le propose...
Hors ligne
Je suis nouveau sur le forum, donc un p'tit s'lut à tous pour commencer!
Je suis un peu rouillé sur pd, car j'ai passé les dernières années sur SuperCollider. Je suis de retour sur pd pour un bon moment et quoi de mieux que faire un peu de support pour se rafraichir les idées et se perfectionner.
J'ai regardé le patch et j'ai un peu de difficulté à saisir l'idée derrière l'ensemble. Par contre, pour aller dans le même sens que Pod, je dirai que pour être de bonne qualité, il est certain qu'une abstraction doit être autonome et j'ajouterais même que dépendre d'un objet en dehors de l'extended tel que le /mtl/sign n'est pas très prope.
Si le patch a besoin de paramètres initiaux un loadbang ou initbang devrait suffire dans la majorité des cas. L'idée sus-mentionée de la table est également utilisé dans plusieurs circonstances. Un fichier texte indépendant entraîne des risques de dépendances non résolues et je le conseillerais que dans certains cas spéciaux. Personnellement, dans l'état actuel du projet, j'en profiterais pour repartir de zéro. C'est ce que je fais régulièrement, car cela me permet de reprendre la démarche tout en améliorant la propeté du code avant de sombrer dans un délir de fils qui devient très ennuyant à nettoyer dans un projet d'envergure.
D'autre part, l'idée d'un MIDI-learner me plaît bien, je dirais même qu'une suite d'outils pour l'apprentissage du MIDI pourrait s'avérer très intérressante pour moi qui devra enseigner pd dans un proche avenir. C'est un fait que pour une personne provenant d'un logiciel avec séquenceur et pianoroll intégrés ce n'est pas évident d'aborder le séquencage et le MIDI sous pd. De plus, chez les compositeurs de musique expérimentale on évite généralement la norme MIDI ce qui complique encore les choses. Bref, sujet très intéressant à développer.
Hors ligne
Pages: 1 2