Module:MOS intervals: Difference between revisions
ArrowHead294 (talk | contribs) m Non-wrap steps subtended section |
add experimental interval region lookup; may move to a different module later |
||
| Line 6: | Line 6: | ||
local tamnams = require("Module:TAMNAMS") | local tamnams = require("Module:TAMNAMS") | ||
local yesno = require("Module:Yesno") | local yesno = require("Module:Yesno") | ||
-- EXPERIMENTAL FEATURE: lookup table for intervals | |||
-- Mostly based off Margo Schulter's categories (without large/medium/small), | |||
-- but other interpretations are possible. Plus, this only goes up to 1200c. | |||
interval_ranges = { | |||
{ name = "Pure Unison (1:1)", range = {0, 0} }, | |||
{ name = "Commas", range = {0, 30} }, | |||
{ name = "Dieses", range = {30, 60} }, | |||
{ name = "Minor Seconds", range = {60, 125} }, | |||
{ name = "Neutral Seconds", range = {125, 175} }, | |||
--{ name = "Equable heptatonic", range = {170, 180} }, | |||
{ name = "Major Seconds", range = {175, 240} }, | |||
{ name = "Interseptimal (Maj2-min3)", range = {240, 260} }, | |||
{ name = "Minor Thirds", range = {260, 330} }, | |||
{ name = "Neutral Thirds", range = {330, 372} }, | |||
{ name = "Major Thirds", range = {372, 440} }, | |||
{ name = "Interseptimal (Maj3-4)", range = {440, 468} }, | |||
{ name = "Perfect Fourths", range = {468, 528} }, | |||
{ name = "Superfourths", range = {528, 560} }, | |||
{ name = "Tritonic Region", range = {560, 640} }, | |||
{ name = "Subfifths", range = {640, 672} }, | |||
{ name = "Perfect Fifths", range = {672, 732} }, | |||
{ name = "Interseptimal (5-min6)", range = {732, 760} }, | |||
{ name = "Minor Sixths", range = {760, 828} }, | |||
{ name = "Neutral Sixths", range = {828, 870} }, | |||
{ name = "Major Sixths", range = {870, 940} }, | |||
{ name = "Interseptimal (Maj6-min7)", range = {940, 960} }, | |||
{ name = "Minor Sevenths", range = {960, 1030} }, | |||
--{ name = "Equable heptatonic", range = {1025, 1030} }, | |||
{ name = "Neutral Sevenths", range = {1030, 1075} }, | |||
{ name = "Major Sevenths", range = {1075, 1140} }, | |||
{ name = "Octave less diesis", range = {1140, 1170} }, | |||
{ name = "Octave less comma", range = {1170, 1200} }, | |||
{ name = "Pure Octave (2:1)", range = {1200, 1200} } | |||
} | |||
-- EXPERIMENTAL FEATURE: interval lookup function | |||
function lookup_interval_range(cents) | |||
for _, interval in ipairs(interval_ranges) do | |||
if cents >= interval.range[1] and cents <= interval.range[2] then | |||
return interval.name | |||
end | |||
end | |||
return "Out of range" | |||
end | |||
-- Main function; to be called by wrapper | -- Main function; to be called by wrapper | ||