Я пытаюсь использовать RtMIDI для обработки ввода MIDI.
На моей машине я установил внутренний MIDI-порт LoopBe1.
Код RtMIDI, который я использую, выглядит следующим образом (и в основном это демонстрационный код с сайта RtMIDI).
#include <iostream>
#include <cstdlib>
#include <signal.h>
#include "RtMidi.h"
int main()
{
RtMidiIn *midiin = new RtMidiIn();
// Check available ports.
unsigned int nPorts = midiin->getPortCount();
if ( nPorts == 0 ) {
std::cout << "No ports available.\n";
}
else std::cout << "Port(s) found.\n";
getchar();
return 0;
}
Когда я запускаю это, я получаю сообщение «нет доступных портов».
Порт LoopBe1 работает для других MIDI-приложений, которые у меня есть на компьютере, и у меня есть другое MIDI-приложение, которое я написал на C # (с использованием NAudio, а не RtMIDI), которое не обнаруживает проблем с портом.
Я бродил по сети, но не могу найти причину.
Кто-нибудь может предложить какие-либо идеи относительно того, почему RtMIDI не может найти порт?
Благодарю.
Я не сделал то, что говорится в руководстве (не читал инструкции):
«Чтобы скомпилировать RtMidi для конкретной ОС и API, необходимо предоставить соответствующее определение препроцессора и библиотеку в операторе компилятора:»
Для этого в Windows Visual C ++ Express 2010 необходимо:
Перейти к ПРОЕКТУ -> СВОЙСТВА -> C / C ++ -> Препроцессор
Затем в поле «Определения препроцессора» щелкните раскрывающийся список и нажмите «Изменить», затем добавьте
(подчеркивание подчеркивания) WINDOWS_MM (подчеркивание подчеркивания)
Перейти к ПРОЕКТУ -> СВОЙСТВА -> LINKER
Затем в поле ввода дополнительных зависимостей щелкните раскрывающийся список и нажмите кнопку «Изменить», затем добавьте
winmm.lib
Теперь это работает.
Других решений пока нет …