##### Sound Library - 構造体

# SDS_MIDI_STAT

MIDIポートのステータスを定義したデータタイプ

### 定義

>     struct SDS_MIDI_STAT
>     {
>          Sint16 rev;
>          Sint8 m_Vol;
>          Sint8 m_Pan;
>          Sint8 m_FxInLev;
>          Sint8 m_DrctLev;
>          Sint16 m_Pitch;
>          Sint16 m_SeqSpeed;
>          Uint32 m_SeqTotalBeatTime;
>          Sint32 m_SeqCurAdr;
>          Uint32 m_Err;
>          Uint32 m_Flg;
>     };
>     typedef struct SDS_MIDI_STAT SDS_MIDI_STAT;

### メンバ

> rev | リザーブ領域
> m_Vol | ポートのボリューム値
> m_Pan | ポートのパンポット値
> m_FxLev | ポートのFXレベル
> m_DrctLev | ポートのダイレクトレベル
> m_Pitch | ポートのピッチ値
> m_Speed | ポートのスピード値
> m_TotalBeatTime | 再生しているサウンドデータの総拍数
> m_CurAdr | 再生しているサウンドデータのカレントポインタ
> m_Err | 各種エラー
> m_Flg | 各種フラグ

### 解説

> MIDIポートのステータス情報のデータタイプです。

> メンバ m_Flgには次のビットが設定されます。該当ビットが立っていると対応する機能を実行中ということになります。

> SDD_PORT_FLG_PLAY | MIDI Sequence Dataの再生中
> SDD_PORT_FLG_PAUSE | MIDI Sequence Dataの再生を一時停止中
> SDD_PORT_FLG_CHG_VOL | ボリューム設定中(フェード処理中)
> SDD_PORT_FLG_CHG_SPEED | スピード設定中(フェード処理中)
> SDD_PORT_FLG_CHG_PITCH | ピッチ設定中(フェード処理中)
> SDD_PORT_FLG_CHG_PAN | パンポット設定中(フェード処理中)
> SDD_PORT_FLG_TROUBLE | エラー発生時

> メンバ m_Errには次のビットが設定されます。該当ビットが立っていると対応するエラーが発生しているということになります。

> 定義 | 意味
> SDD_PORT_ERR_PRIORITY | 現在再生しているサウンドデータのプライオリティより新たに再生しようとしたサウンドデータのプライオリティが低いとき
> SDD_PORT_ERR_REQUEST_NUM | サウンドデータの再生リクエストを受けたが実行できない場合(例えば存在しないバンク番号や存在しないデータ番号を指定した場合など)
> SDD_PORT_ERR_DATA_ID_ERR | 再生しようとしたサウンドデータのデータIDおよびバンクIDに異常があるとき
> SDD_PORT_ERR_VER_ERR | サウンドデータのバージョンが正しくないとき(古いもしくは新しい)
> SDD_PORT_ERR_MIDI_BUF_NO_ENOUGH | MIDIシーケンサもしくはサウンドライブラリからMIDI音源に対してメッセージを送信したときにバッファがオーバフローしたとき
> SDD_PORT_ERR_MIDI_SEQ_BUF_NO_ENOUGH | MIDIシーケンサがMIDI音源に対してメッセージを送信したいがバッファフローのために送信できない時のスタックがオーバフローしたとき
> SDD_PORT_ERR_SLOT_NO_ENOUGH | MIDIシーケンサもしくはサウンドライブラリからMIDI音源に対してメッセージを送信したときにバッファがオーバフローしたとき

### 用例

>     /*
>      *	ハンドルgMidiHandleのポートでMIDI Sequence Dataを再生中かどうか調べる
>      */
>     SDS_MIDI_STAT	stat;

>     sdMidiGetStat( gMidiHandle, &stat)
>     if ( stat.m_Flg & SDD_PORT_FLG_PLAY)
>     {
>     	/*
>     	 *	MIDI Sequence Dataを再生中
>     	 */
>     }

### 備考

> MIDI音源のポートに対してボリュームなど各種設定を行おうとした場合、Sound Driverのステータスはすぐに変化しませんので、 sdMidiGetStat()関数で取得したステータスが意図しない値の場合があります。 ステータスが変化するのはSound LibraryがHost CommandをSound Driverに送信し、それをSound Driverが解析し、正常に実行された後になります。

### 参照

> sdMidiGetStat() | MIDIポートのステータスの取得
> sdMidiGetStat() | MIDIポートのステータスの取得

SDS_MIDI_STAT

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000