Class: MusicBox::Equalizer
- Inherits:
-
Object
- Object
- MusicBox::Equalizer
- Includes:
- SetParams
- Defined in:
- lib/musicbox/equalizer.rb
Overview
Defined Under Namespace
Classes: EqualizerFilter, VolumeFilter
Instance Attribute Summary collapse
-
#equalizer_filters ⇒ Object
Returns the value of attribute equalizer_filters.
-
#name ⇒ Object
Returns the value of attribute name.
-
#volume_filter ⇒ Object
Returns the value of attribute volume_filter.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(params = {}) ⇒ Equalizer
constructor
A new instance of Equalizer.
- #load(file) ⇒ Object
- #to_s(enabled: true) ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ Equalizer
Returns a new instance of Equalizer.
21 22 23 24 |
# File 'lib/musicbox/equalizer.rb', line 21 def initialize(params={}) @equalizer_filters = [] set(params) end |
Instance Attribute Details
#equalizer_filters ⇒ Object
Returns the value of attribute equalizer_filters.
10 11 12 |
# File 'lib/musicbox/equalizer.rb', line 10 def equalizer_filters @equalizer_filters end |
#name ⇒ Object
Returns the value of attribute name.
8 9 10 |
# File 'lib/musicbox/equalizer.rb', line 8 def name @name end |
#volume_filter ⇒ Object
Returns the value of attribute volume_filter.
9 10 11 |
# File 'lib/musicbox/equalizer.rb', line 9 def volume_filter @volume_filter end |
Class Method Details
.load_equalizers(dir:, name:) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/musicbox/equalizer.rb', line 14 def self.load_equalizers(dir:, name:) dir.glob("**/*#{name}*/*ParametricEQ.txt").map do |file| name = '%s (%s)' % [file.dirname.basename, file.dirname.dirname.basename] new(name: name).tap { |e| e.load(file) } end.sort end |
Instance Method Details
#<=>(other) ⇒ Object
44 45 46 |
# File 'lib/musicbox/equalizer.rb', line 44 def <=>(other) @name <=> other.name end |
#load(file) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/musicbox/equalizer.rb', line 26 def load(file) file.readlines.map { |l| l.sub(/#.*/, '') }.map(&:strip).reject(&:empty?).each do |line| key, value = line.split(/:\s+/, 1) case key when /^Preamp: ([-.\d]+) dB$/ @volume_filter = VolumeFilter.new(volume: $1.to_f) when /^Filter \d+: ON PK Fc (\d+) Hz Gain ([-.\d]+) dB Q ([-.\d]+)$/ @equalizer_filters << EqualizerFilter.new( frequency: $1.to_i, gain: $2.to_f, width: $3.to_f, type: 'q') else warn "Ignoring eq line: #{line.inspect}" end end end |
#to_s(enabled: true) ⇒ Object
48 49 50 |
# File 'lib/musicbox/equalizer.rb', line 48 def to_s(enabled: true) [@volume_filter, enabled ? @equalizer_filters : nil].flatten.compact.join(',') end |