CRIミドルウェアリファレンスマニュアル : ADXT

定数

[メニュー]

ADXT_STAT_~
ハンドルの状態

解説

以下に示す定数は、ハンドルの状態を示す。

定数 | 説明
--- | ---
ADXT_STAT_STOP | 停止中
ADXT_STAT_DECINFO | ADX のヘッダ情報取得中
ADXT_STAT_PREP | 再生準備中
ADXT_STAT_PLAYING | デコード＆再生中
ADXT_STAT_DECEND | デコード終了
ADXT_STAT_PLAYEND | 再生終了
ADXT_STAT_ERROR | エラー発生

[メニュー]

ADXT_PLY_~
再生方式

解説

以下に示す定数は、再生方式を示す。ADXT_CALC_WORKマクロで使用する。

定数 | 説明
--- | ---
ADXT_PLY_MEM | メモリからの再生
ADXT_PLY_STM | ディスクからのストリーム再生

処理マクロ

[メニュー]

ADXT_CALC_WORK
作業領域の計算

書式
int ADXT_CALC_WORK(nch, stmflg, nstm, sfreq);
入力

nch ： 最大再生チャンネル数（モノラル：1,ステレオ：2）

stmflg ： 再生モード

ADXT_PLY_MEM：メモリ再生

ADXT_PLY_STM：ストリーム再生

nstm ： 最大ディスクストリーム数

sfreq ： 最高再生サンプリング周波数

出力

なし

戻り値

作業領域の大きさ [byte]

説明

ADXTハンドル1つあたりの作業領域の大きさを計算します。

最大ディスクストリーム数には、同時にディスクから読み込むADXT音声ストリーム数を指定します。ディスク上のファイルのみを再生する場合、同時に再生を行うADXTハンドル数となります。

備考

作業領域サイズの計算式は、以下の通り。

作業領域　＝　入力バッファサイズ　＋　出力バッファサイズ

＜サンプリング周波数48000Hz、モノラル＞

再生方法 | 入力バッファサイズ | 出力バッファサイズ
--- | --- | ---
メモリ再生 | 0 byte | 16Kbyte
ディスクストリーム再生 | 25Kbyte+25Kbyte*並行再生ストリーム数 | 16Kbyte

※ 1　ステレオ再生する場合は、2倍の領域が必要。

※ 2　入力バッファは、サンプリング周波数に比例して減らすことが可能。

[メニュー]

ADXT_CALC_WORK_3D
作業領域の計算(ADXT_Create3D用)

書式
int ADXT_CALC_WORK_3D(stmflg, nstm, sfreq);
入力

stmflg : 再生モード

ADXT_PLY_MEM：メモリ再生

ADXT_PLY_STM：ストリーム再生

nstm : 最大ディスクストリーム数

sfreq : 最高再生サンプリング周波数

出力

なし

戻り値

作業領域の大きさ [byte]

説明

ADXTハンドル1つあたりの作業領域の大きさを計算します。

最大ディスクストリーム数には、同時にディスクから読み込むストリーム数を指定します。ディスク上のファイルのみを再生する場合、同時に使用するADXTハンドル数とADXFハンドル数の総和となります。

データ型

[メニュー]

ADXT
ADXTハンドル

解説 ADXの再生を制御する。ADXT_Create関数によって生成される。

関数

[メニュー]

ADXT_Init
ADXライブラリの初期化

書式
void ADXT_Init(void);
入力

なし

出力

なし

戻り値

なし

説明

ADXライブラリを初期化します。

[メニュー]

ADXT_Finish
ADXライブラリの終了処理

書式
void ADXT_Finish(void);
入力

なし

出力

なし

戻り値

なし

説明

ADXライブラリの終了処理を行います。生成されているハンドルは削除されます。

例

    /* ADXライブラリの初期化 */
    ADXT_Init();
    　　：
    /* ADXライブラリの終了処理 */
    ADXT_Finish();

[メニュー]

ADXT_Create
ADXTハンドルの生成

書式
ADXT ADXT_Create(Sint32 maxnch, void *work, Sint32 worksize);
入力

maxnch ： 最大再生チャンネル数（モノラル：1,ステレオ：2）

work ： 作業領域

worksize ： 作業領域サイズ

出力

なし

戻り値

生成された ADXT の構造体へのポインタ（ADXTハンドル）

説明

ADXTハンドルを生成します。

備考

maxnch はモノラル再生のみの場合は1、ステレオ再生の場合は2を指定します。

maxnch に2が指定された場合でも、モノラルを再生可能です。

作業領域は、グローバル変数かメモリアロケーション関数によって確保します。

[メニュー]

ADXT_Destroy
ADXTハンドルの消去

書式
void ADXT_Destroy(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

指定されたADXTハンドルを消去する。

例

    /* 作業領域サイズ */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    　　：
    /* ADXTハンドルの消去 */
    ADXT_Destroy(adxt);

[メニュー]

ADXT_DestroyAll
すべてのADXTハンドルの消去

書式
void ADXT_DestroyAll(void);
入力

なし

出力

なし

戻り値

なし

説明

すべてのADXTハンドルを消去する。

[メニュー]

ADXT_StartFname
ディスクストリーム再生の開始

書式
void ADXT_StartFname(ADXT adxt, const Char8 *fname);
入力

adxt ： ADXTハンドル

fnmae ： 音声ファイル名

出力

なし

戻り値

なし

説明

fname で指定された音声ファイルの再生を開始します。すでに再生されているハンドルに対しこの関数を実行すると、再生中の音声が停止し、指定された音声ファイルが再生されます。音声ファイルとして、ADXファイルとＷＡＶファイルを指定できます。異なるハンドルに対しこの関数を実行すると、同時に複数の音声を再生することができます。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);

    /* 再生開始 */
    ADXT_StartFname(adxt, "MUSIC.ADX");
    　　：
    /* 再生開始 */
    ADXT_StartFname(adxt, "SE2.WAV");
    　　：

[メニュー]

ADXT_StartFnameRange
ディスクストリーム再生の開始（範囲指定）

書式
void ADXT_StartFnameRange(ADXT adxt, Char8 *fname, Sint32 offset_sct, Sint32 range_sct);
入力

adxt ： ADXTハンドル

fnmae ： 音声ファイル名

offset_sct : ファイル内のオフセット（セクタ単位）

range_sct : 範囲（セクタ単位）

出力

なし

戻り値

なし

説明

指定された音声ファイルの指定範囲内の再生を開始します。

[メニュー]

ADXT_StartMem
メモリ再生の開始

書式
void ADXT_StartMem(ADXT adxt, void *adxdat);
入力

adxt ： ADXTハンドル

adxdat ： 音声データのアドレス

出力

なし

戻り値

なし

説明

adxdat で指定されたメモリ上の音声データを再生します。ディスクストリーム再生よりもレスポンス良く、音声を再生できます。遅延時間は、約50msecです。

例

    /* モノラルデータを再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(1, ADXT_PLY_MEM, 0, 48000)

    Uint8 *work[WKSIZE];          /* 作業領域 */
    Uint8 adxdat[ADXDAT_SIZE];    /* データ領域 */
    ADXT adxt;                    /* ADXTハンドル */

    /* 音声データの読み込み */
    load_data(adxdat);

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(1, work, WKSIZE);

    /* 再生開始 */
    ADXT_StartMem(adxt, adxdat);
    　　：

[メニュー]

ADXT_StartMem2
メモリ指定による再生の開始

書式
void ADXT_StartMem2(ADXT adxt, void *adxdat, Sint32 datlen);
入力

adxt ： ADXTハンドル

adxdat ： ADXデータのアドレス

datlen ： ADXデータの大きさ

出力

なし

戻り値

なし

説明

adxdata で指定されたADXデータを再生する。

[メニュー]

ADXT_StartMemIdx
メモリインデックス再生の開始

書式
void ADXT_StartMemIdx(ADXT adxt, void *acxdat, Sint32 no);
入力

adxt ： ADXTハンドル

acxdat ： ACXデータのアドレス

no ： インデックス番号

出力

なし

戻り値

なし

説明

acxdat で指定されたＡＣＸデータ内のno番目のデータを再生します。

例

    /* モノラルデータを再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(1, ADXT_PLY_MEM, 0, 48000)

    Uint8 *work[WKSIZE];          /* 作業領域 */
    Uint8 acxdat[ADXDAT_SIZE];    /* データ領域 */
    ADXT adxt;                    /* ADXTハンドル */

    /* 音声データの読み込み */
    load_data(acxdat);

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(1, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartMemIdx(adxt, acxdat, 5);
    　　：
    /* 再生開始 */
    ADXT_StartMemIdx(adxt, acxdat, 8);
    　　：

[メニュー]

ADXT_StartAfs
ディスクインデックス再生の開始

書式
voidADXT_StartAfs(ADXT adxt, Sint32 pat_id, Sint32 file_id);
入力

adxt ： ADXTハンドル

pat_id ： パーティションＩＤ

file_id ： ファイルＩＤ

出力

なし

戻り値

なし

説明

ディスク上のＡＦＳファイル内のデータを再生します。

ADXF_LoadPartitionNw関数により、par_idとＡＦＳファイル名を関連付けておきます。file_idは、ＡＦＳファイル内の順番号となります。

AFSLNK.EXEはファイルＩＤを定義したヘッダファイルを出力するので、ファイル名に対応する定義を指定することもできます。

例

    /* 48KHzステレオと24KHzモノラルを同時に再生する場合 */
    /* 48KHzステレオ再生用作業領域 */
    #define WKSIZE48 ADXT_CALC_WORK(2, ADXT_PLY_STM, 2, 48000)
    /* 24KHzモノラル再生用作業領域 */
    #define WKSIZE24 ADXT_CALC_WORK(1, ADXT_PLY_STM, 2, 24000)

    /* パーティションＩＤ */
    #define PAT01             (0)
    /* パーティション内の最大ファイル数 */
    #define MAX_PAT_NFILES    (10000)

    /* パーティション情報領域 */
    Uint8 ptinfo[ADXF_CALC_PTINFO_SIZE(MAX_PAT_NFILES)];
    Uint8 *work1[WKSIZE48];    /* 作業領域 */
    Uint8 *work2[WKSIZE24];    /* 作業領域 */
    ADXT adxt1, adxt2;         /* ADXTハンドル */

    /* パーティション情報の読み込み */
    ADXF_LoadPartitionNw(PAT01, "pat01.afs", NULL, ptinfo);
    for (;;) {
    　　if (ADXF_GetPtStat(PAT01) == ADXF_STAT_READEND)
    　　　　break;
    　　ADXM_ExecMain();
    }

    /* ADXTハンドルの生成 */
    adxt1 = ADXT_Create(2, work1, WKSIZE48);
    adxt2 = ADXT_Create(1, work2, WKSIZE24);
    /* 再生開始 */
    ADXT_StartAfs(adxt1, PATID, BGM);
    　　：
    /* 再生開始 */
    ADXT_StartAfs(adxt1, PATID, SRF137);
    　　：

[メニュー]

ADXT_StartSj
ストリームジョイント再生の開始

書式
void ADXT_StartSj(ADXT adxt, SJ sj);
入力

adxt ： ADXTハンドル

sj ： ストリームジョイント

出力

なし

戻り値

なし

説明

ストリームジョイントから得られるデータを再生する。

[メニュー]

ADXT_Stop
再生の停止

書式
void ADXT_Stop(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

ADXの再生を停止する。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "MUSIC.ADX");
    　　：
    /* ボタンが押されたら停止 */
    if (PRESSED(Button)) {
    　　/* 再生停止 */
    　　ADXT_Stop(adxt);
    }

[メニュー]

ADXT_GetStat
状態の取得

書式
Sint32 ADXT_GetStat(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

現在の ADXTハンドルの動作状態

説明

現在のadxtの動作状態を取得する。

動作状態は以下の通り。

定数 | 説明
--- | ---
ADXT_STAT_STOP | 停止中
ADXT_STAT_DECINFO | ADX のヘッダ情報取得中
ADXT_STAT_PREP | 再生準備中
ADXT_STAT_PLAYING | デコード＆再生中
ADXT_STAT_DECEND | デコード終了
ADXT_STAT_PLAYEND | 再生終了
ADXT_STAT_ERROR | エラー発生

例

    /* 48KHzのモノラルデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(1, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];　　/* 作業領域 */
    ADXT adxt;　　　　　　　/* ADXTハンドル */
    Sint32 stat;　　　　　　/* 動作状態 */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(1, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartAfs(adxt, pat_id, 0);

    for (;;) {
    　　/* 音声再生中はアニメーション */
    　　stat = ADXT_GetStat(adxt);
    　　if (stat == ADXT_STAT_PLAYING || stat == ADXT_STAT_DECEND) {
    　　　　user_animate_obj();
    　　}

    　　/* 再生が終了したら、次の音声を再生 */
    　　if (stat == ADXT_STAT_PLAYEND) {
    　　　　 ADXT_StartAfs(adxt, pat_id, 1);
    　　}

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_GetTime
サンプル単位での再生時刻の取得

書式
void ADXT_GetTime(ADXT adxt, Sint32 *ncount, Sint32 *tscale);
入力

adxt ： ADXTハンドル

出力

ncount ： 再生サンプル数

tscale ： サンプリング周波数［Hz]

戻り値

なし

説明

サンプル単位での再生時刻を取得します。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];            /* 作業領域 */
    ADXT adxt;                      /* ADXTハンドル */
    Sint32 nsmpl, sfreq;            /* 再生時刻 */
    Sint32 nfrm, hh, mm, ss, ff;    /* 時刻 */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");

    for (;;) {
    　　/* 再生時刻の表示（フレームの単位は1/60） */
    　　ADXT_GetTime(adxt, &nsmpl, &sfreq);
    　　nfrm = (Sint32)((Float32)nsmpl / (Float32)sfreq * 60.0f);
    　　hh = nfrm / (60*60*60);　　　　　　　/* 時 */
    　　mm = (nfrm - hh*60*60*60) / (60*60); /* 分 */
    　　ss = (nfrm - (hh*60+mm)*60*60) / 60; /* 秒 */
    　　ff = nfrm % 1000;　 /* フレーム */
    　　disp_time(hh, mm, ss, ff);

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_GetTimeReal
実時間での再生時刻の取得

書式
Sint32 ADXT_GetTimeReal(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

再生時刻［1/100sec]

説明

実時間で再生時刻を取得します。単位は1/100秒です。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];      /* 作業領域 */
    ADXT adxt;                /* ADXTハンドル */
    Sint32 time;              /* 再生時刻 */
    Sint32 hh, mm, ss, ff;    /* 時刻 */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");
    　　：
    for (;;) {
    　　/* 再生時刻の表示（フレームの単位は1/100） */
    　　time = ADXT_GetTimeReal(adxt);
    　　hh = time / (60*60*100);　　　　　　　/* 時 */
    　　mm = (time - hh*60*60*100)/(60*100); /* 分 */
    　　ss = (time - (hh*60+mm)*60*100)/100; /* 秒 */
    　　ff = time % 100;　　/* フレーム */
    　　disp_time(hh, mm, ss, ff);

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
     }

[メニュー]

ADXT_Pause
再生の一時停止・再開

書式
void ADXT_Pause(ADXT adxt, Sint32 sw);
入力

adxt ： ADXTハンドル

sw ： ポーズスイッチ（1=一時停止,0=再開）

出力

なし

戻り値

なし

説明

再生の一時停止・再開を行います。swに1を設定すると一時停止、swに0を設定すると再開します。再生状態がSTOPのときに一時停止を設定すると、音声の再生を開始する関数を実行しても音声が再生されず、PLAYINGの状態で一時停止します。

この状態から一時停止を解除することによって、即座に音声を再生できます。

例

    （1）　再生の一時停止
    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */
    Sint32 pause_flag = 0;  /* ポーズフラグ */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");
    for (;;) {
        if (PRESSED(Button)) {
            if (pause_flag == 0) {
                /* 一時停止 */
                pause_flag = 1;
            } else {
                /* 再生再開 */
                pause_flag = 0;
            }
            ADXT_Pause(adxt, pause_flag);
        }

        /* サーバ処理 */
        ADXM_ExecMain();
    }

    （2）　ディスク上の音声データを即時に再生する
    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 一時停止 */
    ADXT_Pause(adxt, 1);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");
    　　：
    /* 音声は再生されず、状態がPLAYINGになる */
    　　：
    for (;;) {
        /* ボタンが押されると即時に音声が出力される */
        if (PRESSED(Button)) {
            ADXT_Pause(adxt, 0);
        }

        /* サーバ処理 */
        ADXM_ExecMain();
    }

[メニュー]

ADXT_GetStatPause
一時停止状態の取得

書式
Sint32 ADXT_GetStatPause(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

一時停止状態 1=一時停止中、0=一時停止されていない状態

説明

一時停止状態を取得する。

[メニュー]

ADXT_SetOutVol
出力ボリュームの設定

書式
void ADXT_SetOutVol(ADXT adxt, Sint32 vol);
入力

adxt ： ADXTハンドル

vol ： 減衰レベル　(0：0dB 〜 -960：-96.0dB)

出力

なし

戻り値

なし

説明

出力ボリュームを設定します。再生前でも再生中でも設定することができます。

volの設定値

設定値 | デシベル値 |
--- | --- | ---
0 | -0dB | 減衰なし（最大）
-30 | -3dB | 約70%
-60 | -6dB | 約50%
-960 | -96.0dB | ミュート

[メニュー]

ADXT_GetOutVol
出力ボリュームの取得

書式
Sint32 ADXT_GetOutVol(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

出力ボリュームの設定値　(0：0dB 〜 -960：-96.0dB)

説明

出力ボリュームを取得します。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */
    Sint32 vol;             /* 現在のボリューム */
    Sint32 fade_vol;        /* フェードの変化量 */

    /* フェードの変化量を計算（3秒でフェード） */
    fade_vol = 960 / (60 * 3);

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");

    for (;;) {
    　　/* フェードイン */
    　　if (PRESSED(Button1)) {
    　　　　vol = ADXT_GetOutVol(adxt);
    　　　　ADXT_SetOutVol(adxt, vol + fade_vol);
    　　}
    　　/* フェードアウト */
    　　if (PRESSED(Button2)) {
    　　　　vol = ADXT_GetOutVol(adxt);
    　　　　ADXT_SetOutVol(adxt, vol - fade_vol);
    　　}

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_SetOutPan
パンポットの設定

書式
void ADXT_SetOutPan(ADXT adxt, Sint32 ch, Sint32 pan);
入力

adxt ： ADXTハンドル

ch ： チャンネル番号 (0, 1)

ADXT_CH_L(0)：左チャンネル, ADXT_CH_R(1)：右チャンネル

pan ： パンポット設定値 (-15〜+15, -128)

ADXT_PAN_LEFT =-15, ADXT_PAN_CENTER=　 0

ADXT_PAN_RIGHT= 15, ADXT_PAN_AUTO　=-128

出力

なし

戻り値

なし

説明

出力パンポットを設定します。

AUTO の場合は、音声データがモノラルかステレオかによって自動的にパンが設定されます。音声を再生中でも設定することができます。

[メニュー]

ADXT_GetOutPan
パンポットの取得

書式
Sint32 ADXT_GetOutPan(ADXT adxt, Sint32 ch);
入力

adxt ： ADXTハンドル

ch ： チャンネル番号

ADXT_CH_L(0)：左チャンネル, ADXT_CH_R(1)：右チャンネル

出力

なし

戻り値

パンポットの設定値 (-15〜+15,-128)

説明

出力パンポットを取得します。

例

    /* 48KHzのモノラルデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(1, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */
    Sint32 pan;             /* 現在のパンポット値 */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(1, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "srf01.adx");

    for (;;) {
    　　/* パンを右へ移動 */
    　　if (PRESSED(Button1)) {
    　　　　pan = ADXT_GetOutPan(adxt, 0);
    　　　　pan = min(ADXT_PAN_RIGHT, pan+1);
    　　　　ADXT_SetOutPan(adxt, 0, pan);
    　　}
    　　/* パンを左へ移動 */
    　　if (PRESSED(Button2)) {
    　　　　pan = ADXT_GetOutPan(adxt, 0);
    　　　　pan = max(ADXT_PAN_LEFT, pan-1);
    　　　　ADXT_SetOutPan(adxt, 0, pan);
    　　}

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_SetOutputMono
強制モノラル出力スイッチの設定

書式
void ADXT_SetOutputMono(Sint32 flag);
入力

flag ： 強制モノラル出力フラグ(OFF：0, ON：1)

出力

なし

戻り値

なし

説明

ステレオデータを強制的にモノラルデータとして出力する。

[メニュー]

ADXT_SetLpFlg
ループフラグの設定

書式
void ADXT_SetLpFlg(ADXT adxt, Sint32 flg);
入力

adxt ： ADXTハンドル

flg ： 1=ループする、0=ループしない

出力

なし

戻り値

なし

説明

ループするか否かを設定する。

備考

再生中は、ループを解除することのみ可能。

[メニュー]

ADXT_GetLpCnt
ループした回数の取得

書式
Sint32 ADXT_GetLpCnt(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

ループした回数

説明

ループした回数を取得する。

[メニュー]

ADXT_SetWaitPlayStart
音声出力開始待ちの設定

書式
void ADXT_SetWaitPlayStart(ADXT adxt, Sint32 flg);
入力

adxt ： ADXTハンドル

flg ： 1=ウェイトする、0=音声出力を即座に開始する

出力

なし

戻り値

なし

説明

音声の出力の開始待ちを設定する。

[メニュー]

ADXT_GetNumSmpl
総サンプル数の取得

書式
Sint32 ADXT_GetNumSmpl( ADXT adxt );
入力

adxt ： ADXTハンドル

出力

なし

戻り値

音声データの総サンプル数

説明

再生中の音声データの総サンプル数を取得します。

備考

再生状態が、再生準備中(ADXT_STAT_PREP=2)から再生終了(ADXT_STAT_PLAYEND=5)までの間に取得できます。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */
    Sint32 total_nsmpl;     /* 総サンプル数 */
    Sint32 nsmpl, sfreq;    /* 再生時刻 */
    Sint32 percent;         /* パーセント */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");

    for (;;) {
    　　/* 再生の進行状況の表示 (パーセント) */
    　　if (ADXT_GetStat(adxt) >= ADXT_STAT_PREP) {
    　　　　total_nsmpl = ADXT_GetNumSmpl(adxt);
    　　　　ADXT_GetTime(adxt, &nsmpl, &sfreq);
    　　　　percent = nsmpl * 100 / total_nsmpl;
    　　} else {
    　　　　percent = 0;
    　　}

    　　/* 経過の表示 */
    　　disp_progress(percent);

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_GetDecNumSmpl
デコードサンプル数の取得

書式
Sint32 ADXT_GetDecNumSmpl(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

デコードした音声データの総サンプル数

説明

デコードした音声データの総サンプル数を取得する。

備考

状態が、再生準備中(ADXT_STAT_PREP)から再生終了(ADXT_STAT_PLAYEND)までの間のみ取得可能。

[メニュー]

ADXT_GetSfreq
サンプリング周波数の取得

書式
Sint32 ADXT_GetSfreq(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値
説明

再生中の音声データのサンプリング周波数を取得します。

備考

再生状態が、再生準備中(ADXT_STAT_PREP=2)から再生終了(ADXT_STAT_PLAYEND=5)までの間に取得できます。

例

    /* 48KHzのステレオデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */
    Sint32 sfreq;           /* サンプリング周波数 */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "music.adx");

    for (;;) {
    　　/* 再生周波数の取得（Hz） */
    　　if (ADXT_GetStat(adxt) >= ADXT_STAT_PREP) {
    　　　　sfreq = ADXT_GetSfreq(adxt);
    　　}

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_GetNumChan
音声データのチャンネル数の取得

書式
Sint32 ADXT_GetNumChan(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

音声データのチャンネル数の取得

説明

再生中の音声のチャンネル数を取得する。

備考

状態が、再生準備中(ADXT_STAT_PREP)から再生終了(ADXT_STAT_PLAYEND)までの間のみ取得可能。

[メニュー]

ADXT_GetFmtBps
量子化ビット数の取得

書式
Sint32 ADXT_GetFmtBps(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

音声データの量子化ビット数

説明

再生中の音声の量子化ビット数を取得する。

備考

状態が、再生準備中(ADXT_STAT_PREP)から再生終了(ADXT_STAT_PLAYEND)までの間のみ取得可能。

[メニュー]

ADXT_GetHdrLen
ヘッダ長の取得

書式
Sint32 Sint32 ADXT_GetHdrLen(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

音声データのヘッダ長

説明

再生中の音声のヘッダ長を取得する。

備考

状態が、再生準備中(ADXT_STAT_PREP)から再生終了(ADXT_STAT_PLAYEND)までの間のみ取得可能。

[メニュー]

ADXT_GetInputSj
入力ストリームジョイントの取得

書式
SJ ADXT_GetInputSj(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

ストリームジョイントハンドル

説明

入力用ストリームジョイントを取得する。

[メニュー]

ADXT_GetNumSctIbuf
入力バッファ内のセクタ数の取得

書式
Sint32 ADXT_GetNumSctIbuf(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

セクタ数

説明

入力バッファに読み込まれているセクタ数を取得する。

[メニュー]

ADXT_GetIbufRemainTime
入力バッファ内再生時間の取得

書式
float ADXT_GetIbufRemainTime(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

再生可能時間（秒単位）

説明

入力バッファにあるデータで再生可能な時間を取得する。ADXデータのみ対応。

[メニュー]

ADXT_IsIbufSafety
入力バッファ内のデータ量のチェック

書式
Sint32 ADXT_IsIbufSafety(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

1=十分なデータがある、0=データ不足

説明

入力バッファに十分なデータがあるかどうかをチェックする。

ADXT_SetReloadSct関数によって指定された再読み込み開始セクタ数以上のデータが入力バッファ内にある場合、1が返される。

[メニュー]

ADXT_GetNumSmplObuf
出力バッファ内のサンプル数の取得

書式
Sint32 ADXT_GetNumSmplObuf(ADXT adxt, Sint32 chno);
入力

adxt ： ADXTハンドル

chno ： チャンネル番号

出力

なし

戻り値

サンプル数

説明

出力バッファ内のサンプル数を取得する。

[メニュー]

ADXT_GetStatRead
ファイル読み込み状態の取得

書式
Sint32 ADXT_GetStatRead(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

1=読み込み中、0=読み込み停止中

説明

ファイルの読み込み状態を取得します。

[メニュー]

ADXT_IsReadyPlayStart
音声出力開始準備の完了チェック

書式
Sint32 ADXT_IsReadyPlayStart(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

1=準備完了、0=準備中

説明

音声出力開始の準備が完了しているかどうかを判定する。

[メニュー]

ADXT_IsCompleted
再生終了のチェック

書式
Sint32 ADXT_IsCompleted(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

1=再生終了、0=再生中

説明

再生が終了したかどうかを調べる。

[メニュー]

ADXT_SetReloadTime
再読み込み開始時間の設定

書式
void ADXT_SetReloadTime(ADXT adxt,float time,Sint32 nch,Sint32 sfreq);
入力

adxt ： ADXTハンドル

time ： 再読み込み開始時間

nch ： チャンネル数

sfreq ： サンプリング周波数

出力

なし

戻り値

なし

説明

入力バッファへの再読み込み開始時間を設定する。

入力バッファ内のデータ量がtime秒より少なくなるとディスクからデータを読み込む。

[メニュー]

ADXT_SetReloadSct
再読み込み開始セクタ数の設定

書式
void ADXT_SetReloadSct(ADXT adxt, Sint32 minsct);
入力

adxt ： ADXTハンドル

minsct ： 再読み込み開始セクタ数

出力

なし

戻り値

なし

説明

入力バッファへの再読み込み開始セクタ数を設定する。

入力バッファ内のデータ量がminsctセクタより少なくなるとディスクからデータを読み込む。

[メニュー]

ADXT_SetNumRetry
リトライ回数の設定

書式
void ADXT_SetNumRetry(Sint32 num);
入力

num ： リトライ回数（-1=無限リトライ）

出力

なし

戻り値

なし

説明

ハードウェアとは無関係に、ADX内部でリトライする回数を設定します。

[メニュー]

ADXT_GetNumRetry
リトライ設定値の取得

書式
Sint32 ADXT_SetNumRetry(void);
入力

なし

出力

なし

戻り値

リトライ設定値（-1=無限リトライ）

説明

ADXT_SetNumRetry関数で設定したリトライ回数を取得します。

[メニュー]

ADXT_GetNumErr
エラー回数の取得

書式
Sint32 ADXT_GetNumErr(ADXT adxt);
入力

adxt : ADXTハンドル

出力

なし

戻り値

エラー回数

説明

リードリトライを必要とするエラーの発生回数を取得します。

[メニュー]

ADXT_SetDefSvrFreq
サーバ関数の呼び出し頻度の設定

書式
void ADXT_SetDefSvrFreq(Sint32 freq);
入力

freq ： サーバ関数の呼び出し頻度 (1秒当たりの呼び出し回数)

出力

なし

戻り値

なし

説明

サーバ関数(ADXT_ExecServer関数)の呼び出し頻度を設定します。

この関数によりサーバ関数が一回にデコードする量を制御できます。

デフォルトでは、60(Vsync)が設定されています。

備考

サーバ関数はVsync割り込みで呼び出されるので、この関数を使用する必要はありません。

[メニュー]

ADXT_SetSvrFreq
サーバ関数の呼び出し頻度の設定（ハンドル単位）

書式
void ADXT_SetSvrFreq(ADXT adxt, Sint32 freq);
入力

adxt ： ADXTハンドル

freq ： サーバ関数の呼び出し頻度 (1秒当たりの呼び出し回数)

出力

なし

戻り値

なし

説明

サーバ関数(ADXT_ExecServer関数)の呼び出し頻度を設定します。

この関数によりサーバ関数が一回にデコードする量を制御できます。

デフォルトでは、60(Vsync)が設定されています。

備考

サーバ関数はVsync割り込みで呼び出されるので、この関数を使用する必要はありません。

[メニュー]

ADXT_ExecServer
サーバ関数（内部状態の更新）

［書　式]void ADXT_ExecServer(void);

入力

なし

出力

なし

戻り値

なし

説明

ライブラリの内部状態を更新し、デコード処理を行います。

備考

Vsyncスレッドに登録されるため、アプリケーションから呼び出す必要はありません。

[メニュー]

ADXT_ExecHndl
ハンドル単位のサーバ関数

書式
void ADXT_ExecHndl(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

ハンドルの内部状態を更新する。

備考

ADXT_ExecServer関数内で実行されるため、アプリケーションから呼び出す必要はありません。

[メニュー]

ADXT_GetErrCode
エラーコードの取得

書式
Sint32 ADXT_GetErrCode(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

エラーコード

説明

エラーコードを取得する。

この値は、ADXT_ClearErrCode関数でクリアするまで保持されます。

エラーコード表

定義名 | 定数値 | エラー状態
--- | --- | ---
ADXT_ERR_OK | 0 | 正常
ADXT_ERR_SHRTBUF | 1 | 入力バッファにデータが供給されない。リードエラー時に発生。
ADXT_ERR_SNDBLK | 2 | サウンドブロックエラー。サウンドブロックが停止している。

[メニュー]

ADXT_ClearErrCode
エラーコードのクリア

書式
void ADXT_ClearErrCode(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

エラーコードをクリアする。

例

    /* 48KHzのモノラルデータを1ストリームだけ再生する場合 */
    #define WKSIZE ADXT_CALC_WORK(1, ADXT_PLY_STM, 1, 48000)

    Uint8 *work[WKSIZE];    /* 作業領域 */
    ADXT adxt;              /* ADXTハンドル */
    Sint32 errcode;         /* エラーコード */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(1, work, WKSIZE);
    /* 再生開始 */
    ADXT_StartFname(adxt, "srf01.adx");

    for (;;) {
    　　/* エラーコードの取得 */
    　　errcode = ADXT_GetErrCode(adxt);
    　　if (errcode != ADXT_ERR_OK) {
    　　　　/* エラーコードのクリア */
    　　　　ADXT_ClearErrCode(adxt);
    　　　　ADXT_Stop(adxt);
    　　}

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

[メニュー]

ADXT_EntryFname
シームレス連続再生ファイルの登録

書式
void ADXT_EntryFname(ADXT adxt, const Char8 *fname);
入力

adxt ： ADXTハンドル

fname ： 音声ファイル名

出力

なし

戻り値

なし

説明

fnameに指定された音声ファイルをシームレス連続再生用のファイルとして登録します。ループ設定のないADXデータのみ登録できます。

例

    /* ADXハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);

    /* 再生する音声データの登録 */
    ADXT_EntryFname(adxt, "smpsl1.adx");
    ADXT_EntryFname(adxt, "smpsl2.adx");
    ADXT_EntryFname(adxt, "smpsl3.adx");

    /* シームレスループ再生の設定 */
    ADXT_SetSeamlessLp(adxt, 1);

    /* シームレス連続再生の開始 */
    ADXT_StartSeamless(adxt);

[メニュー]

ADXT_EntryFnameRange
シームレス連続再生ファイルの登録（範囲指定）

書式
void ADXT_EntryFnameRange(ADXT adxt, const Char8 *fname, Sint32 ofst_sct, Sint32 range_sct);
入力

adxt ： ADXTハンドル

fname ： 音声ファイル名

offset_sct : ファイル内のオフセット（セクタ単位）

range_sct : 範囲（セクタ単位）

出力

なし

戻り値

なし

説明

fnameに指定された音声ファイルを範囲指定付きでシームレス連続再生用のファイルとして登録します。ループ設定のないADXデータのみ登録できます。

[メニュー]

ADXT_EntryAfs
シームレス連続再生サブファイルの登録

書式
void ADXT_EntryAfs(ADXT adxt, Sint32 patid, Sint32 fid);
入力

adxt ： ADXTハンドル

patid ： パーティションID

fid ： ファイルID

出力

なし

戻り値

なし

説明

patidに指定されたパーティション内のfidに指定されたADXファイルをシームレス連続再生用のファイルとして登録します。ループ設定のないADXデータのみ登録できます。

例

    #define PATID    (0)    /* パーティションID */

    /* パーティション情報の読み込み */
    ADXF_LoadPartitionNw(PATID, "pat01.afs", NULL, ptinfo);

    for (;;) {
    　　/* パーティション情報読み込み状態の取得 */
    　　stat = ADXF_GetPtStat(PATID);
    　　if (stat == ADXF_STAT_READEND) {
    　　　　break;
    　　}

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    }

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);

    /* 再生する音声データの登録 */
    ADXT_EntryFname(adxt, PATID, 0);
    ADXT_EntryFname(adxt, PATID, 1);
    ADXT_EntryFname(adxt, PATID, 2);

    /* シームレスループ再生の設定 */
    ADXT_SetSeamlessLp(adxt, 1);

    /* シームレス連続再生の開始 */
    ADXT_StartSeamless(adxt);

[メニュー]

ADXT_ResetEntry
ファイル登録のリセット

書式
void ADXT_ResetEntry(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

ファイルの登録をリセットする。

備考

状態が、再生停止中(ADXT_STAT_STOP)の場合のみ使用可能。

[メニュー]

ADXT_StartSeamless
シームレス連続再生の開始

書式
void ADXT_StartSeamless(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

シームレス連続再生を開始します。

[メニュー]

ADXT_StartFnameLp
シームレスループ再生の開始

書式
void ADXT_StartFnameLp(ADXT adxt, const Char8 *fname);
入力

adxt ： ADXTハンドル

fname ： 音声ファイル名

出力

なし

戻り値

なし

説明

指定された音声ファイルを繰り返し再生します。

[メニュー]

ADXT_StartFnameRangeLp
シームレスループ再生の開始（範囲指定）

書式
void ADXT_StartFnameRangeLp(ADXT adxt, const Char8 *fname, Sint32 ofst_sct, Sint32 range_sct);
入力

adxt ： ADXTハンドル

fname ： 音声ファイル名

offset_sct : ファイル内のオフセット（セクタ単位）

range_sct : 範囲（セクタ単位）

出力

なし

戻り値

なし

説明

指定された音声ファイル(範囲指定付き)を繰り返し再生します。

[メニュー]

ADXT_SetSeamlessLp
シームレスループ再生の設定

書式
void ADXT_SetSeamlessLp(ADXT adxt, Sint32 flg);
入力

adxt ： ADXTハンドル

flg ： 0=ループ再生しない、1=ループ再生する。

出力

なし

戻り値

なし

説明

シームレスループ再生の設定を行います。

[メニュー]

ADXT_ReleaseSeamless
シームレス連続再生の解除

書式
void ADXT_ReleaseSeamless(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

シームレス連続再生を解除します。

[メニュー]

ADXT_GetNumFiles
登録ファイル数の取得

書式
void ADXT_GetNumFiles(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

登録されているファイルの数を取得します。

[メニュー]

ADXT_AttachAhx
AHX再生機能の組み込み

書式
void ADXT_AttachAhx(ADXT adxt, void *work, Sint32 worksize);
入力

adxt ： ADXTハンドル

work ： AHXワーク領域

worksize： AHXワーク領域のサイズ

出力

なし

戻り値

なし

説明

AHX再生機能の組み込みを行い、AHXの利用を可能にします。

[メニュー]

ADXT_DetachAhx
AHX再生機能の分離

書式
void ADXT_DetachAhx(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

なし

説明

AHX再生機能を分離し、AHXの利用をやめます。

例

    /* 作業領域サイズ */
    #define ADXWKSZ ADXT_CALC_WORK(2, ADXT_PLY_STM, 1, 48000)
    #define AHXWKSZ ADXT_WORKSIZE_AHX

    Uint8 adxwk[ADXWKSZ];    /* ADX作業領域 */
    Uint8 ahxwk[AIXWKSZ];    /* AHX作業領域 */
    ADXT adxt;               /* ADXTハンドル */

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, adxwk, ADXWKSZ);
    /* AHX再生機能の組み込み */
    ADXT_AttachAhx(adxt, ahxwk, AHXWKSZ);
    　　：
    /* AHX再生機能の分離 */
    ADXT_DetachAhx(adxt);
    /* ADXTハンドルの消去 */
    ADXT_Destroy(adxt);

[メニュー]

ADXT_SetDefKeyString
キーコードの設定

書式
void ADXT_SetDefKeyString(Char8 *str);
入力

str ： キーコード文字列

出力

なし

戻り値

なし

説明

デフォルトのキーコードを設定します。エンコード時に入力したキーコードと同じ文字列を入力してください。エンコード時と異なるキーコードを入力すると、ノイズになって再生されます。

暗号化されていないADXデータを再生する場合はstrにNULLを指定します。

例

    /* キーコードの設定 */
    ADXT_SetDefKeyString("CRI");

    　　：
    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);

    /* 再生の開始 */
    ADXT_StartFname(adxt, "MUSIC.ADX");
    　　：

[メニュー]

ADXT_SetKeyString
ハンドル毎のキーコードの設定

書式
void ADXT_SetKeyString(ADXT adxt, Char8 *str);
入力

adxt ： ADXTハンドル

str ： キーコード文字列

出力

なし

戻り値

なし

説明

ハンドル単位にキーコードを設定します。エンコード時に入力したキーコードと同じ文字列を入力してください。エンコード時と異なるキーコードを入力すると、ノイズになって再生されます。

暗号化されていないADXデータを再生する場合はstrにNULLを指定します。

例

    /* ADXTハンドルの生成 */
    adxt = ADXT_Create(2, work, WKSIZE);

    /* キーコードの設定 */
    ADXT_SetKeyString(adxt, "CRI");

    /* 再生の開始 */
    ADXT_StartFname(adxt, "MUSIC.ADX");
    　　：

[メニュー]

ADXT_GetDefOutVol
デフォルト出力ボリュームの取得

書式
Sint32 ADXT_GetDefOutVol(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

デフォルト出力ボリューム(0:-0dB 〜 -960:-96.0dB)

説明

ADXデータ内に含まれるデフォルト出力ボリュームを取得します。

[メニュー]

ADXT_GetDefOutPan
デフォルトパンポットの取得

書式
Sint32 ADXT_GetDefOutPan(ADXT adxt Sint32 chno);
入力

adxt ： ADXTハンドル

chno ： チャンネル番号

ADXT_CH_L(0)：左チャンネル, ADXT_CH_R(1)：右チャンネル

出力

なし

戻り値

デフォルトパンポットの設定値(-15〜+15)

説明

ADXデータ内に含まれるデフォルトパンポットを取得します。

[メニュー]

ADXT_GetDataId
データ識別文字列の取得

書式
Char8 *ADXT_GetDataId(ADXT adxt);
入力

adxt ： ADXTハンドル

出力

なし

戻り値

データ識別文字列

説明

ADXデータ内に含まれるデータ識別文字列を取得します。

[メニュー]

ADXT_Create3D
サラウンド対応ADXTハンドルの生成

書式
ADXT ADXT_Create3D(void *work, Sint32 worksize);
入力

work ： 作業領域

worksize ： 作業領域サイズ

出力

なし

戻り値

生成された ADXT の構造体へのポインタ（ADXTハンドル）

説明

サラウンドパンに対応したADXTハンドルを生成します。

備考

作業領域サイズの計算にはADXT_CALC_WORK_3Dマクロを使用します。

[メニュー]

ADXT_SetOutPos
音源位置の設定

書式
Sint32 ADXT_SetOutPos(ADXT adxt, Sint32 x, Sint32 y);
入力

adxt ： ADXTハンドル

x ： x座標（-127:左〜0:中央〜+127:右）

y ： y座標（-127:前〜0:中央〜+127:後）

出力

なし

戻り値

なし

説明

音源の位置を設定します。

備考

この関数はADXT_Create3D関数を使用して作成されたADXTハンドルに対してのみ有効です。また、パンニングが行われるのはモノラルのADXファイルを再生した場合のみです（ステレオのADXファイルに対してパンニングは行えません）。

※後方にパンを振った音を確認する際には、Dolby DigitalまたはDolby Pro Logic IIに対応した機器をご使用ください。

[メニュー]

ADXM_SetupThrd
ADXスレッドシステムのセットアップ

書式
void ADXM_SetupThrd(ADXM_TPRM *tprm);
入力

tprm： ADXマネージャセットアップパラメータ構造体

出力

なし

戻り値

なし

説明

ADXスレッドシステムをセットアップします。スレッドを生成して、ADXのサーバ関数をVsyncスレッドに登録します。

ADXの初期化(ADXT_Init)を行う前に呼び出す必要があります。

例

    /* スレッドのセットアップ */
    ADXM_SetupThrd(NULL);
    /* ADXライブラリの初期化 */
    ADXT_Init();
    　　：
    for (;;) {
    　　　　：
    　　/* Vsync待ち */
    　　ADXM_WaitVsync();

    　　/* サーバ処理 */
    　　ADXM_ExecMain();
    　　　　：
    }

注意

本関数は旧バージョンとの互換性のためだけに用意されています。最新版のADXライブラリでは、ADXM_SetupThrd関数の代わりに、ADXM_SetupFramework関数をご利用ください。

[メニュー]

ADXM_ShutdownThrd
ADXスレッドシステムのシャットダウン

書式
void ADXM_ShutdownThrd(void);
入力

なし

出力

なし

戻り値

なし

説明

ADXスレッドシステムをシャットダウンします。ADXM_SetupThrd関数で生成したスレッドを消去します。

注意

本関数は旧バージョンとの互換性のためだけに用意されています。最新版のADXライブラリでは、ADXM_ShutdownThrd関数の代わりに、ADXM_ShutdownFramework関数をご利用ください。

[メニュー]

ADXM_ExecMain
Vsyncサーバ関数

書式
Sint32 ADXM_ExecMain(void);
入力

なし

出力

なし

戻り値

なし

説明

ADXの内部状態を更新します。フレームワークの種別によって内部の動作が異なります。

・マルチスレッド動作時

必ずしもVsync毎に実行される必要はないが、定期的に実行しなければならない処理が実行されます。（必ずVsync毎に実行しなければならない処理はVsyncスレッドで実行されます。）

・シングルスレッド動作時

ADXのサーバ処理内の全てが実行されます。

備考

フレームワークの詳細については、ADXM_SetupFramework関数をご参照ください。

例

    /* フレームワークのセットアップ */
    ADXM_SetupFramework(ADXM_FRAMEWORK_DEFAULT, NULL);
    /* ADXライブラリの初期化 */
    ADXT_Init();
        ：
    for (;;) {
            ：
        /* Vsync待ち */
        ADXM_WaitVsync();

        /* サーバ処理 */
        ADXM_ExecMain();
            ：
    }

[メニュー]

ADXM_WaitVsync
Vsync待ち

書式
void ADXM_WaitVsync(void);
入力

なし

出力

なし

戻り値

なし

説明

次のVsyncを待ちます。待っている間、メインスレッドをスリープさせ、アイドルスレッドに処理時間を渡します。

Sofdec再生中の場合、この関数実行中にアイドルスレッドでSofdecのデコード処理を行います。

例

    /* フレームワークのセットアップ */
    ADXM_SetupFramework(ADXM_FRAMEWORK_DEFAULT, NULL);
    /* ADXライブラリの初期化 */
    ADXT_Init();
        ：
    for (;;) {
            ：
        /* Vsync待ち */
        ADXM_WaitVsync();

        /* サーバ処理 */
        ADXM_ExecMain();
            ：
    }

注意

シングルスレッド動作時（ADXM_SetupFramework関数でシングルスレッドのフレームワークを選択した場合）は、本関数を使用しないでください。

[メニュー]

ADXM_SetCbErr
エラーコールバック関数の設定

書式
void ADXM_SetCbErr(void (*func)(void *obj, Char8 *emsg), void *obj);
入力

func ： ユーザのコールバック関数

obj ： コールバック関数の第1引数

出力

なし

戻り値

なし

説明

エラーコールバック関数を登録します。

エラーが発生すると登録されたコールバック関数が以下の形式で呼び出されます。

void (*func)(void *obj, Char8 *emsg);

また、エラーコールバック関数が呼び出された場合、第2引数emsgにはエラーメッセージが渡されます。この関数は、デバッグ用の関数ですので、アプリケーションのマスターアップ時には、何もしない関数に置き換えてください。

例

    /* エラーコールバック関数 */
    void user_adx_error(void *obj, Char8 *emsg)
    {
    　　/* デバッグ時はここで処理を止めて不具合の原因を調査する */
    　　…
    }

    /* メイン関数 */
    void main(void)
    {
    　　/* エラーコールバック関数の登録 */
    　　ADXM_SetCbErr(user_adx_error, NULL);
    　　　　：
    }

Copyright (c) 2001-2006 CRI Middleware Co.,LTD.