class StereoSample
Constants
- MAX_POLIPHONY
Public Class Methods
cleanup()
click to toggle source
# File lib/misc/stereo_sample.rb, line 9 def self.cleanup @@all_instances.each do |instances| instances.each do |key, instance| unless instance.playing? || instance.paused? instances.delete(key) end end end end
new(window, sound_l, sound_r = sound_l)
click to toggle source
# File lib/misc/stereo_sample.rb, line 29 def initialize(window, sound_l, sound_r = sound_l) @sound_l = Gosu::Sample.new(window, sound_l) # Use same sample in mono -> stereo if sound_l == sound_r @sound_r = @sound_l else @sound_r = Gosu::Sample.new(window, sound_r) end @instances = {} self.class.register_instances(@instances) end
register_instances(instances)
click to toggle source
# File lib/misc/stereo_sample.rb, line 5 def self.register_instances(instances) @@all_instances << instances end
stop_all()
click to toggle source
# File lib/misc/stereo_sample.rb, line 19 def self.stop_all @@all_instances.each do |instances| instances.each do |key, instance| if instance.playing? instance.stop end end end end
Public Instance Methods
pause(id = :default)
click to toggle source
# File lib/misc/stereo_sample.rb, line 67 def pause(id = :default) @instances["#{id}_l"].pause @instances["#{id}_r"].pause end
paused?(id = :default)
click to toggle source
# File lib/misc/stereo_sample.rb, line 41 def paused?(id = :default) i = @instances["#{id}_l"] i && i.paused? end
play(id = :default, pan = 0, volume = 1, speed = 1, looping = false)
click to toggle source
# File lib/misc/stereo_sample.rb, line 55 def play(id = :default, pan = 0, volume = 1, speed = 1, looping = false) if @instances.size > MAX_POLIPHONY return end @instances["#{id}_l"] = @sound_l.play_pan( -0.2, 0, speed, looping) @instances["#{id}_r"] = @sound_r.play_pan( 0.2, 0, speed, looping) volume_and_pan(id, volume, pan) end
playing?(id = :default)
click to toggle source
# File lib/misc/stereo_sample.rb, line 46 def playing?(id = :default) i = @instances["#{id}_l"] i && i.playing? end
resume(id = :default)
click to toggle source
# File lib/misc/stereo_sample.rb, line 72 def resume(id = :default) @instances["#{id}_l"].resume @instances["#{id}_r"].resume end
stop()
click to toggle source
# File lib/misc/stereo_sample.rb, line 77 def stop @instances.delete("#{id}_l").stop @instances.delete("#{id}_r").stop end
stopped?(id = :default)
click to toggle source
# File lib/misc/stereo_sample.rb, line 51 def stopped?(id = :default) @instances["#{id}_l"].nil? end
volume_and_pan(id, volume, pan)
click to toggle source
# File lib/misc/stereo_sample.rb, line 82 def volume_and_pan(id, volume, pan) return unless @instances["#{id}_l"] if pan > 0 pan_l = 1 - pan * 2 pan_r = 1 else pan_l = 1 pan_r = 1 + pan * 2 end pan_l *= volume pan_r *= volume @instances["#{id}_l"].volume = [pan_l, 0.05].max @instances["#{id}_r"].volume = [pan_r, 0.05].max end