Module:Harmonic entropy: Difference between revisions

m Bug fixing
Plumtree (talk | contribs)
Using a proper rational representation for equaves
Line 1: Line 1:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local u = require('Module:Utils')
local u = require('Module:Utils')
local rat = require('Module:Rational')
local p = {}
local p = {}


Line 25: Line 26:
local equaves =
local equaves =
{
{
   ['f'] = 3/2,
   ['f'] = rat.new(3, 2),
   ['o'] = 2,
   ['o'] = 2,
   ['t'] = 3
   ['t'] = 3
Line 41: Line 42:
local args = getArgs(frame)
local args = getArgs(frame)
local size, equave = p.parse_ET(args[1])
local size, equave = p.parse_ET(args[1])
return equave
return rat.as_float(equave)
end
end


Line 54: Line 55:
else
else
-- equave defaults to 2
-- equave defaults to 2
equave = u.eval_num_arg(input:match("^.-ed(.+)%s*$"), 2)
equave = rat.parse(input:match("^.-ed(.+)%s*$")) or 2
end
end
return size, equave
return size, equave
Line 73: Line 74:
local steps = input:match("%s*([0-9]+)\\.-") or 1
local steps = input:match("%s*([0-9]+)\\.-") or 1
local size, equave = p.parse_ET(input:match("\\(.*)"))
local size, equave = p.parse_ET(input:match("\\(.*)"))
result = tonumber(equave)^(tonumber(steps)/tonumber(size))
result = rat.as_float(equave)^(tonumber(steps)/tonumber(size))
return result
return result
end
end


return p
return p