「モジュール:MOS」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 270行目: | 270行目: | ||
end | end | ||
return matrices | return matrices | ||
end | |||
-- Given an input mos, produce its modal union. | |||
-- This is a listing of every interval's large and small sizes. | |||
function p.modal_union(input_mos) | |||
local brightest_mode = p.brightest_mode(input_mos) | |||
local darkest_mode = p.darkest_mode (input_mos) | |||
local interval_count = p.equave_step_count(input_mos) + 1 | |||
local modal_union = {} | |||
for i = 1, interval_count do | |||
local bright_step_seq = string.sub(brightest_mode, 1, i-1) | |||
local dark_step_seq = string.sub(darkest_mode , 1, i-1) | |||
local bright_interval = p.interval_from_step_sequence(bright_step_seq) | |||
local dark_interval = p.interval_from_step_sequence(dark_step_seq ) | |||
if p.interval_eq(bright_interval, dark_interval) then | |||
table.insert(modal_union, bright_interval) | |||
else | |||
table.insert(modal_union, dark_interval ) | |||
table.insert(modal_union, bright_interval) | |||
end | |||
end | |||
return modal_union | |||
end | end | ||