Module:Chord consistency: Difference between revisions

Dummy index (talk | contribs)
+distance parameter
ArrowHead294 (talk | contribs)
mNo edit summary
 
(5 intermediate revisions by one other user not shown)
Line 1: Line 1:
local ET = require('Module:ET')
local rat = require('Module:Rational')
local rat = require('Module:Rational')
local utils = require("Module:Utils")
local utils = require("Module:Utils")
local ET = require('Module:ET')
local p = {}
local p = {}


Line 98: Line 98:
end
end


function p.consistent_edos(harmonics, distance)
function p.consistent_edos(harmonics, distance, ed, maxlen)
distance = distance or 1.0
ed = ed or 'edo'
local max_n = 72
maxlen = maxlen or max_n
if max_n < maxlen then max_n = maxlen end
local all_interval = {}
local all_interval = {}


Line 112: Line 117:


local vals = {}
local vals = {}
for i = 1, 72 do
for i = 1, max_n do
local et = ET.parse('' .. i .. 'edo')
local et = ET.parse('' .. i .. ed)
local consistent = p.additively_consistent_int(et, all_interval, false, previous)
local consistent = p.additively_consistent_int(et, all_interval, false, nil)
if consistent then
if consistent then
local maxe = p.max_error(et, all_interval)
local maxe = p.max_error(et, all_interval)
if maxe <= 5.0e-11 then
table.insert(vals, "[[" .. i .. ed .. "]]" .. "(just)")
break
end
local dist = 0.5/maxe
local dist = 0.5/maxe
local up = (dist >= distance)
local up = (dist >= distance)
Line 125: Line 134:
end
end
if up then
if up then
table.insert(vals, "[[" .. i .. "edo]]" .. string.rep("*", llevel))
if #vals >= maxlen then
table.insert(vals, "&hellip;")
break
end
table.insert(vals, "[[" .. i .. ed .. "]]" .. string.rep("*", llevel))
end
end
end
end
Line 190: Line 203:
end
end
cat = "(d >= " .. distance .. ") " .. p.consistent_edos(harmonics, distance)
cat = "(d >= " .. distance .. ") " .. p.consistent_edos(harmonics, distance, 'edo', 4)
--end
--end