Module:Infobox regtemp: Difference between revisions

From Xenharmonic Wiki
Jump to navigation Jump to search
Lériendil (talk | contribs)
tonumber must be doing smth wrong then
Lériendil (talk | contribs)
porting changes over from Infobox RT
Line 60: Line 60:
end
end
local equave = "o"
local equave = string.char(string.byte(subgroup, 1))
local equave_letter
local cot = tonumber(lowermap[1])
local cot = tonumber(lowermap[1])
if tonumber(string.char(string.byte(subgroup, 1))) == 3 then
if equave == "3" then
local equave = "t"
equave_letter = "t"
if tonumber(string.char(string.byte(subgroup, 3))) == 5 then
if tonumber(string.char(string.byte(subgroup, 3))) == 5 then
if tonumber(string.char(string.byte(subgroup, 5))) == 7 then
if tonumber(string.char(string.byte(subgroup, 5))) == 7 then
local cot = tonumber(lowermap[2])
cot = tonumber(lowermap[2])
end
end
elseif tonumber(string.char(string.byte(subgroup, 3))) == 2 then -- edf
elseif tonumber(string.char(string.byte(subgroup, 3))) == 2 then -- edf
local equave = "f"
equave_letter = "f"
equave = "3/2"
end
end
elseif equave == "2" then
equave_letter = "o"
else
equave_letter = equave
end
end
Line 76: Line 82:
table.insert(data, {
table.insert(data, {
"Edo join",
"Edo join",
"[[" .. edo_first .. "ed" .. equave .. "|" .. edo_first .. "]] & [[" .. edo_second .. "ed" .. equave .. "|" .. edo_second .. "]]"
"[[" .. edo_first .. "ed" .. equave_letter .. "|" .. edo_first .. "]] & [[" .. edo_second .. "ed" .. equave_letter .. "|" .. edo_second .. "]]"
})
})



Revision as of 02:55, 21 October 2024

Module documentation[view] [edit] [history] [purge]
This module should not be invoked directly; use its corresponding template instead: Template:Infobox regtemp.
Module:Infobox regtemp is a draft module. It is incomplete and may not be in active development. If possible, editors are encouraged to help with its development. In the meantime, editors should avoid using this module across the Xenharmonic Wiki, except for testing.

This module generates an infobox providing information about a given regular temperament.

Introspection summary for Module:Infobox regtemp 
Functions provided (1)
Line Function Params
5 infobox_RT (invokable) (frame)
Lua modules required (2)
Variable Module Functions used
infobox Module:Infobox build
u Module:Utils dependency not used

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_RT(frame)
	
	-- no real math functionality... yet
	local name = frame.args["tempname"]
	
	local subgroup = frame.args["subgroup"]
	local basis = frame.args["commas"]
	
	local edo_first = frame.args["edo_first"]
	local edo1 = tonumber(edo_first)
	local edo_second = frame.args["edo_second"]
	local edo2 = tonumber(edo_second)
	
	local tuning = frame.args["tuning"]
	local genfrac = frame.args["genfrac"]
	local method = frame.args["method"]
	
	local mos = frame.args["mosses"]
	local mapping = frame.args["mapping"]
	local ploidacot = frame.args["ploidacot"]
	local limit1 = frame.args["lim1"]
	local comp1 = frame.args["comp1"]
	local acc1 = frame.args["acc1"]
	local limit2 = frame.args["lim2"]
	local comp2 = frame.args["comp2"]
	local acc2 = frame.args["acc2"]
	
	local data = {}
	
	-- processed mapping
	local map = {}
	local lowermap = {}
	table.insert(data, {
		"Subgroups",
		subgroup
	})

	table.insert(data, {
		"Comma basis",
		basis
	})

	table.insert(data, {
		"Reduced mapping",
		"<" .. mapping .. "]"
	})

	-- autocalculating ploidacot (wip)
	for num in mapping:gmatch("(%d+); ") do
		table.insert(map, num)
	end
	local ploid = map[1]
	
	for num in mapping:gmatch("(%d+) ") do
		table.insert(lowermap, num)
	end
	
	local equave = string.char(string.byte(subgroup, 1))
	local equave_letter
	local cot = tonumber(lowermap[1])
	if equave == "3" then
		equave_letter = "t"
		if tonumber(string.char(string.byte(subgroup, 3))) == 5 then
			if tonumber(string.char(string.byte(subgroup, 5))) == 7 then
				cot = tonumber(lowermap[2])
			end
		elseif tonumber(string.char(string.byte(subgroup, 3))) == 2 then -- edf
			equave_letter = "f"
			equave = "3/2"
		end
	elseif equave == "2" then
		equave_letter = "o"
	else
		equave_letter = equave
	end
	
	-- edo join
	table.insert(data, {
		"Edo join",
		"[[" .. edo_first .. "ed" .. equave_letter .. "|" .. edo_first .. "]] & [[" .. edo_second .. "ed" .. equave_letter .. "|" .. edo_second .. "]]"
	})

	table.insert(data, {
		"Generator ([[" .. method .. "]])",
		"~" .. genfrac .. " = " .. tuning .. "c"
	})

	table.insert(data, {
		"MOS scales",
		mos
	})

	table.insert(data, {
		"Ploidacot",
		ploidacot
	})

	table.insert(data, {
		"Minmax error",
		"(" .. limit1 .. "-[[odd limit]]) " .. acc1 .. "c; <br> (" .. limit2 .. "-[[odd limit]]) " .. acc2 .. "c"
	})

	table.insert(data, {
		"Target scale size",
		"(" .. limit1 .. "-[[odd limit]]) " .. comp1 .. " notes; <br> (" .. limit2 .. "-[[odd limit]]) " .. comp2 .. " notes"
	})

	local result = infobox.build(
		name,
		data
	)
	
	return result
end

return p