Module:MOS intervals: Difference between revisions

Ganaram inukshuk (talk | contribs)
Added (wip) intervals description
Ganaram inukshuk (talk | contribs)
Implemented description
Line 133: Line 133:
function p.mos_intervals_description(input_mos)
function p.mos_intervals_description(input_mos)
local input_mos = input_mos or mos.new(5,2)
local input_mos = input_mos or mos.new(5,2)
local period_count = mos.period_count(input_mos)
local period_interval = mos.period(input_mos)
-- What are the period intervals?
local period_intervals = {}
for i = 1, period_count + 1 do
local interval = mos.interval_mul(period_interval, i-1)
table.insert(period_intervals, interval)
end
-- As a sentence piece
local period_intervals_as_text = ""
if #period_intervals == 2 then
period_intervals_as_text = string.format("%s and %s", tamnams.degree_quality(period_intervals[1], input_mos), tamnams.degree_quality(period_intervals[2], input_mos))
else
for i = 1, period_count do
period_intervals_as_text = period_intervals_as_text
.. string.format("%s, ", tamnams.degree_quality(period_intervals[i], input_mos))
end
period_intervals_as_text = period_intervals_as_text
.. string.format("and %s", tamnams.degree_quality(period_intervals[period_count + 1], input_mos))
end
local tamnams_name = tamnams.lookup_name(input_mos)
local tamnams_name = tamnams.lookup_name(input_mos)
local scalesig = mos.as_string(input_mos)
local scalesig = mos.as_string(input_mos)
local scalesig_and_name = tamnams_name == nil and scalesig or string.format("%s (%s)", tamnams_name, scalesig)
local scalesig_and_name = tamnams_name == nil and scalesig or string.format("%s (%s)", tamnams_name, scalesig)
local result = string.format("The intervals of %s are named after the number of mossteps (L and s) subtended.", scalesig_and_name)
local result = string.format("The intervals of %s are named after the number of mossteps (L and s) they subtend.", scalesig_and_name)
result = result
.. string.format(" Each interval, apart from %s (%s), has two varieties or sizes each.", (period_count == 1 and "the root and period" or "the period intervals"), period_intervals_as_text)
result = result
result = result
.. string.format(" Interval varieties are named major and minor, or augmented, perfect, and diminished for the generators of %s.", tamnams_name)
.. string.format(" Interval varieties are named major and minor%s", (input_mos.nL ~= input_mos.ns and string.format(", or augmented, perfect, and diminished for the generators of %s.", tamnams_name) or "."))
return result
return result
Line 172: Line 198:
end
end


return p._mos_intervals(input_mos, mos_prefix, mos_abbrev)
return p.mos_intervals_description(input_mos) .. "\n" .. p._mos_intervals(input_mos, mos_prefix, mos_abbrev)
end
end


return p
return p