Some fixes

This commit is contained in:
2023-02-19 23:55:56 +02:00
parent 9a4c970b95
commit ffbff359fa

View File

@ -322,7 +322,7 @@ class Sequence(Meta):
if item.has_children:
yield from items.evaluated_values
else:
yield items
yield item
else:
yield from item.evaluate_tree(options)
elif isinstance(item, Cyclic):
@ -366,12 +366,11 @@ class Sequence(Meta):
yield from _resolve_item(item, options)
def _euclidean_items(euclid: Item, options: dict):
"""Repeats items with the same random values"""
"""Loops values from generated euclidean sequence"""
euclid.evaluate(options)
for item in euclid.evaluated_values:
yield from _resolve_item(item, options)
def _update_options(current: Item, options: dict) -> dict:
"""Update options based on current item"""
if isinstance(current, (OctaveChange, DurationChange)):
@ -625,7 +624,7 @@ class Subdivision(Sequence):
has_children: bool = field(default=False, init=False)
def evaluate(self, options):
self.evaluated_values = list(self.evaluate_tree(options))
self.evaluated_values = list(self.evaluate_tree(options.copy()))
self.evaluated_values = list(self.evaluate_subdivisions(options))
return self
@ -637,16 +636,13 @@ class Subdivision(Sequence):
if isinstance(item, Subdivision):
self.has_children = True
yield from item.evaluate_subdivisions(self.local_options)
elif isinstance(item, Sequence):
yield from item.evaluate_tree(self.local_options)
elif isinstance(item, Cyclic):
yield item # Return the cycle
elif isinstance(item, Modification):
self.local_options = self.local_options | item.as_options()
elif isinstance(item, Rest):
yield item.get_updated_item(self.local_options)
elif isinstance(item, (Event, RandomInteger)):
yield Pitch(pitch_class=item.get_value(), kwargs=self.local_options)
elif isinstance(item, Pitch):
item.duration = self.local_options["duration"]
yield item
@dataclass(kw_only=True)