movement_probabilitiesΒΆ

this module contains probability values for melody sequences.

"""this module contains probability values for melody sequences."""

from itertools import permutations, chain

default_probs = [
    [1] * 30,
    [2] * 10,
    [3] * 4,
    [4] * 2,
    [5] * 2,
    [6] * 2,
    [7] * 4,
    [8, 9, 10, 11, 12] * 1]

mid_probs = [
    [1] * 20,
    [2] * 7,
    [3] * 5,
    [4, 5, 6, 7] * 1]

flat_mid_probs = [
    [0] * 20,
    [1] * 7,
    [2] * 7,
    [3] * 5,
    [4, 5, 6, 7] * 1
]

bass_probs = [
    [1] * 6,
    [2] * 10,
    [3] * 5,
    [4] * 10,
    [5] * 5,
    [6] * 2,
    [7] * 1]

rock_bass_probs = [
    [0] * 35,
    [1] * 1,
    [2] * 2,
    [3] * 1,
    [4] * 1,
    [5] * 5,
    [6] * 1,
    [7] * 1]

DEFAULT_MOVEMENT_PROBS = sum(default_probs, [])
MIDDLE_VOICES_MOVEMENT_PROBS = sum(mid_probs, [])
FLAT_MID_MOVEMENT_PROBS = sum(flat_mid_probs, [])
BASS_MOVEMENT_PROBS = sum(bass_probs, [])
ROCK_BASS_MOVEMENT_PROBS = sum(rock_bass_probs, [])

BASS_CHORD_DISTANCE_PROBS = list(chain(*[[0] * 30, [2] * 10, [4] * 5, [6] * 3, [8] * 1]))

ORNAMENTS = {(0, 1): [[(0.5, 0), (0.5, 1)],
                      [(0.5, 0), (0.5, -1)],
                      [(0.25, 0), (0.25, -1), (0.25, 0), (0.25, -1)],
                      [(0.25, 0), (0.25, 1), (0.25, 0), (0.25, 1)],
                      [(0.3333333333, 1), (0.3333333333, 0), (0.33333333, 1)]],
             (0, 2): [[(0.25, 2), (0.25, 1), (0.25, 2), (0.25, 1)],
                      [(0.25, 2), (0.25, 3), (0.25, 2), (0.25, 1)],
                      [(0.25, 0), (0.25, 1), (0.25, 2), (0.25, 1)],
                      [(0.25, 0), (0.25, 1), (0.25, 0), (0.25, -1)],
                      [(0.3333333333, 0), (0.3333333333, 1), (0.33333333, 0),
                       (0.3333333333, 1), (0.3333333333, 0), (0.33333333, 1)],
                      [(0.3333333333, 0), (0.3333333333, -1), (0.33333333, 0),
                       (0.3333333333, 1), (0.3333333333, 0), (0.33333333, 1)],
                      [(0.3333333333, 0), (0.3333333333, 1), (0.33333333, 0),
                       (0.3333333333, -1), (0.3333333333, 0), (0.33333333, -1)]
                      ],
             (1, 1): [[(0.5, 1), (0.5, 0)],
                      [(0.5, 1), (0.5, 2)],
                      [(0.3333333333, 0), (0.3333333333, 1), (0.33333333, 0)]],
             (1, 2): [[(0.25, 0), (0.25, 1), (0.25, 0), (0.25, 1)],
                      [(0.25, 1), (0.25, 2), (0.25, 1), (0.25, 0)],
                      [(0.25, 1), (0.25, 0), (0.25, 1), (0.25, 2)],
                      [(0.3333333333, 1), (0.3333333333, 2), (0.33333333, 1),
                       (0.3333333333, 0), (0.3333333333, 1), (0.33333333, 0)],
                      [(0.3333333333, 1), (0.3333333333, 0), (0.33333333, 1),
                       (0.3333333333, 2), (0.3333333333, 1), (0.33333333, 2)]],
             (1, 3): [[(1 / 3.0, 0), (1 / 3.0, 1), (1 / 3.0, 0),
                       (1 / 3.0, 1), (1 / 3.0, 0), (1 / 3.0, 1),
                       (1 / 3.0, 0), (1 / 3.0, 1), (1 / 3.0, 0)]],
             (1, 4): [[(1 / 3.0, 1), (1 / 3.0, 0), (1 / 3.0, 1),
                       (1 / 3.0, 0), (1 / 3.0, 1), (1 / 3.0, 0),
                       (1 / 3.0, 1), (1 / 3.0, 0), (1 / 3.0, 1),
                       (1 / 3.0, 0), (1 / 3.0, 1), (1 / 3.0, 0)]],
             (2, 1): [[(0.5, 2), (0.5, 1)],
                      [(0.5, 0), (0.5, 1)],
                      [(0.3333333333, 1), (0.3333333333, 0), (0.33333333, 1)],
                      [(0.3333333333, 1), (0.3333333333, 2), (0.33333333, 1)]],
             (3, 1): [[(0.5, 1), (0.5, 2)],
                      [(0.3333333333, 1), (0.3333333333, 0), (0.33333333, 1)],
                      [(0.3333333333, 1), (0.3333333333, 2), (0.33333333, 1)]],
             (4, 1): [[(0.5, 2), (0.5, 3)],
                      [(0.5, 4), (0.5, 3)],
                      [(0.3333333333, 1), (0.3333333333, 2), (0.33333333, 1)]],
             (5, 1): [[(0.5, 5), (0.5, 4)],
                      [(0.5, 3), (0.5, 4)],
                      [(0.25, 1), (0.25, 2), (0.25, 3), (0.25, 4)],
                      [(0.3333333333, 2), (0.3333333333, 0), (0.33333333, 2)],
                      [(0.3333333333, 4), (0.3333333333, 5), (0.3333333333, 4)]
                      ]}

DRUM_FILLS = [
    [0.5, 0.5],
    # 1/3d based
    [0.333333333, 0.333333333, 0.3333333333],
    [0.333333333, 0.666666666],
    [0.666666663, 0.3333333333],
    # 1/6th based
    [0.166666666, 0.166666666, 0.16666666666,
     0.166666666, 0.166666666, 0.16666666666],
    [0.333333333, 0.16666666666, 0.333333333, 0.16666666666],
    [0.16666666666, 0.333333333, 0.16666666666, 0.333333333],
    [0.333333333, 0.16666666666, 0.16666666666, 0.333333333],
    [0.166666666, 0.16666666666, 0.333333333, 0.333333333],
    [0.333333333, 0.333333333, 0.16666666666, 0.16666666666],
    # 2, 1, 2, 1
    [0.333333333, 0.16666666666,
     0.333333333, 0.16666666666],
    # 1/8th based
    [0.75, 0.25],
    [0.25, 0.75]
]

DRUM_FILLS.extend(list(set(permutations([0.125, 0.125, 0.75]))))
DRUM_FILLS.extend(list(set(permutations([0.125, 0.125, 0.25, 0.5]))))
DRUM_FILLS.extend(list(set(permutations([0.125, 0.125, 0.125, 0.125, 0.5]))))
DRUM_FILLS.extend(list(set(permutations([0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.25]))))
DRUM_FILLS.extend(list(set(permutations([0.1666, 0.1666, 0.1666, 0.1666, 0.333]))))
DRUM_FILLS.extend(list(set(permutations([0.1666, 0.1666, 0.333, 0.333]))))
DRUM_FILLS.extend(list(set(permutations([0.25, 0.25, 0.5]))))