Попытка открыть вход в PortMidi - PullRequest
2 голосов
/ 28 июня 2011

Я пытаюсь открыть порт MIDI для чтения событий с клавиатуры MIDI в C ++, используя PortMidi.Я нашел идентификатор устройства для клавиатуры с помощью GetDeviceInfo, но не могу открыть ввод.

Функция выглядит следующим образом:

    Pm_OpenInput    (   PortMidiStream **   stream,
                        PmDeviceID  inputDevice,
                        void *  inputDriverInfo,
                        long    bufferSize,
                        PmTimeProcPtr   time_proc,
                        void *  time_info    
                    )   

Полная документация для этой функции: здесь

И моя реализация ...

PortMidiStream **stream;
Pm_OpenInput(stream, 12, NULL, 128, NULL, NULL);

.. выдает ошибку

Ошибка проверки времени выполнения # 3 - Переменная 'Поток »используется без инициализации.

.. это достаточно верно, поскольку я не инициализировал его.Я просмотрел PortMidi.h и большую часть Интернета, пытаясь найти PortMidiStream и как его инициализировать безуспешно.В заголовочном файле просто есть typedef и комментарий:

Одиночный PortMidiStream - дескриптор для открытого MIDI-устройства

, который мало чем помог1025 *

Любые идеи приветствуются

Иордания

PS - вот страница загрузки PortMidi http://sourceforge.net/apps/trac/portmedia/wiki/portmidi

1 Ответ

4 голосов
/ 28 июня 2011

В документации говорится

stream - это адрес PortMidiStream указатель, который будет получить указатель на вновь открывшийся поток.

Так что измените ваш код, чтобы он делал именно то, что говорит.

PortMidiStream *stream; /* A PortMidiStream pointer */
Pm_OpenInput(&stream, 12, NULL, 128, NULL, NULL); /* Pass the address of the pointer */

Это распространенная идиома в Си для возврата значений указателей.

...