TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

CQTでスペクトログラムを描く その4(ピアノロール)

前回の続き。

リアルタイムにスペクトログラムを表示するVST3プラグインに、音高の軸をC4などのノート名の代わりに、ピアノロールを表示するようにした。


ピアノロール表示処理

白鍵は、オクターブを7分割して表示する。
黒鍵は、半音と同じ位置に白鍵の半分の幅で表示する。

この場合、黒鍵の中心は、白鍵の境界の位置にならない。
実際のピアノでも白鍵に対する黒鍵の位置はノートによって異なっている。

GPT-5でコード生成できなかった件

GPT-5でピアノロールを描く処理のコード生成を試みたが、何度やってもうまくいかなかった。

失敗例:

  • 白鍵を12分割する
  • オクターブが画面に収まる範囲しか描画しない
  • 補助線位置とずれる

画面の一番上のノートが必ずしもオクターブの境界ではない条件が難しいらしい。
for (int i = 0; i < 7; ++i)のようなループを記述しがちで、オクターブが収まる範囲しか描画できなくなる。

結局、処理方法を具体的に指示して、生成されたコードを手直しして取り入れた。

まとめ

スペクトログラム解析VST3プラグインピノロールを表示するようにした。

次は、拍の表示、マウスカーソル位置のハイライトを実装したい。