Можно ли использовать midiOutLongMsg для игры на аккорде?(Win32 API) - PullRequest
2 голосов
/ 21 октября 2010

Это ребята говорят да: http://web.tiscalinet.it/giordy/midi-tech/lowmidi.htm То же самое с действительно старой книгой 1998 года (Maximum MIDI). MSDN не упоминает об этом. У меня нет звука.

  • Я заполняю буфер символов статусом | note | скорость | статус | note | скорость ...
  • Установить lpData, dwBufferLength и dwFlags структуры MIDIHDR
  • call midiOutPrepareHeader (MMSYSERR_NOERROR)
  • вызов midiOutLongMsg (MMSYSERR_NOERROR)

Все еще нет звука! Спам midiOutShortMsg работает, но будет ли это работать на медленных машинах? Они изменили функциональность?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

Я идиот!Я понял это: Microsoft GS Wavetable Synth НЕ поддерживает отправку нескольких коротких сообщений в midiOutLongMsg.MIDI Mapper ДЕЛАЕТ!

0 голосов
/ 23 октября 2010

midiOutShortMsg должно быть достаточно быстрым, даже на медленных машинах.Сами MIDI-интерфейсы (то есть аппаратное обеспечение, но некоторые программы ограничивают себя) работают со скоростью 31 250 бод.Это, конечно, игнорирование любого медленного кода, который вы, возможно, обернули вокруг, где вы вызываете midiOutShortMsg.

В любом случае, технически вы также должны иметь возможность обойтись одним байтом состояния, если в следующих примечаниях используется тот же байт состояния.Итак, если вы хотите сделать вкл / выкл заметки (используя скорость 0 для выключения) и эти ноты находятся на одном и том же канале, вы можете сделать это:

status|note|velocity|note|velocity|note|velocity|note|velocity

Это называется статус работы .

...