2021年4月28日 星期三

yun_電腦圖學筆記week10

 

嗨,今天要放入音樂檔

#include <windows.h> int main() { PlaySound("music.wav",NULL,SND_SYNC); }




把這首音樂放進去bin的資料夾內,就可以成功播放了

music是檔名,放入bin資料夾後,把檔名在程式碼內更改就可以成功播放了

#include <windows.h> int main() { PlaySound("so.wav",NULL,SND_SYNC); PlaySound("fa.wav",NULL,SND_SYNC); PlaySound("mi.wav",NULL,SND_SYNC); PlaySound("re.wav",NULL,SND_SYNC); PlaySound("do.wav",NULL,SND_SYNC); }


老師傳給我們do re mi fa so這五個音測試看看,這時候播放,每個音會相差五秒鐘

#include <windows.h> #include <stdio.h> int main() { while(1) { char c = getchar(); if(c=='1')PlaySound("do.wav",NULL,SND_ASYNC); if(c=='2')PlaySound("re.wav",NULL,SND_ASYNC); if(c=='3')PlaySound("mi.wav",NULL,SND_ASYNC); if(c=='4')PlaySound("fa.wav",NULL,SND_ASYNC); if(c=='5')PlaySound("so.wav",NULL,SND_ASYNC); } }



建立迴圈,將SYNC變成ASYNC,按出數字和ENTER就可以按數字鍵彈奏了。

上面的要按 ENTER 才可以播放,接著我們寫一個不用按 ENTER 的程式碼。

#include <windows.h> #include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } 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("Wee10 Sound"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); }


這樣直接按下1、2、3、4、5就可以直接播放了。
接著我們讓背景音樂跟do、re、mi、fa、so同時播放

#include <windows.h> #include <GL/glut.h> #include "CMP3_MCI.h" CMP3_MCI mp3; void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } 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) { mp3.Load("music.mp3"); mp3.Play(); glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH); glutCreateWindow("Wee10 Sound"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMainLoop(); }


接著我們讓滑鼠點擊發出音效

#include <windows.h> #include <GL/glut.h> #include "CMP3_MCI.h" CMP3_MCI mp3; void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } 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); } void mouse (int button,int state,int x,int y) { if(state==GLUT_DOWN)PlaySound("shot.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("Wee10 Sound"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMouseFunc(mouse); glutMainLoop(); }
















#include <windows.h> #include <GL/glut.h> #include "CMP3_MCI.h" CMP3_MCI mp3; CMP3_MCI shot1,shot2,shot3; void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } 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); } void mouse(int button,int state,int x,int y) { if(state==GLUT_DOWN && button==GLUT_LEFT_BUTTON) shot1.Play(); if(state==GLUT_DOWN && button==GLUT_MIDDLE_BUTTON) shot2.Play(); if(state==GLUT_DOWN && button==GLUT_RIGHT_BUTTON) shot3.Play(); } int main(int argc,char** argv) { shot1.Load("1.wav");shot2.Load("2.wav");shot3.Load("3.wav"); mp3.Load("music.mp3"); mp3.Play(); glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH); glutCreateWindow("week10 Sound"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMouseFunc(mouse); glutMainLoop(); }







沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...