Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

Как смиксовать 2 файла ?   Найти похожие ветки 

 
NetKnight ©   (2003-06-10 11:27) [0]

Вот простой пример запуска звукого файла:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, mmsystem, StdCtrls;

type TSoundThread = class(TThread)
private
fname:string;
protected
procedure Execute; override;
public
constructor Create(CreateSuspended:Boolean;filename:string);
end;

type
TForm1 = class(TForm)
Button1: TButton;
dlg: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
snd:TSoundThread;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if dlg.Execute then
snd:=TSoundThread.Create(false,dlg.FileName);
end;

{ SoundThread }

constructor TSoundThread.Create(CreateSuspended: Boolean; filename:string);
begin
FreeOnTerminate := True;
fname:=filename;
inherited Create(CreateSuspended);
end;

procedure TSoundThread.Execute;
begin
( PChar(fname)
Вот простой пример запуска звукого файла:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, mmsystem, StdCtrls;

type TSoundThread = class(TThread)
private
fname:string;
protected
procedure Execute; override;
public
constructor Create(CreateSuspended:Boolean;filename:string);
end;

type
TForm1 = class(TForm)
Button1: TButton;
dlg: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
snd:TSoundThread;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if dlg.Execute then
snd:=TSoundThread.Create(false,dlg.FileName);
end;

{ SoundThread }

constructor TSoundThread.Create(CreateSuspended: Boolean; filename:string);
begin
FreeOnTerminate := True;
fname:=filename;
inherited Create(CreateSuspended);
end;

procedure TSoundThread.Execute;
begin
playsound(PChar(fname),0,SND_FILENAME);
end;

end.


Но есть необходимость смиксовывать звук из 2 файлов, для этого волны нужно сложить (возможно создать какой-нибудь MemoryStream). Но я понятия не имею как это сделать на практике. :(
Кто-нибудь знаком с подобными вещами ? Расскажите, как это правильно делается.

По идее до проигрыша звуковые файлы должны складываться, формула примерно такая: NewY=(Y1-Y1*0.5)*Vol1+(Y2-Y2*0.5)*Vol2
NewY - показание результирующей волны по Y на данную позицию X
Y1 & Y2 - исходные показатели первой и второй волны
Vol1 & Vol2 - мультипликаторы со значением от 0 до 1 для того, чтоб задавать громкость входных волн.
Можно добавить громкость на выход.


 
NetKnight ©   (2003-06-10 11:34) [1]

В формуле ошибочка:
NewY=((Y1-Ymax*0.5)*Vol1+(Y2-Ymax*0.5)*Vol2)*VolMaster+Ymax*0.5
Ymax - Максимальне значение Y, сейчас не помню сколько это.
VolMaster - Мультипликатор для выходной громкости от 0 до 1.


 
NetKnight ©   (2003-06-10 11:36) [2]

Тьфу совсем торможу вот правильно:
NewY=(((Y1-Ymax*0.5)*Vol1+(Y2-Ymax*0.5)*Vol2)+Ymax*0.5)*VolMaster



Страницы: 1 вся ветка

Текущий архив: 2003.10.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
14-27654
Дмитрий
2003-09-21 11:39
2003.10.09
Разработка ПО на DELPHI для районов бурения скважин.


3-27375
rosl
2003-09-19 03:32
2003.10.09
прием записей


14-27673
Dark Elf
2003-09-22 13:31
2003.10.09
Открытие Chm-файла


14-27689
Толя
2003-09-22 01:54
2003.10.09
Pchar to Char


1-27496
Zhouck
2003-09-26 16:36
2003.10.09
Допустим у нас есть ClassName фрейма