命令リファレンス
Ymplayer.setDynamicEffectOgg
Oggの再生中に動的に変更できるエフェクト項目をセットします
変更したくない項目は、引数をnullにしたり、省略したりしてください
※ このメソッドの後に、updatePlayInfo()を呼び出すことで、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で左右のスピーカーの音量が同じになります
小数を指定すると、滑らかに右か左に音量が移っていくような演出ができます
このメソッドを使うより、下記のメソッドを使うことを推奨します
下記のメソッドを使用した後に、updatePlayInfo()を呼び出さないとMusicPlayerに反映されません。
例
(予め test.mid をTonyuに登録しておいてください)
(予め test.ogg をプロジェクトのフォルダに置いてください)
extends SpriteChar;
$mplayer = new Ymplayer();
$mplayer.updatePlayInfo(); // 更新
$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.updatePlayInfo(); // 更新
}
drawText(100, 0, "音量 :" + oggVolume, $clWhite);
drawText(100, 20, "テンポ:" + oggTempo , $clWhite);
drawText(100, 40, "パン :" + oggPan , $clWhite);
v++;
update();
}
戻る