Pages: 1
Bonjour,
Sur le conseil du modérateur de Pure Data Forum~, j'aimerais utiliser flext pour réaliser les externals dont j'ai besoin car les gestions et déclarations d'inlet, inlet~, d'outlet, d'outelt~et des méthodes DSP semblent plus faciles à coder qu'en utilisant la création d'externals en C en suivant la méhtode décrite dans le "HOWTO write an externnal for pure data".
Mais, jusqu'à présent je n'arrive pas à aller jusqu'au bout de la compilation de la version flext-0.5.0.zip (une fois après l'avoir décompressé, évidemment).
Je travaille sous MacOS 10.5.2, avec potentiellement Xcode 3.0 et une version 0+41-4 de pure data et j'ai essayé de faire la compilation de flext depuis le terminal.
La première compilation s'arrête après m'avoir généré le fichier buildsys/config-mac-pd-gcc.txt où je modifie quelques lignes :
- remplacer PDPATH=/Applications/Pd-0.38-3.app/Contents/Resources par PDPATH=/Applications/Pd-0.41-4.app/Contents/Resources ;
- mise en commentaire de la ligne UFLAGS=-faltivec -ffast-math ;
- mise en commentaire de la ligne OFLAGS=-O3 ;
- mise en commentaire de la ligne OFLAGS+=-mcpu=G4.
J'ai introduit ces modifications sur le conseil de deux membres de la "flext list", car ça a marché comme ça sur un MacBookPro avec 10.5.2 pour l'un et, si l'autre travaille sous Linux, il pense que ce ne sont que des flags d'optimisation.
Je relance ensuite la compilation à nouveau par la même commande bash build.sh pd gcc qui me renvoie à nouveau une erreur m'indiquant qu'il faut que j'adapte un nouveau ficher flext/config.text qui contient :
# uncomment to inhibit SIMD usage
SIMD=1
# where is the STK installation?
# (uncomment the line with # to disable STK support)
#STK=/usr/local/lib/stk
# where is the Sndobjs installation?
# (uncomment the line with # to disable SNDOBJ support)
#SNDOBJ=/usr/local/lib/sndobj
Je n'y ai pas touché ayant compris qu'il faut décommenter les lignes (enlever le #) quand c'est nécessaire et que je n'ai installé ni STK ni SNDOBJ.
Mais je ne sais pas si je dois aussi mettre un #, le commenter donc (?), devant SIMD=1 car j'ai mis un commentaire devant UFLAGS=-faltivec -ffast-math dans buildsys/config-mac-pd-gcc.txt, même si l'optimisation altivec et mathématique en virgule flottante m'intéresse beaucoup...
J'ai essayé beaucoup de choses avec un compte adminsitrateur ou même root, mais je butte à chaque fois à la troisième compilation sur le message d'erreur :
make[1]: *** [pd-darwin/release-single/flqueue.opp] Error 1
make: *** [build-release-single] Error 2
qui pourrait être lié à l'utilisation de SIMD (problème de gestion des flux en attente liés à l'utilisation des instructions de tpe SIMD ?), mais je ne sais pas si je dois mettre :
- #SIMD=1 avec UFLAGS=-faltivec -ffast-math,
- SIMD=1 avec #UFLAGS=-faltivec -ffast-math,
- #SIMD=1 avec #UFLAGS=-faltivec -ffast-math,
- SIMD=1 avec UFLAGS=-faltivec -ffast-math,
- ou modifier la valeur de UFLAGS vu que je suis sur un MacIntel et pas sur un PowerPC G4.
Tout ça parce que je n'ai pas trouvé, et ceux à qui je l'ai demandé ne savaient pas non plus, où se cache l'information sur les trois lignes avec UFLGAS et OFLAGS (deux lignes), avec des valeurs de ces flags adaptés à ma configuration système.
Si quelqu'un a réussi à compiler flext sur une machine comme la mienne ou s'il a une idée, il me sortirait de la panade et m'éviterait de repartir sur l'option de l'écriture des externals dont j'ai besoin en C.
Solution que je vais devoir adopter si je reste encore bloqué avec un flext qui ne se compile pas... Tout du moins cette semaine car je dois réussir à boucler 2 ou 3 externals pour dimanche soir, ayant une conférence (en anglais) le lundi matin où réaliser une démonstration en temps réel de l'algorithme serait vraiment un plus pour la compréhension de mon exposé ).
Merci d'avance pour votre d'aide ou vos idées à tester,
Laurent Millot
Hors ligne
lmillot a écrit:
je butte à chaque fois à la troisième compilation sur le message d'erreur :
make[1]: *** [pd-darwin/release-single/flqueue.opp] Error 1
make: *** [build-release-single] Error 2
salut Laurent,
un peu court comme message d'erreur, il n'y aurait pas d'autres messages détaillant un peu plus le problème ?
bon sinon avec tes messages d'erreurs et en googlant je suis tombé sur ça :
http://grrrr.org/pipermail/flext/2007-April/000330.html
ou en suivant le fil de discussion on lit que la solution est d'utiliser flext depuis le cvs, le package 0.5.0 :
http://grrrr.org/pipermail/flext/2007-April/000333.html
(ceci dit j'y connais que dalle en compilation d'externals et j'ai pas de macosx...)
Hors ligne
rep a écrit:
salut Laurent,
un peu court comme message d'erreur, il n'y aurait pas d'autres messages détaillant un peu plus le problème ?
bon sinon avec tes messages d'erreurs et en googlant je suis tombé sur ça :
http://grrrr.org/pipermail/flext/2007-April/000330.html
ou en suivant le fil de discussion on lit que la solution est d'utiliser flext depuis le cvs, le package 0.5.0 :
http://grrrr.org/pipermail/flext/2007-April/000333.html
(ceci dit j'y connais que dalle en compilation d'externals et j'ai pas de macosx...)
Bonsoir,
Finalement, j'ai réussi en utilisant une version que m'a signalée l'auteur de Flext qui traîne dans un autre message de la même liste de diffusion. Une version qui n'est pas la CVS mais une SVN (?) que l'on peut trouver en suivant son message :
I hope i'm in the position to make an FAQ someday, it's a reoccurring problem.
You should use the SVN version:
http://grrrr.org/pipermail/flext/2008-April/000490.html
gr~~~
Mais, il n'y a pas, ou je ne l'ai pas trouvée, d'archive, donc j'ai téléchargé tous les dossiers et les fichiers un par un, ce qui m'a pris un peu de temps...
Ensuite, j'ai compilé en utilisant la console, pas Xcode (car c'est compatible avec la version 2.4) et ne marchait pas (problème de lien vers le m_pd.h, notamment, que je n'avais pas trop le temps de traiter), ce qui a marché au bout de 2 compilations qui génèrent à chaque fois un fichier de configuration à éditer pour remplacer la version qui traîne dans le dossier Applications.
Puis, pour l'installation, je l'ai fait en tant que root, toujours depuis la console.
Ensuite, j'ai compilé suivant un schéma voisin les tutoriels inclus avec la version, sans devoir (de mémoire, sans jeu de mots) me logguer en tant que root.
Depuis, je me plonge dans la lecture des documents et des exemples de code pour comprendre ce dont j'ai besoin pour faire un ou des externals d'ici dimanche prochain... soit le travail avec des tableaux d'échantillons à mettre à jour et à utiliser pour calculer un flot audio (donc une inlet~et une outlet~ avec des entrées et sorties associées à des tableaux d'échantillons).
Autant pour les inlet~et outlet~, j'ai a priori une idée de comment procéder, autant pour le moment je suis encore dans le flou concernant le passage en arguments d'entrée et de sortie de buffers, en fait.
Si j'y arrive, cela donnera un exemple supplémentaire et toute une batterie d'outils à venir ne faisant plus appel à la convolution par FFT !
Un beau challenge, reste à le réussir rapidement.
Merci en tout cas pour le conseil, même si je vais rester pour l'instant avec ma version compilée. Je verrai si la piste indiquée est moins lourde (problème du téléchargement de tous les fichiers) car j'aurais à déployer la librairie sur d'autres machines sous Mac OS X (G4, G5, d'autres MacInels notamment des octo processeurs là où mes deux assistants programmeurs bossent pour jusqu'à la mi-juillet), puis sous Windows voire sous Linux pour tester l'aspect "cross platform" des outils que j'ai en tête.
Des nouvelles à venir dans quelques temps. Des questions si je bloque sur mon problème de buffers/tableaux à utiliser au sein de flux audio.
Cordialement,
Laurent Millot
Hors ligne
lmillot a écrit:
Mais, il n'y a pas, ou je ne l'ai pas trouvée, d'archive, donc j'ai téléchargé tous les dossiers et les fichiers un par un, ce qui m'a pris un peu de temps...
avec svn tu peux justement récupérer un ensemble de fichier en une seule action en executant :
$ svn checkout /emplacement/des/fichiers/à/récupérer
(pour plus d'infos regarder par exemple : http://doc.alternc.org/admin/ch04.html)
et bonne continuaiton pour la suite, ce projet semble trés intéressant!
Hors ligne
rep a écrit:
avec svn tu peux justement récupérer un ensemble de fichier en une seule action en executant :
$ svn checkout /emplacement/des/fichiers/à/récupérer
(pour plus d'infos regarder par exemple : http://doc.alternc.org/admin/ch04.html)
et bonne continuaiton pour la suite, ce projet semble trés intéressant!
Voila une information qui me fera gagner du temps pour une installation sur d'autres machines car, en refaisant l'opération avec la ligne de commande indiquée, je serai sûr d'avoir tout, quel que soit le système d'exploitation.
Après, je pourrais me faire une archive pour transférer d'un fichier à l'autre.
Je ne suis pas habitué aux problèmes de programmation en C, C++ ou en ligne de commande à partir de versions cvs, et encore moins svn... J'utilise plutôt matlab ou scilab, pue data ou max/msp pour faire des prototypes mais, maintenant, je veux que ces prototypes sortent de ma machine et puissent être utilisés par d'autres s'ils trouvent ces outils intéressants.
Comme j'ai "quelques demandes" (récurrentes et en augmentation) pour l'analyseur perceptif et que c'est moi qui traite pour l'instant les Go de données avec mon prototype avant de rendre les éléments d'analyse (figures, fichiers textes de résultats, sous-bandes pour la re-synthèse et application pure data pour faire la re-synthèse en temps réel), pouvoir donner une version de l'outil me dégagera du temps.
Et, suivant le comportement des externals crées, il pourrait même être possible de faire un analyseur temps réel avec autant de bandes que voulu (et les bandes voulues), avec le module de re-synthèse en une seule application. L'avenir et les tests diront si c'est possible maintenant où s'il faut attendre encore une montée en puissance des machines.
Merci encore,
Je retourne à mes essais d'externals mariant signaux et buffers.
Laurent Millot
Hors ligne
Hello, je me balade et suis attentivement ton aventure palpitante ! je retiens mon souffle: aura-t-il terminé ses externals pour dimanche? Suspense ! En tout cas, je te le souhaite. Je ne peux malheureusement t'être d'aucun secours tant mon ignorance est grande en qui concerne la compilation d'objet PD.
Cependant, je m'y intéresse grandement pour deux ou trois bricoles que j'aimerai réaliser. J'espère que tu publieras un petit HOW to !
En attendant, bon courage ! et merci pour ces passionnantes informations.
tranquillement,
ths
Hors ligne
Non,
J'ai jeté l'éponge, pour la présentation de ce matin et j'ai opté pour des programmes en mode consoles et des sons pré-programmés où je faisais le jeu suivant avec deux réponses impulsionnelles différentes voire, pour la seconde assez caricaturale (mais des vraies réponses impulsionnelles et beaucoup plus longues que ce que pouvait encaisser mon MacBook pour donner des résultats en temps-réel) :
- 15 s avec h1 (première réponse impulsionnelle) ;
- 3s avec un cross-fade linéaire passant de h1 à h2 (seconde réponse impulsionnelle) donc une interpolation linéaire échantillon par échantillon pendant 3 s (allez faire ça avec une convolution par FFT ;O)?);
- 15 s avec h2 ;
- un cross-fade linéaire de retour permettant de passer de h2 à h1 en 15 s (oui, 15 s à faire changer la réponse impulsionnelle graduellement d'un échantillon à l'autre) ;
- les 18 s restantes filtrées par h1.
Il faut, mais ce n'est certainement pas optimisé, un facteur 13,5 à 14 dès que l'on fait de l'interpolation linéaire (et travail avec deux réponses impulsionnelles en mémoire au moins d'environ 847 ms).
J'ai essayé aussi de faire un parcours allant d'une pièce à une autre avec 7 ambiances successives, mais le programme reste à déboguer...
Mais, je vais me remettre aux externals pure data dès que j'aurais liquidé les affaires courantes et je compte bien faire un tutoriel associé aux sources de ce que j'aurai construit. Pour l'instant je me bats avec la gestion d'arrays en même temps que des signaux, sachant qu'il faut réaliser rapidement des opérations sur 2 arrays avant de pouvoir sortir le nouvel échantillon de sortie.
J'ai travaillé comme un fou, je suis levé depuis dimanche matin 6h avec quelques pauses pour grignoter un truc. Et, alors que je présentais hier matin à 10h, avec rendez-vous avec le président de session à 8h30 dans la salle, pour tester le son et la vidéo comme les autres conférenciers de la session, j'ai éteint ma machine, après avoir fait un CD de secours au cas où le vidéo projecteur se montrerait récalcitrant, à 5h50 hier matin (6 exemples réalisés donnant des calculs de 15' pour un enregistrement de guitare et 6 autres pour un extrait très court de chant anéchoïque). Après, douche, bouclage de valise, sortie de l'hôtel et transport pour aller sur le lieu de la Convention...
Je suis rentré il y a une heure et je traite mon courrier après avoir défait ma valise !
La salle était bondée et cela pourrait leur avoir plu car j'ai eu plein de questions, ce qui est devenu assez rare, les gens se sont bousculés pour obtenir l'une des 20 versions imprimés de mon article, et, plusieurs personnes sont venues discuter un peu, prendre mon mail, ... après la conférence.
Sinon, c'est comme à chaque fois :
- il faut prendre la résolution graphique inférieure à celle annoncée ce qui occasionne des troncatures de présentation (pas content celui à qui ça arrive même s'il est tout de même heureux d'avoir une recopie d'écran, ce qui n'est pas toujours le cas) ;
- ne pas prévoir de diffusion de sons stéréophoniques car il se passe toujours de drôles de choses du côté de la sono (hier, pendant les présentations, c'était une bascule d'une enceinte à l'autre avec des phases de saturation, non présentes dans les fichiers) ;
- et, il s'agit d'un congrès audio avec des prestataires non bénévoles ...
Il me reste à :
- faire les externals (je vais le faire mais sans autant de stress, ni en mode mission carnage) ;
- prendre le temps de rédiger un tutoriel en français sur les externals, a priori, plutôt avec flext que la version en C pur et dur (ça semble encore plus dur de faire ce que je souhaite) ;
- acheter un site web personnel ;
- mettre autant d'outils avec binaires multi plate-formes (si j'arrive à avoir toutes les plate-formes) et sources (commentées !).
Affaire à suivre, mais de manière moins palpitante et avec un peu plus d'heures de sommeil car ça fait déjà 42h 38' donc je ne vais pas traîner longtemps devant mon clavier.
A bientôt, pour de nouvelles aventures,
Hors ligne
Peut-être serait il bon pour la communauté Française de faire un didacticiel clair ce qui serait une première accessible à tous jeunes et moins jeunes sur la création d'externals pour Pure Data en utilisant Flext, Visual studio C++ dans sa version gratuite, ou Codeblocks du moins sa compilation image à l'appui.
Hors ligne
Je me permets de renchérir : un didacticiel sur l'utilisation de flext (en français pourquoi pas, même si déjà quelque chose d'un peu plus clair pour les noobs en anglais ça serait bien aussi) ça serait vraiment génial ! Et sur TOUTES les plate-formes / environnements.
Ça fait quelques jours que j'essaie de me servir de flext sur un Mac OS 10.5.8 et je n'arrive pas à le compiler (mêmes erreurs que lmillot précédemment). De plus j'ai du mal à comprendre, une fois flext compilé, comment le linker et compiler les tutoriels sous Mac (les tutos contiennent des fichiers mcp, vcproj, mais pas de .xcode ).
Quelqu'un de motivé ?
Je veux bien contribuer si je peux être utile ...
Merci d'avance, maîtres geeks
Joseph
Hors ligne
autisteraidedingue a écrit:
Je me permets de renchérir : un didacticiel sur l'utilisation de flext (en français pourquoi pas, même si déjà quelque chose d'un peu plus clair pour les noobs en anglais ça serait bien aussi) ça serait vraiment génial ! Et sur TOUTES les plate-formes / environnements.
Ça fait quelques jours que j'essaie de me servir de flext sur un Mac OS 10.5.8 et je n'arrive pas à le compiler (mêmes erreurs que lmillot précédemment). De plus j'ai du mal à comprendre, une fois flext compilé, comment le linker et compiler les tutoriels sous Mac (les tutos contiennent des fichiers mcp, vcproj, mais pas de .xcode :( ).
Quelqu'un de motivé ?
Je veux bien contribuer si je peux être utile ...
Merci d'avance, maîtres geeks
salut.
franchement, compiler flext et des externals flext est assez simple, au moins avec des versions recentes de pure-data et de flext.
pas vraiment le temps pour un vrai tutorial mais si tu suis la doc, tout devrait se passer sans probleme.
voila les etapes que je viens de refaire pour tester mon vieil osx. (c'est exactement pareil sous linux).
ma config: pd-0.43, flext svn, osx-10.5.8, osx developer tools.
@autisteraidedingue: sous osx tu as besoin du compileur gcc (et pas xcode):
(je considere qu'on cpompile tout dans ~/dev)
compiler et installer flext
- recuperer la source de flext sur le svn:
~$ cd ~/dev ~/dev$ svn co https://svn.grrrr.org/ext/trunk/flext flext ~/dev$ cd flext
- configurer flext:
~/dev/flext$ bash build.sh pd gcc
- editer le fichier buildsys/config-mac-pd-gcc.txt:
(je compile pd-0.43 moi meme donc je change le path pour la source de pd vers la mienne (plus recente))
#PDPATH=$/Applications/Pd-0.42/5.app/Contents/Resources PDPATH=$/Users/gusano/dev/pure-data
- relancer le script de config:
~/dev/flext$ bash build.sh pd gcc
- editer le fichier config.txt pour desactiver SIMD (optionnel, moi je le laisse active)
...
- compiler flext en relancant le script (et oui)
~/dev/flext$ bash build.sh pd gcc
- installer flext
~/dev/flext$ sudo bash build.sh pd gcc install
- clean up pour le recompiler plus tard si besoin
~/dev/flext$ bash build.sh pd gcc clean
compiler un external avec flext (ici xsample par exemple, c'est pareil pour les autres)
- recuperer la source de xsample sur le svn
~$ cd ~/dev ~/dev$ svn co https://svn.grrrr.org/ext/trunk/xsample xsample ~/dev$ cd xsample
- compiler xsample en utilisant le script de flext
~/dev/xsample$ bash ../flext/build.sh pd gcc
TADAAA, l'external est compile dans
~/dev/xsample/pd-darwin/relese-single/xsample.pd_darwin
tout ca vient du build.txt dans la source de flext.
j'ai souvent compile des externals de flext et je trouve qu'ils sont relativement faciles a compiler compare a pas mal d'autres externals...
bonne chance !
ps: desole, j'ai pas d'accents sur mon clavier british :/
++
_y
Dernière modification par {yv} (2011-07-07 02:28:55)
Hors ligne
Bonsoir tout le monde,
@Yvan:
Merci beaucoup d'avoir pris le temps de donner cette explication détaillée.
En fait je crois que j'avais compris la procédure (approximativement certes) ... mais je dois avoir un problème de path, parce qu'à chaque fois que je lance le script build.sh j'ai à peu près un millier d'erreurs dont la première est :
m_pd.h: No such file or directory
Je pense que je n'arrive pas à mettre la bonne valeur pour PDPATH.
Que signifie le $ que tu mets en début de ligne ? ($/Users/gusano/dev/pure_data)
J'ai essayé avec, sans, en mettant $HOME/../../Applications ... rien n'y fait, la réponse finale est toujours la même :
make[1]: *** [pd-darwin/release-single/flext.h.gch] Error 1
make: *** [build-release-single] Error 2
La réponse est peut-être évidente, mais j'ai supprimé mon répertoire flext, refait un checkout et suivi tes instructions, et j'ai toujours les mêmes erreurs.
Je vais aller rafraîchir ma mémoire sur les variables d'environnement sous Mac OS, j'ai peut-être installé un truc à un moment qui m'a mis le bazar là-dedans, à part ça je vois pas ...
Toutes idées ou conseils sont les bienvenus en tout cas.
A+
Joseph
PS : chouette noise, Yvan !
Hors ligne
autisteraidedingue a écrit:
En fait je crois que j'avais compris la procédure (approximativement certes) ... mais je dois avoir un problème de path, parce qu'à chaque fois que je lance le script build.sh j'ai à peu près un millier d'erreurs dont la première est :
m_pd.h: No such file or directory
Je pense que je n'arrive pas à mettre la bonne valeur pour PDPATH.
exact, ca veut dire que le script ne trouve pas la source de pd.
autisteraidedingue a écrit:
Que signifie le $ que tu mets en début de ligne ? ($/Users/gusano/dev/pure_data)
J'ai essayé avec, sans, en mettant $HOME/../../Applications ... rien n'y fait, la réponse finale est toujours la même :
make[1]: *** [pd-darwin/release-single/flext.h.gch] Error 1
make: *** [build-release-single] Error 2
pour etre sûr, récupère la source de pd via git (par exemple dans ~/dev aussi):
$ cd ~/dev ~/dev$ git clone git://pure-data.git.sourceforge.net/gitroot/pure-data/pure-data
et adapte ton PDPATH. ca devrait marcher.
citation :
PS : chouette noise, Yvan !
merci =)
++
_y
Hors ligne
Re,
En fait je devais pas être bien réveillé ou je sais pas ...
J'ai finalement trouvé le bon path (dans mon cas /Users/josephlarralde/Documents/_GeeksCorner/pd-0.43-0 )
Peut-être d'avoir téléchargé la dernière version des sources de pd a aidé, quoi qu'il en soit je compile bien les exemples.
Ça a l'air si simple après coup
Du coup si il y en a qui galèrent, les explications d'Yvan sont les bonnes (pour Mac en tout cas).
Après pour compiler un nouvel objet il faut juste créer son propre fichier package.txt en s'inspirant de ceux des exemples.
Merci pour tout Yvan
Et maintenant let's code !!!!
Portez-vous bien
++
Joseph
Hors ligne
Pages: 1