Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi BASS_ChannelIsActive Problem (https://www.delphipraxis.net/135837-bass_channelisactive-problem.html)

Chasmo90 18. Jun 2009 16:04


BASS_ChannelIsActive Problem
 
Also ich hab seit ner halben Stunde einen merkwürdigen Fehler, den ich mir einfach nicht erklären kann :gruebel: :cyclops:
Davor funktionierte alles einwandfrei mit der Klasse, will ich jetzt jedoch die FFT Daten auslesen, hängt sich mein Programm auf.
Die Stelle wo das passiert habe ich auch herausbekommen und ist umso verwunderlicher^^

Delphi-Quellcode:

Type TFFTData = array [0..4096] of Single;

function GetFFT:TFFTData;
var FFT:TFFTData;
begin
if BASS_ChannelIsActive(fMainStream) = BASS_ACTIVE_PLAYING then
  begin
    BASS_ChannelGetData(FMainStream, @FFT, BASS_DATA_FFT8192);
    result := FFT;
  end;
end;
Also das normale abspielen klappt. schalte ich dann die abfrage für FFT dazu, hängt er sich auf!
Nehme ich die Abfrage, ob FMainStream aktiv sei, raus, so hängt er sich nicht auf, FFTDaten bleiben aber alle 0 :gruebel:

Hier dann nochmal die Abspielfunktion...hoffe mir kann jemand helfen, da ich noch nie Probleme hatte die Daten auszulesen, ärgert es mich jetzt umso mehr :roll:
könnte das vllt an den Flags liegen?
Danke schonmal

Delphi-Quellcode:
procedure Play(aAudioFile : TAudioFile);
begin
  if aAudioFile <> NIL then
  begin
    StopAndFree;
    FMainAudioFile.GetInformations(aAudioFile.MP3Tag.Pfad);
    FMainStream := BASS_StreamCreateFile(FALSE, PChar(aAudioFile.MP3Tag.Pfad), 0, 0, BASS_SAMPLE_FX or BASS_SAMPLE_LOOP);
       if (FMainStream = 0) then
        FMainStream := BASS_MusicLoad(FALSE, PChar(aAudioFile.MP3Tag.Pfad), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_RAMP or BASS_SAMPLE_FX,0);
       if FMainStream = 0 then
        FMainStream := BASS_MusicLoad(FALSE, PChar(aAudioFile.MP3Tag.Pfad), 0, 0, BASS_MUSIC_RAMP OR BASS_MUSIC_PRESCAN ,0);
    BASS_ChannelPlay(fMainStream , true);
       if fMainstream <> 0 then
         begin
          if assigned(fOnPlay) then fOnPlay(Self);
          if assigned(fOnChange) then fOnChange(Self);
         end;
  end;
end;

Chasmo90 19. Jun 2009 19:02

Re: BASS_ChannelIsActive Problem
 
oh man hab den Fehler gerade selber gefunden :)
man darf den Channel FMainStream keiner Klasse in die PrvateDeklaration geben, sondern muss in global setzen! Jetzt funktioniert wieder alles :mrgreen:
lg und trotzdem danke fürs grübeln^^


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