Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
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