Skip to content

Commit 64acfe7

Browse files
allow no initial clefs in config
1 parent d301faf commit 64acfe7

3 files changed

Lines changed: 48 additions & 8 deletions

File tree

build/my_composition.pdf

0 Bytes
Binary file not shown.

src/score_maker/add_initial_clefs.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ def add_initial_clefs(instrument_properties: list[namedtuple]) -> None:
2222
continue
2323
elif isinstance(instrument.initial_clef, list):
2424
for staff, clef in zip(instrument.container, instrument.initial_clef):
25+
if isinstance(clef, str):
26+
abjad.attach(
27+
abjad.Clef(clef),
28+
abjad.select(staff).leaf(0),
29+
)
30+
else:
31+
if isinstance(instrument.initial_clef, str):
2532
abjad.attach(
26-
abjad.Clef(clef),
27-
abjad.select(staff).leaf(0),
33+
abjad.Clef(instrument.initial_clef),
34+
abjad.select(instrument.container).leaf(0),
2835
)
29-
else:
30-
abjad.attach(
31-
abjad.Clef(instrument.initial_clef),
32-
abjad.select(instrument.container).leaf(0),
33-
)

src/score_maker/create_staves.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,45 @@
11
from collections import namedtuple
2+
from typing import Any
23

34
import abjad
45

56
from ..utils import load_config
67

78

9+
def _nullify_list(property: list[Any], default_value: Any = None) -> list[Any]:
10+
r"""
11+
Creates list with the same structure as an input list. Used to take the staff_names property
12+
from config.toml and create a similar structure with default_values for missing properties.
13+
14+
Args:
15+
property (list[Any]): Reference list to be nullified.
16+
default_value (Any): Default value in the output list, defaults to ``None``.
17+
18+
Returns:
19+
list[Any]: Output list with identical structure to input ``property`` but with nullified
20+
values.
21+
22+
Example:
23+
>>> staff_names = [
24+
... "Flute",
25+
... ["Piano_Upper", "Piano_Middle", "Piano_Lower"],
26+
... ["Harp_Upper", "Harp_Lower"],
27+
... "Cello",
28+
... ]
29+
>>> _nullify_list(staff_names)
30+
[
31+
None,
32+
[None, None, None],
33+
[None, None],
34+
None,
35+
]
36+
"""
37+
output_list = []
38+
for value in property:
39+
output_list.append(default_value if not isinstance(value, list) else _nullify_list(value))
40+
return output_list
41+
42+
843
def create_staves() -> tuple[list[abjad.Staff], list[namedtuple]]:
944
r"""
1045
Creates list of staves and list of instrument properties (staves, instrument names, clefs,
@@ -25,7 +60,10 @@ def create_staves() -> tuple[list[abjad.Staff], list[namedtuple]]:
2560
CONTEXTS = config_dict["instrumentation"]["contexts"]
2661
INSTRUMENT_NAMES = config_dict["instrumentation"]["instrument_names"]
2762
SHORT_INSTRUMENT_NAMES = config_dict["instrumentation"]["short_instrument_names"]
28-
INITIAL_CLEFS = config_dict["instrumentation"]["initial_clefs"]
63+
try:
64+
INITIAL_CLEFS = config_dict["instrumentation"]["initial_clefs"]
65+
except KeyError:
66+
INITIAL_CLEFS = _nullify_list(STAFF_NAMES, None)
2967

3068
# Defining named tuple
3169
InstrumentProperties = namedtuple(

0 commit comments

Comments
 (0)