Module:Temperament data: Difference between revisions

CompactStar (talk | contribs)
No edit summary
CompactStar (talk | contribs)
No edit summary
Line 165: Line 165:
local function get_te_generator(subgroup, comma_basis, preimage)
local function get_te_generator(subgroup, comma_basis, preimage)
return matmul(get_te_tuning_map(subgroup, comma_basis), preimage)
return matmul(get_te_tuning_map(subgroup, comma_basis), preimage)
end
local function get_pote_generator(subgroup, comma_basis, preimage)
local period = 1
for i in 1, #subgroup do
period = period * (subgroup[i]^preimage[i][1])
end
local te = get_te_generator(subgroup, comma_basis)
local stretch_factor = math.log2(period) / math.log2(te[1][1])
return scalar_matmul(te, stretch_factor)
end
end


Line 243: Line 253:
end
end
generators = rat_list_to_matrix(subgroup, generators)
generators = rat_list_to_matrix(subgroup, generators)
local te_generator = get_te_generator(subgroup, comma_matrix, generators)
local pote_generator = get_pote_generator(subgroup, comma_matrix, generators)
local result =  "[[Subgroup]]: " .. frame.args['subgroup']
local result =  "[[Subgroup]]: " .. frame.args['subgroup']
result = result .. "\n\n[[Comma list]]: " .. frame.args['comma_list']
result = result .. "\n\n[[Comma list]]: " .. frame.args['comma_list']
Line 251: Line 261:
end
end
result = result:sub(0,-3)
result = result:sub(0,-3)
result = result .. "\n\n[[Optimal tuning]] ([[TE]]): "
result = result .. "\n\n[[Optimal tuning]]s:\n*[[POTE]]:"
for i = 1, #(te_generator[1]) do
for i = 1, #(te_generator[1]) do
result = result .. '~' .. trim(unparsed_gens[i]) .. ' = ' .. u._round(te_generator[1][i] * 1200, 7) .. ", "
result = result .. '~' .. trim(unparsed_gens[i]) .. ' = ' .. u._round(pote_generator[1][i] * 1200, 7) .. ", "
end
end
result = result:sub(0,-3)
result = result:sub(0,-3)