Module:MOS notation: Difference between revisions
m Clarified comments, updated to-do's |
Quickly added support for abbreviations for mosstep-quality-to-degree function; default is no abbreviations to avoid breaking existing templates |
||
| Line 193: | Line 193: | ||
-- scale degree | -- scale degree | ||
-- To be used in conjunction with the degrees function | -- To be used in conjunction with the degrees function | ||
-- | -- For notation: options include mosstep, mosdegree, and ordinal (not recommended except for maybe 5L 2s) | ||
-- | -- For wording: options include abbreviated or not abbreviated (type in nothing for this option) | ||
function p.mosstep_and_quality_to_degree(mossteps, quality, prefix, notation) | function p.mosstep_and_quality_to_degree(mossteps, quality, prefix, notation, wording) | ||
-- Notation options currently include: | -- Notation options currently include: | ||
| Line 204: | Line 204: | ||
local prefix = prefix or "mos" -- Default prefix is mos | local prefix = prefix or "mos" -- Default prefix is mos | ||
local notation = notation or "mosdegree" -- Default notation is mosdegree | local notation = notation or "mosdegree" -- Default notation is mosdegree | ||
local wording = wording or "" -- Default wording is no abbreviations | |||
local degree_name = "" | local degree_name = "" | ||
if notation == "mosstep" then | |||
if wording ~= "abbreviated" then | |||
if notation == "mosstep" then | |||
degree_name = mossteps .. "-" .. prefix .. "step" | |||
elseif notation == "mosdegree" then | |||
degree_name = mossteps .. "-" .. prefix .. "degree" | |||
elseif notation == "ordinal" then | |||
degree_name = ord._ordinal(mossteps + 1) | -- Add a dash between the prefix and ordinal, if a prefix is given | ||
else | if prefix == "" then | ||
degree_name = prefix .. "-" .. ord._ordinal(mossteps + 1) | degree_name = ord._ordinal(mossteps + 1) | ||
else | |||
degree_name = prefix .. "-" .. ord._ordinal(mossteps + 1) | |||
end | |||
end | |||
if quality == 0 then | |||
degree_name = "Perfect " .. degree_name | |||
elseif quality == 1 then | |||
degree_name = "Major " .. degree_name | |||
elseif quality == 2 then | |||
degree_name = "Augmented " .. degree_name | |||
elseif quality > 2 then | |||
degree_name = (quality - 1) .. "× augmented " .. degree_name | |||
elseif quality == -1 then | |||
degree_name = "Minor " .. degree_name | |||
elseif quality == -2 then | |||
degree_name = "Diminished " .. degree_name | |||
elseif quality < -2 then | |||
degree_name = (math.abs(quality) - 1) .. "× diminished " .. degree_name | |||
end | |||
else | |||
if notation == "mosstep" then | |||
degree_name = mossteps .. "-" .. prefix .. "s" | |||
elseif notation == "mosdegree" then | |||
degree_name = mossteps .. "-" .. prefix .. "d" | |||
elseif notation == "ordinal" then | |||
-- Add a dash between the prefix and ordinal, if a prefix is given | |||
if prefix == "" then | |||
degree_name = ord._ordinal(mossteps + 1) | |||
else | |||
degree_name = prefix .. "-" .. ord._ordinal(mossteps + 1) | |||
end | |||
end | |||
if quality == 0 then | |||
degree_name = "P" .. degree_name | |||
elseif quality == 1 then | |||
degree_name = "M" .. degree_name | |||
elseif quality == 2 then | |||
degree_name = "A" .. degree_name | |||
elseif quality > 2 then | |||
degree_name = string.rep("A", quality - 1) .. degree_name | |||
elseif quality == -1 then | |||
degree_name = "m" .. degree_name | |||
elseif quality == -2 then | |||
degree_name = "d" .. degree_name | |||
elseif quality < -2 then | |||
degree_name = string.rep("d", quality - 1) .. degree_name | |||
end | end | ||
end | end | ||