// So kann man
Wav-Dateien überlappend abspielen. Bedingung ist, dass der Titel,
// der überlappt werden soll, länger ist, als die Überlappungszeit
(logisch).
// Getestet mit D4 unter XP
uses mmsytem;
const
z: word = 0;
ueberlappen: integer = 3500; // 3,5 Sekunden
function SoundPlay(datei, alias: string): integer;
var
r: array[0..29] of char;
begin
MCISendString(pchar('open ' + datei + ' type waveaudio alias ' + alias),
nil, 0, 0);
MCISendString(pchar('set ' + alias + ' time format milliseconds'), nil, 0, 0);
result := MCISendString(pchar('status ' + alias + ' length'), r, 30, 0);
if result = 0 then result := strtoint(r)
else result := -1;
inc(z);
MCISendString(pchar('play ' + alias), nil, 0, 0);
end;
// Beispielaufruf für zwei Waves
procedure TForm1.Button5Click(Sender: TObject);
var
zeit: cardinal;
msek: integer;
begin
msek := SoundPlay('C:\Funny\FR65E2.WAV', 'Titel' + inttostr(z));
if msek > ueberlappen then begin
zeit := gettickcount - ueberlappen + msek;
repeat
application.processmessages;
until (gettickcount >= zeit) or Application.terminated;
SoundPlay('C:\Funny\KAHNSN.WAV', 'Titel' + inttostr(z));
end;
end;
|