我有RSI问题,尝试了30种不同的电脑键盘,都让我很痛苦。弹钢琴不会给我带来痛苦。我已经弹钢琴20年了,没有任何疼痛问题。我想知道是否有一种方法可以从MIDI键盘捕获MIDI并输出键盘敲击。我对MIDI一无所知,但我想要一些关于如何将这个信号转换成按键的指导。
当前回答
您可以使用一个简单的AutoIt脚本来读取MIDI事件,请参阅MIDI输入。
您还需要MIDI UDF和模拟按键。
读取MIDI事件应该很容易,但不同的MIDI控制器(仪器)具有不同的功能。首先试着找出你的MIDI钢琴能做什么,然后看看你如何能最好地将这些功能映射到模拟qwerty键盘上。
如果你愿意,你可以在屏幕上或托盘上有一些东西来帮助你看到你正在做什么(也就是说,对于Shift, Ctrl和Alt模拟)。
其他回答
如果你使用Linux,可以去Footware看看。
它应该正是你所寻找的-如果你调整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方法实际发送击键到操作系统,从而发送到其他应用程序。
实际上,我在这个工作了一段时间前,试图捕捉摇滚乐队鼓输入到我的计算机(做一个小Java自制鼓模拟器)无论如何,我问了一个问题在这里,时间延迟问题(有轮询代码在那里,以及我试图做的事情。)如果我能找到我的程序,我可以给你的代码,它使用第三方API (JInput)。
祝你好运。
以MAME街机游戏为例。他们已经建立了硬件设备,允许输入任意数量的不同项目。例如,iPac将输入设备的信号转换为USB,然后计算机可以使用USB来模拟按键。您可以使用任意组合的输入设备,只要不需要疯狂的编程逻辑就可以,因为解释输入的软件已经完成并经过了良好的测试。
我见过飞行模拟器座舱输入,自定义亭,和投票系统建立在这种方法.....而且价格也很合理!
您可以在MIDI DotNet中使用。net中的源代码示例访问硬件。
创建MIDI notes数据流的完整工作示例是在VB 5/6-Tipp 0521中:MIDI-Töne erzeugen (Visual Basic 6.0,某处是.NET版本)
一种模拟键盘敲击的方法是在VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0,某处是.NET版本)
和识别击键在tip - upload: VB中有描述。NET 0266: Globaler KeyHook。
然后,为钢琴演奏者使用一个良好的工作矩阵
在钢琴上,如果你是一个优秀的演奏者,你可以有10个手指在键盘上,如果矩阵是可用的,我认为你可以比任何电脑键盘用户更快。: -)
在这种情况下,如果我没有理解错你的问题,这应该不是什么大事。
推荐文章
- 移动文本字段时,键盘出现迅速
- 电话:用于文本输入的数字键盘
- 出现键盘时,Flutter小部件将调整大小。如何预防这种情况?
- 当文本字段被选中时,滚动UITableView
- 你如何告诉如果大写锁定使用JavaScript?
- 我如何检测软件键盘在Android设备上是否可见?
- Android:当焦点在EditText上时自动显示软键盘
- 如何解散键盘的UITextView与返回键?
- 如何解除屏幕上的键盘?
- 在JS/jQuery中绑定方向键
- Android:我如何防止软键盘把我的视图往上推?
- 编辑文本聚焦时如何显示软键盘
- 运行javascript函数时,用户完成输入,而不是上键?
- 把钢琴键盘当作电脑键盘使用
- Xcode 6:键盘在模拟器中不显示