Module:Ups and downs notation: Difference between revisions

CompactStar (talk | contribs)
Created page with "local et = require('Module:ET') local rat = require('Module:Rational') local p = {} -- Returns a nested table of note names -- e.g. for 12edo, intended result would be someth..."
 
CompactStar (talk | contribs)
No edit summary
Line 1: Line 1:
-- WIP
local et = require('Module:ET')
local et = require('Module:ET')
local rat = require('Module:Rational')
local rat = require('Module:Rational')
Line 32: Line 34:
local fourth = ET.approximate(et, rat.new(4, 3))
local fourth = ET.approximate(et, rat.new(4, 3))
local chroma = (fifth * 7) % et.size
local chroma = (fifth * 7) % et.size
table.insert(interval_names[0], "C")
table.insert(interval_names[(fourth * 5) % et.size], "Db")
-- Add major scale notes
interval_names[(fifth * 2) % et.size] = {"D"}
table.insert(note_names[0], "C")
interval_names[(fourth * 3) % et.size] = {"m3"}
table.insert(note_names[(fifth * 2) % et.size], "D")
interval_names[(fifth * 4) % et.size] = {"M3"}
table.insert(note_names[(fifth * 4) % et.size], "E")
interval_names[fourth] = {"P4"}
table.insert(note_names[fourth], "F")
interval_names[fifth] = {"P5"}
table.insert(note_names[fifth], "G")
interval_names[(fourth * 4) % et.size] = {"m6"}
table.insert(note_names[(fifth * 3) % et.size], "A")
interval_names[(fifth * 3) % et.size] = {"M6"}
     table.insert(note_names[(fifth * 5) % et.size], "B")
interval_names[(fourth * 2) % et.size] = {"m7"}
    table.insert(note_names[et.size], "C")
     interval_names[(fifth * 5) % et.size] = {"M7"}
interval_names[et.size] = {"P8"}
i = 0
i = 0
local last_note = 0
local last_major_note = 0
while i < et.size do
while i < et.size do
if note_names[i] == nil then
if #(note_names[i]) == 0 then
local num_sharps = math.floor((i - last_note) / chroma)
local num_sharps = math.floor((i - last_major_note) / chroma)
local num_ups = (i - last_note) % chroma
local num_ups = (i - last_major_note) % chroma
local name = interval_names[last_note]
local name = interval_names[last_major_note]
local j = 0
local j = 0
while j < num_sharps do
while j < num_sharps do
Line 60: Line 60:
name = "^" + name
name = "^" + name
end
end
note_names[i] = {note_names[last_note]}
table.insert(note_names[i], note_names[last_note])
else
else
last_note = i
last_major_note = i
end
end
i = i + 1
i = i + 1
end
end
end
end


return p
return p