Tutorials/FMOD Basic Guide

From GameDevID

Jump to: navigation, search

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


Image:FmodLogo.gif


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.

[ Source Code Sample ]


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.

[ Source Code Sample ]

Personal tools