第十一週!
太陽回歸拉!
首先我們先照著之前的步驟打開GLUT專案
然後把程式碼刪光 改成這週要教的主題 -聲音
我們可以到網路上搜尋wav download
有很多聲音檔可以用
之後把檔案存成.wav檔跟自己知道的檔案名稱
然後記得你的音檔要丟到你Freeglut的bin資料夾裡面
才讀的到檔案
跑出來會長這樣
會先撥出聲音再印出Hello World
但這是一張圖片
所以聲音你們自己想像吧!
之後更改一下程式碼
讓他變成滑鼠點擊之後就會發出聲音
---
程式碼:
#include <stdio.h>
#include <GL/glut.h>
#include <windows.h>///定義DWORD
#include <mmsystem.h>///為了PlaySoundA
#include "CMP3_MCI.h" ///TODO3 : 雙引號,要在同一個專案目錄找
CMP3_MCI myMP3; ///TODO3:宣告一個物件變數myMP3
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void mouse(int button , int state, int x, int y) ///todo2 用滑鼠發出聲音
{
if(state==GLUT_DOWN) PlaySoundA("hi.wav",NULL,SND_SYNC);
}
int main(int argc , char**argv)
{
myMP3.Load("bgm.mp3");///TODO3:讀入檔案 要放在執行目錄(bin)
myMP3.Play(); ///TODO3:播放
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week11Sound");
glutMouseFunc(mouse); ///todo2 用滑鼠發出聲音
glutDisplayFunc(display);
glutMainLoop();
}
---
第二節課我們要撥放MP3檔 Todo3
程式碼在上面的藍色
SYNC > 等它播完 , 會同步
ASYNC > 不等他播完 , 不同步
這樣MP3跟你的Wav就可以同時運作
程式碼在上面的藍色
include雙引號會在專案裡尋找
所以要把CMP3_MCI.h丟到專案的資料夾裡
MP3檔案跟Wav檔一樣
丟在Freeglut的Bin裡面才讀取的到
SYNC > 等它播完 , 會同步
ASYNC > 不等他播完 , 不同步
這樣MP3跟你的Wav就可以同時運作
---
第三堂課是要改變目錄位置
一開始先去你的專案裡面找到cbp檔 編輯它
然後改變它的路徑成 "."
但是這樣專案檔就會不認識你的東西
所以要把freeglut\bin裡面的freeglut.dll
和原本的MP3和Wave檔改成放在你的專案資料夾裡面
最後D程式碼~
Do Re Mi Fa So 我快要發瘋 日子好難過 555555
---程式碼:
#include <stdio.h>
#include <GL/glut.h>
#include <windows.h>///定義DWORD
#include <mmsystem.h>///為了PlaySoundA
#include "CMP3_MCI.h" ///TODO3 : 雙引號,要在同一個專案目錄找
CMP3_MCI myMP3; ///TODO3:宣告一個物件變數myMP3
CMP3_MCI Do, Re, Mi, Fa, So; ///TODO5
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
void keyboard(unsigned char key, int x ,int y)
{ ///TODO5
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();
}
void mouse(int button , int state, int x, int y)
{
if(state==GLUT_DOWN) PlaySoundA("hi.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") ///TODO5
myMP3.Load("bgm.mp3");///TODO3:讀入檔案 要放在執行目錄(bin)
myMP3.Play(); ///TODO3:播放
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week11Sound");
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
glutKeyboardFunc(keyboard);
glutDisplayFunc(display);
glutMainLoop();
}
---













沒有留言:
張貼留言