machine routing部分を引き続き実装している。
ここがmodular base trackerの肝(処理速度や、拡張性に大きく影響を与える部分)なので慎重に設計・実装すべきである。
最初は、そう考えてしっかり設計・実装するつもりだったが、気が付いたらボトムアップな作り方に変貌してしまっていた。要するに小さなコード片を作りそれを少しずつ拡張しながらプログラムの構造を考えていくやり方だ。
そんなことをしているといつの間にか全体が見渡せなくなっていたりする。
クラス間でインターフェースの矛盾が生じたり、それを直すために設計を変更してまた元へ戻したり、boostがバージョンアップしたのでそれに対応してみたりなどして、何がどうだったかよくわからなくなってくる。
とうことで今一番頭がこんがらがっているのは、machineのgroupingだ。
グループ化の要件としては、
・machine viewで任意のmachineをgroupingできる。
・groupingしたmachineは、1つのmachineとして扱うことができる。
・groupingしたmachineに任意のI/Oを追加・削除できる。
・machine group内にmachine groupを含めることができる。
・machine groupを他のsongに再利用できる。
などである。
上記のことを実現するためにいろいろ考えているのだが、なかなか頭の中でまとまらない。