https://strudel.cc/understand/voicings/

  • define chords by relation to roots
// 48=c3 and 53 = f3
note("<[0,3,7] [0,4,7]>".add("<48 53>")).room(.5)
 
// house of the rising sun:
note(`<
[0,3,7] [0,4,7] [0,4,7] [0,4,7]
[0,3,7] [0,4,7] [0,3,7] [0,4,7]
>`.add(`<
a c d f
a e a e
>`)).room(.5)
 
// better chord voicing:
note(`<
[0,3,7] [7,12,16] [0,7,16] [4,7,12]
[0,3,7] [4,7,12] [0,3,7] [4,7,12]
>`.add(`<
a c d f
a e a e
>`)).room(.5)
 
// pick notation
"<Am C D F Am E Am E>"
.pick({
  Am: "57,60,64",
  C: "55,60,64",
  D: "50,57,66",
  F: "57,60,65",
  E: "56,59,64",
})
.note().room(.5)
 
// automate voicing generation, which minimizes jumps
chord("<Am C D F Am E Am E>").voicing().room(.5)
 
// customize voicing functions - voicing() picks closest one to anchor
addVoicings('house', {
'': ['7 12 16', '0 7 16', '4 7 12'],
'm': ['0 3 7']
})
chord("<Am C D F Am E Am E>")
.dict('house').anchor(66)
.voicing().room(.5)
 

Common triads:

shapelabel
0,4,7major
0,3,7minor
0,3,6diminished
0,4,8augmented

see: chord voicing