Class: Chaussettes::Clip
- Inherits:
-
Object
- Object
- Chaussettes::Clip
- Defined in:
- lib/chaussettes/clip.rb
Overview
encapsulates an invocation of sox
Instance Method Summary collapse
- #_append_effects(sox) ⇒ Object
- #_append_globals(sox) ⇒ Object
- #_append_inputs(sox) ⇒ Object
- #_append_output(sox) ⇒ Object
- #_build_command(sox) ⇒ Object
- #chain ⇒ Object
- #combine(method) ⇒ Object
- #command(cmd = 'sox') ⇒ Object
- #guard ⇒ Object
- #in(source = nil, device: nil) ⇒ Object
-
#initialize {|_self| ... } ⇒ Clip
constructor
A new instance of Clip.
- #merge ⇒ Object
- #mix ⇒ Object
- #multiply ⇒ Object
- #out(dest = nil, device: nil) ⇒ Object
- #play ⇒ Object
- #repeatable ⇒ Object
- #run ⇒ Object
- #show_progress(flag) ⇒ Object
- #verbose(level) ⇒ Object
Constructor Details
#initialize {|_self| ... } ⇒ Clip
Returns a new instance of Clip.
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 |
#chain ⇒ Object
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 |
#guard ⇒ Object
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 |
#merge ⇒ Object
72 73 74 75 |
# File 'lib/chaussettes/clip.rb', line 72 def merge @combine = :merge self end |
#mix ⇒ Object
77 78 79 80 |
# File 'lib/chaussettes/clip.rb', line 77 def mix @combine = :mix self end |
#multiply ⇒ Object
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 |
#play ⇒ Object
30 31 32 33 |
# File 'lib/chaussettes/clip.rb', line 30 def play system(command('play').to_s) self end |
#repeatable ⇒ Object
92 93 94 95 |
# File 'lib/chaussettes/clip.rb', line 92 def repeatable @globals << '-R' self end |
#run ⇒ Object
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 |