2020年5月13日 星期三

下午fgo術師匠勢在必得之week12

一.撥放WAV檔

按照以往的方式開啟GLUT專案,並輸入以下程式碼,即能撥放WAV音源

#include <windows.h>///為了認識下面的DWORD
#include <mmsystem.h>///PlaySound在裡面
int main()
{   ///                            檔名        ,空,      聲音要同步
    PlaySoundA("toussez3.wav",NULL,SND_SYNC);
}///wav檔要在freeglut\bin裡


鍵盤控制聲音撥放

#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
void display()
{
    
}
void keyboard(unsigned char key ,int x,int y)
{                                                                      ///不等結束,直接執行下一個命令
    if(key=='1')PlaySoundA("do,wav",NULL,SND_ASYNC);
    if(key=='2')PlaySoundA("ra,wav",NULL,SND_ASYNC);
    if(key=='3')PlaySoundA("mi,wav",NULL,SND_ASYNC);
    if(key=='4')PlaySoundA("fa,wav",NULL,SND_ASYNC);
    if(key=='5')PlaySoundA("so,wav",NULL,SND_ASYNC);
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week7");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);///鍵盤函式
    
    glutMainLoop();
}

二.撥放MP3檔

跟上面差不多的程式碼,修改部分藍色顯示

#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"///雙引號,表示跟專案在同一個目錄
CMP3_MCI mp3;///宣告一個物件變數,叫mp3
void display()
{

}
void keyboard(unsigned char key ,int x,int y)
{                                   ///不等結束,直接執行下一個命令
    if(key=='1')PlaySoundA("do,wav",NULL,SND_ASYNC);
    if(key=='2')PlaySoundA("ra,wav",NULL,SND_ASYNC);
    if(key=='3')PlaySoundA("mi,wav",NULL,SND_ASYNC);
    if(key=='4')PlaySoundA("fa,wav",NULL,SND_ASYNC);
    if(key=='5')PlaySoundA("so,wav",NULL,SND_ASYNC);
}
int main(int argc, char**argv)
{
    mp3.Load("mu.mp3");
    mp3.Play();
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week7");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);///鍵盤函式

    glutMainLoop();
}

使前面的wav檔有混音的效果

#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;
CMP3_MCI Do,Re,Mi,Fa,So;  ///宣告物件變數
void display()
{

}
void keyboard(unsigned char key ,int x,int y)
{
    if(key=='1')Do.Play();
    if(key=='2')Re.Play();
    if(key=='3')Mi.Play();
    if(key=='4')Fa.Play();
    if(key=='5')So.Play();
}
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("mu.mp3");
    mp3.Play();
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week7");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);///鍵盤函式

    glutMainLoop();
}

沒有留言:

張貼留言