ただシーケンサーではなく、シーケンサーの物理インターフェイスです。シーケンサーは、シーケンサーが接続するラップトップで実行されるアプリケーションです。これにより、ユーザーはその場でドラムループを作成できます。とても楽しいですが、シーケンサーが「オンボード」ではないため、ラップトップが必要です。
私の大好きなのは、私のデバイスに搭載されたシーケンスを実行することです。
USB MIDI接続のクラスコンプライアンスを解決する方法を知っているとしましょう。また、5ピンのDINポートからMIDIノートを送信するためにarduinoを接続する方法を理解できるとしましょう。私が最も心配しているのは、イベントループのすべての実行で、分単位のタイミングに一貫性がないため、時間の経過に伴うテンポのドリフトです。
私が知っているいくつかのこと:
delay()
テンポループの制御に依存すべきではありません。遅延はファームウェアのすべての操作を停止します。シーケンスの実行中に物理ユーザーインターフェイスに変更がないかポーリングする必要があるため、これは機能しません。に基づく計算
millis()
は、ファームウェアが一定のカウントが経過しても動作し続けて動作できるため、より優れています。私の物理的な制御のいずれも割り込みルーチンをトリガーしていませんが、一部の操作はメインの
loop()
実行を遅らせる可能性があります。ユーザー入力を待機する関数を設計すると、millis()
カウントがはるかに大きい場合に「デッドライン」が機能しないという問題が明らかに発生する可能性があります。私はこの問題が私自身の設計によるものであることを知っています...
質問:
A. AVRベースのarduinoは、ユーザーインターフェイスをポーリングしてミッションクリティカルなタイミングループを実行するための適切なマイクロコントローラーですか?ARMベースのArduinoがもっと高速になったことを知っています。Teensy 3.0はより良い代替手段でしょうか?これらはどちらも3.3Vボードであるため、これは作業するための別の問題セットですが、ここでは無視します。
B.タスクを2つのマイクロプロセッサに分割する必要がありますか?1つはユーザーインターフェイスのポーリングと更新を処理し、もう1つはミッションクリティカルなタイミングループ用です。
c。他に何か?
私の主な目標は、コンピュータをまったく使用する必要がないことです。スイングについても計算したいのですが、この場合、スイングは、ロックされたタイミングの正確なテンポが得られなければ意味がありません。助言ありがとう!
noInterrupts();
ジッターを停止しますが、必要なすべての割り込みも停止します。