Module:MOS in EDO allperiods: Difference between revisions
m Lead section was accidentally duplicated for every period count; fixed |
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") | ||
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("=== %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 | local max_periods = tonumber(frame.args["Maximum Number of Periods"]) or -1 | ||
local | 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 | ||