Beispiel #1
0
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()
Beispiel #2
0
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
Beispiel #4
0
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()
Beispiel #5
0
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()