Einzelnen Beitrag anzeigen

Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

Mehrere Sounds gleichzeitig (Verbesserungen gefragt)

  Alt 13. Jul 2012, 14:55
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
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat