![]() |
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:
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.
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; cu Chris :cat: |
Re: Wave wiedergeben
Kenne mich mit der Komponente nicht aus...
Aber ich würde durch diese Zeile hier
Delphi-Quellcode:
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...
DXWaveList1.Items[1].play(false);
|
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 |
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 |
Re: Wave wiedergeben
hi
ich wuerde an deinner stelle mitt dem mediaplayer die sounds einbinden mediaplayer ich schreie nohmAL |
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 |
Re: Wave wiedergeben
du kannst mit delphix komponenten keinen sound aus einer datei laden!
DXwavelist1.Items[0].Wave.LoadFromFile(opendialog1.filename); funktionert nicht! |
Re: Wave wiedergeben
Hallo
Wenn es für dich etwas umfangreicher sein kann köntest du dir folgenden Link anschauen: ![]() 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. |
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: |
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. |
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