![]() |
AW: Sounds gleichzeitig abspielen
jo, geht mit der Bass.dll
Delphi-Quellcode:
So hab ich es mal umgesetzt und es funct. Wenn es sein muss must Du natürlich mehr HSTREAM (schus) erzeugen. Es kommt darauf an wie lang die wav ist und damit Du genügend hast wenn 3 nicht reichen!
private
schus1, schus2, schus3: HSTREAM; song1: string; .... .... procedure TForm1.FormCreate(Sender: TObject); begin if not BASS_Init(1, 44100, 0, Handle, nil) then Application.Terminate; song1:= 'g:\Musik\PLAYER1\schuss.wav'; schus1:= BASS_StreamCreateFile(False, pchar(song1),0, 0,BASS_SAMPLE_SOFTWARE {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF}); schus2:= BASS_StreamCreateFile(False, pchar(song1),0, 0, BASS_SAMPLE_SOFTWARE {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF}); schus3:= BASS_StreamCreateFile(False, pchar(song1),0, 0, BASS_SAMPLE_SOFTWARE {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF}); end; procedure TForm1.btnplay1Click(Sender: TObject); begin if (BASS_ChannelIsActive(schus1) = 0) then BASS_ChannelPlay(schus1, False) else if (BASS_ChannelIsActive(schus2) = 0) then BASS_ChannelPlay(schus2, False) else if (BASS_ChannelIsActive(schus3) = 0) then BASS_ChannelPlay(schus3, False) end; .... .... Besser währe natürlich ein soundthread :wink: gruss alold |
AW: Sounds gleichzeitig abspielen
Hallo alfold!
Danke für den Beispielcode. Ich hab das ganze nun mal so verwendet wie du es gezeigt hast, allerdings höre ich nix! Hier ein Auszug aus meinem Code:
Delphi-Quellcode:
BASS_ChannelPlay wird auch aufgerufen, habe es Schritt für Schritt mit dem Compiler zur Laufzeit durchgespielt.
unit mTSound;
.. TSound = class constructor create; //destructor destroy; override; private schuss1, schuss2, schuss3 : HSTREAM; explosion1, explosion2, explosion3 : HSTREAM; schuss_path, explosion_path : string; procedure play_schuss; procedure play_explosion; public procedure playfile( pname : string); end; .. constructor TSound.create; begin if not BASS_Init(1, 44100, 0, 0, nil) then //HANDLE kannte derbei mir nicht, habs auf 0 gesetzt. Ist das der Fehler? begin showmessage('Bass.dll konnte nicht initialisiert werden!'); exit; end; schuss_path := '/sounds/laserbeamz.wav'; explosion_path := '/sounds/bomb.wav'; schuss1 := BASS_StreamCreateFile(False, pchar(schuss_path),0, 0,BASS_SAMPLE_SOFTWARE {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF}); ... explosion1 := BASS_StreamCreateFile(False, pchar(explosion_path),0, 0,BASS_SAMPLE_SOFTWARE {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF}); .. end; procedure TSound.playfile ( pname : string ); begin if pname = 'explosion' then play_explosion else if pname = 'schuss' then play_schuss; end; procedure TSound.play_explosion; begin if (BASS_ChannelIsActive(explosion1) = 0) then BASS_ChannelPlay(explosion1, False) //Wird afgerufen else if (BASS_ChannelIsActive(explosion2) = 0) then BASS_ChannelPlay(explosion2, False) else ... end; procedure TSound.play_schuss; begin ... end; Warum hör ich nichts? MfG |
AW: Sounds gleichzeitig abspielen
Is ja schön das Du ne eigen Classe dafür erstellst, ist aber nicht Nötig.
Handle ? Eigentlich must Du es angeben !? Da ich noch nie ne eigen classe mit der Bass.dll erstellt habe kann ich es nicht sagen:oops: Kann auch sein das in der uses was fehlt!? Frage: stimmt den der Pfad? schuss_path, explosion_path : string; schuss_path := '????/sounds/laserbeamz.wav'; :?: explosion_path := '????/sounds/bomb.wav'; :?: Besser währe der Aufwand mit Thread. Gruss alfold P.S. als kleine Idee so am rande. Wenn Du jetzt noch mit Lautstärke und Panorama arbeitest, kannst Du sogar noch Entfernung und Ort bestimmen wo der sound herkommt. |
AW: Sounds gleichzeitig abspielen
:D ja das war der Fehler :oops: peinlich^^
Dachte der würde dann evtl eine Fehlermeldung auswerfen... :roll: Es funktioniert nun alles, Danke nochmal für deine Hilfe alfold! Bis demnächst ;) Mit freundlichen Grüßen w4rheart |
AW: Sounds gleichzeitig abspielen
Schau dir mal die Bass Hilfe an, da stehen die Fehlercode drin und wie Du sie abfangen kannst 8-)
Gruss alfold |
AW: Sounds gleichzeitig abspielen
also ne Klasse mit der BassDLL gibts unter
![]() Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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