com.jblend.media.smaf.phrase
クラス PhraseTrack

java.lang.Object
  |
  +--com.jblend.media.smaf.phrase.PhraseTrackBase
        |
        +--com.jblend.media.smaf.phrase.PhraseTrack

public class PhraseTrack
extends com.jblend.media.smaf.phrase.PhraseTrackBase

PhraseTrackはフレーズデータを再生するためのクラスです。 以下にこのクラスの機能について説明します。


1. フレーズデータの再生

個々のフレーズデータを再生するにはPhraseTrackオブジェクトを使用します。PhraseTrackオブジェクトは、PhrasePlayerオブジェクトのgetTrack(int track)、またはgetTrack()メソッドを用いて取得します。PhraseTrackクラスのメソッドは概略、下記のように分類できます。以降、この分類に沿って説明します。

1.1. フレーズデータの設定・解除

Javaアプリケーションは、PhraseTrackオブジェクトに、再生するフレーズデータをsetPhrase()メソッドで設定する必要があります。また、設定してあるPhraseオブジェクトをremovePhrase()メソッドで削除することが可能です。削除すると、再度setPhrase()でPhraseオブジェクトを設定できます。一旦フレーズ再生を開始したら、停止するまでsetPhrase()removePhrase()を呼び出すことはできません。呼び出すと例外がスローされます。

1.2. イベントリスナ(PhraseTrackListener)の設定

フレーズ再生に関するイベントを待ち受けるためには、再生の前に、PhraseTrackListenerインタフェースを実装したリスナを、PhraseTrackオブジェクトのsetEventListener()メソッドを用いて設定します。イベントはPhraseTrackListenerインタフェースのeventOccurred()メソッドのパラメータで通知されます。イベント通知として下記の場合があります。

ユーザーイベントの値とフレーズデータフォーマットの関連についての詳細は、別の仕様書に記載されます。

常駐Javaアプリケーションにおける注意事項

Javaアプリケーションが常駐型として実行されていて、音声着信、SMS着信、またはスケジュールアラーム通知が発生するとフレーズプレイヤーは停止します。このときPhraseTrackListenerのeventOccurred()メソッドは呼び出されません。

フレーズプレイヤーが停止した後、ネイティブシステムがユーザーに着信やアラーム通知を行います。このときフレーズプレイヤーを制御しようとすると例外が発生します。これらの詳細についてResidentMIDletクラスの説明を参照してください。

1.3. トラックの状態取得・音量設定

フレーズ再生の開始前、または再生中に音量を設定できます。音量の設定はsetVolume()メソッドを使用します。また、mute()メソッドで消音が可能です。isMute()メソッドでは、消音しているかどうかを確認できます。 getState()メソッドで、現在のトラックの状態を確認できます。getState()が返すトラックの状態を表1に示します。

表1. トラック状態
状態 意味
PhraseTrack.NO_DATA データ未設定
PhraseTrack.PLAYING 再生中
PhraseTrack.PAUSED 一時停止中
PhraseTrack.READY 停止中

PhraseTrackオブジェクトを取得するときに、Javaアプリケーション側でトラック番号を指定しなかったときには、PhrasePlayerオブジェクトで自動的にトラック番号を決定します。PhraseTrackオブジェクトでgetID()メソッドを呼び出し、割り当てられているトラック番号を取得できます。

1.4.フレーズデータの再生、停止、一時停止、再開

PhraseTrackオブジェクトにPhraseオブジェクトが設定されていると、再生を開始できます。再生、停止、一時停止、再開のためのメソッドは下記のようになります。

play()
フレーズを再生します。繰り返し回数の指定も可能です。無限に繰り返すことも可能です。
stop()
再生中、または一時停止中のサウンド再生を停止します。
pause()
フレーズ再生を一時停止します。
resume()
一時停止しているフレーズ再生を再開します。

play()メソッドで無限の繰り返しを指定したときは、最終的にはstop()メソッドで再生を停止させる必要があります。再生を開始したら、停止するまでは、フレーズデータの設定に関するメソッド(setPhrase()removePhrase())を呼び出すことはできません。呼び出すと例外がスローされます。

2.フレーズデータの同期再生

フレーズプレイヤーではフレーズデータ同士の同期再生が可能です。

オーディオデータは同期再生できません。フレーズデータのみ同期再生が可能です。

2.1. 同期設定

setSubjectTo()メソッドによって、トラック間の同期設定が可能です。スレーブトラックとなるPhraseTrackオブジェクトのsetSubjectTo()を呼び出し、マスタートラックとなるPhraseTrackオブジェクトを指定します。例えば、track0をマスタートラックとし、track1, track2をスレーブトラックとしたいときは、下記のようにそれぞれのスレーブトラックについてsetSubjectTo()を呼び出します。

	try{
		....
		track1.setSubjectTo(track0);
		track2.setSubjectTo(track0);
	}
	catch(...){
	...

setSubjectTo()メソッドによる同期設定を行うには下記の条件が満たされている必要があります。

setSubjectTo()は、これらの条件が成立しない場合は例外をスローします。

スレーブトラックとなっているPhraseTrackオブジェクトのマスタートラックを取得するには、スレーブトラックとなっているPhraseTrackオブジェクトのgetSyncMaster()メソッドを呼び出します。同期関係が設定されていないときはnullが返されます。

2.2. 同期解除

スレーブトラックとなっているPhraseTrackオブジェクトのsetSubjectTo()メソッドを呼び出し、マスタートラックオブジェクトとしてnullを指定するとマスタートラックとの同期関係は解除されます。あるマスタートラックに対する同期関係をすべて解除するには、スレーブとなっているトラックすべてについて、setSubjectTo()を呼び出します。track0がマスタートラック、track1, track2がスレーブトラックになっているとき、すべての同期関係を解除するには下記のようにします。

	track1.setSubjectTo(null);
	track2.setSubjectTo(null);

同期関係が設定されているPhraseTrackオブジェクトに対して、removePhrase()メソッドでフレーズデータを削除すると関連する同期関係が解除されます。

同期関係の解除はトラックが停止中のときのみ可能です。再生中のトラックに対して同期設定を解除しようとすると例外が発生します。

2.3. 再生・停止

同期再生の開始や停止のためには、マスタートラックとなっているPhraseTrackオブジェクトのplay()メソッド、またはstop()メソッドを呼び出します。スレーブトラックとなっているPhraseTrackオブジェクトのplay()、およびstop()は正常終了しますが、何もしません。(再生の開始や停止は行われず、無視されます。)

同期設定されているトラックの再生において、個々のトラックの再生に関するイベント通知はトラック毎に発生します。


フィールドの概要
static int DEFAULT_PANPOT
          トラックのパンポットの初期値。
static int DEFAULT_VOLUME
          トラックの音量の初期値。
static int NO_DATA
          再生データなし
static int PAUSED
          一時停止中
static int PLAYING
          再生中
static int READY
          再生可能な状態
 
メソッドの概要
 int getID()
          トラック番号を取得する。
 int getPanpot()
          パンポット(音の定位)を取得する。
 Phrase getPhrase()
          トラックに設定されているフレーズを取得する。
 int getState()
          トラックの状態を取得する。
 PhraseTrack getSyncMaster()
          同期のマスタートラックを取得する
 int getVolume()
          再生音量を取得する。
 boolean isMute()
          ミュートされているかどうかの取得。
 void mute(boolean mute)
          再生をミュート(消音)する。
 void pause()
          再生を一旦停止する。
 void play()
          フレーズを再生する。
 void play(int loop)
          フレーズを繰り返し再生する。
 void removePhrase()
          フレーズ設定を削除する。
 void resume()
          一旦停止した再生を再開する。
 void setEventListener(PhraseTrackListener l)
          イベントリスナの登録
 void setPanpot(int value)
          パンポット(音の定位)を設定する。
 void setPhrase(Phrase p)
          トラックにフレーズを設定する。
 void setSubjectTo(PhraseTrack master)
          指定したトラックの同期スレーブとする
 void setVolume(int value)
          再生音量を設定する。
 void stop()
          再生を停止する。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

NO_DATA

public static final int NO_DATA
再生データなし

READY

public static final int READY
再生可能な状態

PLAYING

public static final int PLAYING
再生中

PAUSED

public static final int PAUSED
一時停止中

DEFAULT_VOLUME

public static final int DEFAULT_VOLUME
トラックの音量の初期値。

DEFAULT_PANPOT

public static final int DEFAULT_PANPOT
トラックのパンポットの初期値。
メソッドの詳細

setPhrase

public void setPhrase(Phrase p)
トラックにフレーズを設定する。
パラメータ:
p - : フレーズ
例外:
NullPointerException - フレーズがnullの場合に発生します。
java.lang.IllegalArgumentException - フレーズデータの使用トラック数が確保したトラックと合わない場合に発生します。
java.lang.RuntimeException - Nativeフレーズプレイヤーに設定できなかった場合に発生します。

getPhrase

public Phrase getPhrase()
トラックに設定されているフレーズを取得する。
戻り値:
Phrase - 設定されているフレーズ

removePhrase

public void removePhrase()
フレーズ設定を削除する。
オーバーライド:
クラス com.jblend.media.smaf.phrase.PhraseTrackBase 内の removePhrase
例外:
IllegalStateException - PhrasePlayerが未生成の場合に発生します。
java.lang.RuntimeException - Nativeフレーズプレイヤーから削除できなかった場合に発生します。

setSubjectTo

public void setSubjectTo(PhraseTrack master)
指定したトラックの同期スレーブとする
パラメータ:
master - マスタートラック、null が指定されたときは解除
例外:
java.lang.RuntimeException - Nativeフレーズプレイヤーが設定できなかった場合に発生します。

getSyncMaster

public PhraseTrack getSyncMaster()
同期のマスタートラックを取得する
戻り値:
PhraseTrack - マスタートラック

play

public void play()
フレーズを再生する。再生中の再生は無視する。

play

public void play(int loop)
フレーズを繰り返し再生する。再生中の再生は無視する。
パラメータ:
loop - : 繰り返し回数(255 回まで、0 なら無限に繰り返す)
例外:
java.lang.RuntimeException - Nativeフレーズプレイヤーが再生できなかった場合に発生します。

stop

public void stop()
再生を停止する。

pause

public void pause()
再生を一旦停止する。
例外:
java.lang.RuntimeException - Nativeフレーズプレイヤーが一旦停止できなかった場合に発生します。

resume

public void resume()
一旦停止した再生を再開する。
例外:
java.lang.RuntimeException - Nativeフレーズプレイヤーが再開できなかった場合に発生します。

getState

public int getState()
トラックの状態を取得する。
戻り値:
int - 状態

setVolume

public void setVolume(int value)
再生音量を設定する。
パラメータ:
value - : 音量(0 : 無音、127 : 最大)

getVolume

public int getVolume()
再生音量を取得する。
戻り値:
int - 音量(0 : 無音、127 : 最大)

setPanpot

public void setPanpot(int value)
パンポット(音の定位)を設定する。
パラメータ:
value - : 定位(0 : 左端、64 : 中央、127 : 右端)

getPanpot

public int getPanpot()
パンポット(音の定位)を取得する。
戻り値:
int - 定位(0 : 左端、64 : 中央、127 : 右端)

mute

public void mute(boolean mute)
再生をミュート(消音)する。
パラメータ:
mute - : true ならミュート、false なら解除

isMute

public boolean isMute()
ミュートされているかどうかの取得。
戻り値:
boolean - true:ミュートされている

getID

public int getID()
トラック番号を取得する。
戻り値:
int トラック番号

setEventListener

public void setEventListener(PhraseTrackListener l)
イベントリスナの登録
パラメータ:
l - : イベントリスナ