命令リファレンス
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倍の範囲よりも小さくなる場合があります。
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で左右のスピーカーの音量が同じになります
小数を指定すると、滑らかに右か左に音量が移っていくような演出ができます
メソッドから設定する以外に、Ymplayerクラスの変数を直接変更する方法もあります。
変数を変更した後に、updatePlayingInfomation()を呼び出さないとMusicPlayerに反映されません。
- oggVolume
- oggTempo
- oggPan
例1
メソッドを使う場合
(予め 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();
}
例2
変数を直接変更する場合
(予め 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); // 再生
v = 1;
while (1) {
if (getkey(65) > 0 && $mplayer.oggVolume > 0) $mplayer.oggVolume --; // A:音量−
if (getkey(83) > 0 && $mplayer.oggVolume < 127) $mplayer.oggVolume ++; // S:音量+
if (getkey(68) > 0 && $mplayer.oggTempo > 0.001) $mplayer.oggTempo -= 0.125; // D:テンポ−
if (getkey(70) > 0 && $mplayer.oggTempo < 8 ) $mplayer.oggTempo += 0.125; // F:テンポ+
if (getkey(71) > 0 && $mplayer.oggPan > -1.0) $mplayer.oggPan -= 1 / 64; // G:パン−
if (getkey(72) > 0 && $mplayer.oggPan < 1.0) $mplayer.oggPan += 1 / 64; // H:パン+
if (v % 6 == 0) { // 1秒間に10回更新
$mplayer.updatePlayingInfomation(); // 更新
}
drawText(100, 0, "音量 :" + $mplayer.oggVolume, $clWhite);
drawText(100, 20, "テンポ:" + $mplayer.oggTempo , $clWhite);
drawText(100, 40, "パン :" + $mplayer.oggPan , $clWhite);
v++;
update();
}
戻る