Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi LoopFunktion (https://www.delphipraxis.net/35615-loopfunktion.html)

Nils_13 9. Dez 2004 18:52


LoopFunktion
 
hi,

wisst ihr wie ich mit der BASS.dll eine Loop Funktion progge?
Alle Tutoruials, die ich biss jetzt gemacht habe haben nichts gebracht (immer lief etwas nicht)!
:pale:

Niels 9. Dez 2004 19:26

Re: LoopFunktion
 
Verstehst du unter Loop jetzt, dass ein Lied / die ganze Playlist wiederholt wird? Wenn ja dann kannst du das mit ner schleife lösen. Den Play-Befehl der bass.dll kennst du ja.

MfG Niels :wink:

Nils_13 10. Dez 2004 13:38

Re: LoopFunktion
 
Auch, aber mir geht es erst mal darum: Ich spiele ein Lied ab, wenn es fertig abgespielt wurde wird es wiederholt.

:xmas:

Luckie 10. Dez 2004 13:43

Re: LoopFunktion
 
Dann spiel es eben noch mal ab. Sprich ruf die Funktion zum Abspeieln des Liedes mit dem gleichen Lied noch mal auf, wenn es fertig ist.

Nils_13 10. Dez 2004 13:46

Re: LoopFunktion
 
@Luckie: schon klar, nur wie finde ich es heraus, wann es fertig abgespielt ist?

Alex_ITA01 10. Dez 2004 13:50

Re: LoopFunktion
 
da gibt es Konstanten für:

Beispiel für Stop...
Delphi-Quellcode:
BASS_ChannelIsActive(Channel) = BASS_ACTIVE_STOPPED

MFG Alex

PS: Frag BASS_ACTIVE_PLAYING ab!!!

Nils_13 10. Dez 2004 14:02

Re: LoopFunktion
 
Läuft nicht ...

alcaeus 10. Dez 2004 14:04

Re: LoopFunktion
 
Zitat:

Zitat von Nils_13
Läuft nicht ...

Du koenntest zur Abwechslung mal sagen, warum es nicht laeuft. Passiert nichts? Gibts Fehlermeldungen?
Evtl. solltest du auch mal den entsprechenden Code zeigen :roll:

Greetz
alcaeus

Alex_ITA01 10. Dez 2004 14:05

Re: LoopFunktion
 
Läuft nicht?
Was läuft nicht? Der Ketchup von der Wurst? :-)

Du musst uns schonmal ein paar mehr Daten (Source) geben um deinen Fehler suchen zu können...

MFG Alex

[edit] Mist zu spät @alcaeus :-) [/edit]

Nils_13 10. Dez 2004 14:09

Re: LoopFunktion
 
Der Debugger findet bei dem Code von Alex_ITA01 einen Fehler
1. := erwartet statt =
2. wenn ich es abändere sagt der debugger: "Der linken Seite kann nichts zugewiesen werden"

:|

alcaeus 10. Dez 2004 14:11

Re: LoopFunktion
 
Ni Nils_13,

was kommt denn bei dieser Abfrage raus?
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
du solltest mal ueberlegen anstatt immer nur Copy'n'Waste zu betreiben :roll:

Greetz
alcaeus

[add]wieder schneller :tongue:[/add]

Alex_ITA01 10. Dez 2004 14:12

Re: LoopFunktion
 
der linken Seite kann ja auch nichts zugewiesen werden. Das ist doch eine Funktion die dir ein bestimmten Wert zurück gibt, und mit diesem Wert kannst du herausfinden, ob Sound abgespielt wird,gestoppt wurde oder Pause ist...

Nils_13 10. Dez 2004 14:13

Re: LoopFunktion
 
wenn ich noch then hinzufüge läufts auch nicht :gruebel:
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) then BASS_ACTIVE_PLAYING;

Alex_ITA01 10. Dez 2004 14:15

Re: LoopFunktion
 
Auszug aus Bass.pas (VERSION2.0):

Delphi-Quellcode:
  // BASS_ChannelIsActive return values
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED = 3;

function BASS_ChannelIsActive(handle: DWORD): DWORD; stdcall;external 'bass.dll' name 'BASS_ChannelIsActive';
Meine Überprüfung läuft so:

Delphi-Quellcode:
 if BASS_ChannelIsActive(channel) = BASS_ACTIVE_STOPPED then
  begin
    //MACH WAS
    Exit;
  end;
MFG Alex

PS: Falsche Bass.pas???

alcaeus 10. Dez 2004 14:15

Re: LoopFunktion
 
:roll: :wall:
Sag mal, verstehst du wie eine if-Abfrage funktioniert?
Deine Funktion heisst "BASS_ChannelIsActive(Channel)"
Du willst pruefen ob das Ergebnis "BASS_ACTIVE_PLAYING" ist
Also:
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
  ShowMessage('Playing');
Greetz
alcaeus

gmarts 10. Dez 2004 14:26

Re: LoopFunktion
 
Hi Nils
Ein interessanter Ansatz für deine Probleme findet sich hier: Klick :-D (Wink mit Zaunpfahl)

MfG GM

Nils_13 10. Dez 2004 14:38

Re: LoopFunktion
 
Hier habt ihr den Code:
Delphi-Quellcode:
procedure TFormPlayer.Image1Click(Sender: TObject);
const BASS_ACTIVE_STOPPED = 0;
       BASS_ACTIVE_PLAYING = 1;
       BASS_ACTIVE_STALLED = 2;
       BASS_ACTIVE_PAUSED = 3;
begin
 if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
  BASS_Start();
  BASS_Start();
  BASS_ChannelPause(channel);
  position := 0;
  op1.Title := 'Open Files';
    if not op1.Execute then exit;
    Channel := BASS_StreamCreateFile(FALSE, PChar(op1.FileName), 0, 0, 0);
    BASS_StreamPlay(Channel, False, 0);
    Image1.Enabled:= true;
    p1.Visible:= false;
end;

alcaeus 10. Dez 2004 14:45

Re: LoopFunktion
 
Also...dieser Code
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
sagt dir ob gerade was abgespielt wird.
Du musst den Code in einer Schleife durchprobieren bzw. in einem Timer-Event. Sobalt die Bedingung nicht mehr zutrifft, musst du das Lied nochmals starten.
Ueberleg doch einfach mal wie du was programmieren musst, anstatt dir von uns den Code vorkauen zu lassen...

Greetz
alcaeus

Nils_13 10. Dez 2004 14:49

Re: LoopFunktion
 
:| :gruebel: Ich hab einen Timer mit dem Interval '1', in dem Timer steht:
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then BASS_StreamPlay(Channel, False, 0);
Es läuft nicht :pale:

Nils_13 10. Dez 2004 14:59

Re: LoopFunktion
 
In dem RenderTimer hab ichs eingebaut:
Delphi-Quellcode:
procedure TFormPlayer.TimerRenderTimer(Sender: TObject);
 var FFTFata : TFFTData; WaveData : TWaveData;
begin
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then BASS_StreamPlay(Channel, False, 0);
TimerRender.Interval:= Spin.Value;

...

end;
Wieso kam vorher ein doppelpost :gruebel:

alcaeus 10. Dez 2004 15:07

Re: LoopFunktion
 
Hi Nils,
Zitat:

Zitat von Nils_13
Ich hab einen Timer mit dem Interval '1', in dem Timer steht:

Das ist vollkommen ueberfluessig. Du musst nicht jede Millisekunde ueberpruefen, ob das Lied noch laeuft. Alle 250 oder 500 ms sollte reichen.

Und erklaer mir mal warum dein Code funktionieren sollte?
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then BASS_StreamPlay(Channel, False, 0);
Wenn das Lied noch abgespielt wird, so wird StreamPlay aufgerufen. Ich kenn mich zwar nicht ganz gut mit der BASS.dll aus, aber sollte die Play-funktion nicht aufgerufen werden, sobald das Lied nicht mehr abgespielt wird?

Greetz
alcaeus

Nils_13 10. Dez 2004 15:09

Re: LoopFunktion
 
Oh :oops:

Danke jetzt läufts!


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