class AudioMixer::Sox::Composition

Attributes

sounds[R]

Public Class Methods

new(filename) click to toggle source
# File lib/audio_mixer/sox/composition.rb, line 8
def initialize(filename)
  @filename = filename
  update!
end

Public Instance Methods

has_changed?() click to toggle source
# File lib/audio_mixer/sox/composition.rb, line 13
def has_changed?
  File.new(@filename, "r").mtime > @last_mtime
rescue Errno::ENOENT
  puts "Composition file unavailable!"
end
update!() click to toggle source
# File lib/audio_mixer/sox/composition.rb, line 19
def update!
  YAML.load_file(@filename).tap do |collection|
    if collection_is_valid?(collection)
      @sounds = collection
      puts "Composition file updated..."
    end
  end
rescue Psych::SyntaxError
  puts "Composition file corrupted, ignoring..."
ensure
  @last_mtime = Time.now
end

Private Instance Methods

collection_is_valid?(collection) click to toggle source
# File lib/audio_mixer/sox/composition.rb, line 34
def collection_is_valid?(collection)
  collection.is_a?(Enumerable) && collection.all? { |sound| sound_is_valid?(sound) }
end
sound_is_valid?(sound) click to toggle source
# File lib/audio_mixer/sox/composition.rb, line 38
def sound_is_valid?(sound)
  sound.respond_to?(:[]) && sound["url"] != nil && File.exists?(File.expand_path(sound["url"]))
end