diff --git a/ziffers/classes/items.py b/ziffers/classes/items.py index 46a24d2..01f1266 100644 --- a/ziffers/classes/items.py +++ b/ziffers/classes/items.py @@ -500,6 +500,11 @@ class Sample(Event): name: str +@dataclass(kw_only=True) +class SampleList(Item): + """Class for using multiple samples""" + + values: list @dataclass(kw_only=True) class VariableList(Item): diff --git a/ziffers/classes/sequences.py b/ziffers/classes/sequences.py index 67595cc..1f8f1ae 100644 --- a/ziffers/classes/sequences.py +++ b/ziffers/classes/sequences.py @@ -31,6 +31,7 @@ from .items import ( Modification, Whitespace, Sample, + SampleList ) @@ -78,10 +79,12 @@ def resolve_item(item: Meta, options: dict): yield from resolve_item(variable, options) elif isinstance(item, VariableList): seqlist = [] + sample_list = True for var in item.values: if var.name in options: opt_item = options[var.name] if isinstance(opt_item, LambdaType): + sample_list = False seqlist.append( Function( run=opt_item, @@ -100,9 +103,13 @@ def resolve_item(item: Meta, options: dict): ) ) elif isinstance(opt_item, Sequence): + sample_list = False seqlist.append(opt_item) if len(seqlist) > 0: - yield PolyphonicSequence(values=seqlist) + if sample_list: + yield SampleList(values=seqlist) + else: + yield PolyphonicSequence(values=seqlist) elif isinstance(item, Range): yield from item.evaluate(options) elif isinstance(item, Cyclic):