AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi BASS.DLL und BASS_ChannelGetData
Thema durchsuchen
Ansicht
Themen-Optionen

BASS.DLL und BASS_ChannelGetData

Ein Thema von Jens Schumann · begonnen am 2. Jul 2005 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

BASS.DLL und BASS_ChannelGetData

  Alt 2. Jul 2005, 10:55
Hallo,
ich bastel mir gerade so zum Vergnügen eine MP3-Player.
Jetzt möchte ich auch einen kleinen Ozilloscope Effekt darstellen.
Dafür hole ich mir mit folgender function die die Daten
Delphi-Quellcode:
TWaveData = array[0..2047] of Cardinal;

function TJsMP3Player.WaveData: TWaveData;
begin
  BASS_ChannelGetData(FChannel,@Result,2048);
end;
In der BASS Hilfe steht, dass der 3. Parameter ist Anzahl der Sample angibt, wenn
nicht eine FFT Flag verwendet wird. Im LoWord von TWaveData ist der linke Kanal und im
HiWord ist der rechte Kanal.

Ich bekomme auch 2048 Samples zurück. Dummerweise enthalten aber nur die ersten 512 Samples
scheinbar sinnvolle Daten (Siehe Anlage 1. Wert linker Kanel; 2. Wert recher Kanal).

Warum bekomme ich nicht 2048 sinnvolle Samples?
Angehängte Dateien
Dateityp: txt wave_124.txt (19,6 KB, 58x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#2

Re: BASS.DLL und BASS_ChannelGetData

  Alt 2. Jul 2005, 12:10
es sind immer nur die hälfte der Sampels Sinnvoll.

Zitat:
When requesting FFT data, floating-point values ranging from 0 to 1 are returned. Only the first half of the FFT is useful, so that's what BASS returns. For example with a 2048 sample FFT, it'll return 1024 values - the 1st value being the DC component, the 2nd the amplitude at 1/2048 of the channel's sample rate, then the amplitude at 2/2048, 3/2048, etc... A Hanning window is applied to the sample data to reduce leakage, unless the BASS_DATA_FFT_NOWINDOW flag is used.
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: BASS.DLL und BASS_ChannelGetData

  Alt 2. Jul 2005, 12:13
Zitat von Gandalfus:
es sind immer nur die hälfte der Sampels Sinnvoll.
512 ist grob geschätzt 1/4 von 2048.
Das bezieht sich auf die FFT. Das liegt im Wesen des FFT Algo's (die "nicht sinnvolle" Hälfte sind negative Frequenzen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#4

Re: BASS.DLL und BASS_ChannelGetData

  Alt 2. Jul 2005, 14:02
btw.
Was wird bei einem Ozilloscope überhaupt angezeigt? Bei einer normalen Visualisierung ja die Amplitude der einzelnen Sinusschwingungen aber was beim Ozilloscope?
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: BASS.DLL und BASS_ChannelGetData

  Alt 2. Jul 2005, 14:26
Hallo,
FFT steht für Fast Fourier Transformation. Die FFT zeigt das Frequenzsektrum eines Tones bzw des Zeitsignales. D.h. die FFT zeigt die einzelnen Frequenzen aus denen sich das Zeitsignal zusammensetzt. Ein Ozilloscope zeigt das Zeitsignal. Also die Amplitude zu einem Zeitpunkt t.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#6

Re: BASS.DLL und BASS_ChannelGetData

  Alt 4. Jul 2005, 13:28
ja aber die Amplitude von was?
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: BASS.DLL und BASS_ChannelGetData

  Alt 4. Jul 2005, 14:50
Zitat von Jens Schumann:
TWaveData = array[0..2047] of Cardinal;
Die BASS.DLL liefert dir keine Cardinals, sondern SmallInts . So, und zwar mit SmallInts habe ich es auch in meinem Player verwendet.
Da du Cardinals hast, stimmt zwar die Aussage mit Hi- und Loword, aber so kannst du direkt indiziert auf die beiden Kanäle zugreifen, und dein Array wird entsprechend kürzer, so dass die Zufallswerte am Ende wegfallen dürften .
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#8

Re: BASS.DLL und BASS_ChannelGetData

  Alt 4. Jul 2005, 19:28
Zitat von Gandalfus:
ja aber die Amplitude von was?
Die Amplitude des Zeitsignals
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#9

Re: BASS.DLL und BASS_ChannelGetData

  Alt 4. Jul 2005, 19:43
Zitat von dizzy:
Die BASS.DLL liefert dir keine Cardinals, sondern SmallInts . So, und zwar mit SmallInts habe ich es auch in meinem Player verwendet.
Da du Cardinals hast, stimmt zwar die Aussage mit Hi- und Loword, aber so kannst du direkt indiziert auf die beiden Kanäle zugreifen, und dein Array wird entsprechend kürzer, so dass die Zufallswerte am Ende wegfallen dürften .
Hallo dizzy,
die Definition habe ich aus den Beispielen zur BASS.DLL.
Type TWaveData = array [ 0..2047] of DWORD; Deshalb bin ich davon ausgegangen, dass ich 2048 gültige Werte für DWords (entspricht Cardinal) erhalte. Das macht 4096 SmallInts. D.h. mein Array wird größer. Wenn ich 512 DWord bekomme erhalte ich aber nur 1024 SmallInts. Die Beispiele suggerieren mir aber etwas anderes
I come from outer space to save the human race
  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 21:48 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