#include<SDL/SDL_mixer.h>
*** 배경음 ***
음악 초기화
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 2048);
• 44.1khz 샘플링 주파수 사용. 일반적으로 게임의 경우는 22.05khz 도 충분합니다.
• MIX_DEFAULT_FORMAT: 16 비트 샘플링
• 스테레오 채널.
• 오디오 버퍼의 크기는 2048 바이트. 크기가 너무 작으면, 소리가 튈 수 있습니다.
버퍼를 너무 크게 하면 메모리 소요량이 많아지고,
재생 시작 시점에 밀릴 수 있습니다. 따라서, 적절하게 조절이 필요합니다.
음악 로딩 및 해제
*로딩
Mix_Music *bgm = Mix_LoadMUS("BGM/footballbgm.mp3");
* 이건 마지막에 해재해줄때
Mix_FreeMusic(bgm);
음악 재생
Mix_PlayMusic( bgm, -1 );
• 로드된 bgm 을 재생
• loops는 음악의 재생 횟수.
• loops = -1 이면 무한 반복 재생.
• loops = 0이면 정지.
음악 정지 및 재개
Mix_PauseMusic();
Mix_ResumeMusic();
*** 효 과 음 ***
효과음 로딩
Mix_Chunk *Mix_LoadWAV(char *file);
void Mix_FreeChunk(Mix_Chunk *chunk);
ex)
Mix_Chunk *walk1 = Mix_LoadWAV("Effect/walk1-1.wav");
Mix_Chunk *walk2 = Mix_LoadWAV("Effect/walk1-2.wav");
Mix_Chunk *walk3 = Mix_LoadWAV("Effect/walk2-1.wav");
배경음은 Mix_Music 이지만, 효과음은 Mix_Chunk 이라는 것을 알 수 있다.
* 효과음 재생 *
int Mix_PlayChannel(int channel,
Mix_Chunk *chunk, int loops);
ex)
케이스 문
case SDLK_1: Mix_PlayChannel(-1, walk1, 0); break;
case SDLK_2: Mix_PlayChannel(-1, walk2, 0); break;
case SDLK_3: Mix_PlayChannel(-1, walk3, 0); break;
• channel: 플레이할 채널을 선택. -1이면 할당되지 않는 채널을 임의로 사용.
• loops: 효과음 파일의 반복 횟수를 지정. +1 만큼 반복합니다.
따라서 여기서는 한번만 재생.