Module:Infobox chord: Difference between revisions
No edit summary |
No edit summary |
||
Line 47: | Line 47: | ||
local prime_limit = 1 | local prime_limit = 1 | ||
local | local root_interval_links = "" | ||
for i, h in ipairs(harmonics) do | for i, h in ipairs(harmonics) do | ||
for prime, n in pairs(utils.prime_factorization_raw(h)) do | for prime, n in pairs(utils.prime_factorization_raw(h)) do | ||
Line 60: | Line 58: | ||
local numer = h / gcd | local numer = h / gcd | ||
local denom = root / gcd | local denom = root / gcd | ||
table.insert(root_interval_links, "[[" .. numer .. "/" .. denom .. "|" .. numer .. "⁄" .. denom .. "]]") | |||
end | |||
local odd_limit = 1 | |||
for j, b in ipairs(harmonics) do | |||
local | for i, a in ipairs(harmonics) do | ||
local gcd = utils._gcd(a, b) | |||
local numer = b / gcd | |||
local denom = a / gcd | |||
while numer % 2 == 0 do | |||
numer = numer / 2 | |||
end | |||
if numer > odd_limit then | |||
odd_limit = numer | |||
end | |||
while denom % 2 == 0 do | |||
denom = denom / 2 | |||
end | |||
if denom > odd_limit then | |||
odd_limit = denom | |||
end | |||
end | end | ||
end | end | ||
table.insert(infobox_data, {"Harmonics", frame.args["Harmonics"]}) | table.insert(infobox_data, {"Harmonics", frame.args["Harmonics"]}) | ||
table.insert(infobox_data, {"Intervals from root", | table.insert(infobox_data, {"Intervals from root", table.concat(root_interval_links, " – ")}) | ||
table.insert(infobox_data, {"[[Prime limit]]", prime_limit}) | table.insert(infobox_data, {"[[Prime limit]]", prime_limit}) | ||
table.insert(infobox_data, {"[[Odd limit]]", odd_limit}) | table.insert(infobox_data, {"[[Odd limit]]", odd_limit}) |