Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PlaySound mit Polyphonie (https://www.delphipraxis.net/43239-playsound-mit-polyphonie.html)

noch_ein_hannes 31. Mär 2005 09:30


PlaySound mit Polyphonie
 
Hi,

mich quält gerade folgendes Problem:
Ich habe z.B.: einen Timer, der permanent einen Sound abspielen soll ... jetzt bitte nicht nach dem Sinn fragen - es geht eher allgemein ums Verständnis. :-)

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  PlaySound(nil,0,0);
  PlaySound('shot', hInstance, SND_RESOURCE or SND_ASYNC);
end;
Wenn der Timeraufruf kürzer als die Länge des Sounds ist, wird der Sound abgeschnitten. Ist mir ja irgendwie auch klar ...
Ich würde es aber gerne haben, dass ich mehrere (gleiche und/oder verschiedene) Sounds abspielen kann. Wahrscheinlich muss ich jedesmal ein neues Handle dafür definieren, aber wie?

sonnige Grüsse und besten Dank,
Hannes

freak4fun 31. Mär 2005 09:36

Re: PlaySound mit Polyphonie
 
Ich kenn mich damit nicht aus, aber kannst du im Timer nicht eine andere Prozedur starten, die dann in einen eigenen Thread läuft und somit vom Timer unabhängig ist? Und dann für jeden Sound ein Thread... Aber ich denke wahrscheinlich wieder zu kompliziert.

MfG
freak

noch_ein_hannes 31. Mär 2005 10:02

Re: PlaySound mit Polyphonie
 
Hmm, das klingt wirklich kompliziert. Ich schätze mal, dass es bestimmt ne einfachere Möglichkeit gibt. Wenn ich z.B. in Javascript ein neues Fenster mit open() erzeuge, dann bekommt es automatisch ein 'freies' Handle zugewiesen. So etwas sollte es doch auch in Delphi geben - oder liege ich da jetzt absolut falsch?

Muetze1 31. Mär 2005 10:57

Re: PlaySound mit Polyphonie
 
Moin!

PlaySound() ist ein kleiner Hilfsschnipsel der grossen WinAPI und hat nix mit dem MultimediaSystem zu tun. PlaySound kann IMHO nur einen Sound gleichzeitig abspielen. Wenn du mehrere gleichzeitig abspielen willst, dann geh weg von dieser Billigschnittstelle und beschäftige dich direkt mit der richtigen API: MultiMedia API von Windows...

Du rufst ja 2x PlaySound() in deinem Timer auf. Der erste Aufruf stoppt auch alle gerade aktiven Sounds...

MfG
Muetze1

noch_ein_hannes 31. Mär 2005 11:19

Re: PlaySound mit Polyphonie
 
Gibt es denn in der richtigen MultiMedia API eine einfache Möglichkeit á la PlaySound()?

atreju2oo0 31. Mär 2005 11:36

Re: PlaySound mit Polyphonie
 
Natürlich nicht... ;)
Aber es ist eigentlich nicht schwer.
Ich habe das mit der Bass.dll gemacht!
Kannste Dir hier runterladen!
Da ist dann auch nen Beispiel mit drin wo alles funktioniert und
Du schon mehrere Sounds abspielen kannst!

noch_ein_hannes 31. Mär 2005 11:54

Re: PlaySound mit Polyphonie
 
Klar mit der bass.dll könnte ich es machen. Aber ich möchte das Prog so klein wie nur möglich bekommen ... und ohne extra dll und so ...

Über ein anschauliches Beispiel mit der API würde ich mich freuen!

noch_ein_hannes 12. Apr 2005 13:48

Re: PlaySound mit Polyphonie
 
Hmmm, gibt es da wirklich keine "kleine" Lösung?

jim_raynor 12. Apr 2005 13:54

Re: PlaySound mit Polyphonie
 
Ich glaube das kannst du über Bei Google suchenmciSendCommand machen


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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