Spaces:
Running
Running
Upload TMIDIX.py
Browse files
TMIDIX.py
CHANGED
|
@@ -4675,6 +4675,8 @@ def augment_enhanced_score_notes(enhanced_score_notes,
|
|
| 4675 |
full_sorting=True,
|
| 4676 |
timings_shift=0,
|
| 4677 |
pitch_shift=0,
|
|
|
|
|
|
|
| 4678 |
legacy_timings=False
|
| 4679 |
):
|
| 4680 |
|
|
@@ -4688,11 +4690,15 @@ def augment_enhanced_score_notes(enhanced_score_notes,
|
|
| 4688 |
|
| 4689 |
dtime = (e[1] / timings_divider) - (pe[1] / timings_divider)
|
| 4690 |
|
| 4691 |
-
if
|
| 4692 |
-
dtime =
|
| 4693 |
|
| 4694 |
else:
|
| 4695 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4696 |
|
| 4697 |
if legacy_timings:
|
| 4698 |
abs_time = int(e[1] / timings_divider) + timings_shift
|
|
@@ -4702,7 +4708,14 @@ def augment_enhanced_score_notes(enhanced_score_notes,
|
|
| 4702 |
|
| 4703 |
e[1] = max(0, abs_time + timings_shift)
|
| 4704 |
|
| 4705 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4706 |
|
| 4707 |
e[4] = max(1, min(127, e[4] + pitch_shift))
|
| 4708 |
|
|
@@ -5172,14 +5185,16 @@ def advanced_check_and_fix_chords_in_chordified_score(chordified_score,
|
|
| 5172 |
|
| 5173 |
for c in chordified_score:
|
| 5174 |
|
|
|
|
|
|
|
| 5175 |
if remove_duplicate_pitches:
|
| 5176 |
|
| 5177 |
-
|
| 5178 |
|
| 5179 |
seen = set()
|
| 5180 |
ddchord = []
|
| 5181 |
|
| 5182 |
-
for cc in
|
| 5183 |
if cc[channels_index] != 9:
|
| 5184 |
|
| 5185 |
if tuple([cc[pitches_index], cc[patches_index]]) not in seen:
|
|
@@ -5191,9 +5206,9 @@ def advanced_check_and_fix_chords_in_chordified_score(chordified_score,
|
|
| 5191 |
else:
|
| 5192 |
ddchord.append(cc)
|
| 5193 |
|
| 5194 |
-
|
| 5195 |
|
| 5196 |
-
tones_chord = sorted(set([t[pitches_index] % 12 for t in
|
| 5197 |
|
| 5198 |
if tones_chord:
|
| 5199 |
|
|
@@ -5206,33 +5221,82 @@ def advanced_check_and_fix_chords_in_chordified_score(chordified_score,
|
|
| 5206 |
|
| 5207 |
if tones_counts[0][1] > 1:
|
| 5208 |
tones_chord = [tones_counts[0][0]]
|
|
|
|
| 5209 |
elif tones_counts[1][1] > 1:
|
| 5210 |
tones_chord = [tones_counts[1][0]]
|
|
|
|
| 5211 |
else:
|
| 5212 |
tones_chord = [pitches_chord[0] % 12]
|
| 5213 |
|
| 5214 |
else:
|
| 5215 |
-
tones_chord_combs = [list(comb) for i in range(len(tones_chord)-
|
| 5216 |
|
| 5217 |
for co in tones_chord_combs:
|
| 5218 |
if co in CHORDS:
|
| 5219 |
tones_chord = co
|
| 5220 |
break
|
| 5221 |
|
|
|
|
|
|
|
|
|
|
| 5222 |
bad_chords_counter += 1
|
| 5223 |
|
| 5224 |
-
|
| 5225 |
|
| 5226 |
-
|
|
|
|
| 5227 |
|
| 5228 |
-
for e in
|
| 5229 |
if e[channels_index] != 9:
|
| 5230 |
if e[pitches_index] % 12 in tones_chord:
|
| 5231 |
-
new_chord.
|
|
|
|
| 5232 |
|
| 5233 |
-
|
| 5234 |
-
|
| 5235 |
-
new_chord.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5236 |
|
| 5237 |
fixed_chordified_score.append(new_chord)
|
| 5238 |
|
|
@@ -7391,11 +7455,15 @@ def harmonize_enhanced_melody_score_notes_to_ms_SONG(escore_notes,
|
|
| 7391 |
###################################################################################
|
| 7392 |
|
| 7393 |
def check_and_fix_pitches_chord(pitches_chord,
|
|
|
|
| 7394 |
use_filtered_chords=False,
|
| 7395 |
use_full_chords=True
|
| 7396 |
):
|
| 7397 |
|
| 7398 |
-
|
|
|
|
|
|
|
|
|
|
| 7399 |
|
| 7400 |
if use_filtered_chords:
|
| 7401 |
CHORDS = ALL_CHORDS_FILTERED
|
|
@@ -7405,44 +7473,83 @@ def check_and_fix_pitches_chord(pitches_chord,
|
|
| 7405 |
if use_full_chords:
|
| 7406 |
CHORDS = ALL_CHORDS_FULL
|
| 7407 |
|
| 7408 |
-
|
|
|
|
|
|
|
| 7409 |
|
| 7410 |
-
if tones_chord
|
| 7411 |
|
| 7412 |
-
|
|
|
|
|
|
|
|
|
|
| 7413 |
|
| 7414 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7415 |
|
| 7416 |
-
|
| 7417 |
-
|
| 7418 |
-
|
| 7419 |
-
|
| 7420 |
-
|
| 7421 |
-
|
|
|
|
| 7422 |
|
| 7423 |
-
|
|
|
|
|
|
|
|
|
|
| 7424 |
|
| 7425 |
-
|
| 7426 |
-
|
| 7427 |
-
tchord = []
|
| 7428 |
|
| 7429 |
-
|
| 7430 |
-
|
| 7431 |
-
|
| 7432 |
-
|
| 7433 |
|
| 7434 |
-
|
| 7435 |
-
|
| 7436 |
-
|
| 7437 |
-
|
| 7438 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7439 |
|
| 7440 |
-
|
| 7441 |
|
| 7442 |
-
|
|
|
|
|
|
|
| 7443 |
|
| 7444 |
-
|
| 7445 |
-
new_pitches_chord.append(p)
|
| 7446 |
|
| 7447 |
return sorted(new_pitches_chord, reverse=True)
|
| 7448 |
|
|
|
|
| 4675 |
full_sorting=True,
|
| 4676 |
timings_shift=0,
|
| 4677 |
pitch_shift=0,
|
| 4678 |
+
ceil_timings=False,
|
| 4679 |
+
round_timings=False,
|
| 4680 |
legacy_timings=False
|
| 4681 |
):
|
| 4682 |
|
|
|
|
| 4690 |
|
| 4691 |
dtime = (e[1] / timings_divider) - (pe[1] / timings_divider)
|
| 4692 |
|
| 4693 |
+
if round_timings:
|
| 4694 |
+
dtime = round(dtime)
|
| 4695 |
|
| 4696 |
else:
|
| 4697 |
+
if ceil_timings:
|
| 4698 |
+
dtime = math.ceil(dtime)
|
| 4699 |
+
|
| 4700 |
+
else:
|
| 4701 |
+
dtime = int(dtime)
|
| 4702 |
|
| 4703 |
if legacy_timings:
|
| 4704 |
abs_time = int(e[1] / timings_divider) + timings_shift
|
|
|
|
| 4708 |
|
| 4709 |
e[1] = max(0, abs_time + timings_shift)
|
| 4710 |
|
| 4711 |
+
if round_timings:
|
| 4712 |
+
e[2] = max(1, round(e[2] / timings_divider)) + timings_shift
|
| 4713 |
+
|
| 4714 |
+
else:
|
| 4715 |
+
if ceil_timings:
|
| 4716 |
+
e[2] = max(1, math.ceil(e[2] / timings_divider)) + timings_shift
|
| 4717 |
+
else:
|
| 4718 |
+
e[2] = max(1, int(e[2] / timings_divider)) + timings_shift
|
| 4719 |
|
| 4720 |
e[4] = max(1, min(127, e[4] + pitch_shift))
|
| 4721 |
|
|
|
|
| 5185 |
|
| 5186 |
for c in chordified_score:
|
| 5187 |
|
| 5188 |
+
chord = copy.deepcopy(c)
|
| 5189 |
+
|
| 5190 |
if remove_duplicate_pitches:
|
| 5191 |
|
| 5192 |
+
chord.sort(key = lambda x: x[pitches_index], reverse=True)
|
| 5193 |
|
| 5194 |
seen = set()
|
| 5195 |
ddchord = []
|
| 5196 |
|
| 5197 |
+
for cc in chord:
|
| 5198 |
if cc[channels_index] != 9:
|
| 5199 |
|
| 5200 |
if tuple([cc[pitches_index], cc[patches_index]]) not in seen:
|
|
|
|
| 5206 |
else:
|
| 5207 |
ddchord.append(cc)
|
| 5208 |
|
| 5209 |
+
chord = copy.deepcopy(ddchord)
|
| 5210 |
|
| 5211 |
+
tones_chord = sorted(set([t[pitches_index] % 12 for t in chord if t[channels_index] != 9]))
|
| 5212 |
|
| 5213 |
if tones_chord:
|
| 5214 |
|
|
|
|
| 5221 |
|
| 5222 |
if tones_counts[0][1] > 1:
|
| 5223 |
tones_chord = [tones_counts[0][0]]
|
| 5224 |
+
|
| 5225 |
elif tones_counts[1][1] > 1:
|
| 5226 |
tones_chord = [tones_counts[1][0]]
|
| 5227 |
+
|
| 5228 |
else:
|
| 5229 |
tones_chord = [pitches_chord[0] % 12]
|
| 5230 |
|
| 5231 |
else:
|
| 5232 |
+
tones_chord_combs = [list(comb) for i in range(len(tones_chord)-1, 0, -1) for comb in combinations(tones_chord, i)]
|
| 5233 |
|
| 5234 |
for co in tones_chord_combs:
|
| 5235 |
if co in CHORDS:
|
| 5236 |
tones_chord = co
|
| 5237 |
break
|
| 5238 |
|
| 5239 |
+
if len(tones_chord) == 1:
|
| 5240 |
+
tones_chord = [pitches_chord[0] % 12]
|
| 5241 |
+
|
| 5242 |
bad_chords_counter += 1
|
| 5243 |
|
| 5244 |
+
chord.sort(key = lambda x: x[pitches_index], reverse=True)
|
| 5245 |
|
| 5246 |
+
new_chord = set()
|
| 5247 |
+
pipa = []
|
| 5248 |
|
| 5249 |
+
for e in chord:
|
| 5250 |
if e[channels_index] != 9:
|
| 5251 |
if e[pitches_index] % 12 in tones_chord:
|
| 5252 |
+
new_chord.add(tuple(e))
|
| 5253 |
+
pipa.append([e[pitches_index], e[patches_index]])
|
| 5254 |
|
| 5255 |
+
elif (e[pitches_index]+1) % 12 in tones_chord:
|
| 5256 |
+
e[pitches_index] += 1
|
| 5257 |
+
new_chord.add(tuple(e))
|
| 5258 |
+
pipa.append([e[pitches_index], e[patches_index]])
|
| 5259 |
+
|
| 5260 |
+
elif (e[pitches_index]-1) % 12 in tones_chord:
|
| 5261 |
+
e[pitches_index] -= 1
|
| 5262 |
+
new_chord.add(tuple(e))
|
| 5263 |
+
pipa.append([e[pitches_index], e[patches_index]])
|
| 5264 |
+
|
| 5265 |
+
bad_chord = set()
|
| 5266 |
+
|
| 5267 |
+
for e in chord:
|
| 5268 |
+
if e[channels_index] != 9:
|
| 5269 |
+
|
| 5270 |
+
if e[pitches_index] % 12 not in tones_chord:
|
| 5271 |
+
bad_chord.add(tuple(e))
|
| 5272 |
+
|
| 5273 |
+
elif (e[pitches_index]+1) % 12 not in tones_chord:
|
| 5274 |
+
bad_chord.add(tuple(e))
|
| 5275 |
+
|
| 5276 |
+
elif (e[pitches_index]-1) % 12 not in tones_chord:
|
| 5277 |
+
bad_chord.add(tuple(e))
|
| 5278 |
+
|
| 5279 |
+
for bc in bad_chord:
|
| 5280 |
+
|
| 5281 |
+
bc = list(bc)
|
| 5282 |
+
|
| 5283 |
+
tone = find_closest_tone(tones_chord, bc[pitches_index] % 12)
|
| 5284 |
+
|
| 5285 |
+
new_pitch = ((bc[pitches_index] // 12) * 12) + tone
|
| 5286 |
+
|
| 5287 |
+
if [new_pitch, bc[patches_index]] not in pipa:
|
| 5288 |
+
bc[pitches_index] = new_pitch
|
| 5289 |
+
new_chord.add(tuple(bc))
|
| 5290 |
+
pipa.append([[new_pitch], bc[patches_index]])
|
| 5291 |
+
|
| 5292 |
+
if not skip_drums:
|
| 5293 |
+
for e in c:
|
| 5294 |
+
if e[channels_index] == 9:
|
| 5295 |
+
new_chord.append(tuple(e))
|
| 5296 |
+
|
| 5297 |
+
new_chord = [list(e) for e in new_chord]
|
| 5298 |
+
|
| 5299 |
+
new_chord.sort(key = lambda x: (-x[pitches_index], x[patches_index]))
|
| 5300 |
|
| 5301 |
fixed_chordified_score.append(new_chord)
|
| 5302 |
|
|
|
|
| 7455 |
###################################################################################
|
| 7456 |
|
| 7457 |
def check_and_fix_pitches_chord(pitches_chord,
|
| 7458 |
+
remove_duplicate_pitches=True,
|
| 7459 |
use_filtered_chords=False,
|
| 7460 |
use_full_chords=True
|
| 7461 |
):
|
| 7462 |
|
| 7463 |
+
if remove_duplicate_pitches:
|
| 7464 |
+
pitches_chord = sorted(set(pitches_chord), reverse=True)
|
| 7465 |
+
else:
|
| 7466 |
+
pitches_chord = sorted(pitches_chord, reverse=True)
|
| 7467 |
|
| 7468 |
if use_filtered_chords:
|
| 7469 |
CHORDS = ALL_CHORDS_FILTERED
|
|
|
|
| 7473 |
if use_full_chords:
|
| 7474 |
CHORDS = ALL_CHORDS_FULL
|
| 7475 |
|
| 7476 |
+
chord = copy.deepcopy(pitches_chord)
|
| 7477 |
+
|
| 7478 |
+
tones_chord = sorted(set([t % 12 for t in chord]))
|
| 7479 |
|
| 7480 |
+
if tones_chord:
|
| 7481 |
|
| 7482 |
+
if tones_chord not in CHORDS:
|
| 7483 |
+
|
| 7484 |
+
if len(tones_chord) == 2:
|
| 7485 |
+
tones_counts = Counter([p % 12 for p in pitches_chord]).most_common()
|
| 7486 |
|
| 7487 |
+
if tones_counts[0][1] > 1:
|
| 7488 |
+
tones_chord = [tones_counts[0][0]]
|
| 7489 |
+
|
| 7490 |
+
elif tones_counts[1][1] > 1:
|
| 7491 |
+
tones_chord = [tones_counts[1][0]]
|
| 7492 |
+
|
| 7493 |
+
else:
|
| 7494 |
+
tones_chord = [pitches_chord[0] % 12]
|
| 7495 |
|
| 7496 |
+
else:
|
| 7497 |
+
tones_chord_combs = [list(comb) for i in range(len(tones_chord)-1, 0, -1) for comb in combinations(tones_chord, i)]
|
| 7498 |
+
|
| 7499 |
+
for co in tones_chord_combs:
|
| 7500 |
+
if co in CHORDS:
|
| 7501 |
+
tones_chord = co
|
| 7502 |
+
break
|
| 7503 |
|
| 7504 |
+
if len(tones_chord) == 1:
|
| 7505 |
+
tones_chord = [pitches_chord[0] % 12]
|
| 7506 |
+
|
| 7507 |
+
chord.sort(reverse=True)
|
| 7508 |
|
| 7509 |
+
new_chord = set()
|
| 7510 |
+
pipa = []
|
|
|
|
| 7511 |
|
| 7512 |
+
for e in chord:
|
| 7513 |
+
if e % 12 in tones_chord:
|
| 7514 |
+
new_chord.add(tuple([e]))
|
| 7515 |
+
pipa.append(e)
|
| 7516 |
|
| 7517 |
+
elif (e+1) % 12 in tones_chord:
|
| 7518 |
+
e += 1
|
| 7519 |
+
new_chord.add(tuple([e]))
|
| 7520 |
+
pipa.append(e)
|
| 7521 |
+
|
| 7522 |
+
elif (e-1) % 12 in tones_chord:
|
| 7523 |
+
e -= 1
|
| 7524 |
+
new_chord.add(tuple([e]))
|
| 7525 |
+
pipa.append(e)
|
| 7526 |
+
|
| 7527 |
+
bad_chord = set()
|
| 7528 |
+
|
| 7529 |
+
for e in chord:
|
| 7530 |
+
|
| 7531 |
+
if e % 12 not in tones_chord:
|
| 7532 |
+
bad_chord.add(tuple([e]))
|
| 7533 |
+
|
| 7534 |
+
elif (e+1) % 12 not in tones_chord:
|
| 7535 |
+
bad_chord.add(tuple([e]))
|
| 7536 |
+
|
| 7537 |
+
elif (e-1) % 12 not in tones_chord:
|
| 7538 |
+
bad_chord.add(tuple([e]))
|
| 7539 |
+
|
| 7540 |
+
for bc in bad_chord:
|
| 7541 |
+
|
| 7542 |
+
bc = list(bc)
|
| 7543 |
+
|
| 7544 |
+
tone = find_closest_tone(tones_chord, bc[0] % 12)
|
| 7545 |
|
| 7546 |
+
new_pitch = ((bc[0] // 12) * 12) + tone
|
| 7547 |
|
| 7548 |
+
if new_pitch not in pipa:
|
| 7549 |
+
new_chord.add(tuple([new_pitch]))
|
| 7550 |
+
pipa.append(new_pitch)
|
| 7551 |
|
| 7552 |
+
new_pitches_chord = [e[0] for e in new_chord]
|
|
|
|
| 7553 |
|
| 7554 |
return sorted(new_pitches_chord, reverse=True)
|
| 7555 |
|