Module:Diatonic: Difference between revisions

From Xenharmonic Reference
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 54: Line 54:
     degree = "octave"  
     degree = "octave"  
   end
   end
   if(math.fmod(fifthspan,7) == 1) then
   if(fifthspan % 7 == 1) then
     degree = "fifth"
     degree = "fifth"
   end
   end
   if(math.fmod(fifthspan,7) == 2) then
   if(fifthspan % 7 == 2) then
     degree = "second"
     degree = "second"
   end
   end
   if(math.fmod(fifthspan,7) == 3) then
   if(fifthspan % 7 == 3) then
     degree = "sixth"
     degree = "sixth"
   end
   end
   if(math.fmod(fifthspan,7) == 4) then
   if(fifthspan % 7 == 4) then
     degree = "third"
     degree = "third"
   end
   end
   if(math.fmod(fifthspan,7) == 5) then
   if(fifthspan % 7 == 5) then
     degree = "seventh"
     degree = "seventh"
   end
   end
   if(math.fmod(fifthspan,7) == 6) then
   if(fifthspan % 7 == 6) then
     degree = "fourth"
     degree = "fourth"
   end
   end
Line 80: Line 80:
     degree = 8
     degree = 8
   end
   end
   if(math.fmod(fifthspan,7) == 1) then
   if(fifthspan % 7 == 1) then
     degree = 5
     degree = 5
   end
   end
   if(math.fmod(fifthspan,7) == 2) then
   if(fifthspan % 7 == 2) then
     degree = 2
     degree = 2
   end
   end
   if(math.fmod(fifthspan,7) == 3) then
   if(fifthspan % 7 == 3) then
     degree = 6
     degree = 6
   end
   end
   if(math.fmod(fifthspan,7) == 4) then
   if(fifthspan % 7 == 4) then
     degree = 3
     degree = 3
   end
   end
   if(math.fmod(fifthspan,7) == 5) then
   if(fifthspan % 7 == 5) then
     degree = 7
     degree = 7
   end
   end
   if(math.fmod(fifthspan,7) == 6) then
   if(fifthspan % 7 == 6) then
     degree = 4
     degree = 4
   end
   end
Line 101: Line 101:
end
end


function p.enharmonic(fifthspan)
function p.enharmonic(fifthspan,oct)
   if((yesno(oct) and fifthspan == 0) or fifthspan < 0) then
   if((yesno(oct) and fifthspan == 0) or fifthspan < 0) then
     return (fifthspan+12)
     return (fifthspan+12)
Line 108: Line 108:
end
end


function p.tuning5(fifthspan,oct)
  tuningx1 = 0
  deg = p.degreeAsNumber(fifthspan,oct)
  if(deg == 2) then
    tuningx1 = 1
  end
  if(deg == 3) then
    tuningx1 = 2
  end
  if(deg == 4) then
    tuningx1 = 3
  end
  if(deg == 5) then
    tuningx1 = 3
  end
  if(deg == 6) then
    tuningx1 = 4
  end
  if(deg == 7) then
    tuningx1 = 5
  end
  if(deg == 8) then
    tuningx1 = 5
  end
  tuningx1 = tuningx1 + math.floor(fifthspan/7)
  return tuningx1
end


print(p.qualityAsName(4,0) .. p.degreeAsName(4,0))
function p.tuning7(fifthspan,oct)
  tuningx2 = p.degreeAsNumber(fifthspan,oct) - 1
  return tuningx2
end
return p

Latest revision as of 08:54, 16 December 2025

Documentation for this module may be created at Module:Diatonic/doc

local yesno = require("Module:Yesno")
local p = {}


function p.qualityAsName(fifthspan, oct)
  quality = "minor"
  if(fifthspan>0) then
    quality = "major" end
  if(fifthspan<2 and fifthspan>-2) then
    quality = "perfect"
  end
  if(fifthspan>5) then
    quality = "augmented"
end
  if(fifthspan>12) then
    quality = "double augmented" end
  if(fifthspan>19) then
    quality = "triple augmented" end
  if(fifthspan<-5) then
    quality = "diminished" end
  if(fifthspan<-12) then
    quality = "double diminished" end
  if(fifthspan<-19) then
    quality = "triple diminished" end
return quality
end

function p.qualityAsLetter(fifthspan, oct)
  quality = "m"
  if(fifthspan>0) then
    quality = "M" end
  if(fifthspan<2 and fifthspan>-2) then
    quality = "P"
  end
  if(fifthspan>5) then
    quality = "A"
end
  if(fifthspan>12) then
    quality = "AA" end
  if(fifthspan>19) then
    quality = "3A" end
  if(fifthspan<-5) then
    quality = "d" end
  if(fifthspan<-12) then
    quality = "dd" end
  if(fifthspan<-19) then
    quality = "3d" end
return quality
end

function p.degreeAsName(fifthspan,oct)
  degree = "unison"
  if((yesno(oct) and fifthspan == 0) or fifthspan < 0) then
    degree = "octave" 
  end
  if(fifthspan % 7 == 1) then
    degree = "fifth"
  end
  if(fifthspan % 7 == 2) then
    degree = "second"
  end
  if(fifthspan % 7 == 3) then
    degree = "sixth"
  end
  if(fifthspan % 7 == 4) then
    degree = "third"
  end
  if(fifthspan % 7 == 5) then
    degree = "seventh"
  end
  if(fifthspan % 7 == 6) then
    degree = "fourth"
  end
  return degree
end

function p.degreeAsNumber(fifthspan,oct)
  degree = 1
  if((yesno(oct) and fifthspan == 0) or fifthspan < 0) then
    degree = 8
  end
  if(fifthspan % 7 == 1) then
    degree = 5
  end
  if(fifthspan % 7 == 2) then
    degree = 2
  end
  if(fifthspan % 7 == 3) then
    degree = 6
  end
  if(fifthspan % 7 == 4) then
    degree = 3
  end
  if(fifthspan % 7 == 5) then
    degree = 7
  end
  if(fifthspan % 7 == 6) then
    degree = 4
  end
  return degree
end

function p.enharmonic(fifthspan,oct)
  if((yesno(oct) and fifthspan == 0) or fifthspan < 0) then
    return (fifthspan+12)
  end
  return(fifthspan-12)
end

function p.tuning5(fifthspan,oct)
  tuningx1 = 0
  deg = p.degreeAsNumber(fifthspan,oct)
  if(deg == 2) then
    tuningx1 = 1
  end
  if(deg == 3) then
    tuningx1 = 2
  end
  if(deg == 4) then
    tuningx1 = 3
  end
  if(deg == 5) then
    tuningx1 = 3
  end
  if(deg == 6) then
    tuningx1 = 4
  end
  if(deg == 7) then
    tuningx1 = 5
  end
  if(deg == 8) then
    tuningx1 = 5
  end
  tuningx1 = tuningx1 + math.floor(fifthspan/7)
  return tuningx1
end

function p.tuning7(fifthspan,oct)
  tuningx2 = p.degreeAsNumber(fifthspan,oct) - 1
  return tuningx2
end
return p