Kamis, 16 Juli 2015

Contoh Program Direct Sound

Musim angin barat dan layangan pada terbang di udara...


Selamat pagi sobat-sobat sekalian, senang sekali rasanya bisa menulis  artikel  yang satu ini untuk melengkapi program game. Sebuah game tidak akan lengkap jika tidak ada efek suara atau  sound effect dan untuk memutar / memainkan suara diperlukan program tambahan. OpenGL sendiri sampai sejauh ini yang ogut ketahui belum memasukkan unsur suara kedalam library-nya, sehingga untuk membuat suara pada program game Anda dapat menggunakan library direct sound.


Pada program game suara yang akan dimainkan (play) harus di load dahulu ke memory, sehingga pada saat akan di play proses memainkan suara tidak akan mengganggu proses game itu sendiri. Jika load suara tidak dilakukan maka game yang Anda buat akan terhenti sejenak, apalagi jika suara yang akan Anda mainkan bersumber dari file yang berukuran besar.

Program suara yang ogut gunakan adalah direct sound yang sudah ada bersama dengan VC++, sehingga Anda tidak usah mencari library tambahan. Contoh program game di artikel ini juga ogut gunakan untuk game engine dan game shoot them up, kedua artikel sudah pernah ogut posting di blog ini. 

Langkah pertama untuk membuat program suara tambahkan include seperti di bawah ini.

//include untuk direct sound
#include "MySound.h"

Jangan lupa library juga harus Anda sertakan.

//library untuk direct sound
#pragma comment(lib, "winmm.lib")  
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "dsound.lib")

Deklarasi class.

///////////////////WAVE SOUND
const int total_sound = 2;
MySoundManager SoundManager;
MySoundBuffer SoundEffect[total_sound];  

Inisialisasi di awal program game Anda.

if (!SoundManager.InisialisasiSound(My_HWND))
return 0;

Load suara dan setelah selesai suara dapat langsung Anda mainkan (play).

//load file Wave
bool Load_Sound()
{
SoundManager.CreateSound("waves/BG.wav", SoundEffect[0]);
SoundManager.CreateSound("waves/fire.wav", SoundEffect[1]);

///////////PLAY WAVE (BG Sound)
SoundEffect[0].Play(true); //play looping

return true;
}

Jika suara ingin Anda play hanya sekali(tidak berulang-ulang) ganti parameter true menjadi false.

SoundEffect[0].Play(false);

Close jika program game telah selesai.

SoundEffect[0].ClearBuffer();
SoundEffect[1].ClearBuffer();
SoundManager.ClosingSound();

Demikianlah akhir dari episode kali ini, semoga program suara ini bermanfaat bagi rekan-rekan sekalian.

Selamat Berkreasi


Heriady
heriady.yoh@gmail.com