Главная страница
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
3-27324
tudor
2003-09-21 14:36
2003.10.09
dll и main.Использование одного коннекта


1-27515
bss
2003-09-30 11:09
2003.10.09
Как определить кем из пользователей блокируется файл


3-27307
Vick
2003-09-17 16:40
2003.10.09
Функция определения кол-ва дней в месяце


3-27407
BlackCat
2003-09-18 12:26
2003.10.09
Не могу разобраться с ADO


7-27756
Olgerd
2003-07-20 22:16
2003.10.09
Загрузка процессора