def update(self): sequences = split_array(self.sequence, 8) self.setFixedSize( get_widget_size(self._signature, len(split_array(sequences, 4)))) self._igmeasures = [ IGMeasure(None, s, self._signature) for s in sequences ] self._igmeasures[-1].end = True rects = set_array_lenght_multiple(extract_measures_rects( self.rect(), self._signature), len(self._igmeasures), default=None) for rect, igmeasure in zip(rects, self._igmeasures): igmeasure.set_rect(rect) rects = extract_rects_keyspaces(self.rect()) self._igkeyspaces = [IGKeySpace(rect) for rect in rects] rects = extract_signature_rects(self.rect(), self._signature) self._igsignatures = [ IGSignature(rect, self._signature) for rect in rects ] self.repaint()
def __init__(self, rect, sequence, signature): self.rect = rect self.end = False self.staff_lines = get_standard_staff_lines(rect) if rect else None self.separator = get_measure_separator(rect, self.end) if rect else None self.sequence = sequence alterations = split_array( get_alterations(sequence, signature.tonality), 4) sequences = split_array(sequence, 4) rects = extract_quarters_rects(rect) if rect else [None] * 2 self.igquarters = [ IGQuarter(r, s, a, signature.display_scale()) for r, s, a in zip(rects, sequences, alterations) ]
def set_chordgrid(self, chordgrid): chordgrids = split_array(chordgrid, 32) set_array_lenght_multiple(chordgrids[-1], 32) staff_rects = extract_staffs_rects(self.rect, len(chordgrids)) self.staffs = [] for i, (chords, rect) in enumerate(zip(chordgrids, staff_rects)): staff = IGStaff( rect, chords, final=i == len(chordgrids) - 1, tonality=self.tonality) self.staffs.append(staff)
def generate_measures(eighthkbnotes, tempo=None): eighthkbnotes = set_array_lenght_multiple(array=eighthkbnotes, multiple=8, default=[]) eighthkbnotes_measures = split_array(eighthkbnotes, lenght=8) measures = '' for i, eighthkbnotes_measure in enumerate(eighthkbnotes_measures): measures += generate_measure(eighthkbnotes_measure, measure_number=i + 1, tempo=tempo) tempo = None part = RESSOURCES['part'].format(id=PIANO_PART['id'], content=measures) return part
def set_signature(self, signature): alterations = split_array( get_alterations(self.sequence, signature.tonality), 4) for a, igquarter in zip(alterations, self.igquarters): igquarter.set_alterations(a, signature.display_scale())