AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bass.dll Spektrum zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Bass.dll Spektrum zeichnen

Ein Thema von holle · begonnen am 27. Apr 2009 · letzter Beitrag vom 29. Apr 2009
Antwort Antwort
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#1

Bass.dll Spektrum zeichnen

  Alt 27. Apr 2009, 20:02
Ich habe gerade versucht ein Spektrum zu zeichnen, ähnlich wie in Winamp bei der Wiedergabe. Mein Problem ist nur, dass die Frequenzen auf der linken seite einen viel höheren ausschlag haben als auf der rechten. Ich habe dass schon etwas mit
Code:
sqrt(fft[x])
angepasst, aber der unterschied ist doch noch ziemlich groß. Habt ihr eine Idee wie man das am besten anstellt?
Marcel
  Mit Zitat antworten Zitat
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 15:09
keiner eine idee?
Marcel
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 15:21
Nunja, das ist halt nunmal der Frequenzgang. Die meiste Musik hat in den niedrigen Frequenzen die größten Amplituden, das ist schon korrekt so. Wenn es dir nicht um Korrektheit sondern bloße Optik geht, kannst du die Werte im Grunde mit einer beliebigen Funktion bearbeiten mit der dir die Ausgabe am besten gefällt. Die Wurzel wäre ein Weg, logarithmische Saklen sind wohl aber recht gängig da diese Darstellung am ehesten dem Hörempfinden entspricht. Daher wäre das sogar noch eine mit mehr als nur "nett aussehen" begründbar. Für dein Beispiel also ln(fft[x]), wobei ich nicht sicher bin ob der natürliche Logarithmus die wirklich korrekte Wahl dabei ist. Im Zweifel auch hier mal mit verschiedenen Basen herumspielen
"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
EWeiss
(Gast)

n/a Beiträge
 
#4

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 15:44
Warum ne eigene FFT dazwischen schalten ?
Das macht Bass alles selbst.

Gibt genügend code hier nur mal suchen.
Zitat:
Die meiste Musik hat in den niedrigen Frequenzen die größten Amplituden
Richtig .. Wie will er das behandeln ?
Gerade dann wird alles unnatürlich dargestellt.

gruss Emil
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 15:57
Zitat von EWeiss:
Warum ne eigene FFT dazwischen schalten ?
Hab ich das vorgeschlagen?

Zitat:
Das macht Bass alles selbst.
Nö, die wirft einem einfach die linearen FFT Daten ins Gesicht, evtl. bietet sie noch Windowing-Optionen, da bin ich gerade unsicher. Aber ansonsten macht die BASS nichts weiter mit den Daten.

Zitat:
Richtig .. Wie will er das behandeln ?
Gerade dann wird alles unnatürlich dargestellt.
Genau das hab ich ja gesagt. Da die Amplituden allerdings linear ankommen ist eine logarithmische Darstellung aber noch insofern "richtig" als dass dies dann eine Darstellung des Empfundenen und nicht der "harten nackten Daten" entspräche, also sogar einen wirklichen Echt-Welt-Bezug hat, und zudem dem optischen Ziel des TEs recht nahe kommen könnte.
"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 igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 16:02
Versuche die Daten in Dezibel anzugeben. "val" muss Normalisiert sein d.h. ein Wert zwischen 0 und 1.
  db := 10 * log10(val); Du erhälst einen Wert zwischen minus unendlich und Null.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 16:11
Zitat von igel457:
Versuche die Daten in Dezibel anzugeben. "val" muss Normalisiert sein d.h. ein Wert zwischen 0 und 1.
  db := 10 * log10(val); Du erhälst einen Wert zwischen minus unendlich und Null.
Hmm das ist eher was für Beat oder ?
Er will die Daten glätten so wie ich verstanden habe.

Kann ja mal in Wavefade reinschauen hab da einen FFT algo der die Wavedaten glättet
müßte uach mit spectrum funktionieren.

gruss Emil
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 16:18
Dezibel wären optimal! +1 an den Igel

Und ich glaube nicht dass es um Glättung geht, was auch immer du damit genau meinst. Es geht lediglich darum, dass das Spektrum normaler Alltagsgeräusche in den hohen Frequenzen deutlich schwächer ausgeprägt ist, und eine grafische Darstellung der FFT deswegen "rechts" eben viel kleinere Balken hat um es mal profan auszudrücken. Das missfällt dem TE offenbar, und eine Anzeige in db(A) lindert das grafische Ungleichgewicht etwas, wobei es sogar noch echten analytischen Mehrwert bietet.
"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
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Bass.dll Spektrum zeichnen

  Alt 29. Apr 2009, 16:22
Zitat von Medium:
Dezibel wären optimal! +1 an den Igel

Und ich glaube nicht dass es um Glättung geht, was auch immer du damit genau meinst. Es geht lediglich darum, dass das Spektrum normaler Alltagsgeräusche in den hohen Frequenzen deutlich schwächer ausgeprägt ist, und eine grafische Darstellung der FFT deswegen "rechts" eben viel kleinere Balken hat um es mal profan auszudrücken. Das missfällt dem TE offenbar, und eine Anzeige in db(A) lindert das grafische Ungleichgewicht etwas, wobei es sogar noch echten analytischen Mehrwert bietet.
Hehehehe Ok
Obwohl ich es nur in verbindung mit Beat verwende.
Und mir dazu den Level über
BASS_ChannelGetLevel(BassChannel.lngChan) ausgeben lasse.

Wenn's hilft.

gruss Emil
  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 02:25 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