Пример #1
0
def test_Sequence_superpose_01():
    instances = [0, 1, 2, 3]
    durations = [0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence_0 = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=4,
    )

    instances = [0.5, 1.5, 2.5, 3.5]
    durations = [0.6, 0.6, 0.7, 0.7]
    pitches = [1, 1, 1, 1]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
        pitches=pitches,
    )
    sequence_1 = pang.Sequence(sound_points_generator=sound_points_generator, )
    sequence_0.superpose(sequence_1)
    assert sequence_0.instances == [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5]
    assert sequence_0.durations == [0.5, 0.6, 0.5, 0.6, 0.5, 0.7, 0.5, 0.7]
    assert sequence_0.pitches == [0, 1, 0, 1, 0, 1, 0, 1]
Пример #2
0
def generate_sequence_manually(instances, durations, pitches):
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
        pitches=pitches,
    )
    return pang.Sequence(sound_points_generator=sound_points_generator)
Пример #3
0
def test_Sequence_simulate_queue_00():
    instances = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    durations = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence_duration = 10
    sequence = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=sequence_duration,
    )

    sequence.simulate_queue()
    np.testing.assert_almost_equal(
        sequence.servers[0].durations,
        [
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
        ],
    )

    assert sequence.servers[0].pitches == [
        0,
        None,
        0,
        None,
        0,
        None,
        0,
        None,
        0,
        None,
        0,
        None,
        0,
        None,
        0,
        None,
        0,
        None,
        0,
    ]
Пример #4
0
def test_ManualSequence_extend_01():
    instances = [0, 1, 2, 3]
    durations = [0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence_0 = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=4,
    )
    sequence_1 = pang.Sequence(sound_points_generator=sound_points_generator, )
    sequence_0.extend(sequence_1)
    assert sequence_0.instances == [0, 1, 2, 3, 4, 5, 6, 7]
    assert sequence_0.durations == [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
    assert sequence_0.pitches == [0, 0, 0, 0, 0, 0, 0, 0]
def test_GRWSoundPointsGenerator___call___01():
    pitch_set = list(range(48))
    sound_points_generator = pang.GRWSoundPointsGenerator(
        pitch_set=pitch_set,
        standard_deviation=2,
    )
    sequence = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=10,
    )
    sequence.simulate_queue()
    assert sequence.servers[0].pitches == [
        None,
        24,
        23,
        None,
        24,
        None,
        25,
        23,
        22,
        22,
        None,
        19,
        20,
        21,
    ]
Пример #6
0
def test_Sequence___init___02():
    instances = [0, 1, 2, 3]
    durations = [0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence = pang.Sequence(sound_points_generator=sound_points_generator, )
    assert sequence.instances == instances
    assert sequence.durations == durations
    assert sequence.pitches == [0, 0, 0, 0]
    assert sequence.sequence_duration == 3.5
Пример #7
0
def test_sequencesimulate_queue_04():
    instances = [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]
    durations = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence_duration = 10
    sequence = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=sequence_duration,
    )

    sequence.simulate_queue()
    np.testing.assert_almost_equal(
        sequence.servers[0].durations,
        [
            1,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
        ],
    )

    assert sequence.servers[0].pitches == [
        None,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
    ]
Пример #8
0
def test_ProcessQuantizedSequenceCommand__segment_target_by_tag_00():
    instances = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    durations = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence_duration = 10
    sequence = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=sequence_duration,
    )
    for event in sequence[:5]:
        event.tag = 0
    for event in sequence[5:]:
        event.tag = 1
    # The sequence is just a dummy to init the command and to provide the tags
    command = pang.ProcessQuantizedSequenceCommand(sequence)
    voice = abjad.Voice("c'4 c'4~ c'8 cs'8 cs'4")
    segments = command._segment_target_by_tag(target=voice)
    assert segments[0] == abjad.select(voice[:3]).logical_ties()
    assert segments[1] == abjad.select(voice[3:]).logical_ties()
def test_RandomWalkSoundPointsGenerator___call___01():
    pitch_set = list(range(48))
    sound_points_generator = pang.RandomWalkSoundPointsGenerator(
        pitch_set=pitch_set,
        seed=92379734,
    )
    sequence = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=100,
    )
    sequence.simulate_queue()
    index = 0
    previous_pitch = None
    while previous_pitch is None:
        previous_pitch = sequence.servers[0].pitches[index]
        index += 1
    for pitch in sequence.servers[0].pitches[index:]:
        if pitch is not None:
            difference = pitch - previous_pitch
            if pitch == max(pitch_set) or pitch == min(pitch_set):
                assert difference == 1 or difference == -1 or difference == 0
            else:
                assert difference == 1 or difference == -1, print(previous_pitch, pitch)
            previous_pitch = pitch
Пример #10
0
pitch_set_0 = pang.gen_pitches_from_sieve(
    sieve=forty_seven.sieves["C"],
    origin=0,
    pitch_range=forty_seven.registrations["low"],
    multiplier=0.5,
)

pitch_set_1 = pang.gen_pitches_from_sieve(
    sieve=forty_seven.sieves["A"] | forty_seven.sieves["B"],
    origin=0,
    pitch_range=forty_seven.registrations["high"],
    multiplier=1,
)

sequence = pang.Sequence()
sound_points_generator = pang.RandomWalkSoundPointsGenerator(
    arrival_rate=1.0,
    service_rate=1.3,
    arrival_model="deterministic",
    service_model="markov",
    pitch_set=pitch_set_0,
    seed=4145405,
)
sequence_segment = pang.Sequence(
    sound_points_generator=sound_points_generator, sequence_duration=80
)
sequence.extend(sequence_segment)

sound_points_generator = pang.AtaxicSoundPointsGenerator(
    arrival_rate=5.0,
Пример #11
0
pitch_set_0 = pang.gen_pitches_from_sieve(
    sieve=forty_seven.sieves["A"],
    origin=0,
    pitch_range=forty_seven.registrations["low"],
    multiplier=0.5,
)

pitch_set_1 = pang.gen_pitches_from_sieve(
    sieve=forty_seven.sieves["A"],
    origin=0,
    pitch_range=forty_seven.registrations["mid-high"],
    multiplier=0.5,
)

sequence = pang.Sequence()
sound_points_generator = pang.GRWSoundPointsGenerator(
    arrival_rate=1.5,
    service_rate=1.7,
    pitch_set=pitch_set_0,
    standard_deviation=2,
    seed=28374,
)
segment = pang.Sequence(sound_points_generator=sound_points_generator,
                        sequence_duration=60)
forty_seven.attach_harmonics_to_sequence(segment,
                                         harmonic_indices=[1, 2],
                                         seed=123456)
forty_seven.attach_dynamics_to_sequence(segment, mean_amplitude=0.5, seed=5681)
sequence.extend(segment)
Пример #12
0
def test_Sequence_simulate_queue_05():
    instances = [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]
    durations = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
    sound_points_generator = pang.ManualSoundPointsGenerator(
        instances=instances,
        durations=durations,
    )
    sequence_duration = 10
    sequence = pang.Sequence(
        sound_points_generator=sound_points_generator,
        sequence_duration=sequence_duration,
        tag=10,
    )
    sequence.extend(
        pang.Sequence(
            sound_points_generator=sound_points_generator,
            sequence_duration=sequence_duration,
            tag=11,
        ))

    sequence.simulate_queue(tag_as_pitch=True)
    np.testing.assert_almost_equal(
        sequence.servers[0].durations,
        [
            1,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
            0.5,
        ],
    )

    assert sequence.servers[0].pitches == [
        None,
        10,
        10,
        10,
        10,
        10,
        10,
        10,
        10,
        10,
        10,
        None,
        11,
        11,
        11,
        11,
        11,
        11,
        11,
        11,
        11,
        11,
    ]