Hallo Leute,
vorweg möchte ich sagen, dass ich für dieses Problem
nicht die Bass.dll verwenden möchte.
Was soll das Programm tun?
Es soll möglich sein auf bestimmte Ereignisse mit einem kurzen Sound (Dauer ca. 1s) zu reagieren. Das soll auch geschehen, wenn diese "Ereignisse" schnell hintereinander (vom User) ausgelöst werden.
Beispiel:
Stellt euch das in dem Beispiel einfach wie einen Glockenklang vor. Jedesmal, wenn man in das Edit-Feld des Programms ein Zeichen tippt macht es [KLING].
Also "H" [KLING] "a" [Kling] usw.
So hab ich das Problem gelöst:
Delphi-Quellcode:
uses
[...] mmsystem;
[...]
var
Form1 : TForm1;
Wechsel : boolean = false;
[...]
//Bei Swiss-Delphi zu finden
procedure SendMCICommand(Cmd: string); //Erste Möglichkeit einen Sound abzuspielen
var
RetVal: Integer;
ErrMsg: array[0..254] of char;
begin
RetVal := mciSendString(PChar(Cmd), nil, 0, 0);
if RetVal <> 0 then
begin
mciGetErrorString(RetVal, ErrMsg, 255);
MessageDlg(StrPas(ErrMsg), mtError, [mbOK], 0);
end;
end;
procedure SoundAbspielen1;
begin
SendMCICommand('open waveaudio shareable');
SendMCICommand('play "Sound1.wav"');
SendMCICommand('close waveaudio');
end;
procedure SoundAbspielen2;
begin
PlaySound('Sound1.wav', 0, snd_ASync); //Zweite Möglichkeit einen Sound abzuspielen
end;
//Ereignis, dass den Sound auslöst:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//Jedesmal wird gewechselt, mit welcher Variante der Sound abgespielt wird
if Wechsel = True then
begin
SoundAbspielen1;
Wechsel := False;
end else
begin
SoundAbspielen2;
Wechsel := True;
end;
end;
Ich weiß nicht genau aus welchen Gründen es funktioniert, wenn man zwei verschiedene "Sound-Abspiel-Möglichkeiten" verwendet, ich weiß nur, dass es ganz gut klappt.
(Vielleicht hat ja jemand eine nette Erklärung für mich )
Vielleicht hilft das ja auch Leuten mit dem gleichen Problem
Hat jemand Vorschläge wie man das besser lösen kann und/oder noch weitere Möglichkeiten Sounds abzuspielen, die ich in das Schema integrieren kann um noch häufigere Wechsel im verschiedenen Sound-Abspielen zu ermöglichen!?
Danke für eure Antworten