Also meine Idee war, dass ich dann zwei Streams laufen hab und der eine dann aufhöhrt und der andere weiterläuft aber soweit bin ich noch gar nicht. Ich will, wenn ein Track abgespielt wird und ein bestimmter Zeitpunkt erreicht ist, dass schon der nächste Trackgestartet wird Crossfade halt. Aber um den nächsten zustarten will ich meine Play procedur mit einem anderen Stream ausführen und daher diese erweitern. Ich habe das auch getan aber wie gesagt wird beim einfachen Abspielen der Tracks, wenn man zum Beispiel einfach nur auf Playklickt und einen anderen Track abspielen möchte der vorhergehende nicht angehalten, was aber normalerweise mit dem erneuten aufruf der play geschehen müsste. Dazu hier mal mein Timer ereignis!
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var i: Integer;
f: PChar;
begin
try
tpassd := tpassd + 1;
position.Position := bass_channelgetposition(p);
if bass_channelgetposition(p) = bass_channelgetlength(p) then
play(true);
remain.Caption := inttostr (currentl div 1000 - tpassd);
//-----------Crossfader------------------------//
if settings.CheckBox1.Checked then
begin
if ((currentl div 1000) - tpassd) <= strtoint(settings.LabeledEdit1.Text) then
begin
i := 100 div strtoint(settings.LabeledEdit1.text);
fade1 := fade1+i;
bass_channelsetattributes(p2, 0, fade1, -101);
end;
if ((currentl div 1000) - tpassd) = strtoint(settings.LabeledEdit1.Text) then
begin
play (true, p2);
end;
end;
//--------------------------------------------// }
except
end;
end;
Bei diesem Timer ereignis und der Erweiterten Play Procedur ensteht allerdings ein neues Problem. Aus irgendeinem Grund wird jetzt Bei jedem Ontimer also in diesem Falle jede Sekunde der nächste Track in der Playlist geöffnet und abgespielt nach 10 sek laufen also 10 Tracks übernander. Mit der alten Procedur trat das Problem nicht auf und alles Funktionierte wie es sollte.
Hier mal das komplette Program: