Module:Infobox chord: Difference between revisions

Bcmills (talk | contribs)
No edit summary
Bcmills (talk | contribs)
add Cents from root
Line 54: Line 54:
local otonal_odd_limit = 1
local otonal_odd_limit = 1
local root_interval_links = {}
local root_interval_links = {}
local root_cents_steps = {}
for i, h in ipairs(harmonics) do
for i, h in ipairs(harmonics) do
-- compute LCM of all harmonics to use as the denominator in utonal form, if needed
-- compute LCM of all harmonics to use as the denominator in utonal form, if needed
Line 79: Line 80:
local denom = root / gcd
local denom = root / gcd
table.insert(root_interval_links, "[[" .. numer .. "/" .. denom .. "]]")
table.insert(root_interval_links, "[[" .. numer .. "/" .. denom .. "]]")
local cents_ln2 = 1731.234
table.insert(root_cents_steps, utils.round_dec(cents_ln2 * math.log(numer / denom)) .. "¢")
end
end
Line 123: Line 127:
table.insert(infobox_data, {"Harmonics", frame.args["Harmonics"]})
table.insert(infobox_data, {"Harmonics", frame.args["Harmonics"]})
table.insert(infobox_data, {"Intervals from root", table.concat(root_interval_links, " ‒ ")})
table.insert(infobox_data, {"Intervals from root", table.concat(root_interval_links, " ‒ ")})
table.insert(infobox_data, {"Cents from root", table.concat(root_cents_steps, " ")})
if (not utils.value_provided(frame.args["Root"])) and (utonal_odd_limit <= otonal_odd_limit or utonal_odd_limit < 1000) then
if (not utils.value_provided(frame.args["Root"])) and (utonal_odd_limit <= otonal_odd_limit or utonal_odd_limit < 1000) then
table.insert(infobox_data, {"[[Utonal]] Ratios", table.concat(utonal_intervals, " ‒ ")})
table.insert(infobox_data, {"[[Utonal]] Ratios", table.concat(utonal_intervals, " ‒ ")})