2020年5月13日 星期三

時間

2020-05-13 week 12

主題: 聲音、音效


播放WAV檔案:








sync改成async 可以不同步,不等結束就繼續


放MP3






把專案.cbp用NOTEPAD++打開

改<Option working_dir="." />

並把音樂放到 專案裡 (可以一勞永逸)



<fail>
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" ///雙引號,在此專案同一個目錄裡
CMP3_MCI mp3;///宣告一個物件變數,叫mp3
CMP3_MCI Do,Re,Mi,Fa,So;
float ballX=0,ballY=0,dx=0.05,dy=0.03;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(ballX,ballY,0);
        glutSolidSphere(0.1,30,30);
    glPopMatrix();
    glutSwapBuffers();
}
void timer(int t)
{
    glutTimerFunc(50,timer,t+1);
    ballX+=dx;ballY+=dy;
    if(ballX>=1){Do.Play();dx=-dx;}
    if(ballX<=-1){Re.Play();dx=-dx;}
    if(ballY>=1){Mi.Play();dy=-dx;}
    if(ballY<=-1){Fa.Play();dy=-dx;}
}
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) PlaySoundA("shot.wav",NULL,SND_ASYNC);
}
void keyboard(unsigned char key,int x,int y)
{
    if(key=='1') Do.Play();//PlaySoundA("do.wav",NULL,SND_ASYNC);
    if(key=='2') Re.Play();//PlaySoundA("re.wav",NULL,SND_ASYNC);
    if(key=='3') Mi.Play();//PlaySoundA("mi.wav",NULL,SND_ASYNC);
    if(key=='4') Fa.Play();//PlaySoundA("fa.wav",NULL,SND_ASYNC);
    if(key=='5') So.Play();//PlaySoundA("so.wav",NULL,SND_ASYNC);
}

int main(int argc,char**argv)
{
    Do.Load("do.wav");Re.Load("re.wav");Mi.Load("mi.wav");Fa.Load("fa.wav");So.Load("so.wav");
    mp3.Load("music.mp3");
    mp3.Play();
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutCreateWindow("week 12 sound");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutTimerFunc(50,timer,0);
    glutMouseFunc(mouse);
    glutMainLoop();
}



沒有留言:

張貼留言