#11楼

我在大学学习钢琴演奏,然后进入交互设计,编程和使用Vim ,所以我实际上花了很多时间对这样的事物进行原型设计。

通过使用多媒体艺术家的图形编程语言“ Pure Data ”以及Alex Andre的外部x11key,您可以在Linux中快速完成此工作。

在Mac上,您可以使用MidiStroke 。 我相信Windows上的一种方法涉及MidiOx和AutoHotKey工具。 在另一个时间我有一个版本使用Max / MSP的Java插件。 我相信Patrice Colet为Pure Data制作了一个外部窗户,但是我似乎无法找到它。 此外, MaxMSP的外部设备可以在Windows上执行此操作。 最后,非自由但令人敬畏的Osculator可以做你想要的 - 看功能页面。

当我开始工作时,我从来没有坚持过,因为我无法停止使用布局工具。 不过只是把我的显示器放在电动键盘上真酷! 祝好运。

#12楼

许多键盘都有一个串行端口( RS-232 )连接器,用于将MIDI信号发送到计算机。 我使用一个名为Girder的程序将串口通信转换为键盘笔划。

Girder具有“映射”功能,可让您逐个将每个键映射到相应的击键。

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

#13楼 关于MIDI

你声明你“对MIDI一无所知”。 一旦掌握了MIDI技术,它就相当直接,但一开始就会让人感到困惑。 其中一个对我理解MIDI基础非常有帮助的资源(如果你想编写 MIDI交互,这当然是必要的),是一本名为MIDI for the Technophobe的书。 这是一本易读的书,非常有帮助。

Pure Data&Max

根据我开发交互式多媒体的经验,我遇到过两个非常类似的程序,可以帮助连接和映射来自任何设备的信号/输入。

这些是适用于Mac环境的Max和适用于PC环境的Pure Data 。 两者都有大量的在线文档和YouTube教程。 视频Max / MSP教程1 - 使用计算机键盘作为midikeyboard(能效风格)演示了一个用Max构建的程序,它将计算机键盘映射到MIDI键盘的输入(这基本上与您尝试做的完全相反)。 您可以使用相同的模式获得预期的结果,但可以反转信号/映射。

AutoHotkey的

AutoHotKey是一个免费的Windows开源实用程序,允许您将设备上的键和按钮重新映射到宏。 它原生支持QWERTY键盘,游戏杆和鼠标宏。

但是,我能够找到支持您正在寻找的特定映射的实现。 这两个线程解释了这个过程:

在AutoHotkey中支持MIDI IN ,讨论用例。 作者正在寻找能够检测MIDI IN输入并将其转换为按键的程序 。

MIDI输入库 ,作者问题的解决方案以及AutoHotKey的发布代码/补丁,它实际上实现了您的预期结果。

基本上,看起来AutoHotKey以及这个用户的自定义补丁,将提供您创建从MIDI键盘到QWERTY键盘输入信号的映射所需的精确内容。 您所要做的就是安装,配置和定义映射。

还要别的吗?

一般来说,其他一些答案已经为您提供了有关MIDI和MIDI编程的更多信息,但正如您的帖子所说,这似乎并不是您想要的。 如果可能的话,我想帮助你更多,但如果你能更具体地了解你正在寻找的信息类型,那将会更容易。 例如,您是否对如何将MIDI键盘的输入信号转换为QWERTY键盘信号更感兴趣,或者您是否主要关注针对特定问题的现成解决方案 ? 您还在寻找什么尚未解决?

#14楼

对我而言,听起来像是在寻找关于如何自己构建这个的建议,而是更多地询问已经有哪些资源来实现你想要的东西。 根据您的操作系统,有许多方法可以实现这一点,而无需从头开始编写您自己的程序:

MIDI笔画

自由。 适用于Mac OS X 10.3及更高版本 。 这个特别配备“能够使用任何MIDI键盘作为完整的电脑键盘更换。”

Bome的MIDI翻译器

免费/明信片(这有点奇怪)。 对于Windows 2000及更高版本,以及Mac OS X. 它最初似乎更倾向于AutoHotkey类型的使用,但进一步看,我认为它可以做你想要的很好。

Max和aka.keyboard

自由。 对于Mac OS X. 不完全是“开箱即用”的解决方案,但如果您对基本设备配置感到满意,那应该不会太糟糕。

#15楼

看看MAME街机游戏。 他们构建了硬件设备,允许从任意数量的不同项目输入。 例如, iPac将来自输入设备的信号转换为USB,然后计算机可以使用它来模拟密钥。 您可以使用任何方式安排的输入设备的任何组合,这些输入设备看起来很舒服,不需要疯狂的编程逻辑 - 因为解释输入的软件已经完成并经过充分测试。

我已经看到用这种方法制造的飞行模拟器驾驶舱输入,定制信息亭和投票系统.....价格合适!

#16楼

试试Bome的MIDI翻译器 。

它可以跨平台工作,可以轻松地将任何MIDI输入转换为键盘,快速设置和配置,以及免费供个人使用。

有一个教程, 快速提示:MIDI翻译 - MIDI到击键 ,如何轻松设置它:

基本上,你可以做的事情有很多种,包括和弦键和修饰键。 我将它用于我的现场音频设备,用我的钢琴来控制我的DAW ,从来没有遇到过问题。

#17楼

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

如果您的声卡不支持MIDI I / O(ins / outs / thrus),那不是问题。 您可以考虑研究和投资外置MIDI桌面转换器。 许多都配备了进一步将MIDI输出转换为USB 2.0(完全通过现有的声卡)。

例如:使用计算机键盘和铅笔工具通过Z和X更改键选项获得“类似人类”的优雅音符效果非常困难。 相反,当你自己的手指可以立即用自己的物理八度音域寄存器范围内的MIDI键盘播放时!

我意识到可能涉及预算限制。 但是,这些看似便宜的“卡西欧”5型八度音键盘中的一些在Radio Shack以低于100.00美元(*或更低)的价格出售,这是你需要的所有(另外,他们的一些车载声音补丁和音序器模块听起来和处理其他事情也非常好)。

对于现有声卡的外部MIDI转换器,我特别考虑到Mac平台上为您进行了 :

很多这种外部MIDI转换信息一开始对你来说可能很麻烦,所以为了你的考虑因素和预算,我把它们分解为“用户友好”:

使用DAW时,将虚拟键盘作为VST进行简化是没有错的。 他们有自己的位置。

但是,你听起来像一个有成就的键盘手。 那么,为什么不考虑我刚才提到的外部MIDI转换/键盘选项呢?

祝你好运,我希望这会给你一些能够并且对你有用的想法!

#18楼

使用.NET DirectSound接口挂钩到MIDI设备应该相当容易。 您将需要识别您的目标MIDI设备,然后获取代码以收听传入的消息(有关于通过Google执行此操作的文章)。

由于您将MIDI输入作为键盘使用,因此基本上只需要检测两条MIDI信息,即音符开和音符关。 MIDI信息是三个数据字节,指定命令,音符和力度。 音符关闭只是音符编号(有时'坏'MIDI堆栈以零速度发送音符,您也必须预期)。

一旦你有消息翻译它们,键盘输出应该是非常简单的.NET。

关于技术性的其他答案中有很多建议; 我只是想让你了解实际的MIDI信息。 祝好运!

#19楼

您可以在MIDI DotNet中使用.NET中的源代码示例访问硬件。

一个完整的工作样本作为源代码创建MIDI音符数据流是在VB 5/6-Tipp 0521:MIDI-Töneerzeugen (Visual Basic 6.0,某处也是.NET版本)

一种模拟键盘敲击的方法是在VB 5/6-Tipp 0155:Tastaturereignisse simulieren (Visual Basic 6.0,某处也是.NET版本)

并且识别击键在Tipp-Upload:VB.NET 0266:Globaler KeyHook中描述 。

然后,只需为钢琴演奏者使用一个好的工作矩阵

在钢琴上,当你是一个好的玩家时,你可以在键盘上有10个手指,如果矩阵可用,你可以比我想的任何计算机键盘用户快得多。 :-)

在这种情况下,如果我理解你的问题,那应该不是一件大事。

#20楼

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

#21楼

您可以使用简单的AutoIt脚本来读取MIDI事件,请参阅MIDI输入 。

您还需要MIDI UDF并模拟按键 。

读取MIDI事件应该很容易,但不同的MIDI控制器(乐器)具有不同的功能。 尝试找出你的MIDI钢琴首先可以做什么,然后看看如何最好地将这些功能映射到模拟QWERTY键盘按下。

如果需要,您可以在屏幕上或托盘中放置一些东西来帮助您查看正在进行的操作(即,对于Shift , Ctrl和Alt模拟)。

#22楼

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

一种从键盘捕获MIDI数据的方法。 根据界面:MIDI接口(经典)或USB MIDI接口(现代),最可能的接口是计算机,因为它提供了最多的选项。 USB主控微控制器并不像使用计算机那么简单。

将MIDI数据转换为击键的方案。 就像一个用户指出的那样,和弦是要走的路,因为键的数量不依赖于钢琴键的数量。

一种将密钥注入操作系统的方法。 这将要求低级驱动程序准确。 我已经玩过将键盘和鼠标数据注入到Windows 7中的应用程序中的应用程序,它可能不稳定,取决于应用程序当前是否处于焦点状态。 这是界面中最难的部分。 可能有用的是创建一个也具有串行接口的HID USB键盘微控制器。

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

嗯,通过这种类型的界面,您还可以模拟鼠标并使用一些钢琴键设置鼠标轴和按钮。 压力可用于确定鼠标指针速度。 所以你也可以消除鼠标。 此方法的另一个好处是,您连接的任何类型的输入设备都可以与虚拟串行端口通信以生成键盘和鼠标事件。 因此,如果您想添加鼓踏板或操纵杆等其他硬件,则需要调整与串行接口通信的程序。

另外一个上面的内容就像上面发布的一些使用Arduino,但也包括来自Sparkfun的USB Host Shield来处理基于USB的音乐键盘。 这允许Arduino在引导加载程序芯片中被编程为键盘或键盘鼠标组合,并允许设备作为基于USB的音乐键盘的USB主机。 然后,您可以获得两种类型的保障。 虽然,我仍然认为虚拟串口方法更灵活,从长远来看更容易编程。 Arduino设备将比桌面程序或服务更难更改。

还有另一种可能性:已经存在Chorded单手键盘。 我已经看过他们的视频,但你必须确定那些是否伤害了你的手。

#23楼 只学习速记!

从您的所有讨论中可以清楚地看出来。 从技术角度来看,您不想重新发明任何车轮。 但是,一旦你建立了连接(这个问题是什么问题)并且正在工作,你仍然需要完成大部分工作:你必须训练你的大脑。 你还必须发明最聪明,最有效的方法来做到这一点 - 一个完全脱离计算机技术流程的设计问题。 你或我们任何人都会失败。

幸运的是,这个问题在几个世纪的成熟过程中得到了解决和磨练......

学习速记!

是的,这会让你回到一些杰克。 但是,你自己的时间数百小时的价值,最终是一个不太有利的结果呢? 此外, 维基百科的速记文章称,“它看起来更像钢琴键盘”。

当然,除非你想要产生副作用。 我不得不承认,我从未想过这种可能性,看到有人用钢琴键盘敲出文字真是太有趣了!

您可以从带触摸板的USB键盘开始(或指点杆更符合人体工程学?),使用Plover进行翻译(我确信它可以配置为让非字母键保留其功能,因为它们对于编程),或者,按照线程滚动自己的USB速记键盘,或者,购买一个stenotype 。

祝好运!

#24楼

我同意Brian O'Dell的回答 - 如果这是我的项目,我会用硬件来做。 它具有独立于平台和硬件的优势 - 您的盒子取代了对MIDI-USB接口和PC API的需求。

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

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

#25楼

如果你知道用Java编码,你可以这样使用:

首先,使用send(..)方法实现javax.sound.midi.Receiver ,该方法将'Note on'事件映射到您想要的击键。

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

在收到某个键盘键的'note on'或'note off'之后,你可以通过为它指定一个KeyEvent类的常量来将它映射到你喜欢的键,比如C#4 - > KeyEvent.VK_A等等。 。 然后, java.awt.Robot的keyPress和keyRelease方法可以使用此密钥代码将键击实际发送到操作系统,从而发送到其他应用程序。

#26楼

如果您使用Linux,请使用Footware 。

它应该是你正在寻找的 - 如果你将MIDI音高调整为你喜欢的键盘映射...

我从没想过这对除了我之外的任何人都有用; o)

点赞(0)
立即
投稿
发表
评论
返回
顶部