Bonjour,
Je travaille actuellement sur un projet permettant de créer facilement des GUI dans Pure Data sous forme d'externals et de passer rapidement son code de Max à PD et inversement. J'ai donc créé une petite bibliothèque de code C/C++ (je devrai, à terme, tout passer juste en C) qui :
- génère automatiquement les contours des boites et les inlets/outlets,
- améliore la gestion du graphisme, notamment par l'utilisation de calques et grâce des fonctions qui clippent les dessins aux limites des objets,
- offre la possibilité de créer des attributs automatiquement sauvés avec le patch,
- permet un gestion facile des inlets/outlets dynamiques
- offre une gestion plus facile des évènements souris et claviers
- offre un ensemble de macro permettant de passer de Max à Pd
etc...
Donc voici en lien le Git du projet : https://github.com/pierreguillot/PdEnhanced.git
Vous pouvez trouver des exemples compilés pour Mac dans la section Pd Chocolate, une petite bibliothèque d'objets qui, contrairement à Pd Vanilla, n'est pas essentielle mais peut être assez utile (notamment un vu~ et un nbx~ qui ne clignotent pas comme leurs homologues. Vous trouverez aussi une bibliothèque, bien plus conséquente avec de nombreuses interfaces graphiques assez complexes, dédiée à l'ambisonie sur le git du projet HOA où les codes sont presque identiques à ceux utilisés dans Max:
http://www.mshparisnord.fr/hoalibrary/
https://github.com/CICM/HoaLibrary.git
Comme vous pouvez le deviner, je suis à la base plutôt un utilisateur de Max (même si c'est en train de changer) et je voudrais avoir des retours et des conseilles étant donné que certaines pratiques dans Pd peuvent m'échapper.
Les choses que je souhaite rapidement améliorer sont :
- la création automatique d'une fenêtre de propriété à partir des attributs
- permettre de mieux capter les événements souris et clavier (je pense aux instructions "bind" afin d'avoir le click droit en mode "run" par exemple)
- essayer de créer des objets dans des sortes de sous-canvas ou sous-window afin d'utiliser les fonctions de clipping de base de tcl/tk (un peu comme popmenu et entry, c'est encore un peu flou pour moi)
Bref, si vous voulez contribuer au projet, vous êtes les bienvenus ou si vous avez des objets Max ou Pd que vous souhaitez changer de plateforme logicielle, n'hésitez pas à m'en faire part.
Hors ligne
Cher Pierre,
Une petite réponse pour t'encourager dans ton projet et te conforter dans l'intérêt qu'il présente (si tant est que ce soit nécessaire)...
Néanmoins, en ce qui me concerne, je n'ai pas de Mac à disposition et je ne compile pas...
Je ne te ferai donc part d'aucun retour désolé...
Mais il y a effectivement quelques personnes sur ce forum susceptibles de t'apporter leur regard...
Sinon, tu fais ça dans quel cadre ?
Du dev perso, des études, de la recherche ?
Bon courage dans tous les cas
Dernière modification par Olivier (2013-10-05 00:14:37)
Hors ligne
Excellent, bravissimo!
J'ai juste testé tes objets compilés, classe!
Ca me fera une occasion de regarder les sources des GUI, ça peut être utile.
Sinon tes GUIs , c'est du tcl où bien y'a moyen de changer?
Merci
Hors ligne
Merci pour ces retours, ça me conforte dans l'utilité d'un tel projet.
Pour répondre à Oliver, c'est dans un cadre à la fois personnel, d'étude et un peu recherche. Disons que c'est un peu hors de mon sujet de recherche mais que ça peut m'être assez utile, je travaille, à la base sur la spatialisation, le projet HOA et tout ce qui en découle...
Pour répondre à nononononono, j'utilise Tcl/Tk. Qu'es ce que tu entends par changer ? Je vais peut-être regarder au niveau de Juce d'ailleurs s'il y a des personnes qui ont déjà utilisé Juce avec Pd, ça peut me faciliter la tache.
Bref, merci
Hors ligne
Bonjour pierre,
en fait je me demandais simplement si l'interface des fenêtres était écrit en tcl/tk, et en conséquence s'il était possible de changer d'éditeur pour les GUI comme juce ou Qt, et la manière de procéder.
On a beaucoup parlé des problèmes des GUI-plugins et de leur capacité à mettre la m..... dans une install par exemple, est ce que ton projet vise à palier ça en les écrivant comme external?
Je suppose que tu as vu cette page : http://puredata.info/Members/hans/new-e … ow-in-beta , j'aimerai avoir ton avis sur ta manière d'aborder la chose, moi-même n'y pompant que dalle en interface graphique (et en anglais).
Ceci étant, ton code à l'air plutôt clair, ce qui est une bonne chose pour les contribs futures.
Ah, oui aussi, je me demandais si c'était possible de coder un external qui permettrais le drag-and-drop?
+
ArNO
Dernière modification par nononononono (2013-10-06 20:13:28)
Hors ligne
Bonjour,
Je n'ai pas pu compiler pour pure Data sous Linux, j'ai une erreur : "erreur: unknown type name ‘t_blob’"
J'ai essayé de chercher, je ne vois pas où est ce type de donnée.
Pour ce qui de ta mission, elle semble être une prioritée pour pas mal de gens. J'avais essayé avec qq autres de codelab de recenser les problèmes connus qui gênent dans l'utilisation de Pd : http://lite.framapad.org/p/MasterClass_Pd
Dans le lien ci-dessus, séparer le pd-core et le pd-gui semble être en cours de développement :
citation :
pd still handles some of the GUI stuff, but we are working on splitting that out for the 0.44 release. That is a big chunk of work but it will also bring big gains. In particular, it means that it will be possible for people to write their own GUIs for Pd, covering not just the display of the patch, but also the editing, and everything else. You like OpenFrameworks, python, iOS, JUCE, Qt, etc.? Write your own pd-gui using the toolkit of your choice. That's the idea at least. That will take a solid chunk of work, so we are looking for people to join that effort.
J'aurais bien aimé participer à ce développement, peut-être faut-il aller sonder les développeurs de pd qui se penchent là-dessus pour réaliser qq tâches et concentrer les efforts ?
J'aimerais faire un jour avec codelab et d'autres développeurs, une séance de mise à niveau (master class virtuelle sur qq jours) pour aider la communauté dans le développement et une autre session (code sprint) pour se concentrer sur une partie dont celle qui semble vraiment importante est bien celle-là.
Hors ligne
Bonjour,
Vu l'architecture de PD et la relation avec tcl/tk, je pense que c'est réalisable à la fin d'utiliser de remplacer en partie l'utilisation de Tcl/Tk par du Juce sans trop de problème (ça peut quand même prendre du temps) je pensais m'y atteler après une version assez stable et efficace avec Tcl/tk. Je n'ai que très peu utiliser Qt (une fois, je crois, il y a un moment) donc je ne vais pas m'aventurer sur la possibilité d'une mise en oeuvre facile. Je ne suis pas encore un Pure datiste confirmé et je ne comprends pas très bien qui développe quoi et comment dans pd surtout les fonctionnements de bases comme la gestion générale des interfaces. Je pense donc que proposer une bibliothèque qui s'attache facilement à pd pour coder est pour le moment la meilleur solution, comme Flext un peu. Plutôt que d'attendre une séparation complète de la partie graphique, il me semble, par exemple, plus simple d'utiliser Juce pour le dessin, la gestion des événements dans l'objet etc... et de passer certains événements en commande à Pure Data quand on est en mode édition (c'est ce que je vais avec tcl et ça marche bien). C'est une solution, peut être pas la meilleur mais elle fonctionne.
Coder un external de drag-and-drop est selon moi tout à fait réalisable, j'ai vu des lignes de commande (en tcl/tk) pour ça mais c'est sûrement plus simple à faire avec Juce. En tout cas ça pourrait être sympa d'avoir ça.
Pour "concentrer les efforts", c'est toujours un peu compliquer à mettre en place surtout à distance surtout à distance et dans des gros projet comme Pd. Le plus simple selon moi, est de monter un petit Git et que les personne viennent participer. Je vais mettre une todo list et quelques explications sur le fonctionnement générale sur le Git comme ça si les gens veulent participer ou juste proposer certaines améliorations il pourront le faire plus facilement.
Mais quoiqu'il en soit je serai content de contribuer et participer à des session entre devs et merci pour ces liens, j'étais passé un peu à coté.
Hors ligne