Module:Infobox AFDO: Difference between revisions
Jump to navigation
Jump to search
ArrowHead294 (talk | contribs) No edit summary |
ArrowHead294 (talk | contribs) Wait Tag: Undo |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local u = require( | local u = require('Module:Utils') | ||
local infobox = require( | local infobox = require('Module:Infobox') | ||
function p.infobox_AFDO(frame) | function p.infobox_AFDO(frame) | ||
-- debug mode will disable the categories | -- debug mode will disable the categories | ||
local debug_mode = frame.args[ | local debug_mode = frame.args['debug'] ~= nil | ||
local categories = | local categories = '' | ||
local steps = frame.args[ | local steps = frame.args['steps'] | ||
local stepnum = tonumber(steps) | local stepnum = tonumber(steps) | ||
local dualfifth = stepnum % 2 == 1 | local dualfifth = stepnum % 2 == 1 | ||
| Line 14: | Line 14: | ||
local special_properties = "" | local special_properties = "" | ||
categories = categories .. | -- category of the main article | ||
--categories = categories .. '[[Category:' .. tuning .. '| ]]' | |||
-- category of the equal division | |||
--if rat.eq(et.equave, 2) then | |||
categories = categories .. '[[Category:AFDO|' .. string.rep ('#', string.len (stepnum)) .. ']]' | |||
--else | |||
-- categories = categories .. '[[Category:' .. et.suffix .. '|' .. string.rep ('#', string.len (et.size)) .. ']]' | |||
--end | |||
-- prime test | -- prime test | ||
| Line 21: | Line 28: | ||
prime = " (prime)" | prime = " (prime)" | ||
-- if rat.eq(et.equave, 2) then | -- if rat.eq(et.equave, 2) then | ||
categories = categories .. | categories = categories .. '[[Category:Prime AFDO|' .. string.rep ('#', string.len (stepnum)) .. ']]' | ||
-- end | -- end | ||
end | end | ||
| Line 27: | Line 34: | ||
local infobox_data = {} | local infobox_data = {} | ||
table.insert(infobox_data, { | table.insert(infobox_data, { | ||
'Prime factorization', | |||
u._prime_factorization(stepnum) .. prime | u._prime_factorization(stepnum) .. prime | ||
}) | }) | ||
table.insert(infobox_data, { | table.insert(infobox_data, { | ||
'Fifth', | |||
fifth .. | fifth .. '/' .. steps .. ' (' .. math.floor(math.log(fifth/steps)/math.log(2) * 1200 * 1000)/1000 .. 'c)' | ||
}) | }) | ||
if(dualfifth) then | if(dualfifth) then | ||
table.insert(infobox_data, { | table.insert(infobox_data, { | ||
'Dual sharp fifth', | |||
fifth .. | fifth .. '/' .. steps .. ' (' .. math.floor(math.log(fifth/steps)/math.log(2) * 1200 * 1000)/1000 .. 'c)' | ||
}) | }) | ||
table.insert(infobox_data, { | table.insert(infobox_data, { | ||
'Dual flat fifth', | |||
(fifth-1) .. | (fifth-1) .. '/' .. steps .. ' (' .. math.floor(math.log((fifth-1)/steps)/math.log(2) * 1200 * 1000)/1000 .. 'c)' | ||
}) | }) | ||
end | end | ||
if(special_properties ~= "") then | if(special_properties ~= "") then | ||
table.insert(infobox_data, { | table.insert(infobox_data, {'Special properties', special_properties}) | ||
end | end | ||
local result = infobox.build( | local result = infobox.build( | ||
'<-<small> [[' .. (steps - 1).. 'afdo]] </small>' .. '[[' .. steps .. 'afdo]]' .. '<small> [[' .. (steps + 1).. 'afdo]] -></small>', | |||
infobox_data | infobox_data | ||
) | ) | ||
Revision as of 17:44, 6 August 2024
- This module should not be invoked directly; use its corresponding template instead: Template:Infobox AFDO.
Generates an infobox providing information about a given arithmetic frequency division of the octave.
| Introspection summary for Module:Infobox AFDO | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||||||
No function descriptions were provided. The Lua code may have further information.
local p = {}
local u = require('Module:Utils')
local infobox = require('Module:Infobox')
function p.infobox_AFDO(frame)
-- debug mode will disable the categories
local debug_mode = frame.args['debug'] ~= nil
local categories = ''
local steps = frame.args['steps']
local stepnum = tonumber(steps)
local dualfifth = stepnum % 2 == 1
local fifth = steps+math.ceil(steps/2)
local special_properties = ""
-- category of the main article
--categories = categories .. '[[Category:' .. tuning .. '| ]]'
-- category of the equal division
--if rat.eq(et.equave, 2) then
categories = categories .. '[[Category:AFDO|' .. string.rep ('#', string.len (stepnum)) .. ']]'
--else
-- categories = categories .. '[[Category:' .. et.suffix .. '|' .. string.rep ('#', string.len (et.size)) .. ']]'
--end
-- prime test
local prime = ""
if u.is_prime(stepnum) then
prime = " (prime)"
-- if rat.eq(et.equave, 2) then
categories = categories .. '[[Category:Prime AFDO|' .. string.rep ('#', string.len (stepnum)) .. ']]'
-- end
end
local infobox_data = {}
table.insert(infobox_data, {
'Prime factorization',
u._prime_factorization(stepnum) .. prime
})
table.insert(infobox_data, {
'Fifth',
fifth .. '/' .. steps .. ' (' .. math.floor(math.log(fifth/steps)/math.log(2) * 1200 * 1000)/1000 .. 'c)'
})
if(dualfifth) then
table.insert(infobox_data, {
'Dual sharp fifth',
fifth .. '/' .. steps .. ' (' .. math.floor(math.log(fifth/steps)/math.log(2) * 1200 * 1000)/1000 .. 'c)'
})
table.insert(infobox_data, {
'Dual flat fifth',
(fifth-1) .. '/' .. steps .. ' (' .. math.floor(math.log((fifth-1)/steps)/math.log(2) * 1200 * 1000)/1000 .. 'c)'
})
end
if(special_properties ~= "") then
table.insert(infobox_data, {'Special properties', special_properties})
end
local result = infobox.build(
'<-<small> [[' .. (steps - 1).. 'afdo]] </small>' .. '[[' .. steps .. 'afdo]]' .. '<small> [[' .. (steps + 1).. 'afdo]] -></small>',
infobox_data
)
if not debug_mode then
result = result .. categories
end
return result
end
return p