Example #1
0
 def _handle_collect(self):
     print('Collecting segments:')
     collected_names = []
     for segment_path in self._list_segment_subpackages(
         self._score_package_path):
         source_path = segment_path.joinpath('illustration.ly')
         if not source_path.is_file():
             continue
         collected_names.append(segment_path.name)
         target_path = self._build_path.joinpath(
             'segments',
             stringtools.to_dash_case(segment_path.name) + '.ily'
             )
         contents = self._process_illustration_contents(source_path)
         with open(str(target_path), 'w') as file_pointer:
             file_pointer.write(contents)
         message = '    {!s} --> {!s}'.format(
             source_path.relative_to(self._score_package_path),
             target_path.relative_to(self._score_package_path),
             )
         print(message)
     staged_names = self._read_segments_list_json(self._score_package_path)
     segments_ily_path = self._build_path.joinpath('segments.ily')
     include_template = '    \\include "..{sep}segments{sep}{name}.ily"\n'
     with open(str(segments_ily_path), 'w') as file_pointer:
         file_pointer.write('{\n')
         for name in staged_names:
             if name not in collected_names:
                 continue
             name = stringtools.to_dash_case(name)
             file_pointer.write(include_template.format(
                 name=name,
                 sep=os.path.sep))
         file_pointer.write('}\n')
 def _handle_collect(self):
     print('Collecting segments:')
     collected_names = []
     for segment_path in self._list_segment_subpackages(
             self._score_package_path):
         source_path = segment_path.joinpath('illustration.ly')
         if not source_path.is_file():
             continue
         collected_names.append(segment_path.name)
         target_path = self._build_path.joinpath(
             'segments',
             stringtools.to_dash_case(segment_path.name) + '.ily')
         contents = self._process_illustration_contents(source_path)
         with open(str(target_path), 'w') as file_pointer:
             file_pointer.write(contents)
         message = '    {!s} --> {!s}'.format(
             source_path.relative_to(self._score_package_path),
             target_path.relative_to(self._score_package_path),
         )
         print(message)
     staged_names = self._read_segments_list_json(self._score_package_path)
     segments_ily_path = self._build_path.joinpath('segments.ily')
     include_template = '    \\include "..{sep}segments{sep}{name}.ily"\n'
     with open(str(segments_ily_path), 'w') as file_pointer:
         file_pointer.write('{\n')
         for name in staged_names:
             if name not in collected_names:
                 continue
             name = stringtools.to_dash_case(name)
             file_pointer.write(
                 include_template.format(name=name, sep=os.path.sep))
         file_pointer.write('}\n')
Example #3
0
 def make_single_wind_performer(
     abbreviation=None,
     clef=None,
     instrument=None,
     score_template=None,
     ):
     performer_group = ScoreTemplateManager.make_performer_group(
         instrument=instrument,
         label=stringtools.to_dash_case(instrument.instrument_name),
         )
     name = instrument.instrument_name.title()
     context_name = ScoreTemplateManager.make_staff_name(name)
     voice = scoretools.Voice(
         name='{} Voice'.format(name),
         )
     staff = scoretools.Staff(
         [voice],
         context_name=context_name,
         name='{} Staff'.format(name),
         )
     performer_group.append(staff)
     attach(clef, voice)
     abbreviation = abbreviation or \
         stringtools.to_snake_case(name)
     score_template._context_name_abbreviations[abbreviation] = voice.name
     return performer_group
Example #4
0
 def attach_tag(label, context):
     label = stringtools.to_dash_case(label)
     tag = indicatortools.LilyPondCommand(
         name="tag #'{}".format(label),
         format_slot='before',
         )
     attach(tag, context)
 def _handle_create(
     self,
     target_name,
     force,
     paper_size=None,
     orientation=None,
 ):
     from abjad import abjad_configuration
     if target_name is True:
         name = paper_size.lower().replace(' ', '-')
         name = '{}-{}'.format(name, orientation)
     else:
         name = stringtools.to_dash_case(target_name)
     dimensions = self.paper_sizes[paper_size]
     message = 'Creating build target {!r} ({}{} x {}{})'.format(
         name,
         dimensions[0][0],
         dimensions[0][1],
         dimensions[1][0],
         dimensions[1][1],
     )
     print(message)
     target_path = self._name_to_score_subdirectory_path(
         name, 'build', self._score_package_path)
     if target_path.exists() and not force:
         print('    Path exists: {!s}'.format(
             target_path.relative_to(self._score_package_path.parent)))
         sys.exit(1)
     metadata = self._read_score_metadata_json(self._score_package_path)
     metadata['score_package_name'] = self._score_package_path.name
     if orientation == 'portrait':
         rotation = 0
         width, height = self.paper_sizes[paper_size]
     else:
         rotation = -90
         height, width = self.paper_sizes[paper_size]
     metadata['rotation'] = rotation
     metadata['orientation'] = orientation
     metadata['paper_size'] = paper_size
     metadata['height'] = height[0]
     metadata['width'] = width[0]
     metadata['unit'] = height[1]
     metadata['global_staff_size'] = 12
     metadata['uppercase_composer_name'] = metadata['composer_name'].upper()
     metadata['uppercase_title'] = metadata['title'].upper()
     metadata['lilypond_version'] = \
         abjad_configuration.get_lilypond_version_string()
     source_name = 'example_build_target'
     source_path = self._get_boilerplate_path().joinpath(source_name)
     suffixes = ('.py', '.tex', '.ly', '.ily')
     for path in self._copy_tree(source_path, target_path):
         if path.is_file() and path.suffix in suffixes:
             self._template_file(path, **metadata)
     print('    Created {!s}'.format(
         target_path.relative_to(self._score_repository_path)))
Example #6
0
 def _handle_create(
     self,
     target_name,
     force,
     paper_size=None,
     orientation=None,
     ):
     from abjad import abjad_configuration
     if target_name is True:
         name = paper_size.lower().replace(' ', '-')
         name = '{}-{}'.format(name, orientation)
     else:
         name = stringtools.to_dash_case(target_name)
     dimensions = self.paper_sizes[paper_size]
     message = 'Creating build target {!r} ({}{} x {}{})'.format(
         name,
         dimensions[0][0], dimensions[0][1],
         dimensions[1][0], dimensions[1][1],
         )
     print(message)
     target_path = self._name_to_score_subdirectory_path(
         name, 'build', self._score_package_path)
     if target_path.exists() and not force:
         print('    Path exists: {!s}'.format(
             target_path.relative_to(self._score_package_path.parent)))
         sys.exit(1)
     metadata = self._read_score_metadata_json(self._score_package_path)
     metadata['score_package_name'] = self._score_package_path.name
     if orientation == 'portrait':
         rotation = 0
         width, height = self.paper_sizes[paper_size]
     else:
         rotation = -90
         height, width = self.paper_sizes[paper_size]
     metadata['rotation'] = rotation
     metadata['orientation'] = orientation
     metadata['paper_size'] = paper_size
     metadata['height'] = height[0]
     metadata['width'] = width[0]
     metadata['unit'] = height[1]
     metadata['global_staff_size'] = 12
     metadata['uppercase_composer_name'] = metadata['composer_name'].upper()
     metadata['uppercase_title'] = metadata['title'].upper()
     metadata['lilypond_version'] = \
         abjad_configuration.get_lilypond_version_string()
     source_name = 'example_build_target'
     source_path = self._get_boilerplate_path().joinpath(source_name)
     suffixes = ('.py', '.tex', '.ly', '.ily')
     for path in self._copy_tree(source_path, target_path):
         if path.is_file() and path.suffix in suffixes:
             self._template_file(path, **metadata)
     print('    Created {!s}'.format(target_path.relative_to(
         self._score_repository_path)))
Example #7
0
 def make_single_piano_performer(
     instrument=None,
     score_template=None,
     ):
     performer_group = ScoreTemplateManager.make_performer_group(
         context_name='PianoStaff',
         instrument=instrument,
         label=stringtools.to_dash_case(instrument.instrument_name),
         )
     name = instrument.instrument_name.title()
     upper_voice = scoretools.Voice(
         name='{} Upper Voice'.format(name),
         )
     upper_staff = scoretools.Staff(
         [upper_voice],
         context_name='PianoUpperStaff',
         name='{} Upper Staff'.format(name),
         )
     dynamics = scoretools.Voice(
         context_name='Dynamics',
         name='{} Dynamics'.format(name),
         )
     lower_voice = scoretools.Voice(
         name='{} Lower Voice'.format(name),
         )
     lower_staff = scoretools.Staff(
         [lower_voice],
         context_name='PianoLowerStaff',
         name='{} Lower Staff'.format(name),
         )
     pedals = scoretools.Voice(
         context_name='Dynamics',
         name='{} Pedals'.format(name),
         )
     performer_group.extend((
         upper_staff,
         dynamics,
         lower_staff,
         pedals,
         ))
     attach(indicatortools.Clef('treble'), upper_voice)
     attach(indicatortools.Clef('bass'), lower_voice)
     score_template._context_name_abbreviations.update(
         piano_dynamics=dynamics.name,
         piano_lh=lower_voice.name,
         piano_pedals=pedals.name,
         piano_rh=upper_voice.name,
         )
     return performer_group
Example #8
0
 def dash_case_name(self):
     return stringtools.to_dash_case(self.name)
Example #9
0
 def make_single_string_performer(
     abbreviation=None,
     clef=None,
     instrument=None,
     score_template=None,
     split=True,
     ):
     performer_group = ScoreTemplateManager.make_performer_group(
         context_name='StringPerformerGroup',
         instrument=instrument,
         label=stringtools.to_dash_case(instrument.instrument_name),
         )
     name = instrument.instrument_name.title()
     abbreviation = abbreviation or \
         stringtools.to_snake_case(name)
     if split:
         right_hand_voice = scoretools.Voice(
             name='{} Bowing Voice'.format(name),
             )
         right_hand_staff = scoretools.Staff(
             [right_hand_voice],
             context_name='BowingStaff',
             name='{} Bowing Staff'.format(name),
             )
         left_hand_voice = scoretools.Voice(
             name='{} Fingering Voice'.format(name),
             )
         left_hand_staff = scoretools.Staff(
             [left_hand_voice],
             context_name='FingeringStaff',
             name='{} Fingering Staff'.format(name),
             )
         performer_group.append(right_hand_staff)
         performer_group.append(left_hand_staff)
         attach(clef, left_hand_staff)
         attach(indicatortools.Clef('percussion'), right_hand_staff)
         right_hand_abbreviation = '{}_rh'.format(abbreviation)
         left_hand_abbreviation = '{}_lh'.format(abbreviation)
         score_template._context_name_abbreviations.update({
             abbreviation: performer_group.name,
             right_hand_abbreviation: right_hand_voice.name,
             left_hand_abbreviation: left_hand_voice.name,
             })
         score_template._composite_context_pairs[abbreviation] = (
             right_hand_abbreviation,
             left_hand_abbreviation,
             )
     else:
         voice = scoretools.Voice(
             name='{} Voice'.format(name),
             )
         staff = scoretools.Staff(
             [voice],
             context_name='StringStaff',
             name='{} Staff'.format(name),
             )
         performer_group.append(staff)
         attach(clef, voice)
         score_template._context_name_abbreviations[abbreviation] = \
             voice.name
     return performer_group
Example #10
0
 def dash_case_feature(self):
     return stringtools.to_dash_case(self.feature)