Edited at

sfml-audio-fiddleの紹介

More than 3 years have passed since last update.

sfml-audio-fiddleというRubyから音声ファイルを再生するgemを公開しました。

SFMLというゲーム/マルチメディア向けC++ライブラリのCバインディングのCSFMLをFiddle(Rubyの標準FFIライブラリ)から呼び出しています。

CSFMLの共有ライブラリがあればLinux/OSX/Windowsで動くはずです。

Fiddleの制約上、構造体の値渡しができないのでsfVector3fを値渡しする必要がある3D音響の機能は使えません。

読める形式:

ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam, w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64.


使い方

gem instal sfml-audio-fiddle

使っているRubyと同じbitバージョンのCSFMLをダウンロードしてcsfml-audio-2.dllopenal32.dllを、sfml-audio-fiddleを使うスクリプトの実行時にパスが通っている場所(カレントディレクトリ等)に置きます。

APIはキャメルケースがスネークケースになっただけで、ほぼSFMLと同じです。

.get_durationやplaying_offsetはSFMLだとマイクロ秒を使いますがsfml-audio-fiddleでは秒にしています。


効果音を鳴らす

require 'sfml/audio'

buffer = SFML::SoundBuffer.new 'sfx.wav'

sound = SFML::Sound.new buffer

sound.play

sleep buffer.get_duration + 1


BGMをストリーミング再生

require 'sfml/audio'

music = SFML::Music.new 'bgm.ogg'

puts "曲の長さ: #{music.get_duration}秒"

music.play

while music.get_status == :playing
sleep 1
end


ほかのSFMLのRubyバインディング(どちらもC拡張)

rbSFML

https://github.com/Groogy/rbSFML

sfml-ruby

https://github.com/Hanmac/sfml-ruby


ほかのよさげなライブラリ

Seal

https://github.com/zhangsu/seal

使ったことはありませんが手軽に3D音響を使えそうです。

SoLoud

http://sol.gfxile.net/soloud/index.html

C++のライブラリですがpythonスクリプトから各種バインディングを生成しています。

RPGツクールのRuby(RGSS)にまで対応しています。

高機能で3D音響も使えます。

今のところWindows向けには32bitのバイナリしか配布していないので、今後に期待しています。

自分でビルドする場合にはPremake4からforkしたGENieを使います。

以上です。