2006-04-10
Ruby/SDL のサウンド処理を簡易化
ライブラリ名は mygame にしようかな。
Ruby/SDL による wav ファイル再生のサンプル。
require 'sdl'
SDL::init SDL::INIT_AUDIO|SDL::INIT_VIDEO
SDL.setVideoMode 320,240,16,SDL::SWSURFACE
SDL::Mixer.open
wave = SDL::Mixer::Wave.load("sample.wav")
ch = 0
loops = 0
SDL::Mixer.playChannel(ch ,wave, loops)
while SDL::Mixer::play?(0)
sleep 1
end
これは簡単だ。ただ playChannel の引数の順番は変えた方がいいかも。第2引数の wave は必須なので先頭に、 loop 回数指定は経験上必要になったことがないので一番後ろに。
game_loop do play_wave "sample.wav" end
チャンネルとループ回数は省略可能。
画像と同じで wave は内部でキャッシュする。ループの前であらかじめロードしておく機能があってもいいだろう。リソース解放機能も。
load_wave "sample.wav" game_loop do play_wave "sample.wav" end clear_wave "sample.wav" clear_wave_all