Frequenzen Bass.dll

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mr.X

Betreff: Frequenzen Bass.dll

BeitragDi, Dez 16, 2008 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich hab mal ne frage zur Bass.dll

Wie bekomme ich

heraus welche frequenz In dem Bank Eintrag ist

den ich mit der function Bass_ChannelData() einlese?

Schätze mal das in jeden eintrag die amplidute von der

jeweiligen Frequenz drin ist.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 16, 2008 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Der zweite Parameter von BASS_ChannelGetData(Handle, Bank, BASS_DATA_FFT512) ist die Zieladresse der Bank, wo die Daten eingespeichert werden. Und zwar das gesamte aktuell ''abgespielte'' Spektrum. Die Daten liegen dann als Floatwerte vor (beachte 4 Bytes pro Wert, also in 4er Schritten auslesen). Die Frequenz müsste - ich habe es beim Dreamplayer ander gemacht - liniear vorliegen. Das heisst, der erste Wert >0Hz und der letzte die hälfte der aktuellen Abtastfrequenz.

Die Auflösung des Spektrum kannst du mit dem letzten Parameter über gegebene Konstanten angeben. Die Bank muß natürlich dann groß genug dafür sein.

Beachte auch, dass gerade bei hohen Frequenzen die Amplitude sehr klein ist und kaum sichtbar ist. Man muß also einen visuellen Multiplizierer verwenden.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Mr.X

BeitragDi, Dez 16, 2008 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Welcher eintrag in der Bank ist den für welche frequenz?

Und hast du vieleicht ein beispiel zum auslesen von einer Frequenz
z.b. 10khz?
damit ich eine kleine grundlage habe?.

Muss ich eine einzelnen eintrag in der Bank in 4er Schritten auslesen?

Hab das nicht verstanden. Crying or Very sad

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 16, 2008 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Bank ist ein vorgegebenes Speicherfeld. Wenn nun 32-Bit-Fliesskommazahlen darin gespeichert sind, dann beansprucht jede Zahl 4 Bytes. Da du aber eine Bankadresse direkt ansprechen musst, muß die Adresse dessen Zahlenposition *4 gerechnet werden. Also in 4er Schritten. Natürlich kannst du auch eine ''Position'' direkt ansprechen, nur eben mit 4 multipliziert.

Zu den Frequenzen sollten diese liniear abgelegt sein. Das heisst nichts anderes, dass ein Speicherfeld welches 128 Positionen beinhaltet dann eben auch so gerechnet werden muß.

Also:

min. Position 0 = Frequenz 0 Hz
max. Position 127 = Frequenz 1/2 der Abtastfrequenz

Die Abtastfrequenz ist in den meisten Fällen 44100 Hz. Das entspricht der gleichen Abtastfrequenz einer normalen Audio CD. Du kannst aber natürlich deine bass.dll auch mit anderen Vorgaben initialisieren. Auch kannst du die Bandbreite der Spektrumdaten angeben. Das alles ist also abhängig deiner Einstellungen im Code.

Im übrigen gibt die bass.dll nicht an, wo eine Frequenz angespielt wurde, sondern die erechnete Amplitude eines Frequenzverlaufes. Die Amplitude von hohen Frequenzen sind gegenüber tiefen sehr klein. Um diese dann sichtbar zu machen, muß als der Hochtohbereich verstärkt werden. Sonst hast du Werteänderungen hinter dem Komma. Und du kannst keine ganz feinen Werte abfragen. So lässt sich eine Frequenz nur mit recht viel Aufwand aus einer wild schwingenden Amplitude errechnen. Aus diesem Grund zeigt auch die bass.dll nicht ganz genau 10 kHz an, sondern beginnt bei einem Ton der genau 10 kHz hat, bei etwa 9 kHz die Kurve nach oben zu ziehen, die dann bei 10 kHz den Peak erreicht hat um dann bis 11 kHz abzufallen. Die Werte 9 bis 11 sind geschätzt.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group