有知 道的么有了解MIDI键盘的吗,这个能作曲吗?

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


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

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

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

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

  • 接收MIDI输入。不要试图自己这样做,使用库。编辑:显然,Java Sound API支持MIDI,包括从MIDI控制器接收事件。凉。此页面也可能有用。
  • 将该数据转换为您要发送的击键,例如通过我上面提到的字典。
  • 要与软件最广泛地兼容,您必须将其写为键盘设备驱动程序。这是操作系统的插件,用作键盘事件的源,与底层硬件(在您的情况下,钢琴键盘)交谈。对于Windows和Linux,您可能希望使用C来实现。

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

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

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

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

    (这些字母不是音符,只是抽象的标记。)

    请注意,A会启动多个条目,并且还会注意到如何翻译C笔划取决于您之前是否看到了A,B,或者您是否刚刚开始。

    另请注意(尽管未在上面的极小样本中显示),可能有多种方法可以"播放"相同的单词或短语,而不仅仅是一种。速度训练器可以根据手的位置使前一个词更容易从下一个词流到下一个词。那里的音乐有一个明显的类比,你可以使用它来使你的打字流程更类似于播放音乐,以防止这对你的钢琴演奏产生负面影响,并最大限度地提高实际帮助RSI的可能性。

    在将steno转换为标准文本时,我们再次使用"最长前缀匹配"搜索:转换算法从写入的第一个笔划开始,并查找以该笔划开始的条目。如果只有一个条目,并且它只有一个笔划,那么我们可以可靠地说"这是要使用的条目",输出相应的文本,然后在下一个笔划中重新开始。但更可能的是,该笔划会开始多个不同长度的条目。因此,我们查看下一个笔划,看看是否有条目以这两个笔划开始顺序;等等,直到我们得到一个匹配。

    所以使用上面的字典,假设我们看到了这个序列:

    以下是我们如何翻译它:

  • A是三个不同长度的条目的开始;看下一击:C
  • A/C只匹配一个条目;输出"空调"并从下一次开始新鲜:B
  • B开始两个条目;看下一笔:B
  • B/B没有开始任何事情;取最长的前一场比赛(B)并输出("蜜蜂")
  • 输出B ="bee",我们的缓冲区中仍然有B笔划。它会启动两个条目,因此请查看下一个笔划:C
  • B/C匹配一个条目;输出"因为"并在下一个笔划中重新开始:A
  • A开始三个条目;看下一笔:B
  • A/B开始两个条目;看下一笔:C
  • A/B/C仅匹配一个条目;输出"字母"并从下一个笔划开始新鲜:A
  • A开始三个条目;看下一笔:B
  • A/B开始两个条目;看下一击:D
  • A/B/D与任何内容都不匹配,因此请使用最长的前一个匹配项(A/B)并使用它输出"alphabet"。这让我们仍然在缓冲区中D。
  • D开始两个条目,所以我们通常会查看下一个笔画&nd;—但是我们已经处理了所有笔画,所以请单独考虑它。孤立地,它翻译为"狗",因此输出。
  • 你有一个你读过但尚未翻译的笔画缓冲区。
  • 您总是希望将最多笔画与您可以使用的单个条目进行匹配。 A/B应翻译为"字母",而不是"alpha"和"bee"。
  • (上面没有显示)你可能有不能翻译的笔画序列,因为它们与字典中的任何内容都不匹配。 (Steno人使用名词"unranslate" - 例如,使用我们的字典,笔画E将是"unranslate"。)
  • (上面没有显示)根据更广泛的背景,一些steno理论允许同一组笔画意味着不止一件事。斯特诺人称之为"冲突"。你可能想要在你的项目中禁止它们,事实上当steno过去由stenographer手动翻译时,冲突很好,因为他们只知道句子中的哪个位置是正确的选择,但随着时间的推移机器翻译,无冲突的steno理论专门出现,以避免必须通过由此产生的翻译文本和"修复"冲突。
  • 实时翻译(你正在做的)意味着如果你收到部分匹配,你会想要在等待下一个和弦的同时抓住它—但可能只有一个超时,此时您将尽可能地翻译缓冲区中的内容。 (或者你可能不希望超时;这是你的电话。)
  • 可能最好有中风说"忽视以前的中风"
  • 可能最好让中风"完全清除缓冲区而不输出任何东西"

  • 考虑在模拟usb(或ps / 2?)键盘的硬件中做一些事情。您将不再依赖于特定的操作系统或特定的操作系统API。硬件解决方案经得起时间的考验。当其他人都运行Windows 11时,不要在Windows 7中使用旧的API卡住! Arduino很容易学习。

    • Arduinos已被用于模拟键盘设备

    Arduino有很多信息和帮助。它是为新手打造的硬件黑客平台。只有谷歌推动Arduino,它才会变大。

    编辑:虚拟USB键盘软件和硬件


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

    并且识别击键在Tipp-Upload:中一个完整的midi支持(BASS)的好库,请访问。

    无需编写键盘驱动程序。


    有一个名为GlovePIE的程序。您可以使用简单的脚本语言对其进行编程,我相信它支持MIDI。我不确定这是否符合"Java"类别,但仍然是一个很棒的程序。我用它来控制使用PS3控制器的机器人。它非常强大。


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

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

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


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

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

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

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

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


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

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


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

  • 一种从键盘捕获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单手键盘。我已经看过他们的视频,但你必须确定那些是否伤害了你的手。


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

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

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

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


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

    如果您的声卡不支持MIDI I / O(ins / outs / thrus),那不是问题。您可以考虑研究和投资外置MIDI桌面转换器。许多都配备了进一步将MIDI输出转换为USB ,它可以让你用钢琴键盘来运行命令。没有任何理由你不能做同样的事情来推动键

    但现在来吧。你记得你花了多长时间学习
    你是否愿意用你的健康键盘污染你
    一堆愚蠢的关键符号到处都是?

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

    您可以将自己从RSI中解脱出来,但是您已经创建了另一个
    不同类型的噩梦给自己。

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

    如果你学会了真正弹钢琴,你就学会了
    如何发挥无压力。在QWERTY键盘上执行此操作。


《新手MIDI基础教程》由会员分享,可在线阅读,更多相关《新手MIDI基础教程(27页珍藏版)》请在人人文库网上搜索。

1、写给新手们的MIDI 基础教程一、关于MIDI 的几个初步概念在切入正题以前让我们首先来简单地认识一下MIDI,了解几个初步的概念。这对于我们了解波表合成技术可以起到“引航”地作用。1.MIDI 简介MIDI 是 Musical Instrument Digital Interface的简称,意为音乐设备数字接口。它是一种电子乐器之间以及电子乐器与电脑之间的统一交流协议。从80 年代初问世至今,它经历了长时间的发展, 现已成为电脑音乐的代名词。我们可以从广义上将为理解为电子合成器、脑音乐的统称,包括协议、设备等等相关的含义。电2.三个标准由于早期的 MIDI 设备在乐器的音色排列上没有统一的标

2、准,同一首乐曲时也会出现音色偏差。为了弥补这一不足,便出现了造成不同型号的设备回放GS、GM 和 XG 这类音色排列方式的标准。之所以将 GS 排在第一位是由于它最早出台,并且是由业界大名鼎鼎的ROLAND公司制定并推出的。ROLAND是日本非常出名的电子乐器厂商,其生产开发的电子键盘、MIDI音源以及软波表都享有盛誉。所以GS 颇具权威性, 它完整的定义了128 种乐器的统一排列方式,并规定了MIDI 设备的最大复音数不可少于24 个等详尽的规范。GM标准则是在GS 的基础上,加以适当简化而成的。由于它比较符合众多中小厂商的口味,一时间成为了业界广泛接受的标准。在电子乐器方面唯一可与ROLA

3、ND相匹敌的YAMAHA公司也不甘示弱,于94 年推出自己的标准XG。与 GM 、 GS 相比 XG 提供了更为强劲的功能和一流的扩展能力,并且完全兼容以上两大标准。而且凭借YAMAHA公司在电脑声卡方面的优势,使得XG 在PC 上有着广阔的用户群。3.MIDI文件的本质眼下在一些游戏软件和娱乐软件中我们经常可以发现很多以 MID 、 RMI 为扩展名的音乐文件,这些就是在电脑上最为常用的 MIDI 格式。有的朋友可能会惊奇的发现,一首 4 分钟左右长度的 MIDI ,其容量只有百余 K 字节。而同样长度的波形音乐文件( *.WA V )则高达 40MB 左右,即使是经过高比例压缩处理的 MP

4、3 也要有 4MB 大小,相比之下为什么 MIDI 会如此小巧玲珑呢?因为 MIDI 文件并非像 WAV 或 MP3 那样量化的纪录乐曲每一时刻的声音变化, 它只是一种描述性的 “音乐语言” ,只要将所要演奏的乐曲信息表述下来就可以了。譬如“在某一时刻,使用什么乐器,以什么音符开始,以什么音调结束,加以什么伴奏”等等,这些信息所占用的几十 K 空间对于如今大容量的硬盘来说只是沧海一粟罢了。而且小巧的体积也成为 MIDI 越来越受到欢迎的因素之一。4.MIDI 文件的回放合成手段既然 MIDI 文件只是一种对乐曲的描述, 本身不包含任何可供回放的声音信息,那么一首首动听的电脑音乐又是如何被我们的

5、声卡播放出来的哪?这就要通过形式多样的合成手段了。就电脑声卡而言,最为常见的手段是FM 合成与波表合成。前者多用于以前的ISA声卡, FM 是“频率调变”的英文缩写,它运用声音振荡的原理对MIDI 进行合成处理。但由于技术本身的局限,加上这类声卡采用的大多数为廉价的YAMAHA OPL系列芯片, 效果自然很差劲;而波表合成则要好得多。二 MIDI 合成技术1. FM 合成FM 合成是根据傅立叶原理一个任何形状的波形都可以用几个正弦波的叠加来解释。它通过正弦波来模拟各种乐器的波形。但是由于民用市场上,声卡的FM 振荡器只有2到 3 个,因此导致效果很差,坏了 FM 的名声。实际上,专业领域中 F

6、M 一般有 20 个左右的振荡器,效果已经很好了。2采样合成提到波表合成, 就必须先提到采样。 采样通常说来就是一段声音的样本, 比如说钢琴中央 C 的声音。假设如果所有的声音都可以被记录下来,那么当合成时,只需要回放声音样本就可以了。因此,如果可以的话,你可以完全记录下钢琴 88 个键的声音,到时候回放波形就可以了,效果会很逼真,不是吗?3波表合成采样合成的优点是可以提供最完美的还原效果,但是有一个很大的缺点容量问题,设想一个乐器如钢琴,有88 键,还有各种不同的音量,那么采样的总量将达到88*N个,假设一个采样需要1MB ,这么多的采样需要多大?因此,波表合成产生了。波表合成就是通过一定的

7、算法用有限个真实的采样模拟无限种采样的效果即真实乐器的效果。波表合成对采样进行升调,降调,增益(提高音量)或衰减(减少音量)的处理,然后输出处理后的波形。波表合成的缺点之一是有些设备的波表是固定的,无法更换。4物理建模合成物理建模合成就是通过建立一个真实乐器的声学模型来模拟真实乐器发声。由于采用的大量的数学和物理模型,因此不需要采样,但是需要极为强大的运算能力。物理建模对于吹管乐器以及弦乐器的还原效果极好!但是也是有缺点的。如果说采样的缺点在于“死”,那么物理建模合成的缺点在于模型太普遍了,无法描述特定乐器的一些特殊个性。比如不同牌子的钢琴和小提琴音色就不同。三 MIDI 合成的现在与未来1

8、SoundFontSoundFont 是如今民用音乐制作领域中普遍采用的一种采样合成技术,特点就是可以随意更换波表和采样,因此这种技术拥有无穷的扩展力。除了创新持 Soundfont ,现在很大一部分合成软件也支持Soundfont了。AWE32级别以上的声卡支2 GIGA Studio这是目前专业领域风头正劲的软采样,它的特点或者说是唯一的优点就是在于可以提供对 GB 容量级别的采样的支持(好恐怖 )。GigaStudio 由于使用了GSIF 接口,配合使用此接口的声卡可以达到几乎实时的合成响应速度,只需要配上一块支持GSIF 的音频卡,MIDI 合成与采样就变得如此简单方便。3插件音源也是

9、软件采样或波表的一种,格式主要有VSTi和 DXi 。即在Cubase 或Cakewalk Sonar中使用的音源。MIDI 发展到现在,已经达到了很高的境界。目前MIDI合成部分可以说是“软”风劲吹。现在的音乐家已经越来越依赖于MIDI合成乐器而不是真实乐器了,可以说,再过两年,MIDI乐器的前景将会变得明朗。四 MIDI 合成器音色质量与合成器性能的衡量标准1容量理论上,一个音色的容量越大,还原越真实。因此,容量对于MIDI合成器的好坏是个很重要的衡量标准。2复音数就是一个设备可以同时发出多少个声音,比如Sound Blaster Live! 宣称它的复音数为1024 ,也就是可以同时发出

10、 1024 种声音。3算法及其他除了以上的两条,最重要的就是算法了。可以说,一个MIDI 合成器的好坏,采样决定60%,算法决定 40%。看待算法的很显著特征就是看它可以提供多少个参数。一般来说,参数越多,可供调节的余地越大,效果也就越好。五电脑音乐系统的组成一个一个最简单的电脑音乐系统是由一台电脑,一个硬件合成器(或软件合成器或音源)MIDI 键盘(输入设备) 。总花费在2 万多元,如果使用软件合成器,花费还会更少。,下面介绍一下各种设备:1、合成器( Synthesizer):传统意义上是用振荡器(Oscilator )来产生声音的一种电子乐器。通过对振荡器产生的波形进行各种处理,可以合成

11、新的音色,因此称之为合成器。2、音源( Tone Generator):如果把合成器的键盘部分去掉,只剩下发声模块,就称之为音源。3、采样器( Sampler):合成器和音源的内置音色一般是固定的,不能更换的。如果音色可以像 CD 一样更换, 岂不是更好?于是, 采样器就诞生了。采样器不单是可以更换音色的音源,还拥有采样功能。收藏分享评分回复引用订阅TOP小迷糊发短消息加为好友小迷糊当前离线UID902帖子 552 精华 0 积分 526 阅读权限50 在线时间18 小时注册时间 最后登录 高级会员2#发表于 23:47 |只看该作者话说对称

在切入正题以前让我们首先来简单地认识一下

,了解几个初步的概念。这对于我

们了解波表合成技术可以起到“引航”地作用。

的简称,意为音乐设备数字接口。它是一种

电子乐器之间以及电子乐器与电脑之间的统一交流协议。从

年代初问世至今,它经历了

现已成为电脑音乐的代名词。

我们可以从广义上将为理解为电子合成器、

脑音乐的统称,包括协议、设备等等相关的含义。

设备在乐器的音色排列上没有统一的标准,造成不同型号的设备回放

同一首乐曲时也会出现音色偏差。为了弥补这一不足,便出现了

排在第一位是由于它最早出台,并且是由业界大名鼎鼎的

是日本非常出名的电子乐器厂商,

其生产开发的电子键盘、

以及软波表都享有盛誉。

种乐器的统一排列方式,

设备的最大复音数不可少于

的基础上,加以适当简化而成的。由于它比较符合众多中小厂商的

口味,一时间成为了业界广泛接受的标准。

在电子乐器方面唯一可与

提供了更为强劲的功能和一流的扩展能力,并且完全

兼容以上两大标准。而且凭借

公司在电脑声卡方面的优势,使得

眼下在一些游戏软件和娱乐软件中我们经常可以发现很多以

文件,这些就是在电脑上最为常用的

格式。有的朋友可能会惊奇的发现,一首

字节。而同样长度的波形音乐文件(

左右,即使是经过高比例压缩处理的

会如此小巧玲珑呢?因为

那样量化的纪录乐曲每一时刻的声

只要将所要演奏的乐曲信息表述下来就可以了。

譬如“在某一时刻,使用什么乐器,以什么音符开始,以什么音调结束,加以什么伴奏”等

空间对于如今大容量的硬盘来说只是沧海一粟罢了。

越来越受到欢迎的因素之一。

文件只是一种对乐曲的描述,本身不包含任何可供回放的声音信息,那么一

首首动听的电脑音乐又是如何被我们的声卡播放出来的哪?这就要通过形式多样的合成手

段了。就电脑声卡而言,最为常见的手段是

合成与波表合成。前者多用于以前的

是“频率调变”的英文缩写,它运用声音振荡的原理对

加上这类声卡采用的大多数为廉价的

差劲;而波表合成则要好得多。

我要回帖

更多关于 midi键盘是干什么用的 的文章

 

随机推荐