also ich arbeite mit der bass.dll und will einen Musikplayer erstellen. Derzeit arbeite ich an einem Autocrossfading. Dazu will ich meine Play Procedur erweitern von:
Delphi-Quellcode:
procedure TForm1.Play (weiter: Boolean);
var f: PChar;
len: Integer;
time: Tdatetime;
begin
try
if weiter then
begin
bass_channelstop(p);
f := PChar(list[pos].datei);
p := BASS_StreamCreateFile(False, f, 0, 0, 0);
if pos >= 0 then
if not BASS_ChannelPlay(p, False) then
Error('Error playing stream!');
position.Max := bass_channelGetLength(p);
end
else
begin
bass_channelstop(p);
f := PChar(list[pos].datei);
p := BASS_StreamCreateFile(False, f, 0, 0, 0);
if pos >= 0 then
if not BASS_ChannelPlay(p, False) then
Error('Error playing stream!');
position.Max := bass_channelGetLength(p);
end;
except
end;
end;
Um jetzt das autocrossfading zu realisieren will ich diese Procedur so erweitern:
Delphi-Quellcode:
procedure TForm1.Play (weiter: Boolean; ch: HSTREAM);
var f: PChar;
len: Integer;
time: Tdatetime;
begin
try
if weiter then
begin
bass_channelstop(ch);
// Play the stream (continuing from current position)
f := PChar(list[pos].datei);
ch := BASS_StreamCreateFile(False, f, 0, 0, 0);
if pos >= 0 then
if not BASS_ChannelPlay(ch, False) then
Error('Error playing stream!');
position.Max := bass_channelGetLength(ch);
end
else
begin
bass_channelstop(ch);
f := PChar(list[pos].datei);
ch := BASS_StreamCreateFile(False, f, 0, 0, 0);
if pos >= 0 then
if not BASS_ChannelPlay(ch, False) then
Error('Error playing stream!');
position.Max := bass_channelGetLength(ch);
end;
except
end;
end;
so wenn ich das jetzt mit
form1.play(true, p);
aufrufe wird der Track der gerade abgespielt wird nicht angehalten!
Wieso?
//EDIT: CODE GEKÜRZT