Module:MOS: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 3: | Line 3: | ||
local et = require('Module:ET') | local et = require('Module:ET') | ||
local p = {} | local p = {} | ||
local tamnams_name = { -- Only mosses with 2/1-equave names in TAMNAMS | |||
['1L 1s'] = 'monowood', | |||
['2L 2s'] = 'biwood', | |||
['1L 5s'] = 'antimachinoid', | |||
['2L 4s'] = 'malic', | |||
['3L 3s'] = 'triwood', | |||
['4L 2s'] = 'citric', | |||
['5L 1s'] = 'machinoid', | |||
['1L 6s'] = 'onyx', | |||
['2L 5s'] = 'antidiatonic', | |||
['3L 4s'] = 'mosh', | |||
['4L 3s'] = 'smitonic', | |||
['5L 2s'] = 'diatonic', | |||
['6L 1s'] = 'archeotonic', | |||
['1L 7s'] = 'antipine', | |||
['2L 6s'] = 'subaric', | |||
['3L 5s'] = 'checkertonic', | |||
['4L 4s'] = 'tetrawood; diminished', | |||
['5L 3s'] = 'oneirotonic', | |||
['6L 2s'] = 'ekic', | |||
['7L 1s'] = 'pine', | |||
['1L 8s'] = 'antisubneutralic', | |||
['2L 7s'] = 'balzano', | |||
['3L 6s'] = 'tcherepnin', | |||
['4L 5s'] = 'gramitonic', | |||
['5L 4s'] = 'semiquartal', | |||
['6L 3s'] = 'hyrulic', | |||
['7L 2s'] = 'armotonic; superdiatonic', | |||
['8L 1s'] = 'subneutralic', | |||
['1L 9s'] = 'antisinaic', | |||
['2L 8s'] = 'jaric', | |||
['3L 7s'] = 'sephiroid', | |||
['4L 6s'] = 'lime', | |||
['5L 5s'] = 'pentawood', | |||
['6L 4s'] = 'lemon', | |||
['7L 3s'] = 'dicoid', | |||
['8L 2s'] = 'taric', | |||
['9L 1s'] = 'sinatonic' | |||
} | |||
local common_name = { | local common_name = { | ||
Revision as of 19:55, 31 March 2023
- This module primarily serves as a library for other modules and has no corresponding template.
This module provides functions for working with MOS scales in Lua code.
| Introspection summary for Module:MOS | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||
No function descriptions were provided. The Lua code may have further information.
local rat = require('Module:Rational')
local seq = require('Module:Sequence')
local et = require('Module:ET')
local p = {}
local tamnams_name = { -- Only mosses with 2/1-equave names in TAMNAMS
['1L 1s'] = 'monowood',
['2L 2s'] = 'biwood',
['1L 5s'] = 'antimachinoid',
['2L 4s'] = 'malic',
['3L 3s'] = 'triwood',
['4L 2s'] = 'citric',
['5L 1s'] = 'machinoid',
['1L 6s'] = 'onyx',
['2L 5s'] = 'antidiatonic',
['3L 4s'] = 'mosh',
['4L 3s'] = 'smitonic',
['5L 2s'] = 'diatonic',
['6L 1s'] = 'archeotonic',
['1L 7s'] = 'antipine',
['2L 6s'] = 'subaric',
['3L 5s'] = 'checkertonic',
['4L 4s'] = 'tetrawood; diminished',
['5L 3s'] = 'oneirotonic',
['6L 2s'] = 'ekic',
['7L 1s'] = 'pine',
['1L 8s'] = 'antisubneutralic',
['2L 7s'] = 'balzano',
['3L 6s'] = 'tcherepnin',
['4L 5s'] = 'gramitonic',
['5L 4s'] = 'semiquartal',
['6L 3s'] = 'hyrulic',
['7L 2s'] = 'armotonic; superdiatonic',
['8L 1s'] = 'subneutralic',
['1L 9s'] = 'antisinaic',
['2L 8s'] = 'jaric',
['3L 7s'] = 'sephiroid',
['4L 6s'] = 'lime',
['5L 5s'] = 'pentawood',
['6L 4s'] = 'lemon',
['7L 3s'] = 'dicoid',
['8L 2s'] = 'taric',
['9L 1s'] = 'sinatonic'
}
local common_name = {
['3/2'] = 'fifth'
}
local common_ratio = {
['fifth'] = rat.new(3, 2)
}
-- create a MOS structure (nL)L (ns)s <equave>
function p.new(nL, ns, equave)
local nL = nL or 5
local ns = ns or 2
local equave = equave or 2
return { nL = nL, ns = ns, equave = equave }
end
-- parse a MOS structure
function p.parse(unparsed)
local nL, ns, equave = unparsed:match('^(%d+)[Ll]%s*(%d+)[Ss]%s*(.*)$')
nL = tonumber(nL)
ns = tonumber(ns)
equave = rat.parse(equave:match('^<(.*)>$')) or 2
if nL == nil or ns == nil or equave == nil then
return nil
end
return p.new(nL, ns, equave)
end
-- construct a string representation for a MOS structure
function p.as_string(mos)
local suffix = nil
if mos.equave ~= 2 then
suffix = "<" .. rat.as_ratio(mos.equave):lower() .. ">"
end
return mos.nL .. "L " .. mos.ns .. "s " .. suffix
end
return p