![]() |
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: |
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: |
Re: LoopFunktion
Auch, aber mir geht es erst mal darum: Ich spiele ein Lied ab, wenn es fertig abgespielt wurde wird es wiederholt.
:xmas: |
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.
|
Re: LoopFunktion
@Luckie: schon klar, nur wie finde ich es heraus, wann es fertig abgespielt ist?
|
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!!! |
Re: LoopFunktion
Läuft nicht ...
|
Re: LoopFunktion
Zitat:
Evtl. solltest du auch mal den entsprechenden Code zeigen :roll: Greetz alcaeus |
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] |
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" :| |
Re: LoopFunktion
Ni Nils_13,
was kommt denn bei dieser Abfrage raus?
Delphi-Quellcode:
du solltest mal ueberlegen anstatt immer nur Copy'n'Waste zu betreiben :roll:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
Greetz alcaeus [add]wieder schneller :tongue:[/add] |
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...
|
Re: LoopFunktion
wenn ich noch then hinzufüge läufts auch nicht :gruebel:
Delphi-Quellcode:
if BASS_ChannelIsActive(Channel) then BASS_ACTIVE_PLAYING;
|
Re: LoopFunktion
Auszug aus Bass.pas (VERSION2.0):
Delphi-Quellcode:
Meine Überprüfung läuft so:
// 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';
Delphi-Quellcode:
MFG Alex
if BASS_ChannelIsActive(channel) = BASS_ACTIVE_STOPPED then
begin //MACH WAS Exit; end; PS: Falsche Bass.pas??? |
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:
Greetz
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
ShowMessage('Playing'); alcaeus |
Re: LoopFunktion
Hi Nils
Ein interessanter Ansatz für deine Probleme findet sich hier: ![]() MfG GM |
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; |
Re: LoopFunktion
Also...dieser Code
Delphi-Quellcode:
sagt dir ob gerade was abgespielt wird.
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then
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 |
Re: LoopFunktion
:| :gruebel: Ich hab einen Timer mit dem Interval '1', in dem Timer steht:
Delphi-Quellcode:
Es läuft nicht :pale:
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then BASS_StreamPlay(Channel, False, 0);
|
Re: LoopFunktion
In dem RenderTimer hab ichs eingebaut:
Delphi-Quellcode:
Wieso kam vorher ein doppelpost :gruebel:
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; |
Re: LoopFunktion
Hi Nils,
Zitat:
Und erklaer mir mal warum dein Code funktionieren sollte?
Delphi-Quellcode:
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?
if BASS_ChannelIsActive(Channel) = BASS_ACTIVE_PLAYING then BASS_StreamPlay(Channel, False, 0);
Greetz alcaeus |
Re: LoopFunktion
Oh :oops:
Danke jetzt läufts! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 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