#ifdef PXTONEDLL_EXPORTS #define DLLAPI __declspec(dllexport) // DLL を作る側は export として #else #define DLLAPI __declspec(dllimport) // DLL を使う側は import として #endif // C++ でも C でも使えるようにする #ifdef __cplusplus extern "C"{ #endif typedef BOOL (* PXTONEPLAY_CALLBACK)( long clock ); // 以下 pxtone関数群 ========================================== // pxtone を生成します。 BOOL DLLAPI pxtone_Ready( HWND hWnd, // ウインドウハンドルを渡してください long channel_num, // のチャンネル数を指定してください。( 1:モノラル / 2:ステレオ ) long sps, // 秒間サンプリングレートです。 ( 11025 / 22050 / 44100 ) long bps, // 1サンプルを表現するビット数です。( 8 / 16 ) float buffer_sec, // 曲を再生するのに使用するバッファサイズを秒で指定します。( 推奨 0.1 ) BOOL bDirectSound, // TRUE: DirectSound を使用します / FALSE: WAVEMAPPER を使用します。 PXTONEPLAY_CALLBACK pProc // サンプリング毎に呼ばれる関数です。NULL でかまいません。 ); // pxtone の準備 // pxtone を再設定します。 BOOL DLLAPI pxtone_Reset( HWND hWnd, long channel_num, long sps, long bps, float buffer_sec, BOOL bDirectSound, PXTONEPLAY_CALLBACK pProc ); // pxtone で生成されたDirectSoundのポインタ(LPDIRECTSOUND)を取得する。 // 取得したDirectSoundは自分でリリースしないように注意してください。 void DLLAPI *pxtone_GetDirectSound( void ); // ラストエラー文字列取得 const char DLLAPI* pxtone_GetLastError( void ); // pxtone の音質を取得します void DLLAPI pxtone_GetQuality( long *p_channel_num, long *p_sps, long *p_bps, long *p_sample_per_buf ); // pxtone // pxtone を開放します BOOL DLLAPI pxtone_Release( void ); // 曲を読み込みます(ファイル・リソースから) BOOL DLLAPI pxtone_Tune_Load( HMODULE hModule, // リソースから読む場合はモジュールハンドルを指定します。NULL でも問題ないかも。 const char *type_name, // リソースから読む場合はリソースの種類名。外部ファイルを読む場合は NULL。 const char *file_name // ファイルパスもしくはリソース名。 ); // 曲を読み込む(メモリから) BOOL DLLAPI pxtone_Tune_Read( void* p, long size ); // 曲を解放します BOOL DLLAPI pxtone_Tune_Release( void ); // 曲を再生します BOOL DLLAPI pxtone_Tune_Start( long start_sample, // 開始位置です。主に Stop や Fadeout で取得した値を設定します。0 で最初から。 long fadein_msec // フェードインする場合はここに時間(ミリ秒)を指定します。 ); // フェードアウトスイッチを入れて現在再生サンプルを取得します long DLLAPI pxtone_Tune_Fadeout( long msec ); // 曲のボリュームを設定します。1.0 が最大で、0.5 が半分です。 void DLLAPI pxtone_Tune_SetVolume( float v ); // 曲を停止して現在再生サンプルを取得 long DLLAPI pxtone_Tune_Stop( void ); // 再生中かどうかを調べます BOOL DLLAPI pxtone_Tune_IsStreaming( void ); // ループ再生の ON/OFF を切り替えます void DLLAPI pxtone_Tune_SetLoop( BOOL bLoop ); // 曲の情報を取得します void DLLAPI pxtone_Tune_GetInformation( long *p_beat_num, float *p_beat_tempo, long *p_beat_clock, long *p_meas_num ); // リピート小節を取得します long DLLAPI pxtone_Tune_GetRepeatMeas( void ); // 有効演奏小節を取得します(LASTイベント小節。無ければ最終小節) long DLLAPI pxtone_Tune_GetPlayMeas( void ); // 曲の名称を取得します const char DLLAPI* pxtone_Tune_GetName( void ); // 曲のコメントを取得します const char DLLAPI* pxtone_Tune_GetComment( void ); // ■指定のアドレスに再生バッファを書き込みます BOOL DLLAPI pxtone_Tune_Vomit( void* p, // 再生バッファを吐き出すアドレスです long sample_num // 書き込むサンプル数です ); // 戻り値:まだ続きがある場合は TRUE それ以外は FALSE // 1、この関数を使用する場合は pxtone_Ready() の引数 buffer_sec には 0 を設定してください。 // pxtone のストリーミング機能が無効になります。 // 2、曲のロードと pxtone_Tune_Start() を終えてからこの関数を呼び出してください。 // 3、sample_num はサイズではなくてサンプル数です。 // 例) 11025hz 2ch 8bit を1秒吐き出す場合、sample_num は 11025 を指定する。 // p には 22050バイト分の再生バッファが書き込まれる。 // 4、ストリーミング機能が有効な時と同様に pxtone_Tune_Fadeout() 等の関数が使えます。 #ifdef __cplusplus } #endif