2020年5月12日 星期二

第十一(十二?)週放音檔的卡小

音檔!!!!!

首先開啟glut專案檔,然後全部刪掉!
搜尋想要的wav音檔
把它下載下來丟到freeglut裡的bin
之後打上程式碼
執行程式就聽得到聲音嘍!
這邊附上程式碼
----------------------------------------
#include <stdio.h>
#include <windows.h>///為ㄌ定義DWORD
///windows一定要在前面才可以
#include <mmsystem.h>///為ㄌ PlaySoundA()
int main(){
    
    PlaySoundA("gun.wav", NULL , SND_SYNC );
    printf("hyo");

}
----------------------------------------

點擊視窗然後發出聲音

一樣附上程式碼
----------------------------------------
#include <stdio.h>
#include <windows.h>///為ㄌ定義DWORD
#include <mmsystem.h>///為ㄌ PlaySoundA()
#include <GL/glut.h>

void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();
}
void mouse(int button,int state, int x, int y){\
    ///點擊滑鼠發出聲音
    if(state==GLUT_DOWN) PlaySoundA("gun.wav", NULL , SND_SYNC );
}
int main(int argc, char *argv[]){

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Souuuuuuuuuuuuuuuuuuuuuuuuuuund!");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}
----------------------------------------

用MP3播放

到moodle上下載CMP3_MCI.h
放到跟專案同一個目錄
下載一個MP3放到freeglut裡的bin
還有跟專案同一個目錄裡面
並打上程式碼讓他執行
----------------------------------------
#include <stdio.h>
#include <windows.h>///為ㄌ定義DWORD
#include <mmsystem.h>///為ㄌ PlaySoundA()
#include <GL/glut.h>
#include "CMP3_MCI.h"///雙引號:要在同一個專案目錄
CMP3_MCI myMP3;///宣告物件變數myMP3

void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();
}
void mouse(int button,int state, int x, int y){\
    ///點擊滑鼠發出聲音
    ///if(state==GLUT_DOWN) PlaySoundA("gun.wav", NULL , SND_SYNC );///同步,等他播完
    if(state==GLUT_DOWN) PlaySoundA("gun.wav", NULL , SND_ASYNC );///不同步,不等他播完
}
int main(int argc, char *argv[]){

    myMP3.Load("jojo.mp3");///讀入檔案
    myMP3.Play();///播放
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Souuuuuuuuuuuuuuuuuuuuuuuuuuund!");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}
----------------------------------------
用notepad++打開專案檔
把工作的目錄都改成"﹒"
儲存後他會跑出這個畫面
點Yes後會無法執行
我們還做點更改
把freeglut的bin裡頭的音檔放到專案目錄裡
就可以執行了!


弄ㄍ鋼琴辣!

小葉教我們如何弄ㄍ鋼琴
程式碼給泥辣!
----------------------------------------
#include <stdio.h>
#include <windows.h>///為ㄌ定義DWORD
#include <mmsystem.h>///為ㄌ PlaySoundA()
#include <GL/glut.h>
#include "CMP3_MCI.h"///雙引號:要在同一個專案目錄
CMP3_MCI myMP3;///宣告物件變數myMP3

void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y){
    if(key=='1') PlaySoundA("do,wav", NULL , SND_ASYNC );
    if(key=='2') PlaySoundA("re,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 );
}

void mouse(int button,int state, int x, int y){\
    ///點擊滑鼠發出聲音
    ///if(state==GLUT_DOWN) PlaySoundA("gun.wav", NULL , SND_SYNC );///同步,等他播完
    if(state==GLUT_DOWN) PlaySoundA("gun.wav", NULL , SND_ASYNC );///不同步,不等他播完
}
int main(int argc, char *argv[]){

    myMP3.Load("jojo.mp3");///讀入檔案
    myMP3.Play();///播放
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Souuuuuuuuuuuuuuuuuuuuuuuuuuund!");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutKeyboardFunc(keyboard);

    glutMainLoop();
}
----------------------------------------
因為上面那種方法一次只能播一個音
所以我們要讓他可以一次播很多ㄍ!
總之就是這樣這樣那樣那樣
給泥程式碼!
----------------------------------------
#include <stdio.h>
#include <windows.h>///為ㄌ定義DWORD
#include <mmsystem.h>///為ㄌ PlaySoundA()
#include <GL/glut.h>
#include "CMP3_MCI.h"///雙引號:要在同一個專案目錄
CMP3_MCI myMP3;///宣告物件變數myMP3
CMP3_MCI Do,Re,Mi,Fa,So;

void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y){
    if(key=='1') Do.Play; ///PlaySoundA("do,wav", NULL , SND_ASYNC );
    if(key=='2') Re.Play; ///PlaySoundA("re,wav", NULL , SND_ASYNC );
    if(key=='3') Mi.Play; ///PlaySoundA("mi,wav", NULL , SND_ASYNC );
    if(key=='4') Fa.Play; ///PlaySoundA("fa,wav", NULL , SND_ASYNC );
    if(key=='5') So.Play; ///PlaySoundA("so,wav", NULL , SND_ASYNC );
}

void mouse(int button,int state, int x, int y){\
    ///點擊滑鼠發出聲音
    ///if(state==GLUT_DOWN) PlaySoundA("gun.wav", NULL , SND_SYNC );///同步,等他播完
    if(state==GLUT_DOWN) PlaySoundA("gun.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");
    myMP3.Load("jojo.mp3");///讀入檔案
    myMP3.Play();///播放
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Souuuuuuuuuuuuuuuuuuuuuuuuuuund!");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutKeyboardFunc(keyboard);

    glutMainLoop();
}
----------------------------------------

沒有留言:

張貼留言