com.nttdocomo.ui.sound3d
クラス SoundMotion

Object
  拡張com.nttdocomo.ui.sound3d.SoundMotion
すべての実装インタフェース:
Audio3DLocalization

public class SoundMotion
extends Object
implements Audio3DLocalization

移動している定位を指定するためのオブジェクトを定義します。

このクラスのオブジェクトは、 リスナ(聴者)と仮想音源の位置関係が時間の経過に従って変化するものとして指定を行うことを表します。 リスナを中心に見た場合、仮想音源が時間の経過に従って 3D 空間の中を移動しているように聴こえます。
サウンドデータの再生中に指定された場合、 端末は連続的に定位を変更しようとします。 ただし、実際にどのような形で定位の変更が行われるかは機種依存です。 典型的な実装では、指定された固定的な定位の間を補完する際に、 リスナから見て仮想音源が等速で直線を描くような形で補完を行います。

定位の指定の仕方については パッケージの説明 も参照してください。

このクラスのオブジェクトには、移動開始からの経過時間とその時点での定位とをセットで登録します。 この組み合わせをここでは経路指定と呼びます。 経過時間は、コントローラにこのクラスのオブジェクトがセットされた時点(移動開始時点)を 0ms として、 その時点からの相対時間を指定します。 また、定位は SoundPosition インターフェースを実装したクラスのオブジェクトで指定します。
経路指定は複数登録可能で、指定された経路指定の間で連続的に定位が変化します。 経過時間の中で最も大きい値まで時間が経過したら、 その最大の経過時間の経路指定で指定された定位で停止します。

仮想音源はカレントの定位を持つため、経過時間として0msの時点での定位をセットする必要はありません。 その場合、カレントの定位を開始点として定位の移動が行われます。 一方、経過時間として0msの時点での定位をセットすることも可能ですが、 その場合はカレントの定位の影響を受けず、 経過時間が0msの時点での定位を開始点として定位の移動が行われます。

オーディオ・プレゼンタの再生前にこのクラスのオブジェクトが指定された場合は、 再生開始と同時に定位の移動を開始します。 再生中に指定された場合は、その時点から定位の移動を開始します。 定位の移動中に一時停止された場合は 定位の移動も一時停止され、再生再開したら定位の移動も再開されます (なお、定位の移動を一時停止する際には、 実装がサポートしている座標の粒度に丸められた定位に停止するために、 一時停止せずに再生した場合と定位の移動の仕方が異なる場合があります)。 一時停止中に指定された場合は、再生再開と同時に定位の移動を開始します。 定位の移動中に停止された場合は、定位の移動がキャンセルされ、 定位は停止された時点の定位に留まったままとなります (定位を指定せずに再度オーディオ・プレゼンタの再生を行った場合は、 停止された時点の定位に留まったままとなります)。
また、定位の移動中に新しく定位が指定された場合は、 最初の定位の移動はキャンセルされ、 端末は現在の(移動途中の)定位から新しく指定された定位に変更あるいは移動しようとします。 ただし、実際にどのような形で定位の変更や移動が行われるかは機種依存です。 実装によっては、音の聞こえ方が不連続になったりノイズが発生したりする場合があります。

定位の移動が完了したら移動完了イベントが発生します。 すなわち、移動を開始してから最大経過時間だけ時間が経過して移動が完了すると、 アプリケーションにイベントが通知されます。 ただし、移動が途中でキャンセルされた場合はイベントは発生しません。
アプリケーションは、 このイベントの通知を受けてから次の移動を指定するようにすると、 端末に負荷をかけずにスムーズに仮想音源が移動しているように聴かせることができます。

このオブジェクトに設定された経過時間や定位などのパラメータは、 このオブジェクトが Audio3D.setLocalization(com.nttdocomo.ui.Audio3DLocalization) メソッドに渡された時点で参照され、 ネイティブの 3D サウンドの制御のエンジンに渡されます。 このオブジェクトが Audio3D.setLocalization(com.nttdocomo.ui.Audio3DLocalization) メソッドに渡されてから定位の移動が完了するまでの間に、 このオブジェクトに対する経路指定の追加や削除、 あるいは、このオブジェクトに設定されている定位の座標などのパラメータを変更した場合の振る舞いは機種依存です。
また、端末の処理能力を超える短い間隔で経路指定を行った場合は、 途中の経路指定が省略されることがあります。 ただし、その場合でも最大の経過時間の経路指定が省略されることはありません。 なお、端末の処理能力については Audio3D.getTimeResolution() を参照して下さい。

実装によっては、定位の移動のために内部的にタイマリソースを使用する場合があります。

導入されたバージョン:
DoJa-4.0 (901i)
関連項目:
SoundPosition

コンストラクタの概要
SoundMotion()
           移動している定位を指定するためのオブジェクトを生成します。
 
メソッドの概要
 void addPosition(int time, SoundPosition position)
           経路指定を追加します。
 SoundPosition getPosition(int index)
           経路指定の定位を取得します。
 int getTime(int index)
           経路指定の経過時間を取得します。
 void removePosition(int index)
           経路指定を削除します。
 int size()
           経路指定の数を取得します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SoundMotion

public SoundMotion()

移動している定位を指定するためのオブジェクトを生成します。

メソッドの詳細

addPosition

public void addPosition(int time,
                        SoundPosition position)

経路指定を追加します。 経路指定は、経過時間と定位とをセットで指定します。 移動を開始してから (すなわち、このオブジェクトが 3D サウンドのコントローラに設定されてから) 指定した時間が経過した時点で指定された定位となるように移動が行われます。
経路指定は、経過時間によって整列されて保持されます。 同じ経過時間が指定された場合は、 前に指定された定位を新たに指定された定位で置き換えます。

引数で指定された定位を表すオブジェクトの参照をそのまま保持します。

パラメータ:
time - 経過時間をミリ秒単位で指定します。
position - 定位を指定します。
例外:
IllegalArgumentException - 引数 time に負の値が指定された場合に発生します。
NullPointerException - 引数 position に null が指定された場合に発生します。
IllegalArgumentException - 引数 position にシステムが提供している以外の定位オブジェクト (SoundPosition インタフェースを実装した未知のクラスのオブジェクト) が指定された場合に発生します。
IllegalArgumentException - 極座標による定位の指定とデカルト座標による定位の指定を混在して使用しようとした場合に発生します。

size

public int size()

経路指定の数を取得します。

戻り値:
経路指定の数を返します。

getTime

public int getTime(int index)

経路指定の経過時間を取得します。

パラメータ:
index - 経過時間を取得する経路指定のインデックスを指定します。
戻り値:
経路指定の経過時間を返します。
例外:
ArrayIndexOutOfBoundsException - 引数 index に負の値または経路指定の数以上の値が指定された場合に発生します。

getPosition

public SoundPosition getPosition(int index)

経路指定の定位を取得します。

addPosition(int, com.nttdocomo.ui.sound3d.SoundPosition) メソッドの引数で指定された定位を表すオブジェクトの参照をそのまま返します。

パラメータ:
index - 定位を取得する経路指定のインデックスを指定します。
戻り値:
経路指定の定位を返します。
例外:
ArrayIndexOutOfBoundsException - 引数 index に負の値または経路指定の数以上の値が指定された場合に発生します。

removePosition

public void removePosition(int index)

経路指定を削除します。

削除された経路指定のインデックスよりも大きいインデックスにある経路指定は、 全てインデックスが一つ小さい位置に移動されます。

パラメータ:
index - 削除する経路指定のインデックスを指定します。
例外:
ArrayIndexOutOfBoundsException - 引数 index に負の値または経路指定の数以上の値が指定された場合に発生します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。