命令リファレンス 


Ymplayer.setDynamicEffectOgg

Oggの再生中に動的に変更できるエフェクト項目をセットします

変更したくない項目は、引数をnullにしたり、省略したりしてください
※ このメソッドの後に、updatePlayingInfomation()を呼び出すことで、MusicPlayerに反映されます

書式

setDynamicEffectOgg(vol, tempo, pan)
vol(省略可能)
Oggの音量(0〜127)
tempo(省略可能)
Oggのテンポ(0.001〜8)
1で等速、2で2倍のテンポ、0.5で半分のテンポになります
Oggの場合はテンポを変えるとピッチも変化します(音声ファイルであるため)

※ 実際にテンポを変更できる範囲は、0.001〜8倍の範囲よりも小さくなる場合があります。
  MusicPlayer内部の仕様(DirectSoundの仕様)で、100000Hzより高い周波数で再生できないOSがあるそうです。
  つまり、サンプリングレートが44100HzのOggは、約2.267倍速までしかテンポを上げれません。
  
  作者のPC(win7)では、対応している周波数が100Hz〜200000Hzまででした。
  この環境でサンプリングレートが44100HzのOggを再生すると、有効なテンポは約0.002〜4.535倍速までです。
pan(省略可能)
Oggのパン(左右のスピーカーの音量バランス)(-1.0〜1.0)
-1.0で左スピーカーだけ鳴り、1.0で右スピーカーだけ鳴り、
0で左右のスピーカーの音量が同じになります
小数を指定すると、滑らかに右か左に音量が移っていくような演出ができます

このメソッドを使うより、下記のメソッドを使うことを推奨します
下記のメソッドを使用した後に、updatePlayingInfomation()を呼び出さないとMusicPlayerに反映されません。

(予め test.mid をTonyuに登録しておいてください)
(予め test.ogg をプロジェクトのフォルダに置いてください)
extends SpriteChar;

$mplayer = new Ymplayer();
$mplayer.updatePlayingInfomation(); // 更新
$mplayer.play($se_test, 0); // Tonyu開発環境版では、プロジェクトを開いてから一度midiを再生しないとoggを再生できない
wait(20);
$mplayer.stop();
wait(20);
$mplayer.play("test.ogg", 1); // 再生
oggVolume = 127;
oggTempo  = 1;
oggPan    = 0;
v = 1;
while (1) {
  if (getkey(65) > 0 && oggVolume >      0) oggVolume --;        // A:音量−
  if (getkey(83) > 0 && oggVolume <    127) oggVolume ++;        // S:音量+
  if (getkey(68) > 0 && oggTempo  >  0.001) oggTempo  -= 0.125;  // D:テンポ−
  if (getkey(70) > 0 && oggTempo  <  8    ) oggTempo  += 0.125;  // F:テンポ+
  if (getkey(71) > 0 && oggPan    >   -1.0) oggPan    -= 1 / 64; // G:パン−
  if (getkey(72) > 0 && oggPan    <    1.0) oggPan    += 1 / 64; // H:パン+
  if (v % 6 == 0) { // 1秒間に10回更新
    $mplayer.setDynamicEffectOgg(oggVolume, oggTempo, oggPan); // エフェクト設定
    $mplayer.updatePlayingInfomation(); // 更新
  }
  drawText(100,  0, "音量 :" + oggVolume, $clWhite);
  drawText(100, 20, "テンポ:" + oggTempo , $clWhite);
  drawText(100, 40, "パン :" + oggPan   , $clWhite);
  v++;
  update();
}

戻る