Module:JI ratios in ED: Difference between revisions

Ganaram inukshuk (talk | contribs)
mNo edit summary
Ganaram inukshuk (talk | contribs)
Edsteps for the unison and equave will only have the ratios 1/1 and equave p/q
Line 55: Line 55:
result = result .. string.format('| %.3f\n', edstep_in_cents)
result = result .. string.format('| %.3f\n', edstep_in_cents)
-- Add ratios according to harmonic class
for j = 1, #primes do
for j = 1, #primes do
local current_prime = primes[j]
local current_prime = primes[j]
local prime_filtered_ratios = {}
-- The first column filters by prime limit
-- If the edstep is for the unison or equave, override the ratios
-- Successive columns are filered by harmonic class
-- with the unison and equave respectively.
local prime_filtered_ratios = {}
if edstep == 0 then
if j == 1 then
prime_filtered_ratios = { rat.new(1, 1) }
prime_filtered_ratios = jiraf.filter_ratios_by_prime_limit(filtered_ratios, current_prime)
elseif edstep == ed then
prime_filtered_ratios = { rat.copy(equave) }
else
else
prime_filtered_ratios = jiraf.filter_ratios_by_harmonic_class(filtered_ratios, current_prime)
-- The first column filters by prime limit
end
-- Successive columns are filered by harmonic class
if j == 1 then
-- Filter ratios by complement-agnostic tenney height
prime_filtered_ratios = jiraf.filter_ratios_by_prime_limit(filtered_ratios, current_prime)
prime_filtered_ratios = jiraf.filter_ratios_by_complement_agnostic_tenney_height(prime_filtered_ratios, tenney_height, equave)
else
prime_filtered_ratios = jiraf.filter_ratios_by_harmonic_class(filtered_ratios, current_prime)
-- Filter ratios by exact cent value
end
local exact_ratio = jiraf.filter_exact_ratio(prime_filtered_ratios, edstep_in_cents)
if exact_ratio ~= nil then
-- Filter ratios by complement-agnostic tenney height
prime_filtered_ratios = { exact_ratio }
prime_filtered_ratios = jiraf.filter_ratios_by_complement_agnostic_tenney_height(prime_filtered_ratios, tenney_height, equave)
end
end