Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 11:22   #1
апельсинка
 
Регистрация: 28.11.2008
Сообщений: 7
По умолчанию Звук в Delphi

Подскажите, пжл, как закодировать мелодию по аккордам в Delphi?
Поскажите, почему не работает код для имитатора пианино???

Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);


private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

hMidi :integer;
midimsg :integer; //миди сообщение
no:integer; //нота 
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
midiOutOpen(@hmidi, 0, 0, 0, 0);
Form1.KeyPreview:= true;
end;



procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key='1' then no:=60 ; //c
if key='2' then no:=62 ; //d
if key='3' then no:=64 ; //e
if key='4' then no:=65 ; //f
if key='5' then no:=67 ; //g
if key='6' then no:=69 ; //a
if key='7' then no:=71 ; //b
if key='8' then no:=72 ; //c
if key='9' then no:=74 ; //d
if key='0' then no:=76 ; //e
if key='-' then no:=77 ; //f
if key='=' then no:=79 ; //g


//формируем сообщение
midimsg := $90 + ((no) * $100) + (127 * $10000) + 0;
//отправляем его
midiOutShortMsg (hmidi, midimsg);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
midiOutClose(hmidi);
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=ord('1') then no:=60; //c
if key=ord('2') then no:=62 ; //d
if key=ord('3') then no:=64 ; //e
if key=ord('4') then no:=65; //f
if key=ord('5') then no:=67 ; //g
if key=ord('6') then no:=69; //a
if key=ord('7') then no:=71 ; //b
if key=ord('8') then no:=72 ; //c
if key=ord('9') then no:=74 ; //d
if key=ord('0') then no:=76; //e
if key=ord('-') then no:=77 ; //f
if key=ord('=') then no:=79 ; //g

//формируем сообщение
midimsg := $80 + ((no) * $100) +0 ;
//отправляем его
midiOutShortMsg (hmidi, midimsg);
end;

end.
Прочитайте правила раздела и оформляйте код, как положено.
Кроме того, обратите внимание на пункт правил 3.

Последний раз редактировалось mihali4; 27.05.2009 в 14:10.
апельсинка вне форума Ответить с цитированием
Старый 27.05.2009, 15:35   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Midi пианино
Вложения
Тип файла: zip piano.zip (9.9 Кб, 231 просмотров)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 27.05.2009, 16:47   #3
апельсинка
 
Регистрация: 28.11.2008
Сообщений: 7
По умолчанию

Огромное спасибо! Очень помогли!!!
апельсинка вне форума Ответить с цитированием
Старый 20.03.2012, 14:08   #4
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

Потрясающе получилось
IgoRek125 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звук L_M Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 03.06.2008 23:50
Звук xakkkkker Мультимедиа в Delphi 4 05.05.2008 08:13
Звук Cabal777 Помощь студентам 3 28.12.2007 23:42
звук и делфи, левый правый звук snusmumric Win Api 2 29.10.2007 11:10
Возможно ли средствами Delphi создать "звук" V_X Помощь студентам 2 19.12.2006 18:24