Tonyu System 1 - wiki


命令リファレンスWikiトップ

$mplayerオブジェクト

音楽、効果音の制御を行います

メソッド一覧

playBGM,効果音を演奏します
stopBGMの演奏を停止します
stopSE効果音の再生を停止します
setVolumeBGMの音量を調節します
setDelay効果音を鳴らす際の待機時間を調整します(ver1.29以前などに適用)
setDelayDs効果音を鳴らす際の待機時間を調整します(ver1.30以降などに適用)
getAutoDelayDssetDelayDsで自動調整に設定時の待機時間を取得します
resetAutoDelayDssetDelayDsで自動調整に設定時の待機時間をリセットします
setSoundPlayModewav,mzo再生の音源モードを切り替えます
setBaseVolumewav,mzo再生の全体音量を設定します
setVolumeLimiterwav,mzoの音量が大きい場合、音割れを防ぐ機能の有効・無効を設定します
setSeLoopEnablewavのループを有効・無効を設定します
setSeStopEnablestopSEの有効・無効を設定します

$mplayer.play

BGM,効果音を演奏します

書式

play(s,autoReplay,vol)
  • s
     演奏するサウンドオブジェクト
  • autoReplay (省略可能)
     Midi,Wavを繰り返し演奏する場合は1
  • vol (省略可能)
     効果音の音量(0-128)

戻り値

効果音のID

効果音を途中停止する場合に使います。($mplayer.stopSE

例1

(予め、BGM・効果音ウィンドウで test.wavというサウンドファイルを読み込んでおく必要があります)

extends SpriteChar;
while (1) {
  if (getkey(32)==1) {$mplayer.play($se_test);}
  update();
}

▲ スペースキーを押すとtest.wavが鳴ります


$mplayer.stop

BGMの演奏を停止します

書式

stop()

例1

$mplayer.stop();

$mplayer.stopSE

(1_30_2022_0804以降)

効果音を再生中に停止できます

setSoundPlayMode(1)以外に設定時、動作します。

stopSEを使う時は、先にsetSeStopEnableで有効化してください。

※ ver1.303現在、バグなのか音が若干残る場合があります。setSoundPlayMode(4)を設定すると音が完全に止まります。

※ wavの効果音とBGMが50音以上同時に再生されている場合は、正しく停止できない場合があります。

書式

stopSE(id, shortFadeout)
  • id
     再生中の効果音のID
  • shortFadeout (省略可能)
     フェードアウトの時間 (サンプル数)(1秒=44100)
     指定した時間をかけて緩やかに停止します
     停止時にプチっとノイズが鳴るのを軽減したい場合に指定します
     ノイズ対策用のため、0~10000(約0.23秒)の範囲です
     省略すると0指定時と同じで、速やかに停止します
    setSoundPlayMode(2or3)に設定時のみ適用となります

例1

(予め、BGM・効果音ウィンドウで test.wavというサウンドファイルを読み込んでおく必要があります)

extends SpriteChar;
$mplayer.setSeStopEnable(1); // stopSE有効化
while (1) {
  if (getkey(90)==1) seID=$mplayer.play($se_test); // Zキーで効果音再生
  if (getkey(88)==1) $mplayer.stopSE(seID); // Xキーで効果音を途中停止
  if (getkey(67)==1) $mplayer.stopSE(seID,100); // Cキーで効果音を途中停止(停止時のノイズ軽減)
  update();
}

$mplayer.setVolume

BGMの音量を調節します

このメソッドは.mzo形式にのみ利用可能です

書式

setVolume(vol)
  • vol
     音量(0-256)

例1

for (i=256; i>0; i--) {
  $mplayer.setVolume(i);
  update();
}

▲ フェードアウトします。他の音楽を鳴らす前には$mplayer.setVolume(256)を実行してください。(音が出なくなります)


$mplayer.setDelay

効果音を鳴らす際の待機時間を調整します
ver1.30以降setSoundPlayMode(1or2)に設定時のみ適用となります。

書式

setDelay(time)
  • time
     待機時間 (サンプル数:1秒=44100)

効果音の最初の部分が途切れる場合は、この値を大きめにしてください
(ただし大きくしすぎると待機しなくなるので、最大約19000が限度です)

規定値はWindowsのバージョンによって以下にしています

Windowsのバージョン規定値
Windows XP以前1350
Windows Vista / 72400
Windows 8 / 8.12500
Windows 10以降3000

$mplayer.setDelayDs

(1_30_2022_0804以降)

※ デフォルト自動で調整する設定のため、通常このメソッドを使用する必要はありません

効果音を鳴らす際の待機時間を調整します。
setSoundPlayMode(3)に設定時、適用されます。

書式

setDelayDs(time)
  • time
     待機時間 (サンプル数:1秒=44100)
    -1:自動設定(デフォルト)
      ・待機時間を自動で調整します
      ・DirectSoundから情報取得し待機時間を求めています
    0以上:手動設定
      ・待機時間を手動で調整します
      ・ただし大きくしすぎると待機しなくなるので、最大約19000が限度です

$mplayer.getAutoDelayDs

(1_30_2022_0804以降)

setDelayDsで自動調整に設定している際の待機時間を取得します

setSoundPlayMode(3)かつsetDelayDs(-1)に設定時、Tonyu内部で使用されます。

書式

getAutoDelayDs()

戻り値

自動調整に設定している際の待機時間 (サンプル数:1秒=44100)


$mplayer.resetAutoDelayDs

(1_30_2022_0804以降)

※ 通常このメソッドを使用する必要はありません

setDelayDsで自動調整に設定している際の待機時間をリセットします。

DirectSoundから情報取得し待機時間を求めていますが、
待機時間が自動で大きくなっていきますが小さくはなりません。
手動で待機時間を0に戻します。

書式

resetAutoDelayDs()

$mplayer.setSoundPlayMode

(1_30_2022_0804以降)

wav,mzo再生の音源モードを切り替えます。

※ 実行すると効果音とBGMが止まります。
  処理が重いので、起動時に1度だけ使用したり、設定画面等で使用することをお勧めします。
  BGMは自動では復帰しないので、鳴らしたい場合は再度再生する必要があります。

※ 基本的にはデフォルト設定の、音源モード3のままで問題ありません。
  旧バージョンの音源を再現したい場合は1にします。
  2,4は開発の過程でできたものです。

書式

setSoundPlayMode(mode)
  • mode
     音源モードの番号
     デフォルトは3に設定されています。
音源モードの番号概要
1Tonyu1.29以前の音源
旧音源です。昔の音源で鳴らしたい特殊な場合にのみ使います。
ただし、下記の不具合や仕様も再現されてしまいます。
・音質が44100Hz8bitモノラルとなり劣化します
・wavのレイテンシが大きいです
・11025Hz, 22050Hz, 44100Hz以外のwavは再生速度が速くなります
・wavの同時発音数は再生から約0.45秒までは無限、それ以降は9です
2修正版の音源
ステレオ対応や不具合修正した音源です。
旧音源と同じMME(*1)を使用しています。
・wavのレイテンシは旧音源と変わらず大きいです
・wavの同時発音数は再生から約0.45秒までは無限、それ以降は50です
3(デフォルトの設定)DirectSoundの音源(波形書き込み式)
ステレオ対応や不具合修正した音源です。
DirectSound(*2)を使用し、音の波形を直接サウンドバッファに書き込み再生しています。
・レイテンシが小さくなります
・旧音源に近い音になります(特に効果音を、毎フレーム再生した場合や大量再生した際の音)
・wavの同時発音数は再生から約0.45秒までは無限、それ以降は50です
4DirectSoundの音源(API使用式)
ステレオ対応や不具合修正した音源です。
DirectSound(*2)を使用し、DirectSoundのAPIを使い再生します。
・レイテンシが小さくなります
・wavの同時発音数は常に50です
・効果音の発音タイミングは10ms単位になります(効果音を毎フレーム再生すると、他のモードとは少し音が違う)
・Windows XP以前では、再生時の処理負担が軽いです

※ 音源モード2,3は、音源がMMEかDirectSoundかの違いのみです。
※ Windows 95,98,98SE,Meは、デフォルト音源モード2となります。(3,4の場合、あるPCでレイテンシが遅い・音がならないなどの現象があったため)

*1) MME
   Windows標準のサウンドドライバーです
   音声が再生されるまでの時間(レイテンシ)が大きいです
*2) DirectSound
   Windowsのゲーム用のサウンドドライバーです
   MMEよりもレイテンシが小さくなります

互換性の設定「11025Hz, 22050Hz, 44100Hz以外のwavで再生速度が速くなる(かつ音が高くなる)現象」を参照


$mplayer.setBaseVolume

(1_30_2022_0804以降)

wav,mzo再生の全体音量を設定します

  • ver1.19以前、wavとmzoの音量は100%でした。
  • ver1.21~1.29は、wavとmzoの音量は50%でした。
  • ver1.30以降、wavとmzoの音量は100%になりました。
  • default.tonyuprjのtargetVersion(無い場合はsavedVersion)によってデフォルトの精度が変わります
    • 1210~1290の場合は、互換性のためwavとmzoの音量は50%
    • 1300以上の場合は、wavとmzoの音量は100%
  • 手動で音量を変えたい場合、このメソッドを使用します

書式

setBaseVolume(volPer)
  • volPer
     wav,mzoの全体音量を実数で指定します。
     例えば、1.0は元の音量(100%)、0.5は50%の音量となります。
     デフォルトはver1.21~1.29では0.5、それ以外のバージョンでは1.0です。

互換性の設定「wav,mzoの音量」を参照


$mplayer.setVolumeLimiter

(1_30_2022_0804以降)

wav,mzoの音量が大きい場合、音割れを防ぐ機能の有効・無効を設定します。
setSoundPlayMode(2or3)に設定時、適用されます。
setSoundPlayMode(4)に設定時は、DirectSoundが自動的に行います。(Windows XP以前では音割れします)

書式

setVolumeLimiter(enable)
  • enable
     1で有効、0で無効
     デフォルトは0(無効)です。

互換性の設定「効果音を多数大音量で鳴らすと音割れする現象」を参照


$mplayer.setSeLoopEnable

(1_30_2022_0804以降)

wavのループの有効・無効を設定します

※ 一部のゲームで、wavループが効かないver1.22以前の時にループ再生を指定してしまい、
  ver1.23以降で実行するとwavループが大量に行われ大音量となったため、それを防ぐために追加した機能です。
  自動的に互換性を保つため、通常このメソッドを使う必要はありません

  • ver1.22以前は、$mplayer.playでwavをループ再生を指定しても、ループ再生をしないようにします
  • ver1.23以降は、$mplayer.playでwavをループ再生を指定すると、ループ再生します
  • default.tonyuprjのtargetVersion(無い場合はsavedVersion)によってデフォルトの精度が変わります
    • 1220以下の場合は、wavループ再生を無効にします
    • 1230以上の場合は、wavループ再生を有効にします
  • 手動で設定を変えたい場合、このメソッドを使用します

書式

setSeLoopEnable(enable)
  • enable
     1で有効、0で無効
     ver1.22以前では、0がデフォルトで無効です。
     ver1.23以降では、1がデフォルトで有効です。

互換性の設定「ver1.22以前のゲームをver1.23以降で実行すると、wavがループしてしまう」を参照


$mplayer.setSeStopEnable

(1_30_2022_0804以降)

$mplayer.stopSEの有効・無効を設定します

書式

setSeStopEnable(enable)
  • enable
     1で有効、0で無効
     デフォルトでは無効になっているので、$mplayer.stopSEを使うときは有効化してください。

命令リファレンスWikiトップ