使用钢琴键盘作为电脑键盘[关闭]

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


#1楼

如果你不想自己做任何编程,但只是想解决问题,你可以购买USB-MIDI键盘,你可以重新分配任何键来发送QWERTY键盘输出信号而不是MIDI输出,示例M-Audio Axiom Pro

此方法适用于任何操作系统和任何支持标准USB键盘的计算机,因为MIDI键盘将自己标识为标准QWERTY键盘。


#2楼

尝试使用基于微控制器的系统,如Arduino


#3楼

这不会太难。

我假设你在Windows上 ,虽然不确定。 我用简单的旧C ++编写了一个MIDI音序器http://pianocheetah.com ,它可以让你用钢琴键盘来运行命令。 没有任何理由你不能将键推入键盘输入流。

但现在来吧。 你还记得第一次学习键盘花了多长时间,对吧? 你愿意再次通过吗? 你愿意用一堆愚蠢的关键符号污染你的祝福键盘吗?

您需要使用至少26个alpha,10个数字,11个标点符号,以及至少12个功能键及其移位状态。 这就是6​​0键和移位状态。 那会烧掉5个八度音阶。 你将做钢琴“跳”=全部=时间。 说再见触摸打字。

你可以从RSI中拯救自己,但你为自己创造了另一种不同类型的噩梦。

祝你的老板在工作中给你买MIDI键盘好运。

如果你学会了真正弹钢琴,你就学会了如何摆脱压力。 在QWERTY键盘上执行此操作。 没有紧张。 开始慢。


#4楼

实际上,我刚刚研究过这个,试图将Rock Band鼓输入到我的计算机上(制作一个Java自制鼓模拟器)无论如何,我在这里问了一个问题, 时间延迟问题 (那里有轮询代码) ,以及我试图做的事情。) 如果我能找到我的程序,我可以给你代码,它使用第三方API( JInput )。

祝你好运。


#5楼

多年来我没有做任何MIDI编程,但你的基本想法非常合理(没有双关语)。

MIDI是“事件”(或“消息”)的流,最基本的两个是“音符开”和“音符关”,它们带有音符编号(0 = C中间C下五个八度音阶,到127 = G在中间C上方的G上方五个八度音阶,半音调)。 这些事件在速度敏感(“触敏”)的键盘上带有“速度”数字,其力(你猜对了)在0到127之间。

在速度,和弦和踏板之间,我认为你可以为钢琴键盘提供一个非常好的“打字”界面。 特别是Chording可能是一种非常强大的技术 - 正如我在评论中提到的那样,这就是为什么普通速记员可以使用stenotype机器来跟上人们连续几个小时说话,甚至顶级打字员也不会通过普通打字机式键盘可以持续任何时间。 与机器速记一样,你需要一个关于和弦和和弦序列含义的“字典”。 (你能告诉我曾经在机器速记的软件方面工作吗?)

要做到这一点,基本的部分是:

  • 接收MIDI输入。 不要试图自己这样做,使用库。 编辑 :显然,Java Sound API 支持MIDI ,包括从MIDI控制器接收事件。 凉。 此页面也可能有用。
  • 将该数据转换为您要发送的击键,例如通过我上面提到的字典。
  • 将击键输出到计算机。

要与软件最广泛地兼容,您必须将其写为键盘设备驱动程序。 这是操作系统的插件,用作键盘事件的源,与底层硬件(在您的情况下,钢琴键盘)交谈。 对于Windows和Linux,您可能希望使用C来实现。

但是,由于您只是生成击键(而不是试图拦截它们,我多年前就试图拦截它们),您可以使用操作系统发送人工击键的任何功能。 Windows有一个用于执行此操作的界面(可能是几个,我正在考虑的是SendInput但我知道有一些类似的“日志”界面),我确信其他操作系统也可以。 这可能足以满足您的目的 - 这是我开始的地方,因为设备驱动程序路径会很尴尬,您可能不得不使用与Java不同的语言。 (我是Java的忠实粉丝,但操作系统用来与设备驱动程序通信的接口往往更容易通过C和类似的方式使用。)


更新 :更多关于击键和弦的“字典”:

基本上,字典是一个trie (谢谢,@ Adam),我们搜索最长前缀匹配。 细节:

在机器速记中,速记员通过同时按下stenotype机器上的多个键来写入,然后将它们全部释放。 他们称之为键盘的“中风”; 就像在钢琴上弹奏和弦一样。 经常(但不总是)笔划对应于口语的音节。 就像音节一样,有时一个笔画(和弦)本身就有意义,有时它只有跟随笔画的意思。 (认为​​“好”与“好”后跟“再见”)。 虽然他们会受到他们学习的学校的严重影响,但每位速记员都会有自己的“词典”,说明他们用什么笔画来表示什么,他们将在他们的工作生涯中不断磨练的词典。 字典将具有条目,其中速记部分(简称“steno”)是一个笔划长或多个笔划长。 通常,将存在具有相同起始行程的若干条目,这些条目通过它们的长度和随后的笔划来区分。 例如(我不会在这里使用真正的steno,只是占位符),可能有以下条目:

A     = alpha
A/B   = alphabet
A/B/C = alphabetic
A/C   = air conditioning
B     = bee
B/C   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值