Posted to tcl by jima at Fri Apr 02 20:42:33 GMT 2021view pretty

INDEX create NOTE {
  do {dos reb} re {res mib} mi fa {fas solb} sol {sols lab} la {las sib} si
}

TBL0 create SCALE {.interval} {
    major {0 2 2 1 2 2 2}
    harmonic_major {0 2 2 1 2 1 3}
    natural_minor {0 2 1 2 2 1 2}
    melodic_minor {0 2 1 2 2 2 2}
    harmonic_minor {0 2 1 2 2 1 3}
    penta_minor {0 3 2 2 3}
}

TBL0 create CLAW {.degree} {
    triad {0 2 4}
}

set a [+ : {SV 5} {*}[+ : / {*}[SCALE : D.interval {*}[
    SCALE : I major natural_minor penta_minor
]]]]
set b [| : "SV [NOTE . .le]" {*}$a]
set t [CLAW : D.degree [CLAW . I triad]]
set c [Select : "C_KL $t" {*}$b]
set d [Select : "C_KL [+ : {SV 4} {*}$t]" {*}$b]
puts [NOTE :1 D {*}$c]
puts [NOTE :1 D {*}$d]

----
{fa la do} {fa sols do} {fa las res}
{do mi sol} {do res sol} {res sols do}