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
|