Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mehrere Sounds ohne Unterbrechung parallel spielen (https://www.delphipraxis.net/53164-mehrere-sounds-ohne-unterbrechung-parallel-spielen.html)

ManuMF 11. Sep 2005 14:56


Mehrere Sounds ohne Unterbrechung parallel spielen
 
Hallo,

in meinem aktuellen Projekt spiele ich mehrere Sounds kurz hintereinander ab. Der jeweils neue Sound unterbricht aber seinen "Vorgänger". Wie kann ich das einfach unterbinden?

Ach so, ich verwende natürlich PlaySound. Der Parameter SND_NOSTOP hat übrigens nichts genutzt, dann hat er zwar weitergespielt, aber die neuen Sounds kamen nicht.

Danke,
ManuMF

turboPASCAL 11. Sep 2005 15:54

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Das wird nicht funktionieren da PlaySound und sndPlaySound nur einen Kanal zulassen und den Sound nicht mischen können.

Verwende die BASS.DLL oder FMod.dll damit kannst du Sounds auf mereren Channels ausgeben.

ManuMF 11. Sep 2005 16:31

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Habe TBassDllPlayer eingebaut. Das funktioniert perfekt! :thumb:

ManuMF 11. Sep 2005 16:52

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Zu früh gefreut! :cry:
Es hat sich nur so angehört. Wie kann ich denn mehrere Channles ansteuern?
Oder auch: Gibt es irgendwo eine Hilfe für Bass.dll?

Danke,
ManuMF

DBR 11. Sep 2005 17:16

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Vielleicht versuchst du es mal so:

http://www.dbr-software.de/delphi/wavelapp.php

Gruß DBR

Hador 11. Sep 2005 17:26

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Mit der TBassDllPlayer Komponente sollte das ohne weiteres möglich sein.

Einfach:

Delphi-Quellcode:
Player.addChannel(100); // 100 heißt volle Lautstärke
Player.Channel[X].LoadFromFile(...); //um den jeweils letzten Channel anzusprechen nimm: Player.ChannelCount-1
Player.Channel[X].Play;

ManuMF 11. Sep 2005 18:02

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
@DBR: Das funktioniert :thumb:
Aber gibt es da auch eine Lösung für Wiedergabe aus Ressourcen?

@Hador: Ich habe jetzt mal genau nachgelesen: TBassDllPlayer hat Einschränkungen. Channels fallen auch darunter. (Ich finde es trotzdem besser, als die Bass.Dll immer weitergeben zu müssen.)

Gruß,
ManuMF

turboPASCAL 11. Sep 2005 18:31

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Zitat:

Zitat von Hador
Mit der TBassDllPlayer Komponente sollte das ohne weiteres möglich sein.

:warn: Nein! :wink:

aber mit der BassPlayerEx

Einfach:

Zitat:

Zitat von Hador
Delphi-Quellcode:
Player.addChannel(100); // 100 heißt volle Lautstärke
Player.Channel[X].LoadFromFile(...); //um den jeweils letzten Channel anzusprechen nimm: Player.ChannelCount-1
Player.Channel[X].Play;


ManuMF 11. Sep 2005 19:14

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Danke erst mal.

Ich ziehe die Lösung von DBR eher vor, die ist etwas einfacher.

Aber: Gibt es eine Möglichkeit, Ressourcen in eine Datei zu speichern?
Das wäre dafür nämlich nötig.

Gruß,
ManuMF

Hador 11. Sep 2005 20:48

Re: Mehrere Sounds ohne Unterbrechung parallel spielen
 
Zitat:

Zitat von turboPASCAL
aber mit der BassPlayerEx

Damn - Hab mich vertan. :oops: Is aber auch schon 'n bissl her, als ich mit der gearbeitet hab.

@ManuMF:

Zitat:

Zitat von Easy Delphi Helper
Soundressourcen benutzen

Als erstes muss man eine Soundressource erstellen. Dazu legt man ein Script (*.RC) an, in dem die Sounddateien, die in die Ressource aufgenommen werden sollen, aufgeführt werden.

Beispiel:

1 WAVE "c:\eigenebla.wav"
2 WAVE "c:\eigeneblabla.wav"

Die erste Spalte gibt den Index der Datei an (unter dem sie später aufgerufen werden kann), die Zweite die Dateiart (WAVE-Datei) und die dritte die Datei.

Diese wird dann mit dem Ressourcencompiler von Borland (bei Delphi dabei!) BRCC32.EXE compiliert, indem man die BRCC32.EXE startet, und als Parameter die RC- Datei angibt.

Um dann die Waves aus der Ressource abspielen zu können, muss man sie noch einbinden:

Unter der Formulareinbindung ({$R *.DFM}) gibt man einfach seine Ressource an (Beispiel):

{$R Sounds.RES}

Dann das Abspielen:

uses mmsystem;

PlaySound(PChar(1),HInstance, snd_ASync or snd_Memory or snd_Resource);

Die 1 gibt an, welche Datei abgespielt werden soll, in diesem Fall die mit dem Index 1.

Wie du das in den von dir genutzten Code einbindest musst du mal gucken - (Wenn das möglich ist.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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