Upload TMIDIX.py
Browse files
TMIDIX.py
CHANGED
|
@@ -51,7 +51,7 @@ r'''############################################################################
|
|
| 51 |
|
| 52 |
###################################################################################
|
| 53 |
|
| 54 |
-
__version__ = "25.8.
|
| 55 |
|
| 56 |
print('=' * 70)
|
| 57 |
print('TMIDIX Python module')
|
|
@@ -1500,6 +1500,9 @@ from difflib import SequenceMatcher as SM
|
|
| 1500 |
|
| 1501 |
import statistics
|
| 1502 |
import math
|
|
|
|
|
|
|
|
|
|
| 1503 |
|
| 1504 |
import matplotlib.pyplot as plt
|
| 1505 |
|
|
@@ -14538,6 +14541,91 @@ def align_integer_lists(seq1, seq2):
|
|
| 14538 |
|
| 14539 |
###################################################################################
|
| 14540 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14541 |
print('Module loaded!')
|
| 14542 |
print('=' * 70)
|
| 14543 |
print('Enjoy! :)')
|
|
|
|
| 51 |
|
| 52 |
###################################################################################
|
| 53 |
|
| 54 |
+
__version__ = "25.8.30"
|
| 55 |
|
| 56 |
print('=' * 70)
|
| 57 |
print('TMIDIX Python module')
|
|
|
|
| 1500 |
|
| 1501 |
import statistics
|
| 1502 |
import math
|
| 1503 |
+
from math import gcd
|
| 1504 |
+
|
| 1505 |
+
from functools import reduce
|
| 1506 |
|
| 1507 |
import matplotlib.pyplot as plt
|
| 1508 |
|
|
|
|
| 14541 |
|
| 14542 |
###################################################################################
|
| 14543 |
|
| 14544 |
+
def most_common_delta_time(escore_notes):
|
| 14545 |
+
|
| 14546 |
+
dscore = delta_score_notes(escore_notes)
|
| 14547 |
+
|
| 14548 |
+
dtimes = [t[1] for t in dscore if t[1] != 0]
|
| 14549 |
+
|
| 14550 |
+
cdtime, count = Counter(dtimes).most_common(1)[0]
|
| 14551 |
+
|
| 14552 |
+
return [cdtime, count / len(dtimes)]
|
| 14553 |
+
|
| 14554 |
+
###################################################################################
|
| 14555 |
+
|
| 14556 |
+
def delta_tones(escore_notes,
|
| 14557 |
+
ptcs_idx=4
|
| 14558 |
+
):
|
| 14559 |
+
|
| 14560 |
+
pitches = [p[ptcs_idx] for p in escore_notes]
|
| 14561 |
+
tones = [p % 12 for p in pitches]
|
| 14562 |
+
|
| 14563 |
+
return [b-a for a, b in zip(tones[:-1], tones[1:])]
|
| 14564 |
+
|
| 14565 |
+
###################################################################################
|
| 14566 |
+
|
| 14567 |
+
def find_divisors(val,
|
| 14568 |
+
reverse=False
|
| 14569 |
+
):
|
| 14570 |
+
|
| 14571 |
+
if val == 0:
|
| 14572 |
+
return []
|
| 14573 |
+
|
| 14574 |
+
n = abs(val)
|
| 14575 |
+
divisors = set()
|
| 14576 |
+
|
| 14577 |
+
for i in range(1, int(n**0.5) + 1):
|
| 14578 |
+
if n % i == 0:
|
| 14579 |
+
divisors.add(i)
|
| 14580 |
+
divisors.add(n // i)
|
| 14581 |
+
|
| 14582 |
+
return sorted(divisors, reverse=reverse)
|
| 14583 |
+
|
| 14584 |
+
###################################################################################
|
| 14585 |
+
|
| 14586 |
+
def find_common_divisors(values,
|
| 14587 |
+
reverse=False
|
| 14588 |
+
):
|
| 14589 |
+
|
| 14590 |
+
if not values:
|
| 14591 |
+
return []
|
| 14592 |
+
|
| 14593 |
+
non_zero = [abs(v) for v in values if v != 0]
|
| 14594 |
+
if not non_zero:
|
| 14595 |
+
return []
|
| 14596 |
+
|
| 14597 |
+
overall_gcd = reduce(gcd, non_zero)
|
| 14598 |
+
|
| 14599 |
+
divisors = set()
|
| 14600 |
+
|
| 14601 |
+
for i in range(1, int(overall_gcd**0.5) + 1):
|
| 14602 |
+
if overall_gcd % i == 0:
|
| 14603 |
+
divisors.add(i)
|
| 14604 |
+
divisors.add(overall_gcd // i)
|
| 14605 |
+
|
| 14606 |
+
return sorted(divisors, reverse=reverse)
|
| 14607 |
+
|
| 14608 |
+
###################################################################################
|
| 14609 |
+
|
| 14610 |
+
def strings_dict(list_of_strings,
|
| 14611 |
+
verbose=False
|
| 14612 |
+
):
|
| 14613 |
+
|
| 14614 |
+
str_set = set()
|
| 14615 |
+
|
| 14616 |
+
for st in tqdm.tqdm(list_of_strings, disable=not verbose):
|
| 14617 |
+
for cha in st:
|
| 14618 |
+
str_set.add(cha)
|
| 14619 |
+
|
| 14620 |
+
str_lst = sorted(str_set)
|
| 14621 |
+
|
| 14622 |
+
str_dic = dict(zip(str_lst, range(len(str_lst))))
|
| 14623 |
+
rev_str_dic = {v: k for k, v in str_dic.items()}
|
| 14624 |
+
|
| 14625 |
+
return str_dic, rev_str_dic
|
| 14626 |
+
|
| 14627 |
+
###################################################################################
|
| 14628 |
+
|
| 14629 |
print('Module loaded!')
|
| 14630 |
print('=' * 70)
|
| 14631 |
print('Enjoy! :)')
|