LoginSignup
3

More than 5 years have passed since last update.

sfml-audio-fiddleの紹介

Last updated at Posted at 2015-08-01

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

sfml-ruby

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

Seal

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

SoLoud

C++のライブラリですがpythonスクリプトから各種バインディングを生成しています。
RPGツクールのRuby(RGSS)にまで対応しています。
高機能で3D音響も使えます。
今のところWindows向けには32bitのバイナリしか配布していないので、今後に期待しています。
自分でビルドする場合にはPremake4からforkしたGENieを使います。

以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3