Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wave wiedergeben (https://www.delphipraxis.net/7260-wave-wiedergeben.html)

cchris 7. Aug 2003 12:41


Wave wiedergeben
 
Ich wollte ein rogramm schreiben, mit dem man verschiedene
Soundfiles ( *.wav ) auf Buttonklick wiedergeben kann, die man
vorher ausgewählt hat. Dazu verwendete ich folgenden code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.execute then try
                      DXwavelist1.Items[1].Wave.LoadFromFile(opendialog1.filename);
                      edit1.text:=opendialog1.FileName;
                      except
                      showmessage('Ungültiges Dateiformat!');
                      end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DXWaveList1.Items[1].play(false);
end;
Der Soundtrack den ich zur Entwurfszeit ausgewählt habe, wird ohne Probleme wiedergegeben. ( Auch meherere verschiedene übernander, da ich das ganze insgesamt 10 Mal vereinbart habe. ) Wenn ich jetzt eine Datei zur Laufzeit laden will ( Button1 ) wird zwar der Dateiname im editfeld angezeigt, d.h. für mich es trat beim loadfromfile kein Fehler auf, aber wenn ich den sound mit button2 wiedergeben will, wird immernoch der alte, zur Entwicklungszeit eingestellte Soundtrack wiedergegeben. Eine Methode Refresh oder Updat gibt es in der Hilfe zu DelphiX bei diesem Typ nicht. Ich verwende die TDXWaveList. Wenn irgendjemand eine andere Lösung dafür oder den Grund für das Problem kennt, wäre es nett wenn er mir antworten würde. Wichtig ist aber, das die Sounds übereinander wiedergegeben werden können, und auch wiedergegeben werden, wenn die Anwendung den Focus verliert. Die Sounds sollten wenigstens jeweils ein Minute lang sein können.

cu Chris :cat:

Alexander 7. Aug 2003 13:04

Re: Wave wiedergeben
 
Kenne mich mit der Komponente nicht aus...
Aber ich würde durch diese Zeile hier
Delphi-Quellcode:
DXWaveList1.Items[1].play(false);
schätzen, dass der so ne Art Playlist drinne hat, wenn du musst den richtigen ItemIndex (Items[hier muss der richtiger Index stehen]) mit angeben...

cchris 7. Aug 2003 14:27

Re: Wave wiedergeben
 
TDXWave List ist eine Liste von audio objekten. Ich hab sie verwendet,
da ich ja 10 verschiedene sounds haben will. jedes Item steht für ein Soundobjekt. Dieses Objekt heist TWavCollectionItem und hat die Methoden:

Play
Restore
Stop

Properties:

Frequency
Initialized (Read only )
Looped
Name
Pan
Volume
Wave

Methoden von TWave:

Assign
Clear
Create
Destroy
LoadFromFile
LoadFromStream
SaveToFile
SaveToStream
SetPCMFormat

Eigenschaften von TWave:

Data (Read only)
Format(Read only)
FormatSize
Size

Wenn ich die Methode Restore nach dem Laden verwende, kann ich einmal Laden und dann die geladene Datei abspielen. Aber wenn ich dann noch irgend eine Datei lade wird wieder die erste, die zur Entwurfszeit ausgewählt wurde wiedergegeben. Wenn ich nochmal lade wird die wiedergegeben, die ich als erste zur Laufzeit ausgewählt hab. Diese beiden Waves wechseln sich dann immer ab. ( Entwurfszeitwave und !. Runtimewave )

cu Chris

cchris 7. Aug 2003 14:28

Re: Wave wiedergeben
 
TDXWave List ist eine Liste von audio objekten. Ich hab sie verwendet,
da ich ja 10 verschiedene sounds haben will. jedes Item steht für ein Soundobjekt. Dieses Objekt heist TWavCollectionItem und hat die Methoden:

Play
Restore
Stop

Properties:

Frequency
Initialized (Read only )
Looped
Name
Pan
Volume
Wave

Methoden von TWave:

Assign
Clear
Create
Destroy
LoadFromFile
LoadFromStream
SaveToFile
SaveToStream
SetPCMFormat

Eigenschaften von TWave:

Data (Read only)
Format(Read only)
FormatSize
Size

Wenn ich die Methode Restore nach dem Laden verwende, kann ich einmal Laden und dann die geladene Datei abspielen. Aber wenn ich dann noch irgend eine Datei lade wird wieder die erste, die zur Entwurfszeit ausgewählt wurde wiedergegeben. Wenn ich nochmal lade wird die wiedergegeben, die ich als erste zur Laufzeit ausgewählt hab. Diese beiden Waves wechseln sich dann immer ab. ( Entwurfszeitwave und !. Runtimewave ) Der Parameter False bei play gibt nur an, das nicht gewartet werden soll, bis irgend alle andereren Sounds fertig gespielt haben.

cu Chris

-homer- 15. Aug 2003 14:47

Re: Wave wiedergeben
 
hi
ich wuerde an deinner stelle mitt dem mediaplayer die sounds einbinden mediaplayer

ich schreie nohmAL

S - tefano 15. Aug 2003 15:38

Re: Wave wiedergeben
 
Kannst ja mal zum Probieren gucken ob die "initialized"- Eigenschaft überhaupt true ist, bevor du abspielst.
Gibts vielleicht bei irgendeiner übergeordneten Klasse ne Methode "initialize" oder "load" oder so? Hab mich damit noch nich so richtig beschäftigt... hab die Suite auch nich.

Bis dann,

S - tefano

Dagon 15. Aug 2003 15:42

Re: Wave wiedergeben
 
du kannst mit delphix komponenten keinen sound aus einer datei laden!

DXwavelist1.Items[0].Wave.LoadFromFile(opendialog1.filename); funktionert nicht!

DSeven 16. Aug 2003 02:17

Re: Wave wiedergeben
 
Hallo

Wenn es für dich etwas umfangreicher sein kann köntest du dir folgenden Link anschauen: http://www.un4seen.com/

Dort findest du das Bass Sound System welches dir die möglichkeit bietet alle möglichen Sound Formate abzuspielen.

Bass selber wurde mit C++ geschrieben doch es gibt Delphi units die dir den zugriff auf die DLL'S erleichtern. Außerdem ist die Dokumentation sehr ausführlich.

cchris 18. Aug 2003 12:14

Re: Wave wiedergeben
 
@the_Master:
Doch es funzt. Ich mache es jetzt so, dass ich die Datei lade, die gesamte Liste nach C.\test.lst abspeichere und dann sofort neu lade.

cu Chris :hello:

cchris 7. Aug 2004 19:50

Re: Wave wiedergeben
 
Elegant ist es zwar nicht, aber darauf kommt es dort nicht an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz