Module:Scale tree: Difference between revisions
Jump to navigation
Jump to search
CompactStar (talk | contribs) No edit summary |
CompactStar (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local MOS = require('Module:MOS') | |||
local step_ratios = { | local step_ratios = { | ||
{1, 1}, | {1, 1}, | ||
{5, 4}, | |||
{4, 3}, | {4, 3}, | ||
{7, 5}, | |||
{3, 2}, | {3, 2}, | ||
{8, 5}, | |||
{5, 3}, | |||
{7, 4}, | |||
{2, 1}, | {2, 1}, | ||
{7, 3}, | |||
{5, 2}, | {5, 2}, | ||
{8, 3}, | |||
{3, 1}, | {3, 1}, | ||
{7, 2}, | |||
{4, 1}, | {4, 1}, | ||
{5, 1}, | |||
{1, 0} | {1, 0} | ||
} | } | ||
function p.scale_tree(frame) | function p.scale_tree(frame) | ||
local | local mos = MOS.parse(frame.args['tuning']) or MOS.parse('5L 2s') | ||
local | local equave = mos.equave | ||
local equave = | local L = mos.nL | ||
local S = mos.nS | |||
local collapsed_et = ET.new(nL, equave) | |||
local abstract_bright_gen = MOS.bright_gen(mos) | |||
local collapsed_bright_steps = abstract_bright_gen['L'] | |||
local equalized_et = ET.new(nL + ns, equave) | |||
local equalized_bright_steps = abstract_bright_gen['L'] + abstract_bright_gen['s'] | |||
local result = "" | |||
result = '{|class="wikitable"\n' | result = '{|class="wikitable"\n' | ||
result = result .. "|-\n" | result = result .. "|-\n" | ||
result = result .. "!Bright generator\n" | |||
result = result .. "!L\n" | result = result .. "!L\n" | ||
result = result .. "!s\n" | result = result .. "!s\n" | ||
| Line 27: | Line 42: | ||
while i <= #step_ratios do | while i <= #step_ratios do | ||
local step_ratio = step_ratios[i] | local step_ratio = step_ratios[i] | ||
local et = ET.new(step_ratio[1] * nL + step_ratio[2] * nS) | |||
local generator_steps = step_ratio[1] * collapsed_bright_steps + step_ratio[2] * (equalized_bright_steps - collapsed_bright_steps) | |||
result = result .. "|-\n" | result = result .. "|-\n" | ||
result = result .. "|" .. generator_steps .. ET.backslash_modifier(et) .. "\n" | |||
result = result .. "|" .. step_ratio[1] .. "\n" | |||
result = result .. "|" .. step_ratio[1] .. "\n" | result = result .. "|" .. step_ratio[1] .. "\n" | ||
result = result .. "|" .. step_ratio[2] .. "\n" | result = result .. "|" .. step_ratio[2] .. "\n" | ||
Revision as of 08:20, 22 May 2023
local p = {}
local MOS = require('Module:MOS')
local step_ratios = {
{1, 1},
{5, 4},
{4, 3},
{7, 5},
{3, 2},
{8, 5},
{5, 3},
{7, 4},
{2, 1},
{7, 3},
{5, 2},
{8, 3},
{3, 1},
{7, 2},
{4, 1},
{5, 1},
{1, 0}
}
function p.scale_tree(frame)
local mos = MOS.parse(frame.args['tuning']) or MOS.parse('5L 2s')
local equave = mos.equave
local L = mos.nL
local S = mos.nS
local collapsed_et = ET.new(nL, equave)
local abstract_bright_gen = MOS.bright_gen(mos)
local collapsed_bright_steps = abstract_bright_gen['L']
local equalized_et = ET.new(nL + ns, equave)
local equalized_bright_steps = abstract_bright_gen['L'] + abstract_bright_gen['s']
local result = ""
result = '{|class="wikitable"\n'
result = result .. "|-\n"
result = result .. "!Bright generator\n"
result = result .. "!L\n"
result = result .. "!s\n"
local i = 1
while i <= #step_ratios do
local step_ratio = step_ratios[i]
local et = ET.new(step_ratio[1] * nL + step_ratio[2] * nS)
local generator_steps = step_ratio[1] * collapsed_bright_steps + step_ratio[2] * (equalized_bright_steps - collapsed_bright_steps)
result = result .. "|-\n"
result = result .. "|" .. generator_steps .. ET.backslash_modifier(et) .. "\n"
result = result .. "|" .. step_ratio[1] .. "\n"
result = result .. "|" .. step_ratio[1] .. "\n"
result = result .. "|" .. step_ratio[2] .. "\n"
i = i + 1
end
result = result .. "|}"
return result
end
return p