よもやもダンプ

気が向いた時にアウトプットしておくところ

雑記#24

トラッカーをmacで動かすために、音声のストリーミング処理をQtから分離した。
これまではQtの音声ライブラリを使っていたけど、どうもGUI処理と音声処理が1つのイベントループで一緒に処理をしているみたいで、macで実行すると音声の遅延が酷くてとても使い物にならなかった。
いくつかあるマルチプラットフォームなライブラリのうち、RtAudioを使って処理を分割することにした。プログラムが少し重くなったけど、作曲ソフトで音声が途切れるのは致命的なので仕方ないか。
GUIの描画でも、macの方が少し遅い気がする。Windowsで動かしたときには気にならなかったGUIの再描画の問題が大量に出てきた。
例えば曲を再生中にウィンドウの最大化をすると、処理が重すぎてフリーズしてしまっていた。
この原因は再描画時に毎度パターンエディタ全体を更新していたことだったので、再生中は1ステップづつパターンの描画位置がずれるだけなのを考えると、現在の表示を1つ上へずらして再利用した方が処理は軽くなる。
また文字の印字に時間がかかるのが分かり、極力文字の再描画を避けるべきなので、描画データを複数のレイヤーで保持しておいて、更新が必要なレイヤーのみ再描画してそれ以外のものは使いまわしてコスト削減を行った。
結果まだまだ改良するところはあるけど、macでも使えるくらいにはなった。

トラッカーも遂にmacに対応したので、今後は描画処理の改良をしつつ、ADPCMの実装に取り掛かりたい。
トラッカーを作る前は正直ドラムとかもFMで作った方がいいじゃないの、と思っていたけど、この前のSSTのcTrixさんのメガドライブの演奏を聴いて、自由度が上がって曲作りの幅も広がるしやっぱり必要だと思った。
ADPCMをどうやって扱うのかはGitHubでもいくつか議論をしてきているので、いろいろ意見を聴きながら開発をしたい。
ただ、これから用事が増えてきて忙しくなるので、実装は来年になると思う。

明日はM3。半年前の春には予定が入って泣く泣く断念していたので、今回は春の分も楽しみたい。
密かに自分も1曲も出していたりする。 もし誰かが気に入ってくれたらうれしいな。