Module: Cyclotone::Euclidean

Defined in:
lib/cyclotone/euclidean.rb

Class Method Summary collapse

Class Method Details

.generate(pulses, steps, rotation = 0) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
15
16
17
# File 'lib/cyclotone/euclidean.rb', line 7

def generate(pulses, steps, rotation = 0)
  normalized_pulses = pulses.to_i
  normalized_steps = steps.to_i

  raise ArgumentError, "steps must be positive" if normalized_steps <= 0
  raise ArgumentError, "pulses must be between 0 and steps" if normalized_pulses.negative? || normalized_pulses > normalized_steps

  pattern = bjorklund(normalized_pulses, normalized_steps)
  pattern = pattern.rotate(pattern.index(true) || 0)
  rotate(pattern, rotation)
end