一.撥放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();
}
沒有留言:
張貼留言