AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Mehrere Sounds gleichzeitig (Verbesserungen gefragt)
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Sounds gleichzeitig (Verbesserungen gefragt)

Ein Thema von Dunkelbunt27 · begonnen am 13. Jul 2012
Antwort Antwort
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz