我有RSI问题,尝试了30种不同的电脑键盘,都让我很痛苦。弹钢琴不会给我带来痛苦。我已经弹钢琴20年了,没有任何疼痛问题。我想知道是否有一种方法可以从MIDI键盘捕获MIDI并输出键盘敲击。我对MIDI一无所知,但我想要一些关于如何将这个信号转换成按键的指导。


当前回答

如果你懂Java编程,你可以这样使用:

首先,实现一个javax.sound.midi.Receiver,使用send(..)方法将“Note on”事件映射到你想要的击键。

您需要使用它的getMessage方法获取MidiMessage的内容,并按照您的方式解释它。消息字节的含义可以在MIDI消息中找到。

在接收到某个键盘键的'note on'或'note off'后,您可以通过为它分配KeyEvent类的常量将其映射到您喜欢的键,例如c# 4 -> KeyEvent。VK_A等等。然后,java.awt可以使用这个键代码。Robot的keyPress和keyRelease方法实际发送击键到操作系统,从而发送到其他应用程序。

其他回答

一个很好的。net库,完全支持midi (BASS),请访问http://www.un4seen.com。

而对于另一部分,将键盘midi音符转换为按键等,我会使用AutoItX, ActiveX/COM和DLL接口来实现autoIt。信息和下载,请登录http://www.autoitscript.com/site/autoit/

不需要编写键盘驱动程序。

通过声卡将任何外部MIDI键盘作为控制器播放,您将获得更好和更愉快的结果(无论您喜欢使用哪种操作系统和/或DAW程序)。然后将其路由到你的GB软件(或其他软件),并实时生成他们提供给你的许多声音。

如果您的声卡不支持MIDI I/O (in / out /thrus),这不是问题。您可以考虑研究和投资一个外部MIDI桌面转换器。许多配备进一步将MIDI输出转换为USB 2.0(通过传递现有的声卡)。

例如:通过电脑键盘和铅笔工具的Z和X改变键来获得“像人类一样”的装饰音效果是非常困难的。相反,你自己的手指可以用MIDI键盘在它自己的物理八度寄存器范围内演奏——立即!

我知道可能涉及预算限制。但是,一些看似便宜的“卡西欧”5型八度键盘在Radio Shack卖不到100美元(*或更少)就是你所需要的(另外,他们的一些板上声音补丁和音序器模块声音和处理其他事情也非常好)。

RadioShack MIDI键盘选项。

至于现有声卡的外部MIDI转换器,我已经为您运行了一些谷歌搜索,具体针对Mac平台:

很多外部MIDI转换信息一开始可能对你来说很麻烦,所以我把事情分解成“用户友好”的,以供你考虑和预算:

MIDI声卡

在使用DAW时,将虚拟键盘作为VST使用并没有什么错。他们有自己的位置。

但是,你听起来像个熟练的键盘手。所以,为什么不考虑我刚才提到的外部MIDI转换/键盘选项呢?

祝你好运,我希望这篇文章能给你一些对你有用的想法!

使用. net DirectSound接口这样的东西来连接到MIDI设备应该是相当容易的。您需要识别目标MIDI设备,然后获取用于侦听传入消息的代码(有关于通过谷歌进行此操作的文章)。

由于您正在使用MIDI in作为键盘,因此基本上只需要检测两个MIDI消息,即打开和关闭。MIDI消息是三个数据字节,指定命令、音符和速度。note off只是音符号(有时“坏”MIDI堆栈以零速度发送音符,这也是你必须预料到的)。

一旦你有了转换它们的消息,从。net输出的键盘应该相当简单。

其他答案中有很多关于技术细节的建议;我只是想让你对实际的MIDI消息有一个概念。好运!

你可以看看和弦键盘。它们的优点是在使用它们之前不需要为它们编写驱动程序,有些类似于钢琴键盘的布局。

许多键盘都有一个串行端口(RS-232)连接器,向计算机发送MIDI信号。我使用一个名为“梁”的程序将串口通信转换为键盘敲击。

“梁”有一个“映射”功能,允许您将每个键一个接一个地映射到相应的击键。

这可能是你正在寻找的简单解决方案!