Форум: "Media";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизКак смиксовать 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 вся ветка
Форум: "Media";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c