T2MediaPlayer
T2MediaPlayerクラス(詳細)
仕様
T2MediaPlayerクラスでは、音の再生方法にSE(効果音用)とBGM(背景音用)の2つがあります。
- SE
- 一度再生すると音声データの最後まで再生します。途中で音を止めることはできません
- 他の音といくつも重ねて鳴らすことができます
- BGM
- 1つの音声データを再生、停止、一時停止/再開、繰り返し再生などができます
- 再生中に音量、再生速度、音の位置などを変更できます
- 現在、BGMプレイヤーが16個用意されています
- BGMプレイヤーとは、BGMの再生を管理するオブジェクトです
- 1つのBGMプレイヤーにつき、1つの音声データを再生する仕組みとなっています
- 最大16個の音をBGMとして重ねて鳴らすことができます
- BGMプレイヤーにはそれぞれ0~15の番号が割り振られています。番号を指定して個々のBGMプレイヤーに対して制御ができます。
- 番号を指定しない場合、0番目のBGMプレイヤーに対して制御を行います。
- 例えば、0番目のBGMプレイヤーにBGM1を音量100%で再生し、同時に1番目にBGM2を音量0%で再生させておき、音量を徐々に変えるように処理すれば、BGM1からBGM2に音楽が変わっていくという演出なども可能です
SEは効果音、BGMは背景音とそれぞれに特化した作りになっていますが、
効果音を細かく制御したい場合はBGM系のメソッドで効果音を再生することも可能です。
音量の仕様
- マスター音量
- SEマスター音量
- SE全体の音量です
- SEの実際の音量は以下の式となります
- マスター音量 × SEマスター音量 × SE再生時に(playSEメソッドで)設定した音量
- BGMマスター音量
- BGM全体の音量です
- BGMの実際の音量は以下の式となります
- マスター音量 × BGMマスター音量 × 該当のBGMプレイヤーの音量
機能制限
MP3、Ogg、AAC、WAVの音声ファイルは、SEとBGMのどちらも再生可能です。全ての機能が使えます。
MidiファイルはBGMでのみ再生可能です。
また、一部BGMメソッドで設定しても演奏自体に反映されないメソッドがあります。
音声データは再生時にデコード
ゲーム開始後一度も再生していない音声データは、初回再生時は再生されるまで時間がかかる場合があります。
ある音声データを初めて再生(playSE, playBGMメソッド呼び出し)した場合、
デコードが非同期に行われ、デコード完了すると再生します。(Midiのみデコードが同期処理で行われます)
decodeSoundメソッドで再生する前にあらかじめデコードすることができます。
メソッド
SE のメソッド
BGMプレイヤー番号省略版メソッド
※0番目のBGMプレイヤーに対するメソッドになります
- getBGMVolume()
- setBGMVolume(vol)
- BGMプレイヤーの音量を設定します。範囲(0-128-∞)
- 0 : 消音
- 128 : もとの音量(100%)
- 128より大きい : 100%より大きい音量
- 設定するとそれ以降その設定値を使い続けます。BGM再生時は即座に音量が反映されます
- getBGMTempo()
- setBGMTempo(tempo)
*1
- BGMプレイヤーのBGMの再生速度を設定します。1がもとの速さです
- 設定するとそれ以降その設定値を使い続けます。BGM再生時は即座に再生速度が反映されます
- getBGMPan()
- setBGMPan(pan)
*1
- BGMプレイヤーのパン(音の位置)を設定します。範囲(-1.0 ~ 1.0)
- -1.0 : 最も左から音が鳴ります
- 0.0 : 中央から音が鳴ります
- 1.0 : 最も右から音が鳴ります
- 設定するとそれ以降その設定値を使い続けます。BGM再生時は即座にパンが反映されます
- isBGMLoop()
- 再生中のBGMが繰り返し再生するかどうかを取得します。
true
で繰り返し再生で設定されています
- setBGMLoop(loop)
- 再生中のBGMが繰り返し再生するかどうかの設定を変更します。
true
で繰り返し再生に設定します
- getBGMLoopStartTime()
- 再生中のBGMのループ始端位置を取得します。(単位:秒)
- ループ始端位置とは、BGMの繰り返し再生時、音声データの終端またはループ終端位置から、繰り返し再生するときに戻ってくる再生位置です
- setBGMLoopStartTime(loopStart)
*1
- 再生中のBGMのループ始端位置を変更します。(単位:秒)
- getBGMLoopEndTime()
- 再生中のBGMのループ終端位置を取得します。(単位:秒)
- ループ終端位置とは、BGMの繰り返し再生時、ループ終端位置を超えた際ループ始端位置に戻す位置です
- setBGMLoopEndTime(loopEnd)
*1
- 再生中のBGMのループ終端位置を変更します。(単位:秒)
- getBGMCurrentTime()
- 再生中のBGMの現在再生位置を取得します(単位:秒)
- BGMを停止している場合、nullが返ります
- getBGMLength()
- 再生中のBGMの長さを取得します(単位:秒)
- BGMを停止している場合、nullが返ります
- getPlayingBGMName()
- 再生中のBGMの名前を取得します("$se_bgm1"のように文字列が返ります)
- BGMを停止している場合、nullが返ります
BGMプレイヤー番号指定版メソッド
BGMプレイヤー番号省略版メソッド
のメソッド名の末尾に"ID"を付け、第1引数にBGMプレイヤー番号(0-15)
を指定します。
第1引数(id)に指定したBGMプレイヤーに対してメソッドが実行されます。
- playBGMID(id, idx, loop, offset, loopStart, loopEnd)
- stopBGMID(id)
- pauseBGMID(id)
- resumeBGMID(id)
- getBGMVolumeID(id)
- setBGMVolumeID(id, vol)
- getBGMTempoID(id)
- setBGMTempoID(id, tempo)
*1
- getBGMPanID(id)
- setBGMPanID(id, pan)
*1
- isBGMLoopID(id)
- setBGMLoopID(id, loop)
- getBGMLoopStartTimeID(id)
- setBGMLoopStartTimeID(id, loopStart)
*1
- getBGMLoopEndTimeID(id)
- setBGMLoopEndTimeID(id, loopEnd)
*1
- getBGMCurrentTimeID(id)
- getBGMLengthID(id)
- getPlayingBGMNameID(id)
BGMプレイヤー全体のメソッド
- getBGMPlayerMax()
- BGMプレイヤーの数を取得します。現在16が返ります
- allStopBGM()
- 0~15番目の全てのBGMプレイヤーのBGM再生を停止します
- allResetBGM()
- 0~15番目の全てのBGMプレイヤーのBGM再生を停止し、音量、再生速度、パンを初期値に戻します
- マスター音量、SEマスター音量、BGMマスター音量も初期値に戻します
SE/BGM共通のメソッド
- getMasterVolume()
- setMasterVolume(vol)
- マスター音量を設定します
- 再生中のBGMは即座に音量が反映されます
- getSEMasterVolume()
- setSEMasterVolume(vol)
- SEマスター音量を設定します
- この設定以降に再生するSEに音量が反映されます
- 再生中のSEには音量は反映されません
- getBGMMasterVolume()
- setBGMMasterVolume(vol)
- BGMマスター音量を設定します
- 再生中のBGMは即座に音量が反映されます
音声データ関連のメソッド
- decodeSound(name, callbacks)
- 音声データをデコードします
- name
- 再生するBGMの名前(音声リストで指定した名前)を指定します
- callbacks(省略可)
- デコード完了時にcallbacks.succ(name)がコールバックされ、デコード失敗時callbacks.err(name, errorID)がコールバックされます
- コールバックを受け取る場合は、decodeSoundメソッドの前に下記のように記述します
- callbacks={};callbacks.succ=\(name){処理};callbacks.err=\(name, errorID){処理};
- removeDecodedSoundData(name)
- 音声データのデコード済みデータを削除します(メモリ使用量を抑えるときに使います)
- name
- 再生するBGMの名前(音声リストで指定した名前)を指定します
- allRemoveDecodedSoundData()
- 全ての音声データのデコード済みデータを削除します(メモリ使用量を抑えるときに使います)
*1
Midi再生時の場合、このメソッドの設定は演奏に反映されません
.