• OpenSL ES Tips (On VIVID Runtime)

    2011年03月09日 23時35分
    OpenSL ES自体はサンプルとリファレンス見ながら
    なんとなく使えるとは思います。

    なので、何点か引っかかったとこだけ記しておこうと思います。

    MIDI再生を使用していたときに調べたことなので、
    基本的にMIDI再生に関することだと思ってください。
    WaveとかMP3も当てはまるかもしれませんが未検証です。

    また、対象のVIVID Runtime SDKのバージョンは1.1です。
    最近1.2が出ているので、そちらでは改善されているかもしれません。

    音量について

    SLVolumeItfのSetVolumeLevelで設定するわけですが、
    この引数が「SL_MILLIBEL_MIN ~ 端末のサポートする最大値(多くの場合は0)」と書いてあるのですが、
    SL_MILLIBEL_MINを指定するとエラーが返ってきます。
    (エミュレータとXperiaで確認)

    エラーが出ない数値を探ると-2000でした。
    なので、-2000 ~ 0の間で指定しましょう。

    端末によってはこの数値も怪しいかもしれません。

    あと、SL_MILLIBEL_MAXというのが定義されていまして、
    これが最大値っぽいですが全然違うので気をつけましょう。

    プレイヤーの解放について

    MIDIのプレイヤーはCreateMidiPlayerで作成するわけですが、
    これを解放する前には手動でSLPlayItfのステータスをSL_PLAYSTATE_STOPPEDにしなければなりません。

    SL_PLAYSTATE_PAUSEDのままDestroyしてしまうと
    どうもきちんと解放されないようです。
    (実機が落ちたり、動作が不安定になりました。)

    MIDIの複数再生について

    CreateMidiPlayerで再生オブジェクトを2個作ると
    何故か再生速度が速くなります。

    2個作ってはいけないのかもしれません。

    CreateMidiPlayer & CreateAudioPlayerで2個作ると
    Xperiaは大丈夫でしたがエミュレータだと同じ現象です。

    これは未だ解決方法不明です。
  • はじめまして。

    Vivid RuntimeでOpenSL ESのサンプルがwavファイルのみで、midiファイルの再生方法がわかりません。

    よかったら新しい記事でmidi再生の記事を書いていただけませんか?
    たけし 2011年05月14日 21時13分

コメントを書く

名前
本文
編集用パスワード 入力すると編集が行えます
管理者のみ閲覧