AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sound Analyse anhand des Peaks

Ein Thema von Delphi-Narr · begonnen am 16. Apr 2014 · letzter Beitrag vom 18. Apr 2014
Antwort Antwort
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Sound Analyse anhand des Peaks

  Alt 16. Apr 2014, 18:11
Hallo zusammen,
ich habe eine DLL basierte Programmsammlung (Plugins) geschrieben, welche über einen ebenfalls selbst erstellten "Pluginmanager" aufgerufen und in Form von Apps betrieben werden.
Unter anderem ist ein Tool dabei, welches die Audioausgabe analysieren soll, hierbei geht es vorwiegend um Musik.
Das Tool stellt regelmäßig (ca. 50-100 Mal pro Sekunde) den Peak der Ausgabe bereit.
Jetzt wäre es gut, wenn man anhand dessen den Rhythmus des abgespielten Liedes erkennen könnte (in Echtzeit).
Zum einen fehlt mir hierzu ein geeigneter Algorithmus, welcher den Rhythmus erkennt, hierbei "rhythmuslose" Phasen ignorieren kann, aber Liedänderungen bzw. Änderungen im Rhythmus erkennen kann.
Falls der globale Peak hierzu nicht ausreicht, bin ich auch immer noch auf der Suche nach einer FFT Analyse Unit, welche dies vom Audioausgang ermöglicht.
Bei der Bass.dll weiß ich leider nicht, wie das geht und habe auch kein geeignetes Tutorial hierzu gefunden?!

Für Hilfe bei diesem/n Problem(en) wäre ich froh
Viele Grüße!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Sound Analyse anhand des Peaks

  Alt 17. Apr 2014, 01:54
Ein paar nächtliche Gedanken:
Der Peak alleine hat eigentlich nicht allzuviel Aussagekraft über den "Beat", wie er gerne genannt wird. Ein langer Ton schlägt ebenso hoch aus wie ein kurzer Schlag, so lange sie nur gleich laut sind. Ich habe vor Jahren mal einen Artikel gelesen, in dem vorgeschlagen wurde Beat-Detection mittels einer Art "Energiedichtefunktion" zu lösen, da viele Lieder an den Beats eben tendenziell eher "dicht" klingen. Eine FFT ist das noch nichtmals, ich meine das war eher eine Form von "Menge der Amplitudenänderungen pro Zeiteinheit", kann aber leider nicht viel genauer werden da es so lange her ist, ich es nur beiläufig las und nicht weiter benutzt habe, und natürlich die Quelle nicht mehr finde .
Subjektiv würde ich sagen, dass das eventuell mit schlicht hochfrequenzreichen Passagen kollidieren könnte, so dass vermutlich noch ein Tiefpass Filter mit von der Partie war, oder gar eine FFT-basierte Gewichtungsfunktion darüber auch helfen könnte. Allerdings ist nun auch nicht alles Techno und macht sein Rythmusgefühl primär über die Basedrum aus. Vermutlich muss man dann sogar adaptiv filtern bis plausible Werte heraus kommen. Ein perfektes Verfahren, dass dem Hörempfinden in allen Fällen entspricht wird auch beliebig komplex vermute ich. Es wird immer eher ein Schätzeisen bleiben, zumindest wenn man wirklich den allgemeinen Fall betrachtet, und nicht immer nur die hier prävalente On-Beat 4/4 Musik mit klassischem Drumset zu Grunde legt.

Eine FFT kann fallweise aber auch zumindest mit helfen. Gerade in den zuvor genannten Fällen sind Peaks in den niedrigen Frequenzen charakteristisch, allerdings lahmt das auch an eventuell prominent geführen melodischen Bässen, die das Ergebnis verwischen könnten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Sound Analyse anhand des Peaks

  Alt 17. Apr 2014, 12:09
Klingt schonmal interessant!
Bisher klappt die "manuelle" Beatdetection sogar einigermaßen gut, der Algorithmus ist nicht sonderlich komplex und bei den meisten Liedern klappt er auch.
Da die niedrigen Frequenzen, also klassischerweise der Beat, subjektiv genauso laut sein sollen, wie die hohen Frequenzen, jedoch eben aufgrund der niedrigeren
Frequenzen auch weniger Energie haben, sind die Amplituden der Beats glaube ich generell höher als die der subjektiv gleichlauten Höhen.
Beats zu erkennen klappt also generell schon in bestimmten Abschnitten, nur wenn eine Phase ohne Beat im Lied kommt, vorher aber bereits ein Beat erkannt wurde, sollte dieser weitergeführt werden oder es sollte ein Signal für eine Zwischenphase geben.
(Die Analyse soll Farben für LEDs berechnen, welche dann passend zur Musik leuchten).
In Schnellbeatphasen sollte dann z.B. bei generell flotteren Liedern auf Stroboskop geschaltet werden oder ähnliches. Dafür wäre dann aber wieder FFT notwendig?!
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Sound Analyse anhand des Peaks

  Alt 17. Apr 2014, 14:54
Warum kommst du immer mit der FFT? Und warum sollte die wenn schneller wichtiger werden? Die FFT tut nichts anderes, als ein Zeit-Ausprägungs-Signal in ein Zeit-Frequenz-Amplituden-Signal umzuwandeln. Schnelle Lieder haben meiner Beobachtung nach nicht zwangsweise komplett andere Frequenzen als langsame
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Sound Analyse anhand des Peaks

  Alt 18. Apr 2014, 09:56
Hm dann verstehe ich das wohl falsch?!
Erzeugt FFT nicht eine Aufschlüsselung in Tiefen, Höhen, etc.? Also quasi solch eine Ausgabe:
Spektrum

Hierbei wären dann die tiefen Frequenzen sehr interessant.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Sound Analyse anhand des Peaks

  Alt 18. Apr 2014, 14:14
Das trifft halt wirklich aber auch nur zu, wenn du dich auf aktuelle westlich geprägte Musik beschränkst, die im 4/4 Takt auf 1 und 3 (bzw. allen Vierteln) die Base-Schwerpunkte haben. Den "Beat" eines vom Orchester gespielten Walzers z.B. bekommst du so nicht heraus. Wenn dir das reicht, nimm einfach die Peaks um 100Hz, ja.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz