我构建了这些音乐音序器。
只是它不完全是音序器,它是音序器的物理接口。音序器是一个在音序器连接的笔记本电脑上运行的应用程序,这个东西可以让用户在运行中制作鼓循环。这很有趣,但它需要一台笔记本电脑,因为音序器不是“板载”的。
我想要的是在我的设备上进行测序。
现在让我们假设我知道如何解决 USB MIDI 连接的类合规问题,还假设我可以弄清楚如何连接 arduino 以从 5 针 DIN 端口发送 MIDI 音符。我最担心的是随着时间的推移节奏漂移,因为在事件循环的每次运行中以分钟为单位的时间不一致。
我知道的一些事情:
你不应该依赖
delay()
控制节奏循环。延迟会停止固件的所有操作,这不起作用,因为我需要在序列运行时轮询物理用户界面以进行更改。基于的计算
millis()
更好,因为固件可以在某个计数过去后继续运行和操作。尽管我的物理控件都没有触发中断例程,但某些操作可能会延迟主程序
loop()
的运行。如果我设计了一个等待用户输入的函数,那么如果millis()
计数结束,这显然会导致错过“截止日期”的问题。我知道这个问题是我自己设计的......
问题:
A. 基于 AVR 的 arduino 是否适合轮询用户界面和运行关键任务时序循环的微控制器?我知道现在有一个基于 ARM 的 Arduino,速度要快得多。Teensy 3.0 会是更好的选择吗?这两个都是 3.3V 板,所以这是另一组需要处理的问题……但我现在暂时忽略它。
B. 我应该把任务分成两个微处理器吗?一种用于处理轮询和更新用户界面,另一种用于关键任务时序循环。
C。还有什么?
我的主要目标是完全不用电脑。我也想计算挥杆,但在这种情况下,如果我没有锁定和计时准确的速度,挥杆就没有任何意义。谢谢你的建议!