バグが大量に発生した原因は「プログラムの改装」によるものだが、今まで動いていたものがいきなり動かなくなるどころか、単純にバッファを通してデータを受け渡しするだけのパートがアナログ様の発振を起こす始末で、訳が解らない。

画像は、その発振状態の一部を切り取ったものだが、0から2000前後の振幅で数値が変動していた。つまり、データを参照する毎に本来ピックアップされるべき数値の代わりに、増減する振動波が代入されていたことになる。
この件については、ロータリーエンコーダの終段にバッファを追加して、出力をダブルバッファに改装することで解決出来たのだが、

面妖なことに並列配置された関数の名称が異なるだけで全く同じ構造のオブジェクト群は正常に動作していた。 厳密には、データをバッファに送る手前の、pot13 + 1 辺りが怪しいのだが、今まで一度も問題が発生していなかった箇所だけにコンパイラ側の解釈が変わったとしか思えない。
ということで、原因はコンパイラの「仕様」が変更された故に発生した問題の可能性が否定できないため、後々トラブルの発生を考慮して、関連するパートは全てダブルバッファ化しておいた。

今回大改装を行った理由は、タイミングの制御が微妙なアンテナ入力周りの処理を行うパートの精度に関して、増加する描画処理の影響を懸念していたことにある。 実証試験を繰り返す際に、動作が不安定で連携が甘いLCDとLEDはシステム全体の状態を示す指針にはならないと判断し、両者の動作を完全に同期させることに改良の主眼をおいている。
M7にシステムを移行する際に考えるべきポイントは、M4に比べて極端に処理能力が上がっている点で、今まで破綻を避けるために必死でタスクの割り振りを行っていたメソッドを一度忘れる必要がある。 今回は、処理のタイミングが曖昧になるLoop内から、Arpeggiator系のトリガ機構を引き上げて、AudioClockによって支配されている音声処理のルーティン内にこれを移植している。

描画された波形を見る限り、いまのところ音声データに大きな問題は発生していないように見える。
描画機構に関しては、Redrawを行うレートの制限をPITによって集中管理する方式を廃し、描画パート毎にローカルでArpeggiatorのクロックと描画のタイミングを同期させる方式に転換している。

これにより、Arpeggiator によって制御されたLEDが発光するタイミングと、描画されたインターフェイスの同期を得ることが出来たのだが、LEDの再マッピングや描画の設定変更やらで、結構な作業時間が費やされることになった。

以上の改変を、サイズの違うOLEDに移植することを考えると今から頭が痛いのだが、記憶がクリアなうちに作業を貫徹すべきだろう。