Hi,
tut mir Leid dass ich schon wieder einen Thread bezüglich WAVE Dateien starte, aber ich konnte nach knapp 30 minütigem Durchstöbern des Archivs kein entsprechendes Thema finden das mir weiterhilft.
Ich hatte anfangs für mein Projekt einige WAVE Dateien im Projekt Ordner rumliegen, widergegeben habe ich diese wie folgt:
Delphi-Quellcode:
mciSendString(PChar('open waveaudio shareable'), nil, 0, 0);
mciSendString(PChar('play "./Sound/' + FileName + '"'), nil, 0, 0);
mciSendString(PChar('close waveaudio'), nil, 0, 0);
Wichtig ist für mein Projekt, dass mehrere WAVE Dateien parallel abgespielt werden können, was hier der Fall war und wunderbar geklappt hat.
Nun habe ich mich dazu durchgerungen, die WAVE Dateien in ein(ig)e RES Datei(en) zu packen. Um sie abzuspielen verwende ich derzeit folgende Prozedur:
Delphi-Quellcode:
var hFind, hRes: THandle;
Song: PChar;
begin
hFind := FindResource(HLib, PChar(SoundName), 'WAVE');
if (hFind <> 0) then begin
hRes := LoadResource(HLib, hFind);
if (hRes <> 0) then begin
Song := LockResource(hRes);
if Assigned(Song) then SndPlaySound(Song, snd_ASync or snd_Memory);
UnlockResource(hRes);
end;
FreeResource(hFind);
end;
Das funktioniert soweit auch einwandfrei, jedoch lässt sich auf diese Weise nur immer jeweils ein Sound gleichzeitig abspielen. Soll eine neue WAVE aufgerufen werden, so muss die Wiedergabe der alten WAVE abgebrochen werden.
Ich habe einige Lösungsvorschläge gefunden. Unter anderem die Idee, die WAVE Dateien temporär wieder auf die Festplatte zu speichern. So könnte ich meinen alten Code wieder verwenden, aber besonders elegant finde ich die Lösung nicht.
In die Bass.dll müsste ich mich erst einarbeiten und meine ersten Versuche sind kläglich gescheitert.
Ich suche nun also nach einer möglichst simplen Möglichkeit, um mehrere WAVE Dateien aus einer RES Datei parallel wiedergeben zu können.
Vielen Dank für Tipps und Links,
Xoric