![]() |
BASS.DLL und BASS_ChannelGetData
Liste der Anhänge anzeigen (Anzahl: 1)
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:
In der BASS Hilfe steht, dass der 3. Parameter ist Anzahl der Sample angibt, wenn
TWaveData = array[0..2047] of Cardinal;
function TJsMP3Player.WaveData: TWaveData; begin BASS_ChannelGetData(FChannel,@Result,2048); end; 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? |
Re: BASS.DLL und BASS_ChannelGetData
es sind immer nur die hälfte der Sampels Sinnvoll.
Zitat:
|
Re: BASS.DLL und BASS_ChannelGetData
Zitat:
Das bezieht sich auf die FFT. Das liegt im Wesen des FFT Algo's (die "nicht sinnvolle" Hälfte sind negative Frequenzen) |
Re: BASS.DLL und BASS_ChannelGetData
btw.
Was wird bei einem Ozilloscope überhaupt angezeigt? Bei einer normalen Visualisierung ja die Amplitude der einzelnen Sinusschwingungen aber was beim Ozilloscope? |
Re: BASS.DLL und BASS_ChannelGetData
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. |
Re: BASS.DLL und BASS_ChannelGetData
ja aber die Amplitude von was?
|
Re: BASS.DLL und BASS_ChannelGetData
Zitat:
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 :). |
Re: BASS.DLL und BASS_ChannelGetData
Zitat:
|
Re: BASS.DLL und BASS_ChannelGetData
Zitat:
die Definition habe ich aus den Beispielen zur BASS.DLL.
Delphi-Quellcode:
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 :freak:
Type TWaveData = array [ 0..2047] of DWORD;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz