Audio Decomposition – Open Source zur Trennung von Musik nach Instrumenten
(matthew-bird.com)-
Projektüberblick
- Dieses Projekt hat das Ziel, ein Programm zu entwickeln, das Musik in Noten umwandelt.
- Es handelt sich um ein Open-Source-Projekt, das Musik in ihre Instrumente zerlegt, ohne externe Bibliotheken zur Instrumententrennung zu verwenden.
- Auslöser für das Projekt waren ein persönlicher Bedarf und das Fehlen eines einfachen Open-Source-Algorithmus.
-
Vorbereitung
- Die Instrumentendaten stammen aus der Datenbank der University of Iowa Electronic Music Studios.
- Aus diesen Daten werden die Fourier-Transformation der gesamten Wellenform und die Hüllkurve der Wellenform bestimmt.
-
Funktionsweise
- Die Klangwellenform eines Instruments wird hauptsächlich durch die Fourier-Transformation und die Hüllkurve charakterisiert.
- Dadurch lässt sich erkennen, welches Instrument welche Note spielt.
-
Fourier-Transformation
- Die Fourier-Transformation der Musikdatei wird alle 0,1 Sekunden durchgeführt, um ein Spektrogramm zu erzeugen.
- Die gespeicherten Fourier-Transformationen der einzelnen Instrumente werden aufsummiert, um die Fourier-Transformation eines 0,1-Sekunden-Fensters zu rekonstruieren.
- Die Amplitude jedes Instruments wird über die partielle Ableitung der MSE-Kostenfunktion nach der Frequenz bestimmt.
-
Hüllkurve
- Die Hüllkurve ist die obere Begrenzung der Wellenform, daher wird eine Methode benötigt, die robust gegenüber Rauschen und bestimmten Wellenformtypen ist.
- Die Wellenform wird in Chunks aufgeteilt, und aus dem Maximum jedes Chunks wird die Hüllkurve ermittelt.
- Die Hüllkurve wird in Attack, Sustain und Release unterteilt und analysiert.
- Die Wellenform eines Instruments kann eine statische oder dynamische Dämpfung aufweisen; zur Unterscheidung werden Dämpfungsfaktor und Änderungsrate analysiert.
-
Verschiedene Typen von Wellenformen
- Zur Verarbeitung der Musikdatei wird für die Frequenz jeder Note ein Bandpassfilter angewendet.
- Für jedes Instrument werden Anfang und Ende jeder Note über die Kreuzkorrelation von Attack und Release gefunden, und zur Bestimmung der Kosten wird der MSE berechnet.
- Die endgültige Amplitude ergibt sich aus der Multiplikation der in der Fourier-Transformationsphase gefundenen Amplitude mit dem Kehrwert der Kosten.
-
Ergebnisse und Darstellung
- Die Noten werden mit einem Streudiagramm von matplotlib dargestellt.
- Ursprünglich sollte Audio aus den Amplituden rekonstruiert werden, doch wegen vieler Probleme wurde dieser Ansatz aufgegeben.
- Nützlich für die Rekonstruktion von Noten und besonders hilfreich, wenn man Schwierigkeiten hat, Tonhöhen oder Akkorde herauszuhören.
1 Kommentare
Hacker-News-Kommentare