@@ -17,7 +17,7 @@ def chord(source):
|
||||
prior = generator.accompaniment.carried_chords(effective)[-1]
|
||||
return generator.accompaniment.active_chord(effective[-1], generator.model.fraction(effective[-1]['duration']), prior)
|
||||
|
||||
def append(source, output, part, *, sounding=False, center=55, composition=None):
|
||||
def append(source, output, part, *, sounding=False, center=55, composition=None, incoming=None):
|
||||
composition = composition or generator.vocabulary.current()
|
||||
if not source or not output:
|
||||
return
|
||||
@@ -41,7 +41,13 @@ def append(source, output, part, *, sounding=False, center=55, composition=None)
|
||||
if part == 'acoustic':
|
||||
bass = next((recent[s] for s in (5, 6) if s in recent), None)
|
||||
previous = generator.acoustic_voicing.Voicing(bass, *(recent[s] for s in (4, 3, 2))) if bass and all(s in recent for s in (4, 3, 2)) else ()
|
||||
grip = min(options, key=lambda v: (generator.comping.local_cost(part, generator.comping.semantic_key(harmony), v, center, composition=composition).moved(generator.comping.movement(part, previous, v)), v))
|
||||
if incoming is not None:
|
||||
previous, hand = incoming
|
||||
else:
|
||||
hand = None
|
||||
costs = {v: generator.comping.local_cost(part, generator.comping.semantic_key(harmony), v, center, composition=composition) for v in options}
|
||||
path, _, _ = generator.comping.select_grips((options,), (costs,), part, 'ending-position', left=previous, left_hand=hand)
|
||||
grip = path[0]
|
||||
length = generator.model.fraction(model['duration'])
|
||||
previous = None
|
||||
for index in range(generator.arrange.ending_plan.BARS):
|
||||
|
||||
Reference in New Issue
Block a user