Module:Infobox regtemp: Difference between revisions

Bugfix 4: can't rely on whitespaces
Set straight subgroup interpretation
Line 52: Line 52:
"⟨" .. mapping .. "]"
"⟨" .. mapping .. "]"
})
})
 
-- process mapping
-- process mapping
local map = {}
local map = {}
Line 63: Line 63:
end
end
genchain_mapping[1] = 0
genchain_mapping[1] = 0
-- interpret subgroup
local subgroup_basis = {}
for str in subgroup:gmatch("(%d+/?%d*)") do
table.insert(subgroup_basis, str)
end
-- autocalculating ploidacot
-- autocalculating ploidacot
local ploid = tonumber (map[1])
local ploid = tonumber (map[1])
local equave = string.char(string.byte(subgroup, 1))
local equave = u.eval_num_arg(subgroup_basis[1])
local referent = u.eval_num_arg(subgroup_basis[2])
local equave_letter
local equave_letter
local cot = tonumber(genchain_mapping[2])
local cot = tonumber(genchain_mapping[2])
local referent = string.char(string.byte(subgroup, 3))
local suffix = "cleft"
local suffix = "cleft"
if tonumber(equave) == 3 then
if equave == 3 then -- twelfth-based temp
equave_letter = "t"
equave_letter = "t"
if tonumber(string.char(string.byte(subgroup, 3))) == 5 then
if referent == 5 then
if tonumber(string.char(string.byte(subgroup, 5))) == 7 then
referent_candidate = u.eval_num_arg(subgroup_basis[3])
if referent_candidate == 7 then
referent = referent_candidate
cot = tonumber(genchain_mapping[3])
cot = tonumber(genchain_mapping[3])
suffix = "gem"
suffix = "gem"
end
end
elseif tonumber(string.char(string.byte(subgroup, 3))) == 2 then -- edf
equave_letter = "f"
equave = "3/2"
referent = string.char(string.byte(subgroup, 5))
end
end
if referent == "7" then
elseif equave == 1.5 then -- fifth-based temp
suffix = "gem"
equave_letter = "f"
end
elseif equave == 2 then
elseif tonumber(equave) == 2 then
equave_letter = "o"
equave_letter = "o"
if tonumber(string.char(string.byte(subgroup, 3))) == 3 then
if referent == 3 then
suffix = "cot"
suffix = "cot"
elseif tonumber(string.char(string.byte(subgroup, 3))) == 5 then
elseif referent == 5 then
suffix = "seph"
suffix = "seph"
end
end
Line 102: Line 105:
end
end
local equave_size = 1200 * u.log2(tonumber(equave))
local equave_size = 1200 * u.log2(equave)
local referent_size = 1200 * u.log2(tonumber(referent))
local referent_size = 1200 * u.log2(referent)
local period_size = equave_size / ploid
local period_size = equave_size / ploid
local generator_size = tonumber(tuning)
local generator_size = tonumber(tuning)
Line 110: Line 113:
cot = -cot
cot = -cot
end
end
 
-- find the shear
-- find the shear
local shear
local shear