Эта страничка посвещена использованию миди в Делфи :-)

Небольшая дока: как использовать миди из 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

    Хостинг от uCoz