2020年5月12日 星期二

Sunnnnnnnnnnnnnn

第十一週!


太陽回歸拉!


首先我們先照著之前的步驟打開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
程式碼在上面的藍色



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);
    glutDisplayFunc(display);
    glutMainLoop();
}
---

沒有留言:

張貼留言