Bonjour à tous,
Je débute en PureData et j'ai pour projet de faire un synthétiseur de glitch. Pour le moment j'arrive à synthétiser des sons, faire mumuse avec et renvoyer des valeurs à Processing via oscp5, cependant, j'aimerais pouvoir analyser les fréquences audio du son passant par ma carte son en temps réel, afin de les récupérer dans Processing et d'animer mon sketch en fonction.
Mon but est de récupérer 5 plages de fréquences (par ex : 50-100hz, 100-300hz, 300-3000hz, 3000-9000hz, 9000-12000hz) ainsi que leur intensité sonore.
J'ai regardé du côté de fiddle~ et sigmund~ mais je n'arrive pas à faire fonctionner le tout...
Pour l'instant j'ai réalisé le simple patch ci-dessous
Merci à tous pour votre aide et à bientôt !
Hors ligne
pour m apart j'utilise [fiddle~] / regarde l'aide, à partir du unpack des fréquences tu peux facilement les distinguer . il est tard dodo.... :-)
Hors ligne
Merci pour ta réponse rapide ! Je suis en train de potasser le patch d'help de fiddle, par contre j'ai l'impression que les résultats sont assez aléatoires, enfin je les exploites pas correctement je pense, quand j'ai un la 440hz j'ai bien mon 440hz qui s'affiche dans ma boite, par contre quand je descends dans les basses fréquences j'ai du 0 partout !
Bonne nuit :p
Petit edit du matin :
Maintenant j'arrive à obtenir 3 "partielles" (d'après ce que j'ai pu comprendre) donc en gros c'est 3 fréquences que je ne sais pas trop comment utiliser, par exemple j'arrive à repérer quand je suis à 220hz ou 440hz donc deux "la" aux octaves contiguës, cependant ces fréquences "changent de boîte" suivant la hauteur....
Désolé si je ne suis pas très clair, mais je ne suis pas encore un champion de PureData !
Dernière modification par Taahl (2012-03-23 10:05:21)
Hors ligne
J'irai au plus simple : le son va dans un filtre passe-bande, et tu récupères l'intensité sonore de ce qui sort du filtre avec [env~].
Hors ligne
J'ai déjà essayé cette solution avec un [lop~ 200] en le câblant à un [env~] mais ça ne fonctionne pas, en effet, quelque soit la note (grave ou aigue) j'ai toujours en 90 en sortie, ce qui n'est pas logique...
Hors ligne
Plutôt bizarre... Essaie avec [bp~], l'exemple joint marche bien. J'ai cascadé deux filtres pour avoir une réponse plus pentue.
Hors ligne
Et [bonk~ ] ???
Hors ligne
Je vote aussi pour [bonk~]
sinon pour l'analyse des basses fréquences, il faut augmenter la taille du block audio car par défaut Pd "écoute" des petits blocks audio (64 samples par défaut je crois), ce qui fait que la grande longueur d'onde des basses fréquences est coupée en plusieurs blocks, fiddle~ ou d'autres objets ne peut l'entendre
à tester avec un [block~ 512] ou 1024 dans un sous patch
++b
Dernière modification par benjamin (2012-03-26 18:48:11)
Hors ligne
Sinon un external pour faire du pitch tracking, avec un page d'aide détaillée
http://www.katjaas.nl/helmholtz/helmholtz.html
il y a des binaries pour 32bits sous OSX, linux et windows. Je n'ai pas encore testé, mais ça mérite peut être un coup d'oeil.
Hors ligne
Merci à tous pour vos réponses, je test cela et vous reviens très prochainement pour partager la manière avec laquelle j'ai réussi à obtenir les meilleurs résultats !
Edit :
Merci dwan pour le patch et pour l'astuce de cascade des filtres, ça fonctionne à merveille, j'ai pu adapter le filtrage des basses fréquences en réglant le block à 1024 (merci Benjamin !) en passant mon signal dans un lop~ et dans un env~ ce qui me renvoie une valeur entre 80 et 90, je divise le tout par 8 et connecte un slider (bottom : 8 et top : 10) en sortie, ce qui me donne bien le résultat escompté !
Berenger l'external à l'air pas mal, ça pourra toujours servir pour une utilisation future !!
Dernière modification par Taahl (2012-03-27 14:10:52)
Hors ligne
voilà un filtre
en abstrct tu mets l'écart de fréquences en argument de l'absract filtre $1 valeur basse, $2 valeur haute
et hop
c'st fait tu filtres ta fréquence.
Dernière modification par philippe boisnard (2012-03-28 13:34:14)
Hors ligne
Merci pour cet exemple, si je comprends bien, le filtre opère entre 200 et 300hz (dans l'exemple) et en gros en sortie j'ai la fréquence sonore actuelle de mon signal ? J'étais parvenu à un résultat similaire avec fiddle~ mais au final pour exploiter les données je voulais connaître l'amplitude en dB de mon signal à une certaine fréquence donnée... car la fréquence de mon signal, vu que je le génère moi-même, a priori elle est déjà connue ?
(Désolé d'insister, mais je ne comprends pas encore très bien)
Hors ligne
Je pense qu'il y a méprise multiple sur ta demande qui est, je le rappelle :
"j'aimerais pouvoir analyser les fréquences audio du son passant par ma carte son en temps réel, afin de les récupérer dans Processing et d'animer mon sketch en fonction.
Mon but est de récupérer 5 plages de fréquences (par ex : 50-100hz, 100-300hz, 300-3000hz, 3000-9000hz, 9000-12000hz) ainsi que leur intensité sonore."
Pour moi, ça veut simplement dire que tu veux connaître en temps réel le volume dans différentes bandes de fréquences. Pour ça, tu filtres la bande de fréquences qui t'intéresse avec lop~ hip~ ou bp~ ou bien d'autres encore, et tu mesures la pression acoustique avec env~. Truc de DJ : beaucoup de basses => spots rouges au taquet ; pas de basses => spots rouges éteints.
Je connais (très) mal bonk~, mais il semble qu'il soit fait pour te donner le contenu harmonique d'un son dont l'amplitude dépasse une amplitude donnée. Il peut a priori servir à reconnaître des instruments dans un flot sonore. Je ne sais pas s'il est possible de l'utiliser de telle manière qu'il puisse analyser le son en continu.
fiddle~ ou helmhotz~ (qui déchire, d'ailleurs) sont une toute autre sorte de bête, ils servent à te donner la fréquence dominante (approximative) et quelques harmoniques (pour fiddle~) du son que tu envoies dedans, sans condition de volume sonore. Je siffle une note au pif => helmholtz~ me dit "on dirait du 613Hz".
En ce qui me concerne, toutes les solutions à ton problème à base de bonk~, ou pire, fiddle~ (et assimilés) reviennent à sortir le char d'assaut pour aller chercher des carottes dans le jardin : beaucoup d'énergie dépensée pour atteindre un but simple. Tu veux connaître l'intensité du spectre sonore aux alentours d'un fréquence précise ? Dégage les fréquences qui ne t'intéressent pas et mesure ce qu'il reste.
Bien entendu, cela ne t'empêche pas de t'intéresser aux autres objets qui ont été cités
Dernière modification par dwan (2012-03-28 15:42:35)
Hors ligne
arf oui j'avais pas compris,
oui s'il s'agit de seulement le volume d'une fréquence, en effet la solution est celle que dwan amorce
Hors ligne
Hors ligne
Pages: 1 2