|
Небольшая дока: как использовать миди из delphi.
hmidi - handle midi, типа управление миди, а вообще номер, который
присваивается миди-входу или миди-выходу, на протяжении сессии.
Сообщения о нажатии и отпускании нот(клавиш) формируются следующим образом:
- Нажатие:
9k nn vv, где k-номер канала, nn-нота, vv-"скорость" нажатия(громкость)
всё задаётся в 16-теричном формате, в обратном порядке, в пределах
от 0, до 127(или от $00 до $7f). Т.е. если сообщение: 90 3с 7f ,
то посылать надо 7f 3c 90 ($7f3c90).
- Отпускание:
8k nn vv, где k-номер канала, nn-нота, vv-"скорость" отпускания
всё задаётся также в 16-теричном формате, в обратном порядке. В пределах
от 0, до 127(или от $00 до $7f). Т.е. если сообщение: 80 3с 7f ,
то посылать надо 7f 3c 80 ($7f3c80).
- Изменение активного инструмента
Ck ii, где k-номер канала, ii-номер инструмента.
Всё задаётся с теми же правилами, что и выше.
Например: $c0 01 ($01c0). Номера инструментов смотрите в описаниях миди-интерфейса.
Описание построения всех сообщений можно узнать в разных доках.
например(в Интернете) можно набрать в любом поисковом сервере(мой любимый - yandex. http://www.ya.ru/ ) "описание MIDI-интерфейса"
Описание некоторых процедур МИДИ из модуля MMSystem
- midioutopen(@hmidi_out,1,0,0,0)
- @hmidi_out - handle миди-выхода(причём не сам handle, а ссылка на адреса в памяти, содержащие значения hmidi_out)
- 1 - номер миди-устройства выхода. от 0. Можно использовать константу MIDI_MAPPER
типа: midioutopen(@hmidi_out,MIDI_MAPPER,0,0,0).
- остальные три параметра можно оставить "по нулям" :-) А вообще если вы знаете их значение
пишите на a-lemesh@yandex.ru :-)
- midiinopen(@hmidi_in,2,0,0,0)
- @hmidi_in - handle миди-входа(причём не сам handle, а ссылка на адреса в памяти, содержащие значения hmidi_out)
- 2 - номер миди-устройства входа. от 0.
- остальные три параметра можно оставить "по нулям" :-) А вообще если вы знаете их значение
пишите на a-lemesh@yandex.ru :-)
- midiconnect(hmidi_in,hmidi_out,0)
Соединяет виртуальным "проводом" миди-вход hmidi_in с миди-выходом hmidi_out.
Т.е. все сообщения с миди-входа посылает на миди-выход.
- midiinclose(hmidi_in)
Закрывает миди-вход hmidi_in
- midioutclose(hmidi_out)
Закрывает миди-выход hmidi_out
Типы переменных:
- midimsg(миди-сообщение) - тип DWORD - двойной слово. Также можно использовать integer.
или любой другой 4-х байтовый тип.
- hmidi_out(handle миди-выхода) - тип - HMIDIOUT
- hmidi_in(handle миди-входа) - тип - HMIDIIN
Все вопросы можете присылать на a-lemesh@yandex.ru
|