local mos = require("Module:MOS")
local tip = require("Module:Template input parse")
local tamnams = require("Module:TAMNAMS")
local yesno = require("Module:Yesno")
local p = {}
-- Global variables for cell colors
-- Colors are as follows:
-- - Orange and blue for small and large sizes, respectively
-- - Darker colors for altered scale degrees
-- - No color for period intervals
p.cell_color_none = "NONE" -- For cells that don't have a color (default cell color applies)
p.cell_color_perfect_size = "NONE" -- Only applies for periods, including the root and equave
p.cell_color_lg_altered_size = "#BDD7EE"
p.cell_color_large_size = "#DDEBF7"
p.cell_color_small_size = "#FCE4D6"
p.cell_color_sm_altered_size = "#F8CBAD"
function p.genchain(input_mos, num_gens)
local input_mos = input_mos or mos.new(5,2)
local num_gens = num_gens or (mos.period_step_count(input_mos) - 1)
local bright_gen = mos.bright_gen(input_mos)
local stacked_gens = mos.unison()
local genchain = { mos.unison() }
local abs_num_gens = math.abs(num_gens)
local sign = num_gens > 0 and 1 or -1
for i = 1, abs_num_gens do
stacked_gens = mos.interval_add(stacked_gens, mos.interval_mul(bright_gen, sign))
table.insert(genchain, stacked_gens)
end
return genchain
end
return p