初音ミクが Lolipopで…2015/08/01

Android端末の更新がきてたので、5.1.1(Lolipop)にアップデートしました。

自作アプリの動作確認をしておこうと「初音演歌」で初音ミクに唄わせてみたところ
なんか、ポツポツとノイズが…

「初音ミク」をうまく使いこなしているわけではないので、元々歌声に不自然さはあったのですが、それとは違う今までは無かったノイズが乗るようになっていました。

初音演歌」のプログラムも古いので、基本的な共通部分を最新のものに差し替えてみると
直りました。良かった、良かった。


サウンドの再生は、
データの一部分を再生 → 再生完了コールバックで次の部分を再生
の繰り返しで行われているのですが、このコールバックが呼ばれるのにラグがあったようです。

サウンドはメインを止めないように、コマンドとして一旦キューに貯めて別スレッドで再生などの処理を行っています。このスレッドに AsyncTaskを使用してプライオリティが低かったのが、ラグの原因だと思われます。

しかし再生開始が遅れることはあっても、一度再生されてしまえばコールバックはスムーズに呼ばれると思っていたんですが…
コールバックの仕組みはよくわかりませんが、コールバックの設定か、サウンドを再生したスレッドのプライオリティに依るということなんでしょうか?


そんなわけで無事修正出来ましたので、
初音ミクが即興で演歌を唄うアプリ「初音演歌をバージョンアップしました。

初音演歌


他のアプリも修正しなければいけないのですが、とりあえずサウンドが重要なのを優先ということで…