module Volume
Public Instance Methods
change_volumes(volumes, break_volumes, step)
click to toggle source
# File lib/fest/volume.rb, line 37 def change_volumes(volumes, break_volumes, step) volumes.each do |input, volume| change = volume > break_volumes[input] ? 'down' : 'up' loop do system("pactl set-sink-input-volume #{input} '#{volume * 655}'") change == 'up' ? volume += step : volume -= step break if change == 'up' ? volume > break_volumes[input] : volume < break_volumes[input] end end end
current_volumes_on_inputs()
click to toggle source
# File lib/fest/volume.rb, line 3 def current_volumes_on_inputs info = `pactl list sink-inputs` inputs = info.scan(/\A#|№(\d+)/).flatten volumes = info.scan(/\W+:\s\w+\W+\w+:\s\d+\s\/\s+(\d+)%/).flatten @current_volumes = inputs.zip(volumes.map(&:to_i)).to_h end
optimize_common_volume()
click to toggle source
# File lib/fest/volume.rb, line 27 def optimize_common_volume if @common_volume > @max_volume @max_volume elsif @common_volume < @min_volume @min_volume else @common_volume end end
optimize_volume()
click to toggle source
# File lib/fest/volume.rb, line 18 def optimize_volume case @flat_volumes when 'yes' optimize_common_volume else 100 end end
volumes_for_inputs()
click to toggle source
# File lib/fest/volume.rb, line 10 def volumes_for_inputs @volumes = {} @current_volumes.each do |input, volume| @volumes.merge!({ input => (volume - volume / 10 * @step) }) end @volumes end