Module:MOS intro: Difference between revisions
No edit summary |
Cent values are now rounded to 3 decimal places; the word "step" will now be made plural if needed |
||
| Line 1: | Line 1: | ||
local mos = require('Module:MOS') | local mos = require('Module:MOS') | ||
local rat = require('Module:Rational') | local rat = require('Module:Rational') | ||
local utils = require('Module:Utils') | |||
local et = require('Module:ET') | |||
local utils = require('Module:Utils') | local utils = require('Module:Utils') | ||
local p = {} | local p = {} | ||
| Line 6: | Line 8: | ||
-- Function that creates a mos intro sentence, given a mos | -- Function that creates a mos intro sentence, given a mos | ||
function p.mos_intro_sentence(input_mos) | function p.mos_intro_sentence(input_mos) | ||
local input_mos = input_mos or mos.new(3 | local input_mos = input_mos or mos.new(4, 5, 3) | ||
-- Get the step counts and number of periods | -- Get the step counts and number of periods | ||
| Line 25: | Line 27: | ||
local scale_sig = mos.as_string(input_mos) | local scale_sig = mos.as_string(input_mos) | ||
-- Get the | -- Get the eds (ets) corresponding to the collapsed and equalized mosses | ||
local collapsed_et = et.new(nL, input_mos.equave) | |||
-- | local equalized_et = et.new(nL + ns, input_mos.equave) | ||
-- | |||
-- Get the sizes of the generator for the collapsed and equalized et in steps | |||
-- These are used to calculate cent values for the generators | |||
local generator = mos.bright_gen(input_mos) | local generator = mos.bright_gen(input_mos) | ||
local | local gen_collapsed_in_steps = generator["L"] | ||
local | local gen_equalized_in_steps = generator["L"] + generator["s"] | ||
-- Is the mos octave-equivalent or non-octave? | -- Is the mos octave-equivalent or non-octave? | ||
local is_octave_equivalent = equave_in_cents == 1200 | local is_octave_equivalent = equave_in_cents == 1200 | ||
-- How many places should cent values be rounded to? | |||
local round = 3 | |||
-- Create the intro string | -- Create the intro string | ||
| Line 48: | Line 54: | ||
-- Add the step counts per period | -- Add the step counts per period | ||
intro = intro .. nL .. " large steps and " .. ns .. " small steps," | -- Determine where "steps" should be plural or singular, as well | ||
if nL == 1 then | |||
intro = intro .. "1 large step and " | |||
else | |||
intro = intro .. nL .. " large steps and " | |||
end | |||
if ns == 1 then | |||
intro = intro .. "1 small step," | |||
else | |||
intro = intro .. ns .. " small steps," | |||
end | |||
-- Add the number of repetitions | -- Add the number of repetitions | ||
-- If multi-period, determine whether "steps" should be plural or singular, as well | |||
if n == 1 then | if n == 1 then | ||
intro = intro .. " repating every " | intro = intro .. " repating every " | ||
else | else | ||
intro = intro .. " with a period of " .. | if x == 1 then | ||
intro = intro .. " with a period of 1 large step and " | |||
else | |||
intro = intro .. " with a period of " .. n .. " large steps and " | |||
end | |||
if y == 1 then | |||
intro = intro .. "1 small step " | |||
else | |||
intro = intro .. n .. " small steps " | |||
end | |||
if n == 2 then | |||
intro = intro .. "that repeats twice every " | |||
else | |||
intro = intro .. "that repeats " .. n .. " times every " | |||
end | |||
end | end | ||
| Line 63: | Line 92: | ||
intro = intro .. "octave" | intro = intro .. "octave" | ||
else | else | ||
intro = intro .. "interval of " .. equave_in_cents .. "¢" | intro = intro .. "interval of " .. utils._round_dec(equave_in_cents, round) .. "¢" | ||
end | end | ||
| Line 70: | Line 99: | ||
intro = intro .. ". " | intro = intro .. ". " | ||
else | else | ||
intro = intro .. ", or every " .. period_in_cents .. "¢. " | intro = intro .. ", or every " .. utils._round_dec(period_in_cents, round) .. "¢. " | ||
end | end | ||
-- Add the generator range | -- Add the generator range | ||
intro = intro .. "This scale is made using a [[generator]] ranging from " .. | local collapsed_gen_in_cents = utils._round_dec(et.cents(equalized_et, gen_equalized_in_steps), round) | ||
intro = intro .. "¢ to " .. | local equalized_gen_in_cents = utils._round_dec(et.cents(collapsed_et, gen_collapsed_in_steps), round) | ||
intro = intro .. "This scale is made using a [[generator]] ranging from " .. equalized_gen_in_cents | |||
intro = intro .. "¢ to " .. collapsed_gen_in_cents .. "¢." | |||
return intro | return intro | ||