Module:Harmonic entropy: Difference between revisions
m Bug fixing |
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 | ['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 = | 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 = | result = rat.as_float(equave)^(tonumber(steps)/tonumber(size)) | ||
return result | return result | ||
end | end | ||
return p | return p | ||