コマンド 0x2F: トレモロ

音量を三角波状に変化させるトレモロを設定します。

構文

0x2F, byte length, byte rate, sbyte depth, byte delay

パラメータ

パラメータ型内容
lengthbyte折り返しの間隔(ステップ数)
ratebyte1ステップの時間
depthsbyte1ステップあたりの音量の変化量(符号は無視される)
delaybyteキーオンからトレモロ開始までの時間

解説

トレモロを有効にし(エフェクト有効フラグ bit2)、現在のチャネルの左右の音量を基準音量($0314+x, $0324+x)として保存します。設定はコマンド 0x30 で解除するまで以降のすべてのノートに適用されます。

トレモロの動作は次のとおりです。

  1. キーオン時に、チャネルの音量を基準音量に戻し、depth を正の値にし、折り返しまでのステップ数を length ÷ 2 に初期化する。
  2. delay の時間が経過するまで待つ。
  3. rate の時間ごとに左右の音量に depth を加算し、DSPへ書き込む(1ステップ)。
  4. 折り返しまでのステップ数が0になると、depth の符号を反転し、ステップ数を length に戻す。

エフェクトの時間はテンポに依存しないタイマー周期(初期値で約7.5ms。コマンド 0x2A で変更可能)単位で数えられます。詳しくはシーケンスデータの構造を参照してください。

このコマンドの処理に時間はかからず、同じティックのうちに続くイベントが読み込まれます。

注意

  • 音量の加算は8ビットで行われ、範囲の確認はありません。音量 + depth × length ÷ 2 が127を超えないように設定してください。超えると音量の符号が反転します。
  • トレモロが有効な間は、キーオンのたびに音量が基準音量に戻されるため、コマンド 0x02, 0x28 で設定した音量は反映されません。音量を変える場合は、トレモロを設定し直してください。
  • length には2以上の値を指定します。

参照

シーケンスデータの構造
コマンド 0x30
コマンド 0x02