From c8c590d7ed5211329fd0f1944c6572a5e58dfa90 Mon Sep 17 00:00:00 2001 From: Miika Alonen Date: Fri, 10 Mar 2023 20:11:38 +0200 Subject: [PATCH] Refactor multiple samples as SampleList --- ziffers/classes/items.py | 5 +++++ ziffers/classes/sequences.py | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) 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):