Note
Go to the end to download the full example code.
Root analysis (after Parncutt)#
This example demonstrates how we can analyze the root of a chord using the parncutt module.
from amads.harmony.root_finding.parncutt import ParncuttRootAnalysis
c_major_triad = ParncuttRootAnalysis([60, 64, 67])
print(f"Root: {c_major_triad.root}")
print(f"Root ambiguity: {c_major_triad.root_ambiguity}")
fig = c_major_triad.plot()
![Root strengths for chord [0, 4, 7]](../_images/sphx_glr_plot_parncutt_root_analysis_001.png)
Root: 0
Root ambiguity: 1.8708286933869707
f_minor_triad = ParncuttRootAnalysis([60, 65, 67])
print(f"Root: {f_minor_triad.root}")
print(f"Root ambiguity: {f_minor_triad.root_ambiguity}")
fig = f_minor_triad.plot()
![Root strengths for chord [0, 5, 7]](../_images/sphx_glr_plot_parncutt_root_analysis_002.png)
Root: 5
Root ambiguity: 1.984313483298443
d_diminished_triad = ParncuttRootAnalysis([62, 65, 68])
print(f"Root: {d_diminished_triad.root}")
print(f"Root ambiguity: {d_diminished_triad.root_ambiguity}")
fig = d_diminished_triad.plot()
![Root strengths for chord [2, 5, 8]](../_images/sphx_glr_plot_parncutt_root_analysis_003.png)
Root: 2
Root ambiguity: 2.5099800796022267
Total running time of the script: (0 minutes 0.505 seconds)