Refactor multiple samples as SampleList

This commit is contained in:
2023-03-10 20:11:38 +02:00
parent bd2a1587d7
commit c8c590d7ed
2 changed files with 13 additions and 1 deletions

View File

@ -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):

View File

@ -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):