Module:MOS in EDO: Difference between revisions

Ganaram inukshuk (talk | contribs)
mNo edit summary
Ganaram inukshuk (talk | contribs)
Added generation limit (basically a maximum number of rows)
Line 323: Line 323:
-- Instead of a "rectangular horogram", use the same type of visualization shown
-- Instead of a "rectangular horogram", use the same type of visualization shown
-- on the diasem page
-- on the diasem page
function p.mos_in_edo_simplified(edo, gen_in_edosteps, number_of_periods, temperament)
function p.mos_in_edo_simplified(edo, gen_in_edosteps, number_of_periods, generation_limit, temperament)
local edo = edo or 24
local edo = edo or 24
local gen_in_edosteps = gen_in_edosteps or 14
local gen_in_edosteps = gen_in_edosteps or 14
local number_of_periods = number_of_periods or 1
local number_of_periods = number_of_periods or 1
local generation_limit = generation_limit or edo - 1
local temperament = temperament --or "meantone"
local temperament = temperament --or "meantone"
Line 336: Line 337:
period_in_edosteps = edo / number_of_periods
period_in_edosteps = edo / number_of_periods
verified_number_of_periods = number_of_periods
verified_number_of_periods = number_of_periods
end
-- Check whether the generation limit is valid
-- If it's -1, then show all generations (period_in_edosteps-1)
if generation_limit == -1 then
generation_limit = period_in_edosteps - 1
end
end
Line 368: Line 375:


-- Add the step pattern for successive mosses until the pattern becomes that for an edo
-- Add the step pattern for successive mosses until the pattern becomes that for an edo
while current_scale ~= nil and starting_mos_valid do
local generation_count = 1
while current_scale ~= nil and starting_mos_valid and generation_count <= generation_limit do
-- Calculate current step ratio
-- Calculate current step ratio
-- Use this to determine which cell colors to use
-- Use this to determine which cell colors to use
Line 426: Line 434:
local temperament = frame.args["Temperament"]
local temperament = frame.args["Temperament"]
local number_of_periods = tonumber(frame.args["Number of Periods"])
local number_of_periods = tonumber(frame.args["Number of Periods"])
local generation_limit = tonumber(frame.args["Maximum Number of Generations"])
local result = ""
local result = ""
if frame.args["Step Visualization"] == "Simplified" then
result = p.mos_in_edo_simplified(edo, gen_in_edosteps, number_of_periods, generation_limit, temperament)
result = p.mos_in_edo_simplified(edo, gen_in_edosteps, number_of_periods, temperament)
else
result = p.mos_in_edo(edo, gen_in_edosteps, number_of_periods, temperament)
end
return result
return result