なんとも中途半端な実装ではあるけど、mldspに疑似スペアナを追加した。とりあえずキーオンに合わせてボリュームを上げて、周りを比例的に調整して、150msecごとに全体量の10%ずつ減衰するというだけの単純な実装でしかないけど。ひとつには、まずボリュームを保持して画面に反映して一定時間で減衰させるロジックだけでも実装したかったことがある。たぶん減衰のロジックは単純な減衰で問題は無いと思う。スペアナで表示される値の計算はいくらでも改善の余地がある(というかまだ整理して考えていない)。
単純な実装のままにしてある理由のもうひとつは、スペアナ実装のパフォーマンスへの影響がだいぶ大きいので、このまま先に進めるとまずいと思っていることがある。先にアプリケーションの最適化を実現しないと、Silverlight上で実行してもロスが大きいので、Moonlightだとたぶん大変なことになる(今日はMac上で実装を書いていたのでMoonlightでは未確認)。最近はMoonlightのどこかでパフォーマンスが以前より悪化している状態なので、通常の演奏でもだいぶ支障が出てきている(これは旧バージョンでも同じ)。
とりあえず、見てくれだけはスペアナっぽいものが出来たので、スペアナ自体はクリアしたということにしておこうと思う。
パフォーマンス改善のポイントは、とりあえずの推測としては、タイマとStoryboardを減らすと大きいと思っている。Storyboardは(現在の利用方法上)不必要に高い精度で実行されている。タイマはDispatchTimerなので、実行時にはJavascriptへのドメイン越えが必要になる。多分そこでロスが発生しているので、タイマ越しに実行されるコードをなるべくまとめるようにしたい。
パフォーマンスの問題は、実のところプロファイラを使えばある程度計測出来るはずなので、いずれそれで見てみようとも思っている。
Leave a comment