Module:MOS in EDO allperiods: Difference between revisions

Ganaram inukshuk (talk | contribs)
m Lead section was accidentally duplicated for every period count; fixed
Ganaram inukshuk (talk | contribs)
Added generation limit
Line 25: Line 25:
-- If the edo has subset edos (such as 24edo containing 12edo and 8edo), mosses
-- If the edo has subset edos (such as 24edo containing 12edo and 8edo), mosses
-- for those subset edos are skipped, unless show_subsets is set to 1 (true)
-- for those subset edos are skipped, unless show_subsets is set to 1 (true)
function p.moses_in_edo(edo, number_of_periods, show_subsets, temperaments)
function p.moses_in_edo(edo, number_of_periods, show_subsets, max_generations, temperaments)
local edo = edo or 12
local edo = edo or 12
local number_of_periods = number_of_periods or 1
local number_of_periods = number_of_periods or 1
local show_subsets = show_subsets == 1
local show_subsets = show_subsets == 1
local max_generations = max_generations or edo - 1
local temperaments = temperaments
local temperaments = temperaments
Line 75: Line 76:
local temperament_index = 1 + i - starting_generator
local temperament_index = 1 + i - starting_generator
if show_temperament then
if show_temperament then
result = result .. mosinedo.mos_in_edo_simplified(edo, i, verified_number_of_periods, temperaments[temperament_index])
result = result .. mosinedo.mos_in_edo_simplified(edo, i, verified_number_of_periods, max_generations, temperaments[temperament_index])
else
else
result = result .. mosinedo.mos_in_edo_simplified(edo, i, verified_number_of_periods)
result = result .. mosinedo.mos_in_edo_simplified(edo, i, verified_number_of_periods, max_generations)
end
end
end
end
Line 88: Line 89:
-- Main function variant
-- Main function variant
-- Creates tables for every mos in an edo, for every possible period count
-- Creates tables for every mos in an edo, for every possible period count
function p.moses_in_edo_multi_periods(edo, max_number_of_periods, show_subsets, temperaments)
function p.moses_in_edo_multi_periods(edo, max_number_of_periods, show_subsets, max_generations, temperaments)
local edo = edo or 12
local edo = edo or 12
local max_number_of_periods = max_number_of_periods or -1
local max_number_of_periods = max_number_of_periods or -1
local show_subsets = show_subsets == 1
local show_subsets = show_subsets == 1
local max_generations = max_generations or edo - 1
local temperaments = temperaments
local temperaments = temperaments
Line 142: Line 144:
if number_of_periods == 1 then
if number_of_periods == 1 then
result = result .. string.format("== Single-period MOS scales ==\n")
result = result .. string.format("== Single-period MOS scales ==\n")
--result = result .. string.format("This is an automatically generated listing of all single-period moment of symmetry scales that can be found in %iedo, visualized as a rectangular [[horogram]] for each pair of generators. [[TAMNAMS]] names for these scales are provided wherever applicable.\n", edo)
else
else
-- If the L2 header wasn't written yet, write that, followed by
-- If the L2 header wasn't written yet, write that, followed by
Line 149: Line 150:
if not multi_period_header_written then
if not multi_period_header_written then
result = result .. string.format("== Multi-period MOS scales ==\n")
result = result .. string.format("== Multi-period MOS scales ==\n")
--result = result .. string.format("This is an automatically generated listing of all multi-period moment of symmetry scales that can be found in %iedo, visualized as a rectangular [[horogram]] for each pair of generators. [[TAMNAMS]] names for these scales are provided wherever applicable.\n", edo)
result = result .. string.format("=== %i periods ===\n", number_of_periods)
result = result .. string.format("=== %i periods ===\n", number_of_periods)
multi_period_header_written = true
multi_period_header_written = true
Line 175: Line 175:
local temperament_index = 1 + i - starting_generator
local temperament_index = 1 + i - starting_generator
if show_temperament then
if show_temperament then
result = result .. mosinedo.mos_in_edo_simplified(edo, i, number_of_periods, temperaments[temperament_index])
result = result .. mosinedo.mos_in_edo_simplified(edo, i, number_of_periods, max_generations, temperaments[temperament_index])
else
else
result = result .. mosinedo.mos_in_edo_simplified(edo, i, number_of_periods)
result = result .. mosinedo.mos_in_edo_simplified(edo, i, number_of_periods, max_generations)
end
end
end
end
Line 207: Line 207:
local temperaments = p.parse_entries(frame.args["Temperaments"])
local temperaments = p.parse_entries(frame.args["Temperaments"])
local show_subsets = tonumber(frame.args["Show Subsets"])
local show_subsets = tonumber(frame.args["Show Subsets"])
local max_periods = tonumber(frame.args["Maximum Number of Periods"]) or 15
local max_periods = tonumber(frame.args["Maximum Number of Periods"]) or -1
local max_steps = tonumber(frame.args["Maximum Number of Steps"]) or 60
local max_generations = tonumber(frame.args["Maximum Number of Generations"]) or -1
local num_periods = tonumber(frame.args["Number of Periods"])
local num_periods = tonumber(frame.args["Number of Periods"])
local result = ""
local result = ""
if num_periods ~= nil then
if num_periods ~= nil then
result = p.moses_in_edo(edo, num_periods, show_subsets, temperaments)
result = p.moses_in_edo(edo, num_periods, show_subsets, max_generations, temperaments)
else
else
result = p.moses_in_edo_multi_periods(edo, max_periods, show_subsets, temperaments)
result = p.moses_in_edo_multi_periods(edo, max_periods, show_subsets, max_generations, temperaments)
end
end