Module:Scale tree: Difference between revisions

From Xenharmonic Wiki
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}
}
}
local function compare(a, b)
return (a[1]/a[2]) < (b[1]/b[2])
end


function p.scale_tree(frame)
function p.scale_tree(frame)
local l = frame.args['l']
local mos = MOS.parse(frame.args['tuning']) or MOS.parse('5L 2s')
local s = frame.args['s']
local equave = mos.equave
local equave = frame.args['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