class Chaussettes::Clip

encapsulates an invocation of sox

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/chaussettes/clip.rb, line 10
def initialize
  @combine = nil
  @globals = []
  @inputs = []
  @output = nil
  @effect_chains = []

  yield self if block_given?
end

Public Instance Methods

_append_effects(sox) click to toggle source
# File lib/chaussettes/clip.rb, line 55
def _append_effects(sox)
  @effect_chains.each.with_index do |chain, idx|
    sox << ':' if idx > 0
    sox.concat(chain.commands)
  end
end
_append_globals(sox) click to toggle source
# File lib/chaussettes/clip.rb, line 43
def _append_globals(sox)
  @globals.each { |global| sox << global }
end
_append_inputs(sox) click to toggle source
# File lib/chaussettes/clip.rb, line 47
def _append_inputs(sox)
  @inputs.each { |input| sox.concat(input.commands) }
end
_append_output(sox) click to toggle source
# File lib/chaussettes/clip.rb, line 51
def _append_output(sox)
  sox.concat(@output.commands) if @output
end
_build_command(sox) click to toggle source
# File lib/chaussettes/clip.rb, line 35
def _build_command(sox)
  sox << '--combine' << @combine if @combine
  _append_globals sox
  _append_inputs sox
  _append_output sox
  _append_effects sox
end
chain() click to toggle source
# File lib/chaussettes/clip.rb, line 112
def chain
  EffectChain.new.tap do |chain|
    @effect_chains << chain
  end
end
combine(method) click to toggle source
# File lib/chaussettes/clip.rb, line 62
def combine(method)
  @combine = method
  self
end
command(cmd = 'sox') click to toggle source
# File lib/chaussettes/clip.rb, line 20
def command(cmd = 'sox')
  raise 'a clip requires at least one input' if @inputs.empty?
  Tool.new(cmd).tap { |sox| _build_command(sox) }
end
guard() click to toggle source
# File lib/chaussettes/clip.rb, line 67
def guard
  @globals << '--guard'
  self
end
in(source = nil, device: nil) click to toggle source
# File lib/chaussettes/clip.rb, line 102
def in(source = nil, device: nil)
  Input.new(source, device: device).tap do |input|
    @inputs << input
  end
end
merge() click to toggle source
# File lib/chaussettes/clip.rb, line 72
def merge
  @combine = :merge
  self
end
mix() click to toggle source
# File lib/chaussettes/clip.rb, line 77
def mix
  @combine = :mix
  self
end
multiply() click to toggle source
# File lib/chaussettes/clip.rb, line 82
def multiply
  @combine = :multiply
  self
end
out(dest = nil, device: nil) click to toggle source
# File lib/chaussettes/clip.rb, line 108
def out(dest = nil, device: nil)
  @output = Output.new(dest, device: device)
end
play() click to toggle source
# File lib/chaussettes/clip.rb, line 30
def play
  system(command('play').to_s)
  self
end
repeatable() click to toggle source
# File lib/chaussettes/clip.rb, line 92
def repeatable
  @globals << '-R'
  self
end
run() click to toggle source
# File lib/chaussettes/clip.rb, line 25
def run
  system(command.to_s)
  self
end
show_progress(flag) click to toggle source
# File lib/chaussettes/clip.rb, line 87
def show_progress(flag)
  @globals << (flag ? '--show-progress' : '--no-show-progress')
  self
end
verbose(level) click to toggle source
# File lib/chaussettes/clip.rb, line 97
def verbose(level)
  @globals << "-V#{level}"
  self
end