English
PROGRAMMER'S GUIDEサウンドI/Fライブラリ
■   | 進む
サウンドI/Fライブラリ

1.ガイド


1.1 目的

 サウンドシステムとメイン(CDシステムを含む)システムとのインタフェースを実現し、サウンドをコントロールすることです。

1.2 概要

 サウンドシステムでは、シーケンス、PCM、CDのサウンドをコントロールできます。
 サウンドをコントロールするには、まずサウンドシステムを起動する必要があります。次にシーケンスとPCMについては演奏の準備としてサウンドデータをサウンドメモリに転送する必要があります。またサウンドのコントロールの結果はステータスの取得で取得します。詳細を以下の順で説明していきます。
 サウンド開発マニュアルのサウンドドライバシステムインタフェースもご覧ください。

1.3 サウンドシステムの起動

 サウンドシステムの起動は電源投入時に行う必要があります。以下にコーリングシーケンスを示します。

void sndStart()
{
     SndIniDt sys_ini;        /* システム起動用データ格納領域          */

     SND_INI_PRG_ADR(sys_ini) = (Uint16 *)0x22002400;
                              /* 68Kプログラム格納先頭アドレス設定      */
     SND_INI_PRG_SZ(sys_ini) = (Uint16 *)0x4fc8;
                              /* 68Kプログラムサイズ設定           */
     SND_INI_ARA_ADR(sys_ini) = (Uint16 *)0x22004400;     
                              /* サウンドエリアマップ格納先頭アドレス設定  */
     SND_INI_ARA_SZ(sys_ini) = 0x0550;
                              /* サウンドエリアマップサイズ(ワード指定)設定 */
     SND_Init(&sys_ini);    /* サウンドシステム起動              */
     ...
}

1.4 演奏の準備

 [シーケンス]
 サウンドコントロール関数で実行対象となるシーケンスデータ(曲データ、効果音データ)をサウンドメモリへ転送する必要があります。転送は現在のサウンドエリアマップにあわせて転送してください。サウンドエリアマップについては、サウンド開発マニュアルをご覧ください。コーリングシーケンスは、「サウンドのコントロール」に示してあります。

 [PCM]
 PCMの演奏の準備についてはサウンド開発マニュアルのサウンドドライバシステムインタフェースをご覧ください。

1.5 サウンドのコントロール

 [機能概要]
 サウンドのコントロール関数はサウンドメモリへコマンドを書き込みます。コマンドバッファは8個あります。サウンドのコントロール関数ではコマンドバッファを意識しなくても使えるようにしています。

 [コーリングシーケンス]
 以下のコーリングシーケンスは、シーケンス開始までの処理です。

void sndCnt()
{
     sndStart();                        /* サウンドシステム起動(上記項目参照)  */
     SND_ChgMap(2);                     /* サウンドエリアマップ変更       */
     SND_MoveData((Uint16 *)0x22005000, 0xffff, SND_KD_SEQ, 2);
                                        /* サウンドデータ転送(シーケンス)    */
     SND_MoveData((Uint16 *)0x22005500, 0xffff, SND_KD_TONE, 2);
                                        /* サウンドデータ転送(音色)       */
     SND_SetTlVl(15);                   /* 全体音量の設定            */
     SND_StartSeq(0, 2, 5, 0);          /* シーケンス開始            */
     ...
}

1.6 ステータスの取得

 [機能概要]
 以下にサウンドデータ別に機能概要を示します。

 [コーリングシーケンス]
 以下のコーリングシーケンスは、発音管理番号0のシーケンスがSTOPしていたら、発音管理番号0に別のシーケンスを開始する処理です。

void sndHantei()
{
     SndSeqStat status;                 /* シーケンスステータス格納領域定義         */
     ...
     SND_GetSeqStat(&status, 0);    /* シーケンスステータス取得                 */
     if(SND_SEQ_STAT_MODE(stauts) == SND_MD_STOP){
                                        /* 発音管理番号0のシーケンスがstopかどうか?*/
          SND_StartSeq(0, 2, 6, 0);     /* シーケンス開始                          */
     }
}


■   | 進む
PROGRAMMER'S GUIDEサウンドI/Fライブラリ
Copyright SEGA ENTERPRISES, LTD., 1997