|
Новости: |
|
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
Добавлен раздел Структура формата миди-файла
|
|
|
Контент: |
Процедуры и функции 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;
|
|
|
вторая часть >>
|
|
|