1

几天前我写了关于 MIDI 和 ALSA 的问题,但我已经解决了这个问题并遇到了一个新问题。

简而言之:

我有一个带有 debian 7.5 的 Beaglebone Black。

我的主机是 32 位 Ubuntu 14.10 安装。

我正在使用 Qt4.8.6 进行手臂交叉编译。

我正在尝试创建一个使用触摸屏并从键盘读取 MIDI 输入的应用程序。我已经使用以下教程(http://embedded.von-kannen.net/2014/05/21/qt-4-8-6-on-beaglebone-black/)安装 Qt Embedded,以便我可以交叉编译到我的 beaglebone(教程需要一些修复,如果有人需要,我已经准备好一个“固定”文档)和以下一个用于编译 ALSA 以在 ARM MPU 上使用:omappedia.org/wiki/ALSA_Setup

基本上,在我最终构建程序并将其部署到我的 beaglebone black 上之后,它找不到接收 MIDI 信号所需的端口。

我正在使用MidiMate II将我正在使用的 MIDI 设备连接到 Beaglebone Black 中 HUB 上的 USB 端口。

我有以下代码来检查可用端口(C++):

RtMidiIn  *midiin = 0;
// RtMidiIn constructor
try {
  midiin = new RtMidiIn();
}
catch ( RtMidiError &error ) {
  error.printMessage();
  exit( EXIT_FAILURE );
}
// Check inputs.
unsigned int nPorts = midiin->getPortCount();
qDebug() << "\nThere are " << nPorts << " MIDI input sources available.\n";
std::string portName;
for ( unsigned int i=0; i<nPorts; i++ ) {
  try {
    portName = midiin->getPortName(i);
  }
  catch ( RtMidiError &error ) {
    error.printMessage();
    delete midiin
  }
  std::cout << "  Input Port #" << i+1 << ": " << portName << '\n';
}

我可以确认 MidiMate 可以在 Ubuntu 上正常运行。在桌面上运行应用程序接收值就好了。我不确定 BeagleBone 在 Debian 上的功能。

上面的代码告诉我在 Beaglebone 上运行时没有可用的输入源,而在 Ubuntu 和 Windows 桌面上运行时有 2 个可用的输入源。

我的问题: 如何让我的 Beaglebone 检测到读取实时 MIDI 输入所需的端口?


编辑:

将 midimate 插入 beaglebone会在 /dev/ 列表中生成一个midi1条目。但是我不知道如何处理它。

我使用的 RtMidi 函数只能接受一个无符号整数作为输入,所以我不能提供字符串“midi1”作为参数:(

4

1 回答 1

0

您的发行版在启动时不会加载snd-seqsnd-seq-midi内核模块,也没有按需加载它们的机制。

将它们添加到/etc/modules文件中。

于 2015-01-15T17:46:28.967 回答