本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 Arduino 的 MIDI 控制器 Keytar

发布时间:2021-10-23
分享到:

基于 Arduino 的 MIDI 控制器 Keytar

发布时间:2021-10-23
分享到:

ARKeytar 是一种基于 Arduino 的 MIDI 控制器,形状为枫木键盘,带有两个软电位器、一个 MIDI 键盘和 CC 控件。

实现这个 MIDI 控制器的想法是在看到一些人可以用软电位器、Arduino 和乐器一起做的事情之后产生的。我发现有些应用程序非常有趣。

我只发现缺少的乐器不仅仅是试图模仿吉他或向现有键盘添加音高控制。所以我决定创建一种乐器,它允许用双手在不同的 MIDI 通道上演奏两种不同的声音(就像一个可以在许多合成器上做的那样),但用一只手进行完全不同的控制。目的不是模仿吉他,而是提供以不同但不是那么彻底的新方式演奏虚拟或硬件合成器的可能性。

为了使单一乐器能够提供这些方面,我选择了吉他的形状,以便站立和坐着都可以轻松处理。在这种情况下,较大的弹奏角度有利于右手弹奏键盘的定位。

这个项目是在我的空闲时间实现的,花费了将近一年的非连续工作时间。

ARKeytar 这个名字来得非常合乎逻辑:传统上,将键盘和吉他组合在一起的乐器被称为 keytar。这个依赖于 Arduino 来生成和发送 MIDI 消息,因此它变成了 ARKeytar。

Arduino 电路和代码逻辑
Arduino Nano 或等效板是 ARKeytar 的核心。它根据触摸软电位器的位置和方式生成音符和弯音信息,并收听传入的 MIDI 键盘信息。该板接收所有这些消息并将它们发送到 MIDI 输出端口,用于任何虚拟或硬件合成器。原始键盘电路保持不变。连接在键盘的 MIDI 输出和连接到 Arduino 串行 RX 端口的 MIDI 输入电路之间进行。

循环循环连续读取两个软电位器,如果它们被触摸,则会根据触摸发生的位置发送一条消息注释。映射函数映射读取的模拟值,并根据为颈部软电位器设置的音符范围获取要播放的 MIDI 音符编号。

然后,如果软电位器被释放,则发送音符关闭消息,否则,直到压力继续,才会发送弯音消息,以连续控制音符的音高。弯音范围可以在 +-12 和 +-24 之间从控件中选择,并且必须与目标合成器上的设置一致。

因为我不是吉他手,所以我在脖子上贴了一些粘合剂,用我习惯的钢琴键盘颜色代码来指示音符的位置。第二个弦是相对于第一个弦移调的第四个(5 个半音)。

循环会定期询问串行缓冲区是否有来自键盘的消息。如果是这样,这些消息将打印到串行 TX 端口。这也在模拟读取函数之间等待时完成。执行许多 TX 端口读取意味着没有收到不完整或完全丢失的消息。

ARKeytar 可以在启动时读取某些设置。这些设置是通过一系列拨码开关给出的。这些开关由两个74HC165 移位寄存器管理。前四个指示发送软电位器生成的音符的 MIDI 通道,接下来的八个确定乐器主体上两个电位计生成的控制更改消息的目标。其他开关可用于其他目的,例如更改音高范围。

枫木琴身和琴颈
ARKeytar 琴身和琴颈均由枫木制成。

形状非常符合人体工程学,但尺寸是根据键盘和电路的尺寸确定的。为节省空间,主电路置于键盘键座下方。

我从一块 6.5 公斤的实心枫木板开始,大致切掉了一些部分,以接近正确的周长。

一步一步地,使用磨机和带式砂光机进行更精细的改进,并确定最终的内部和外部尺寸,以适合所有组件。

铣削了电池的外壳,并减薄了颈部的支撑并为孔做好了准备。空腔周围的表面降低了 3 毫米,以容纳用螺钉固定电路的聚碳酸酯板。

同时,主电路和键盘电路用螺丝固定在聚碳酸酯底座上,以便在需要维护时将其整体移动并独立于木体。还有几个孔可以用螺钉将其固定到木底座上。

琴颈也是在这个阶段制造的。它也由枫木制成,重约 700 克。软壶被放置在一个长长的聚碳酸酯片上,以使其可从木头上拆卸下来。旧 PC 的 9 针连接器用于将其连接到电路的其余部分。连接器用电线焊接到软电位器引脚上。我在执行此操作时发现了许多警告,因为高温可能会损坏锅。我注意用烙铁和电线尽可能短地接触引脚。我没有遇到任何问题。

所有部件装配在一起,同时部件和外部端口之间的连接也被建立。我使用聚碳酸酯片来定位连接器。然后,一个盖子将所有东西保持在适当的位置。

还制作了一个木帽来封闭身体内部的所有组件。这部分很薄很精致,所以拿起来很小心。它是使用标准线锯制造的。木制圆筒通过盖子上的孔粘在一起,用贯穿螺钉将盖子本身固定到身体的其余部分。

盖子还有三个用于原始键盘移调和功能按钮的孔,以及一个用于电位器的插槽。通用电源开关的孔也存在。

准备好所有零件后,组装阶段就可以开始了:

一旦我确定一切都可以正确安装,我就用最后的细节完成了所有的部分。边缘平滑,颈部完成了两个帽,每端一个。

如果您对此项目有任何想法、意见或问题,请在下方留言。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论