Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bass_ChannelGetData funktioniert liefert keine Daten (https://www.delphipraxis.net/144476-bass_channelgetdata-funktioniert-liefert-keine-daten.html)

Neutral General 8. Dez 2009 20:45


Bass_ChannelGetData funktioniert liefert keine Daten
 
Hallo,

Ich habe gerade ein ziemlich einfachen Code, der trotzdem nicht klappt. Oder vielleicht genau deswegen :stupid:

Delphi-Quellcode:
var
  samp: HSAMPLE;
  chan: HCHANNEL;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BASS_Init(-1,44100,0,Handle,nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
var AFile: PAnsiChar;
begin
  AFile := 'C:\Test.mp3';
  samp := BASS_SampleLoad(false,AFile,0,0,3,0);
  chan := BASS_SampleGetChannel(samp,true);
  BASS_ChannelPlay(chan,false);
end;

procedure TForm1.Button2Click(Sender: TObject);
var X: Array[0..2047] of DWORD;
begin
  FillChar(X[0],Length(X)*SizeOf(DWORD),0);
  BASS_ChannelGetData(chan, @X[0], 2048);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BASS_SampleFree(samp);
  BASS_Free;
end;
Also die MP3 wird abgespielt aber mein Array "X" ist nach BASS_ChannelGetData immernoch leer... Weiß nicht was daran falsch sein soll :(

Gruß
Neutral General

Mithrandir 9. Dez 2009 08:57

Re: Bass_ChannelGetData funktioniert liefert keine Daten
 
Meine Deklaration sieht so aus:

Delphi-Quellcode:
type
TFFTArray = array[0..127] of Single;

function TMediaClass.GetFFTData: TFFTArray;
var
  fft      : TFFTArray; // get the FFT data
  i: Integer;
const
  BANDS      = 28;
  SPECHEIGHT = 25;
  SPECWIDTH = 100;
begin
  if BASS_ChannelIsActive(fCurrentStream) <> BASS_ACTIVE_STOPPED then
  begin
    BASS_ChannelGetData(fCurrentStream, @fft, BASS_DATA_FFT256);
    Result := fft;
  end
  else
    for I := 0 to Length(fft) - 1 do
      fft[i] := 0.1;
end;
Ansonsten prüf mal den Rückgabewert von BASS_ChannelGetData. Wenn der -1 ist, solltest du mal gucken, was BASS_ErrorGetCode zurückwirft.

Neutral General 9. Dez 2009 09:54

Re: Bass_ChannelGetData funktioniert liefert keine Daten
 
Hi,

Es wäre ja interessant zu wissen, ob fCurrentStream bei dir ein HSAMPLE oder ein HSTREAM ist. Das würde evtl. auch noch einiges erklären. Aber wenn das nur mit HSTREAMS geht, wie lade ich dann am besten ein Lied?

Mithrandir 9. Dez 2009 11:31

Re: Bass_ChannelGetData funktioniert liefert keine Daten
 
Zitat:

Zitat von Neutral General
Aber wenn das nur mit HSTREAMS geht, wie lade ich dann am besten ein Lied?

Über BASS_StreamCreateFile. ;)

//Edit: Siehe auch Sourcen von SmallTune, konkret die Datei dgstMediaClass.pas


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 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