Tutorials/FMOD Basic Guide
From GameDevID
Penulis : Youfan
Dalam artikel ini akan ditulis dasar-dasar penggunaan FMOD dari awal.
Contents |
FMOD Basic Tutorial
Requirements : Visual Basic, FMOD Programmers API
Difficulty : Very easy
Introduction
FMOD adalah audio engine crossplatform, dengan platform meliputi Microsoft Windows series, Microsoft Windows 64bit series (AMD64), Linux, Linux 64bit (AMD64), Macintosh OS8/9/X and OSX for x86, Sony PlayStation 2, Microsoft Xbox, Nintendo Gamecube, Sony Playstation Portable, Microsoft Xbox 360, PlayStation 3, dan Nintendo Wii.
FMOD dapat digunakan dengan bahasa pemrograman C/C++, C#, Visual Basic, Delphi dan MASM. Jika anda menggunakan salahsatu bahasa yang sudah disebutkan, dan anda ingin memakai suara didalam aplikasi anda, maka anda bisa memakai FMOD. Selain FMOD, alternatif lainnya untuk audio engine/sound lib/audio API adalah OpenAL atau DirectSound, apabila khusus memakai Windows.
Penggunaan FMOD dalam aplikasi sangat memudahkan karena lisensi FMOD adalah free selama aplikasi yang digunakan tidak untuk tujuan komersial. Apabila untuk tujuan komersial, maka anda harus membeli lisensi-nya, yang dapat dilihat di http://fmod.org. Berikut ini adalah tutorial dasar implementasi FMOD didalam bahasa pemrograman Visual Basic.
Beginning the codes
Untuk menggunakan FMOD didalam Visual Basic, pertama anda harus mendownload library-nya terlebih dahulu di http://fmod.org. Disini versi yang akan dipakai adalah versi FMOD Ex. Setelah meng-install FMODEx, copy fmodex.dll dari direktori FMOD Ex kedalam direktori tempat project anda dibuat (direktori tempat file *.exe project anda).
Setelah itu tambahkan fmodex.bas, fmod_errors.bas, dan fmod_dsp.bas kedalam module project anda melalui Project > Add Module.
Untuk syntax awalnya menggunakan FMOD, pertama dibuat variabel-variabel yang dibutuhkan sebagai berikut :
Option Explicit
Dim system As Long
Dim suara1 As Long
Dim channel As Long
Setelah itu, dibagian load aplikasi, lakukan inisialisasi untuk sistem dan versi-nya :
Dim result As FMOD_RESULT
Dim version As Long
' Membuat Object system dan inisialisasi.
result = FMOD_System_Create(system)
ERRCHECK (result)
result = FMOD_System_GetVersion(system, version)
ERRCHECK (result)
If version <> FMOD_VERSION Then MsgBox "Error! Anda menggunakan FMOD " & Hex$(version)
& " versi lama. " & _ "Program ini memerlukan versi " & Hex$(FMOD_VERSION) End If
result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, 0)
ERRCHECK (result)
result = FMOD_System_CreateSound(system, "sounds/suara1.ogg", FMOD_HARDWARE,
suara1)
ERRCHECK (result)
result = FMOD_Sound_SetMode(suara1, FMOD_LOOP_OFF)
ERRCHECK (result)
Pada syntax diatas, musik yang dimainkan di-load semua kedalam RAM. Apabila file suara yang digunakan berukuran besar, kemungkinan besar dapat memenuhi RAM. Untuk file suara yang berukuran besar dapat digunakan syntax FMOD_SYSTEM_CREATESTREAM yang memainkan musik secara streaming. Cara penggunaannya, pada bagian FMOD_System_CreateSound diganti menjadi :
result = FMOD_System_CreateStream(system, "sounds/suara1.ogg", (FMOD_2D Or FMOD_SOFTWARE),
suara1)
ERRCHECK (result)
FMOD_SYSTEM_CREATESOUND cocok digunakan untuk suara-suara kecil seperti bunyi klik, bunyi ledakan, atau yang lain. Sedangkan FMOD_SYSTEM_CREATESTREAM lebih baik digunakan untuk suara-suara background atau latar belakang yang biasanya mempunyai ukuran file besar dan durasi yang lama.
Musik yang dimainkan disini tidak akan diulang setelah selesai, karena mode yang dipakai adalah FMOD_LOOP_OFF. Apabila ingin memainkan musik secara looping, pada bagian FMOD_Sound_SetMode diganti syntax-nya sebagai berikut :
result = FMOD_Sound_SetMode(suara1, FMOD_LOOP_NORMAL)
ERRCHECK (result)
ERRCHECK (result) digunakan untuk melakukan error checking apabila terdapat kesalahan didalam FMOD-nya. Untuk syntax error checking-nya digunakan code seperti dibawah ini :
Private Sub ERRCHECK(result As FMOD_RESULT)
Dim msgResult As VbMsgBoxResult
If result <> FMOD_OK Then msgResult = MsgBox("FMOD error! (" & result & ") "
& FMOD_ErrorString(result))
End If
If msgResult Then End
End If
End Sub
Play the musics
Setelah ditambahkan semua code diatas, sekarang musik sudah bisa dimainkan. Untuk memainkan musiknya, dapat digunakan syntax :
Dim result As FMOD_RESULT
result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, suara1, 0, channel)
ERRCHECK (result)
Syntax untuk mem-pause/resume musik yang sedang dijalankan :
Dim result As FMOD_RESULT
Dim paused As Long
If channel Then result = FMOD_Channel_GetPaused(channel, paused)
ERRCHECK (result)
If paused Then result = FMOD_Channel_SetPaused(channel, 0)
Else result = FMOD_Channel_SetPaused(channel, 1)
End If
ERRCHECK (result)
End If
Close FMOD
Ketika aplikasi ditutup, FMOD perlu ditutup secara manual. Syntax yang digunakan untuk menutup FMOD adalah sebagai berikut :
Dim result As FMOD_RESULT
result = FMOD_Sound_Release(suara1)
ERRCHECK (result)
result = FMOD_System_Close(system)
ERRCHECK (result)
result = FMOD_System_Release(system)
ERRCHECK (result)
Sample implementasi dalam aplikasi bisa didownload dilinks yang disertakan.
FMOD DSP Special Effects
Requirements : Visual Basic, FMOD Programmers API
Difficulty : Easy
Selain memainkan musik, FMOD juga mendukung berbagai efek musik atau DSP. Untuk membuat efek musik didalam FMOD, pertama dibuat variabel untuk efek musik terlebih dahulu (masih dalam Visual Basic) :
Dim system As Long
Dim suara1 As Long
Dim channel As Long
Dim dsplowpass As Long
Dim dsphighpass As Long
Dim dspecho As Long
Dim dspchorus As Long
Disini akan digunakan 4 efek sebagai contoh, yaitu LowPass, HighPass, Echo, dan efek Chorus. Saat load aplikasi, tambahkan syntax berikut ini :
Dim result As FMOD_RESULT
Dim version As Long
' Membuat Object system dan inisialisasi.
result = FMOD_System_Create(system)
ERRCHECK (result)
result = FMOD_System_GetVersion(system, version)
ERRCHECK (result)
If version <> FMOD_VERSION Then MsgBox "Error! Anda menggunakan FMOD " & Hex$(version)
& " versi lama. " & _ "Program ini memerlukan versi " & Hex$(FMOD_VERSION) End If
result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, 0)
ERRCHECK (result)
result = FMOD_System_CreateStream(system, "sounds/suara1.ogg", (FMOD_2D Or
FMOD_SOFTWARE), suara1)
ERRCHECK (result)
'Syntax untuk membuat efek musik.
result = FMOD_System_CreateDSPByType(system, FMOD_DSP_TYPE_LOWPASS, dsplowpass)
ERRCHECK (result)
result = FMOD_System_CreateDSPByType(system, FMOD_DSP_TYPE_HIGHPASS, dsphighpass)
ERRCHECK (result)
result = FMOD_System_CreateDSPByType(system, FMOD_DSP_TYPE_ECHO, dspecho)
ERRCHECK (result)
result = FMOD_System_CreateDSPByType(system, FMOD_DSP_TYPE_CHORUS, dspchorus)
ERRCHECK (result)
Perlu diperhatikan bahwa efek musik tidak dapat digunakan apabila mode FMOD yang dipakai adalah FMOD_HARDWARE, karena untuk memainkan efek diperlukan software mixing, jadi mode yang dipakai disini adalah FMOD_SOFTWARE. Setelah ditambahkan syntax diatas, sekarang efek musik sudah bisa digunakan.
LowPass Effects Sample
Contoh syntax untuk penggunaan efek LowPass adalah sebagai berikut (kontrol efek menggunakan checkbox) :
Dim result As FMOD_RESULT
Dim Active As Long
result = FMOD_DSP_GetActive(dsplowpass, Active)
ERRCHECK (result)
If Active Then result = FMOD_DSP_Remove(dsplowpass)
ERRCHECK (result)
Else result = FMOD_System_AddDSP(system, dsplowpass)
ERRCHECK (result)
End If
HighPass Effects Sample
Syntax untuk penggunaan efek HighPass :
Dim result As FMOD_RESULT
Dim Active As Long
result = FMOD_DSP_GetActive(dsphighpass, Active)
ERRCHECK (result)
If Active Then result = FMOD_DSP_Remove(dsphighpass)
ERRCHECK (result)
Else result = FMOD_System_AddDSP(system, dsphighpass)
ERRCHECK (result)
End If
Echo Effects Sample
Syntax untuk penggunaan efek Echo :
Dim result As FMOD_RESULT
Dim Active As Long
result = FMOD_DSP_GetActive(dspecho, Active)
ERRCHECK (result)
If Active Then result = FMOD_DSP_Remove(dspecho)
ERRCHECK (result)
Else result = FMOD_System_AddDSP(system, dspecho)
ERRCHECK (result)
End If
Chorus Effects Sample
Contoh syntax untuk penggunaan efek Chorus :
Dim result As FMOD_RESULT
Dim Active As Long
result = FMOD_DSP_GetActive(dspchorus, Active)
ERRCHECK (result)
If Active Then result = FMOD_DSP_Remove(dspchorus)
ERRCHECK (result)
Else result = FMOD_System_AddDSP(system, dspchorus)
ERRCHECK (result)
End If
Selain efek-efek DSP diatas, masih terdapat beberapa efek-efek lainnya yang didukung oleh FMOD, seperti Flange, Distortion, Parameq, dan lain sebagainya.
Sample implementasi dalam aplikasi bisa didownload dilinks yang disertakan.

