ノートイベント 0x81~0xFF
音符を表します。
構文
byte note, byte duration // 通常
byte note, ushort duration // 16ビット・デュレーション・モード時
byte note // デフォルト・デュレーション・モード時
パラメータ
| パラメータ | 型 | 内容 |
|---|---|---|
| note | byte | ノート・ナンバー(0x81~0xFF) |
| duration | byte / ushort | 長さ(ティック)。 デフォルト・デュレーション・モード時は省略する。 16ビット・デュレーション・モード時はビッグエンディアンの16ビット値 |
解説
ノート・ナンバーとチャネルの設定からピッチを求めてDSPのチャネルをキーオンし、duration の間待機します。SE割込中のBGMチャネルでは、DSPへの書き込みは行わずに待機だけを行います。
キーオン時には、次の値がDSPへ書き込まれます。
- 音量: チャネルの左右の音量(そのまま)
- ピッチ: 後述のピッチ値
- ソース・ナンバー、ADSR1, ADSR2: チャネルの設定値
- GAIN: $7F
同時に、ピッチベンド・ビブラート・トレモロが有効な場合は、それぞれのカウンタが初期化されます。
長さとキーオフ
ノートの残りティック数は1ティックごとに1ずつ減り、残りが1になった時点でキーオフ、0になった時点で次のイベントを読み込みます。つまり、長さ n のノートは n−1 ティックの間発音し、最後の1ティックは消音(リリース)になります。
長さに1を指定した場合はキーオフが行われないため、次のノートとの間に消音は入りません。長さに0を指定した場合は1を指定した場合と同じ動作になります。
ピッチの計算
ピッチは、(ノート・ナンバー + トランスポーズ値) の下位7ビットを添字としてピッチ定義テーブル($11E1)を引き、チューニング値で補正して求めます。
ピッチ値はDSPのピッチレジスタの値で、$1000 のときに波形サンプルが原音の速さで再生されます。
チューニング値 t が0でない場合、ピッチ値 P は P + P × t ÷ 1024 に補正されます。
ピッチ定義テーブルの範囲は添字 0~61 です。
下の表の音名は、ノート・ナンバー 0x81 を C3 とした場合のものです。実際の音程は波形サンプルによって異なります。
ただし、原則としてこの表のオクターブ関係になるようにトランスポーズを設定しておくと分かりやすくなります。
| 添字 | ノート・ナンバー | 音名 | ピッチ値 |
|---|---|---|---|
| 0 | 0x80 | 休符 | $0000 |
| 1 | 0x81 | C3 | $0200 |
| 2 | 0x82 | C#3 | $021E |
| 3 | 0x83 | D3 | $023F |
| 4 | 0x84 | D#3 | $0261 |
| 5 | 0x85 | E3 | $0285 |
| 6 | 0x86 | F3 | $02AB |
| 7 | 0x87 | F#3 | $02D4 |
| 8 | 0x88 | G3 | $02FF |
| 9 | 0x89 | G#3 | $032D |
| 10 | 0x8A | A3 | $035D |
| 11 | 0x8B | A#3 | $0390 |
| 12 | 0x8C | B3 | $03C7 |
| 13 | 0x8D | C4 | $0400 |
| 14 | 0x8E | C#4 | $043D |
| 15 | 0x8F | D4 | $047D |
| 16 | 0x90 | D#4 | $04C2 |
| 17 | 0x91 | E4 | $050A |
| 18 | 0x92 | F4 | $0557 |
| 19 | 0x93 | F#4 | $05A8 |
| 20 | 0x94 | G4 | $05FE |
| 21 | 0x95 | G#4 | $065A |
| 22 | 0x96 | A4 | $06BA |
| 23 | 0x97 | A#4 | $0721 |
| 24 | 0x98 | B4 | $078D |
| 25 | 0x99 | C5 | $0800 |
| 26 | 0x9A | C#5 | $087A |
| 27 | 0x9B | D5 | $08FB |
| 28 | 0x9C | D#5 | $0984 |
| 29 | 0x9D | E5 | $0A14 |
| 30 | 0x9E | F5 | $0AAE |
| 31 | 0x9F | F#5 | $0B50 |
| 32 | 0xA0 | G5 | $0BFD |
| 33 | 0xA1 | G#5 | $0CB3 |
| 34 | 0xA2 | A5 | $0D74 |
| 35 | 0xA3 | A#5 | $0E41 |
| 36 | 0xA4 | B5 | $0F1A |
| 37 | 0xA5 | C6 | $1000 |
| 38 | 0xA6 | C#6 | $10F4 |
| 39 | 0xA7 | D6 | $11F6 |
| 40 | 0xA8 | D#6 | $1307 |
| 41 | 0xA9 | E6 | $1429 |
| 42 | 0xAA | F6 | $155C |
| 43 | 0xAB | F#6 | $16A1 |
| 44 | 0xAC | G6 | $17F9 |
| 45 | 0xAD | G#6 | $1966 |
| 46 | 0xAE | A6 | $1AE9 |
| 47 | 0xAF | A#6 | $1C82 |
| 48 | 0xB0 | B6 | $1E34 |
| 49 | 0xB1 | C7 | $2000 |
| 50 | 0xB2 | C#7 | $21E7 |
| 51 | 0xB3 | D7 | $23EB |
| 52 | 0xB4 | D#7 | $260E |
| 53 | 0xB5 | E7 | $2851 |
| 54 | 0xB6 | F7 | $2AB7 |
| 55 | 0xB7 | F#7 | $2D41 |
| 56 | 0xB8 | G7 | $2FF2 |
| 57 | 0xB9 | G#7 | $32CC |
| 58 | 0xBA | A7 | $35D1 |
| 59 | 0xBB | A#7 | $3904 |
| 60 | 0xBC | B7 | $3C68 |
| 61 | 0xBD | C8 | $3FFF |