![]() |
Mehrere WAV aus Resource gleichzeitig abspielen
Hey,
ich plane ein Spiel zu programmieren. Dazu muss ich mehrere wav-Dateien, die in in einer Ressource geladen habe, abspielen können. Mit SndPlaySound funktioniert das auch soweit. Nur wenn ich diese gleichzeitig abspiele, wird das eins von beiden unterbrochen. Ich möchte keine Dateien auf der Platte schreiben müssen, sonst wär das mit der Resource ja völlig unnötig. Wie kann ich das realisieren? Lieben Dank! Danny |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
|
AW: Mehrere WAV aus Resource gleichzeitig abspielen
Und wie genau nützt mir das was?
Was genau mach ich mit der Bass.dll? :o |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
Hört sich so an als hättest du bisher nicht in die Beispiele oder Doku geschaut.
Ganz kurz: Du rufst BASS_StreamCreateFile auf um eine Datei oder einen Stream zu laden und spielst dann mit BASS_ChannelPlay ab. Das geht auch parallel mit mehreren Sounds. |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
Okay aber da muss ich doch die Bass.dll benutzen? Wie geht das?
Sorry aber ich bin damit nicht so vertraut^^ |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
Hat da wirklich keiner ne Ahnung?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, bass; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; strs: HStream; implementation {$R *.dfm} {$R fx.res} procedure TForm1.FormCreate(Sender: TObject); var rs: TResourceStream; begin rs:=TResourceStream.Create(hInstance,'intro','WAV' ); strs:=BASS_StreamCreateFile(false,rs.Memory,0,0,0) ; BASS_ChannelPlay(handle,false); rs.Free; end; end. |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
Doch schon, aber ich habe darauf gewartet, dass du etwas zeigst wie du etwas versucht hast. ;-)
Schau dir mal die Doku zu BASS_StreamCreateFile an: ![]() Speziell den ersten und vierten Parameter. Da sollte dir etwas auffallen. Erklärung zum vierten Parameter: Wenn du nur einen Pointer auf einen Speicherbereich übergibst, kann BASS anders als bei einer Datei nicht selbst feststellen wie lang dieser Speicherbereich ist. Außerdem fehlt die Fehlerauswertung. Dazu steht da auch ein Hinweis drin: Zitat:
|
AW: Mehrere WAV aus Resource gleichzeitig abspielen
procedure TForm1.FormCreate(Sender: TObject);
var rs: TResourceStream; begin rs:=TResourceStream.Create(hInstance,'intro','WAV' ); rs.Position:=0; strs:=BASS_StreamCreateFile(true,rs.Memory,0,rs.Si ze,0); BASS_ChannelPlay(handle,false); rs.Free; end; Sieht das so besser aus? |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
Auf den ersten Blick ja, aber du solltest noch den Rückgabewert prüfen und ggf. den Fehlercode abrufen, wenn es nicht geklappt hat.
Dann kommen wir zum nächsten Befehl. Aktuell übergibst du das Handle des Formulars an BASS_ChannelPlay. Das macht keinen Sinn, meinst du nicht auch? ![]() |
AW: Mehrere WAV aus Resource gleichzeitig abspielen
procedure TForm1.FormCreate(Sender: TObject);
var rs: TResourceStream; code: bool; begin rs:=TResourceStream.Create(hInstance,'intro','WAV' ); rs.Position:=0; strs:=BASS_StreamCreateFile(true,rs.Memory,0,rs.Si ze,0); //BASS_ErrorGetCode; code:=BASS_ChannelPlay(strs,false); showmessage(inttostr(integer(code))); rs.Free; end; Also würde das in etwa so aussehen? Wenn ich die Rückmeldung ausgebe, kommt 0 zurück. Scheint also alles in Ordnung zu sein? Höre aber trotzdem nichts...ich seh's nicht. :shock: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 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