命令リファレンス 


Ymplayer.setDynamicEffect

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

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

書式

setDynamicEffect(vol, tempo, pitch)
vol(省略可能)
Midiの音量(0〜127)
tempo(省略可能)
Midiのテンポ(0.1〜8)
1で等速、2で2倍のテンポ、0.5で半分のテンポになります
pitch(省略可能)
Midiのピッチ(音の高低)(-8192〜8191)
-8192で1オクターブ下がり、8191で1オクターブ上がります
マスターピッチ機能がONのとき有効です
setPlayingOption()でマスターピッチ機能をONにできます
※ マスターピッチ機能をONにすると、ピッチベンドが送信されているMidiでは、音が変になるMidiがあります

メソッドから設定する以外に、Ymplayerクラスの変数を直接変更する方法もあります。
変数を変更した後に、updatePlayingInfomation()を呼び出さないとMusicPlayerに反映されません。

例1

メソッドを使う場合
(予め test.mid をTonyuに登録しておいてください)
extends SpriteChar;

$mplayer = new Ymplayer();
$mplayer.setPlayingOption(null, null, 1, null, null); // マスターピッチ機能をONにする
$mplayer.updatePlayingInfomation(); // 更新
$mplayer.play($se_test, 1); // 再生
midiVolume = 127;
midiTempo  = 1;
midiPitch  = 0;
v = 1;
while (1) {
  if (getkey(65) > 0 && midiVolume >     0) midiVolume --;       // A:音量−
  if (getkey(83) > 0 && midiVolume <   127) midiVolume ++;       // S:音量+
  if (getkey(68) > 0 && midiTempo  >   0.1) midiTempo  -= 0.125; // D:テンポ−
  if (getkey(70) > 0 && midiTempo  <   8  ) midiTempo  += 0.125; // F:テンポ+
  if (getkey(71) > 0 && midiPitch  > -8192) midiPitch  -= 64;    // G:ピッチ−
  if (getkey(72) > 0 && midiPitch  <  8191) midiPitch  += 64;    // H:ピッチ+
  if (v % 6 == 0) { // 1秒間に10回更新
    $mplayer.setDynamicEffect(midiVolume, midiTempo, midiPitch); // エフェクト設定
    $mplayer.updatePlayingInfomation(); // 更新
  }
  drawText(100,  0, "音量 :" + midiVolume, $clWhite);
  drawText(100, 20, "テンポ:" + midiTempo , $clWhite);
  drawText(100, 40, "ピッチ:" + midiPitch , $clWhite);
  v ++;
  update();
}

例2

変数を直接変更する場合
(予め test.mid をTonyuに登録しておいてください)
extends SpriteChar;

$mplayer = new Ymplayer();
$mplayer.midiMasterPitch = 1; // マスターピッチ機能をONにする
$mplayer.updatePlayingInfomation(); // 更新
$mplayer.play($se_test, 1); // 再生
v = 1;
while (1) {
  if (getkey(65) > 0 && $mplayer.midiVolume >     0) $mplayer.midiVolume --;       // A:音量−
  if (getkey(83) > 0 && $mplayer.midiVolume <   127) $mplayer.midiVolume ++;       // S:音量+
  if (getkey(68) > 0 && $mplayer.midiTempo  >   0.1) $mplayer.midiTempo  -= 0.125; // D:テンポ−
  if (getkey(70) > 0 && $mplayer.midiTempo  <   8  ) $mplayer.midiTempo  += 0.125; // F:テンポ+
  if (getkey(71) > 0 && $mplayer.midiPitch  > -8192) $mplayer.midiPitch  -= 64;    // G:ピッチ−
  if (getkey(72) > 0 && $mplayer.midiPitch  <  8191) $mplayer.midiPitch  += 64;    // H:ピッチ+
  if (v % 6 == 0) { // 1秒間に10回更新
    $mplayer.updatePlayingInfomation(); // 更新
  }
  drawText(100,  0, "音量 :" + $mplayer.midiVolume, $clWhite);
  drawText(100, 20, "テンポ:" + $mplayer.midiTempo , $clWhite);
  drawText(100, 40, "ピッチ:" + $mplayer.midiPitch , $clWhite);
  v ++;
  update();
}

戻る