Author Topic: Extracteur d'enveloppe  (Read 4444 times)

0 Members and 1 Guest are viewing this topic.

Offline ponce

Extracteur d'enveloppe
« on: 23 May 2013 à 19:28:25 »
envextract (attaché à ce post) est un petit outil tout con pour extraire des enveloppes, il sort une table qui indique le volume d'un fichier WAV au cours du temps.

Code: [Select]
usage: envextract.exe <input.wav> {peak|rms} <attack> <release> <frequency> [output.wav]

   <input.wav>  : file to process
   {peak|rms}   : follow peak or loudness
   <attack>     : attack of envelope follower in ms
   <release>    : release of envelope follower in ms
   <frequency>  : frequency of envelope in hz

   [output.wav] : optional WAV output of the envelope signal at input sampling-rate

   Good starting values are attack = 10 ms, frequency = 40 ms, frequency = 100 hz.
   Note that the first envelope value correspond to the first sound sample.

En gros ça fait conversion en mono => enveloppe follower avec attack et release => filtrage passe-bas => normalisation => decimation => stdout.
Avant la décimation optionnellement on peut choisir de sortir un WAV pour regarder la courbe.

Bugs connus :
- introduit un délai de 2 samples
- envelope follower pas vraiment state of the art
- possiblement: drift temporel sur un long .wav

Offline moudubou

  • Base
    • View Profile
    • quelques photos d'explo
  • Ancienneté: 1990
  • Groupe: FLC
  • Rôle: code,orga
  • Ville: Lyon
Re : Extracteur d'enveloppe
« Reply #1 on: 25 May 2013 à 09:34:24 »
Question de noob, on peut en faire quel usage de ça? Une correction de gain pour uniformiser le volume de plusieurs morceaux?

Offline ponce

Re : Extracteur d'enveloppe
« Reply #2 on: 25 May 2013 à 11:18:00 »
Bonne question : à quoi ça sert ? :p
C'est spécifique pour la démo, en gros imaginons que tu veux faire un effet dont un paramètre suive le volume d'une piste audio (exemple: le kick, une nappe), tu va demander à ton musicien de la sortir en solo sans reverb puis la passer la-dedans. Ca te sort un tableau que tu peux utiliser comme courbe.
L'alternative à ça c'est l'analyse d'une FFT en temps-réel mais dans ce cas pas de séparation entre pistes.
C'est TRES pratique quoique imparfait pour synchroniser une voix avec des lèvres qui bougent.
« Last Edit: 01 June 2013 à 10:41:52 by ponce »

Offline moudubou

  • Base
    • View Profile
    • quelques photos d'explo
  • Ancienneté: 1990
  • Groupe: FLC
  • Rôle: code,orga
  • Ville: Lyon
Re : Re : Extracteur d'enveloppe
« Reply #3 on: 25 May 2013 à 11:50:41 »
Bonne question : à quoi ça sert ? :p
C'est spécifique pour la démo, en gros imaginons que tu veux faire un effet dont un paramètre suive le volume d'une piste audio (exemple: le kick, une nappe), tu va demander à ton musicien de la sortir en solo sans reverb puis la passer la-dedans. Ca te sort un tableau que tu peux utiliser comme courbe.
L'alternative à ça c'est l'analyse d'une FFT en temps-réel mais dans ce cas pas de séparation entre pistes.
C'est TRES pratique quoique imparfait pour synchroniser une voix avec des lèvres qui bougent.

Ah ok, asservir les mouvements à la musique.


Offline kaneel

  • Base
    • Pouet.net
    • View Profile
  • Ancienneté: 2000
  • Groupe: TPOLM
Re : Extracteur d'enveloppe
« Reply #4 on: 25 May 2013 à 17:12:27 »
Je me demanderai toujours pourquoi j'ai jamais entendu un seul coder parler de coder un VST pour sortir plusieurs enveloppes...
Par exemple, tu aurais une courbe d'automation sur un effet, tu l'enverrais aussi dans le VST en l'associant à un nom.
Ou encore, avec un VSTi, tu pourrais associer des notes à un effet, un peu à la façon oldschool via des trackers.

Bref, un truc pour qu'un zikos puisse sortir des fichiers vraiment pratiques et "on ne peut plus synchro".

Non mais sérieux, me dites pas que personne a fait ça, j'y crois tellement pas

Offline moudubou

  • Base
    • View Profile
    • quelques photos d'explo
  • Ancienneté: 1990
  • Groupe: FLC
  • Rôle: code,orga
  • Ville: Lyon
Re : Extracteur d'enveloppe
« Reply #5 on: 25 May 2013 à 18:06:10 »
Parce que les démos sont faites à l'arrache et optimisées pour un seul morceau?


Offline kaneel

  • Base
    • Pouet.net
    • View Profile
  • Ancienneté: 2000
  • Groupe: TPOLM
Re : Extracteur d'enveloppe
« Reply #6 on: 25 May 2013 à 20:04:02 »
Je pense pas que tu ais lu ce que j'ai marqué.

Déjà, les demos sont faites à l'arrache? J'oserais pas faire cette assertion pour tous les groupes, surtout sur les synchros qui sont peut-être le point le plus important d'une demo... tu peux avoir un moteur simple, des effets simples et tout sauver avec deux choses: design + sync.

En quoi ce que je dis empêche le fait que ça soit quand même fait à l'arrache ou bien optimisé pour un seul morceau.... c'est un tool, juste un tool qui permet de facilement faire des synchros en utilisant directement un DAW.

Offline moudubou

  • Base
    • View Profile
    • quelques photos d'explo
  • Ancienneté: 1990
  • Groupe: FLC
  • Rôle: code,orga
  • Ville: Lyon
Re : Re : Extracteur d'enveloppe
« Reply #7 on: 25 May 2013 à 20:54:02 »
Je pense pas que tu ais lu ce que j'ai marqué.

Déjà, les demos sont faites à l'arrache? J'oserais pas faire cette assertion pour tous les groupes, surtout sur les synchros qui sont peut-être le point le plus important d'une demo... tu peux avoir un moteur simple, des effets simples et tout sauver avec deux choses: design + sync.

En quoi ce que je dis empêche le fait que ça soit quand même fait à l'arrache ou bien optimisé pour un seul morceau.... c'est un tool, juste un tool qui permet de facilement faire des synchros en utilisant directement un DAW.

Je pars effectivement du postulat que les démos sont optimisées pour un morceau. Et jusqu'à preuve du contraire, ça a toujours été le cas  ;D. De là, une fois que tu as repéré les timings, il n'y a qu'à se mettre des bornes dans le code.

C'est sûrement moins propre que s'amuser à compter le tempo d'un morceau et calculer des enveloppes, mais ça fonctionne très bien.

Bref, je pense que pour une démo, faire du code générique de synchro n'a pas grand intérêt.

Ce n'est pas dévalorisant (on a l'impression que tu le prends comme tel), au contraire, c'est plutôt réaliste, ne pas perdre son temps sur un point qui ne le mérite pas.

Offline LLB

  • Base
    • Pouet.net
    • Coup de coeur
    • View Profile
    • site perso
  • Ancienneté: 2000
  • Groupe: Ctrl-Alt-Test
  • Rôle: code
  • Ville: Munich
Re : Extracteur d'enveloppe
« Reply #8 on: 25 May 2013 à 23:11:55 »
Tout dépend de ce que tu veux comme synchro. Tout faire manuellement prend beaucoup de temps (un décalage de quelques millisecondes peut ruiner l'effet) et c'est à refaire à chaque démo. Alors oui, il y a toujours une part manuelle, mais il y a souvent une part automatisable.

Mon approche est de combiner les données de la partition (format midi par exemple) et la FFT. Les deux donnent des informations complémentaires, on ne fait pas les mêmes effets avec l'une ou l'autre. Mais j'aime beaucoup l'idée derrière envextract. Je testerai peut-être.


Même si les démos sont souvent finies à l'arrache (parce qu'il y a toujours des choses à fignoler ou à ajouter), elles sont généralement commencées en temps raisonnable.

Offline moudubou

  • Base
    • View Profile
    • quelques photos d'explo
  • Ancienneté: 1990
  • Groupe: FLC
  • Rôle: code,orga
  • Ville: Lyon
Re : Re : Extracteur d'enveloppe
« Reply #9 on: 26 May 2013 à 00:14:21 »
Tout dépend de ce que tu veux comme synchro. Tout faire manuellement prend beaucoup de temps (un décalage de quelques millisecondes peut ruiner l'effet) et c'est à refaire à chaque démo. Alors oui, il y a toujours une part manuelle, mais il y a souvent une part automatisable.

Mon approche est de combiner les données de la partition (format midi par exemple) et la FFT. Les deux donnent des informations complémentaires, on ne fait pas les mêmes effets avec l'une ou l'autre. Mais j'aime beaucoup l'idée derrière envextract. Je testerai peut-être.


Même si les démos sont souvent finies à l'arrache (parce qu'il y a toujours des choses à fignoler ou à ajouter), elles sont généralement commencées en temps raisonnable.

Oui, en fait je viens de réaliser, que pour certains effets, il faut avoir l'enveloppe avant que le son arrive, donc c'est plus simple d'avoir tout en mémoire quelque part qui ait été fait à l'avance ;)

ps: À 60 images par seconde, une précision de 16ms suffit (je chipote, je chipote)


Offline kaneel

  • Base
    • Pouet.net
    • View Profile
  • Ancienneté: 2000
  • Groupe: TPOLM
Re : Extracteur d'enveloppe
« Reply #10 on: 26 May 2013 à 13:25:51 »
C'est l'avantage qu'ont les synthés 4k et 64k d'ailleurs, tout ressort en data, le coder peut se binder à ce qu'il veut.. mais pour un mp3, tu as que dalle, aucune informations autre que la musique et tu dois tout te taper à la main alors qu'un musicien pourrait, avec le bon tool, extraire tout un tas de datas super intéressantes en deux clicks ("boujou bien et pi du mieux" comme on dit dans le pays de caux). C'est pas faire "un code générique", c'est justement permettre l'utilisation d'enveloppes super précises de la musique.

Et comme je l'ai dit plus haut, c'est déjà comme ça que fonctionnent les synthés pour les 4k / 64k, tu fais ta zik en utilisant un synthé virtuel et le synthé exporte tout en data... résultat tu as plus qu'à dire à ton coder à quel numéro d'instrument est le snare ou le kick, sur quel réglage il peut trouver cette super automation qu'il va pouvoir binder à un de ses effets, etcetc.
Avec 4klang, étant donné que tu peux créer un instrument qui ne sert qu'à moduler un autre, tu te retrouves donc avec un moyen facile de relier un effet (changement de couleur, vitesse de déplacement d'un objet/caméra) à une sonorité, un ajout de grain particulier.

Bien sûr, pour ce qui est de synchros classiques, je comprend que certains préfèrent relancer 40 fois la prod histoire de bien timé le tout... je parle donc de prod plus "synesthésique" que d'habitude...

Si vous aimez faire des synchros à la main après je dis ça, je critique pas... semblerait que Ganz Graft ait été fait entièrement à la main: http://www.youtube.com/watch?v=nfwD05XA2YQ#


ps: et je suis pas coder, voilà pourquoi j'irais pas perdre mon temps là-dessus.

Offline ponce

Re : Extracteur d'enveloppe
« Reply #11 on: 26 May 2013 à 17:45:16 »
Oui, en fait je viens de réaliser, que pour certains effets, il faut avoir l'enveloppe avant que le son arrive, donc c'est plus simple d'avoir tout en mémoire quelque part qui ait été fait à l'avance ;)
Pour la défense de la FFT et autres filtres non ahead-of-time, on les utilises sur un buffer qui n'est pas encore parti vers la carte. (EDIT: et puis bon la latence est pas un problème on peut toujours délayer la video).
« Last Edit: 26 May 2013 à 20:39:00 by ponce »

Offline LLB

  • Base
    • Pouet.net
    • Coup de coeur
    • View Profile
    • site perso
  • Ancienneté: 2000
  • Groupe: Ctrl-Alt-Test
  • Rôle: code
  • Ville: Munich
Re : Extracteur d'enveloppe
« Reply #12 on: 27 May 2013 à 09:41:35 »
Pour la défense de la FFT et autres, on peut les précalculer au chargement. C'est ce que je fais dans ma démo et je trouve ça beaucoup plus confortable (je peux calculer n'importe quelle frame, n'importe quand, sans avoir à me soucier des effets de bord).

Offline MsK`

  • Base
    • Pouet.net
    • View Profile
  • Rôle: Code
  • Ville: Paris/RP
Re : Extracteur d'enveloppe
« Reply #13 on: 27 May 2013 à 14:22:09 »
Non mais sérieux, me dites pas que personne a fait ça, j'y crois tellement pas

J'étais tombé sur deux articles y'a un moment d'un groupe qui avait fait un VST et d'un autre qui parsait les fichiers renoise en input de demo.

Sinon moi je pensais à utiliser le tool de ponce pour m'aider à régler les params d'enveloppe sur mon synthé chiptune DS :)

Offline kaneel

  • Base
    • Pouet.net
    • View Profile
  • Ancienneté: 2000
  • Groupe: TPOLM
Re : Extracteur d'enveloppe
« Reply #14 on: 27 May 2013 à 16:10:37 »
Merci, tu me rassures un peu :D