ミュージシャンである同僚が、可変抵抗ではなくボタンでテンポを設定するために、シンセサイザーにプレフィックスを付けるように頼みました。
実装には、最も手頃な価格のArduinoが選択されました。
MIDIの基本を吸った後、特別なbyte-0xF8がテンポの設定を担当していることがわかりました。 標準では、1秒あたり1ビート、つまり60 bpm(1分あたりのビート)の速度で、1秒あたり24個のこのようなメッセージを受け入れます。
そのため、ボタンを押すのをやめ、ボタンの間隔を空けて、対応する信号を小さな画面に表示する必要があります。
良さそうに聞こえますが、実際には、画面に表示されるものが実際の信号と結合しないことが判明し、変数の1つがFLOATではなくINTであることが判明したため、シンセサイザーへの信号は画面に0.001に表示されていましたが、最も近い整数に丸められました。
変数の種類を修正した結果、素晴らしい結果が得られましたが、ヒューマンファクターは私を失望させました-同僚は希望のペースを正確にタップできませんでした。 したがって、改良が追加されました。後続の各間隔は前の間隔に追加され、2で除算されます(平均化)。
結果は良くなりましたが、プラグは希望する値を中心に判明しました。たとえば、120bpmが必要で、117と124が出てきました。
その結果、最適なアルゴリズムが生まれました。
1から20までの間隔が(ランダムに)記録され、値は各プレスで平均化され(画面上のテンポ変化のダイナミクスが見えるようになります)、オペレーターが1.5秒間クリックしない場合、間隔値の配列がリセットされ、再び開始できます。 1分あたり40ビートの最小リズムを決定するのに1.5秒かかりました。
その結果、すべてが機能し、パフォーマンスに参加します。
あなたが希望や提案がある場合-書いてください。