Module:Temperament data: Difference between revisions

CompactStar (talk | contribs)
No edit summary
CompactStar (talk | contribs)
No edit summary
Line 107: Line 107:
return g
return g
end
end
local function gcd(a,b)
  if type(a) == "number" and type(b) == "number" and
        a == math.floor(a) and b == math.floor(b) then
    if b == 0 then
      return a
    else
      return gcd(b, a % b) -- tail recursion
    end
  else
    error("Invalid argument to gcd (" .. tostring(a) .. "," ..
          tostring(b) .. ")", 2)
  end
end


function p.get_comma_list(subgroup, mapping)
function p.get_comma_list(subgroup, mapping)
local te_generator = get_te_generator(subgroup, mapping)
local te_generator = get_te_generator(subgroup, mapping)
-- mw.logObject(te_generator)
local te_tuning_map = {}
local te_tuning_map = {}
for i = 1, #subgroup do
for i = 1, #subgroup do
mw.logObject(te_generator[2])
te_tuning_map[i] = te_generator[1][1] * mapping[1][i] + te_generator[1][2] * mapping[2][i]
-- te_tuning_map[i] = te_generator[1] * mapping[1][i] + te_generator[2] * mapping[2][i]
end
end
-- local commas = {}
-- mw.logObject(te_tuning_map)
-- if #subgroup == 3 then
-- for i=-10, 10 do
local commas = {}
-- for j=-10, 10 do
if #subgroup == 3 then
-- for k=-10, 10 do
for i=-10, 10 do
-- local comma = {i, j, k}
for j=-10, 10 do
-- local comma_num = 1
for k=-10, 10 do
-- for i = 1,#subgroup do
local comma = {i, j, k}
-- local comma_num = comma_num * te_tuning_map[i]^comma[i]
local comma_num = 0
-- end
for i = 1,#subgroup do
comma_num = comma_num + (math.log(subgroup[i])/math.log(2))*comma[i]
-- if comma_num >= 1 and comma_num < 1.0000000001 then
end
-- commas.append(comma)
local mapped_comma_num = 0
-- end
for i = 1,#subgroup do
mapped_comma_num = mapped_comma_num + te_tuning_map[i]*comma[i]
-- end
end
-- end
-- end
if comma_num >= 0 and mapped_comma_num >= 0 and mapped_comma_num < 0.000000001 then
-- end
local comma_gcd = gcd(gcd(comma[1], comma[2]), comma[3])
if comma_gcd == 1 or comma_gcd == -1 then
commas[#commas + 1] = comma
end
end
end
end
end
end
return commas
return commas