Method: Musicality::CounterpointGenerator#initialize
- Defined in:
- lib/musicality/composition/generation/counterpoint_generator.rb
#initialize(rhythm, palette, max_fact = 5) ⇒ CounterpointGenerator
Returns a new instance of CounterpointGenerator.
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/musicality/composition/generation/counterpoint_generator.rb', line 5 def initialize rhythm, palette, max_fact = 5 raise ArgumentError, "max_fact must be >= palette size" if max_fact < palette.size @rhythm = rhythm @palette = palette @total_dur = rhythm.map {|dur| dur.abs }.inject(0,:+) @solution_classes = self.class.solution_classes(@total_dur, @palette) @solution_classes.keep_if do |sc| sc.map {|k,v| k*v}.inject(0,:+) == @total_dur end @solutions = figure_solutions(max_fact) end |