Class: StepSequencer::SoundBuilder::DefaultEffects::Loop
- Inherits:
-
Object
- Object
- StepSequencer::SoundBuilder::DefaultEffects::Loop
- Defined in:
- lib/step_sequencer/sound_builder/default_effects/loop.rb
Class Method Summary collapse
- .build(sources:, times:) ⇒ Object
- .build_full_loops(sources, num_full_loops) ⇒ Object
- .build_outfile_path ⇒ Object
- .build_partial_loops(sources, outfiles, num_partial_loops) ⇒ Object
- .combine(sources) ⇒ Object
- .slice_source(source, num_partial_loops) ⇒ Object
Class Method Details
.build(sources:, times:) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/step_sequencer/sound_builder/default_effects/loop.rb', line 5 def self.build(sources:, times:) num_full_loops = times.to_i # rounds down num_partial_loops = times - num_full_loops.to_f outfiles = build_full_loops(sources, num_full_loops) if num_partial_loops > 0 outfiles = build_partial_loops(sources, outfiles, num_partial_loops) end outfiles end |
.build_full_loops(sources, num_full_loops) ⇒ Object
27 28 29 30 31 |
# File 'lib/step_sequencer/sound_builder/default_effects/loop.rb', line 27 def build_full_loops(sources, num_full_loops) sources.map do |source| combine(Array.new(num_full_loops, source)) end end |
.build_outfile_path ⇒ Object
17 18 19 |
# File 'lib/step_sequencer/sound_builder/default_effects/loop.rb', line 17 def build_outfile_path "#{output_dir}/#{SecureRandom.urlsafe_base64}.mp3" end |
.build_partial_loops(sources, outfiles, num_partial_loops) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/step_sequencer/sound_builder/default_effects/loop.rb', line 20 def build_partial_loops(sources, outfiles, num_partial_loops) outfiles.map.with_index do |outfile, idx| source = sources[idx] sliced = slice_source(source, num_partial_loops) combine([outfile, sliced]) end end |
.combine(sources) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/step_sequencer/sound_builder/default_effects/loop.rb', line 39 def combine(sources) builder.build( sources: sources, effect: :Combine ) end |
.slice_source(source, num_partial_loops) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/step_sequencer/sound_builder/default_effects/loop.rb', line 32 def slice_source(source, num_partial_loops) builder.build( sources: [source], effect: :Slice, args: [{start_pct: 0.0, end_pct: (num_partial_loops * 100) }] )[0] end |