Module:Powharmonic series: Difference between revisions
Jump to navigation
Jump to search
ArrowHead294 (talk | contribs) mNo edit summary |
ArrowHead294 (talk | contribs) mNo edit summary |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local yesno = require("Module:Yesno") | |||
function p.powharmonic(frame) | function p.powharmonic(frame) | ||
| Line 6: | Line 7: | ||
local expo = tonumber(frame.args["expo"]) | local expo = tonumber(frame.args["expo"]) | ||
local result = "{| class=\"wikitable center-all\"\n" | local result = "{| class=\"wikitable center-all\"\n" | ||
.. "|+ style=\"font-size: 105%;\" | " .. string.format("Intervals of the %s-Powharmonic series\n", expo) | .. "|+ style=\"font-size: 105%; white-space: nowrap;\" | " .. string.format("Intervals of the %s-Powharmonic series\n", expo) | ||
.. "|-\n" | .. "|-\n" | ||
.. "! rowspan=\"2\" | Pitch !! colspan=\"2\" | Frequency multiplier !! colspan=\"3\" | Pitch\n" | .. "! rowspan=\"2\" | Pitch !! colspan=\"2\" | Frequency multiplier !! colspan=\"3\" | Pitch\n" | ||
Revision as of 13:51, 19 May 2025
- This module should not be invoked directly; use its corresponding template instead: Template:Powharmonic series.
This module generates a table showing the intervals of a powharmonic series for a given exponent, which is used to model timbres involving stretched or compressed harmonics.
| Introspection summary for Module:Powharmonic series | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||
No function descriptions were provided. The Lua code may have further information.
local p = {}
local yesno = require("Module:Yesno")
function p.powharmonic(frame)
local n = tonumber(frame.args["n"])
local expo = tonumber(frame.args["expo"])
local result = "{| class=\"wikitable center-all\"\n"
.. "|+ style=\"font-size: 105%; white-space: nowrap;\" | " .. string.format("Intervals of the %s-Powharmonic series\n", expo)
.. "|-\n"
.. "! rowspan=\"2\" | Pitch !! colspan=\"2\" | Frequency multiplier !! colspan=\"3\" | Pitch\n"
.. "|-\n"
.. "! Definition !! Decimal !! [[Cent]]s !! Change (cents) !! Octave-reduced (cents)"
.. "\n"
local fmt_cent = string.format("%%.%df", tonumber(frame.args["prec"]))
local p_prev = 0
local p_current = 0
for i = 1, n do
p_current = 1200 * math.log(i) / math.log(2) * expo
result = result
.. "|-\n"
.. "| ".. string.format("%s", i)
.. " || " .. string.format("%s<sup>%s</sup>", i, expo)
.. " || " .. string.format(fmt_cent, i^expo)
.. " || " .. string.format(fmt_cent, p_current)
.. " || " .. string.format(fmt_cent, p_current - p_prev)
.. " || " .. string.format(fmt_cent, math.fmod(p_current, 1200))
.. "\n"
p_prev = p_current
end
result = result .. "|}"
local debugg = yesno(frame.args["debug"])
return frame:preprocess(debugg == true and "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>" or result)
end
return p