コード例 #1
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_17():
    container = abjad.Container(r"c'4 d'4 e'4 f'4")
    pitches = r"fs' gs' a' b'"
    weights = None
    assert auxjad.PitchRandomiser(container, pitches, weights=weights)
    weights = [1, 1, 5, 2]
    assert auxjad.PitchRandomiser(container, pitches, weights=weights)
    weights = [1, 1, 5, 2, 3, 4, 8]
    with pytest.raises(ValueError):
        assert auxjad.PitchRandomiser(container, pitches, weights=weights)
コード例 #2
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_19():
    container = abjad.Container(r"c'4 d'4 e'4 f'4")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        )
    assert len(randomiser) == 4
    container = abjad.Container(r"c'4 d'4 e'4 f'4")
    pitches = [6, 7, 8, 9, 10, 11, 12]
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        )
    assert len(randomiser) == 7
コード例 #3
0
def test_PitchRandomiser_02():
    container = abjad.Container(r"c'4 d'4 e'4 f'4")
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches=r"a b cs' ds' e'",
        weights=[1.0, 2.0, 1.0, 1.5, 1.3],
        omit_time_signatures=True,
        process_on_first_call=True,
        use_tenney_selector=True,
    )
    assert randomiser.pitches == abjad.PitchSegment(r"a b cs' ds' e'")
    assert randomiser.weights == [1.0, 2.0, 1.0, 1.5, 1.3]
    assert randomiser.omit_time_signatures
    assert randomiser.process_on_first_call
    assert randomiser.use_tenney_selector
    randomiser.pitches = abjad.PitchSegment(r"c' d' e' f'")
    randomiser.weights = [1, 2, 5, 8]
    randomiser.omit_time_signatures = False
    randomiser.process_on_first_call = False
    randomiser.use_tenney_selector = False
    assert randomiser.pitches == abjad.PitchSegment(r"c' d' e' f'")
    assert randomiser.weights == [1, 2, 5, 8]
    assert not randomiser.omit_time_signatures
    assert not randomiser.process_on_first_call
    assert not randomiser.use_tenney_selector
コード例 #4
0
def test_PitchRandomiser_08():
    random.seed(81223)
    container = abjad.Container(r"c'8 d'8 e'8 f'8 g'8 a'8 b'8 c'8")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
        weights=[5.0, 2.0, 1.5, 1.0],
        use_tenney_selector=True,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            fs'8
            gs'8
            a'8
            fs'8
            gs'8
            a'8
            gs'8
            b'8
        }
        """)
コード例 #5
0
def test_PitchRandomiser_13():
    random.seed(88112)
    container = abjad.Container(
        r"c'4\p\< ~ c'8. d'16-.\f e'4--\pp f'8.( g'16)")
    pitches = [6, 7, 8, 9, 10, 11, 12]
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            a'4
            \p
            \<
            ~
            a'8.
            c''16
            \f
            - \staccato
            af'4
            \pp
            - \tenuto
            a'8.
            (
            bf'16
            )
        }
        """)
コード例 #6
0
def test_PitchRandomiser_16():
    random.seed(45017)
    container = abjad.Container(r"c'4 d'4 e'4 f'4")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
        process_on_first_call=False,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            c'4
            d'4
            e'4
            f'4
        }
        """)
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            b'4
            fs'4
            gs'4
            fs'4
        }
        """)
コード例 #7
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_10():
    container = abjad.Container(r"c'8 d'8 e'8 f'8 g'8 a'8 b'8 c'8")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        weights=[100.0, 1.0, 1.0, 1.0],
                                        )
    randomiser.pitches = r"c'' d'' e'' f''"
    assert randomiser.pitches == abjad.PitchSegment(r"c'' d'' e'' f''")
    assert randomiser.weights == [100.0, 1.0, 1.0, 1.0]
コード例 #8
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_01():
    random.seed(16284)
    container = abjad.Container(r"\time 4/4 c'4 d'4 e'4 f'4")
    pitches = r"fs' gs' a' b' cs''"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        )
    assert format(randomiser) == "PitchSegment(\"fs' gs' a' b' cs''\")"
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \time 4/4
            a'4
            b'4
            cs''4
            fs'4
        }
        """)
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \time 4/4
            b'4
            b'4
            b'4
            fs'4
        }
        """)
    notes = randomiser.current_window
    with pytest.raises(AttributeError):
        randomiser.current_window = abjad.Container(r"c''2 e''2")
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \time 4/4
            b'4
            b'4
            b'4
            fs'4
        }
        """)
コード例 #9
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_18():
    random.seed(91773)
    container = abjad.Container(r"\time 3/4 c'4 d'4 e'4")
    pitches = r"fs' gs' a' b' cs''"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        )
    staff = abjad.Staff()
    for window in randomiser:
        staff.append(window)
        if abjad.inspect(staff).duration() == abjad.Duration((9, 4)):
            break
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \time 3/4
            a'4
            b'4
            gs'4
            \time 3/4
            fs'4
            a'4
            b'4
            \time 3/4
            a'4
            gs'4
            cs''4
        }
        """)
    auxjad.mutate(staff[:]).remove_repeated_time_signatures()
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \time 3/4
            a'4
            b'4
            gs'4
            fs'4
            a'4
            b'4
            a'4
            gs'4
            cs''4
        }
        """)
コード例 #10
0
def test_PitchRandomiser_05():
    random.seed(31987)
    container = abjad.Container(r"<c' e' g' a'>2 <cs' ds' e' f' g' a' b'>2")
    pitches = [6, 7, 8]
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            <fs' g' af'>2
            <fs' g' af'>2
        }
        """)
コード例 #11
0
def test_PitchRandomiser_20():
    pitches = r"fs' gs' a' b' cs''"
    container = abjad.Container(r"c'4 d'4 e'4 f'4")
    randomiser = auxjad.PitchRandomiser(container, pitches)
    assert isinstance(randomiser(), abjad.Selection)
    tuplet = abjad.Tuplet('3:2', r"c'2 d'2 e'2")
    randomiser = auxjad.PitchRandomiser(tuplet, pitches)
    assert isinstance(randomiser(), abjad.Selection)
    voice = abjad.Voice(r"c'4 d'4 e'4 f'4")
    randomiser = auxjad.PitchRandomiser(voice, pitches)
    assert isinstance(randomiser(), abjad.Selection)
    staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
    randomiser = auxjad.PitchRandomiser(staff, pitches)
    assert isinstance(randomiser(), abjad.Selection)
    score = abjad.Score([abjad.Staff(r"c'4 d'4 e'4 f'4")])
    randomiser = auxjad.PitchRandomiser(score, pitches)
    assert isinstance(randomiser(), abjad.Selection)
    voice = abjad.Voice(r"c'4 d'4 e'4 f'4")
    staff = abjad.Staff([voice])
    randomiser = auxjad.PitchRandomiser(staff, pitches)
    assert isinstance(randomiser(), abjad.Selection)
    staff = abjad.Staff(r"c'4 d'4 e'4 f'4")
    score = abjad.Score([staff])
    randomiser = auxjad.PitchRandomiser(score, pitches)
    assert isinstance(randomiser(), abjad.Selection)

    voice1 = abjad.Voice(r"c'4 d'4 e'4 f'4")
    voice2 = abjad.Voice(r"g2 f2")
    staff = abjad.Staff([voice1, voice2], simultaneous=True)
    with pytest.raises(ValueError):
        randomiser = auxjad.PitchRandomiser(staff, pitches)  # noqa: F841

    staff1 = abjad.Staff(r"c'4 d'4 e'4 f'4")
    staff2 = abjad.Staff(r"g2 f2")
    score = abjad.Score([staff1, staff2])
    with pytest.raises(ValueError):
        randomiser = auxjad.PitchRandomiser(score, pitches)  # noqa: F841
コード例 #12
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_09():
    random.seed(91445)
    container = abjad.Container(r"c'8 d'8 e'8 f'8 g'8 a'8 b'8 c'8")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        weights=[100.0, 1.0, 1.0, 1.0],
                                        )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            fs'8
            fs'8
            fs'8
            fs'8
            fs'8
            fs'8
            fs'8
            fs'8
        }
        """)
    randomiser.weights = None
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            fs'8
            fs'8
            b'8
            gs'8
            gs'8
            a'8
            fs'8
            b'8
        }
        """)
コード例 #13
0
def test_PitchRandomiser_04():
    random.seed(87612)
    container = abjad.Container(r"<c' e' g'>8. d'4 r8 r8. e'16 <f' a'>8.")
    pitches = [6, 7, 8, 9, 10, 11]
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            <fs' g' bf'>8.
            b'4
            r8
            r8.
            bf'16
            <fs' bf'>8.
        }
        """)
コード例 #14
0
def test_PitchRandomiser_03():
    random.seed(19387)
    container = abjad.Container(r"c'8. d'4 r8 r8. e'16 f'8.")
    pitches = [6, 7, 8, 9, 10, 11]
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            bf'8.
            af'4
            r8
            r8.
            bf'16
            a'8.
        }
        """)
コード例 #15
0
def test_PitchRandomiser_15():
    random.seed(97112)
    container = abjad.Container(r"\time 3/4 c'4 d'2 \time 2/4 e'8 f'8 g'8 a'8")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
        omit_time_signatures=True,
    )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            a'4
            fs'2
            gs'8
            gs'8
            a'8
            gs'8
        }
        """)
コード例 #16
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_14():
    random.seed(97112)
    container = abjad.Container(r"\time 3/4 c'4 d'2 \time 2/4 e'8 f'8 g'8 a'8")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            \time 3/4
            a'4
            fs'2
            \time 2/4
            gs'8
            gs'8
            a'8
            gs'8
        }
        """)
コード例 #17
0
def test_PitchRandomiser_12():
    random.seed(95877)
    container = abjad.Container(r"c'4 ~ c'16 r8. d'4 e'8. r16")
    pitches = [6, 7, 8, 9, 10]
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches,
    )
    notes = randomiser.output_n(3)
    staff = abjad.Staff(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            a'4
            ~
            a'16
            r8.
            g'4
            fs'8.
            r16
            g'4
            ~
            g'16
            r8.
            g'4
            fs'8.
            r16
            bf'4
            ~
            bf'16
            r8.
            a'4
            af'8.
            r16
        }
        """)
コード例 #18
0
ファイル: test_PitchRandomiser.py プロジェクト: jgarte/auxjad
def test_PitchRandomiser_06():
    random.seed(87132)
    container = abjad.Container(r"c'8 d'8 e'8 f'8 g'8 a'8 b'8 c'8")
    pitches = r"fs' gs' a' b'"
    randomiser = auxjad.PitchRandomiser(container,
                                        pitches,
                                        use_tenney_selector=True,
                                        )
    notes = randomiser()
    staff = abjad.Staff(notes)
    assert format(staff) == abjad.String.normalize(
        r"""
        \new Staff
        {
            fs'8
            a'8
            fs'8
            gs'8
            a'8
            b'8
            gs'8
            fs'8
        }
        """)
コード例 #19
0
def test_example_of_usage_04():
    random.seed(98611)
    container = abjad.Container(r"c'4 ~ c'16 r8 c'16 c'4 c'16 r8.")
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches=[0, 1, 2, 3, 4, 5, 6],
    )
    staff = abjad.Staff()
    notes = randomiser.output_n(3)
    staff.append(notes)
    randomiser.pitches = [13, 14, 16, 17, 21]
    notes = randomiser.output_n(3)
    staff.append(notes)
    randomiser.weights = [6, 3, 2, 1, 1]
    notes = randomiser.output_n(3)
    staff.append(notes)
    hocketer = auxjad.Hocketer(
        staff,
        n_voices=3,
    )
    music = hocketer()
    score = abjad.Score()
    for selection in music:
        score.append(abjad.Staff(selection))
    assert format(score) == abjad.String.normalize(r"""
        \new Score
        <<
            \new Staff
            {
                f'4
                ~
                f'16
                r8.
                r4
                cs'16
                r8.
                R1
                R1
                f''4
                ~
                f''16
                r16
                r16
                f''16
                r2
                R1
                a''4
                ~
                a''16
                r8.
                e''4
                r4
                r2.
                d''16
                r8.
                r4..
                cs''16
                r2
                r4..
                cs''16
                r4
                cs''16
                r8.
            }
            \new Staff
            {
                r2
                d'4
                r4
                fs'4
                ~
                fs'16
                r8.
                r2
                c'4
                ~
                c'16
                r16
                r16
                ef'16
                r4
                cs'16
                r8.
                r2.
                f''16
                r8.
                f''4
                ~
                f''16
                r16
                r16
                a''16
                e''4
                f''16
                r8.
                r4..
                cs''16
                r2
                r4..
                d''16
                r2
                d''4
                ~
                d''16
                r8.
                r4
                a''16
                r8.
                R1
            }
            \new Staff
            {
                r4..
                fs'16
                r2
                r4..
                cs'16
                ef'4
                e'16
                r8.
                r2
                c'4
                r4
                r2
                cs''4
                r4
                R1
                r2.
                f''16
                r8.
                cs''4
                ~
                cs''16
                r8.
                d''4
                r4
                r2
                d''4
                r4
                d''4
                ~
                d''16
                r8.
                d''4
                r4
            }
        >>
        """)
コード例 #20
0
def test_example_of_usage_04():
    random.seed(64993)
    container = abjad.Container(r"c'4-- c'8.-- c'16( c'8)-. c'8-. c'8-. r8")
    pitch_list = ["c'", "cs'", "d'", "ef'", "e'"]
    randomiser = auxjad.PitchRandomiser(
        container,
        pitches=pitch_list,
    )
    notes = randomiser.output_n(2)
    group_1 = abjad.Staff(notes)
    randomiser.pitches = ["a", "b", "bf'", "a''", "b''"]
    notes = randomiser.output_n(2)
    group_2 = abjad.Staff(notes)
    container = abjad.Container(
        r"\time 3/4 c'4--( ~ "
        r"\times 4/5 {c'16 c'16-. c'16-. c'16-. c'16-.)} "
        r"r8 c'8->")
    randomiser.contents = container
    randomiser.weights = [6, 3, 2, 1, 1]
    notes = randomiser.output_n(2)
    group_3 = abjad.Staff(notes)
    staff = abjad.Staff()
    repeater = auxjad.Repeater(group_1, repeat_type='volta')
    notes = repeater(3)
    staff.append(notes)
    repeater.contents = group_2
    notes = repeater(5)
    staff.append(notes)
    repeater.contents = group_3
    notes = repeater(4)
    staff.append(notes)
    assert abjad.lilypond(staff) == abjad.String.normalize(r"""
        \new Staff
        {
            \repeat volta 3
            {
                d'4
                - \tenuto
                c'8.
                - \tenuto
                e'16
                (
                e'8
                - \staccato
                )
                cs'8
                - \staccato
                ef'8
                - \staccato
                r8
                cs'4
                - \tenuto
                ef'8.
                - \tenuto
                e'16
                (
                ef'8
                - \staccato
                )
                e'8
                - \staccato
                d'8
                - \staccato
                r8
                \tweak RehearsalMark.self-alignment-X #RIGHT
                \tweak RehearsalMark.break-visibility #begin-of-line-invisible
                \mark \markup{\box "3×"}
            }
            \repeat volta 5
            {
                a4
                - \tenuto
                a8.
                - \tenuto
                a16
                (
                b''8
                - \staccato
                )
                b''8
                - \staccato
                a''8
                - \staccato
                r8
                b''4
                - \tenuto
                b8.
                - \tenuto
                a16
                (
                a8
                - \staccato
                )
                bf'8
                - \staccato
                a8
                - \staccato
                r8
                \tweak RehearsalMark.self-alignment-X #RIGHT
                \tweak RehearsalMark.break-visibility #begin-of-line-invisible
                \mark \markup{\box "5×"}
            }
            \repeat volta 4
            {
                \time 3/4
                b4
                - \tenuto
                (
                ~
                \times 4/5
                {
                    b16
                    b16
                    - \staccato
                    a''16
                    - \staccato
                    b16
                    - \staccato
                    a''16
                    - \staccato
                    )
                }
                r8
                b''8
                - \accent
                bf'4
                - \tenuto
                (
                ~
                \times 4/5
                {
                    bf'16
                    a16
                    - \staccato
                    b16
                    - \staccato
                    a16
                    - \staccato
                    b16
                    - \staccato
                    )
                }
                r8
                b8
                - \accent
                \tweak RehearsalMark.self-alignment-X #RIGHT
                \tweak RehearsalMark.break-visibility #begin-of-line-invisible
                \mark \markup{\box "4×"}
            }
        }
        """)