johnameyer / harmony-ts

This library generates four-part chorales in the style of Bach given any number of constraints and enabled features. However, it also can be used as a general music-theory library.
https://johnameyer.github.io/harmony-ts/
Apache License 2.0
3 stars 0 forks source link

Encourage Exploration of Voicings #100

Open johnameyer opened 4 months ago

johnameyer commented 4 months ago

Currently, the harmonizer tends to pick the same starting chord voicing for any progression in a scale - i.e. C Major -> C5 E4 G3 C3

We should encourage the harmonizer to explore at least 2 options off the start or evaluate the initial voicing in context as it is difficult to evaluate the initial voicing alone without context of where we are trying to go.

Likely we cannot force the program to explore at least two voicings at each chord except perhaps as a final wrapper around the lazy iterator

This also should help with #44 (or the sister issue of forcing jumps in interior parts when they get two far from the soprano)