AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi mehrere Sounds hinteinander abspielen ohne Anwendung stoppen
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Sounds hinteinander abspielen ohne Anwendung stoppen

Ein Thema von Mazel · begonnen am 12. Jun 2006 · letzter Beitrag vom 12. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

mehrere Sounds hinteinander abspielen ohne Anwendung stoppen

  Alt 12. Jun 2006, 13:32
Hallo,

ich möchte in meinem Programm kleine Sounds abspielen und zwar hintereinander ohne das die Anwedung angehalten wird, wie es zum Beispiel bei SndPlaySound() der Fall ist, wenn ich als Flag SND_SYNC verwende.
Delphi-Quellcode:
SndPlaySound(PChar('Sounds\S1.wav'), SND_SYNC);
SndPlaySound(PChar('Sounds\S2.wav'), SND_SYNC);
Nehme ich aber als Flag SND_ASYNC, wird nur der letze Sound abespielt. Wenn ich also 5 Sounds abspsielen will, die unterschiedliche Länge haben (nicht länger als 3 Sekunden), dann wird immer nur der letzte abgespielt.

Gibt es da eine Lösung? Ich möchte keine Fremdkomponente verwenden, da ich denke dass es eine Lösung gibt, nur leider komm ich nicht drauf.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
JackZero
(Gast)

n/a Beiträge
 
#2

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:35
mmmhhh Denke mal du musst so ne art Loop reinmachen Loop (wiederholen) damit du Endloschleife bekommst musst mal abchecken muss gehen
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:38
Hintereinander? Du solltest ja irgendwie mitkriegen können, wann der eine Sound zuende ist, dann schiebst du den nächsten nach....

@JackZero: Glaube nicht, dass er das machen will

EDIT: Ne schnelle Lösung: In nem Thread synchron abspielen!
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#4

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:41
Hi,

@JackZero: Ich weis nicht was du mit Loop meinste? Eine "For-Schleife" oder doch die Soundwiederholung? Wenn du das letztere meinst dann nein.

Wenn ich das in eine For-Schleife packe, geht das auch nicht, da die Schleife viel zu schnell ist.

@DGL-luke: Mit welcher Methode kann ich herausbekommen, wann der Sound zuende ist?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:43
Das weiß ich nicht... aber wie gesagt, in einem thread synchron müsste funktionieren.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:44
Also mit Threads hab ich nicht viel Erfahrung. Kannst du mir sagen wie ich das am besten machen kann?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:49
Du erstellst ein neues Thread-Objekt (Datei->Neu->Delphi-Projekte->Thread-Objekt oder so ähnlich), schreibst in die Execute-Methode deine Aufrufe.

Im Hauptprogramm erzeugst du den Thread dann und startest ihn, entweder indem du bei createsuspended false angibst oder indem du .Resume aufrufst.

EDIT: hab das mal schnell gemacht:
Delphi-Quellcode:
unit UPlaySoundThread;

interface

uses
  Classes,MMSystem;

type
  TPlaySoundThread = class(TThread)
  private
    { Private-Deklarationen }
  protected
    procedure Execute; override;
  end;

implementation

procedure TPlaySoundThread.Execute;
begin
  SndPlaySound(PChar('Sounds\S1.wav'), SND_SYNC);
  SndPlaySound(PChar('Sounds\S2.wav'), SND_SYNC);
end;
Aufruf:
Delphi-Quellcode:
var sndThread: TPlaySoundThread;
begin
sndthread := TPlaySoundThread.Execute(false);
end;
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#8

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 13:58
Hi,

danke für den Code. Was heißt das jetzt was da steht? Läuft der Thread parallel ab? Wenn ja wird meine Anwendung nicht beeinflust?

Edit: Hab das eben ausprobiert, die Form hält trotzdem an.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 14:16
Die VCL startet damit für dich einen neuen Thread, ja, der im Prinzip vom Mainthread unabhängig läuft.

(Wenn du allerdings selbstständig Execute aufrufst, läuft es im Kontext des Mainthreads )

Hmm... das kann eigentlich nicht sein. Allerdings habe ich gerade das selbe Phänomen in einer Anwendung von mir.

Ich werde das ganze mal auf Luckies NonVCL-Threading umstellen und dann sehen, ob sich was ändert.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#10

Re: mehrere Sounds hinteinander abspielen ohne Anwendung sto

  Alt 12. Jun 2006, 14:29
Hallo,

Zuerst: Es ist besser, PlaySound anstatt von SndPlaySound zu verwenden. Wenn du die Länge des Sounds kennst, kannst du es mit
Delphi-Quellcode:
PlaySound('S1.wav', 0, SND_ASYNC or SND_FILENAME);
Delay(3000);
PlaySound('S2.wav', 0, SND_ASYNC or SND_FILENAME);
probieren, wobei Delay die Prozedur von negaH aus der CodeLib ist. So wird das Programm nicht angehalten.

[edit]Habe es nicht getestet, aber ich mache es meistens mit einem Timer (Interval = 100), den ich zum Abspielen aktiviere. Im onTimer deaktiviert er sich selbst und die Zeilen oben werden ausgeführt. Das sollte das Programm nicht aufhängen.[/edit]

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:27 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