#include <nitro/snd.h>typedef struct SNDInstData
{
u8 type;
u8 padding_;
struct SNDInstParam {
u16 wave[2];
u8 original_key;
u8 attack;
u8 decay;
u8 sustain;
u8 release;
u8 pan;
} param;
} SNDInstData;
type |
インストタイプです。 |
wave |
波形データ情報配列です。 |
original_key |
オリジナルキーです。60が中央のドです。 |
attack |
エンベロープのアタックです。値の範囲は0〜127で、値が大きいほど、速く立ち上がります。 |
decay |
エンベロープのディケイです。値の範囲は0〜127で、値が大きいほど、速く減衰します。 |
sustain |
エンベロープのサステインです。値の範囲は0〜127で、値が大きいほど、高いゲインを維持します。 |
release |
エンベロープのリリースです。値の範囲は0〜127で、値が大きいほど、速く減衰します。 (ただし値がSND_BANK_DISABLE_RELEASE(=255)の時は特別に、ノートオフしてもリリースしないように動作します。) |
pan |
パンです。値の範囲は、0(左)〜64(中央)〜127(右)です。 |
インストデータ構造体です。バンクデータ中の各インスト毎のパラメータを保持しています。
この構造体は、 SND_ReadInstData() で取得し、 SND_WriteInstData() で 更新することができます。
インストタイプtypeは以下の値を取ります。
表 . SNDInstType
| ラベル | 説明 |
|---|---|
| SND_INST_PCM | PCM波形データ |
| SND_INST_PSG | PSG矩形波 |
| SND_INST_NOISE | ノイズ |
| SND_INST_DIRECTPCM | PCM波形データ(直接アドレス指定) |
| SND_INST_NULL | 空のインスト(発音しません) |
波形情報配列waveには、波形データの情報などが入りますが、
インストタイプtype毎に異なった意味を持ちます。
表 . 波形情報配列
| インストタイプ | wave[0] | wave[1] |
|---|---|---|
| SND_INST_PCM | 波形アーカイブ中のインデックス番号 | バンク中での波形アーカイブ番号 |
| SND_INST_PSG | デューティ比 | (未使用) |
| SND_INST_NOISE | (未使用) | (未使用) |
| SND_INST_DIRECTPCM | SNDWaveData 構造体のアドレスの下位16ビット |
SNDWaveData 構造体のアドレスの上位16ビット |
| SND_INST_NULL | (未使用) | (未使用) |
SND_ReadInstData, SND_WriteInstData, SNDWaveData
2005/05/10 リリース255の時の動作に関する説明追加
2005/03/17 インストタイプSND_INST_NULLの追加
2005/01/19 SNDWaveDataへのリンク追加
2004/10/21 必要なインクルードファイルの誤り訂正
2004/07/20 初版