class MusicBox::Equalizer
ffmpeg.org/ffmpeg-filters.html github.com/jaakkopasanen/AutoEq
Attributes
equalizer_filters[RW]
name[RW]
volume_filter[RW]
Public Class Methods
load_equalizers(dir:, name:)
click to toggle source
# 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
new(params={})
click to toggle source
# File lib/musicbox/equalizer.rb, line 21 def initialize(params={}) @equalizer_filters = [] set(params) end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/musicbox/equalizer.rb, line 44 def <=>(other) @name <=> other.name end
load(file)
click to toggle source
# 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)
click to toggle source
# File lib/musicbox/equalizer.rb, line 48 def to_s(enabled: true) [@volume_filter, enabled ? @equalizer_filters : nil].flatten.compact.join(',') end