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

 Навигация:

 Поиск:

 Новости:

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), необходимые, для работы с миди.

вторая часть >>

MidiOutOpen

function midiOutOpen
(
lphmo: LPHMIDIOUT,
uDeviceID: UINT,
dwCallback: DWORD,
dwCallback Instance: DWORD,
dwFlags: DWORD
):MMRESULT;

Открывает устройство миди-вывода для воспроизведения.

Параметры:
lphmo - адрес переменной типа LPHMIDIOUT (integer) в которую будет передан указатель (handle) устройства.
uDeviceID - идентификатор открываемого устройства.
dwCallback - адрес функции обратного вызова, указателя события, идентификатора задачи или указателя окна. Если обратный вызов не используется, то значение этого параметра должно быть NULL.
dwCallbackInstance - пользовательские данные, посылаемые ф-ции обратного вызова
dwFlags - флаги механизма обратного вызова, описывают на что указывает параметр dwCallBack :
CALLBACK_EVENT
CALLBACK_FUNCTION
CALLBACK_NULL - является значением по умолчанию.
CALLBACK_THREAD
CALLBACK_WINDOW

Возвращаемые значения:
MMSYSERR_NOERROR - открытие устройства прошло удачно.
MIDIERR_NODEVICE - MIDI порт отсутствует.
MMSYSERR_ALLOCATED - указанное устройство уже открыто.


Пример::
...
var
hmidi: integer;
...
MidiOutOpen(@hmidi,0,0,0,0);

MidiOutClose

function MidiOutClose
(
hmo: HMIDIOUT
): MMRESULT;

Закрывает устройство миди-вывода. Параметры:
hmo - указатель (handle) открытого ранее устройства.

Возвращаемые значения:
MMSYSERR_NOERROR - закрытие устройства прошло удачно.
MIDIERR_STILLPLAYING - в буфере все еще находится очередь сообщений.
MMSYSERR_INVALHANDLE - недействительный указатель устройства.
MMSYSERR_NOMEM - Система неспособна загрузить описание mapper'a

MidiOutReset

function MidiOutReset
(
hmo: HMIDIOUT
): MMRESULT;

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

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

midiOutGetNumDevs

function midiOut GetNumDevs
(
): integer;

Возвращае количество зарегистрированных в системе устройств миди-вывода. Параметры:
Данная функция не имеет параметров.

midiOutGetDevCaps

function midiOut GetDevCaps
(
uDeviceID: Cardinal,
lpMidiOutCaps: PMIDIOUTCAPS,
cbMidiOutCaps: Cardinal
): MMRESULT;

Определяет возможности устройства Параметры:
uDeviceID - идентификатор устройства.
lpMidiOutCaps - адрес структуры MIDIOUTCAPS.
cbMidiOutCaps - размер структуры MIDIOUTCAPS в байтах.

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


Пример::
function TamMidi.GetMidiDevNames():TStrings; { получение списка имен миди-устройств}
var
NumDevs: integer;
DevCaps:MidiOutCaps;
i:integer;
begin
GetMidiDevNames:=TStringList.Create;
NumDevs := midiOutGetNumDevs ();
for i:=-1 to NumDevs-1 do
begin
midiOutGetDevCaps(i,@DevCaps,sizeof (DevCaps));
GetMidiDevNames.Add (DevCaps.szPname)
end;
end;

midiOutGetErrorText

procedure midiOut GetErrorText
(
mmrError: Cardinal,
lpText: PAnsiChar,
cchText: Cardinal;
);

Определяет текстовое представление ошибки по его коду. Параметры:
mmrError - код ошибки.
lpText - адрес буфера в который будет записано текстовое представление ошибки.
cchText - размер буфера в символах.


Пример::

procedure TForm1.Button1Click(Sender: TObject);
var
hmidi:integer;
s:string[50];
MME:MMRESULT;
begin
MME:= MidiOutOpen(@hmidi,5,0,0,27);
if MME<>0 then
begin
midiOutGetErrorText(MME,@s,50);
MessageBox(0,@s,'Ошибка!',$10);
end;
end;

 

вторая часть >>


 Bash.org.ru:

 Реклама:

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