Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2008-05-12 04:10:16 Externals pour pure data

lmillot
nouveau membre
Date d'inscription: 2008-05-12
Messages: 6

Externals pour pure data



Bonjour,

Je travaille actuellement à la mise au point d'externals pour pure data afin de réaliser, notamment, un outil de convolution temporelle, sans passer par la FFT, et, pour autant, potentiellement rapide suivant les résultats obtenus avec des prototypes en C++, pas complètement optimisés, loin s'en faut.

En effet, si on prend comme "temps nécessaire" la somme des temps de lecture du filtre, de lecture par blocs du signal à convoluer, de calcul du signal filtré et de sauvegarde du signal filtré, on peut obtenir des "temps nécessaires" inférieurs à  la durée du signal filtré (tests pour des signaux de 30, 67 et 129 s, pour 5 ordinateurs fonctionnant sous Mac Os 104.11 à 10.5.3, 2 PPC et 3 Mac-Intel, avec des filtres correspondant à des bruits blancs car correspondant à une situation très gourmande en calcul, faute de plages conséquentes d'écha,tillons nuls) :

ordinateur                                                      Mac OS X  Xcode           taille du filtre
PowerBook 1.67 GHZ PowerPc G4                      10.4.11      2.5                    125 ms           
(2 Go DDR2 SDRAM)

PowerMac 2x 2.3 GHZ PowerPc G5                      10.4.11     2.5                    275 ms
(4 Go DDR2 SDRAM)

MacBook Pro 2.4 GHZ  Intel Core Duo                 10.4.11     2.5                     350 ms
(2 Go 667 MHz DDR2 SDRAM)

MacBook 2.2 GHZ Intel Core Duo 2                     10.5.1       3.0                     350 ms
(2Go 667 MHz DDR2 SDRAM)

MacPro 2x2 2.8 GHZ Quad-Core Intel Xeon          10.5.2      3.0                      450 ms
(2 Go DDR2 SDRAM)

Vu que l'on n'a pas procédé à une optimisation liée au nombre de processeurs disponibles, à part en cochant l'option sous Xcode, que toutes les optimisations (pas de calculs pour une entrée et/ou un échantillon de la réponse impulsionnelle de valeurs nulles, par exemple), que les ordinateurs vont de plus en plus vite que certains systèmes d'exploitation et environnement de développement conduisent à des codes plus rapides, il y a une marge de progression importante pour l'augmentation de la taille des filtres utilisables en temps réel, voire en temps réel perceptif.

De plus, la latence de cet algorithme devrait être très faible (juste un problème d'addition de deux tableaux de la taille de la réponse impulsionnelle, sans optimisation), en permettant de changer en temps réel (échantillon par échantillon même si cela devrait être plus naturel de faire des changements liées à notre latence perceptive) la réponse impulsionnelle du filtre !

Et, cet algorithme demande moins d'opérations de requantification après chaque MAC (multiplication et accumulation) qu'une seule des trois FFT nécessaires pour réaliser la convolution rapide, sans prendre en compte non plus la multiplication terme à terme en fréquentiel et la division de la dernière FFT (inverse) par le nombre d'échantillons constituant le bloc traité. Donc, il doit conduire à introduire beaucoup moins de bruit de calcul que la convolution par FFT.

Si les tests on tété faits sur la plate-forme actuelle de développement, Mac OS X et Xcode, le code et les librairies associées doivent permettre un déploiement "cross platform" (Windows Xp voire Vista, Linux). Les sources comme les fichiers binaires devraient être disponibles d'ici la fin 2008, avec une "petite" batterie d'outils utilisant cet algorithme, y compris sous forme d'externals pure data chaque fois que ce sera possible, sous une licence de type LGPL (a priori) afin de permettre à la fois la libre utilisation et de ne pas interdire une utilisation au sein de produits commerciaux.

Pour réaliser les externals pure data, j'ai commencé à traduire, et compléter par des indications sur les "makefiles cross platform", le "HOWTO write an external for Pure Data". Dès que j'aurais eu le temps d'affine et de corriger cette traduction, je compte, si cela semble intéressant, la diffuser sur internet. Mais cette traduction ne devrait pas pouvoir sortir avant l'automne, car les projets indiqués au-dessus sont prioritaires ainsi que mes obligations de service...

Sinon, avec un de mes anciens étudiants de Louis-Lumière, Romain Vuillet, nous avons conçus et réalisés des exemples de patchs pure data mettant en œuvre, en temps réel, des effets audio classiques (ou moins classiques), un comparateur de versions compressées de signaux, et, un re-syynthétiseur proposant une re-synthèse partielle à complète d'une décomposition perceptive en 10 sous-bandes, sans distorsion, de signaux en pouvant basculer à la volée entre la reconstruction, son complément non pris en compte et le signal original.

Ces patchs sont déjà évolués, complètement éditables, personnalisables et modifiables (libres de droits) et peuvent donc pour permettre de rentrer plus en avant dans le travail sous pure data. Par contre, ils sont seulement fournis sur le DVD accompagnant un livre publié chez Dunod (désolé !) :
Laurent Millot, Traitement du signal audiovisuel - applications avec Pure Data, Collection Audio-Photo-Vidéo, Dunod/ ENS Louis-Lumière, mars 2008.
(DVD qui contient aussi des fichiers wav, des photographies et des vidéos libres de droits, un environnement de traitement des images au format jpeg non compressé développé sous Matlab car il n'avait pas été possible de faire une version pour toutes les plate-formes de traitement des images et des vidéos sous pure data).

Ayant le projet de faire une version pour les images et les vidéos de l'analyseur perceptif, je compte regarder à nouveau si on peut faire une application pure data (avec externals éventuels) pour les images et la vidéo, pour "toutes"  les plate-formes, quand le prototype sera en cours de portage.

La description de l'algorithme temporel de convolution, "l'algorithme des taches", est donnée en français dans le livre cité (toujours désolé !) et sera présentée, avec des externals temps réel pour pure data si je boucle leur programmation d'ici dimanche soir prochain, en anglais, à l'occasion d'une conférence de l'Audio Engineeriing Society (17-20 mai 2008 à Amsterdam). Le papier associé sera diffusable gratuitement dans 6 mois, sauf s'il était retenu pour une publication du Journal de l'AES et il a pour référence :
Millot L. and Pelé G., An alternative approach for the convolution in time-domain: the taches-algorithm, 124th Convention of the Audio Engineering Society, Amsterdam, Hollande, 17-20 mai 2008.

Si certains de ces éléments sont susceptibles d'intéresser des personnes, faites-le moi savoir.

J'aurai peut-être l'occasion de poster des questions dans la semaine sur des aspects un peu "pointus" concernant les externals, si je n'arrive pas à m'en sortir seul...

Laurent Millot


Enseignant en Acoustique et Traitement du Signal (ENS Louis-Lumière, Formation Supérieure aux Métiers du Son au Conservatoire National Supérieur de Musique et Danse de Paris) - Chercheur Associé à l'Institut d'esthétique, d'arts et technologies (IDEAT, UMR 8153 - CNRS - Université Paris 1)

Hors ligne

 

#2 2008-05-13 14:11:02 Re : Externals pour pure data

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Externals pour pure data



Bonjour Laurent et bienvenue sur le forum,

Il me semble que le livre que vous venez de publier est le premier ouvrage en français à utiliser pure-data ? Les sujets abordés ont l'air plutot pointus!
Par rapport à l'algorithme de convolution temporelle sur lequel tu travailles, quelles en sont les applications dans le domaine sonore, musical ou visuel? J'avoue que je suis un peu perdu dans les concepts du traitement numérique du signal smile

Hors ligne

 

#3 2008-05-14 11:16:41 Re : Externals pour pure data

lmillot
nouveau membre
Date d'inscription: 2008-05-12
Messages: 6

Re: Externals pour pure data



emoc a écrit:

Bonjour Laurent et bienvenue sur le forum,

Il me semble que le livre que vous venez de publier est le premier ouvrage en français à utiliser pure-data ? Les sujets abordés ont l'air plutot pointus!
Par rapport à l'algorithme de convolution temporelle sur lequel tu travailles, quelles en sont les applications dans le domaine sonore, musical ou visuel? J'avoue que je suis un peu perdu dans les concepts du traitement numérique du signal smile

Pour l'utilisation de pure data, c'est possible mais on peut avoir des surprises.

Pour l'algorithme proposé, les applications sont multiples déjà dans le domaine sonore (je donnerai des applications potentielles pour l'image fixe et animée une autre fois car je dois réaliser les externals pour dimanche soir ou la nuit de dimanche à lundi et je suis en train de prendre en main Flext pour les programmmer...) :

- le calcul nécessite moins d'opérations de requantification que la convolution par FFT donc génère beaucoup moins de bruit et devrait donner des mesures ou des sons moins perturbés par ces problèmes de retour dans le format des données ;

- cet avantage sera exploité pour proposer des outils de conversion de fréquence d'échantillonnage qui devraient donner, là-aussi, des sons moins martyrisés par les trois FFT, les multiplications terme à terme en fréquentiel et la division finale par le nombre d'échantillons dans le bloc de calcul de FFT ;

- on peut changer d'un échantillon à l'autre le filtre utilisé ce qui peut être très intéressant pour les situations où les sources et récepteurs se déplacent dans une acoustique simple à compliquée (salles couplées) que ce soit pour le cinéma (post-synchronisation des dialogues, sources hors-champ se déplaçant, ...) en utilisant des "réponses impulsionnelles" ou la vidéo, les jeux vidéos (surtout les jeux où des sources sonores sont cachées dans des recoins et qu'il faut soit les trouver, soit les éviter, soit s'en approcher de manière prudente et efficace) et aussi, dans la même veine, les problèmes de "réalité augmentée" que ce soit pour des études d'impacts écologiques, de promenades dans un futur ensemble immobilier, une visite virtuelle de musée (liste non exhaustive) ;

- cela permet aussi d'envisager de faire des mesures et des caractérisations d'installations ou de dispositifs sonores (je travaille dessus, avec deux assistants pour la programmation, dans le cadre du projet HD-3D IIO au sein du pôle de compétitivité "Cap Digital") en utilisant des stimuli "réels" (voix, musique, chant, ambiances sonores, extraits de bande sonore, même du bruit rose ou blanc si on aime !) et de pouvoir écouter les phénomènes sonores ;

- on travaille au portage cross platform d'un analyseur perceptif qui permet  d'écouter (et oui une analyse sonore qui s'écoute et pas seulement qui se regarde comme un spectre ou un sonagramme) tout ou partie des sous-bandes fréquentielles constituant le découpage (adaptable suivant les besoins ou à la situation testés) sans introduire de distorsion d'analyse (repliement spectral par exemple) ;

- avec ce genre d'outils, on traque sans a priori théorique les sous-bandes fréquentielles où l'énergie est concentrée (donc là où il faut travailler la modélisation physique) même si elle n'est pas audible seule (exemple de la sous-bande 0-50 Hz qui contient des fois la majeure partie de l'énergie des phénomènes acoustiques mais qui pourrait modifier la perception de la largeur de la scène sonore) ;

- je travaille ainsi sur l'étude des phénomènes de proximité pour les microphones, les problèmes de directivité des microphones (bientôt des sources), du comportement des salles (en fonction du niveau notamment) et de la comparaison entre caractérisations objective et subjective pour voir si on retrouve dans les indices calculés ce que l'on entend, car là-aussi je travaille avec de la musique comme signal test ;

- selon moi les mesures en fréquentielles posent de gros problèmes théoriques potentiellement (mais c'est dur à saisir même pour en discuter par mes "collègues" acousticiens qui font un blocage pour le moment) aussi je privilégie les modèles, simulations numériques et mesures dans le domaine spatio-temporel ;

- je vais aussi me servir de cet algorithme pour réussir à faire fonctionner en temps réel (besoin de pratiquer un sur-échantillonnage de facteur au moins 10000 pour éviter les problèmes de troncature des retards qui doivent être des entiers et dont la précision pour des problèmes de "propagation d'ondes" n'est pas suffisante avec des fréquences d'échantillonnage de 44.1 ou 48 kHz disponibles sous Pd ou Max/MSP) un simulateur de microphone ou de systèmes de prise de son (stéréophonique pour le moment, multicanal dans l'année qui vient a priori) pour donner un outil illustrant les grandes tendances des microphones et des systèmes classiques de prise de son, plutôt que de devoir se reporter seulement à des abaques, simulations à comparer avec de vraies prises de son dans une vraie salle car c'est ça qui compte ;

- je travaille aussi sur la cartographie sonore c'est-à-dire déterminer pour une scène sonore les sources fixes émergentes et voir si on peut suivre dans leur mouvement les sources mobiles intéressantes ;

- en mariant le simulateur de prise de son et le travail de cartographie sonore, proposer un outil différent de spatialisation des sons ré-utilisant ou non des bibliothèques de trajectoires intéressantes mais impossible à faire en jonglant à la main avec les retards voire atténutations relatifs entre les voies ;

- faciliter le travail d'insertion de microphones d'appoint dans une prise de son avec un système principal (couple stéréophonique ou système de prise de son multicanal) ;

- réaliser des compresseurs faisant sens par rapport à la dynamique effective de prise de son sur le terrain (assez faible en fait) ;

- étudier les phénomènes de perception avec autre chose que des clics, des bruits (filtrés ou non) et des sinusoîdes ;

- passer à la moulinette de l'écoute, par bascule en temps-réel entre original et versions compressées, les dégradations et modifications introduites par les algorithmes de compression audio, en travaillant aussi sur des re-synthèses partielles à totale des signaux générés.

Et, j'ai encore d'autres idées d'application et sûrement que la mise à disposition de ces outils donnera des idées à d'autres !

Sans compter, que je réfléchis aussi à l'utilisation de ces outils, dont l'algorithme de convolution n'est qu'une couche de base, pour les problèmes d'audition (détection des pertes plus intéressante ou informative qu'un audiogramme, réglage des prothèses auditives). Et, je suis en train de voir dans quelle mesure ces outils permettent d'apporter une aide au diagnostic pour certaines pathologies (travail avec un osthéopathe et une plate-forme de posturologie).

Bref, des applications il y en a beaucoup en ligne de mire et d'autres qui ne manqueront pas de se déclarer quand je donnerai accès à ces outils.

J'espère avoir donné quelques éléments de réponse tout en n'allant pas trop loin dans le champ théorique...

Bonne journée,
Laurent Millot


Enseignant en Acoustique et Traitement du Signal (ENS Louis-Lumière, Formation Supérieure aux Métiers du Son au Conservatoire National Supérieur de Musique et Danse de Paris) - Chercheur Associé à l'Institut d'esthétique, d'arts et technologies (IDEAT, UMR 8153 - CNRS - Université Paris 1)

Hors ligne

 

#4 2008-12-28 04:53:53 Re : Externals pour pure data

podarces
nouveau membre
Lieu: paris
Date d'inscription: 2008-12-28
Messages: 3
Site web

Re: Externals pour pure data



emoc a écrit:

Par rapport à l'algorithme de convolution temporelle sur lequel tu travailles, quelles en sont les applications dans le domaine sonore, musical ou visuel? J'avoue que je suis un peu perdu dans les concepts du traitement numérique du signal smile

Je me permet de proposer une réponse simpliste et ultra-rapide sur quelques applications classiques de la convolution pour la musique:
- simuler une salle d'écoute (convoluer la réponse transitoire de la salle avec le signal de la source)
- fabriquer toutes sortes de vocodeurs "au sens large" (convoluer 2 sources entres elles)
et pour l'image:
- changer la netteté d'une image ou la déformer (convoluer une image avec une matrice simple de 3x3 coefs)
...

Hors ligne

 

#5 2010-10-15 10:35:37 Re : Externals pour pure data

beryann
membre
Lieu: strasbourg/rennes
Date d'inscription: 2010-01-17
Messages: 256
Site web

Re: Externals pour pure data



Bjr Laurent bravo pour ce super post passionnant ! concernant ceci , je te cite: " nous avons conçus et réalisés des exemples de patchs pure data mettant en œuvre, en temps réel, des effets audio classiques (ou moins classiques), un comparateur de versions compressées de signaux, et, un re-syynthétiseur ". Question basique: ils sont dans quelles versions ces patchs? sont-ils "(ré)-actualisés" pour éviter des problèmes de compatibilité de version?
Merci Laurent
Beryann

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024