Технологии программирования миди

 Навигация:

 Поиск:

 Новости:

17.02.2007
Полностью переработан дизайн сайта.

6.01.2007
Добавлен раздел Наработки Полезные и интересные программы и их исходники от автора.

19.11.2006
Функции WriteVarLen и ReadVarLen портированы с СИ на Delphi читать

14.11.2006
Появилась cтатья Midi-протокол глазами программиста

24.10.2006
Написана вторая часть MMSystem Функции midiOutGetVolume midiOutSetVolume midiOutMessage midiOutShortMsg и midiOutLongMsg

12.10.2006
Добавлен раздел Multimedia , который содержит большое количество информации по мультимедийным технологиям.

1.09.2006
Добавлен раздел MMSystem в котором находятся
подробные опсания функций winmm.dll, определенных в модуле mmSystem.pas,
с примерами их использования в Delphi.

13.08.2006
Опубликован исходник приложения, записывающего игру на клавиатуре
в стандартный midi-файл SMF - 0

4.07.2006
Добавлен раздел Структура формата миди-файла

 Счетчики:
Rambler's Top100 Яндекс цитирования Rambler's Top100
 Контент:

Процедуры и функции winmm.dll (unit mmSystem.pas). Часть 2.

<< первая часть

midiOutGetVolume
function midiOutGetVolume
(
hmo : HMIDIOUT,
lpdwVolume :PDWORD
) :MMRESULT;
Функция позволяет определить текущий уровень громкости миди-выхода.

Параметры:
hmo - указатель (handle) открытого устройства вывода миди.
lpdwVolume - адрес переменной типа DWORD, в которую будет передано значение.

Возвращаемые значения:
MMSYSERR_NOERROR - без ошибок.
MMSYSERR_INVALHANDLE - недействительный указатель.
MMSYSERR_INVALPARAM - системной функции передан неправильный параметр.
MMSYSERR_NOMEM - недостаточно памяти.
MMSYSERR_NOTSUPPORTED - данная функция не поддерживается.

Пример:
var
hmidi: integer;
midiOutVol: DWORD;
begin
midiOutOpen(@hmidi,0,0,0,0);
midiOutGetVolume(hmidi,@midiOutVol);
end;

midiOutSetVolume
function midiOutSetVolume
(
hmo : HMIDIOUT,
lpdwVolume :DWORD
) :MMRESULT;
Функция задает уровень громкости миди-выхода.

Параметры:
hmo - указатель (handle) открытого устройства вывода миди.
lpdwVolume - новое значение громкости.
Младшее слово - левый канал ($0000FFFF), старшее -правый ($FFFF0000). Если устройство не поддерживает стерео-режим, громкость задается только младшим словом одинаковая дла двух каналов.

Возвращаемые значения:
MMSYSERR_NOERROR - без ошибок.
MMSYSERR_INVALHANDLE - недействительный указатель.
MMSYSERR_NOMEM - недостаточно памяти.
MMSYSERR_NOTSUPPORTED - данная функция не поддерживается.

Пример:
var
hmidi: integer;
begin
midiOutOpen(@hmidi,0,0,0,0);
midiOutSetVolume(hmidi,$0000FFFF); {левый - максимум, правый - тишина}
end;

midiOutMessage
function midiOutMessage
(
hmo: HMIDIOUT,
msg: INTEGER,
dw1: DWORD,
dw2: DWORD
): DWORD;

Функция отправляет сообщение драйверу МИДИ-устройства. Используется только для специфических сообщений, не поддерживаемых MIDI API.

Параметры:
hmo - указатель (handle) открытого устройства вывода миди.
msg - сообщение.
dw1 - параметр 1.
dw2 - параметр 2.

Возвращаемые значеня зависят от драйвера.

midiOutShortMsg

function midiOutShortMsg
(
hmo: HMIDIOUT,
dwMsg: DWORD
): MMRESULT;

Функция отрпавляет короткое МИДИ-сообщение на указанное устройство

Параметры:
hmo - указатель (handle) открытого устройства вывода миди.
dwMsg - короткое МИДИ-сообщение. Сообщение упаковывается в двойное слово:
Старшее слово Старший байт Не используется.
 Младший байт Второй байт МИДИ-данных(если необходим).
Младшее слово Старший байт Первый байт МИДИ-данных(если необходим).
  Младший байт Статусный байт.

Возвращаемые значения:
MMSYSERR_NOERROR - без ошибок.
MMSYSERR_INVALHANDLE - недействительный указатель.
MIDIERR_NOTREADY - оборудование занято другими данными.
MIDIERR_BADOPENMODE - приложение отправило сообщение указателю потока без статус-байта.

Пример:
...
var
Form1 : TForm1;
hMidi :integer;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
midiOutOpen(@hmidi, 0, 0, 0, 0); {открытие миди-выхода}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
midiOutShortMsg(hmidi,$7F3C90); {Взятие($90) 60-й ($3С) ноты на первом канале ($90) с динамикой (громкостью ) 128 ($7F);}
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
midiOutShortMsg(hmidi,$3C80); {отпускание ($80) 60-й ($3С) ноты на первом канале ($80)}
end;

midiOutLongMsg
function midiOutLongMsg
(
hmo :HMIDIOUT,
lpMidiOutHdr :LPMIDIHDR,
cbMidiOutHdr :UINT
):MMRESULT;

Функция отправляет системное (system-exclusive) MIDI сообщение на указанное устройство.

Параметры:
hmo - указатель (handle) открытого устройства вывода миди.
lpMidiOutHdr - адрес структуры типа MIDIHDR.
cbMidiOutHdr - размер MIDIHDR в байтах.

Возвращаемые значения:
MMSYSERR_INVALHANDLE - недействительный указатель.
MIDIERR_NOTREADY - оборудование занято другими данными.
MMSYSERR_INVALPARAM - системной функции передан неправильный параметр.
MIDIERR_UNPREPARED - буфер не подготовлен.
 

<< первая часть


 Bash.org.ru:

 Реклама:

 ©Copyright:
http://www.last.h16.ru - программирование миди. Идея, разработка и поддержка : Mo-skin © 2006-2007
X