def drawPianoRoll(pianoroll, title=''): # Create a `pypianoroll.Track` instance pianoroll = pianoroll.T track = Track(pianoroll=pianoroll, program=0, is_drum=False, name=title) # Plot the piano-roll fig, ax = track.plot() plt.show()
def gen_song(tempo, title, plot_proll=False): print('\n GENERATING SONG...') noise = np.random.normal(0, 1, (1, latent_space)) print(noise) new_song = playnotes( np.array(decoder([noise])).reshape(parts * seq_len, 128)) * 100 track = Track(new_song, name='test') if plot_proll: track.plot() plt.show() multitrack = Multitrack(tracks=[track], beat_resolution=beat_resolution, tempo=tempo) multitrack.write(title + '.mid') closest_song(noise)
def get_merged(multitrack): """Return a `pypianoroll.Multitrack` instance with piano-rolls merged to five tracks (Bass, Drums, Guitar, Piano and Strings)""" category_list = { 'Bass': [], 'Drums': [], 'Guitar': [], 'Piano': [], 'Strings': [] } program_dict = { 'Piano': 0, 'Drums': 0, 'Guitar': 24, 'Bass': 32, 'Strings': 48 } multi = Multitrack(tempo=multitrack.tempo, downbeat=multitrack.downbeat, beat_resolution=multitrack.beat_resolution, name=multitrack.name) for idx, track in enumerate(multitrack.tracks): if track.is_drum: category_list['Drums'].append(idx) elif track.program // 8 == 0: category_list['Piano'].append(idx) elif track.program // 8 == 3: category_list['Guitar'].append(idx) elif track.program // 8 == 4: category_list['Bass'].append(idx) else: category_list['Strings'].append(idx) for key in category_list.keys(): is_drum = key == 'Drums' if category_list[key]: merged = multitrack[category_list[key]].get_merged_pianoroll() track = Track(merged, program_dict[key], is_drum=is_drum, name=key) track.plot() multi.append_track(track) else: track = Track(None, program_dict[key], is_drum=is_drum, name=key) multi.append_track(track) return multi
def pltReducedDrumTrack(track, beat_resolution=12, cmap='Blues'): track = np.append(track, np.zeros((track.shape[0], 119)), axis=1) # track = np.where(track == 1, 128, 0) track = track * 128 track = Track(pianoroll=track) fig, axs = track.plot( xtick='beat', yticklabel='number', beat_resolution=beat_resolution, cmap=cmap, ) fig.set_size_inches(30,10) y = axs.set_ylim(0, 10) # C0 - C2 y = axs.set_yticks(range(10)) plt.show()
def plot_track(track, cmap='Blues', single=True, bres=3): t = track if t.shape[1] != 128: t = np.append(np.zeros(((t.shape[0]), 34)), t, axis=1) t = np.append(t, np.zeros((t.shape[0], 47)), axis=1) pr = Track(pianoroll=t) fig, axs = pr.plot(xtick='beat', ytick='octave', yticklabel='number', beat_resolution=bres, cmap=cmap) y = axs.set_ylim(34, 81) # C0 - C2 if single: x = axs.set_xlim(0, BAR_DIVISION) plt.show()