01: //-----------------------------------------------------------------
02: // wav_p.cpp:
03: //     MCIデバイスのWAVE再生の例
04: //                  Last Update: <2005/01/27 04:07:20 A.Murakami>
05: //-----------------------------------------------------------------
06: #include <stdio.h>
07: #include <windows.h>
08: #include <mmsystem.h>
09: //-----------------------------------------------------------------
10: int InitMciDev(char* wav_file);
11: void TermMciDev();
12: int PlayMciDev();
13: int MCILength();
14: //-----------------------------------------------------------------
15: int main()
16: {
17:     int mLen;
18:     char wav_file[] = "samp.wav";
19:     // WAVの指定
20:     if(InitMciDev(wav_file)){
21:         fprintf(stderr,"MCIデバイスオープン失敗\n");
22:         return -1;
23:     }
24:     // 演奏時間の取得
25:     mLen = MCILength();
26:     if(mLen <= 0){
27:         fprintf(stderr,"演奏時間取得失敗\n");
28:     }
29:     // 演奏開始
30:     if(PlayMciDev()){
31:         fprintf(stderr,"再生にエラーが発生しました\n");
32:         return -1;
33:     }
34:     // 演奏時間の間停止。
35:     printf("**%s:\n",wav_file);
36:     printf("  演奏時間[%d]秒\n",mLen);
37:     if(!mLen) mLen+=5;
38:     sleep(mLen);
39:     printf("**演奏終了\n");
40:     // 終了
41:     TermMciDev();
42:     return 0;
43: }
44: //-----------------------------------------------------------------
45: // MCIデバイスのオープン
46: //-----------------------------------------------------------------
47: int InitMciDev(char* wav_file)
48: {
49:     char cmd[256];
50:     memset(cmd,0,sizeof(char)*256);
51:     sprintf(cmd,"open %s type waveaudio alias wav1",wav_file);
52:     return mciSendString(cmd,NULL,0,0);
53: }
54: //-----------------------------------------------------------------
55: // MCIデバイスを閉じる
56: //-----------------------------------------------------------------*/
57: void TermMciDev()
58: {
59:     mciSendString("stop wav1",NULL,0,0);
60: }
61: //-----------------------------------------------------------------
62: // MCIデバイスを再生する
63: //-----------------------------------------------------------------
64: int PlayMciDev()
65: {
66:     return mciSendString("play wav1",NULL,0,0);
67: }
68: //-----------------------------------------------------------------
69: // 演奏時間の取得
70: //-----------------------------------------------------------------
71: int MCILength()
72: {
73:     int ret;
74:     char status[30];
75:     mciSendString("set wav1 time format milliseconds",NULL,0,0);
76:     ret = mciSendString("status wav1 length",status,30,0);
77:     if(ret) return 0;
78:     return atoi(status)/1000;
79: }
inserted by FC2 system