Class: Chaussettes::Clip

Inherits:
Object
  • Object
show all
Defined in:
lib/chaussettes/clip.rb

Overview

encapsulates an invocation of sox

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ Clip

Returns a new instance of Clip.

Yields:

  • (_self)

Yield Parameters:



10
11
12
13
14
15
16
17
18
# File 'lib/chaussettes/clip.rb', line 10

def initialize
  @combine = nil
  @globals = []
  @inputs = []
  @output = nil
  @effect_chains = []

  yield self if block_given?
end

Instance Method Details

#_append_effects(sox) ⇒ Object



55
56
57
58
59
60
# 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) ⇒ Object



43
44
45
# File 'lib/chaussettes/clip.rb', line 43

def _append_globals(sox)
  @globals.each { |global| sox << global }
end

#_append_inputs(sox) ⇒ Object



47
48
49
# File 'lib/chaussettes/clip.rb', line 47

def _append_inputs(sox)
  @inputs.each { |input| sox.concat(input.commands) }
end

#_append_output(sox) ⇒ Object



51
52
53
# File 'lib/chaussettes/clip.rb', line 51

def _append_output(sox)
  sox.concat(@output.commands) if @output
end

#_build_command(sox) ⇒ Object



35
36
37
38
39
40
41
# 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

#chainObject



112
113
114
115
116
# File 'lib/chaussettes/clip.rb', line 112

def chain
  EffectChain.new.tap do |chain|
    @effect_chains << chain
  end
end

#combine(method) ⇒ Object



62
63
64
65
# File 'lib/chaussettes/clip.rb', line 62

def combine(method)
  @combine = method
  self
end

#command(cmd = 'sox') ⇒ Object



20
21
22
23
# 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

#guardObject



67
68
69
70
# File 'lib/chaussettes/clip.rb', line 67

def guard
  @globals << '--guard'
  self
end

#in(source = nil, device: nil) ⇒ Object



102
103
104
105
106
# 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

#mergeObject



72
73
74
75
# File 'lib/chaussettes/clip.rb', line 72

def merge
  @combine = :merge
  self
end

#mixObject



77
78
79
80
# File 'lib/chaussettes/clip.rb', line 77

def mix
  @combine = :mix
  self
end

#multiplyObject



82
83
84
85
# File 'lib/chaussettes/clip.rb', line 82

def multiply
  @combine = :multiply
  self
end

#out(dest = nil, device: nil) ⇒ Object



108
109
110
# File 'lib/chaussettes/clip.rb', line 108

def out(dest = nil, device: nil)
  @output = Output.new(dest, device: device)
end

#playObject



30
31
32
33
# File 'lib/chaussettes/clip.rb', line 30

def play
  system(command('play').to_s)
  self
end

#repeatableObject



92
93
94
95
# File 'lib/chaussettes/clip.rb', line 92

def repeatable
  @globals << '-R'
  self
end

#runObject



25
26
27
28
# File 'lib/chaussettes/clip.rb', line 25

def run
  system(command.to_s)
  self
end

#show_progress(flag) ⇒ Object



87
88
89
90
# File 'lib/chaussettes/clip.rb', line 87

def show_progress(flag)
  @globals << (flag ? '--show-progress' : '--no-show-progress')
  self
end

#verbose(level) ⇒ Object



97
98
99
100
# File 'lib/chaussettes/clip.rb', line 97

def verbose(level)
  @globals << "-V#{level}"
  self
end