1127 update to latest
This commit is contained in:
39
data_representation/permute.py
Normal file
39
data_representation/permute.py
Normal file
@ -0,0 +1,39 @@
|
||||
from itertools import groupby, chain
|
||||
from random import shuffle, seed
|
||||
|
||||
def shuffled(seq):
|
||||
shuffle(seq)
|
||||
return seq
|
||||
|
||||
def permute_inside_and_across_tracks(seq):
|
||||
seq_sorted = sorted(seq, key=lambda x: x[5])
|
||||
tracks = [list(g) for _, g in groupby(seq_sorted, key=lambda x: x[5])] # 5 is program
|
||||
return list(chain.from_iterable(shuffled(t) for t in shuffled(tracks)))
|
||||
|
||||
# (PitchDrum, Position, Bar, Velocity, Duration, Program, Tempo, TimeSignature)
|
||||
seq = [
|
||||
# Program 0
|
||||
(60, 0, 0, 90, 96, 0, 120, 16),
|
||||
(64, 48,0, 88, 96, 0, 120, 16),
|
||||
(67, 96,0, 92, 96, 0, 120, 16),
|
||||
|
||||
# Program 32
|
||||
(40, 0, 0, 80, 192, 32, 120, 16),
|
||||
(43, 0, 1, 78, 192, 32, 120, 16),
|
||||
|
||||
# Program 40
|
||||
(72, 24,0, 85, 72, 40, 120, 16),
|
||||
(74, 72,0, 83, 72, 40, 120, 16),
|
||||
(76, 24,1, 86, 72, 40, 120, 16),
|
||||
]
|
||||
|
||||
# seed(42)
|
||||
|
||||
inside_track_permuted_and_track_permuted = permute_inside_and_across_tracks(seq)
|
||||
|
||||
print("原始 seq:")
|
||||
for e in seq:
|
||||
print(e)
|
||||
print("\n打乱后的 seq:")
|
||||
for e in inside_track_permuted_and_track_permuted:
|
||||
print(e)
|
||||
Reference in New Issue
Block a user