DXライブラリとhttp://hp.vector.co.jp/authors/VA022293/(BGM・効果音作成ソフト)について質問があります。
ピストンコラージュに付属のライブラリを使ってDXライブラリ上でピストンノイズ(効果音データ。拡張子はptnoise)を鳴らせてみようと下記のコードを書いたのですが、SoundHandleにエラー(-1)が返ってきてしまいます。
初歩的な質問で申し訳ございませんが、どこを直せばよいのかアドバイスをいただければ幸いです。
(なお、BGM(拡張子pttune)の方はピストンコラージュのライブラリに再生用の関数があるのでそれを使って再生できました)
・ソースコード本文 #include "DxLib.h" #include "pxtone.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int SoundHandle; PXTONENOISEBUFFER *p_noise; ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return -1; pxtone_Ready(GetMainWindowHandle(), 2, 44100, 16, 0.1F, TRUE, NULL); p_noise = pxtone_Noise_Create("ameba.ptnoise", NULL, 1, 44100, 16); SoundHandle = LoadSoundMemByMemImage(p_noise->p_buf, p_noise->size); PlaySoundMem(SoundHandle, DX_PLAYTYPE_BACK); WaitKey(); pxtone_Noise_Release(p_noise); pxtone_Release(); DxLib_End(); return 0; }
・宣言部(ヘッダーから抜粋) // 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 の準備 // ピストンノイズを生成します typedef struct { unsigned char* p_buf; int size ; }PXTONENOISEBUFFER; void DLLAPI pxtone_Noise_Release( PXTONENOISEBUFFER* p_noise ); PXTONENOISEBUFFER DLLAPI *pxtone_Noise_Create( const char* name , // リソース名 を設定。外部ファイルの場合はファイルパス。 const char* type , // リソースタイプ名を設定。外部ファイルの場合はNULL。 long channel_num, long sps, long bps );