def test_enforce_time_signature_08(): staff = abjad.Staff(r"\times 2/3 {c'2 d'2 e'2} f'1") time_signatures = [ abjad.TimeSignature((2, 4)), abjad.TimeSignature((3, 4)), ] auxjad.mutate(staff).enforce_time_signature(time_signatures) assert format(staff) == abjad.String.normalize(r""" \new Staff { \times 2/3 { \time 2/4 c'2 d'4 ~ } \times 2/3 { \time 3/4 d'4 e'2 } f'4 ~ f'2. } """)
def test_enforce_time_signature_10(): staff = abjad.Staff(r"c'1 d'1 e'1 f'1") time_signatures = [ (2, 4), None, None, (3, 4), None, (4, 4), ] auxjad.mutate(staff).enforce_time_signature(time_signatures) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 2/4 c'2 ~ c'2 d'2 ~ \time 3/4 d'2 e'4 ~ e'2. \time 4/4 f'1 } """)
def test_remove_repeated_time_signatures_01(): staff = abjad.Staff(r"c'4 d'8 | c'4 d'8") abjad.attach(abjad.TimeSignature((3, 8)), staff[0]) abjad.attach(abjad.TimeSignature((3, 8)), staff[2]) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/8 c'4 d'8 \time 3/8 c'4 d'8 } """) auxjad.mutate(staff[:]).remove_repeated_time_signatures() assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/8 c'4 d'8 c'4 d'8 } """)
def test_reposition_dynamics_06(): staff = abjad.Staff(r"c'1\p d'1 r1\f e'1\p") auxjad.mutate(staff[:]).reposition_dynamics() assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p d'1 r1 e'1 } """) staff = abjad.Staff(r"c'1\p d'1 r1\f e'1\p") auxjad.mutate(staff[:]).reposition_dynamics(remove_repeated_dynamics=False) assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p d'1 r1 e'1 \p } """)
def test_double_barlines_before_time_signatures_05(): staff = abjad.Staff(r"R1 " r"\time 3/4 c'2. " r"\time 4/4 d'1 " r"e'1 " r"\time 6/4 f'2. g'2. " r"\time 2/4 a'2") abjad.attach(abjad.BarLine('.|:'), staff[0]) abjad.attach(abjad.BarLine(':|.'), staff[1]) abjad.attach(abjad.BarLine('|'), staff[3]) abjad.attach(abjad.BarLine('!'), staff[5]) auxjad.mutate(staff[:]).double_barlines_before_time_signatures() assert format(staff) == abjad.String.normalize(r""" \new Staff { R1 \bar ".|:" \time 3/4 c'2. \bar ":|." \time 4/4 d'1 e'1 \bar "||" \time 6/4 f'2. g'2. \bar "!" \time 2/4 a'2 } """)
def test_remove_repeated_dynamics_05(): staff = abjad.Staff(r"c'4\pp\< d'8\f\> | c'4\f d'8\f") assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp \< d'8 \f \> c'4 \f d'8 \f } """) auxjad.mutate(staff[:]).remove_repeated_dynamics(ignore_hairpins=True) assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp \< d'8 \f \> c'4 d'8 } """)
def test_remove_repeated_dynamics_06(): staff = abjad.Staff(r"c'4\pp r2. | c'1\pp") auxjad.mutate(staff[:]).remove_repeated_dynamics() assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp r2. c'1 } """) staff = abjad.Staff(r"c'4\pp r2. | c'1\pp") auxjad.mutate(staff[:]).remove_repeated_dynamics(reset_after_rests=True) assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp r2. c'1 \pp } """)
def test_sustain_notes_07(): staff = abjad.Staff(r"r4 c'16 r8. d'16 r4.. " r"R1" r"r4 e'4 r2" r"\time 5/8 r8 f'4 r4" r"R1 * 5/8 " r"r8 g'8 a'8 r4") auxjad.mutate(staff).sustain_notes() assert format(staff) == abjad.String.normalize(r""" \new Staff { r4 c'4 d'2 ~ d'1 ~ d'4 e'2. ~ \time 5/8 e'8 f'2 ~ f'4. ~ f'4 f'8 g'4 a'4 } """)
def test_enforce_time_signature_14(): staff = abjad.Staff(r"c'4. d'8 e'2") auxjad.mutate(staff).enforce_time_signature(abjad.TimeSignature((4, 4))) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 4/4 c'4. d'8 e'2 } """) staff = abjad.Staff(r"c'4. d'8 e'2") auxjad.mutate(staff).enforce_time_signature( abjad.TimeSignature((4, 4)), boundary_depth=1, ) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 4/4 c'4 ~ c'8 d'8 e'2 } """)
def test_reposition_dynamics_09(): staff = abjad.Staff(r"c'1\p\> d'1\f\> e'1\p") auxjad.mutate(staff[:]).reposition_dynamics() assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p d'1 \f \> e'1 \p } """) staff = abjad.Staff(r"c'1\p\> d'1\f\> e'1\p") auxjad.mutate(staff[:]).reposition_dynamics(check_hairpin_trends=False) assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p \> d'1 \f \> e'1 \p } """)
def test_sync_containers_14(): container1 = abjad.Staff(r"\time 5/4 g'1~g'4 | R1 * 5/4") container2 = abjad.Staff(r"\time 5/4 c'2.") auxjad.mutate([container1, container2]).sync_containers() assert (abjad.inspect(container1).duration() == abjad.inspect( container2).duration()) assert format(container1) == abjad.String.normalize(r""" \new Staff { \time 5/4 g'1 ~ g'4 R1 * 5/4 } """) assert format(container2) == abjad.String.normalize(r""" \new Staff { \time 5/4 c'2. r2 R1 * 5/4 } """)
def test_fill_with_rests_07(): staff = abjad.Staff(r"\time 4/4 c'8 d'4 e'4") auxjad.mutate(staff).fill_with_rests() assert format(staff) == abjad.String.normalize( r""" \new Staff { \time 4/4 c'8 d'4 e'8 ~ e'8 r4. } """) staff = abjad.Staff(r"\time 4/4 c'8 d'4 e'4") auxjad.mutate(staff).fill_with_rests(disable_rewrite_meter=True) assert format(staff) == abjad.String.normalize( r""" \new Staff { \time 4/4 c'8 d'4 e'4 r4. } """)
def test_remove_repeated_dynamics_01(): staff = abjad.Staff(r"c'4\pp d'8\pp | c'4\f d'8\f") assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp d'8 \pp c'4 \f d'8 \f } """) auxjad.mutate(staff[:]).remove_repeated_dynamics() assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp d'8 c'4 \f d'8 } """)
def test_reposition_dynamics_11(): staff = abjad.Staff(r"c'1 d'1 e'1 r1\mf r1\ff f'1 r1 g'1") abjad.attach(abjad.Dynamic('niente', hide=True), staff[0]) abjad.attach(abjad.Dynamic('niente', hide=True), staff[7]) abjad.attach(abjad.StartHairpin('o<'), staff[0]) abjad.attach(abjad.StartHairpin('>o'), staff[4]) abjad.attach(abjad.StopHairpin(), staff[7]) auxjad.mutate(staff[:]).reposition_dynamics() assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 - \tweak circled-tip ##t \< d'1 e'1 r1 \mf r1 f'1 \ff - \tweak circled-tip ##t \> r1 \! g'1 } """)
def test_prettify_rewrite_meter_11(): staff = abjad.Staff(r"\time 3/4 c'8 d'4 e'4 f'16 g'16 | " r"\time 4/4 a'8 b'4 c''8 d''16 e''4 f''8.") meters = [abjad.Meter((3, 4)), abjad.Meter((4, 4))] for meter, measure in zip( meters, abjad.select(staff[:]).group_by_measure(), ): abjad.mutate(measure).rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/4 c'8 d'8 ~ d'8 e'8 ~ e'8 f'16 g'16 \time 4/4 a'8 b'8 ~ b'8 c''8 d''16 e''8. ~ e''16 f''8. } """) for meter, measure in zip( meters, abjad.select(staff[:]).group_by_measure(), ): auxjad.mutate(measure).prettify_rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/4 c'8 d'4 e'4 f'16 g'16 \time 4/4 a'8 b'4 c''8 d''16 e''8. ~ e''16 f''8. } """)
def test_reposition_dynamics_12(): staff = abjad.Staff(r"c'1\p d'1\f\> e'1\ff\< r1\fff f'1\p\> g'1\ppp") abjad.attach(abjad.StartHairpin('--'), staff[0]) auxjad.mutate(staff[:]).reposition_dynamics() assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p - \tweak stencil #constante-hairpin \< d'1 \f e'1 \ff \< r1 \fff f'1 \p \> g'1 \ppp } """)
def test_reposition_dynamics_14(): staff = abjad.Staff(r"c'1\p\< d'2 r2\f r1 e'1") auxjad.mutate(staff[:]).reposition_dynamics() assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p \< d'2 r2 \f r1 e'1 } """) staff = abjad.Staff(r"c'1\p\< d'2 r2\f r1 e'1") auxjad.mutate(staff[:]).reposition_dynamics( allow_hairpin_to_rest_with_dynamic=False, ) assert format(staff) == abjad.String.normalize(r""" \new Staff { c'1 \p \< d'2 r2 \! r1 e'1 \f } """)
def test_enforce_time_signature_03(): staff = abjad.Staff(r"c'1 d'1 e'1 f'1") auxjad.mutate(staff).enforce_time_signature( abjad.TimeSignature((3, 4)), close_container=True, ) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/4 c'2. ~ c'4 d'2 ~ d'2 e'4 ~ e'2. f'2. ~ \time 1/4 f'4 } """)
def test_remove_repeated_dynamics_08(): staff = abjad.Staff(r"c'4\pp r2. | R1 | c'1\pp") auxjad.mutate(staff[:]).remove_repeated_dynamics( reset_after_rests=abjad.Duration(4, 4) ) assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp r2. R1 c'1 \pp } """) staff = abjad.Staff(r"c'4\pp r2. | R1 | c'1\pp") auxjad.mutate(staff[:]).remove_repeated_dynamics(reset_after_rests=2) assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \pp r2. R1 c'1 } """)
def test_auto_rewrite_meter_01(): staff = abjad.Staff(r"c'16 d'8 e'16 f'8 g'4 a'4 b'8 " r"c'16 d'4. e'16 f'8 g'4 a'16 b'16") auxjad.mutate(staff).auto_rewrite_meter() assert format(staff) == abjad.String.normalize(r""" \new Staff { c'16 d'8 e'16 f'8 g'8 ~ g'8 a'4 b'8 c'16 d'8. ~ d'8. e'16 f'8 g'4 a'16 b'16 } """)
def test_remove_repeated_dynamics_02(): staff = abjad.Staff(r"c'4\p d'8 | e'4.\p | c'4\p d'8\f") assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \p d'8 e'4. \p c'4 \p d'8 \f } """) auxjad.mutate(staff[:]).remove_repeated_dynamics() assert format(staff) == abjad.String.normalize( r""" \new Staff { c'4 \p d'8 e'4. c'4 d'8 \f } """)
def test_sustain_notes_08(): staff = abjad.Staff(r"r4 c'16 r8. d'16 r4.. " r"R1" r"r4 e'4 r2" r"\time 5/8 r8 f'4 r4" r"R1 * 5/8 " r"r8 g'8 a'8 r4") auxjad.mutate(staff).sustain_notes(sustain_multimeasure_rests=False) assert format(staff) == abjad.String.normalize(r""" \new Staff { r4 c'4 d'2 R1 r4 e'2. ~ \time 5/8 e'8 f'2 R1 * 5/8 r8 g'8 a'4. } """)
def test_enforce_time_signature_11(): staff = abjad.Staff(r"c'1 d'1 e'1 f'1") time_signatures = [ None, (4, 4), ] with pytest.raises(ValueError): auxjad.mutate(staff).enforce_time_signature(time_signatures)
def test_prettify_rewrite_meter_09(): staff = abjad.Staff(r"\times 2/3 {c'16 d'8 ~ } " r"\times 2/3 {d'32 e'8 f'32 ~ } " r"f'32 \times 2/3 {g'16 a'32} r32") abjad.attach(abjad.TimeSignature((3, 8)), staff[0][0]) meter = abjad.Meter((3, 8)) abjad.mutate(staff[:]).rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \times 2/3 { \time 3/8 c'16 d'8 ~ } \times 2/3 { d'32 e'32 ~ e'16. f'32 ~ } f'32 \times 2/3 { g'16 a'32 } r32 } """) auxjad.mutate(staff[:]).prettify_rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \times 2/3 { \time 3/8 c'16 d'8 ~ } \times 2/3 { d'32 e'32 ~ e'16. f'32 ~ } f'32 \times 2/3 { g'16 a'32 } r32 } """)
def test_prettify_rewrite_meter_02(): staff = abjad.Staff(r"\time 3/4 c'32 d'32 e'8 f'16 " r"\times 2/3 {g'32 a'32 b'32} c''8 " r"r16 r32. d''64 e''8 f''32 g''32") meter = abjad.Meter((3, 4)) abjad.mutate(staff[:]).rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/4 c'32 d'32 e'16 ~ e'16 f'16 \times 2/3 { g'32 a'32 b'32 } c''16 ~ c''16 r16 r32. d''64 e''16 ~ e''16 f''32 g''32 } """) auxjad.mutate(staff[:]).prettify_rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 3/4 c'32 d'32 e'8 f'16 \times 2/3 { g'32 a'32 b'32 } c''8 r16 r32. d''64 e''8 f''32 g''32 } """)
def test_rests_to_multimeasure_rest_01(): staff = abjad.Staff(r"r1") auxjad.mutate(staff[:]).rests_to_multimeasure_rest() assert format(staff) == abjad.String.normalize(r""" \new Staff { R1 } """)
def test_prettify_rewrite_meter_10(): staff = abjad.Staff(r"\time 4/4 c'8 d'4 e'4 f'4 g'8 | " r"a'8 b'4 c''8 d''16 e''4 f''8.") meter = abjad.Meter((4, 4)) for measure in abjad.select(staff[:]).group_by_measure(): abjad.mutate(measure).rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 4/4 c'8 d'8 ~ d'8 e'8 ~ e'8 f'8 ~ f'8 g'8 a'8 b'8 ~ b'8 c''8 d''16 e''8. ~ e''16 f''8. } """) for measure in abjad.select(staff[:]).group_by_measure(): auxjad.mutate(measure).prettify_rewrite_meter(meter) assert format(staff) == abjad.String.normalize(r""" \new Staff { \time 4/4 c'8 d'4 e'8 ~ e'8 f'4 g'8 a'8 b'4 c''8 d''16 e''8. ~ e''16 f''8. } """)
def test_CrossFader_16(): random.seed(81662) fade_out_container = abjad.Container(r"\time 3/4 c'4 d'4 e'4") fade_in_container = abjad.Container(r"\time 4/4 g'2 a'2") fader = auxjad.CrossFader( fade_out_container, fade_in_container, fade_in_first=True, fade_out_last=True, weighted_duration=True, ) selection_a, selection_b = fader.output_all() staff_a = abjad.Staff(selection_a) staff_b = abjad.Staff(selection_b) auxjad.mutate([staff_a, staff_b]).sync_containers() score = abjad.Score([staff_a, staff_b]) assert format(score) == abjad.String.normalize(r""" \new Score << \new Staff { \time 3/4 c'4 d'4 e'4 c'4 d'4 e'4 c'4 r4 e'4 c'4 r2 c'4 r2 R1 * 3/4 R1 * 3/4 R1 * 3/4 } \new Staff { \time 4/4 R1 r2 a'2 r2 a'2 r2 a'2 g'2 a'2 g'2 a'2 } >> """)
def test_reposition_clefs_02(): staff = abjad.Staff(r"c'1 | d'2 e'4 r4 | f'1") abjad.attach(abjad.Clef('treble'), staff[0]) abjad.attach(abjad.Clef('treble'), staff[4]) assert format(staff) == abjad.String.normalize( r""" \new Staff { \clef "treble" c'1 d'2 e'4 r4 \clef "treble" f'1 } """) auxjad.mutate(staff[:]).reposition_clefs() assert format(staff) == abjad.String.normalize( r""" \new Staff { \clef "treble" c'1 d'2 e'4 r4 f'1 } """) staff = abjad.Staff(r"c'1 | d'2 e'4 r4 | f'1") abjad.attach(abjad.Clef('treble'), staff[4]) assert format(staff) == abjad.String.normalize( r""" \new Staff { c'1 d'2 e'4 r4 \clef "treble" f'1 } """) auxjad.mutate(staff[:]).reposition_clefs() assert format(staff) == abjad.String.normalize( r""" \new Staff { c'1 d'2 e'4 r4 f'1 } """)
def test_extract_trivial_tuplets_04(): staff = abjad.Staff(r"\times 2/3 {<c' d'>1 ~ <c' d'>2}") auxjad.mutate(staff[:]).extract_trivial_tuplets() assert format(staff) == abjad.String.normalize( r""" \new Staff { <c' d'>1 } """)