2020年5月12日 星期二

Week12

Sound

WAV
程式碼:
#include <stdio.h>
#include <windows.h>///為了一些定義DWORD
#include <mmsystem.h>///為了PlaySoundA()

int main()
{
    PlaySoundA("Water.wav",NULL, SND_SYNC);
    printf("Hello World!");

}

按下有聲音:
#include <stdio.h>
#include <GL/glut.h>
#include <windows.h>
#include <mmsystem.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("Sword.wav",NULL, SND_SYNC);///如果點擊才播放
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week12 Sound");

    glutMouseFunc(mouse);
    glutDisplayFunc(display);
    glutMainLoop();
}

MP3
程式碼:
#include <stdio.h>
#include <GL/glut.h>
#include <windows.h>
#include <mmsystem.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("Sword.wav",NULL, SND_SYNC);
}

int main(int argc, char **argv)
{
    myMP3.Load("BGM.mp3");///讀入檔案,小心執行目錄 (in....)
    myMP3.Play();///播放
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week12 Sound");

    glutMouseFunc(mouse);
    glutDisplayFunc(display);
    glutMainLoop();
}
鍵盤鋼琴:
#include <stdio.h>
#include <GL/glut.h>
#include <windows.h>
#include <mmsystem.h>
#include "CMP3_MCI.h"
CMP3_MCI 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("Sword.wav",NULL, SND_ASYNC);
}

int main(int argc, char **argv)
{
    myMP3.Load("BGM.mp3");
    myMP3.Play();
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week12 Sound");
    glutMouseFunc(mouse);
    glutKeyboardFunc(keyboard);
    glutDisplayFunc(display);
    glutMainLoop();
}

用MP3簡化:
#include <stdio.h>
#include <GL/glut.h>
#include <windows.h>
#include <mmsystem.h>
#include "CMP3_MCI.h"
CMP3_MCI 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("Sword.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("So12.wav");
    myMP3.Load("BGM.mp3");
    myMP3.Play();
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week12 Sound");
    glutMouseFunc(mouse);
    glutKeyboardFunc(keyboard);
    glutDisplayFunc(display);
    glutMainLoop();
}


沒有留言:

張貼留言