この章の目次にもどる
前頁:第10章 コンソールにもどる
次頁:第12章 プリンタにすすむ

第11章 ブザー(beep)

11.1 対象デバイス

11.2 固有機能

11.3 ドライバ起動パラメータ

11.4 属性データ

以下の属性データをサポートする。

R 読み込みのみ可
W 書き込みのみ可
RW読み込み / 書き込み可
/* BEEP データ番号 */
typedef enum {
    /* 共通属性 なし */
    /* 個別属性 */
    DN_BEEP     = -100, /* ビープ音/メロディー発生 */
    DN_BEEPMELODY_S = -200, /* メロディー定義 (-200〜-299) */
    DN_BEEPMELODY_E = -299
} BEEPDataNo;
DN_BEEP :
ビープ音発生 (W)
     
data:   BEEPData

typedef struct {
    UH  time;   /* 発生時間または回数 (0:停止) */
    H   freq;   /* 周波数またはメロディー番号 */
    UH  vol[2]; /* vol[0]: Rch(#1) 音量 */
            /* vol[1]: Lch(#2) 音量 */
} BEEPData;
freq >= 0 の場合 ( ブザー音の発生 )
time :
ビープ音の発生時間 ( msec )
実際に有効な時間の分解能はインプリメントに依存。0 はビープ音を発生しないが、 以前のビープ音を停止する効果がある。
freq :
ビープ音の周波数 ( Hz )
実際に有効な周波数レンジはインプリメントに依存 ( 可聴範囲:50 Hz 〜 20 KHz 程度 ) 。範囲外の時は ER_PAR とする。
freq < 0 の場合 ( メロディーの発生 )
time :
メロディー音の発生回数
指定された回数、繰り返しメロディーを発生する。 0 はメロディーを発生しないが、 以前のメロディーを停止する効果がある。
freq :
メロディー番号 (-1 〜 -100)
ドライバーに登録されているメロディーの番号を指定する。 登録されていなければ ER_PAR とする。
vol[0] :
ビープ音の Rch(#1)の音量
vol[1] :
ビープ音の Lch(#2) の音量
0:最小、0xFFFF:最大
ハードウエアがモノラルの場合は、大きい方の音量とする。
ビープ音/メロディーを発生し、指定された時間/回数の発生完了を待たずに、すぐに処理完了応答を返す。
発生したビープ音/メロディーは以下のいずれかの条件で停止する。 ビープ音/メロディー発生中の新たなビープ音/メロディーの要求は発生中のビープ音/メロディーをキャンセルして要求を受け付ける。
DN_BEEPMELODY(no) :
メロディー定義 (RW)
data:   BEEPMelody

#define DN_BEEPMELODY(no)   ( DN_BEEPMELODY_S + 1 + (no) )

no: メロディー番号 (-1 〜 -100)
-200〜-299 をメロディー定義用データ番号とする。 ただし、いくつメロディーを登録できるかは、 インプリメント依存である。-200 から登録可能数分の連続したデータ番号 をサポートし、 それ以外は ER_NOSPT とする。
次のようにデータ番号からメロディー番号を決定する。
メロディー番号 = データ番号 - DN_BEEPMELODY - 1

typedef struct {
    W   type;   /* データ形式番号 */
    union {
        BEEPData    beep[1];    /* type=1 */
        /* その他:インプリメント依存 */
    } d;
} BEEPMelody;
type :
メロディーのデータ形式番号
d :
メロディーデータ
データ形式ごとに内容は異なる。
可変長のデータで、その長さはデータ数 ( datacnt ) によってわかる。 データ数は、BEEPMelody 全体の長さ ( バイト数 ) を表わす。
type = 1 ビープ音
BEEPData の配列でメロディーデータを表わす。
配列の並び順にビープ音を鳴らすことで、メロディーを発生する。
BEEPDatafreq に負数 ( メロディー番号 ) を指定してはいけない。

11.5 固有データ

なし

11.6 事象通知

なし

11.7 補足

PCM などとハードウエアを共有している場合、 処理が競合した場合の動作はインプリメント依存とする。

一般には処理内容により優先度を決めておき、 優先度の高い要求が来た場合は優先度の低い処理を中止して優先度の高い処理を行う。 優先度の高い処理を実行中に優先度の低い処理が要求された場合はエラー ( ER_BUSY ) とする。

    優先度の例
    高:PMC 録音/再生
    低:ブザー

11.8 エラーコード

ER_BUSY     ハードウエア競合

その他は、デバイスドライバ共通仕様を参照のこと。

11.9 サポート機能

PC/AT 版:


この章の目次にもどる
前頁:第10章 コンソールにもどる
次頁:第12章 プリンタにすすむ