Что нового

[Данные, строки] Эмуляция midi-контроллера

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Начал осваивать midi синтезаторы и тут вышла проблема при эмуляции Novation Launchpad к Ableton Live.

Код:
Structure MIDIDATA
  Channel.b
  Note.b
  Velocity.b
  Null.b
EndStructure
 
midi.MIDIOUTCAPS
devices = midiOutGetNumDevs_()
For devnum = -1 To devices-1
  If midiOutGetDevCaps_(devnum, @midi, SizeOf(MIDIOUTCAPS)) = 0
    If midi\wVoices > 0
      midiport = devnum
    EndIf
  EndIf
Next 

midiport = 1

*hMidiOut = 0
result = midiOutOpen_(@hMidiOut, midiport, 0, 0, 0)
 
Note.b = 60
Vel.b = 100
Channel.b = 1
Instrument.b = 90
 
dMsg.MIDIDATA\Note = Instrument
dMsg\Channel = $bf + Channel
result = midiOutShortMsg_(hMidiOut, PeekW(dMsg))

dMsg\Velocity = Vel
dMsg\Note = Note
dMsg\Channel = $8f + Channel  ;Note On
result = midiOutShortMsg_(hMidiOut, PeekL(dMsg))
Delay(50)
dMsg\Channel = $7f + Channel  ;Note Off
result = midiOutShortMsg_(hMidiOut, PeekL(dMsg))

result = midiOutClose_(hMidiOut)

При таких параметрах на миди порт подается сигнал о нажатии (Note On) на ноту 60 выбранной в Ableton аудиодорожки, это работает.

Но сколько я не перебирал нот и значений, но код не хочет работать с Ableton в Perfomance режиме, он принимает нажатия, но не запускает дорожки.

Здесь (Пункт 2) есть описание MIDI message, которые нужно отправлять для воспроизведения дорожек на падах 0-120.

Нужно отправить такое сообщение на миди порт, чтобы Ableton воспринял его как нажатие кнопки 0 на Launchpad.

Поможет кто? :smile:

P.S: Знаю, что не совсем понятно объяснил, но главное в выделенном СИНИМ цветом
 
Верх