Module:ET: Difference between revisions

ArrowHead294 (talk | contribs)
mNo edit summary
These all looked too dumb tbh
 
(16 intermediate revisions by 2 users not shown)
Line 42: Line 42:
-- parse a ET structure
-- parse a ET structure
function p.parse(unparsed)
function p.parse(unparsed)
local size, suffix, equave = unparsed:match("^(\d+)[π|ϕ|n]?([Ee][Dd](.+))$")
local size, suffix, equave = unparsed:match("^(%d+%.*%d*)([Ee][Dd](.+))$")
-- local size, suffix, equave = unparsed:match("^(%d+%.*%d*)([Cc]?[Ee][Dd]?[Tt]?(.*))$")
if equave == nil then
if equave == nil then
return nil
return nil
end
end
suffix = suffix:lower()
suffix = suffix:lower()
if size == "π" then
size = tonumber(size)
size = math.pi
elseif size == "ϕ" then
size = (1 + math.sqrt(5)) / 2
elseif size == "n" then
size = math.exp(1)
else
size = tonumber(size)
end
equave = common_ratio[equave] or rat.parse(equave)
equave = common_ratio[equave] or rat.parse(equave)
if size == nil or equave == nil then
if size == nil or equave == nil then
Line 97: Line 90:
steps = steps or 1
steps = steps or 1
return 1200 * steps / et.size * math.log(rat.as_float(et.equave)) / math.log(2)
return 1200 * steps / et.size * math.log(rat.as_float(et.equave)) / math.log(2)
end
-- convert steps to hekts
function p.hekts(et, steps)
if et.size == 0 then
return 0
end
steps = steps or 1
return 1300 * steps / et.size * math.log(rat.as_float(et.equave)) / math.log(3)
end
end


Line 148: Line 150:
local zeta_integral = seq.contains(seq.zeta_integral, et.size)
local zeta_integral = seq.contains(seq.zeta_integral, et.size)
local zeta_gap = seq.contains(seq.zeta_gap, et.size)
local zeta_gap = seq.contains(seq.zeta_gap, et.size)
local z = "The Riemann zeta function and tuning#Zeta EDO lists"


local markers = {}
local markers = {}
if zeta_peak then
if zeta_peak then
table.insert(markers, "[[The Riemann zeta function and tuning #Peak EDOs|Zeta peak]]")
table.insert(markers, string.format("[[%s|Zeta peak]]", z))
elseif zeta_peak == nil then
elseif zeta_peak == nil then
table.insert(markers, "[[The Riemann zeta function and tuning #Peak EDOs|Zeta peak?]]")
table.insert(markers, string.format("[[%s|Zeta peak?]]", z))
end
end


if zeta_peak_integer then
if zeta_peak_integer then
table.insert(markers, "[[The Riemann zeta function and tuning #Peak EDOs|Zeta peak integer]]")
table.insert(markers, string.format("[[%s|Zeta peak integer]]", z))
elseif zeta_peak_integer == nil then
elseif zeta_peak_integer == nil then
table.insert(markers, "[[The Riemann zeta function and tuning #Peak EDOs|Zeta peak integer?]]")
table.insert(markers, string.format("[[%s|Zeta peak integer?]]", z))
end
end


if zeta_integral then
if zeta_integral then
table.insert(markers, "[[The Riemann zeta function and tuning #Integral of Zeta EDOs|Zeta integral]]")
table.insert(markers, string.format("[[%s|Zeta integral]]", z))
elseif zeta_integral == nil then
elseif zeta_integral == nil then
table.insert(markers, "[[The Riemann zeta function and tuning #Integral of Zeta EDOs|Zeta integral?]]")
table.insert(markers, string.format("[[%s|Zeta integral?]]", z))
end
end


if zeta_gap then
if zeta_gap then
table.insert(markers, "[[The Riemann zeta function and tuning #Zeta Gap EDOs|Zeta gap]]")
table.insert(markers, string.format("[[%s|Zeta gap]]", z))
elseif zeta_gap == nil then
elseif zeta_gap == nil then
table.insert(markers, "[[The Riemann zeta function and tuning #Zeta Gap EDOs|Zeta gap?]]")
table.insert(markers, string.format("[[%s|Zeta gap?]]", z))
end
end


return table.concat(markers, "<br>")
return table.concat(markers, "<br />")
end
end


return p
return p