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


当前回答

通过声卡将任何外部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转换/键盘选项呢?

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

其他回答

在Java中,可以使用JMF (Java Media framework)来转换MIDI信号。 键盘设计的基本是易于使用,即用户界面;并把常用的字符/符号放在手边。

Java Sound Resources中的示例代码和API:示例:数字信号处理(DSP)有助于理解如何处理信号。

更多参考资料:

用控件处理音频 数字音频信号处理,第二版

要解决这个问题,你需要做一些事情:

A way to capture MIDI data from your keyboard. Depending upon the interface: MIDI interface (classic) or USB MIDI interface (modern) the most likely interface is to a computer as it provides the most options. USB host microcontrollers are not as simple as just using a computer. A scheme to convert MIDI data into keystrokes. Like one user pointed out, chords are the way to go as the number of keys will not be dependent upon the number of piano keys. A way to inject a key into the operating system. This will require a low-level driver to be accurate. I have played around with applications that inject keyboard and mouse data into applications in Windows 7, and it can be flaky and depend upon whether an application is currently in focus. This is hardest part of the interface. What may work is to create a HID USB keyboard microcontroller that also has a serial interface.

串行接口将创建一个虚拟串行端口。读取MIDI数据并产生击键的软件可以向虚拟串行端口发送一个串行消息。微控制器将发送一个击键,使它看起来像一个标准的键盘输入。这将允许同时连接MIDI端口和USB MIDI键盘。

Hmmm, with this type of interface you could also simulate a mouse and use some piano keys setup for the mouse axis and buttons. The pressure could be used to determine mouse pointer velocity. So you could eliminate the mouse as well. Another benefit of this approach is any type of input device you connect could talk to the virtual serial port to produce keyboard and mouse events. So if you wanted to add other hardware such as drum pedals or a joystick it would be a matter of adjusting the program that talks to the serial interface.

Another take on the above is like some posted above to use an Arduino, but also include USB Host Shield from Sparkfun to handle USB based music keyboards. This allows the Arduino to be programmed as a keyboard or keyboard mouse combo in the boot loader chip and allows the device to act a USB host for the USB based music keyboard. Then you are covered for both types. Although, I still think the virtual serial port method is more flexible and would be easier to program in the long run. The Arduino device will be harder to change than a desktop program or service.

还有另一种可能: 单手和弦键盘已经存在。我看过关于它们的视频,但你必须确定它们是否会伤害你的手。

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

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

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

我同意Brian O'Dell的回答——如果这是我的项目,我会用硬件来做。它的优点是与平台和硬件无关——你的盒子取代了对MIDI-USB接口和PC API的需求。

mbed是一个非常容易学习的快速原型平台,与Arduino IMHO相比具有多种优势(在线编译器,512 KB闪存,96 MHz, c++语言)。它有一个USB键盘接口和一个预先为您编写的USB Midi接口。

社区是非常友好和愿意帮助的,有很多现有的项目同时使用MIDI和USB隐藏仿真-搜索Youtube“mbed MIDI”或类似的。

学习速记吧!

从你们的讨论来看,这很明显。从技术角度来看,你不想重新发明任何轮子。但是,一旦你建立了联系(这个问题要问的是什么)并开始工作,你仍然有大部分工作要做:你必须训练你的大脑。你还必须发明最聪明、最有效的方法来做到这一点——这是一个完全脱离计算机技术的设计问题。你或者我们任何人都不够格。

幸运的是,经过几个世纪的成熟,这个问题已经得到了解决和磨练……

学速记!

是的,这会花掉你一大笔钱。但是,你自己几百个小时的时间又有什么价值呢?结果却不是那么好。此外,维基百科上的速记文章说,“它看起来更像钢琴键盘”。

当然,除非你想要一个杂耍效果。我不得不承认,我从来没有想过这种可能性,看到有人从钢琴键盘上打出一段文字真的很有趣!

你可以从一个带有触控板的USB键盘开始(或者一个指向杆会更符合人体工程学?),使用Plover来翻译它(我相信它可以配置为让非字母键保留其功能,因为它们对编程至关重要),或者,遵循线程Re: Plover键盘来滚动你自己的USB速记键盘,或者,购买一个速记键盘。

好运!