适用于 Arduino 的 Korg Nanokey MIDI 控制器?
我有一个 Korg NanoKey,我想用它来控制一个简单的合成器我是在Arduino平台上进行设计的。 (我有一个Arduino Uno。)基本上,我不关心MIDI,我只是想要读取键盘按下的音符,但如果 MIDI 是我能做到这一点的唯一方法,那么我没问题。所以我的大问题是,我该怎么做?我在互联网上找不到其他人已经这样做过。
但更具体地说,我看到两个挑战:首先,我想将 NanoKey 直接插入 Arduino 的 USB 端口,但随后我想知道 Arduino 是否会为 NanoKey 提供必要的电源。其次,我不确定我会阅读什么协议。我可以按照本教程中所述读取 MIDI 信号吗?
I have a Korg NanoKey which I'd like to use to control a simple synthesizer I've designed on the Arduino platform. (I have an Arduino Uno.) Basically, I don't care about MIDI, I just want to read what note the keyboard has pressed down, but if MIDI is the only way I can do that, then it's okay with me. So my big question is, how do I do this? I haven't been able to find anyone else on the Internet who has already done this.
But more specifically, I see two challenges: First, I'd like to plug my NanoKey directly into the Arduino's USB port, but then I'm wondering if the Arduino would provide the necessary power to the NanoKey. Second, I'm not sure what protocol I would be reading. Can I just read MIDI signals as described in this tutorial?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我不想抑制你的热情,但你正在尝试的可能有点困难。 USB系统由主机控制器和一个或多个外围设备组成。主机控制流向设备的流量,这意味着如果没有主机控制器的明确请求,设备无法在总线上传输数据。
我对 nanoKey 或 Arduino 平台都不熟悉,但我相当有信心 nanoKey 是一个 USB“设备”,通常连接到充当主机的计算机。因此,要使该系统正常工作,您需要让 Arduino 在与 nanoKey 通信时充当主机。 Arduino 原理图显示Arduino Uno 使用 ATmega8U2 用于 USB 通信。不幸的是,ATmega8U2 是一个 USB 设备,因此您有两个外围设备,但没有主机控制器来促进它们之间的数据传输。您最好使用提供 USB 主机或 USB On-the-Go 的微型开发板。
I don't want to curb your enthusiasm but what you're attempting might be a bit hard basket. A USB system consists of a host controller and one or more peripheral devices. It's the host that controls traffic flow to the devices which means that devices can't transmit data on the bus without an explicit request from the host controller.
I'm not familiar with either the nanoKey or the Arduino platform but I'd be fairly confident that the nanoKey is a USB "device", normally connected to a computer which would act as the host. So what you would need for this system to work is for the Arduino to act as the host when communicating with the nanoKey. The Arduino schematic shows that the Arduino Uno uses an ATmega8U2 for USB coms. Unfortunately the ATmega8U2 is a USB device, so you've got two peripheral devices but no host controller to facilitate the transfer of data between them. You'd be better off using a development board for a micro that provides either USB Host or USB On-the-Go.
昨天我打开了 Korg Nano 控制器,惊讶地发现里面有一个 AVR mega32。这将是一项艰巨的任务,但是通过一些工作,您可能可以计算出原理图并使用他们的编程头突破自行重新编程。您最终可能不会获得比其他方式更多的功能,但这将非常有教育意义。
I opened up a Korg Nano controller yesterday and was surprised to discover that there's an AVR mega32 inside. It would be a significant undertaking, but with a bit of work you could probably work out the schematic and reprogram it yourself using their programming header breakout. You might not end up with much more functionality than you've got this other way, but it would be very educational.
我同意 Jono 的观点 - 你咬了很多 - 甚至可能最终最简单地将按键直接连接到 Arduino - 撕掉电子设备并找出一种方法将按键复用到单个通道而不丢失复调(电阻“梯子”也许)。无论如何,祝我好运。有趣的是,你会制作一个模拟键盘来插入数字合成器。
快速而肮脏的 Arduino MIDI Over USB 演示了如何通过 USB 发送/接收 MIDI,但不幸的是,这可能对您尝试做的事情没有任何帮助,因为他找到了一种发送和接收的方法来自 USB 主机的 MIDI 信号,本身不充当 USB 主机 - 与您的问题相反。然而,我认为如果您想从计算机控制您的设备,它也许会有用。
I agree with the Jono - you are biting off a lot - it might even end up easiest to hook the keys up to the Arduino directly - tearing out the electronics and figuring out a way to multiplex the keys into a single channel without losing polyphony (resistor 'ladder' maybe). I any case, good luck. Amusingly, you'd making an analog keyboard to plug into a digital synthesizer.
Quick and Dirty Arduino MIDI Over USB demonstrates how to send/receive MIDI out over USB, but unfortunately, this probably isn't any help for what you are trying to do, since he's found a way to send and receive MIDI signals from a USB host, not act as a USB host himself - the opposite of your problem. However, I thought perhaps it would be of use, if you ever wanted to control your device from a computer.
正如其他帖子中提到的,您需要使用单独的芯片来提供 USB 主机接口。这是使用 USB 主机扩展板的精彩指南由 Circuits@Home 与 Akai LPK25(USB Midi 键盘)连接。
http://blog.makezine.com/2010/11/30/usbhacking/
提供了 Arduino 草图,因此您应该能够尝试一下,但是如果 USB 主机连接不能开箱即用,那么调试 USB 主机连接可能会变得非常棘手。
As mentioned in the other posts, you would need to use a separate chip to provide the USB Host interface. Here's a great guide to using the USB Host shield by Circuits@Home to interface with an Akai LPK25 (USB Midi Keyboard).
http://blog.makezine.com/2010/11/30/usbhacking/
The Arduino sketch is provided, so you should be able to try it out, however debugging the USB Host connection could get tricky real fast if it doesn't work out of the box.