search
LoginSignup
3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

sfml-audio-fiddleの紹介

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
What you can do with signing up
3
Help us understand the problem. What are the problem?