Показать сообщение отдельно
  #13  
Старый 22.05.2013, 18:08
Аватар для Klyaksa
Klyaksa Klyaksa вне форума
Новичок
 
Регистрация: 07.01.2012
Сообщения: 90
Репутация: 10
По умолчанию

В диспетчере задач приложение для каждого звука создает отдельный поток. И вопроизводятся они одновременно. Только вот если поставить в главном потоке 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;
Ответить с цитированием