< Back to IRCAM Forum

Détection transitoires de chute & rugosité rythmique

Bonjour

Je suis en train de préparer une analyse de l’album Multistability de Mark Fell


pour laquelle j’aurais besoin de générer une très grande quantité de marqueurs pour m’aider à mettre en évidence
les évolutions de tempo des onsets, durée de chaque son, corrélés avec le contenu spectral et la “rugosité rythmique”
(je ne sais trop comment nommer cela, disons lorsque le “tempo” passe sous la barre des 50ms).

La détection de transitoires dans Audiosculpt est évidemment déjà très utile pour obtenir les onsets mais
dans mon cas il me manque notamment deux informations pour aller plus loin.

  1. existe-t-il un moyen d’obtenir facilement des marqueurs pour les transitoires de chute (release)?
    L’“épaisseur” de chaque son est un paramètre important dans cet album et je n’ai pas trouvé le moyen efficace d’obtenir ce type de marqueurs,
    bien que les release transients soient mentionnés dans la doc ici : http://support.ircam.fr/docs/AudioSculpt/3.0/co/Transien%20Markers.html
    J’ai tenté d’utiliser le spectral differencing (negative) mais le résultat est beaucoup moins clair que le transient detection, mais peut-être que
    je m’y prends mal avec les réglages de la FFT.

  2. pour la question de “rugosité rythmique”, auriez vous des pistes à me suggérer pour la mesurer de manière convaincante?
    Ce moment de l’album donne une idée : https://www.youtube.com/watch?v=PHIGHpWKcw0&feature=youtu.be&t=151
    Notamment cela me semble important lorsque la rugosité prends une fonction de marqueurs rythmiques qui ne sont pas pris en compte dans la détection d’attaques standard.
    J’ai essayé certains des Ircam descriptors disponibles dans l’interface d’Audiosculpt sans obtenir de résultats vraiment convaincants. Je peux me débrouiller avec le terminal, s’il existe quelque chose dans le moteur de SuperVP, mais j’aurais besoin dans ce cas de quelques pistes pour démarrer :slight_smile:

Merci d’avance !

Julien

Salut Julien,

Concernant les transitoires de chute: la methode basé sur le “spectral differencing” est beaucoup plus vielle et moins sophistiqué que la methode “Transient detection” et du coup effectivement ca marche moins bien. Tres siuvent les transitoires de chute sont moins marqué que les transitoires d’attaque et c’est une raison pourquoi tres souvent la difference spectral negative marche moins bien que la difference spectrale positive. Cela dit dans ce musique tres synthétique c’est bien possible que les transitoire de chute sont ausi marque que les transitoire d’attaque, personnellement j’essayerai de renverser le son d’appliquer la detection de transitoire
et puis - si les resultat te semble interessant de faire un mapping temporelle des marquers ainsi obtenu afin d’obtenir les marquers correspondant dans le son original. La plupart de ces operations n’est par contre pas possible a faire dans AudioSculpt.

Pour retourner le son: tu pourrais le faire avec l’effet reverse repeat en selectionnant l’effet backwards pour l’ensemble du son. Par contre
ici entre en jeu le vocodeur de phase et du coup il est tres probable que les relations des phases entre les sinusoides ne persistent pas exactement
et que les positions temporelles des evenements aussi sont legerement modifié a cause de la granularité du traitement avec la fenetre d’analyse.
Du coup ce serait beaucoup mieux de faire cela avec un outil qui permet a jongler avec des echantillonnes individuel
comme par exemple avec l’outil ligne de comande sox et son effet reverse ou - tu l’auras deviner - python.

Apres detection des transitoire dans AS export les marquers en SDIF ou via select all marquers et la commande copy du clavier de ton mac pour par la suite faire paste de tous les position des marquers dans un fichier text. Par la suite avec python, awk, matlab ou perl tu pourras facilement faire le mapping des marquers pour les repositionner la ou il devrait etre dans le fichier original en gros ce sera pour chaque position T la position D-T ou D est la durée totale de ta musique.

Concernant la rugosité, autant que je vois n’avons nous rien dans notre boite a outil qui directement characterise la rugosite.
Comme tu le dis dans cette musique la rugosité viens d’une repetition rapide des memes evenements, donc la position entre deux evenements
sequentiel pourrait evt etre une indice la qualifiant. Le probleme des marquers standard pour ces evennements rapides c’est le fait que cette analyse ne peut jamais detecter plus qu’un seul evenement par chaque fenetre d’analyse. Tu pourrais donc essayer de reduire la taille de la fenetre d’analyse pour l’analyse de transitoire afin d’ameliorer la resolution temporelle et ainsi characteriser les evenement plus proche entre eux.

A+
Axel

Salut Axel

Merci beaucoup pour ta réponse !

Ok je comprends le problème avec le spectral differencing, j’ignorais que c’était une technique plus ancienne.
Alors effectivement c’est drôle que tu suggères de travailler sur le reverse du son car c’est précisément ce que j’imaginais de faire l’autre jour,
comme solution de secours. Le résultat n’est pas incroyable notamment car les transitoires d’attaques sont également présentes mais je vais insister un peu sur les réglages et voir si j’obtiens quelque chose de plus précis. Merci de confirmer que mon intuition initiale n’était pas totalement stupide ! :slight_smile:

Je n’ai pas utilisé AS depuis un moment, je ne connaissais pas le raccourcis pour copier les marqueurs en texte, c’est super !
Du coup par rapport à l’encodage ce que je ne comprends pas tout à fait, c’est la présence de doublons dans les dates et, en 2e position, soit 0 soit 1. Est-ce que ça correspond au début et à la fin d’une même transitoire?

Pour la rugosité temporelle, je suis “rassuré” de voir que ce n’est pas vraiment un problème trivial. Merci pour ta suggestion de baisser la taille de la fenêtre, ça me paraît très clair je vais regarder ça !
Du coup j’avais une question : quand j’étais au cursus en 2014, je me souviens que quelqu’un (peut-être toi ou Marco?) était venu nous présenter le nouveau système de taille de fenêtre adaptative. Je viens de retrouver justement dans le menu le fameux AAAS, c’est bien ça?
Est-ce que cela pourrait s’appliquer d’une manière ou d’une autre à la détection de transitoires? Si oui, est-ce que tu vois un moyen de faire varier la taille de la fenêtre justement en fonction de la “clarté” des attaques?

Aussi, dernière question j’en profite. Je n’ai pas suivi les dernières évolutions dans ce sens mais l’une des choses les plus intéressantes que j’avais vues dans AS à l’époque est la matrice de similarité. Existe-t-il depuis des moyens d’extraire de cette matrice des informations supplémentaires en termes de contraste, en gros une symbolisation au dessus du sonogram qui aide à mettre en évidence le flux de différences et répétitions? Je n’ai pas compris s’il était même possible de récupérer les données de la matrice pour les analyser à l’extérieur dans PWGL ou Max par exemple. Si oui cela m’intéresserait beaucoup !

Peut-être Filtré les Basses Fréquences (HPF 100hz a 200hz) ça peut donné un coup pouce à l’analyse.

Aussi Process avec Transient FORTE et avec NOISE à 0.1 et Sinusoid à 0.1 .

JE trouve beaucoup d’idées a appliquer pour AS avec la librairie LibROSA avec Annaconda.

https://librosa.github.io/librosa/tutorial.html

Cordialement.

Merci QCMV22 pour tes conseils, en effet j’ai commencé à filtrer de manière un peu plus agressive et j’ai obtenu des résultats intéressants.

Pour le réglage de mix transient / noise / sinusoid, je ne sais pas comment le faire dans Audiosculpt (seulement dans SuperVP sur Max)
ça se passe dans quel menu??

Merci encore!

Julien,

Je suis sur AS standalone . Mais tu peux downloader le TS lab c’est gratuit pour 2 semaines. Ça fais la même chose que AS dans ce cas précis.

Ircam Lab TS

POUR DOWNLOAD le TS lab gratuit pour 2 semaines ici :
http://download.plugivery.com/pvdl/?do=browse&dir=release&os=macosx&bid=102

Tout comme AS, réglé à Polyphonique avec Transients Window Blackman… c’est le même moteur PV que AS.

Cordialement.

Salut Julien,

<Pour le réglage de mix transient / noise / sinusoid, je ne sais pas comment le faire dans Audiosculpt (seulement dans SuperVP sur Max)
ça se passe dans quel menu??>

c’est dans Processing -> Process treatments (ou selection, ou realtime processing settings) dans la sous-fenêtre Component remixing.

Ciao. marco

Julien,

Le résultat n’est pas incroyable notamment car les transitoires d’attaques sont également présentes.

Oui, maintenant si tu fais les deux analyses forward et backward tu aura certain attacque deux fois (donc assez proche)
evt tu pourra filtere cela avec un petit script?

Du coup par rapport à l’encodage ce que je ne comprends pas tout à fait, c’est la présence de doublons dans les dates et, en 2e position, soit 0 soit 1. Est-ce que > ça
correspond au début et à la fin d’une même transitoire?
Etonnant, si je selectionne une transitire et utlise commande C je n’ai que un valuer comme ca

35.834195 0 TrsM

je ne sais pas pourquoi tu as deux, mais oui, les marquers transitoire contiennent deux temps
le premier c’est la permier foix quand le transitoire a ete detecte, et le deuxime quand l’algorithme detect la fin de la monté
rapide. Tu les vois tous les deux dans l’inspector (selecton marquer et commande i). Il y a probablement un mode specifique
ou copier marquer donne les deux temps. Le quel sera perceptivement mieux pour marquer une debut d’une note je ne saurai pas dire,
dans AS on affiche le debut car cela assure qu’un effet positionner avec une note et aligner avec un marquer ne va pas s’appliuer a la note.

Je viens de retrouver justement dans le menu le fameux AAAS, c’est bien ça?
Oui
Est-ce que cela pourrait s’appliquer d’une manière ou d’une autre à la détection de transitoires? Si oui, est-ce que
tu vois un moyen de faire varier la taille de
la fenêtre justement en fonction de la “clarté” des attaques?

Pour le moment dans AS le mode AAAS ne s’applique malheurusement que a l’affichage du spectrogram.
Ca pourrai s’appliquer aussi a la detection des transitoire, en gros il faudrais faire deux passe, le premier avec
AAAS pour dtecter la taille de la fenetre optimal locale et le deuxieme en lisant la taille de
la fenetre adaptative pour la detection des transitoires. Par contre actuellemnt cela ne me semble pas possible dans AS.

Aussi, dernière question j’en profite. Je n’ai pas suivi les dernières évolutions dans ce sens mais l’une des choses les plus intéressantes que j’avais vues dans AS
à l’époque est la matrice de similarité. Existe-t-il depuis des moyens d’extraire de cette matrice des informations supplémentaires en termes de contraste, en gros
une symbolisation au dessus du sonogram qui aide à mettre en évidence le flux de différences et répétitions? Je n’ai pas compris s’il était même possible de
récupérer les données de la matrice pour les analyser à l’extérieur dans PWGL ou Max par exemple. Si oui cela m’intéresserait beaucoup !

Bon, question complexe, Charles n’est plus tellement presente et je ne sais pas beaucoup sur l’implementation de la matrices de similarité.
Si il suis cette discussion il pourra peut-etre faire des comentaires, sinon
deux pistes qui me semble jouable. Apres l’affichage de la matrice de similarité tu peux

  1. utiliser file->export images afin de sauver la matrices en tant qu’image.
    malheureusement cela ne t’expotre pas a matrice de facon carre, mais les deux axes de l’image devrait normalement avoir la meme durée et du coup
    tu pourrais les rechantillone ainsi et apres acceder aux valeurs de similarité ainsi reechantillonne, et duc ucuop modifie pour utilsier cette matrice
    dans d’autre contexte.

  2. utilisier file-save analysis as-> save sonogram as
    et du coup sauver la matrice de similarite en tant que fichier SDIF. Au premier vu le resultat me smeble beaucoup plus coherent
    le fichier sdif a bien une format carre et dvrait donc pouvoir etre transformé et lu correctement. Pour lire du SDIF avec Python vois la
    discusion avec Antionio sous EASDIF and PYTHON

http://forumnet.ircam.fr/user-groups/audiosculpt/forum/topic/easdif-and-python/

Bone, ce n’est pas toute a fiat faccile, mais une piste qui me semble toute a fait possible pour obtenir des
valeur correcte de la matrice de similarite.

Je souligne le mot semble - je n’ai pas faist plus de de tests, mais la structure du fichier SDIF est bien carre et
les valeurs des int, donc une lecture des similarite devrait etre possible. A prendre avec beaucoup de precaution!
Axel

Bonjour Julien,

Pour faire echo à Axel et apporter quelques minces précisions aux différentes questions.

  1. concernant les marqueurs de détection de transitoires : les informations de début et de fin sont indiquées soit dans le fichier SDIF, soit dans l’inspecteur dans le champs ‘end time’.
    Comme te l’indique Axel, tu as la possibilité de copier ces marqueurs, puis de coller uniquement les valeurs d’attaque en Texte (par exemple dans ton TexEdit) comme cela :
    Menu EDIT > SELECT ALL VISIBLE MARKERS puis EDIT > COPY

Après un simple ‘Paste’ dans un éditeur de texte copiera seulement la valeur d’attaque pour chaque marqueur.

1.054588 0 TrsM
<temps (secondes)> <canal (0=canal 1)>

Cette commande applique et copie aussi les marqueurs en fonction du seuil donné dans le Sonogram Display (voir le slider ou le champs textuel dans Marqueurs > Transient ! Je te conseille de l’utiliser pour bien filtrer les marqueurs, mais tu l’as surement déjà fait.

Donc si tu as utilisé cette méthode, si je ne trompe pas, le 0 et le 1 dont tu parles ne correspondent pas au début ni à la fin du marqueur mais sont des indications du canal auquel il correspond. Par exemple, une analyse sur un fichier mono ne renvoie que des 0 dans ce champs normalement.

  1. concernant la matrice de similarité, son implémentation dans AS est un peu particulière car elle a été adapté pour rentrer dans le format SDIF utilisé pour le sonagramme. Comme te l’a expliqué Axel, c’est donc exactement le même format SDIF utilisé (lire les trames 1GB0). Par conséquent, sa taille est aussi limitée par les mêmes contraintes que le sonagramme, elle peut donc être tronquée si sa taille excèderais la taille limite (cette limite s’applique surtout pour le nombre de bins pour le sonogramme, ce qui est beaucoup plus sensible pour la matrice de similarité plus rapidement car cette limite s’applique sur les 2 dimensions).
    Il faut donc avoir à l’esprit que ces données ne sont pas précises (valeur de 0-255) et qu’elles seront adaptées en fonction des contraintes (mémoires) de la visualisation.
    Pour plus de précisions il faut demander à Frédéric Cornu.

HTH,
Bien cordialement,
Charles

Bonjour Julien,

(désolé si ce post apparaît 2 fois, le forum semble avoir effacé ma première réponse)

Pour faire echo à Axel et apporter quelques minces précisions aux différentes questions.

  1. concernant les marqueurs de détection de transitoires : les informations de début et de fin sont indiquées soit dans le fichier SDIF, ou dans l’inspecteur dans le champs ‘end time’.
    Comme te l’indique Axel, tu as la possibilité de copier ces marqueurs, puis de les coller uniquement les valeurs d’attaque en Texte (par exemple dans ton TexEdit) comme cela :
    Menu EDIT > SELECT ALL VISIBLE MARKERS puis EDIT > COPY
    Après un simple ‘Paste’ dans un éditeur de texte copiera seulement la valeur d’attaque pour chaque marqueur.

1.054588 0 TrsM
temps(secondes) canal(0=premier canal) type de marqueur(=TrsM pour transient)

Cette commande applique et copie aussi les marqueurs en fonction du seuil donné dans le Sonogram Display > Marqueurs > Transient ! Je te conseille de l’utiliser pour bien filtrer les marqueurs.

Donc si tu as utilisé cette méthode, si je ne trompe pas, le 0 et le 1 dont tu parles ne correspondent pas au début ni à la fin du marqueur mais sont des indications du canal auquel il correspond. Une analyse sur un fichier mono ne renvoie que des 0 dans ce champs normalement.

  1. concernant la matrice de similarité, son implémentation dans AS est un peu particulière car elle a été adapté pour rentrer dans le format SDIF utilisé pour le sonagramme. Comme te l’a expliqué Axel, c’est donc exactement le même format SDIF utilisé (lire les trames 1GB0). Par conséquent, sa taille est aussi limitée par les mêmes contraintes que le sonagramme, elle peut donc être tronquée si sa taille excèderais la taille limite (cette limite s’applique surtout pour le nombre de bins pour le sonogramme, ce qui est beaucoup plus sensible pour la matrice de similarité plus rapidement car cette limite s’applique sur les 2 dimensions).
    Il faut donc avoir à l’esprit que ces données ne sont pas précises (valeur de 0-255) et qu’elles seront adaptées en fonction des contraintes (mémoires) de la visualisation.
    Pour plus de précisions il faut demander à Frédéric Cornu.

HTH
Charles

Quelques détails sur le fichier SDIF pour la matrice de similarité. D’abord, il s’agit d’un moyen détourné d’utiliser le sonogramme comme une façon d’afficher la matrice. La matrice est calculée sur la moyenne de tous les canaux, ce qui explique que les matrices sont identiques si il y en a plusieurs. Le fichier SDIF lui ne contient qu’une seule matrice de similarité.
La structure sera toujours carrée, au sens où il y a autant de trames 1GB0 que de valeurs dans chacune d’elle. Ces valeurs sont des scores de similarité entre 0 et 255 (ce pourquoi il y a au moins une valeur 255 dans chaque trame, la diagonale de la matrice de similarité).
Dans les grandes lignes, pour convertir le SDIF en matrice, il faut lire les frames 1GB0 (qui donnent la position temporelle), puis dans chacune lire la matrice
1GB0 et copier son contenu dans une colonne (ou une ligne). Pour des valeurs entre 0 et 1 il suffit de diviser par 255.
En ce qui concerne la quantification sur 256 valeurs, je ne peux pas dire si c’est une perte de précision significative ou pas. Mais comme elle est faite en multipliant une valeur entre 0 et 1 par 255, puis un arrondi à la valeur la plus proche, il vaut mieux éviter de faire une distinction entre deux valeurs identiques et deux valeurs qui diffèrent de 1.
Si le fichier audio est très long, l’analyse échouera avec un message std::bad_alloc, et il faut alors augmenter le paramètre “Window Step”. Pour une heure d’audio, le minimum devrait être autour de 0.3s (plus si d’autre fenêtre AS sont ouvertes, ou si un sonogramme est déjà affiché)

Frederic,

 Je cherchais justement une méthode pour quantizer les dynamiques. 255 pour  un espace de 0 a -120db OK. Gendy3 de  

Xenakis en a 100.

J’ai fais un essai en synthétisant le sonogram et ça marche. Le seul problème est qu’on perd la phase ( ou la fréquence
exact ) mais le résultat est très semblable a l’original et , parfois, même meilleur. Ça donne un aspect granulaire et plus rude que
la version original. Je pense que ça dépend vraiment du style de musique - quant à l’idée d’utilisé la technique de quantisation.

Cordialement.