![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Синтезирование звука. [D6, WinXP]
DNT © (2002-09-06 17:19:00)Как можно это сделать?
Необходимо например, получать ноту определенной тональности.
Можно и через midi.
Вот только как?
Может есть компонента?
easy (2002-09-07 19:43:00) [1]
//midi
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MMSystem, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hmidi:integer;
midimsg:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
midiOutOpen(@hmidi, 1, 0, 0, 0);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
midiOutClose(hmidi);
end;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
midimsg := $90 + ((60 + 0) * $100) + (127 * $10000) + 0;
midiOutShortMsg (hmidi, midimsg);
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
midimsg := $80 + ((60 + 0) * $100) + 0;
midiOutShortMsg (hmidi, midimsg);
end;
procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
midimsg := $90 + ((60 + 2) * $100) + (127 * $10000) + 0;
midiOutShortMsg (hmidi, midimsg);
end;
procedure TForm1.Button2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
midimsg := $80 + ((60 + 2) * $100) + 0;
midiOutShortMsg (hmidi, midimsg);
end;
end.
..успехов...
Ketmar (2002-09-06 23:37:00) [2]ладно. я добрый нынче. пишем мне на мыло, и получаем исходник тоногенератора с выводом на звуковую карту...
Satanas Nobiscum! 06-Sep-XXXVII A.S.
Kopetr (2002-09-06 23:25:00) [3]Задавай конкретные вопросы, что именно непонятно.
"Я в звуках не понимаю" - не катит.
Волну можно генерировать с помощью функуции Sine.
Компоненты ищутся на torry.net
DNT (2002-09-06 20:59:00) [4]Вот, вот.
Я в звуках не понимаю.
Как генерировать волну?
И компонент, в последнюю очередь.
Kopetr (2002-09-06 18:57:00) [5]Beep(440, 1000) - нота ЛЯ.
Ketmar (2002-09-06 18:42:00) [6]а руки уже отменили? только компоненты любим? просейший формирователь синусоидальной волны с выводом на WaveOut или в .WAV - не судьбец?
как формировать волну, говорить не буду - это очевидно. как выводить - проще всего в .WAV, а потом PlaySound. формат .WAV можно легко найти в Сети.
Satanas Nobiscum! 06-Sep-XXXVII A.S.