マイコンの音源プログラムを書いています。
ハードウェアタイマーを使用して割り込みをトリガーし、特定の音符の特定の瞬間に信号をハイまたはローに設定する必要があるかどうかを確認します。
私はかなり限られたハードウェアを使用しているので、タイマーの実行が遅いほど、他のことをしなければならない時間が長くなります (シリアル通信、生成する次のノートのロードなど)。
最適な結果を得るには、タイマーを実行する頻度を見つける必要があります。つまり、十分に正確な頻度を生成し、他のことを計算する時間があります。
これを達成するには、再生する必要があるすべての周波数のおおよその LCM を見つける必要があります (周波数が高くなるほど、人間の耳がエラーに気付くには値を不正確にする必要があるため)、再生する必要があるすべての周波数の LCM:この値は、ハードウェア タイマーを実行する頻度になります。
そのような数を計算するのに十分単純なアルゴリズムはありますか? (編集、「十分に単純」を明確にします:8ビットAVRマイクロコントローラで50未満の値に対して時間t << 1秒で実行するのに十分高速で、最悪でも数十行で実装可能です。)