cpyang's picture
Upload folder using huggingface_hub
5a32398 verified
Raw
History Blame Contribute Delete
6.16 kB
import music21.interval
PITCH_CLASS_MAP = {
'Cbb': 0,
'Cb': 1,
'C': 2,
'C#': 3,
'Cx': 4,
'Dbb': 5,
'Db': 6,
'D': 7,
'D#': 8,
'Dx': 9,
'Ebb': 10,
'Eb': 11,
'E': 12,
'E#': 13,
'Ex': 14,
'Fbb': 15,
'Fb': 16,
'F': 17,
'F#': 18,
'Fx': 19,
'Gbb': 20,
'Gb': 21,
'G': 22,
'G#': 23,
'Gx': 24,
'Abb': 25,
'Ab': 26,
'A': 27,
'A#': 28,
'Ax': 29,
'Bbb': 30,
'Bb': 31,
'B': 32,
'B#': 33,
'Bx': 34
}
# SCALE_DEGREE_MAP = {
# 'd1', 'M2', 'm7', 'P5', 'AA-4', 'd-3', 'P-5', 'dd1', 'd6', 'dd5', 'd-6', 'M-2', 'A-7', 'AA2', 'd-7', 'dd-3', 'A7',
# 'AAA-4', 'M-7', 'A3', 'M-6', 'A-4', 'd4', 'A-3', 'A1', 'dd3', 'd5', 'd7', 'AA6', 'AA5', 'M-3', 'A-6', 'AA-6',
# 'AA-2', 'AA4', 'm2', 'd2', 'P-4', 'M3', 'A4', 'm-7', 'P1', 'm6', 'A-2', 'd-2', 'AAA4', 'd-5', 'dd-4', 'dd2', 'dd-2',
# 'M7', 'AA-5', 'dd4', 'm3', 'm-6', 'AA-3', 'A6', 'AA7', 'd-4', 'dd-5', 'P4', 'AA1', 'm-3', 'd3', 'A-5', 'A5', 'A2',
# 'M6', 'AA-7', 'AA3', 'm-2', 'dd-7', 'dd-6'
# }
# SCALE_DEGREE_MAP = {
# 'A2', 'dd3', 'AA7', 'dd-2', 'm2', 'P8', 'A6', 'AAA4', 'd2', 'm7', 'A3', 'd3', 'A7', 'dd5', 'd5', 'd4', 'AA8', 'M2',
# 'm6', 'AA2', 'M7', 'dd4', 'm3', 'A5', 'AA5', 'A4', 'AA3', 'ddd5', 'M3', 'P5', 'd7', 'P4', 'AA1', 'dd7', 'AA6', 'A1',
# 'M6', 'AA4', 'A8', 'd6', 'dd2', 'dd6'
# }
SCALE_DEGREE_MAP = [
'A2', 'm2', 'P8', 'A6', 'A1', 'A5',
'm7', 'M2', 'm6', 'M7',
'm3', 'M3', 'P5', 'd7',
'P4', 'M6', 'A4', 'd5'
]
SCALE_DEGREE_MAP = {interval: i for i, interval in enumerate(SCALE_DEGREE_MAP)}
DIATONIC_TO_CHROMATIC_INTERVAL = {
1: (0, 0),
2: (1, 2),
3: (3, 4),
4: (5, 5),
5: (7, 7),
6: (8, 9),
7: (10, 11),
8: (12, 12)
}
SECONDS_TO_QL = lambda x: x * 2
METRIC_STRENGTH_QUARTER_ONSET = {
'6/8': {
0: 1,
0.25: 5,
0.5: 3,
0.75: 5,
1: 4,
1.25: 5,
1.5: 2,
1.75: 5,
2: 3,
2.25: 5,
2.5: 4,
2.75: 5
},
'4/4': {
0: 1,
0.25: 5,
0.5: 4,
0.75: 5,
1: 3,
1.25: 5,
1.5: 4,
1.75: 5,
2: 2,
2.25: 5,
2.5: 4,
2.75: 5,
3: 3,
3.25: 5,
3.5: 4,
3.75: 5
},
'3/4': {
0: 1,
0.25: 5,
0.5: 4,
0.75: 5,
1: 2,
1.25: 5,
1.5: 4,
1.75: 5,
2: 3,
2.25: 5,
2.5: 4,
2.75: 5
},
'9/8': {
0: 1,
0.25: 5,
0.5: 4,
0.75: 5,
1: 4,
1.25: 5,
1.5: 2,
1.75: 5,
2: 4,
2.25: 5,
2.5: 4,
2.75: 5,
3: 3,
3.25: 5,
3.5: 4,
3.75: 5,
4: 4,
4.25: 5
},
'2/4': {
0: 1,
0.125: 5,
0.25: 4,
0.375: 5,
0.5: 3,
0.625: 5,
0.75: 4,
0.875: 5,
1: 2,
1.125: 5,
1.25: 4,
1.375: 5,
1.5: 3,
1.625: 5,
1.75: 4,
1.875: 5
},
'4/2': {
0: 1,
0.5: 5,
1: 4,
1.5: 5,
2: 3,
2.5: 5,
3: 4,
3.5: 5,
4: 2,
4.5: 5,
5: 4,
5.5: 5,
6: 3,
6.5: 5,
7: 4,
7.5: 5
},
'12/8': {
0: 1,
0.25: 5,
0.5: 4,
0.75: 5,
1: 4,
1.25: 5,
1.5: 3,
1.75: 5,
2: 4,
2.25: 5,
2.5: 4,
2.75: 5,
3: 2,
3.25: 5,
3.5: 4,
3.75: 5,
4: 4,
4.25: 5,
4.5: 3,
4.75: 5,
5: 4,
5.25: 5,
5.5: 4,
5.75: 5
},
'2/2': {
0: 1,
0.25: 5,
0.5: 4,
0.75: 5,
1: 3,
1.25: 5,
1.5: 4,
1.75: 5,
2: 2,
2.25: 5,
2.5: 4,
2.75: 5,
3: 3,
3.25: 5,
3.5: 4,
3.75: 5
},
'3/8': {
0: 1,
0.125: 5,
0.25: 4,
0.375: 5,
0.5: 2,
0.625: 5,
0.75: 4,
0.875: 5,
1: 3,
1.125: 5,
1.25: 4,
1.375: 5
},
'3/2': {
0: 1,
0.5: 5,
1: 4,
1.5: 5,
2: 2,
2.5: 5,
3: 4,
3.5: 5,
4: 3,
4.5: 5,
5: 4,
5.5: 5
},
'12/16': {
0: 1,
0.125: 5,
0.25: 4,
0.375: 5,
0.5: 4,
0.625: 5,
0.75: 3,
0.875: 5,
1: 4,
1.125: 5,
1.25: 4,
1.375: 5,
1.5: 2,
1.625: 5,
1.75: 4,
1.875: 5,
2: 4,
2.125: 5,
2.25: 3,
2.375: 5,
2.5: 4,
2.625: 5,
2.75: 4,
2.875: 5
},
'2/1': {
0: 1,
0.5: 5,
1: 4,
1.5: 5,
2: 3,
2.5: 5,
3: 4,
3.5: 5,
4: 2,
4.5: 5,
5: 4,
5.5: 5,
6: 3,
6.5: 5,
7: 4,
7.5: 5
},
'6/16': {
0: 1,
0.125: 5,
0.25: 3,
0.375: 5,
0.5: 4,
0.625: 5,
0.75: 2,
0.875: 5,
1: 3,
1.125: 5,
1.25: 4,
1.375: 5
},
}
if __name__ == "__main__":
# from music21.pitch import Pitch
# from music21.interval import Interval
#
# alterations = ["", "-", "#", "--", "##"]
# note_names = ["A", "B", "C", "D", "E", "F", "G"]
# pitches = [Pitch(f"{note_name}{alteration}") for alteration in alterations for note_name in note_names]
# options = set()
# for _, pitch in enumerate(pitches):
# for _, note in enumerate(note_names):
# i = Interval(Pitch(note), pitch)
# options.add(i.directedName) if i.direction is music21.interval.Direction.ASCENDING else options.add(i.complement.directedName)
# print(len(options))
# print(options)
print(len(SCALE_DEGREE_MAP))
print(SCALE_DEGREE_MAP)