コマンド 0x2F: トレモロ
音量を三角波状に変化させるトレモロを設定します。
構文
0x2F, byte length, byte rate, sbyte depth, byte delay
パラメータ
| パラメータ | 型 | 内容 |
|---|---|---|
| length | byte | 折り返しの間隔(ステップ数) |
| rate | byte | 1ステップの時間 |
| depth | sbyte | 1ステップあたりの音量の変化量(符号は無視される) |
| delay | byte | キーオンからトレモロ開始までの時間 |
解説
トレモロを有効にし(エフェクト有効フラグ bit2)、現在のチャネルの左右の音量を基準音量($0314+x, $0324+x)として保存します。設定はコマンド 0x30 で解除するまで以降のすべてのノートに適用されます。
トレモロの動作は次のとおりです。
- キーオン時に、チャネルの音量を基準音量に戻し、depth を正の値にし、折り返しまでのステップ数を length ÷ 2 に初期化する。
- delay の時間が経過するまで待つ。
- rate の時間ごとに左右の音量に depth を加算し、DSPへ書き込む(1ステップ)。
- 折り返しまでのステップ数が0になると、depth の符号を反転し、ステップ数を length に戻す。
エフェクトの時間はテンポに依存しないタイマー周期(初期値で約7.5ms。コマンド 0x2A で変更可能)単位で数えられます。詳しくはシーケンスデータの構造を参照してください。
このコマンドの処理に時間はかからず、同じティックのうちに続くイベントが読み込まれます。
注意
- 音量の加算は8ビットで行われ、範囲の確認はありません。音量 + depth × length ÷ 2 が127を超えないように設定してください。超えると音量の符号が反転します。
- トレモロが有効な間は、キーオンのたびに音量が基準音量に戻されるため、コマンド 0x02, 0x28 で設定した音量は反映されません。音量を変える場合は、トレモロを設定し直してください。
- length には2以上の値を指定します。