[Pdmtl] Analyse audio en C?

Mathieu Bouchard matju at artengine.ca
Wed May 20 13:30:05 EDT 2009


On Wed, 20 May 2009, Alexandre Quessy wrote:

> Qu'est-ce qu'il y a de si terrible à vouloir changer de solution
> technologique

Ce n'est pas un problème. D'après moi, le problème est de mal s'expliquer, 
c'est tout. J'essaie de découvrir tes vraies raisons, puisque tu as cru 
bon d'en parler et que ton opinion a de la valeur ici (et pas dans le sens 
de «c'est ben d'valeur»!!!).

> pour créer des logiciels "stand-alone" qui ne soient pas dépendants d'un 
> autre logiciel,

Si tu veux faire un logiciel standalone, tu n'as qu'à prendre un ensemble 
de logiciels et l'appeler: 1 logiciel. Il n'y a aucune ligne de 
démarcation claire permettant de dire que l'on a entre nos mains un 
logiciel, deux logiciels, 42 logiciels, etc.; on pourrait 
vraisemblablement dire que chaque externe de Pd est un logiciel, tout 
comme chaque combinaison de patches, d'externes et de Pd donne 1 logiciel. 
Peut-être devrait-on alors dire que l'on a "du" logiciel, comme on a de 
l'eau et du temps.

D'ailleurs, c'est typique des programmeurs C/C++ de s'imaginer qu'ils ont 
des applications «standalone» même s'ils se lient dynamiquement avec 
libc.so, libasound.so, libjpeg.so, etc.

Et si je comprends bien, le noyau du système d'opération ne compte pas 
comme étant un logiciel?

Je n'essaie pas de faire des jeux de mots là...

> qui lui est un logiciel de programmation graphique pour le son ? Pure 
> Data et Max/MSP m'ont aidé à apprendre les bases du son, de l'image et 
> de l'électronique... mais dois-je me limiter à ces outils pour tous les 
> projets que je ferai pour les X années à venir ? Je ne crois pas.

Ben étant donné que Pd offre tant de possibilités de changer de langage 
pour écrire des plugins, je ne vois pas en quoi Pd serait tellement une 
limite plutôt qu'un point d'appui.

> Il peut être intéressant, pour des raisons de performance, de 
> portabilité, de simplicité, ou juste pour l'intérêt d'apprendre de 
> nouveaux outils, de choisir un langage texte plutôt que graphique.

Ouais, mais je pense pas que la limite se situe entre le texte et le 
graphique. D'ailleurs c'est une limite tellement vague que je crois qu'il 
est inutile d'en parler. C'est plus utile de parler de flot de données vs 
les autres possibilités d'expression, ou de diagrammes de flot de données 
vs les autres possibilités d'expression, mais il y a assez de manières de 
faire spécifiques à Pd/Max pour que ça vaille la peine de parler de Pd/Max 
vs le reste de l'univers.

> Je trouve qu'il est plus facile d'exprimer ma pensée (un algorithme) de 
> manière juste avec du texte.

C'est pas le fait que ça soit du texte en soi, qui rend les choses plus 
faciles. Sinon tu pourrais écrire des patches .pd dans TextEdit et ça 
serait facile.

Je pense que l'on a pas encore exploré toutes les possibilités de Pd au 
niveau des structures de base de la programmation, et de la résolution de 
problèmes. Je suspecte qu'il y a beaucoup de manières dont on pourrait 
s'exprimer dans Pd et c'est juste parce qu'on n'y a pas été habitué pcq 
personne l'a été, alors que lorsqu'on apprend un autre langage de prog, on 
apprend plus à exprimer n'importe quoi qu'on veut exprimer. Une des 
raisons pour lesquelles je voulais que les gens considèrent Pd comme un 
langage de prog, c'étaient pour qu'ils le comparent à un langage de prog, 
pour que ça donne des idées sur comment combler les lacunes de Pd que les 
autres langages de prog n'ont pas.

> J'aime beaucoup Python ces temps-ci,

C'est pourquoi j'ai mentionné Python quand tu as parlé des callbacks, mais 
franchement, ça s'applique à plein d'autres langages/inteprètes 
similaires.

> mais, à ma connaissance, seul le C ou le C++ offre des performances 
> vraiment optimales pour ce qui touche au son.

Si les règles du jeu sont définies par les programmeurs C/C++, oui. Mais 
si on écarte la portabilité vers autre chose que x86, alors tu peux 
toujours programmer en assembleur et ainsi battre ce que GCC peut 
produire. C'est aussi très possible d'écrire du code C/C++ qui est moins 
performant que ce que tu as déjà dans d'autres langages, pour la simple 
raison qu'il y a des bibliothèques écrites en C/C++ qui ne sont 
disponibles qu'à travers des API d'autres langages et pour lesquelles les 
auteurs ont mis ben du temps à l'optimiser, alors que tu ne mettrais pas 
nécessairement ce temps-là dedans.

Ce qui est souvent plus important que d'optimiser pour le temps CPU, c'est 
d'optimiser pour le temps de programmation. Ça se fait entre autres en 
augmentant les dépendances dans la mesure où les dépendances choisies 
sauvent du temps.

En plus de ça, si tu optimises en fonction de projets réels plutôt que 
d'avoir juste le plus de calcul possible sur un CPU, peut-être qu'alors tu 
vas voir que tu peux couper sur le nombre de canaux, sur la fréquence 
d'échantillonnage, etc. et qu'alors là, tant que le projet rentre dans 
l'ordi (en tant que % d'utilisation de CPU), t'es correct, peu importe 
comment inefficace ton application est.

Mais si tu veux vraiment bourrer un ordi contemporain à pleine capacité de 
calcul, ce n'est pas le C/C++/assembleur qu'il faut utiliser, c'est le 
GLSL.

> Peut-être que d'ici peu on aura une librarie Python pour STK et aubio. 
> D'ici là, je risque de faire mes prototypes avec Pure Data, comme je le 
> fais déjà, et quelques essais en C.

tu as déjà fait des externes Pd DSP ? avec dsp_add, t_signal et tout le 
tralala...

  _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec


More information about the Pdmtl mailing list