Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@bggd

sfml-audio-fiddleの紹介

More than 5 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

sfml-ruby

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

Seal

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

SoLoud

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

以上です。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
bggd

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?