초보자에서 이제 중수로 올라오며 갖가지 개인 프로잭트를 작성하다 곤경에 빠지게 되는 장소중 한 군데이다.
1 2 3 4 5 6 7 8 9 10 | #include<MMSystem.h> // 배경음악 때문에 사용 #pragma comment(lib,"Winmm.lib") // 배경음악 sndPlaySoundA("파일경로",SND_ASYNC | SND_NODEFAULT | SND_LOOP); | Crocus |
처음 시작하면 알게되는 흔한 bgm재생 라이브러리와 함수다.
이 함수는 wav파일만 지원하며, wav파일을 bgm으로 지정시 상당한 용량의 압박으로 인해 업로드하는데도 부담되고
프로그래밍에 걸림돌이 될 것이다.
그리고 이 함수를 이용하게되면, 배경음(bgm)과 효과음을 동시에 사용할 수 없다는 것이 단점중 단점이다.
그리하여 동시구현을 하는 법에 대하여 생각해 보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include<stdio.h> #include<Windows.h> #pragma comment(lib, "winmm.lib") #include "Mmsystem.h" #include "Digitalv.h" MCI_OPEN_PARMS m_mciOpenParms; MCI_PLAY_PARMS m_mciPlayParms; DWORD m_dwDeviceID; MCI_OPEN_PARMS mciOpen; MCI_PLAY_PARMS mciPlay; int dwID; int main() { mciOpen.lpstrElementName = "mini_main.mp3"; // 파일 경로 입력 mciOpen.lpstrDeviceType = "mpegvideo"; mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT|MCI_OPEN_TYPE, (DWORD)(LPVOID)&mciOpen); dwID = mciOpen.wDeviceID; mciSendCommand(dwID, MCI_PLAY, MCI_DGV_PLAY_REPEAT, // play & repeat (DWORD)(LPVOID)&m_mciPlayParms); /* mciSendCommandW(dwID, MCI_PAUSE, MCI_NOTIFY, (DWORD)(LPVOID)&m_mciPlayParms); */// Pause /* mciSendCommandW(dwID, MCI_RESUME, 0, NULL); */// resume /* mciSendCommandW(dwID, MCI_CLOSE, 0, NULL); */// stop } | Crocus |
*** 이때 만약 아래 그림과 같이 빨간 밑줄이 뜨면서 진행이 되지 않는 경우도 있을 것이다. ***
***다음과 같이 해결하자. 상단 메뉴에 프로젝트 -> (가장 아래있는) 속성 -> 구성 속성 -> 문자 집합에서 ( 설정 안 함 ) 으로 설정한다. 그러면 해결될 것이다. ***
mci함수라는 녀석인데, 이 함수는 mp3를 지원한다.
여기서 간과하고 지나가는 사람들이 엄청 많으리라 예상한다. 왠만한 중수들은 mci에 대해서 찾아보곤 했을것이다. (음악구현을 위해)
그리하여 mp3지원하는 mci를 잘 쓰게 되고 하지만 두가지 음을 동시에 내는 법은 많이들 생각 못해 봤을 것이다.
********* mci 함수와 sndPlaySoundA 함수를 동시에 이용하라. *********
bgm은 작은 용량을 이용하도록 mci를 이용하여 연주시키고
효과음은 sndPlaySoundA 를 이용하여 연주시키면 엄청난 효과를 얻게된다.(효과음 자체가 용량이 작다.)
이 내용들 또한 두가지 소리를 구현하기에 고민이 많던 분들에게 도움이 될 것이다.
새로운 함수를 개발하는것이 아닌 기존의 함수들을 어떻게 이용하고 응용하는지가 중요하다는 것을 보여주고 싶은 바이다.
'Basic > C++' 카테고리의 다른 글
MIDI 함수를 이용한 Console에서 피아노 연주 - (1) 기본 소스코드 (11) | 2014.01.31 |
---|---|
Console 범위 밖으로의 마우스 제어 (2) | 2014.01.15 |
Console 2차원 그래픽 구현 - 4. 그래픽 구현 및 응용 (0) | 2014.01.14 |
Console 2차원 그래픽 구현 - 3. Console 그림판 소스코드 (2) | 2014.01.14 |
Console 2차원 그래픽 구현 - 2. 마우스함수 응용 (0) | 2014.01.14 |