class Chaussettes::Info

encapsulates info about an audio file

Public Class Methods

new(filename) click to toggle source
# File lib/chaussettes/info.rb, line 7
def initialize(filename)
  command = Tool.new('soxi') << filename
  output = `#{command}`
  @data = _parse(output)
end

Public Instance Methods

_parse(output) click to toggle source
# File lib/chaussettes/info.rb, line 13
def _parse(output)
  output.lines.each.with_object({}) do |line, hash|
    next if line.strip.empty?
    key, value = line.split(/:/, 2)
    hash[key.strip] = value.strip
  end
end
bit_rate() click to toggle source
# File lib/chaussettes/info.rb, line 52
def bit_rate
  @_bit_rate ||= @data['Bit Rate']
end
bits() click to toggle source
# File lib/chaussettes/info.rb, line 33
def bits
  @_bits ||= @data['Precision'].to_i
end
channels() click to toggle source
# File lib/chaussettes/info.rb, line 25
def channels
  @_channels ||= @data['Channels'].to_i
end
duration() click to toggle source
# File lib/chaussettes/info.rb, line 37
def duration
  @_duration ||= begin
    timespec = @data['Duration'].split(/ /).first
    h, m, s = timespec.split(/:/)

    h.to_i * 3600 +
      m.to_i * 60 +
      s.to_f
  end
end
filename() click to toggle source
# File lib/chaussettes/info.rb, line 21
def filename
  @_filename ||= @data['Input File']
end
rate() click to toggle source
# File lib/chaussettes/info.rb, line 29
def rate
  @_rate ||= @data['Sample Rate'].to_i
end
size() click to toggle source
# File lib/chaussettes/info.rb, line 48
def size
  @_size ||= @data['File Size']
end