В диспетчере задач приложение для каждого звука создает отдельный поток. И вопроизводятся они одновременно. Только вот если поставить в главном потоке Sleep(n), то весь звук заикается. Может как-то можно перенести DXSound1 в отдельный поток только как его там создать я не знаю.
P.S.
Проект скинул бы но че-то грузить не хочет пишет:"Кажется, произошла проблема с базой данных Форум по программированию - Delphi Sources.".Могу только код дать.
Код:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DXSounds, ComCtrls;
type
TForm1 = class(TForm)
Button2: TButton;
DXSound1: TDXSound;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
Button1: TButton;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
//r:trect;
Audio,Audio1,Audio2,Audio3: TAudioFileStream;
// pust:bool=true;
// x,y,z:integer;
//buf:array[0..244000]of word;
///image1,bmp:tbitmap;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var x,y:integer;
l:cardinal;
begin
Audio.Play;
//Audio1.play;
audio2.Play;
audio3.Play;
sleep(10000);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Audio := TAudioFileStream.Create(DXSound1.DSound);
Audio.AutoUpdate := true;
Audio.BufferLength := 100;
Audio.FileName := 'wind_bkg_1.wav';
Audio.Looped := true;
audio.Frequency:=44000;
///////////////////////////////////////
{ Audio1 := TAudioFileStream.Create(DXSound1.DSound);
Audio1.AutoUpdate := true;
Audio1.BufferLength := 100;
Audio1.FileName := 'night_bkg_1.wav';
Audio1.Looped := true;
audio1.Frequency:=44000;}
///////////////////////////////////////
Audio2 := TAudioFileStream.Create(DXSound1.DSound);
Audio2.AutoUpdate := true;
Audio2.BufferLength := 100;
Audio2.FileName := 'rain_l.wav';
Audio2.Looped := true;
audio2.Frequency:=44000;
AUdio2.Pan:=-10000;
//audio2.Volume:=-1000;
///////////////////////////////////////
Audio3 := TAudioFileStream.Create(DXSound1.DSound);
Audio3.AutoUpdate := true;
Audio3.BufferLength := 100;
Audio3.FileName := 'rain_r.wav';
Audio3.Looped := true;
audio3.Frequency:=44000;
audio3.Pan:=10000;
//audio3.Volume:=-1000
///////////////////////////////////////
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
audio.Volume:=TrackBar1.Position;
end;
procedure TForm1.TrackBar2Change(Sender: TObject);
begin
audio3.Volume:=TrackBar2.Position;
audio2.Volume:=TrackBar2.Position;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Audio.Stop;
//Audio1.play;
audio2.Stop;
audio3.stop;
end;