Geometric Construction of the Diatonic Scale: Music Meets Mathematics

Geometric Construction of the Diatonic Scale: Music Meets Mathematics
Loading the math board and drawing, please wait…
2023-03-31 20:11
In collections Música y Matemáticas
① This GeoGebra example demonstrates how to construct the natural major diatonic scale through geometric methods, translating musical interval ratios into visual geometric figures. ② Core mathematical concepts include fractions and ratios (e.g., perfect fifth 3:2, perfect fourth 4:3), sequences and series (geometric progression of frequencies), symmetry and rotation (distribution of intervals on a circle), and linear programming ideas (allocating intervals within a finite range). ③ Construction highlights: from the summary, commands used include Vector, OrthogonalLine, Point, Intersect, Segment, Line, Midpoint, Sequence, Text, and Translate; objects include auxiliary lines t1, t2, t3, note-labeled points D_7 through J_7, and text elements, progressively generating each scale degree via geometric proportion. ④ Suitable for upper secondary to early university students, for interdisciplinary projects (music + math), for mathematics teachers demonstrating ratios, sequences, and geometric construction, or for music theory courses to intuitively grasp the mathematical essence of intervals.

GeoGebra Commands & Parameters

  1. Vector(D_7 + C_7 - D_7, E_8) → w
  2. Vector(G_7, H_8) → w'
  3. OrthogonalLine(B, xAxis) → f
  4. OrthogonalLine(B, f) → g
  5. Point(g) → C
  6. OrthogonalLine(C, g) → h
  7. OrthogonalLine(B1, f) → i
  8. Intersect(h, i) → D
  9. Point(f) → E
  10. Segment(B, E) → j
  11. Point(h) → F
  12. Line(F, g) → k
  13. Midpoint(B, C) → G
  14. OrthogonalLine(G, g) → l
  15. OrthogonalLine(E, l) → m
  16. Intersect(l, m) → H
  17. Intersect(l, k) → I
  18. Segment(I, H) → n
  19. Point(f) → L
  20. OrthogonalLine(L, h) → p
  21. Intersect(h, p) → M
  22. Segment(L, M) → q
  23. OrthogonalLine(N, h) → r
  24. OrthogonalLine(P, m) → s
  25. Intersect(m, s) → R
  26. Segment(P, R) → t
  27. OrthogonalLine(S, h) → a
  28. Intersect(f, a) → T
  29. Point(f) → W
  30. OrthogonalLine(W, h) → b
  31. Intersect(s, b) → Z
  32. Intersect(l, b) → C_1
  33. OrthogonalLine(E_1, h) → c
  34. Intersect(c, h) → F_1
  35. Point(h) → I_1
  36. OrthogonalLine(I_1, h) → d
  37. Line(J_1, h) → e
  38. Intersect(e, m) → M_1
  39. Segment(J_1, M_1) → f_1
  40. OrthogonalLine(N_1, h) → g_1
  41. Intersect(g_1, f) → O_1
  42. Intersect(g_1, l) → P_1
  43. Intersect(e, p) → Q_1
  44. Intersect(s, p) → R_1
  45. Intersect(l, p) → S_1
  46. Point(h) → T_1
  47. OrthogonalLine(T_1, h) → h_1
  48. OrthogonalLine(W_1, h) → j_1
  49. Segment(Z_1, R) → i_1
  50. Segment(B_2, H) → k_1
  51. Sequence(Polygon[(x(W_1) - (abs(Z_1 - W_1) * (2 / 3)^(k)), y(W_1) - ((k * an) + (k * bn))), (x(W_1), y(W_1) - ((k * an) + (k * bn))), (x(W_1), y(W_1) - ((k * an) + an + (k * bn))), (x(W_1) - (abs(Z_1 - W_1) * (2 / 3)^(k)), y(W_1) - ((k * an) + an + (k * bn)))], k, 1, 11) → l13
  52. Sequence(Polygon[(x(C_2) - (abs(B_2 - C_2) * (1 / 2)^(k)), y(C_2) - ((k * an) + (k * bn))), (x(C_2), y(C_2) - ((k * an) + (k * bn))), (x(C_2), y(C_2) - ((k * an) + an + (k * bn))), (x(C_2) - (abs(B_2 - C_2) * (1 / 2)^(k)), y(C_2) - ((k * an) + an + (k * bn)))], k, 1, 6) → l15
  53. Sequence((x(C_2) - (abs(B_2 - C_2) * (1 / 2)^(k)), y(C_2) - ((k * an) + (k * bn))), k, 1, 6) → l14
  54. Sequence((x(C_2) - (abs(B_2 - C_2) * (1 / 2)^(k)), y(L)), k, 1, 6) → l16
  55. Sequence(Segment[l14(k), l16(k)], k, 1, 5) → l17
  56. Segment(F_2, l16(6)) → l_1
  57. Segment(E_2, F_2) → m_1
  58. Segment(G_2, I_2) → n_1
  59. Segment(J_2, H) → p_1
  60. Segment(M_2, R) → q_1
  61. Segment(O_2, M_1) → r_1
  62. Segment(P_2, R_2) → s_1
  63. Segment(T_2, U_2) → t_1
  64. Segment(W_2, Z_2) → a_1
  65. Segment(B_3, C_3) → b_1
  66. Midpoint(W_2, V_2) → D_3
  67. Segment(D_3 + (0, bn), D_3 - (0, an + bn)) → c_1
  68. Text(texto45, Pos1 + N_3 - L_3) → texto46
  69. Text(texto45, Pos1 + P_3 - L_3) → texto47
  70. Text(texto45, Pos1 + Q_3 - L_3) → texto48
  71. Text(texto45, Pos1 + R_3 - L_3) → texto49
  72. Midpoint(H_4, N_2) → L_4
  73. Midpoint(L_4, N_2) → M_4
  74. Midpoint(M_4, N_2) → N_4
  75. Segment(O_4, R_4) → g_2
  76. Segment(P_4, S_4) → h_2
  77. Segment(Q_4, T_4) → i_2
  78. Midpoint(W_3, E_4) → U_4
  79. Midpoint(U_4, E_4) → V_4
  80. Midpoint(V_4, E_4) → W_4
  81. Midpoint(V_3, D_4) → F_5
  82. Midpoint(F_5, D_4) → G_5
  83. Midpoint(G_5, D_4) → H_5
  84. Midpoint(T_3, C_4) → O_5
  85. Midpoint(O_5, C_4) → P_5
  86. Midpoint(P_5, C_4) → Q_5
  87. Segment(H_4, (x(H_4), y(E))) → f_2
  88. Midpoint(Z_3, F_4) → Z_5
  89. Midpoint(Z_5, F_4) → A_6
  90. Midpoint(A_6, F_4) → B_6
  91. Midpoint(U_3, K_2) → I_6
  92. Midpoint(I_6, K_2) → J_6
  93. Midpoint(J_6, K_2) → K_6
  94. Midpoint(A_4, G_4) → R_6
  95. Midpoint(R_6, G_4) → S_6
  96. Midpoint(S_6, G_4) → T_6
  97. Translate(l57, C_7 - D_7) → l57'
  98. Translate(l55, C_7 - D_7) → l55'
  99. Translate(l56, C_7 - D_7) → l56'
  100. Translate(l58, C_7 - D_7) → l58'
  101. Translate(l55, T_7 - D_7) → l55'_{1}
  102. Translate(l56, T_7 - D_7) → l56'_{1}
  103. Translate(l58, T_7 - D_7) → l58'_{1}
  104. Translate(l57, T_7 - D_7) → l57'_{1}
  105. Translate(l59, Vector[(t1 * v)]) → l59'
  106. Translate(l60, Vector[(t1 * v)]) → l60'
  107. Translate(l59, v) → l59'_{1}
  108. Segment(V_7 + v, U_7 + v) → d_1
  109. Translate(l60, v) → l60'_{1}
  110. Segment(A_8 + v, B_8 + v) → e_1
  111. Translate(l55, T_7 - D_7 + (u, 0)) → l55'_{2}
  112. Translate(l56, T_7 - D_7 + (u, 0)) → l56'_{2}
  113. Translate(l58, T_7 - D_7 + (u, 0)) → l58'_{2}
  114. Translate(l57, T_7 - D_7 + (u, 0)) → l57'_{2}
  115. Translate(l58, T_7 - D_7 + (u, 0)) → l58'_{3}
  116. Translate(l58'_{3}, Vector[(t1 * v)]) → l61
  117. Translate(l58'_{3}, v) → l62
  118. Segment(I_7 - ((u * kk), 0), I_7 - ((u * kk), 0) + K_7 - D_7) → j_2
  119. Segment(G_8, K_7 + G_8 - D_7) → k_2
  120. Translate(l56, T_7 - D_7 + ((2 * u), 0)) → l56'_{3}
  121. Translate(l55, T_7 - D_7 + ((2 * u), 0)) → l55'_{3}
  122. Translate(l58, T_7 - D_7 + ((2 * u), 0)) → l58'_{4}
  123. Translate(l57, T_7 - D_7 + ((2 * u), 0)) → l57'_{3}
  124. Translate({l58(1)}, T_7 - D_7 + ((2 * u), 0)) → l58'_{5}
  125. Translate(l58'_{5}, Vector[(t1 * v)]) → l63
  126. Translate(l58'_{5}, v) → l64
  127. Segment(I_7 - ((u * kk), 0) + (u, 0), I_7 - ((u * kk), 0) + (u, 0) + K_7 - D_7) → l_2
  128. Translate(l55', Vector[(t1 * w)]) → l55''
  129. Translate(l60'_{1}, Vector[(t1 * w)]) → l65
  130. Translate({l62(2)}, Vector[(t1 * w)]) → l66
  131. Translate({l58'(1)}, Vector[(t1 * w)]) → l67
  132. Translate(l56, Vector[(t2 * w')]) → l56'_{4}
  133. Translate(l59'_{1}, Vector[(t2 * w')]) → l69
  134. Translate({l62(1)}, Vector[(t2 * w')]) → l70
  135. Translate(l64, Vector[(t2 * w')]) → l64'
  136. Translate({l58(2)}, Vector[(t2 * w')]) → l71
  137. Translate(l74, C_7 - D_7 + ((3 * u) + (u * kk), 0)) → l74'
  138. Segment(PosFinal + (inc, 0) + (0, 1.65), PosFinal + (inc, 0) - (0, 3.8)) → n_2
  139. Segment(PosFinal + (inc, 0) + ((2 * u) - (u * kk), 1.65), PosFinal + ((2 * u) + inc - (u * kk), 0) - (0, 3.8)) → n_2'

AI Drawing Prompt Reference

Create a geometric construction that visualizes a major musical scale through geometric methods. Start by plotting points representing scale degrees from D to J as the basic framework. Use vector translations and orthogonal lines to progressively construct the geometric ratios of perfect fifths and perfect fourths. Apply midpoints, parallel lines, and intersection points to generate a series of auxiliary lines forming an intricate geometric grid. Add text labels at key positions showing interval ratios like 3:2 and 4:3. Connect relevant points with segments to reveal the symmetrical distribution and mathematical beauty of the scale in geometric space.
The prompt above was compiled from the original drawing commands and is for reference only.