我制作这些音序器。
只是它不完全是一个音序器,它是音序器的物理接口。音序器是一种在音序器连接到的便携式计算机上运行的应用程序,它使用户可以快速制作鼓循环。这很有趣,但是它需要一台笔记本电脑,因为音序器不是“板载”的。
我想要在设备上进行测序。
现在让我们假设我知道如何解决USB MIDI连接的类合规性,并且还假设我可以弄清楚如何连接arduino以从5针DIN端口发送MIDI音符。我最担心的是由于事件循环每次运行的分钟量计时不一致,导致速度随时间变化。
我知道一些事情:
您不应该依赖于
delay()
控制速度循环。延迟会停止固件的所有操作,并且无法运行,因为我需要在序列运行时轮询物理用户界面以查找更改。基于的计算
millis()
会更好,因为固件可以在经过一定次数后继续运行并起作用。即使我的物理控件都没有触发中断例程,但是某些操作可能会延迟主程序
loop()
的运行。如果我设计了一个等待用户输入的函数,那么很明显,如果millis()
计数超出范围,可能会导致缺少“最后期限”来执行的问题。我知道这个问题是我自己设计的。
问题:
A.基于AVR的arduino是否适合用于轮询用户界面并运行关键任务定时循环的微控制器?我知道现在有一个基于ARM的Arduino,速度要快得多。Teensy 3.0会是更好的选择吗?这两个都是3.3V电路板,所以这是另一个需要解决的问题...但是我暂时将其忽略。
B.我应该把任务分成两个微处理器吗?一种用于轮询和更新用户界面,另一种用于关键任务时序循环。
C。还有吗
我的主要目标是根本不必使用计算机。我也想计算挥杆,但在这种情况下,如果我没有锁定且计时准确的速度,挥杆就没有任何意义。谢谢你的建议!
noInterrupts();
停止抖动,但也停止所有想要的中断。