Module:MOS mode degrees: Difference between revisions

Ganaram inukshuk (talk | contribs)
m Final tweaks to color palette
Ganaram inukshuk (talk | contribs)
Added support for default names (formatted in tamnams as xL ys u|p)
Line 559: Line 559:


-- Create a table of a mos's degrees
-- Create a table of a mos's degrees
function p.mos_mode_degrees(input_mos, mos_prefix, mode_names)
function p.mos_mode_degrees(input_mos, mos_prefix, mode_names, use_default_mode_names)
local input_mos = input_mos or mos.new(5, 2)
local input_mos = input_mos or mos.new(5, 2)
local mos_prefix = mos_prefix or "mos"
local mos_prefix = mos_prefix or "mos"
local mode_names = mode_names or nil
local mode_names = mode_names or nil
local use_default_mode_names = use_default_mode_names == true
-- Get the modes
-- Get the modes
Line 596: Line 597:
-- Add mode names if present
-- Add mode names if present
local mode_names_given = mode_names ~= nil and #mode_names == #modes
local mode_names_given = (mode_names ~= nil and #mode_names == #modes) or use_default_mode_names
if mode_names_given then
if mode_names_given then
result = result .. '! rowspan="2" class="unsortable" | Mode names\n'
result = result .. '! rowspan="2" class="unsortable" | Mode names\n'
Line 619: Line 620:
-- Add mode name if given
-- Add mode name if given
if mode_names_given then
if mode_names_given then
result = result .. string.format('| %s\n', mode_names[i])
if use_default_mode_names then
result = result .. string.format('| %s %s\n', scale_sig, brightness_order[i])
else
result = result .. string.format('| %s\n', mode_names[i])
end
end
end
Line 642: Line 647:


-- Create a table of a modmos's degrees
-- Create a table of a modmos's degrees
function p.modmos_mode_degrees(input_mos, mos_prefix, step_pattern, mode_names)
function p.modmos_mode_degrees(input_mos, mos_prefix, step_pattern, mode_names, use_default_mode_names)
local input_mos = input_mos or mos.new(5, 2)
local input_mos = input_mos or mos.new(5, 2)
local mos_prefix = mos_prefix or "mos"
local mos_prefix = mos_prefix or "mos"
local step_pattern = step_pattern or "LsLLsAs"
local step_pattern = step_pattern or "LsLLsAs"
local mode_names = mode_names or nil
local mode_names = mode_names or nil
local use_default_mode_names = use_default_mode_names == true
-- Get the modes
-- Get the modes
Line 681: Line 687:
-- Add mode names if present
-- Add mode names if present
local mode_names_given = mode_names ~= nil and #mode_names == #modes
local mode_names_given = (mode_names ~= nil and #mode_names == #modes)
if mode_names_given then
if mode_names_given then
result = result .. '! rowspan="2" class="unsortable" | Mode names\n'
result = result .. '! rowspan="2" class="unsortable" | Mode names\n'
Line 704: Line 710:
-- Add mode name if given
-- Add mode name if given
if mode_names_given then
if mode_names_given then
result = result .. string.format('| %s\n', mode_names[i])
if use_default_mode_names then
result = result .. string.format('| %s %s\n', scale_sig, alterations[i])
else
result = result .. string.format('| %s\n', mode_names[i])
end
end
end
Line 756: Line 766:
-- Get the mode names
-- Get the mode names
local mode_names = nil
local mode_names = nil
local use_default_names = false
-- Default names for 5L 2s modes
-- Default names for 5L 2s modes
if scale_sig == "5L 2s" and step_pattern == "LsLLsAs" then
if scale_sig == "5L 2s" and step_pattern == "LsLLsAs" then
Line 761: Line 772:
elseif scale_sig == "5L 2s" and #step_pattern == 0 then
elseif scale_sig == "5L 2s" and #step_pattern == 0 then
mode_names = { "Lydian", "Ionian (major)", "Mixolydian", "Dorian", "Aeolian (minor)", "Phrygian", "Locrian" }
mode_names = { "Lydian", "Ionian (major)", "Mixolydian", "Dorian", "Aeolian (minor)", "Phrygian", "Locrian" }
elseif step_pattern == "Default" then
use_default_names = true
end
end
Line 772: Line 785:
local result = ""
local result = ""
if step_pattern == "" then
if step_pattern == "" then
result = p.mos_mode_degrees(input_mos, mos_prefix, mode_names)
result = p.mos_mode_degrees(input_mos, mos_prefix, mode_names, use_default_names)
elseif #step_pattern == input_mos.nL + input_mos.ns then
elseif #step_pattern == input_mos.nL + input_mos.ns then
result = p.modmos_mode_degrees(input_mos, mos_prefix, step_pattern, mode_names)
result = p.modmos_mode_degrees(input_mos, mos_prefix, step_pattern, mode_names, use_default_names)
end
end