SNDInstData

定義

#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 初版