Class: MPG123Player
Instance Attribute Summary collapse
-
#error ⇒ Object
readonly
Returns the value of attribute error.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#paused ⇒ Object
readonly
Returns the value of attribute paused.
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(params = {}) ⇒ MPG123Player
constructor
A new instance of MPG123Player.
- #mpg123puts(out) ⇒ Object
- #mute ⇒ Object
- #muted? ⇒ Boolean
- #pause ⇒ Object
- #play(track) ⇒ Object
- #playing? ⇒ Boolean
- #stop ⇒ Object
- #version ⇒ Object
- #volume ⇒ Object
- #volume=(val) ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ MPG123Player
Returns a new instance of MPG123Player.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/mpg123player.rb', line 16 def initialize params = {} params.each { |key, value| send "#{key}=", value } unless defined? HTTPClient puts "Mpg123 requires HTTPClient to work" exit false end @volume = 100 @muted = false @logger.info version @inqueue = [] begin @pin, @pout, @perr = Open3.popen3 "mpg123 --keep-open --remote" Thread.new do mpg123read end Thread.new do mpg123send end changed notify_observers :state => :inited rescue => err @error = err changed notify_observers :state => :error, :error => err end end |
Instance Attribute Details
#error ⇒ Object (readonly)
Returns the value of attribute error.
9 10 11 |
# File 'lib/mpg123player.rb', line 9 def error @error end |
#logger ⇒ Object
Returns the value of attribute logger.
10 11 12 |
# File 'lib/mpg123player.rb', line 10 def logger @logger end |
#paused ⇒ Object (readonly)
Returns the value of attribute paused.
9 10 11 |
# File 'lib/mpg123player.rb', line 9 def paused @paused end |
Instance Method Details
#close ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/mpg123player.rb', line 108 def close() @perr.close @pout.close @pin.close changed notify_observers :state => :closed rescue => err @error = err changed notify_observers :state => :error, :error => err end |
#mpg123puts(out) ⇒ Object
120 121 122 123 |
# File 'lib/mpg123player.rb', line 120 def mpg123puts(out) @inqueue << out @logger.debug {">> #{out}"} # end |
#mute ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/mpg123player.rb', line 94 def mute @muted = !@muted mpg123puts "V 0" if @muted mpg123puts "V #{@volume}" unless @muted rescue => err @error = err changed notify_observers :state => :error, :error => err end |
#muted? ⇒ Boolean
104 105 106 |
# File 'lib/mpg123player.rb', line 104 def muted? @muted end |
#pause ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/mpg123player.rb', line 62 def pause() @paused = !@paused mpg123puts "pause" rescue => err @error = err changed notify_observers :state => :error, :error => err end |
#play(track) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/mpg123player.rb', line 40 def play(track) @last_track = track unless track.nil? || track.is_a?(Hash) && track[:error] # mpg123puts "load #{track["mpg123url"]}" strhead = HTTPClient.new.head(track['mpg123url']) streamuri = strhead.header['Location'][0] streamuri.sub! 'https', 'http' mpg123puts "load #{streamuri}" @pstate = 2 end changed notify_observers :state => :load, :track => track rescue => err @error = err changed notify_observers :state => :error, :error => err end |
#playing? ⇒ Boolean
58 59 60 |
# File 'lib/mpg123player.rb', line 58 def @pstate == 2 && !@paused end |
#stop ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/mpg123player.rb', line 71 def stop() mpg123puts "stop" rescue => err @error = err changed notify_observers :state => :error, :error => err end |
#version ⇒ Object
12 13 14 |
# File 'lib/mpg123player.rb', line 12 def version return "Audio backend: #{`mpg123 --version`.strip}" end |
#volume ⇒ Object
90 91 92 |
# File 'lib/mpg123player.rb', line 90 def volume() @volume end |
#volume=(val) ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/mpg123player.rb', line 79 def volume= (val) @volume += val @volume = [@volume, 100].min @volume = [@volume, 0].max mpg123puts "V #{@volume}" rescue => err @error = err changed notify_observers :state => :error, :error => err end |