pull out shiftLeft() from scaleNote()
notes are not scaled/shifted unless...

...boundary conditions are crossed

1,2,3->1 : changing from any case (?) to the smallest case (1),
scaleNote & shiftLeft

1->2,3 : changing from the smallest case (1) to NOT the smalles
case(2,3), scaleNote
1,3->2 : changing from NOT the middle case (1,3) to the middle case (2),
shiftLeft(2)
1,2->3 : changing from NOT the largest case (1,2) to the largest case
(3), shiftLeft(3)