Audio Decomposition – un projet open source pour séparer une musique par instruments
(matthew-bird.com)-
Aperçu du projet
- Ce projet vise à créer un programme capable de convertir de la musique en partition.
- Il s’agit d’un projet open source qui sépare une musique en instruments constitutifs sans utiliser de bibliothèque externe de séparation d’instruments.
- Le projet est né d’un besoin personnel et de l’absence d’algorithmes open source simples.
-
Préparation
- Les données d’instruments ont été récupérées depuis la base de données de l’Electronic Music Studios de l’University of Iowa.
- À partir de ces données, la transformée de Fourier de la forme d’onde complète et l’enveloppe de la forme d’onde ont été obtenues.
-
Principe de fonctionnement
- La forme d’onde sonore d’un instrument se caractérise principalement par la transformée de Fourier et l’enveloppe.
- Cela permet d’identifier quel instrument joue quelle note.
-
Transformée de Fourier
- La transformée de Fourier du fichier musical est calculée toutes les 0,1 seconde pour générer un spectrogramme.
- Les transformées de Fourier enregistrées de chaque instrument sont additionnées pour reconstruire la transformée de Fourier de la fenêtre de 0,1 seconde.
- L’amplitude de chaque instrument est déterminée via la dérivée partielle en fréquence de la fonction de coût MSE.
-
Enveloppe
- L’enveloppe correspond à la limite supérieure de la forme d’onde, et une méthode robuste au bruit comme à certains types de formes d’onde est nécessaire.
- L’enveloppe est obtenue en divisant la forme d’onde en segments et en prenant la valeur maximale de chaque segment.
- L’enveloppe est analysée en la divisant en attaque, maintien et relâchement.
- La forme d’onde d’un instrument peut présenter une décroissance statique ou dynamique, distinguée par l’analyse du facteur de décroissance et de son taux de variation.
-
Différents types de formes d’onde
- Pour traiter le fichier musical, un filtre passe-bande est appliqué à la fréquence de chaque note.
- Pour chaque instrument, le début et la fin de chaque note sont repérés grâce à la corrélation croisée de l’attaque et du relâchement, puis le MSE est calculé pour obtenir un coût.
- L’amplitude finale est obtenue en multipliant l’amplitude trouvée à l’étape de la transformée de Fourier par l’inverse du coût.
-
Résultats et affichage
- La partition est affichée à l’aide d’un nuage de points matplotlib.
- L’objectif initial était de reconstruire l’audio à partir des amplitudes, mais de nombreux problèmes sont apparus et cette piste a été abandonnée.
- Le projet est utile pour reconstruire des partitions, et particulièrement pratique lorsqu’on a du mal à identifier des hauteurs ou des accords.
1 commentaires
Commentaires sur Hacker News