データ処理の流れ
3つの異なるデータ形式の処理は以下のようになっています。
データ読み込み
音長カウントを-1して0になるとデータ読み込み処理にやってきます。ここに来るのはどの形式でも共通です。
データを読み、コマンドか、発音データに分類されます。
分類方法は、00H-CFHの範囲の場合発音データと判定し、D0H-FFHがコマンドと判定されます。
コマンドの場合、設定などが行われ曲データアドレスが更新されてデータ読み込み処理へループします。
発音データの場合はフラグにより処理が分岐します。

音名音長形式処理
音名音長形式の場合下位4bitを取得、音長を算出し(+2CH)(+04H)[音長カウンタ]へセット。そして曲データアドレスを更新して保存。
上位4bitを取得し、分周比を算出し(+11H)(+10H)[データから取得した分周比]へ書き込み、発音初期設定をしてそのチャンネルの処理は終了します。

直接指定形式処理
直接指定の場合フォーマットにより処理が分岐しますが、分周比と音量を設定した後、発音初期設定を行います。
直接指定形式では音長指定直接変化設定中にはならないので処理は進みます。
曲データアドレスを更新して保存し、コマンドE0H-E3Hで指定したクロック値を音長カウンタにセットし、処理は終了します。

音長指定直接変化形式処理
音長指定直接変化の場合、上の2つの処理を利用して上手く処理されます。
最初に、音長指定直接変化の処理中である目印にフラグを立てます。
音名音長形式の処理をCALLし、音長設定と、上位4bit、曲データアドレスの更新、保存を行って、フラグ判定により処理が戻って来ます
音名音長形式の曲データアドレスの保存が、処理の最初の方にあるのに違和感が少しあったのですが、ここで利用するためだったようです。
取得した上位4bitからテーブルを引いて、アドレスを取得し、それを現在の曲データアドレスにしてしまいます。
今まで読み込んでいた曲データアドレスはすでに保存されているので問題ありません。
そして直接指定形式の判定用フラグを立てて、今度は最初の曲データ読み込み処理をCALLします。

曲データアドレスが変更されているので、テーブルから取得したアドレスを読み込んで行くことになります。
処理は同じものを使っているので、コマンドデータなどは最初の読み込みと同様に処理され、発音データでは直接指定形式のフラグが立っているので、直接指定形式の処理へジャンプします。

データ内容を直接指定形式で処理します。
なので、テーブルから引いたデータの形式は直接指定形式である必要があります。
発音の初期設定までしたところで、フラグ判定により戻ってきます。

最後の処理は、他の処理を利用するために変更したフラグを0に戻して、直接指定形式で設定されたクロック値を(+19H)[直接変化でのクロックカウンタ]へ入れます。
直接指定形式の処理ではこれは、(+04H)[音長カウンタ下位]へ入れていたので、同じクロック値でも利用先が異なります。
曲データアドレスは、テーブルから引いたものを処理している最中ですが、それを(+18H)(+17H)[直接変化での曲データアドレス]に保存します。
これで、曲データ本体のデータアドレス(+03H)(+02H)とテーブルから引いて処理中のデータアドレス(+18H)(+17H)の2系統になり、クロックカウンタも(+2CH)(+04H)と(+19H)の2系統になります。
(+0EH)b0[音処理、直接式フラグ]を1にしてチャンネル処理は終了します。

音処理
データ読み込みのチャンネル処理が終了すると、PSG,SCCのレジスタ書き込みに処理が流れ、音が出て、その割り込みのドライバでの処理は終了です。
音は一定時間その状態を維持して、それが終わると次のデータを読み込みに行くというのが大きな流れです。
維持している間は何もしないのではなく、割り込みの度に必要があればエンベロープやビブラート等を適用して音量や周波数を少しずつ変更していく処理が必要です。
その間の処理を音処理と呼ぶことにしました。
音長カウンタをデクリメントして0でない場合に音処理に入ります。
音名音長形式の場合は、[音処理,直接式フラグ]は0なので、ベンド処理、ビブラート処理、ボリュームエンベロープ処理、トレモロエンベロープ処理、波形モーフィング処理から必要なものだけ適用されます。
直接指定形式の場合は、[音処理,直接式フラグ]は0なのはもちろんのこと、ベンドなどの処理も全て無効で何も処理されません。
データ的には同時使用できそうですが、ゲーム中のSEデータで使用されていないので使わないようにするのが良さそうです。
そもそも直接指定形式のデータがクロック単位の変化データとも言えるので、重ね合わせは無意味なのかも知れません。
音長指定直接変化の場合は、フラグが立っているので音処理データ読み込みへ処理が分岐します。

音処理データ読み込み
音長指定直接変化の直接変化部分です。
周波数や音量、ノイズ等の変化が、データとして直接書かれているという意味です(エンベロープ等の処理は、計算をすることで変化します)。
ここでは曲データ(+03H)(+02H)が読み込まれて、音長カウンタ(+2CH)(+04H)がカウントされている間、その内側で(+19H)をカウントし、直接指定形式のデータを(+18H)(+17H)から読み込んで処理していくというような、2重構造の処理になっています。
ここでの行う処理はカウントと終了データチェック、それと直接指定データの処理です。
直接指定のデータは、上の音長指定直接変化形式処理に丸投げするのでプログラム的には短く済んでいます。
終了データ以外は、必要なフラグを設定後、音長指定直接変化形式の処理の途中から呼び出すだけです。
終了データがあるとこの直接変化の処理を止め、消音し、次の音まで音処理を行いません。
逆に、変化途中で次の音に移行しても何の問題もありません。

しかし、勝手に付けた名称が長すぎますね…。
内容が分かるようにと、動作や処理内容を付け足していったらこうなってしまいました。
名前を付けるのが目的でもないので、時間を掛けるのも本末転倒かなと思いそのままです。