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