このサンプルはワークメモリ既にある波形データをPCMストリームを利用して再生を行うプログラムです.
サウンドライブラリ・ドライバの初期化を行い,440Hzの音を再生する.
処理の流れとしては
本サンプルには下記の注意事項があります.
実際のコーディングを下記に提示する.なお,このサンプルはエラーチェックをかなり省いています.
/********************************************************* * * Sound Library Sample * * ワークメモリ上の波形データをPCMストリームで再生する. * *********************************************************/ #include <sd_sg.h> /* サウンドドライバがあるアドレス */ #define SNDDRV_ADR ( 0x8c050000) /* マルチユニットの先頭アドレス */ #define MLT_ADR ( 0x8c060000) /* 使用するチャンネル数(モノラルは1,ステレオは2) */ #define PSTM_CH ( 2) /* 波形のサンプリング周波数(本当に周波数を記述するわけではない) */ #define WAVE_FREQ ( SDD_PSTM_FREQ_44100) /* 波形データの種類 */ #define WAVE_TYPE ( SDE_PCM_TYPE_16BIT_PCM) /* 波形データの先頭アドレス */ #define WAVE_ADR1 ( ( Void*)0x8c100000) /* 波形データの先頭アドレス */ #define WAVE_ADR2 ( ( Void*)0x8c800000) /* 波形データのサイズ(バイト単位) */ #define WAVE_SZ ( 0x000100000) int main( void) { /* * 初期化を行う */ if ( SoundInit( SNDDRV_ADR) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* * マルチユニットをサウンドメモリにダウンロードする */ if ( MultiUnitDownload( MLT_ADR) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } /* * PCMストリームを行う */ if ( OnMemoryPCMStream( PSTM_CH, WAVE_TYPE, WAVE_FREQ, WAVE_ADR1, WAVE_ADR2, WAVE_SZ) != SDE_ERR_NOTHING) { /* エラーが起こった */ goto exit; } exit: /* 無限ループ */ while ( 1); return ( 0); } /*EOF*/ |
このサンプルを元にGD-FSから逐次波形データを読み込み,OnMemoryPCMStreamを実行するようにするとGD-FSを利用したPCMストリームシステムになり,さらに長時間の音声の再生が可能になります.