Module:MOS intervals: Difference between revisions

R-4981 (talk | contribs)
No edit summary
ArrowHead294 (talk | contribs)
No edit summary
Line 1: Line 1:
local mos = require('Module:MOS')
local mos = require("Module:MOS")
local rat = require('Module:Rational')
local rat = require("Module:Rational")
local ord = require('Module:Ordinal')
local ord = require("Module:Ordinal")
local utils = require('Module:Utils')
local utils = require("Module:Utils")
local et = require('Module:ET')
local et = require("Module:ET")
local tamnams = require('Module:TAMNAMS')
local tamnams = require("Module:TAMNAMS")
local interval_extension = require('Module:Interval_extension')
local interval_extension = require("Module:Interval_extension")
local p = {}
local p = {}


Line 45: Line 45:
-- Create the table, starting with the headers
-- Create the table, starting with the headers
local result = '{| class="wikitable"\n'
local result = "{| class=\"wikitable\"\n"
result = result .. '|+ Intervals of ' .. scale_sig .. '\n'
.. "|+ style=\"font-size: 105%;\" | Intervals of " .. scale_sig .. "\n"
result = result .. '! colspan="3" | Intervals\n'
.. "! colspan=\"3\" | Intervals !! rowspan=\"2\" | Steps subtended !! rowspan=\"2\" | Range in cents !! rowspan=\"2\" | Average of [[HE]]<br/>(from [http://www.mikebattagliamusic.com/HE-JS/HE.html HE Calc])\n !! rowspan=\"2\" | Min of [[HE]]\n"
result = result .. '! rowspan="2" | Steps subtended\n'
.. '|-\n'
result = result .. '! rowspan="2" | Range in cents\n'
.. '! Generic<sup>[[#mosstep-1|[1]]]</sup> !! Specific<sup>[[#mosstep-2|[2]]]</sup> !! Abbrev.<sup>[[#mosstep-3|[3]]]</sup>\n'
result = result .. '! rowspan="2" | Average of [[HE]]<br/>(from [http://www.mikebattagliamusic.com/HE-JS/HE.html HE Calc])\n'
result = result .. '! rowspan="2" | Min of [[HE]]\n'
result = result .. '|-\n'
result = result .. '! Generic<sup>[[#mosstep-1|[1]]]</sup>\n'
result = result .. '! Specific<sup>[[#mosstep-2|[2]]]</sup>\n'
result = result .. '! Abbrev.<sup>[[#mosstep-3|[3]]]</sup>\n'
-- Write each row
-- Write each row
for i = 1, #bright_step_matrix do
for i = 1, #bright_step_matrix do
-- Compare the bright and dark intervals. If they're the same, then the
-- Compare the bright and dark intervals. If they're the same, then the
-- current interval class is a period interval.
-- current interval class is a period interval.
Line 72: Line 65:
result = result .. "|-\n"
result = result .. "|-\n"
result = result .. string.format("| '''%s-%sstep'''\n", i-1, mos_prefix)
.. string.format("| '''%s-%sstep''' ", i - 1, mos_prefix)
result = result .. string.format("| %s\n" , tamnams.interval_quality(current_bright_interval, input_mos, "sentence-case"))
.. string.format("|| %s " , tamnams.interval_quality(current_bright_interval, input_mos, "sentence-case"))
result = result .. string.format("| %s\n" , tamnams.interval_quality(current_bright_interval, input_mos, "abbrev", "m"))
.. string.format("|| %s " , tamnams.interval_quality(current_bright_interval, input_mos, "abbrev", "m"))
result = result .. string.format("| %s\n" , mos.interval_as_string(current_bright_interval))
.. string.format("|| %s " , mos.interval_as_string(current_bright_interval))
result = result .. string.format("| %.1f¢\n", cents)
.. string.format("|| %.1f¢ ", cents)
result = result .. string.format("| ~%.4f nats\n", interval_extension.harmonic_entropy_with_lookup_table(cents))
.. string.format("|| ~%.4f nats ", interval_extension.harmonic_entropy_with_lookup_table(cents))
result = result .. string.format("| ~%.4f nats\n", interval_extension.harmonic_entropy_with_lookup_table(cents))
.. string.format("|| ~%.4f nats\n", interval_extension.harmonic_entropy_with_lookup_table(cents))
else
else
-- Calculate the best and average harmonic entropies
-- Calculate the best and average harmonic entropies
Line 111: Line 104:
result = result .. "|-\n"
result = result .. "|-\n"
result = result .. string.format("| rowspan=\"2\" | %s-%sstep\n", i-1, mos_prefix)
.. string.format("| rowspan=\"2\" | %s-%sstep ", i - 1, mos_prefix)
result = result .. string.format("| %s\n" , tamnams.interval_quality(current_dark_interval, input_mos, "sentence-case"))
.. string.format("|| %s " , tamnams.interval_quality(current_dark_interval, input_mos, "sentence-case"))
result = result .. string.format("| %s\n" , tamnams.interval_quality(current_dark_interval, input_mos, "abbrev", "m"))
.. string.format("|| %s " , tamnams.interval_quality(current_dark_interval, input_mos, "abbrev", "m"))
result = result .. string.format("| %s\n" , mos.interval_as_string(current_dark_interval))
.. string.format("|| %s " , mos.interval_as_string(current_dark_interval))
result = result .. string.format("| %s\n" , dark_interval_range)
.. string.format("|| %s " , dark_interval_range)
result = result .. string.format("| ~%.4f nats\n" , he_dark_average)
.. string.format("|| ~%.4f nats " , he_dark_average)
result = result .. string.format("| ~%.4f nats\n" , he_dark_best)
.. string.format("|| ~%.4f nats\n" , he_dark_best)
.. "|-\n"
result = result .. "|-\n"
.. string.format("| %s " , tamnams.interval_quality(current_bright_interval, input_mos, "sentence-case"))
result = result .. string.format("| %s\n" , tamnams.interval_quality(current_bright_interval, input_mos, "sentence-case"))
.. string.format("|| %s " , tamnams.interval_quality(current_bright_interval, input_mos, "abbrev", "m"))
result = result .. string.format("| %s\n" , tamnams.interval_quality(current_bright_interval, input_mos, "abbrev", "m"))
.. string.format("|| %s " , mos.interval_as_string(current_bright_interval))
result = result .. string.format("| %s\n" , mos.interval_as_string(current_bright_interval))
.. string.format("|| %s " , bright_interval_range)
result = result .. string.format("| %s\n" , bright_interval_range)
.. string.format("|| ~%.4f nats " , he_bright_average)
result = result .. string.format("| ~%.4f nats\n" , he_bright_average)
.. string.format("|| ~%.4f nats\n" , he_bright_best)
result = result .. string.format("| ~%.4f nats\n" , he_bright_best)
end
end
end
end
result = result .. "|}\n"
result = result .. "|}\n"
result = result .. "<small>\n"
.. "<span style=\"font-size: 0.75em;\">\n"
result = result .. '# <span id="mosstep-1">Generic intervals are denoted solely by the number of steps they subtend.</span>\n'
.. "# <span id=\"mosstep-1\">Generic intervals are denoted solely by the number of steps they subtend.</span>\n"
result = result .. '# <span id="mosstep-2">Specific intervals denote whether an interval is major, minor, augmented, perfect, or diminished.</span>\n'
.. "# <span id=\"mosstep-2\">Specific intervals denote whether an interval is major, minor, augmented, perfect, or diminished.</span>\n"
result = result .. '# <span id="mosstep-3">Abbreviations can be further shortened to &#39;ms&#39; if context allows.</span>\n'
.. "# <span id=\"mosstep-3\">Abbreviations can be further shortened to &#39;ms&#39; if context allows.</span>\n"
result = result .. "</small>"
.. "</span>"
return result
return result
end
end


Line 144: Line 133:
function p.mos_intervals(frame)
function p.mos_intervals(frame)
-- Get input mos
-- Get input mos
local input_mos = mos.parse(frame.args['Scale Signature'])
local input_mos = mos.parse(frame.args["Scale Signature"])
-- Default param for mos prefix
-- Default param for mos prefix
Line 154: Line 143:
local mos_abbrev = tamnams.lookup_abbrev(input_mos)
local mos_abbrev = tamnams.lookup_abbrev(input_mos)
if frame.args['MOS Prefix'] == "NONE" then
if frame.args["MOS Prefix"] == "NONE" then
mos_prefix = ""
mos_prefix = ""
mos_abbrev = ""
mos_abbrev = ""
elseif string.len(frame.args['MOS Prefix']) > 0 then
elseif string.len(frame.args["MOS Prefix"]) > 0 then
mos_prefix = frame.args['MOS Prefix']
mos_prefix = frame.args["MOS Prefix"]
mos_abbrev = frame.args['MOS Prefix']
mos_abbrev = frame.args["MOS Prefix"]
end
end
if frame.args['MOS Abbrev'] == "NONE" then
if frame.args["MOS Abbrev"] == "NONE" then
mos_abbrev = ""
mos_abbrev = ""
elseif string.len(frame.args['MOS Abbrev']) > 0 then
elseif string.len(frame.args["MOS Abbrev"]) > 0 then
mos_abbrev = frame.args['MOS Abbrev']
mos_abbrev = frame.args["MOS Abbrev"]
end
end


local result = p._mos_intervals(input_mos, mos_prefix, mos_abbrev)
return p._mos_intervals(input_mos, mos_prefix, mos_abbrev)
 
return result
end
end


return p
return p