True voice-leading (guaranteed minimal motion) requires explicit note lists; Strudel's voicing() is only a heuristic
Voice-leading means moving each voice to the next chord by the smallest interval — common tones held, others stepping — which is why a good pad progression feels like one evolving sound. The source flags a rig-honesty gotcha: Strudel’s .voicing().dict() is a heuristic that ‘picks a reasonable voicing but does not guarantee minimal motion,’ so voice-leading is marked approximate in Strudel and hand-edited-MIDI-only in Glicol. The misconception is believing .voicing() solves voice-leading; it helps but is not equivalent. Where minimal motion actually matters, the composer must author explicit note lists that spell exactly which voice moves where.
Examples
.voicing() may leap between chords. Explicit minimal motion for Am7→Fmaj7: note('a3 c4 e4 g4') → note('a3 c4 f4 a4') — only two voices move, by one step each.
Assessment
What is the difference between Strudel’s .voicing() and true voice-leading? When does the difference matter, and what is the workaround for guaranteed minimal motion?