命令リファレンス 


Ymplayer.setStaticEffect

Midiの再生前・停止前にあらかじめ設定するエフェクト関係の項目をセットします

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

書式

setStaticEffect(fadeInTime, fadeOutTime, startTick, keyShift)
fadeInTime(省略可能)
フェードインしながら再生する時間(ミリ秒)(100〜)、フェードインしないなら0
fadeOutTime(省略可能)
フェードアウトしながら停止する時間(ミリ秒)(100〜)、フェードアウトしないなら0
startTick(省略可能)
演奏開始するティックを指定(1〜(演奏するmidiの総ティック-1))、指定しないなら0
0以外の値にすると、最初だけmidiの冒頭の空白スキップが行われません(ループ後は行われます)
keyShift(省略可能)
キーシフト(移調)するなら0以外の数値(1で半音、12で1オクターブ移調)、しないなら0
ピッチと似ていますが、再生中に変更はできず、半音単位でしか音の高低を変えることはできません
しかし、ピッチでは音が変になる場合があるのに対し、こちらは音が変になることはありません

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

例1

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

$mplayer = new Ymplayer();
midiFadeOutTime = 0;
midiFadeInTime  = 0;
midiKeyShift    = 0;
midiStartTick   = 0;
while (1) {
  if (getkey(65) > 0 && midiFadeInTime  > 0) midiFadeInTime  -= 50;  // A:フェードイン−
  if (getkey(83) > 0)                        midiFadeInTime  += 50;  // S:フェードイン+
  if (getkey(68) > 0 && midiFadeOutTime > 0) midiFadeOutTime -= 50;  // D:フェードアウト−
  if (getkey(70) > 0)                        midiFadeOutTime += 50;  // F:フェードアウト+
  if (getkey(71) > 0 && midiStartTick   > 0) midiStartTick   -= 100; // G:開始ティック−
  if (getkey(72) > 0)                        midiStartTick   += 100; // H:開始ティック+
  if (getkey(74) % 5 == 1)                   midiKeyShift    --;     // J:キーシフト−
  if (getkey(75) % 5 == 1)                   midiKeyShift    ++;     // K:キーシフト+
  if (getkey(90) == 1) { // Z:再生
    $mplayer.setStaticEffect(midiFadeInTime, null, midiStartTick, midiKeyShift); // フェードアウト以外変更
    $mplayer.updatePlayingInfomation(); // 更新
    $mplayer.play($se_test, 1);
  }
  if (getkey(88) == 1) { // X:停止
    $mplayer.setStaticEffect(null, midiFadeOutTime, null, null); // フェードアウトのみ変更
    $mplayer.updatePlayingInfomation(); // 更新
    $mplayer.stop();
  }
  
  drawText(100,  0, "フェードイン :" + midiFadeInTime , $clWhite);
  drawText(100, 20, "フェードアウト:" + midiFadeOutTime, $clWhite);
  drawText(100, 40, "開始ティック :" + midiStartTick  , $clWhite);
  drawText(100, 60, "キーシフト  :" + midiKeyShift   , $clWhite);
  update();
}

例2

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

$mplayer = new Ymplayer();
while (1) {
  
  if (getkey(65) > 0 && $mplayer.midiFadeInTime  > 0) $mplayer.midiFadeInTime  -= 50;  // A:フェードイン−
  if (getkey(83) > 0)                                 $mplayer.midiFadeInTime  += 50;  // S:フェードイン+
  if (getkey(68) > 0 && $mplayer.midiFadeOutTime > 0) $mplayer.midiFadeOutTime -= 50;  // D:フェードアウト−
  if (getkey(70) > 0)                                 $mplayer.midiFadeOutTime += 50;  // F:フェードアウト+
  if (getkey(71) > 0 && $mplayer.midiStartTick   > 0) $mplayer.midiStartTick   -= 100; // G:開始ティック−
  if (getkey(72) > 0)                                 $mplayer.midiStartTick   += 100; // H:開始ティック+
  if (getkey(74) % 5 == 1)                            $mplayer.midiKeyShift    --;     // J:キーシフト−
  if (getkey(75) % 5 == 1)                            $mplayer.midiKeyShift    ++;     // K:キーシフト+
  if (getkey(90) == 1) { // Z:再生
    $mplayer.updatePlayingInfomation(); // 更新
    $mplayer.play($se_test, 1);
  }
  if (getkey(88) == 1) { // X:停止
    $mplayer.updatePlayingInfomation(); // 更新
    $mplayer.stop();
  }
  
  drawText(100,  0, "フェードイン :" + $mplayer.midiFadeInTime , $clWhite);
  drawText(100, 20, "フェードアウト:" + $mplayer.midiFadeOutTime, $clWhite);
  drawText(100, 40, "開始ティック :" + $mplayer.midiStartTick  , $clWhite);
  drawText(100, 60, "キーシフト  :" + $mplayer.midiKeyShift   , $clWhite);
  update();
}

戻る