Re: Расскажите про MIDI-контролы
От: nen777w  
Дата: 17.06.10 22:42
Оценка: 35 (3)
попробую...

>Вообще, это не имеет отношения к MIDI как таковому. Мне нужена чисто хардварная control surface — с ручечками и кнопочками. Вот, m-audio UC33e вроде бы как подходит. А мне же просто надо уметь из C/С++ >читать показания, собственно и все.


Значица так.
Наверно как ты знаешь типов MIDI-сообщений не так много, вот некоторые из них: NoteOn, NoteOff, PBChange, Velocity, ControlChange
Тот девайс о котором ты говориш скорее всего умеет посылать три последних из них т.е. PBChange, Velocity, ControlChange.
Немного о специальном сообщении СС (ControlChange) — таких сообщений в MIDI протоколе может быть (помоему) 128 — со управляющим значением от 0 до 128
Т.е. в том девайсе можно на каждую ручку назначить номер контрола и когда ты её начнёш крутить девайс будет посылать что то вроде: CC <номер контрола> <значение>

>Вопрос — для подобных девайсов имеется какое-либо стандартизованное SDK или каждый городит свое? Как всякие Стейнберги со всем этим работают?


Ну если они все работают по протоколу MIDI то никаких SDK не надо.
Есть такое понятие как "карта сообщений" у каждого производителя "например синтезаторов" она своя.
Эта карта выглядит примерно так:

parameter CC
LPF CutOff 11

Это заначит что что бы изменить значение для CutOff LPF фильтра нужно послать по MIDI протоколу сообщение СС 11 <новое значение>
Так вот с этой железкой скорее всего идут предустановленные карты для популярных устройств куда она может подключатся.
Штейнберги тоже знают очень много карт.
А узнают они девайсик по его драйверу функцией (win32) midiInGetDevCaps()

В том числе Я так думаю у этого девайса есть своя карта при помощи комбинаций сообщений которого его можно перепрограммировать (т.е. переназначить номера контролов на ручки например), но моё это предположение.

Есть ещё такая классная программа Emagic SoundDiver — тоже знает много музыкального железа, наверно и этот знает тоже. Вот только плохо что Emagic продали Apple так что теперь доступна она только под MacOSX.
Ну да это не важно.

Да!
Читать показания — смотри под Win32 функции midiIn XXX

По памяти midiInOpen() например имеет callback, куда будут сыпаться меседжы с открытого тобой порта.
Там и нужно будет отбирать только те которые тебя интересуют.

Сейчас точно не вспомню, но могу посмотреть в архиве своего кода, когда то немного программированием MIDI занимался, даже парсер для MIDI файлов 0/1 — формата написал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.