Class: SFML::Music
- Inherits:
-
Object
- Object
- SFML::Music
- Defined in:
- lib/sfml/audio/music.rb
Overview
Class Method Summary collapse
Instance Method Summary collapse
- #attenuation ⇒ Object
- #attenuation=(value) ⇒ Object
- #cone ⇒ Object
- #cone=(value) ⇒ Object
- #direction ⇒ Object
- #direction=(value) ⇒ Object
- #doppler_factor ⇒ Object
- #doppler_factor=(v) ⇒ Object
- #duration ⇒ Object
-
#effect_processor=(callable) ⇒ Object
See Sound#effect_processor= — same audio-thread DSP callback.
- #looping=(value) ⇒ Object
-
#looping? ⇒ Boolean
Cached on the Ruby side; see Sound#looping? for the why.
- #min_distance ⇒ Object
- #min_distance=(value) ⇒ Object
- #pause ⇒ Object
- #paused? ⇒ Boolean
- #pitch ⇒ Object
- #pitch=(value) ⇒ Object
- #play ⇒ Object
- #playing? ⇒ Boolean
-
#playing_offset ⇒ Object
Current playback head as a SFML::Time.
-
#playing_offset=(value) ⇒ Object
Seek to ‘value` (a SFML::Time, or seconds as a Numeric).
-
#position ⇒ Object
3D positional audio — see SFML::Sound for the why.
- #position=(value) ⇒ Object
- #relative_to_listener=(value) ⇒ Object
- #relative_to_listener? ⇒ Boolean
- #status ⇒ Object
- #stop ⇒ Object
- #stopped? ⇒ Boolean
-
#velocity ⇒ Object
3D velocity, Doppler factor, direction, cone — see Sound for the same methods on the simpler buffered source.
- #velocity=(value) ⇒ Object
- #volume ⇒ Object
- #volume=(value) ⇒ Object
Class Method Details
.load(path, **opts) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/sfml/audio/music.rb', line 8 def self.load(path, **opts) ptr = C::Audio.sfMusic_createFromFile(path.to_s) raise Error, "Could not load music from #{path.inspect}" if ptr.null? m = allocate m.send(:_take_ownership, ptr) m.instance_variable_set(:@looping, false) m.volume = opts[:volume] if opts.key?(:volume) m.pitch = opts[:pitch] if opts.key?(:pitch) m.looping = opts[:looping] if opts.key?(:looping) m end |
Instance Method Details
#attenuation ⇒ Object
128 |
# File 'lib/sfml/audio/music.rb', line 128 def attenuation = C::Audio.sfMusic_getAttenuation(@handle) |
#attenuation=(value) ⇒ Object
130 131 132 |
# File 'lib/sfml/audio/music.rb', line 130 def attenuation=(value) C::Audio.sfMusic_setAttenuation(@handle, value.to_f) end |
#cone ⇒ Object
75 76 77 |
# File 'lib/sfml/audio/music.rb', line 75 def cone SoundCone.from_native(C::Audio.sfMusic_getCone(@handle)) end |
#cone=(value) ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/sfml/audio/music.rb', line 79 def cone=(value) cone = case value when SoundCone then value when Hash then SoundCone.new(**value) else raise ArgumentError, "Music#cone= expects SoundCone or Hash; got #{value.class}" end C::Audio.sfMusic_setCone(@handle, cone.to_native) end |
#direction ⇒ Object
63 64 65 66 |
# File 'lib/sfml/audio/music.rb', line 63 def direction v = C::Audio.sfMusic_getDirection(@handle) Vector3.new(v[:x], v[:y], v[:z]) end |
#direction=(value) ⇒ Object
68 69 70 71 72 73 |
# File 'lib/sfml/audio/music.rb', line 68 def direction=(value) vec = value.is_a?(Vector3) ? value : Vector3.new(*value) packed = C::System::Vector3f.new packed[:x] = vec.x.to_f; packed[:y] = vec.y.to_f; packed[:z] = vec.z.to_f C::Audio.sfMusic_setDirection(@handle, packed) end |
#doppler_factor ⇒ Object
60 |
# File 'lib/sfml/audio/music.rb', line 60 def doppler_factor = C::Audio.sfMusic_getDopplerFactor(@handle) |
#doppler_factor=(v) ⇒ Object
61 |
# File 'lib/sfml/audio/music.rb', line 61 def doppler_factor=(v) C::Audio.sfMusic_setDopplerFactor(@handle, v.to_f); end |
#duration ⇒ Object
30 |
# File 'lib/sfml/audio/music.rb', line 30 def duration = Time.from_native(C::Audio.sfMusic_getDuration(@handle)) |
#effect_processor=(callable) ⇒ Object
See Sound#effect_processor= — same audio-thread DSP callback.
91 92 93 94 |
# File 'lib/sfml/audio/music.rb', line 91 def effect_processor=(callable) @effect_cb = callable.nil? ? nil : Audio._build_effect_processor(callable) C::Audio.sfMusic_setEffectProcessor(@handle, @effect_cb, nil) end |
#looping=(value) ⇒ Object
101 102 103 104 |
# File 'lib/sfml/audio/music.rb', line 101 def looping=(value) @looping = value ? true : false C::Audio.sfMusic_setLooping(@handle, @looping) end |
#looping? ⇒ Boolean
Cached on the Ruby side; see Sound#looping? for the why.
97 98 99 |
# File 'lib/sfml/audio/music.rb', line 97 def looping? @looping end |
#min_distance ⇒ Object
134 |
# File 'lib/sfml/audio/music.rb', line 134 def min_distance = C::Audio.sfMusic_getMinDistance(@handle) |
#min_distance=(value) ⇒ Object
136 137 138 |
# File 'lib/sfml/audio/music.rb', line 136 def min_distance=(value) C::Audio.sfMusic_setMinDistance(@handle, value.to_f) end |
#pause ⇒ Object
22 |
# File 'lib/sfml/audio/music.rb', line 22 def pause = C::Audio.sfMusic_pause(@handle) |
#paused? ⇒ Boolean
27 |
# File 'lib/sfml/audio/music.rb', line 27 def paused? = status == :paused |
#pitch ⇒ Object
112 |
# File 'lib/sfml/audio/music.rb', line 112 def pitch = C::Audio.sfMusic_getPitch(@handle) |
#pitch=(value) ⇒ Object
114 115 116 |
# File 'lib/sfml/audio/music.rb', line 114 def pitch=(value) C::Audio.sfMusic_setPitch(@handle, value.to_f) end |
#play ⇒ Object
21 |
# File 'lib/sfml/audio/music.rb', line 21 def play = C::Audio.sfMusic_play(@handle) |
#playing? ⇒ Boolean
26 |
# File 'lib/sfml/audio/music.rb', line 26 def = status == :playing |
#playing_offset ⇒ Object
Current playback head as a SFML::Time. Reads from the underlying OpenAL source — only meaningful while the music is playing or paused (not after #stop).
35 36 37 |
# File 'lib/sfml/audio/music.rb', line 35 def Time.from_native(C::Audio.(@handle)) end |
#playing_offset=(value) ⇒ Object
Seek to ‘value` (a SFML::Time, or seconds as a Numeric). Works while the music is playing, paused, or stopped.
41 42 43 44 |
# File 'lib/sfml/audio/music.rb', line 41 def (value) t = value.is_a?(Time) ? value : Time.seconds(value.to_f) C::Audio.(@handle, t.to_native) end |
#position ⇒ Object
3D positional audio — see SFML::Sound for the why.
119 120 121 |
# File 'lib/sfml/audio/music.rb', line 119 def position Vector3.from_native(C::Audio.sfMusic_getPosition(@handle)) end |
#position=(value) ⇒ Object
123 124 125 126 |
# File 'lib/sfml/audio/music.rb', line 123 def position=(value) vec = value.is_a?(Vector3) ? value : Vector3.new(*value) C::Audio.sfMusic_setPosition(@handle, vec.to_native_f) end |
#relative_to_listener=(value) ⇒ Object
142 143 144 |
# File 'lib/sfml/audio/music.rb', line 142 def relative_to_listener=(value) C::Audio.sfMusic_setRelativeToListener(@handle, value ? true : false) end |
#relative_to_listener? ⇒ Boolean
140 |
# File 'lib/sfml/audio/music.rb', line 140 def relative_to_listener? = C::Audio.sfMusic_isRelativeToListener(@handle) |
#status ⇒ Object
25 |
# File 'lib/sfml/audio/music.rb', line 25 def status = C::Audio::STATUSES[C::Audio.sfMusic_getStatus(@handle)] |
#stop ⇒ Object
23 |
# File 'lib/sfml/audio/music.rb', line 23 def stop = C::Audio.sfMusic_stop(@handle) |
#stopped? ⇒ Boolean
28 |
# File 'lib/sfml/audio/music.rb', line 28 def stopped? = status == :stopped |
#velocity ⇒ Object
3D velocity, Doppler factor, direction, cone — see Sound for the same methods on the simpler buffered source.
48 49 50 51 |
# File 'lib/sfml/audio/music.rb', line 48 def velocity v = C::Audio.sfMusic_getVelocity(@handle) Vector3.new(v[:x], v[:y], v[:z]) end |
#velocity=(value) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/sfml/audio/music.rb', line 53 def velocity=(value) vec = value.is_a?(Vector3) ? value : Vector3.new(*value) packed = C::System::Vector3f.new packed[:x] = vec.x.to_f; packed[:y] = vec.y.to_f; packed[:z] = vec.z.to_f C::Audio.sfMusic_setVelocity(@handle, packed) end |