|
|
| Line 20: |
Line 20: |
| p.cell_color_small_size = "#FCE4D6" | | p.cell_color_small_size = "#FCE4D6" |
| p.cell_color_sm_altered_size = "#F8CBAD" | | p.cell_color_sm_altered_size = "#F8CBAD" |
|
| |
|
| |
|
| function p.preprocess_genchain(input_mos) | | function p.preprocess_genchain(input_mos) |
| Line 105: |
Line 104: |
| result = result .. "|}" | | result = result .. "|}" |
| | | |
| return result
| |
| end
| |
|
| |
| function p.mos_genchain_description(input_mos, mos_prefix)
| |
| local input_mos = input_mos or mos.new(6,2)
| |
| local mos_prefix = mos_prefix or "mos"
| |
| local scalesig = mos.as_string(input_mos)
| |
|
| |
| -- How many periods?
| |
| -- What are the period intervals?
| |
| local period_count = mos.period_count(input_mos)
| |
| local period_interval = mos.period(input_mos)
| |
| local period_intervals = {}
| |
| for i = 1, period_count + 1 do
| |
| local interval = mos.interval_mul(period_interval, i-1)
| |
| table.insert(period_intervals, interval)
| |
| end
| |
|
| |
| -- As a sentence piece
| |
| local period_intervals_as_text = ""
| |
| if #period_intervals == 2 then
| |
| period_intervals_as_text = string.format("%s and %s", tamnams.degree_quality(period_intervals[1], input_mos), tamnams.degree_quality(period_intervals[2], input_mos))
| |
| else
| |
| for i = 1, period_count do
| |
| period_intervals_as_text = period_intervals_as_text
| |
| .. string.format("%s, ", tamnams.degree_quality(period_intervals[i], input_mos))
| |
| end
| |
| period_intervals_as_text = period_intervals_as_text
| |
| .. string.format("and %s", tamnams.degree_quality(period_intervals[period_count + 1], input_mos))
| |
| end
| |
|
| |
| -- What is the bright gen and at what scale degrees do you stack from?
| |
| local bright_gen_as_text = tamnams.interval_quality(mos.bright_gen(input_mos), input_mos)
| |
| local result = string.format("A chain of bright generators, each a %s, produces the following scale degrees.", bright_gen_as_text)
| |
|
| |
| -- How long is the chain?
| |
| local period_step_count = mos.period_step_count(input_mos)
| |
| result = result
| |
| .. " "
| |
| .. string.format("A chain of %s bright generators %scontains the scale degrees of one of the modes of %s.", period_step_count, (period_count == 1 and "" or "from each period "), scalesig)
| |
|
| |
| -- What scales are produced when the chain is extended further?
| |
| local child_scale_chain_length = input_mos.nL + input_mos.nL + input_mos.ns
| |
| local child_scale_1, child_scale_2 = mos.child_mosses(input_mos)
| |
| result = result
| |
| .. " "
| |
| .. string.format("Expanding %s chain to %s scale degrees produces the modes of either %s (for soft-of-basic tunings) or %s (for hard-of-basic tunings).",
| |
| (period_count == 1 and "the" or "each"),
| |
| child_scale_chain_length / period_count,
| |
| mos.as_string(child_scale_1),
| |
| mos.as_string(child_scale_2)
| |
| )
| |
|
| |
| return result | | return result |
| end | | end |
| Line 174: |
Line 120: |
| mos_abbrev = tamnams.verify_abbrev(input_mos, mos_abbrev) | | mos_abbrev = tamnams.verify_abbrev(input_mos, mos_abbrev) |
| | | |
| return p.mos_genchain_description(input_mos) .. "\n" .. p._mos_genchain(input_mos, mos_prefix, mos_abbrev, collapsed) | | return p._mos_genchain(input_mos, mos_prefix, mos_abbrev, collapsed) |
| end | | end |
|
| |
|
| return p | | return p |