1.將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') PlaySound("do.wav",NULL,SND_ASYNC);
if(key=='2') PlaySound("re.wav",NULL,SND_ASYNC);
if(key=='3') PlaySound("mi.wav",NULL,SND_ASYNC);
if(key=='4') PlaySound("fa.wav",NULL,SND_ASYNC);
if(key=='5') PlaySound("so.wav",NULL,SND_ASYNC);
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
2.五個音階的簡易鋼琴(無法和弦) + 播放mp3音檔
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" ///注意:需在同一專案裡面
CMP3_MCI mp3;
void display()
{
}
void keyboard(unsigned char key,int x,int y)
{
if(key=='1') PlaySound("do.wav",NULL,SND_ASYNC); ///與SYNC的區別是:ASYNC可干涉,SYNC不可
if(key=='2') PlaySound("re.wav",NULL,SND_ASYNC);
if(key=='3') PlaySound("mi.wav",NULL,SND_ASYNC);
if(key=='4') PlaySound("fa.wav",NULL,SND_ASYNC);
if(key=='5') PlaySound("so.wav",NULL,SND_ASYNC);
}
int main(int argc, char**argv)
{
mp3.Load("music.mp3");
mp3.Play();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
3.可合音簡單鋼琴
#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();//PlaySound("do.wav",NULL,SND_ASYNC);
if(key=='2') Re.Play();//("re.wav",NULL,SND_ASYNC);
if(key=='3') Mi.Play();//("mi.wav",NULL,SND_ASYNC);
if(key=='4') Fa.Play();//("fa.wav",NULL,SND_ASYNC);
if(key=='5') So.Play();//("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("music3.mp3");
mp3.Play();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
4.自給自足cpp檔








5.
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI 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=-dy;
}
if(bally<=-1)
{
Fa.Play(); dy=-dy;
}
glutPostRedisplay();
}
void mouse(int button,int state, int x, int y)
{
if(state==GLUT_DOWN) PlaySoundA("shotgun.wav",NULL,SND_ASYNC);
}
void keyboard(unsigned char key,int x,int y)
{
if(key=='1') Do.Play();//PlaySound("do.wav",NULL,SND_ASYNC);
if(key=='2') Re.Play();//("re.wav",NULL,SND_ASYNC);
if(key=='3') Mi.Play();//("mi.wav",NULL,SND_ASYNC);
if(key=='4') Fa.Play();//("fa.wav",NULL,SND_ASYNC);
if(key=='5') So.Play();//("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_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutTimerFunc(50,timer,0);
glutMouseFunc(mouse);
glutMainLoop();
}
#include <windows.h>
#include <mmsystem.h>
#include <GL/glut.h>
#include "CMP3_MCI.h"
CMP3_MCI 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=-dy;
}
if(bally<=-1)
{
Fa.Play(); dy=-dy;
}
glutPostRedisplay();
}
void mouse(int button,int state, int x, int y)
{
if(state==GLUT_DOWN) PlaySoundA("shotgun.wav",NULL,SND_ASYNC);
}
void keyboard(unsigned char key,int x,int y)
{
if(key=='1') Do.Play();//PlaySound("do.wav",NULL,SND_ASYNC);
if(key=='2') Re.Play();//("re.wav",NULL,SND_ASYNC);
if(key=='3') Mi.Play();//("mi.wav",NULL,SND_ASYNC);
if(key=='4') Fa.Play();//("fa.wav",NULL,SND_ASYNC);
if(key=='5') So.Play();//("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_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week12 sound");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutTimerFunc(50,timer,0);
glutMouseFunc(mouse);
glutMainLoop();
}

沒有留言:
張貼留言