Spaces:
Running
on
Zero
Running
on
Zero
asigalov61
commited on
Upload TMIDIX.py
Browse files
TMIDIX.py
CHANGED
@@ -14,14 +14,14 @@ r'''############################################################################
|
|
14 |
#
|
15 |
# Project Los Angeles
|
16 |
#
|
17 |
-
# Tegridy Code
|
18 |
#
|
19 |
# https://github.com/Tegridy-Code/Project-Los-Angeles
|
20 |
#
|
21 |
#
|
22 |
###################################################################################
|
23 |
###################################################################################
|
24 |
-
# Copyright
|
25 |
#
|
26 |
# Licensed under the Apache License, Version 2.0 (the "License");
|
27 |
# you may not use this file except in compliance with the License.
|
@@ -9441,7 +9441,7 @@ def clean_string(original_string,
|
|
9441 |
cstr1 = cstr1.title()
|
9442 |
|
9443 |
if remove_duplicate_spaces:
|
9444 |
-
return re.sub(r'
|
9445 |
|
9446 |
else:
|
9447 |
return cstr1
|
@@ -9547,20 +9547,25 @@ NUMERALS = ["one", "two", "three", "four",
|
|
9547 |
|
9548 |
SEMITONES = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
|
9549 |
|
9550 |
-
|
9551 |
|
9552 |
###################################################################################
|
9553 |
|
9554 |
def alpha_str(string):
|
9555 |
-
|
|
|
9556 |
|
9557 |
###################################################################################
|
9558 |
|
9559 |
-
def escore_notes_to_text_description(escore_notes,
|
|
|
|
|
|
|
|
|
9560 |
|
9561 |
#==============================================================================
|
9562 |
|
9563 |
-
song_time_min = (escore_notes[-1][1] *
|
9564 |
|
9565 |
if song_time_min < 1.5:
|
9566 |
song_length = 'short'
|
@@ -9580,31 +9585,43 @@ def escore_notes_to_text_description(escore_notes, song_name='', artist_name='')
|
|
9580 |
if len(escore_times) > 0:
|
9581 |
if len(escore_times) == len(set(escore_times)):
|
9582 |
comp_type = 'monophonic melody'
|
|
|
9583 |
|
9584 |
elif len(escore_times) >= len(set(escore_times)) and 1 in Counter(escore_times).values():
|
9585 |
comp_type = 'melody and accompaniment'
|
|
|
9586 |
|
9587 |
elif len(escore_times) >= len(set(escore_times)) and 1 not in Counter(escore_times).values():
|
9588 |
comp_type = 'accompaniment'
|
|
|
9589 |
|
9590 |
else:
|
9591 |
-
comp_type = '
|
|
|
9592 |
|
9593 |
#==============================================================================
|
9594 |
|
9595 |
-
|
|
|
|
|
9596 |
|
9597 |
instruments = [alpha_str(Number2patch[p]) for p in patches if p < 128]
|
|
|
|
|
|
|
|
|
|
|
|
|
9598 |
|
9599 |
if 128 in patches:
|
9600 |
drums_present = True
|
9601 |
|
9602 |
-
|
9603 |
-
drums_present = False
|
9604 |
|
9605 |
-
|
9606 |
|
9607 |
-
|
|
|
9608 |
|
9609 |
#==============================================================================
|
9610 |
|
@@ -9616,24 +9633,16 @@ def escore_notes_to_text_description(escore_notes, song_name='', artist_name='')
|
|
9616 |
key = SEMITONES[statistics.mode(pitches) % 12]
|
9617 |
|
9618 |
#==============================================================================
|
9619 |
-
|
|
|
9620 |
mood = ''
|
9621 |
|
9622 |
if pitches:
|
9623 |
|
9624 |
-
|
9625 |
-
|
9626 |
-
tones_chords = Counter()
|
9627 |
-
|
9628 |
-
for c in cscore:
|
9629 |
-
if len([e for e in c if e[3] != 9]) > 0:
|
9630 |
-
tones_chords[tuple(sorted(set([e[4] % 12 for e in c if e[3] != 9])))] += 1
|
9631 |
-
|
9632 |
-
most_common_tones_chords = [check_and_fix_tones_chord(list(c[0])) for c in tones_chords.most_common(10)]
|
9633 |
|
9634 |
-
|
9635 |
-
|
9636 |
-
mood = MOOD_SCALES[mood_scale]
|
9637 |
|
9638 |
#==============================================================================
|
9639 |
|
@@ -9641,22 +9650,22 @@ def escore_notes_to_text_description(escore_notes, song_name='', artist_name='')
|
|
9641 |
|
9642 |
escore_averages = escore_notes_averages(escore_notes, return_ptcs_and_vels=True)
|
9643 |
|
9644 |
-
if escore_averages[0] <
|
9645 |
rythm = 'fast'
|
9646 |
|
9647 |
-
elif
|
9648 |
rythm = 'average'
|
9649 |
|
9650 |
-
elif escore_averages[0] >
|
9651 |
rythm = 'slow'
|
9652 |
|
9653 |
-
if escore_averages[1] <
|
9654 |
tempo = 'fast'
|
9655 |
|
9656 |
-
elif
|
9657 |
tempo = 'average'
|
9658 |
|
9659 |
-
elif escore_averages[1] >
|
9660 |
tempo = 'slow'
|
9661 |
|
9662 |
if escore_averages[2] < 50:
|
@@ -9668,21 +9677,46 @@ def escore_notes_to_text_description(escore_notes, song_name='', artist_name='')
|
|
9668 |
elif escore_averages[2] > 70:
|
9669 |
tone = 'treble'
|
9670 |
|
9671 |
-
if escore_averages[3] <
|
9672 |
dynamics = 'quiet'
|
9673 |
|
9674 |
-
elif
|
9675 |
dynamics = 'average'
|
9676 |
|
9677 |
-
elif escore_averages[3] >
|
9678 |
dynamics = 'loud'
|
9679 |
|
9680 |
#==============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9681 |
|
9682 |
description = ''
|
9683 |
|
9684 |
if song_name != '':
|
9685 |
-
description = '
|
9686 |
|
9687 |
if artist_name != '':
|
9688 |
description += ' by ' + artist_name
|
@@ -9711,39 +9745,156 @@ def escore_notes_to_text_description(escore_notes, song_name='', artist_name='')
|
|
9711 |
else:
|
9712 |
description += ' without drums'
|
9713 |
|
9714 |
-
if key and
|
9715 |
-
description += ' in ' + key + ' ' +
|
9716 |
|
9717 |
description += '.'
|
9718 |
|
9719 |
description += '\n'
|
9720 |
|
9721 |
if pitches:
|
9722 |
-
|
9723 |
-
description += 'It has '
|
9724 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9725 |
description += rythm + ' rythm, '
|
9726 |
description += tempo + ' tempo, '
|
9727 |
description += tone + ' tone and '
|
9728 |
description += dynamics + ' dynamics.'
|
9729 |
|
9730 |
description += '\n'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9731 |
|
9732 |
-
|
9733 |
-
|
9734 |
-
|
9735 |
-
|
9736 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9737 |
else:
|
9738 |
-
|
9739 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9740 |
|
9741 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9742 |
|
9743 |
if drums_present and most_common_drums:
|
9744 |
-
|
9745 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
9746 |
|
|
|
|
|
9747 |
#==============================================================================
|
9748 |
|
9749 |
return description
|
@@ -10298,6 +10449,645 @@ ALL_BASE_CHORDS_SORTED = [[0], [0, 2], [0, 2, 4], [0, 2, 4, 6], [0, 2, 4, 6, 8],
|
|
10298 |
[0, 6, 9], [0, 6, 10], [0, 7], [0, 7, 9], [0, 7, 10], [0, 8], [0, 8, 10],
|
10299 |
[0, 9], [0, 10]]
|
10300 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10301 |
###################################################################################
|
10302 |
#
|
10303 |
# This is the end of the TMIDI X Python module
|
|
|
14 |
#
|
15 |
# Project Los Angeles
|
16 |
#
|
17 |
+
# Tegridy Code 2025
|
18 |
#
|
19 |
# https://github.com/Tegridy-Code/Project-Los-Angeles
|
20 |
#
|
21 |
#
|
22 |
###################################################################################
|
23 |
###################################################################################
|
24 |
+
# Copyright 2025 Project Los Angeles / Tegridy Code
|
25 |
#
|
26 |
# Licensed under the Apache License, Version 2.0 (the "License");
|
27 |
# you may not use this file except in compliance with the License.
|
|
|
9441 |
cstr1 = cstr1.title()
|
9442 |
|
9443 |
if remove_duplicate_spaces:
|
9444 |
+
return re.sub(r'[ ]+', ' ', cstr1).strip()
|
9445 |
|
9446 |
else:
|
9447 |
return cstr1
|
|
|
9547 |
|
9548 |
SEMITONES = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
|
9549 |
|
9550 |
+
BASIC_SCALES = ['Major', 'Minor']
|
9551 |
|
9552 |
###################################################################################
|
9553 |
|
9554 |
def alpha_str(string):
|
9555 |
+
astr = re.sub(r'[^a-zA-Z ()0-9]', '', string).strip()
|
9556 |
+
return re.sub(r'\s+', ' ', astr).strip()
|
9557 |
|
9558 |
###################################################################################
|
9559 |
|
9560 |
+
def escore_notes_to_text_description(escore_notes,
|
9561 |
+
song_name='',
|
9562 |
+
artist_name='',
|
9563 |
+
timings_divider=16,
|
9564 |
+
):
|
9565 |
|
9566 |
#==============================================================================
|
9567 |
|
9568 |
+
song_time_min = (escore_notes[-1][1] * timings_divider) / 1000 / 60
|
9569 |
|
9570 |
if song_time_min < 1.5:
|
9571 |
song_length = 'short'
|
|
|
9585 |
if len(escore_times) > 0:
|
9586 |
if len(escore_times) == len(set(escore_times)):
|
9587 |
comp_type = 'monophonic melody'
|
9588 |
+
ctype = 'melody'
|
9589 |
|
9590 |
elif len(escore_times) >= len(set(escore_times)) and 1 in Counter(escore_times).values():
|
9591 |
comp_type = 'melody and accompaniment'
|
9592 |
+
ctype = 'song'
|
9593 |
|
9594 |
elif len(escore_times) >= len(set(escore_times)) and 1 not in Counter(escore_times).values():
|
9595 |
comp_type = 'accompaniment'
|
9596 |
+
ctype = 'song'
|
9597 |
|
9598 |
else:
|
9599 |
+
comp_type = 'drum track'
|
9600 |
+
ctype = 'drum track'
|
9601 |
|
9602 |
#==============================================================================
|
9603 |
|
9604 |
+
all_patches = [e[6] for e in escore_notes]
|
9605 |
+
|
9606 |
+
patches = ordered_set(all_patches)
|
9607 |
|
9608 |
instruments = [alpha_str(Number2patch[p]) for p in patches if p < 128]
|
9609 |
+
|
9610 |
+
if instruments:
|
9611 |
+
|
9612 |
+
nd_patches_counts = Counter([p for p in all_patches if p < 128]).most_common()
|
9613 |
+
|
9614 |
+
dominant_instrument = alpha_str(Number2patch[nd_patches_counts[0][0]])
|
9615 |
|
9616 |
if 128 in patches:
|
9617 |
drums_present = True
|
9618 |
|
9619 |
+
drums_pitches = [e[4] for e in escore_notes if e[3] == 9]
|
|
|
9620 |
|
9621 |
+
most_common_drums = [alpha_str(Notenum2percussion[p[0]]) for p in Counter(drums_pitches).most_common(3) if p[0] in Notenum2percussion]
|
9622 |
|
9623 |
+
else:
|
9624 |
+
drums_present = False
|
9625 |
|
9626 |
#==============================================================================
|
9627 |
|
|
|
9633 |
key = SEMITONES[statistics.mode(pitches) % 12]
|
9634 |
|
9635 |
#==============================================================================
|
9636 |
+
|
9637 |
+
scale = ''
|
9638 |
mood = ''
|
9639 |
|
9640 |
if pitches:
|
9641 |
|
9642 |
+
result = escore_notes_scale(escore_notes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9643 |
|
9644 |
+
scale = result[0]
|
9645 |
+
mood = result[1].split(' ')[0].lower()
|
|
|
9646 |
|
9647 |
#==============================================================================
|
9648 |
|
|
|
9650 |
|
9651 |
escore_averages = escore_notes_averages(escore_notes, return_ptcs_and_vels=True)
|
9652 |
|
9653 |
+
if escore_averages[0] < (128 / timings_divider):
|
9654 |
rythm = 'fast'
|
9655 |
|
9656 |
+
elif (128 / timings_divider) <= escore_averages[0] <= (192 / timings_divider):
|
9657 |
rythm = 'average'
|
9658 |
|
9659 |
+
elif escore_averages[0] > (192 / timings_divider):
|
9660 |
rythm = 'slow'
|
9661 |
|
9662 |
+
if escore_averages[1] < (256 / timings_divider):
|
9663 |
tempo = 'fast'
|
9664 |
|
9665 |
+
elif (256 / timings_divider) <= escore_averages[1] <= (384 / timings_divider):
|
9666 |
tempo = 'average'
|
9667 |
|
9668 |
+
elif escore_averages[1] > (384 / timings_divider):
|
9669 |
tempo = 'slow'
|
9670 |
|
9671 |
if escore_averages[2] < 50:
|
|
|
9677 |
elif escore_averages[2] > 70:
|
9678 |
tone = 'treble'
|
9679 |
|
9680 |
+
if escore_averages[3] < 64:
|
9681 |
dynamics = 'quiet'
|
9682 |
|
9683 |
+
elif 64 <= escore_averages[3] <= 96:
|
9684 |
dynamics = 'average'
|
9685 |
|
9686 |
+
elif escore_averages[3] > 96:
|
9687 |
dynamics = 'loud'
|
9688 |
|
9689 |
#==============================================================================
|
9690 |
+
|
9691 |
+
mono_melodies = escore_notes_monoponic_melodies([e for e in escore_notes if e[6] < 88])
|
9692 |
+
|
9693 |
+
lead_melodies = []
|
9694 |
+
base_melodies = []
|
9695 |
+
|
9696 |
+
if mono_melodies:
|
9697 |
+
|
9698 |
+
for mel in mono_melodies:
|
9699 |
+
|
9700 |
+
escore_avgs = escore_notes_pitches_range(escore_notes, range_patch = mel[0])
|
9701 |
+
|
9702 |
+
if mel[0] in LEAD_INSTRUMENTS and escore_avgs[3] > 60:
|
9703 |
+
lead_melodies.append([Number2patch[mel[0]], mel[1]])
|
9704 |
+
|
9705 |
+
elif mel[0] in BASE_INSTRUMENTS and escore_avgs[3] <= 60:
|
9706 |
+
base_melodies.append([Number2patch[mel[0]], mel[1]])
|
9707 |
+
|
9708 |
+
if lead_melodies:
|
9709 |
+
lead_melodies.sort(key=lambda x: x[1], reverse=True)
|
9710 |
+
|
9711 |
+
if base_melodies:
|
9712 |
+
base_melodies.sort(key=lambda x: x[1], reverse=True)
|
9713 |
+
|
9714 |
+
#==============================================================================
|
9715 |
|
9716 |
description = ''
|
9717 |
|
9718 |
if song_name != '':
|
9719 |
+
description = 'The song "' + song_name + '"'
|
9720 |
|
9721 |
if artist_name != '':
|
9722 |
description += ' by ' + artist_name
|
|
|
9745 |
else:
|
9746 |
description += ' without drums'
|
9747 |
|
9748 |
+
if key and scale:
|
9749 |
+
description += ' in ' + key + ' ' + scale
|
9750 |
|
9751 |
description += '.'
|
9752 |
|
9753 |
description += '\n'
|
9754 |
|
9755 |
if pitches:
|
|
|
|
|
9756 |
|
9757 |
+
if comp_type not in ['monophonic melody', 'drum track']:
|
9758 |
+
|
9759 |
+
description += 'This ' + mood + ' song has '
|
9760 |
+
|
9761 |
+
elif comp_type == 'monophonic melody':
|
9762 |
+
|
9763 |
+
description += 'This ' + mood + ' melody has '
|
9764 |
+
|
9765 |
+
else:
|
9766 |
+
description += 'TThis drum track has '
|
9767 |
+
|
9768 |
description += rythm + ' rythm, '
|
9769 |
description += tempo + ' tempo, '
|
9770 |
description += tone + ' tone and '
|
9771 |
description += dynamics + ' dynamics.'
|
9772 |
|
9773 |
description += '\n'
|
9774 |
+
|
9775 |
+
if instruments:
|
9776 |
+
|
9777 |
+
if comp_type not in ['monophonic melody', 'drum track']:
|
9778 |
+
|
9779 |
+
description += 'The song '
|
9780 |
+
|
9781 |
+
if len(instruments) > 1:
|
9782 |
+
|
9783 |
+
description += 'features ' + NUMERALS[max(0, min(15, len(instruments)-1))] + ' instruments: '
|
9784 |
+
description += ', '.join(instruments[:-1]) + ' and ' + instruments[-1] + '.'
|
9785 |
+
|
9786 |
+
else:
|
9787 |
+
description += 'features one instrument: ' + instruments[0] + '.'
|
9788 |
+
|
9789 |
+
|
9790 |
+
description += '\n'
|
9791 |
+
|
9792 |
+
if instruments[0] != dominant_instrument:
|
9793 |
+
description += 'The song opens with ' + instruments[0]
|
9794 |
|
9795 |
+
description += ' and primarily performed on ' + dominant_instrument + '.'
|
9796 |
+
|
9797 |
+
else:
|
9798 |
+
description += 'The song opens with and performed on ' + instruments[0] + '.'
|
9799 |
+
|
9800 |
+
description += '\n'
|
9801 |
+
|
9802 |
+
if lead_melodies or base_melodies:
|
9803 |
+
|
9804 |
+
tm_count = len(lead_melodies + base_melodies)
|
9805 |
+
|
9806 |
+
if tm_count == 1:
|
9807 |
+
|
9808 |
+
if lead_melodies:
|
9809 |
+
description += 'The song has one distinct lead melody played on ' + lead_melodies[0][0] + '.'
|
9810 |
+
|
9811 |
+
else:
|
9812 |
+
description += 'The song has one distinct base melody played on ' + base_melodies[0][0] + '.'
|
9813 |
+
|
9814 |
+
description += '\n'
|
9815 |
+
|
9816 |
else:
|
9817 |
+
|
9818 |
+
if lead_melodies and not base_melodies:
|
9819 |
+
|
9820 |
+
if len(lead_melodies) == 1:
|
9821 |
+
mword = 'melody'
|
9822 |
+
|
9823 |
+
else:
|
9824 |
+
mword = 'melodies'
|
9825 |
+
|
9826 |
+
description += 'The song has ' + NUMERALS[len(lead_melodies)-1] + ' distinct lead ' + mword + ' played on '
|
9827 |
+
|
9828 |
+
if len(lead_melodies) > 1:
|
9829 |
+
description += ', '.join([l[0] for l in lead_melodies[:-1]]) + ' and ' + lead_melodies[-1][0] + '.'
|
9830 |
+
|
9831 |
+
else:
|
9832 |
+
description += lead_melodies[0][0] + '.'
|
9833 |
+
|
9834 |
+
description += '\n'
|
9835 |
+
|
9836 |
+
elif base_melodies and not lead_melodies:
|
9837 |
+
|
9838 |
+
if len(base_melodies) == 1:
|
9839 |
+
mword = 'melody'
|
9840 |
+
|
9841 |
+
else:
|
9842 |
+
mword = 'melodies'
|
9843 |
+
|
9844 |
+
description += 'The song has ' + NUMERALS[len(base_melodies)-1] + ' distinct base ' + mword + ' played on '
|
9845 |
+
|
9846 |
+
if len(base_melodies) > 1:
|
9847 |
+
description += ', '.join([b[0] for b in base_melodies[:-1]]) + ' and ' + base_melodies[-1][0] + '.'
|
9848 |
+
|
9849 |
+
else:
|
9850 |
+
description += base_melodies[0][0] + '.'
|
9851 |
+
|
9852 |
+
description += '\n'
|
9853 |
|
9854 |
+
elif lead_melodies and base_melodies:
|
9855 |
+
|
9856 |
+
if len(lead_melodies) == 1:
|
9857 |
+
lmword = 'melody'
|
9858 |
+
|
9859 |
+
else:
|
9860 |
+
lmword = 'melodies'
|
9861 |
+
|
9862 |
+
description += 'The song has ' + NUMERALS[len(lead_melodies)-1] + ' distinct lead ' + lmword + ' played on '
|
9863 |
+
|
9864 |
+
if len(lead_melodies) > 1:
|
9865 |
+
description += ', '.join([l[0] for l in lead_melodies[:-1]]) + ' and ' + lead_melodies[-1][0] + '.'
|
9866 |
+
|
9867 |
+
else:
|
9868 |
+
description += lead_melodies[0][0] + '.'
|
9869 |
+
|
9870 |
+
if len(base_melodies) == 1:
|
9871 |
+
bmword = 'melody'
|
9872 |
+
|
9873 |
+
else:
|
9874 |
+
bmword = 'melodies'
|
9875 |
+
|
9876 |
+
description += ' And ' + NUMERALS[len(base_melodies)-1] + ' distinct base ' + bmword + ' played on '
|
9877 |
+
|
9878 |
+
if len(base_melodies) > 1:
|
9879 |
+
description += ', '.join([b[0] for b in base_melodies[:-1]]) + ' and ' + base_melodies[-1][0] + '.'
|
9880 |
+
|
9881 |
+
else:
|
9882 |
+
description += base_melodies[0][0] + '.'
|
9883 |
+
|
9884 |
+
description += '\n'
|
9885 |
|
9886 |
if drums_present and most_common_drums:
|
9887 |
+
|
9888 |
+
if len(most_common_drums) > 1:
|
9889 |
+
description += 'The drum track has predominant '
|
9890 |
+
description += ', '.join(most_common_drums[:-1]) + ' and ' + most_common_drums[-1] + '.'
|
9891 |
+
|
9892 |
+
else:
|
9893 |
+
description += 'The drum track is a solo '
|
9894 |
+
description += most_common_drums[0] + '.'
|
9895 |
|
9896 |
+
description += '\n'
|
9897 |
+
|
9898 |
#==============================================================================
|
9899 |
|
9900 |
return description
|
|
|
10449 |
[0, 6, 9], [0, 6, 10], [0, 7], [0, 7, 9], [0, 7, 10], [0, 8], [0, 8, 10],
|
10450 |
[0, 9], [0, 10]]
|
10451 |
|
10452 |
+
###################################################################################
|
10453 |
+
|
10454 |
+
MAJOR_SCALE_CHORDS_COUNTS = [[317, 6610], [320, 6468], [267, 6460], [89, 6329], [301, 6228], [178, 6201],
|
10455 |
+
[0, 5822], [314, 5805], [309, 5677], [319, 5545], [288, 5494], [233, 5395],
|
10456 |
+
[112, 2232], [194, 1956], [127, 1935], [216, 1884], [256, 1871], [283, 1815],
|
10457 |
+
[201, 1768], [16, 1756], [105, 1743], [38, 1727], [23, 1718], [249, 1386],
|
10458 |
+
[272, 796], [91, 770], [191, 740], [303, 735], [181, 718], [306, 717],
|
10459 |
+
[235, 703], [183, 690], [94, 686], [13, 686], [269, 677], [280, 675],
|
10460 |
+
[102, 665], [92, 662], [293, 659], [212, 658], [114, 656], [37, 653],
|
10461 |
+
[180, 651], [215, 644], [316, 640], [290, 636], [5, 636], [110, 625],
|
10462 |
+
[270, 625], [3, 624], [238, 615], [123, 609], [34, 591], [254, 584],
|
10463 |
+
[258, 571], [126, 567], [2, 559], [246, 556], [104, 556], [203, 550],
|
10464 |
+
[291, 537], [311, 522], [304, 520], [193, 509], [236, 496], [199, 493],
|
10465 |
+
[15, 468], [25, 452], [312, 444], [282, 443], [248, 433], [21, 408],
|
10466 |
+
[268, 281], [179, 273], [144, 259], [90, 252], [162, 250], [234, 250],
|
10467 |
+
[1, 246], [221, 214], [73, 213], [43, 213], [45, 213], [134, 212], [318, 210],
|
10468 |
+
[119, 210], [159, 209], [120, 209], [302, 207], [310, 201], [289, 195],
|
10469 |
+
[42, 193], [264, 193], [220, 185], [131, 183], [55, 180], [315, 180],
|
10470 |
+
[132, 176], [30, 174], [31, 172], [209, 171], [227, 169], [217, 163],
|
10471 |
+
[223, 159], [70, 158], [39, 157], [36, 153], [214, 142], [196, 141],
|
10472 |
+
[285, 141], [8, 137], [208, 133], [125, 133], [147, 130], [186, 130],
|
10473 |
+
[97, 130], [49, 130], [58, 130], [128, 130], [138, 128], [241, 125],
|
10474 |
+
[228, 124], [263, 120], [251, 120], [275, 119], [296, 118], [259, 116],
|
10475 |
+
[99, 114], [10, 113], [50, 111], [273, 111], [139, 111], [298, 106], [18, 105],
|
10476 |
+
[153, 105], [7, 101], [277, 101], [243, 99], [96, 99], [9, 96], [160, 96],
|
10477 |
+
[188, 95], [115, 94], [24, 93], [107, 92], [204, 90], [150, 90], [148, 84],
|
10478 |
+
[202, 83], [213, 82], [187, 82], [35, 80], [113, 79], [98, 78], [239, 77],
|
10479 |
+
[59, 77], [26, 76], [281, 76], [184, 75], [64, 75], [124, 75], [71, 75],
|
10480 |
+
[257, 75], [95, 74], [294, 73], [192, 70], [247, 70], [61, 67], [307, 66],
|
10481 |
+
[242, 65], [218, 65], [146, 64], [276, 63], [6, 63], [68, 60], [284, 59],
|
10482 |
+
[103, 59], [297, 56], [14, 56], [185, 55], [57, 55], [40, 55], [129, 54],
|
10483 |
+
[274, 52], [308, 52], [46, 51], [224, 49], [240, 47], [135, 46], [17, 45],
|
10484 |
+
[295, 45], [106, 45], [48, 44], [157, 44], [206, 43], [195, 42], [158, 42],
|
10485 |
+
[69, 41], [117, 41], [225, 40], [222, 37], [226, 35], [261, 34], [164, 32],
|
10486 |
+
[75, 32], [28, 32], [11, 32], [250, 31], [44, 30], [137, 28], [47, 26],
|
10487 |
+
[133, 26], [255, 25], [182, 24], [136, 24], [197, 23], [93, 23], [237, 22],
|
10488 |
+
[287, 22], [165, 22], [79, 21], [271, 21], [109, 21], [253, 20], [76, 20],
|
10489 |
+
[168, 19], [155, 19], [149, 19], [108, 19], [4, 18], [51, 18], [292, 18],
|
10490 |
+
[198, 18], [41, 17], [286, 17], [19, 17], [219, 17], [173, 17], [66, 16],
|
10491 |
+
[54, 16], [229, 16], [140, 16], [175, 15], [171, 15], [82, 15], [130, 15],
|
10492 |
+
[20, 15], [230, 15], [244, 14], [145, 14], [84, 14], [305, 14], [278, 14],
|
10493 |
+
[86, 13], [60, 13], [232, 12], [100, 12], [141, 12], [52, 12], [189, 12],
|
10494 |
+
[252, 12], [56, 11], [53, 11], [143, 10], [151, 10], [154, 10], [163, 9],
|
10495 |
+
[116, 9], [27, 9], [65, 9], [313, 9], [205, 9], [170, 8], [62, 8], [299, 7],
|
10496 |
+
[142, 7], [231, 7], [156, 6], [22, 6], [63, 6], [152, 6], [77, 5], [67, 5],
|
10497 |
+
[166, 5], [174, 5], [85, 4], [72, 4], [190, 4], [111, 4], [101, 4], [200, 4],
|
10498 |
+
[12, 4], [245, 3], [300, 3], [279, 3], [81, 2], [210, 2], [32, 2], [265, 2],
|
10499 |
+
[260, 2], [74, 2], [161, 1], [207, 1], [29, 1], [118, 1], [262, 1], [121, 1]]
|
10500 |
+
|
10501 |
+
###################################################################################
|
10502 |
+
|
10503 |
+
MINOR_SCALE_CHORDS_COUNTS = [[267, 10606], [89, 10562], [301, 10522], [320, 10192], [178, 10191],
|
10504 |
+
[317, 10153], [233, 10101], [314, 10065], [288, 9914], [0, 9884], [309, 9694],
|
10505 |
+
[319, 9648], [114, 1963], [193, 1778], [25, 1705], [104, 1689], [248, 1671],
|
10506 |
+
[282, 1614], [283, 1610], [127, 1530], [203, 1525], [37, 1508], [215, 1473],
|
10507 |
+
[105, 1465], [38, 1462], [258, 1445], [112, 1419], [94, 1413], [280, 1391],
|
10508 |
+
[194, 1388], [126, 1384], [16, 1374], [272, 1370], [23, 1364], [238, 1351],
|
10509 |
+
[306, 1342], [303, 1340], [5, 1338], [183, 1334], [102, 1333], [290, 1322],
|
10510 |
+
[269, 1312], [191, 1311], [249, 1305], [15, 1291], [246, 1290], [316, 1288],
|
10511 |
+
[13, 1279], [216, 1278], [235, 1275], [256, 1268], [311, 1241], [293, 1228],
|
10512 |
+
[91, 1219], [180, 1173], [34, 1167], [2, 1138], [212, 1131], [123, 1118],
|
10513 |
+
[201, 1103], [270, 1017], [304, 961], [181, 958], [92, 943], [3, 940],
|
10514 |
+
[236, 932], [254, 923], [291, 921], [110, 920], [21, 911], [312, 891],
|
10515 |
+
[199, 832], [268, 431], [179, 395], [234, 395], [302, 385], [144, 368],
|
10516 |
+
[90, 365], [289, 362], [310, 352], [318, 350], [1, 332], [55, 323], [315, 322],
|
10517 |
+
[8, 307], [162, 304], [97, 302], [186, 302], [241, 300], [10, 299], [217, 289],
|
10518 |
+
[275, 275], [128, 267], [73, 266], [243, 265], [125, 262], [296, 259],
|
10519 |
+
[298, 251], [36, 250], [39, 250], [99, 249], [214, 231], [119, 230],
|
10520 |
+
[120, 227], [188, 227], [159, 226], [264, 225], [263, 225], [138, 223],
|
10521 |
+
[31, 222], [227, 219], [134, 216], [277, 214], [70, 210], [209, 207],
|
10522 |
+
[30, 203], [49, 186], [46, 185], [45, 184], [221, 172], [281, 170], [96, 169],
|
10523 |
+
[131, 169], [224, 165], [148, 159], [59, 157], [43, 157], [7, 157], [247, 155],
|
10524 |
+
[208, 153], [132, 152], [274, 150], [223, 149], [135, 148], [273, 148],
|
10525 |
+
[240, 137], [220, 132], [185, 131], [239, 131], [42, 130], [147, 119],
|
10526 |
+
[213, 117], [307, 115], [24, 112], [95, 108], [192, 107], [150, 106],
|
10527 |
+
[294, 105], [106, 104], [58, 102], [103, 102], [17, 100], [129, 100], [61, 99],
|
10528 |
+
[9, 98], [139, 96], [295, 96], [284, 96], [146, 96], [218, 95], [184, 94],
|
10529 |
+
[308, 87], [195, 87], [40, 86], [14, 85], [50, 82], [250, 82], [285, 81],
|
10530 |
+
[57, 79], [259, 79], [6, 79], [276, 78], [228, 78], [35, 76], [187, 75],
|
10531 |
+
[242, 73], [206, 73], [160, 72], [113, 72], [117, 72], [261, 72], [98, 71],
|
10532 |
+
[202, 70], [115, 70], [158, 69], [71, 68], [48, 67], [28, 67], [204, 66],
|
10533 |
+
[157, 64], [124, 63], [257, 59], [196, 59], [69, 59], [68, 57], [251, 55],
|
10534 |
+
[225, 50], [137, 50], [107, 49], [165, 49], [297, 48], [64, 46], [153, 45],
|
10535 |
+
[226, 44], [198, 44], [287, 43], [26, 43], [219, 41], [253, 40], [109, 40],
|
10536 |
+
[66, 39], [47, 39], [41, 39], [76, 38], [11, 38], [136, 38], [130, 36],
|
10537 |
+
[155, 35], [18, 31], [93, 31], [20, 30], [271, 29], [4, 28], [292, 28],
|
10538 |
+
[237, 27], [182, 26], [62, 26], [164, 25], [151, 25], [108, 25], [286, 24],
|
10539 |
+
[145, 24], [305, 24], [75, 24], [56, 23], [149, 23], [252, 23], [197, 23],
|
10540 |
+
[255, 23], [313, 21], [60, 18], [244, 17], [278, 17], [189, 17], [100, 16],
|
10541 |
+
[299, 15], [200, 13], [175, 13], [111, 13], [22, 13], [170, 12], [232, 11],
|
10542 |
+
[86, 11], [141, 11], [52, 11], [65, 10], [173, 10], [133, 10], [222, 10],
|
10543 |
+
[143, 10], [154, 9], [82, 8], [19, 8], [85, 8], [44, 8], [84, 8], [163, 7],
|
10544 |
+
[205, 7], [230, 7], [54, 7], [174, 7], [116, 7], [27, 7], [171, 7], [229, 6],
|
10545 |
+
[81, 5], [79, 4], [142, 4], [231, 4], [210, 3], [168, 3], [53, 3], [51, 3],
|
10546 |
+
[74, 3], [265, 3], [260, 3], [152, 2], [245, 2], [279, 2], [190, 2], [12, 2],
|
10547 |
+
[101, 2], [262, 1], [63, 1], [72, 1], [207, 1], [166, 1], [83, 1], [176, 1],
|
10548 |
+
[118, 1], [67, 1], [172, 1], [29, 1], [121, 1], [77, 1], [266, 1], [156, 1],
|
10549 |
+
[211, 1], [300, 1], [87, 1], [140, 1], [161, 1]]
|
10550 |
+
|
10551 |
+
###################################################################################
|
10552 |
+
|
10553 |
+
def get_weighted_score(src_order, trg_order):
|
10554 |
+
|
10555 |
+
score = 0
|
10556 |
+
|
10557 |
+
for i, (item, count) in enumerate(src_order):
|
10558 |
+
if item in trg_order:
|
10559 |
+
score += count * abs(i - trg_order.index(item))
|
10560 |
+
|
10561 |
+
else:
|
10562 |
+
score += count * len(trg_order)
|
10563 |
+
|
10564 |
+
return score
|
10565 |
+
|
10566 |
+
###################################################################################
|
10567 |
+
|
10568 |
+
def escore_notes_scale(escore_notes,
|
10569 |
+
score_mult_factor=3,
|
10570 |
+
start_note=0,
|
10571 |
+
num_notes=-1,
|
10572 |
+
return_scale_indexes=False
|
10573 |
+
):
|
10574 |
+
|
10575 |
+
trg_chords = []
|
10576 |
+
|
10577 |
+
for i in range(-score_mult_factor, score_mult_factor):
|
10578 |
+
|
10579 |
+
trans_escore_notes = transpose_escore_notes(escore_notes[start_note:start_note+num_notes], i)
|
10580 |
+
|
10581 |
+
cscore = chordify_score([1000, trans_escore_notes])
|
10582 |
+
|
10583 |
+
tones_chords = []
|
10584 |
+
|
10585 |
+
for c in cscore:
|
10586 |
+
|
10587 |
+
seen = []
|
10588 |
+
pitches = []
|
10589 |
+
|
10590 |
+
for e in c:
|
10591 |
+
|
10592 |
+
if e[4] not in seen:
|
10593 |
+
pitches.append(e[4])
|
10594 |
+
seen.append(e[4])
|
10595 |
+
|
10596 |
+
if pitches:
|
10597 |
+
|
10598 |
+
tones_chord = sorted(set([p % 12 for p in pitches]))
|
10599 |
+
|
10600 |
+
if tones_chord not in ALL_CHORDS_SORTED:
|
10601 |
+
tones_chord = check_and_fix_tones_chord(tones_chord)
|
10602 |
+
|
10603 |
+
tones_chords.append(ALL_CHORDS_SORTED.index(tones_chord))
|
10604 |
+
|
10605 |
+
if tones_chords:
|
10606 |
+
trg_chords.extend(tones_chords)
|
10607 |
+
|
10608 |
+
#========================================================================
|
10609 |
+
|
10610 |
+
scales_results = []
|
10611 |
+
|
10612 |
+
#========================================================================
|
10613 |
+
|
10614 |
+
if trg_chords:
|
10615 |
+
|
10616 |
+
#========================================================================
|
10617 |
+
|
10618 |
+
src_order = Counter(trg_chords).most_common()
|
10619 |
+
|
10620 |
+
trg1_items = [item for item, count in MAJOR_SCALE_CHORDS_COUNTS]
|
10621 |
+
trg2_items = [item for item, count in MINOR_SCALE_CHORDS_COUNTS]
|
10622 |
+
|
10623 |
+
|
10624 |
+
trg1_score = get_weighted_score(src_order, trg1_items)
|
10625 |
+
trg2_score = get_weighted_score(src_order, trg2_items)
|
10626 |
+
|
10627 |
+
#========================================================================
|
10628 |
+
|
10629 |
+
if trg1_score <= trg2_score:
|
10630 |
+
|
10631 |
+
if return_scale_indexes:
|
10632 |
+
scales_results.append(1)
|
10633 |
+
|
10634 |
+
else:
|
10635 |
+
scales_results.append('Major')
|
10636 |
+
|
10637 |
+
else:
|
10638 |
+
if return_scale_indexes:
|
10639 |
+
scales_results.append(0)
|
10640 |
+
|
10641 |
+
else:
|
10642 |
+
scales_results.append('Minor')
|
10643 |
+
|
10644 |
+
#========================================================================
|
10645 |
+
|
10646 |
+
best_match = None
|
10647 |
+
best_score = float('inf')
|
10648 |
+
|
10649 |
+
for trg_order in ALL_MOOD_TYPES:
|
10650 |
+
|
10651 |
+
trg_items = [item for item, count in trg_order]
|
10652 |
+
|
10653 |
+
trg_score = get_weighted_score(src_order, trg_items)
|
10654 |
+
|
10655 |
+
if trg_score < best_score:
|
10656 |
+
best_score = trg_score
|
10657 |
+
|
10658 |
+
if return_scale_indexes:
|
10659 |
+
best_match = ALL_MOOD_TYPES.index(trg_order)
|
10660 |
+
|
10661 |
+
else:
|
10662 |
+
best_match = ALL_MOOD_TYPES_LABELS[ALL_MOOD_TYPES.index(trg_order)]
|
10663 |
+
|
10664 |
+
scales_results.append(best_match)
|
10665 |
+
|
10666 |
+
else:
|
10667 |
+
if return_scale_indexes:
|
10668 |
+
scales_results.extend([-1, -1])
|
10669 |
+
|
10670 |
+
else:
|
10671 |
+
scales_results.extend(['Unknown', 'Unknown'])
|
10672 |
+
|
10673 |
+
return scales_results
|
10674 |
+
|
10675 |
+
###################################################################################
|
10676 |
+
|
10677 |
+
HAPPY_MAJOR = [(317, 1916), (89, 1876), (320, 1840), (267, 1817), (301, 1795), (178, 1750),
|
10678 |
+
(314, 1725), (0, 1691), (319, 1658), (288, 1624), (309, 1599), (233, 1559),
|
10679 |
+
(112, 1050), (127, 972), (201, 884), (194, 879), (216, 860), (38, 831),
|
10680 |
+
(256, 828), (23, 822), (105, 820), (283, 756), (16, 734), (249, 622),
|
10681 |
+
(91, 254), (303, 242), (34, 237), (316, 235), (110, 235), (123, 234),
|
10682 |
+
(212, 230), (92, 225), (181, 225), (114, 219), (272, 218), (290, 213),
|
10683 |
+
(235, 208), (180, 207), (269, 206), (2, 201), (3, 199), (203, 198), (37, 195),
|
10684 |
+
(254, 191), (199, 189), (311, 189), (293, 187), (5, 186), (270, 185),
|
10685 |
+
(183, 184), (291, 183), (94, 183), (25, 182), (304, 181), (258, 176),
|
10686 |
+
(215, 173), (191, 172), (193, 168), (104, 167), (282, 164), (238, 162),
|
10687 |
+
(248, 157), (15, 156), (13, 156), (126, 153), (21, 150), (102, 150),
|
10688 |
+
(306, 150), (312, 144), (280, 141), (236, 139), (162, 116), (120, 114),
|
10689 |
+
(246, 113), (134, 109), (43, 108), (221, 105), (264, 103), (73, 100),
|
10690 |
+
(159, 98), (42, 95), (45, 94), (220, 93), (131, 91), (119, 91), (227, 90),
|
10691 |
+
(209, 88), (70, 86), (144, 86), (31, 85), (223, 84), (58, 82), (1, 80),
|
10692 |
+
(132, 79), (30, 76), (90, 75), (268, 75), (259, 74), (234, 72), (179, 72),
|
10693 |
+
(147, 70), (318, 69), (208, 67), (315, 66), (55, 66), (49, 64), (310, 63),
|
10694 |
+
(138, 62), (214, 61), (263, 60), (204, 59), (302, 58), (196, 58), (115, 56),
|
10695 |
+
(107, 53), (18, 53), (153, 52), (289, 52), (9, 50), (10, 50), (217, 49),
|
10696 |
+
(243, 48), (39, 48), (99, 48), (7, 47), (188, 46), (26, 46), (68, 46),
|
10697 |
+
(36, 45), (125, 43), (202, 43), (285, 42), (24, 42), (277, 41), (98, 40),
|
10698 |
+
(251, 39), (113, 39), (8, 38), (128, 38), (187, 37), (35, 36), (213, 36),
|
10699 |
+
(97, 35), (186, 35), (61, 34), (150, 34), (160, 33), (124, 32), (96, 32),
|
10700 |
+
(257, 32), (275, 31), (241, 31), (296, 30), (64, 30), (297, 29), (298, 29),
|
10701 |
+
(117, 29), (46, 28), (273, 28), (206, 28), (157, 27), (242, 26), (224, 26),
|
10702 |
+
(185, 26), (222, 26), (59, 25), (135, 24), (158, 23), (28, 23), (294, 22),
|
10703 |
+
(69, 22), (276, 21), (274, 21), (225, 21), (148, 20), (50, 20), (48, 20),
|
10704 |
+
(281, 19), (139, 19), (307, 19), (228, 19), (75, 18), (164, 18), (44, 18),
|
10705 |
+
(133, 18), (79, 17), (184, 17), (57, 17), (240, 17), (239, 17), (295, 17),
|
10706 |
+
(247, 16), (95, 16), (261, 15), (308, 15), (287, 14), (76, 14), (165, 14),
|
10707 |
+
(175, 14), (82, 14), (284, 14), (71, 14), (253, 12), (155, 12), (86, 12),
|
10708 |
+
(4, 12), (93, 12), (171, 12), (137, 12), (66, 11), (232, 11), (168, 11),
|
10709 |
+
(103, 11), (192, 11), (54, 10), (145, 10), (40, 10), (51, 10), (182, 10),
|
10710 |
+
(226, 10), (14, 10), (129, 9), (218, 9), (146, 9), (237, 9), (19, 9), (108, 9),
|
10711 |
+
(197, 9), (140, 8), (229, 8), (6, 7), (17, 7), (56, 6), (106, 6), (271, 6),
|
10712 |
+
(109, 6), (163, 5), (143, 5), (65, 5), (154, 5), (27, 5), (116, 5), (205, 5),
|
10713 |
+
(195, 5), (250, 5), (198, 5), (41, 5), (136, 5), (47, 4), (52, 4), (141, 4),
|
10714 |
+
(230, 4), (84, 4), (173, 4), (255, 4), (11, 4), (100, 4), (189, 4), (244, 4),
|
10715 |
+
(278, 4), (219, 3), (20, 3), (286, 3), (130, 3), (170, 3), (151, 3), (53, 2),
|
10716 |
+
(77, 2), (166, 2), (67, 2), (156, 2), (63, 2), (60, 2), (292, 2), (62, 2),
|
10717 |
+
(142, 1), (231, 1), (85, 1), (174, 1), (81, 1), (152, 1), (262, 1), (72, 1),
|
10718 |
+
(161, 1), (29, 1), (118, 1), (207, 1), (149, 1), (300, 1), (299, 1), (252, 1)]
|
10719 |
+
|
10720 |
+
###################################################################################
|
10721 |
+
|
10722 |
+
MELANCHOLIC_MAJOR = [(317, 451), (301, 430), (89, 426), (320, 419), (267, 416), (178, 415),
|
10723 |
+
(314, 401), (319, 400), (0, 394), (309, 390), (288, 389), (233, 365),
|
10724 |
+
(37, 224), (215, 207), (258, 203), (126, 191), (114, 185), (203, 183),
|
10725 |
+
(283, 141), (127, 131), (38, 127), (216, 115), (194, 113), (112, 112),
|
10726 |
+
(23, 109), (105, 105), (249, 103), (16, 99), (306, 96), (256, 92), (13, 87),
|
10727 |
+
(280, 86), (181, 86), (102, 85), (92, 84), (104, 84), (15, 84), (191, 83),
|
10728 |
+
(246, 83), (270, 81), (94, 74), (3, 73), (238, 72), (272, 72), (236, 72),
|
10729 |
+
(201, 72), (183, 70), (293, 66), (193, 63), (254, 63), (212, 61), (282, 60),
|
10730 |
+
(123, 58), (5, 57), (25, 55), (291, 53), (34, 52), (316, 50), (304, 48),
|
10731 |
+
(91, 47), (2, 47), (110, 46), (248, 45), (303, 38), (311, 38), (45, 36),
|
10732 |
+
(180, 35), (199, 34), (235, 33), (162, 33), (221, 33), (21, 32), (144, 32),
|
10733 |
+
(132, 31), (179, 29), (90, 29), (43, 29), (217, 29), (312, 28), (39, 28),
|
10734 |
+
(128, 28), (302, 27), (268, 27), (36, 27), (125, 27), (269, 26), (134, 26),
|
10735 |
+
(234, 26), (73, 25), (318, 25), (55, 25), (1, 24), (290, 23), (8, 22),
|
10736 |
+
(310, 22), (315, 22), (97, 20), (186, 20), (241, 20), (275, 20), (296, 20),
|
10737 |
+
(289, 20), (119, 18), (298, 18), (31, 17), (6, 17), (95, 17), (184, 17),
|
10738 |
+
(273, 17), (223, 16), (276, 15), (120, 15), (239, 15), (30, 15), (208, 14),
|
10739 |
+
(59, 14), (159, 13), (146, 13), (42, 13), (209, 13), (26, 13), (264, 13),
|
10740 |
+
(147, 13), (187, 13), (242, 13), (115, 12), (220, 12), (70, 12), (226, 12),
|
10741 |
+
(47, 12), (148, 12), (24, 11), (49, 11), (131, 10), (227, 10), (214, 10),
|
10742 |
+
(136, 9), (225, 9), (69, 9), (138, 9), (158, 9), (106, 9), (98, 9), (257, 8),
|
10743 |
+
(263, 8), (297, 8), (50, 8), (204, 8), (259, 8), (7, 8), (294, 8), (281, 8),
|
10744 |
+
(9, 8), (113, 7), (202, 7), (17, 7), (124, 7), (213, 7), (57, 7), (96, 7),
|
10745 |
+
(247, 7), (285, 6), (185, 6), (130, 6), (219, 6), (218, 6), (58, 6), (139, 5),
|
10746 |
+
(35, 5), (240, 5), (195, 5), (250, 5), (20, 5), (284, 5), (150, 5), (261, 5),
|
10747 |
+
(48, 5), (107, 4), (196, 4), (251, 4), (292, 4), (41, 4), (228, 4), (61, 4),
|
10748 |
+
(71, 4), (160, 4), (109, 4), (103, 4), (192, 4), (206, 4), (137, 4), (274, 3),
|
10749 |
+
(18, 3), (305, 3), (295, 3), (93, 3), (308, 3), (182, 3), (237, 3), (271, 3),
|
10750 |
+
(198, 3), (168, 3), (51, 3), (140, 3), (229, 3), (54, 3), (155, 3), (10, 3),
|
10751 |
+
(99, 3), (157, 2), (64, 2), (143, 2), (224, 2), (253, 2), (307, 2), (66, 2),
|
10752 |
+
(40, 2), (129, 2), (188, 2), (11, 2), (243, 2), (28, 1), (117, 1), (4, 1),
|
10753 |
+
(313, 1), (62, 1), (151, 1), (56, 1), (135, 1), (46, 1), (165, 1), (79, 1),
|
10754 |
+
(299, 1), (60, 1), (149, 1), (22, 1), (111, 1), (200, 1)]
|
10755 |
+
|
10756 |
+
###################################################################################
|
10757 |
+
|
10758 |
+
MELANCHOLIC_MINOR = [(89, 3681), (267, 3628), (317, 3472), (301, 3408), (320, 3290), (178, 3261),
|
10759 |
+
(314, 3261), (288, 3206), (0, 3140), (233, 3050), (319, 2894), (309, 2841),
|
10760 |
+
(114, 570), (283, 559), (104, 544), (193, 529), (215, 509), (37, 507),
|
10761 |
+
(127, 482), (126, 468), (38, 456), (282, 432), (248, 417), (25, 415),
|
10762 |
+
(194, 414), (216, 412), (112, 411), (258, 407), (23, 403), (105, 399),
|
10763 |
+
(249, 399), (303, 387), (203, 386), (15, 366), (256, 356), (16, 351),
|
10764 |
+
(290, 343), (316, 343), (269, 332), (235, 323), (91, 312), (311, 296),
|
10765 |
+
(272, 286), (34, 273), (94, 271), (180, 269), (212, 265), (123, 260),
|
10766 |
+
(306, 259), (270, 254), (102, 246), (201, 246), (238, 246), (280, 242),
|
10767 |
+
(110, 236), (183, 236), (191, 232), (293, 230), (5, 228), (2, 228), (291, 226),
|
10768 |
+
(304, 225), (13, 219), (312, 207), (21, 207), (181, 203), (92, 195),
|
10769 |
+
(246, 192), (3, 191), (254, 181), (236, 173), (199, 155), (268, 124),
|
10770 |
+
(179, 114), (144, 103), (90, 103), (302, 102), (318, 101), (234, 99),
|
10771 |
+
(289, 86), (1, 84), (310, 83), (31, 79), (120, 79), (55, 78), (315, 72),
|
10772 |
+
(162, 72), (264, 71), (73, 70), (209, 69), (159, 61), (227, 61), (263, 60),
|
10773 |
+
(49, 58), (138, 57), (119, 51), (273, 49), (70, 49), (10, 47), (8, 44),
|
10774 |
+
(97, 44), (186, 44), (241, 44), (275, 44), (99, 44), (146, 43), (239, 42),
|
10775 |
+
(296, 39), (214, 39), (217, 39), (95, 38), (148, 37), (36, 36), (281, 34),
|
10776 |
+
(307, 33), (125, 33), (218, 32), (59, 31), (134, 31), (160, 31), (184, 31),
|
10777 |
+
(129, 29), (208, 29), (223, 29), (71, 29), (30, 29), (96, 27), (147, 27),
|
10778 |
+
(228, 27), (57, 27), (6, 27), (284, 26), (50, 26), (139, 26), (247, 24),
|
10779 |
+
(24, 24), (250, 24), (115, 24), (204, 24), (259, 24), (9, 23), (240, 23),
|
10780 |
+
(274, 23), (220, 23), (58, 23), (103, 22), (40, 22), (131, 22), (243, 22),
|
10781 |
+
(106, 22), (285, 22), (46, 22), (295, 21), (308, 21), (221, 21), (14, 20),
|
10782 |
+
(45, 20), (42, 20), (195, 20), (294, 19), (188, 19), (277, 19), (185, 18),
|
10783 |
+
(192, 18), (17, 18), (135, 18), (224, 18), (7, 17), (61, 17), (150, 16),
|
10784 |
+
(225, 14), (69, 14), (158, 14), (128, 14), (257, 14), (149, 13), (64, 13),
|
10785 |
+
(298, 13), (39, 13), (213, 12), (113, 12), (43, 11), (132, 11), (28, 11),
|
10786 |
+
(35, 10), (124, 10), (47, 10), (136, 10), (41, 10), (130, 10), (157, 10),
|
10787 |
+
(202, 10), (165, 10), (66, 9), (155, 9), (219, 9), (153, 9), (18, 9), (255, 9),
|
10788 |
+
(11, 9), (60, 8), (22, 8), (111, 8), (107, 8), (299, 7), (143, 7), (232, 7),
|
10789 |
+
(86, 7), (175, 7), (276, 6), (313, 6), (56, 6), (62, 6), (278, 6), (151, 6),
|
10790 |
+
(26, 6), (117, 6), (206, 6), (196, 6), (98, 5), (187, 5), (242, 5), (200, 5),
|
10791 |
+
(109, 5), (198, 5), (229, 5), (54, 5), (305, 5), (261, 5), (48, 5), (76, 5),
|
10792 |
+
(226, 5), (145, 4), (20, 4), (251, 4), (68, 4), (292, 4), (253, 4), (287, 4),
|
10793 |
+
(244, 3), (4, 3), (189, 3), (93, 2), (182, 2), (237, 2), (297, 2), (100, 2),
|
10794 |
+
(173, 2), (53, 2), (142, 2), (231, 2), (85, 2), (174, 2), (271, 2), (137, 2),
|
10795 |
+
(82, 2), (171, 2), (164, 1), (44, 1), (133, 1), (222, 1), (163, 1), (65, 1),
|
10796 |
+
(154, 1), (27, 1), (116, 1), (205, 1)]
|
10797 |
+
|
10798 |
+
###################################################################################
|
10799 |
+
|
10800 |
+
NEUTRAL_MAJOR = [(320, 574), (89, 542), (0, 535), (317, 488), (319, 458), (314, 439),
|
10801 |
+
(178, 424), (267, 405), (233, 375), (301, 330), (309, 321), (288, 287),
|
10802 |
+
(283, 77), (112, 76), (38, 71), (23, 67), (216, 61), (127, 59), (291, 54),
|
10803 |
+
(316, 52), (269, 51), (290, 51), (34, 50), (303, 50), (110, 49), (280, 47),
|
10804 |
+
(13, 45), (311, 44), (306, 43), (238, 43), (272, 43), (3, 42), (21, 42),
|
10805 |
+
(16, 41), (270, 41), (183, 39), (102, 39), (92, 39), (312, 37), (105, 37),
|
10806 |
+
(194, 37), (199, 35), (191, 35), (246, 35), (5, 35), (181, 34), (304, 34),
|
10807 |
+
(94, 33), (293, 31), (91, 29), (268, 27), (236, 27), (256, 27), (144, 24),
|
10808 |
+
(90, 24), (179, 23), (234, 23), (302, 23), (235, 23), (2, 23), (318, 22),
|
10809 |
+
(1, 22), (254, 22), (123, 22), (315, 22), (212, 22), (249, 22), (8, 21),
|
10810 |
+
(97, 21), (186, 21), (241, 21), (289, 21), (180, 21), (310, 21), (201, 21),
|
10811 |
+
(104, 20), (214, 19), (55, 18), (296, 17), (275, 17), (36, 17), (125, 17),
|
10812 |
+
(193, 16), (58, 16), (147, 16), (10, 15), (37, 14), (215, 14), (15, 14),
|
10813 |
+
(25, 14), (114, 14), (217, 13), (282, 12), (259, 12), (9, 12), (98, 12),
|
10814 |
+
(187, 12), (99, 11), (126, 10), (248, 10), (188, 10), (243, 10), (277, 10),
|
10815 |
+
(264, 10), (96, 10), (73, 10), (162, 10), (43, 10), (128, 10), (203, 8),
|
10816 |
+
(150, 8), (221, 8), (39, 8), (24, 8), (113, 8), (274, 6), (295, 6), (308, 6),
|
10817 |
+
(159, 6), (258, 6), (120, 6), (42, 6), (131, 6), (220, 6), (30, 6), (132, 6),
|
10818 |
+
(7, 6), (298, 6), (119, 6), (228, 4), (185, 4), (71, 4), (240, 4), (160, 4),
|
10819 |
+
(153, 4), (18, 4), (61, 4), (35, 4), (285, 4), (209, 4), (95, 4), (307, 4),
|
10820 |
+
(146, 4), (184, 4), (239, 4), (202, 4), (247, 4), (273, 4), (257, 4), (281, 4),
|
10821 |
+
(64, 2), (156, 2), (50, 2), (63, 2), (45, 2), (139, 2), (152, 2), (134, 2),
|
10822 |
+
(124, 2), (107, 2), (12, 2), (11, 2), (223, 2), (213, 2), (196, 2), (101, 2),
|
10823 |
+
(31, 2), (251, 2), (190, 2), (106, 2), (40, 2), (195, 2), (6, 2), (129, 2),
|
10824 |
+
(250, 2), (218, 2), (284, 2), (294, 2), (57, 2), (59, 2), (148, 2)]
|
10825 |
+
|
10826 |
+
###################################################################################
|
10827 |
+
|
10828 |
+
NEUTRAL_MINOR = [(317, 530), (301, 499), (267, 454), (309, 438), (314, 422), (288, 420),
|
10829 |
+
(178, 415), (320, 414), (89, 399), (319, 383), (0, 341), (233, 307),
|
10830 |
+
(215, 133), (37, 127), (212, 123), (193, 121), (123, 121), (34, 119),
|
10831 |
+
(191, 117), (126, 115), (104, 108), (112, 107), (272, 105), (23, 102),
|
10832 |
+
(15, 96), (127, 92), (38, 87), (283, 85), (102, 84), (91, 83), (94, 83),
|
10833 |
+
(306, 82), (216, 80), (2, 80), (280, 79), (293, 78), (5, 78), (13, 77),
|
10834 |
+
(183, 76), (114, 74), (316, 69), (105, 68), (180, 64), (201, 62), (256, 58),
|
10835 |
+
(16, 56), (246, 55), (203, 55), (303, 52), (194, 52), (282, 49), (311, 49),
|
10836 |
+
(248, 47), (238, 43), (258, 41), (249, 39), (7, 32), (10, 29), (96, 29),
|
10837 |
+
(25, 28), (125, 27), (214, 27), (36, 26), (134, 23), (99, 22), (310, 22),
|
10838 |
+
(270, 21), (291, 20), (223, 20), (302, 20), (213, 19), (185, 19), (217, 19),
|
10839 |
+
(3, 19), (221, 19), (45, 18), (268, 16), (289, 16), (235, 15), (179, 14),
|
10840 |
+
(234, 14), (181, 14), (312, 13), (240, 13), (21, 13), (274, 13), (110, 13),
|
10841 |
+
(92, 13), (236, 13), (31, 13), (120, 13), (304, 12), (269, 11), (113, 11),
|
10842 |
+
(150, 10), (43, 10), (132, 10), (68, 9), (157, 9), (202, 9), (55, 9), (144, 9),
|
10843 |
+
(315, 9), (318, 9), (42, 9), (131, 9), (188, 8), (70, 8), (159, 8), (241, 7),
|
10844 |
+
(275, 7), (296, 7), (8, 7), (290, 7), (97, 7), (186, 7), (24, 7), (119, 7),
|
10845 |
+
(227, 7), (254, 6), (219, 6), (35, 6), (273, 6), (124, 6), (294, 6), (247, 6),
|
10846 |
+
(220, 6), (281, 6), (208, 6), (46, 6), (61, 6), (243, 5), (199, 5), (128, 5),
|
10847 |
+
(30, 5), (11, 5), (218, 5), (192, 5), (162, 5), (257, 5), (138, 5), (264, 5),
|
10848 |
+
(148, 4), (41, 4), (130, 4), (39, 4), (307, 4), (40, 4), (129, 4), (17, 4),
|
10849 |
+
(106, 4), (195, 4), (224, 4), (135, 4), (209, 4), (276, 3), (297, 3), (26, 3),
|
10850 |
+
(115, 3), (277, 3), (20, 3), (109, 3), (198, 3), (6, 3), (298, 3), (95, 3),
|
10851 |
+
(184, 3), (1, 3), (165, 3), (66, 3), (155, 3), (73, 3), (69, 3), (158, 3),
|
10852 |
+
(71, 3), (160, 3), (64, 3), (153, 3), (18, 3), (107, 3), (187, 2), (242, 2),
|
10853 |
+
(59, 2), (239, 2), (226, 2), (163, 2), (14, 2), (65, 2), (263, 2), (103, 2),
|
10854 |
+
(154, 2), (49, 2), (27, 2), (253, 2), (116, 2), (287, 2), (205, 2), (4, 1),
|
10855 |
+
(93, 1), (182, 1), (237, 1), (271, 1), (292, 1), (222, 1), (19, 1), (108, 1),
|
10856 |
+
(197, 1), (57, 1), (146, 1), (143, 1), (211, 1), (232, 1), (266, 1), (47, 1),
|
10857 |
+
(86, 1), (87, 1), (136, 1), (175, 1), (176, 1), (225, 1), (82, 1), (83, 1),
|
10858 |
+
(171, 1), (172, 1), (117, 1), (206, 1), (261, 1), (48, 1), (137, 1), (90, 1),
|
10859 |
+
(204, 1), (250, 1), (259, 1), (284, 1)]
|
10860 |
+
|
10861 |
+
###################################################################################
|
10862 |
+
|
10863 |
+
SAD_MAJOR = [(267, 46), (301, 45), (178, 43), (89, 37), (288, 35), (233, 35), (215, 34),
|
10864 |
+
(317, 32), (320, 32), (309, 30), (314, 24), (0, 22), (319, 21), (114, 19),
|
10865 |
+
(203, 19), (258, 19), (37, 19), (193, 18), (126, 18), (15, 17), (104, 17),
|
10866 |
+
(248, 16), (282, 16), (112, 13), (134, 13), (105, 10), (221, 10), (194, 10),
|
10867 |
+
(45, 10), (162, 8), (43, 8), (201, 8), (132, 8), (256, 8), (16, 8), (127, 7),
|
10868 |
+
(283, 6), (38, 6), (306, 5), (223, 5), (216, 5), (31, 5), (23, 5), (120, 5),
|
10869 |
+
(272, 4), (123, 4), (293, 4), (119, 3), (181, 3), (125, 3), (94, 3), (236, 3),
|
10870 |
+
(212, 3), (183, 3), (270, 3), (2, 3), (238, 3), (291, 3), (91, 3), (304, 3),
|
10871 |
+
(209, 3), (312, 3), (264, 3), (163, 2), (148, 2), (157, 2), (316, 2), (217, 2),
|
10872 |
+
(13, 2), (65, 2), (208, 2), (7, 2), (214, 2), (34, 2), (36, 2), (102, 2),
|
10873 |
+
(154, 2), (249, 2), (263, 2), (96, 2), (10, 2), (191, 2), (27, 2), (49, 2),
|
10874 |
+
(99, 2), (116, 2), (138, 2), (180, 2), (205, 2), (227, 2), (235, 2), (226, 1),
|
10875 |
+
(298, 1), (307, 1), (213, 1), (159, 1), (292, 1), (144, 1), (147, 1), (290, 1),
|
10876 |
+
(47, 1), (39, 1), (40, 1), (42, 1), (305, 1), (68, 1), (1, 1), (9, 1),
|
10877 |
+
(303, 1), (136, 1), (128, 1), (129, 1), (131, 1), (313, 1), (90, 1), (98, 1),
|
10878 |
+
(311, 1), (225, 1), (218, 1), (185, 1), (220, 1), (62, 1), (179, 1), (187, 1),
|
10879 |
+
(59, 1), (246, 1), (69, 1), (57, 1), (247, 1), (240, 1), (30, 1), (151, 1),
|
10880 |
+
(188, 1), (239, 1), (234, 1), (242, 1), (280, 1), (158, 1), (146, 1), (281, 1),
|
10881 |
+
(274, 1), (56, 1), (243, 1), (273, 1), (268, 1), (276, 1)]
|
10882 |
+
|
10883 |
+
###################################################################################
|
10884 |
+
|
10885 |
+
SAD_MINOR = [(178, 1800), (267, 1764), (233, 1727), (309, 1671), (288, 1644), (0, 1610),
|
10886 |
+
(301, 1580), (320, 1532), (89, 1512), (317, 1454), (319, 1417), (314, 1383),
|
10887 |
+
(272, 238), (269, 232), (183, 230), (180, 224), (212, 219), (34, 217),
|
10888 |
+
(238, 217), (311, 214), (2, 212), (5, 210), (303, 208), (293, 206), (91, 202),
|
10889 |
+
(94, 202), (235, 200), (13, 199), (290, 198), (316, 192), (3, 190), (306, 188),
|
10890 |
+
(280, 187), (193, 185), (291, 184), (123, 183), (191, 182), (37, 179),
|
10891 |
+
(199, 172), (102, 169), (181, 164), (110, 163), (92, 163), (246, 161),
|
10892 |
+
(21, 157), (236, 156), (312, 154), (270, 146), (203, 146), (15, 144),
|
10893 |
+
(126, 135), (25, 135), (114, 135), (304, 132), (215, 131), (104, 131),
|
10894 |
+
(254, 130), (38, 124), (112, 124), (282, 123), (216, 114), (23, 111),
|
10895 |
+
(127, 102), (201, 101), (16, 100), (283, 96), (248, 96), (289, 92), (268, 92),
|
10896 |
+
(194, 92), (258, 91), (310, 87), (105, 86), (302, 81), (179, 77), (234, 77),
|
10897 |
+
(249, 76), (256, 76), (318, 60), (315, 57), (1, 53), (8, 49), (186, 47),
|
10898 |
+
(90, 47), (97, 47), (224, 47), (55, 46), (241, 46), (275, 46), (296, 45),
|
10899 |
+
(45, 43), (144, 42), (46, 38), (274, 37), (42, 36), (135, 36), (134, 34),
|
10900 |
+
(217, 31), (214, 30), (59, 30), (61, 30), (240, 28), (148, 28), (70, 28),
|
10901 |
+
(159, 28), (73, 27), (49, 27), (277, 26), (295, 26), (308, 26), (138, 26),
|
10902 |
+
(227, 26), (223, 25), (10, 25), (120, 25), (221, 24), (31, 24), (128, 24),
|
10903 |
+
(185, 23), (39, 23), (99, 23), (36, 23), (150, 21), (243, 21), (162, 21),
|
10904 |
+
(7, 20), (206, 18), (298, 18), (96, 18), (125, 18), (284, 16), (198, 16),
|
10905 |
+
(209, 16), (264, 16), (43, 16), (14, 15), (213, 15), (132, 15), (158, 14),
|
10906 |
+
(28, 14), (188, 13), (117, 13), (35, 13), (253, 12), (103, 12), (192, 12),
|
10907 |
+
(220, 12), (30, 12), (225, 11), (69, 11), (287, 11), (131, 11), (24, 10),
|
10908 |
+
(119, 10), (208, 10), (261, 9), (48, 9), (76, 9), (165, 9), (9, 9), (66, 9),
|
10909 |
+
(4, 9), (195, 8), (250, 8), (58, 8), (147, 8), (247, 8), (281, 8), (47, 7),
|
10910 |
+
(219, 7), (20, 7), (109, 7), (56, 7), (242, 6), (204, 6), (259, 6), (137, 6),
|
10911 |
+
(226, 6), (292, 6), (93, 6), (62, 6), (98, 6), (151, 6), (187, 5), (115, 5),
|
10912 |
+
(273, 5), (294, 5), (17, 5), (130, 5), (106, 5), (145, 5), (313, 5), (182, 5),
|
10913 |
+
(239, 5), (237, 5), (276, 4), (6, 4), (41, 4), (57, 4), (113, 4), (124, 4),
|
10914 |
+
(146, 4), (271, 4), (18, 4), (297, 3), (40, 3), (129, 3), (19, 3), (68, 3),
|
10915 |
+
(95, 3), (108, 3), (157, 3), (184, 3), (197, 3), (232, 3), (86, 3), (175, 3),
|
10916 |
+
(82, 3), (228, 3), (71, 3), (160, 3), (64, 3), (153, 3), (26, 2), (307, 2),
|
10917 |
+
(60, 2), (218, 2), (222, 2), (305, 2), (202, 2), (263, 2), (11, 2), (136, 2),
|
10918 |
+
(171, 2), (79, 2), (244, 1), (278, 1), (299, 1), (149, 1), (22, 1), (257, 1),
|
10919 |
+
(252, 1), (286, 1), (75, 1), (77, 1), (54, 1), (166, 1), (143, 1), (67, 1),
|
10920 |
+
(156, 1), (63, 1), (152, 1), (107, 1), (196, 1), (251, 1), (285, 1), (50, 1)]
|
10921 |
+
|
10922 |
+
###################################################################################
|
10923 |
+
|
10924 |
+
UPLIFTING_MAJOR = [(267, 3776), (317, 3723), (301, 3628), (320, 3603), (178, 3569), (89, 3448),
|
10925 |
+
(309, 3337), (314, 3216), (0, 3180), (288, 3159), (233, 3061), (319, 3008),
|
10926 |
+
(112, 981), (194, 917), (256, 916), (16, 874), (216, 843), (283, 835),
|
10927 |
+
(201, 783), (105, 771), (127, 766), (23, 715), (38, 692), (249, 637),
|
10928 |
+
(272, 459), (191, 448), (91, 437), (235, 437), (306, 423), (303, 404),
|
10929 |
+
(280, 400), (13, 396), (183, 394), (269, 394), (94, 393), (102, 389),
|
10930 |
+
(180, 386), (293, 371), (181, 370), (5, 358), (290, 348), (212, 342),
|
10931 |
+
(238, 335), (246, 324), (270, 315), (92, 314), (3, 310), (254, 308),
|
10932 |
+
(316, 301), (110, 295), (123, 291), (2, 285), (104, 268), (236, 255),
|
10933 |
+
(304, 254), (311, 250), (34, 250), (193, 244), (291, 244), (199, 235),
|
10934 |
+
(312, 232), (114, 219), (215, 216), (248, 205), (37, 201), (25, 201),
|
10935 |
+
(15, 197), (126, 195), (282, 191), (21, 184), (258, 167), (268, 151),
|
10936 |
+
(179, 148), (203, 142), (234, 128), (90, 123), (1, 119), (144, 116),
|
10937 |
+
(289, 102), (302, 99), (228, 97), (310, 95), (318, 94), (119, 92), (159, 91),
|
10938 |
+
(285, 89), (139, 85), (162, 83), (50, 81), (73, 78), (42, 78), (196, 77),
|
10939 |
+
(30, 76), (131, 75), (251, 75), (220, 73), (39, 72), (55, 71), (45, 71),
|
10940 |
+
(315, 70), (217, 70), (120, 69), (227, 67), (264, 64), (209, 63), (31, 63),
|
10941 |
+
(134, 62), (36, 62), (273, 61), (70, 60), (43, 58), (221, 58), (8, 56),
|
10942 |
+
(160, 55), (138, 55), (192, 55), (97, 54), (186, 54), (241, 53), (71, 53),
|
10943 |
+
(49, 53), (128, 53), (132, 52), (223, 52), (298, 52), (296, 51), (275, 51),
|
10944 |
+
(208, 50), (263, 50), (99, 50), (214, 50), (277, 50), (153, 49), (96, 48),
|
10945 |
+
(148, 48), (218, 47), (14, 46), (18, 45), (103, 44), (281, 44), (150, 43),
|
10946 |
+
(125, 43), (10, 43), (247, 42), (294, 41), (64, 41), (307, 40), (40, 40),
|
10947 |
+
(129, 40), (239, 40), (7, 38), (284, 38), (243, 38), (146, 37), (6, 37),
|
10948 |
+
(95, 37), (184, 37), (213, 36), (188, 36), (35, 35), (59, 35), (124, 34),
|
10949 |
+
(107, 33), (24, 32), (17, 31), (257, 31), (147, 30), (195, 30), (202, 29),
|
10950 |
+
(308, 28), (106, 28), (57, 28), (276, 26), (115, 26), (58, 26), (61, 25),
|
10951 |
+
(9, 25), (242, 25), (113, 25), (11, 24), (204, 23), (259, 22), (46, 22),
|
10952 |
+
(274, 21), (255, 21), (135, 21), (224, 21), (240, 20), (295, 19), (187, 19),
|
10953 |
+
(250, 19), (48, 19), (297, 19), (185, 18), (26, 17), (149, 17), (98, 16),
|
10954 |
+
(261, 14), (197, 14), (286, 14), (75, 14), (164, 14), (68, 13), (157, 13),
|
10955 |
+
(173, 13), (271, 12), (137, 12), (226, 12), (44, 12), (230, 11), (109, 11),
|
10956 |
+
(117, 11), (206, 11), (292, 11), (182, 11), (222, 11), (252, 11), (244, 10),
|
10957 |
+
(278, 10), (84, 10), (305, 10), (198, 10), (237, 10), (108, 10), (60, 10),
|
10958 |
+
(53, 9), (136, 9), (158, 9), (225, 9), (69, 9), (47, 9), (287, 8), (41, 8),
|
10959 |
+
(100, 8), (189, 8), (52, 8), (141, 8), (28, 8), (219, 8), (19, 8), (93, 8),
|
10960 |
+
(133, 8), (165, 7), (313, 7), (20, 7), (76, 6), (142, 6), (231, 6), (253, 6),
|
10961 |
+
(130, 6), (151, 5), (51, 5), (140, 5), (229, 5), (168, 5), (4, 5), (299, 5),
|
10962 |
+
(22, 5), (170, 5), (155, 4), (62, 4), (145, 4), (174, 4), (66, 3), (56, 3),
|
10963 |
+
(72, 3), (54, 3), (143, 3), (154, 3), (85, 3), (77, 3), (166, 3), (67, 3),
|
10964 |
+
(152, 3), (245, 3), (279, 3), (111, 3), (200, 3), (171, 3), (79, 3), (210, 2),
|
10965 |
+
(265, 2), (74, 2), (163, 2), (65, 2), (27, 2), (116, 2), (205, 2), (260, 2),
|
10966 |
+
(32, 2), (156, 2), (63, 2), (300, 2), (12, 2), (101, 2), (190, 2), (232, 1),
|
10967 |
+
(121, 1), (81, 1), (86, 1), (175, 1), (82, 1)]
|
10968 |
+
|
10969 |
+
###################################################################################
|
10970 |
+
|
10971 |
+
UPLIFTING_MINOR = [(301, 5035), (233, 5017), (314, 4999), (89, 4970), (320, 4956), (319, 4954),
|
10972 |
+
(0, 4793), (267, 4760), (309, 4744), (178, 4715), (317, 4697), (288, 4644),
|
10973 |
+
(114, 1184), (25, 1127), (248, 1111), (282, 1010), (193, 943), (203, 938),
|
10974 |
+
(105, 912), (104, 906), (258, 906), (280, 883), (246, 882), (283, 870),
|
10975 |
+
(16, 867), (94, 857), (127, 854), (238, 845), (102, 834), (194, 830), (5, 822),
|
10976 |
+
(306, 813), (38, 795), (183, 792), (249, 791), (13, 784), (191, 780),
|
10977 |
+
(256, 778), (112, 777), (290, 774), (23, 748), (272, 741), (235, 737),
|
10978 |
+
(269, 737), (293, 714), (215, 700), (37, 695), (201, 694), (303, 693),
|
10979 |
+
(15, 685), (316, 684), (311, 682), (216, 672), (126, 666), (91, 622), (2, 618),
|
10980 |
+
(180, 616), (254, 606), (270, 596), (304, 592), (236, 590), (181, 577),
|
10981 |
+
(92, 572), (34, 558), (123, 554), (3, 540), (21, 534), (212, 524), (312, 517),
|
10982 |
+
(110, 508), (199, 500), (291, 491), (128, 224), (243, 217), (298, 217),
|
10983 |
+
(144, 214), (90, 214), (39, 210), (8, 207), (162, 206), (234, 205), (97, 204),
|
10984 |
+
(186, 204), (241, 203), (217, 200), (268, 199), (10, 198), (1, 192), (55, 190),
|
10985 |
+
(179, 190), (188, 187), (125, 184), (315, 184), (302, 182), (318, 180),
|
10986 |
+
(275, 178), (296, 168), (289, 168), (277, 166), (73, 166), (36, 165),
|
10987 |
+
(119, 162), (263, 161), (99, 160), (310, 160), (30, 157), (214, 135),
|
10988 |
+
(138, 135), (264, 133), (159, 129), (134, 128), (131, 127), (227, 125),
|
10989 |
+
(70, 125), (281, 122), (43, 120), (46, 119), (209, 118), (247, 117),
|
10990 |
+
(132, 116), (120, 110), (221, 108), (208, 108), (31, 106), (45, 103), (49, 99),
|
10991 |
+
(224, 96), (96, 95), (59, 94), (220, 91), (148, 90), (135, 90), (7, 88),
|
10992 |
+
(273, 88), (147, 84), (239, 82), (274, 77), (307, 76), (294, 75), (223, 75),
|
10993 |
+
(240, 73), (17, 73), (106, 73), (192, 72), (213, 71), (185, 71), (58, 71),
|
10994 |
+
(24, 71), (139, 70), (103, 66), (9, 66), (276, 65), (42, 65), (129, 64),
|
10995 |
+
(95, 64), (187, 63), (242, 60), (98, 60), (150, 59), (285, 58), (40, 57),
|
10996 |
+
(261, 57), (184, 57), (218, 56), (50, 55), (195, 55), (284, 53), (48, 52),
|
10997 |
+
(196, 52), (117, 52), (251, 50), (295, 49), (202, 49), (250, 49), (146, 48),
|
10998 |
+
(259, 48), (228, 48), (206, 48), (14, 48), (57, 47), (35, 47), (61, 46),
|
10999 |
+
(6, 45), (113, 45), (124, 43), (157, 42), (28, 42), (137, 41), (68, 41),
|
11000 |
+
(297, 40), (308, 40), (257, 39), (115, 38), (158, 38), (107, 37), (204, 35),
|
11001 |
+
(160, 35), (71, 33), (26, 32), (226, 31), (69, 31), (153, 30), (165, 27),
|
11002 |
+
(64, 27), (287, 26), (136, 25), (109, 25), (225, 24), (164, 24), (76, 24),
|
11003 |
+
(286, 23), (75, 23), (155, 23), (11, 22), (252, 22), (253, 22), (93, 22),
|
11004 |
+
(271, 22), (47, 21), (108, 21), (41, 21), (198, 20), (197, 19), (237, 19),
|
11005 |
+
(219, 19), (182, 18), (66, 18), (130, 17), (292, 17), (305, 17), (20, 16),
|
11006 |
+
(145, 15), (4, 15), (18, 15), (255, 14), (100, 14), (189, 14), (62, 14),
|
11007 |
+
(244, 13), (151, 13), (170, 12), (52, 11), (141, 11), (278, 10), (313, 10),
|
11008 |
+
(56, 10), (149, 9), (133, 9), (84, 8), (173, 8), (60, 8), (200, 8), (65, 7),
|
11009 |
+
(299, 7), (230, 7), (44, 7), (154, 6), (85, 6), (222, 6), (174, 5), (81, 5),
|
11010 |
+
(111, 5), (163, 4), (27, 4), (116, 4), (205, 4), (19, 4), (22, 4), (210, 3),
|
11011 |
+
(265, 3), (74, 3), (168, 3), (51, 3), (260, 3), (12, 2), (101, 2), (190, 2),
|
11012 |
+
(245, 2), (279, 2), (142, 2), (231, 2), (175, 2), (82, 2), (171, 2), (79, 2),
|
11013 |
+
(152, 1), (140, 1), (229, 1), (54, 1), (143, 1), (53, 1), (121, 1), (300, 1),
|
11014 |
+
(262, 1), (72, 1), (161, 1), (29, 1), (118, 1), (207, 1)]
|
11015 |
+
|
11016 |
+
###################################################################################
|
11017 |
+
|
11018 |
+
ALL_MOOD_TYPES = [HAPPY_MAJOR,
|
11019 |
+
UPLIFTING_MAJOR,
|
11020 |
+
UPLIFTING_MINOR,
|
11021 |
+
NEUTRAL_MAJOR,
|
11022 |
+
NEUTRAL_MINOR,
|
11023 |
+
MELANCHOLIC_MAJOR,
|
11024 |
+
MELANCHOLIC_MINOR,
|
11025 |
+
SAD_MAJOR,
|
11026 |
+
SAD_MINOR
|
11027 |
+
]
|
11028 |
+
|
11029 |
+
###################################################################################
|
11030 |
+
|
11031 |
+
ALL_MOOD_TYPES_LABELS = ['Happy Major',
|
11032 |
+
'Uplifting Major',
|
11033 |
+
'Uplifting Minor',
|
11034 |
+
'Neutral Major',
|
11035 |
+
'Neutral Minor',
|
11036 |
+
'Melancholic Major',
|
11037 |
+
'Melancholic Minor',
|
11038 |
+
'Sad Major',
|
11039 |
+
'Sad Minor'
|
11040 |
+
]
|
11041 |
+
|
11042 |
+
###################################################################################
|
11043 |
+
|
11044 |
+
LEAD_INSTRUMENTS = [0, 1, 2, 3, 4, 5, 6, 7, # Piano
|
11045 |
+
8, 9, 10, 11, 12, 13, 14, 15, # Chromatic Percussion
|
11046 |
+
16, 17, 18, 19, 20, 21, 22, 23, # Organ
|
11047 |
+
24, 25, 26, 27, 28, 29, 30, 31, # Guitar
|
11048 |
+
40, 41, 46, # Strings
|
11049 |
+
52, 53, 54, # Ensemble
|
11050 |
+
56, 57, 59, 60, # Brass
|
11051 |
+
64, 65, 66, 67, 68, 69, 70, 71, # Reed
|
11052 |
+
72, 73, 74, 75, 76, 77, 78, 79, # Pipe
|
11053 |
+
80, 81, 87 # Synth Lead
|
11054 |
+
]
|
11055 |
+
|
11056 |
+
###################################################################################
|
11057 |
+
|
11058 |
+
BASE_INSTRUMENTS = [32, 33, 34, 35, 36, 37, 38, 39, # Bass
|
11059 |
+
42, 43, # Strings
|
11060 |
+
58, 61, 62, 63, # Brass
|
11061 |
+
87 # Synth Lead
|
11062 |
+
]
|
11063 |
+
|
11064 |
+
###################################################################################
|
11065 |
+
|
11066 |
+
def escore_notes_pitches_range(escore_notes,
|
11067 |
+
range_patch=-1,
|
11068 |
+
pitches_idx=4,
|
11069 |
+
patches_idx=6
|
11070 |
+
):
|
11071 |
+
|
11072 |
+
pitches = []
|
11073 |
+
|
11074 |
+
if -1 < range_patch < 129:
|
11075 |
+
pitches = [e[pitches_idx] for e in escore_notes if e[patches_idx] == range_patch]
|
11076 |
+
|
11077 |
+
else:
|
11078 |
+
pitches = [e[pitches_idx] for e in escore_notes]
|
11079 |
+
|
11080 |
+
if pitches:
|
11081 |
+
min_pitch = min(pitches)
|
11082 |
+
avg_pitch = sum(pitches) / len(pitches)
|
11083 |
+
mode_pitch = statistics.mode(pitches)
|
11084 |
+
max_pitch = max(pitches)
|
11085 |
+
|
11086 |
+
return [max_pitch-min_pitch, min_pitch, max_pitch, avg_pitch, mode_pitch]
|
11087 |
+
|
11088 |
+
else:
|
11089 |
+
return [ -1] * 6
|
11090 |
+
|
11091 |
###################################################################################
|
11092 |
#
|
11093 |
# This is the end of the TMIDI X Python module
|