Calculating Beat-Synchronous Chroma Features

Dan Ellis dpwe@ee.columbia.edu 2016-04-04


In [1]:
%pylab inline
from __future__ import print_function

import cPickle as pickle
import os
import time
import IPython

import numpy as np
import scipy
import sklearn.mixture

import librosa
import mir_eval


Populating the interactive namespace from numpy and matplotlib
/Applications/anaconda/lib/python2.7/site-packages/librosa/core/audio.py:37: UserWarning: Could not import scikits.samplerate. Falling back to scipy.signal
  warnings.warn('Could not import scikits.samplerate. '

In [16]:
# Load in a single track from the 32kbps 16 kHz SR mono collection.
DATA_DIR = '/Users/dpwe/Downloads/prac10/data'

file_id = 'beatles/Let_It_Be/06-Let_It_Be'
y, sr = librosa.load(os.path.join(DATA_DIR, 'mp3s-32k', file_id + '.mp3'), sr=None)
print("sr=", sr, "duration=", y.shape[0]/float(sr))


sr= 16000 duration= 243.432

In [17]:
# Beat tracking.
hop_length = 128  # 8 ms at 16 kHz
tempo, beats = librosa.beat.beat_track(y=y, sr=sr, hop_length=hop_length, start_bpm=240)
print("tempo (BPM)=", tempo, "beat.shape=", beats.shape)
beat_times = beats * hop_length / float(sr)
print(beat_times[:5])
# Difference of successive beat times shows varying beat duration.
plot(np.diff(beat_times))


tempo (BPM)= 144.230769231 beat.shape= (550,)
[ 0.272  0.688  1.112  1.536  1.968]
Out[17]:
[<matplotlib.lines.Line2D at 0x114162ad0>]

In [8]:
def my_imshow(data, **kwargs):
    """Wrapper for imshow that sets common defaults."""
    plt.imshow(data, interpolation='nearest', aspect='auto', origin='bottom', cmap='gray_r', **kwargs)

In [19]:
# CQT-based chromagram and beat-level aggregation.
frame_chroma = librosa.feature.chroma_cqt(y=y, sr=sr, hop_length=hop_length)
print("frame_chroma.shape:", frame_chroma.shape)
beat_chroma = librosa.feature.sync(frame_chroma, beats).transpose()
print("beat_chroma.shape:", beat_chroma.shape)
plt.subplot(211)
my_imshow(frame_chroma[:, :12000])
plt.subplot(212)
my_imshow(beat_chroma[:20].transpose())


frame_chroma.shape: (12, 30430)
beat_chroma.shape: (551, 12)

In [10]:
# Code to convert the Isophonics label files into beat-references we need.
def read_iso_label_file(filename):
    """Read in an isophonics-format chord label file."""
    times = []
    labels = []
    with open(filename, 'r') as f:
        for line in f:
            fields = line.strip().split(' ')
            start_secs = float(fields[0])
            end_secs = float(fields[1])
            times.append((start_secs, end_secs))
            labels.append(fields[2])
    return np.array(times), labels

def calculate_overlap_durations(ranges_a, ranges_b):
    """Calculate the duration of overlaps between all pairs of (start, end) intervals."""
    max_starts_matrix = np.maximum.outer(ranges_a[:, 0], ranges_b[:, 0])
    min_ends_matrix = np.minimum.outer(ranges_a[:, 1], ranges_b[:, 1])
    overlap_durations = np.maximum(0, min_ends_matrix - max_starts_matrix)
    return overlap_durations

def sample_label_sequence(sample_ranges, label_ranges, labels):
    """Find the most-overlapping label for a list of (start, end) intervals."""
    overlaps = calculate_overlap_durations(sample_ranges, label_ranges)
    best_label = np.argmax(overlaps, axis=1)
    return [labels[i] for i in best_label]

def chord_name_to_index(labels):
    """Convert chord name strings into model indices (0..25)."""
    indices = np.zeros(len(labels), dtype=int)
    root_degrees = {'C': 0, 'D': 2, 'E': 4, 'F':5, 'G': 7, 'A':9, 'B': 11}
    for label_index, label in enumerate(labels):
        if label == 'N' or label == 'X':
            # Leave at zero.
            continue
        root_degree = root_degrees[label[0].upper()]
        minor = False
        if len(label) > 1:
            if label[1] == '#':
                root_degree = (root_degree + 1) % 12
            if label[1] == 'b':
                root_degree = (root_degree - 1) % 12
            if ':' in label:
                modifier = label[label.index(':') + 1:]
                if modifier[:3] == 'min':
                    minor = True
        indices[label_index] = 1 + root_degree + 12 * minor
    return indices

beat_ranges = np.hstack([beat_times[:, np.newaxis], 
                         np.hstack([beat_times[1:], 
                                    2 * beat_times[-1] - beat_times[-2]])[:, np.newaxis]])
label_ranges, labels = read_iso_label_file(os.path.join(DATA_DIR, 'isolabels', file_id + '.txt'))
print(chord_name_to_index(sample_label_sequence(beat_ranges, label_ranges, labels)[:32]))


[ 1  1  1  1  8  8  8  8 22 22 22 22  6  6  6  6  1  1  1  1  8  8  8  8  6
  6  6  6  1  1  1  1]

In [11]:
def calculate_chroma_and_labels_of_id(file_id):
    """Read the audio, calculate beat-sync chroma, sample the label file."""
    y, sr = librosa.load(os.path.join(DATA_DIR, 'mp3s-32k', file_id + '.mp3'), sr=None)
    hop_length = 128  # 8 ms at 16 kHz
    tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr, hop_length=hop_length, start_bpm=240)
    # Append a final beat time one beat beyond the end.
    extended_beat_frames = np.hstack([beat_frames, 2*beat_frames[-1] - beat_frames[-2]])
    frame_chroma = librosa.feature.chroma_cqt(y=y, sr=sr, hop_length=hop_length)
    # Drop the first beat_chroma which is stuff before the first beat, 
    # and the final beat_chroma which is everything after the last beat time.
    beat_chroma = librosa.feature.sync(frame_chroma, extended_beat_frames).transpose()
    # Drop first row if the beat_frames start after the beginning.
    if beat_frames[0] > 0:
        beat_chroma = beat_chroma[1:]
    # Keep only as many frames as beat times.
    beat_chroma = beat_chroma[:len(beat_frames)]
    assert beat_chroma.shape[0] == beat_frames.shape[0]
    # MP3s encoded with lame have a 68 ms delay
    LAME_DELAY_SECONDS = 0.068
    frame_rate = sr / float(hop_length)
    extended_beat_times = extended_beat_frames / frame_rate - LAME_DELAY_SECONDS
    beat_times = extended_beat_times[:-1]
    beat_ranges = np.hstack([extended_beat_times[:-1, np.newaxis], 
                             extended_beat_times[1:, np.newaxis]])
    label_time_ranges, labels = read_iso_label_file(os.path.join(
        DATA_DIR, 'isolabels', file_id + '.txt'))
    beat_labels = sample_label_sequence(beat_ranges, label_time_ranges, labels)
    label_indices = chord_name_to_index(beat_labels)
    return beat_times, beat_chroma, label_indices

beat_times, beat_chroma, label_indices = calculate_chroma_and_labels_of_id(file_id)
print(beat_chroma.shape, beat_times.shape, label_indices.shape)
plt.subplot(211)
my_imshow(beat_chroma[:50].transpose())
plt.subplot(212)
plt.plot(label_indices[:50], '.')


(550, 12) (550,) (550,)
Out[11]:
[<matplotlib.lines.Line2D at 0x11423bbd0>]

In [13]:
# Read and write per-track data files in native Python serialized format.
def write_beat_chroma_labels(filename, beat_times, chroma_features, label_indices):
    """Write out the computed beat-synchronous chroma data."""
    # Create the enclosing directory if needed.
    directory = os.path.dirname(filename)
    if directory and not os.path.exists(directory):
        os.makedirs(directory)
    with open(filename, "wb") as f:
        pickle.dump((beat_times, chroma_features, label_indices), f, pickle.HIGHEST_PROTOCOL)

def read_beat_chroma_labels(filename):
    """Read back a precomputed beat-synchronous chroma record."""
    with open(filename, "rb") as f:
        beat_times, chroma_features, label_indices = pickle.load(f)
    return beat_times, chroma_features, label_indices

beatchromlab_filename = os.path.join(DATA_DIR, 'beatchromlabs', file_id + '.pkl')
write_beat_chroma_labels(beatchromlab_filename, beat_chroma, beat_times, label_indices)

cc, tt, ll = read_beat_chroma_labels(beatchromlab_filename)
print(cc.shape, tt.shape, ll.shape)


(550, 12) (550,) (550,)

In [14]:
# Read in the list of training file IDs.
def read_file_list(filename):
    """Read a text file with one item per line."""
    items = []
    with open(filename, 'r') as f:
        for line in f:
            items.append(line.strip())
    return items

train_list_filename = os.path.join(DATA_DIR, 'trainfilelist.txt')
train_files = read_file_list(train_list_filename)
test_list_filename = os.path.join(DATA_DIR, 'testfilelist.txt')
test_files = read_file_list(test_list_filename)

all_ids = train_files
all_ids.extend(test_files)
print("# ids:", len(all_ids))


# ids: 180

In [15]:
for number, file_id in enumerate(all_ids):
    print(time.ctime(), "File {:d} of {:d}: {:s}".format(number, len(all_ids), file_id))
    beat_times, beat_chroma, label_indices = calculate_chroma_and_labels_of_id(file_id)
    beatchromlab_filename = os.path.join(DATA_DIR, 'beatchromlabs', file_id + '.pkl')
    write_beat_chroma_labels(beatchromlab_filename, beat_times, beat_chroma, label_indices)


Tue Apr  5 22:56:00 2016 File 0 of 180: beatles/With_The_Beatles/01-It_Won_t_Be_Long
Tue Apr  5 22:56:19 2016 File 1 of 180: beatles/With_The_Beatles/02-All_I_ve_Got_To_Do
Tue Apr  5 22:56:34 2016 File 2 of 180: beatles/With_The_Beatles/03-All_My_Loving
Tue Apr  5 22:56:43 2016 File 3 of 180: beatles/With_The_Beatles/04-Don_t_Bother_Me
Tue Apr  5 22:57:05 2016 File 4 of 180: beatles/With_The_Beatles/05-Little_Child
Tue Apr  5 22:57:11 2016 File 5 of 180: beatles/With_The_Beatles/06-Till_There_Was_You
Tue Apr  5 22:57:23 2016 File 6 of 180: beatles/With_The_Beatles/07-Please_Mister_Postman
Tue Apr  5 22:57:47 2016 File 7 of 180: beatles/With_The_Beatles/08-Roll_Over_Beethoven
Tue Apr  5 22:57:55 2016 File 8 of 180: beatles/With_The_Beatles/09-Hold_Me_Tight
Tue Apr  5 22:58:01 2016 File 9 of 180: beatles/With_The_Beatles/10-You_Really_Got_A_Hold_On_Me
Tue Apr  5 22:58:09 2016 File 10 of 180: beatles/With_The_Beatles/11-I_Wanna_Be_Your_Man
Tue Apr  5 22:58:17 2016 File 11 of 180: beatles/With_The_Beatles/12-Devil_In_Her_Heart
Tue Apr  5 22:58:26 2016 File 12 of 180: beatles/With_The_Beatles/13-Not_A_Second_Time
Tue Apr  5 22:58:32 2016 File 13 of 180: beatles/With_The_Beatles/14-Money_That_s_What_I_Want_
Tue Apr  5 22:58:39 2016 File 14 of 180: beatles/Rubber_Soul/01-Drive_My_Car
Tue Apr  5 22:58:52 2016 File 15 of 180: beatles/Rubber_Soul/02-Norwegian_Wood_This_Bird_Has_Flown_
Tue Apr  5 22:58:58 2016 File 16 of 180: beatles/Rubber_Soul/03-You_Won_t_See_Me
Tue Apr  5 22:59:15 2016 File 17 of 180: beatles/Rubber_Soul/04-Nowhere_Man
Tue Apr  5 22:59:23 2016 File 18 of 180: beatles/Rubber_Soul/05-Think_For_Yourself
Tue Apr  5 22:59:29 2016 File 19 of 180: beatles/Rubber_Soul/06-The_Word
Tue Apr  5 22:59:36 2016 File 20 of 180: beatles/Rubber_Soul/07-Michelle
Tue Apr  5 22:59:41 2016 File 21 of 180: beatles/Rubber_Soul/08-What_Goes_On
Tue Apr  5 22:59:53 2016 File 22 of 180: beatles/Rubber_Soul/09-Girl
Tue Apr  5 22:59:59 2016 File 23 of 180: beatles/Rubber_Soul/10-I_m_Looking_Through_You
Tue Apr  5 23:00:06 2016 File 24 of 180: beatles/Rubber_Soul/11-In_My_Life
Tue Apr  5 23:00:11 2016 File 25 of 180: beatles/Rubber_Soul/12-Wait
Tue Apr  5 23:00:17 2016 File 26 of 180: beatles/Rubber_Soul/13-If_I_Needed_Someone
Tue Apr  5 23:00:23 2016 File 27 of 180: beatles/Rubber_Soul/14-Run_For_Your_Life
Tue Apr  5 23:00:30 2016 File 28 of 180: beatles/The_White_Album_Disc_1/01-Back_In_The_U_S_S_R_
Tue Apr  5 23:00:36 2016 File 29 of 180: beatles/The_White_Album_Disc_1/02-Dear_Prudence
Tue Apr  5 23:00:45 2016 File 30 of 180: beatles/The_White_Album_Disc_1/03-Glass_Onion
Tue Apr  5 23:00:51 2016 File 31 of 180: beatles/The_White_Album_Disc_1/04-Ob-La-Di_Ob-La-Da
Tue Apr  5 23:00:58 2016 File 32 of 180: beatles/The_White_Album_Disc_1/05-Wild_Honey_Pie
Tue Apr  5 23:01:00 2016 File 33 of 180: beatles/The_White_Album_Disc_1/06-The_Continuing_Story_Of_Bungalow_Bill
Tue Apr  5 23:01:08 2016 File 34 of 180: beatles/The_White_Album_Disc_1/07-While_My_Guitar_Gently_Weeps
Tue Apr  5 23:01:25 2016 File 35 of 180: beatles/The_White_Album_Disc_1/08-Happiness_Is_A_Warm_Gun
Tue Apr  5 23:01:32 2016 File 36 of 180: beatles/The_White_Album_Disc_1/09-Martha_My_Dear
Tue Apr  5 23:01:41 2016 File 37 of 180: beatles/The_White_Album_Disc_1/10-I_m_So_Tired
Tue Apr  5 23:01:46 2016 File 38 of 180: beatles/The_White_Album_Disc_1/11-Blackbird
Tue Apr  5 23:01:54 2016 File 39 of 180: beatles/The_White_Album_Disc_1/12-Piggies
Tue Apr  5 23:02:10 2016 File 40 of 180: beatles/The_White_Album_Disc_1/13-Rocky_Raccoon
Tue Apr  5 23:02:18 2016 File 41 of 180: beatles/The_White_Album_Disc_1/14-Don_t_Pass_Me_By
Tue Apr  5 23:02:36 2016 File 42 of 180: beatles/The_White_Album_Disc_1/15-Why_Don_t_We_Do_It_In_The_Road
Tue Apr  5 23:02:41 2016 File 43 of 180: beatles/The_White_Album_Disc_1/16-I_Will
Tue Apr  5 23:02:48 2016 File 44 of 180: beatles/The_White_Album_Disc_1/17-Julia
Tue Apr  5 23:03:01 2016 File 45 of 180: beatles/The_White_Album_Disc_2/01-Birthday
Tue Apr  5 23:03:10 2016 File 46 of 180: beatles/The_White_Album_Disc_2/02-Yer_Blues
Tue Apr  5 23:04:02 2016 File 47 of 180: beatles/The_White_Album_Disc_2/03-Mother_Nature_s_Son
Tue Apr  5 23:04:09 2016 File 48 of 180: beatles/The_White_Album_Disc_2/04-Everybody_s_Got_Something_To_Hide_Except_Me_And_My_Monkey
Tue Apr  5 23:04:15 2016 File 49 of 180: beatles/The_White_Album_Disc_2/05-Sexy_Sadie
Tue Apr  5 23:04:24 2016 File 50 of 180: beatles/The_White_Album_Disc_2/06-Helter_Skelter
Tue Apr  5 23:04:44 2016 File 51 of 180: beatles/The_White_Album_Disc_2/07-Long_Long_Long
Tue Apr  5 23:04:52 2016 File 52 of 180: beatles/The_White_Album_Disc_2/08-Revolution_1
Tue Apr  5 23:05:03 2016 File 53 of 180: beatles/The_White_Album_Disc_2/09-Honey_Pie
Tue Apr  5 23:05:17 2016 File 54 of 180: beatles/The_White_Album_Disc_2/10-Savoy_Truffle
Tue Apr  5 23:05:24 2016 File 55 of 180: beatles/The_White_Album_Disc_2/11-Cry_Baby_Cry
Tue Apr  5 23:05:31 2016 File 56 of 180: beatles/The_White_Album_Disc_2/12-Revolution_9
Tue Apr  5 23:07:19 2016 File 57 of 180: beatles/The_White_Album_Disc_2/13-Good_Night
Tue Apr  5 23:07:26 2016 File 58 of 180: beatles/A_Hard_Day_s_Night/01-A_Hard_Day_s_Night
Tue Apr  5 23:07:48 2016 File 59 of 180: beatles/A_Hard_Day_s_Night/02-I_Should_Have_Known_Better
Tue Apr  5 23:08:03 2016 File 60 of 180: beatles/A_Hard_Day_s_Night/03-If_I_Fell
Tue Apr  5 23:08:10 2016 File 61 of 180: beatles/A_Hard_Day_s_Night/04-I_m_Happy_Just_To_Dance_With_You
Tue Apr  5 23:08:24 2016 File 62 of 180: beatles/A_Hard_Day_s_Night/05-And_I_Love_Her
Tue Apr  5 23:08:46 2016 File 63 of 180: beatles/A_Hard_Day_s_Night/06-Tell_Me_Why
Tue Apr  5 23:09:03 2016 File 64 of 180: beatles/A_Hard_Day_s_Night/07-Can_t_Buy_Me_Love
Tue Apr  5 23:09:08 2016 File 65 of 180: beatles/A_Hard_Day_s_Night/08-Any_Time_At_All
Tue Apr  5 23:09:26 2016 File 66 of 180: beatles/A_Hard_Day_s_Night/09-I_ll_Cry_Instead
Tue Apr  5 23:09:30 2016 File 67 of 180: beatles/A_Hard_Day_s_Night/10-Things_We_Said_Today
Tue Apr  5 23:09:36 2016 File 68 of 180: beatles/A_Hard_Day_s_Night/11-When_I_Get_Home
Tue Apr  5 23:09:55 2016 File 69 of 180: beatles/A_Hard_Day_s_Night/12-You_Can_t_Do_That
Tue Apr  5 23:10:02 2016 File 70 of 180: beatles/A_Hard_Day_s_Night/13-I_ll_Be_Back
Tue Apr  5 23:10:08 2016 File 71 of 180: beatles/Revolver/01-Taxman
Tue Apr  5 23:10:13 2016 File 72 of 180: beatles/Revolver/02-Eleanor_Rigby
Tue Apr  5 23:10:18 2016 File 73 of 180: beatles/Revolver/03-I_m_Only_Sleeping
Tue Apr  5 23:10:24 2016 File 74 of 180: beatles/Revolver/04-Love_You_To
Tue Apr  5 23:10:31 2016 File 75 of 180: beatles/Revolver/05-Here_There_And_Everywhere
Tue Apr  5 23:10:39 2016 File 76 of 180: beatles/Revolver/06-Yellow_Submarine
Tue Apr  5 23:10:46 2016 File 77 of 180: beatles/Revolver/07-She_Said_She_Said
Tue Apr  5 23:10:53 2016 File 78 of 180: beatles/Revolver/08-Good_Day_Sunshine
Tue Apr  5 23:10:58 2016 File 79 of 180: beatles/Revolver/09-And_Your_Bird_Can_Sing
Tue Apr  5 23:11:08 2016 File 80 of 180: beatles/Revolver/10-For_No_One
Tue Apr  5 23:11:15 2016 File 81 of 180: beatles/Revolver/11-Doctor_Robert
Tue Apr  5 23:11:21 2016 File 82 of 180: beatles/Revolver/12-I_Want_To_Tell_You
Tue Apr  5 23:11:29 2016 File 83 of 180: beatles/Revolver/13-Got_To_Get_You_Into_My_Life
Tue Apr  5 23:11:36 2016 File 84 of 180: beatles/Revolver/14-Tomorrow_Never_Knows
Tue Apr  5 23:11:43 2016 File 85 of 180: beatles/Abbey_Road/01-Come_Together
Tue Apr  5 23:12:04 2016 File 86 of 180: beatles/Abbey_Road/02-Something
Tue Apr  5 23:12:36 2016 File 87 of 180: beatles/Abbey_Road/03-Maxwell_s_Silver_Hammer
Tue Apr  5 23:12:47 2016 File 88 of 180: beatles/Abbey_Road/04-Oh_Darling
Tue Apr  5 23:12:56 2016 File 89 of 180: beatles/Abbey_Road/05-Octopus_s_Garden
Tue Apr  5 23:13:23 2016 File 90 of 180: beatles/Abbey_Road/06-I_Want_You_She_s_So_Heavy_
Tue Apr  5 23:14:31 2016 File 91 of 180: beatles/Abbey_Road/07-Here_Comes_The_Sun
Tue Apr  5 23:14:49 2016 File 92 of 180: beatles/Abbey_Road/08-Because
Tue Apr  5 23:14:55 2016 File 93 of 180: beatles/Abbey_Road/09-You_Never_Give_Me_Your_Money
Tue Apr  5 23:15:46 2016 File 94 of 180: beatles/Abbey_Road/10-Sun_King
Tue Apr  5 23:15:51 2016 File 95 of 180: beatles/Abbey_Road/11-Mean_Mr_Mustard
Tue Apr  5 23:15:53 2016 File 96 of 180: beatles/Abbey_Road/12-Polythene_Pam
Tue Apr  5 23:15:56 2016 File 97 of 180: beatles/Abbey_Road/13-She_Came_In_Through_The_Bathroom_Window
Tue Apr  5 23:16:05 2016 File 98 of 180: beatles/Abbey_Road/14-Golden_Slumbers
Tue Apr  5 23:16:09 2016 File 99 of 180: beatles/Abbey_Road/15-Carry_That_Weight
Tue Apr  5 23:16:12 2016 File 100 of 180: beatles/Abbey_Road/16-The_End
Tue Apr  5 23:16:17 2016 File 101 of 180: beatles/Abbey_Road/17-Her_Majesty
Tue Apr  5 23:16:18 2016 File 102 of 180: beatles/Beatles_For_Sale/01-No_Reply
Tue Apr  5 23:16:36 2016 File 103 of 180: beatles/Beatles_For_Sale/02-I_m_A_Loser
Tue Apr  5 23:16:43 2016 File 104 of 180: beatles/Beatles_For_Sale/03-Baby_s_In_Black
Tue Apr  5 23:16:59 2016 File 105 of 180: beatles/Beatles_For_Sale/04-Rock_And_Roll_Music
Tue Apr  5 23:17:05 2016 File 106 of 180: beatles/Beatles_For_Sale/05-I_ll_Follow_The_Sun
Tue Apr  5 23:17:10 2016 File 107 of 180: beatles/Beatles_For_Sale/06-Mr_Moonlight
Tue Apr  5 23:17:16 2016 File 108 of 180: beatles/Beatles_For_Sale/07-Medley_Kansas_City_Hey_Hey
Tue Apr  5 23:17:23 2016 File 109 of 180: beatles/Beatles_For_Sale/08-Eight_Days_A_Week
Tue Apr  5 23:17:29 2016 File 110 of 180: beatles/Beatles_For_Sale/09-Words_Of_Love
Tue Apr  5 23:17:41 2016 File 111 of 180: beatles/Beatles_For_Sale/10-Honey_Don_t
Tue Apr  5 23:18:10 2016 File 112 of 180: beatles/Beatles_For_Sale/11-Every_Little_Thing
Tue Apr  5 23:18:26 2016 File 113 of 180: beatles/Beatles_For_Sale/12-I_Don_t_Want_To_Spoil_The_Party
Tue Apr  5 23:18:32 2016 File 114 of 180: beatles/Beatles_For_Sale/13-What_You_re_Doing
Tue Apr  5 23:18:38 2016 File 115 of 180: beatles/Beatles_For_Sale/14-Everybody_s_Trying_To_Be_My_Baby
Tue Apr  5 23:18:46 2016 File 116 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/01-Sgt_Pepper_s_Lonely_Hearts_Club_Band
Tue Apr  5 23:18:51 2016 File 117 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/02-With_A_Little_Help_From_My_Friends
Tue Apr  5 23:18:57 2016 File 118 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/03-Lucy_In_The_Sky_With_Diamonds
Tue Apr  5 23:19:20 2016 File 119 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/04-Getting_Better
Tue Apr  5 23:19:28 2016 File 120 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/05-Fixing_A_Hole
Tue Apr  5 23:19:35 2016 File 121 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/06-She_s_Leaving_Home
Tue Apr  5 23:19:44 2016 File 122 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/07-Being_For_The_Benefit_Of_Mr_Kite
Tue Apr  5 23:19:51 2016 File 123 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/08-Within_You_Without_You
Tue Apr  5 23:20:03 2016 File 124 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/09-When_I_m_Sixty-Four
Tue Apr  5 23:20:12 2016 File 125 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/10-Lovely_Rita
Tue Apr  5 23:20:36 2016 File 126 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/11-Good_Morning_Good_Morning
Tue Apr  5 23:20:42 2016 File 127 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/12-Sgt_Pepper_s_Lonely_Hearts_Club_Band_Reprise_
Tue Apr  5 23:20:45 2016 File 128 of 180: beatles/Sgt_Pepper_s_Lonely_Hearts_Club_Band/13-A_Day_In_The_Life
Tue Apr  5 23:21:03 2016 File 129 of 180: beatles/Let_It_Be/01-Two_Of_Us
Tue Apr  5 23:21:27 2016 File 130 of 180: beatles/Let_It_Be/02-Dig_A_Pony
Tue Apr  5 23:21:36 2016 File 131 of 180: beatles/Let_It_Be/03-Across_The_Universe
Tue Apr  5 23:21:47 2016 File 132 of 180: beatles/Let_It_Be/04-I_Me_Mine
Tue Apr  5 23:21:56 2016 File 133 of 180: beatles/Let_It_Be/05-Dig_It
Tue Apr  5 23:21:57 2016 File 134 of 180: beatles/Let_It_Be/06-Let_It_Be
Tue Apr  5 23:22:05 2016 File 135 of 180: beatles/Let_It_Be/07-Maggie_Mae
Tue Apr  5 23:22:07 2016 File 136 of 180: beatles/Let_It_Be/08-I_ve_Got_A_Feeling
Tue Apr  5 23:22:16 2016 File 137 of 180: beatles/Let_It_Be/09-One_After_909
Tue Apr  5 23:22:23 2016 File 138 of 180: beatles/Let_It_Be/10-The_Long_And_Winding_Road
Tue Apr  5 23:22:32 2016 File 139 of 180: beatles/Let_It_Be/11-For_You_Blue
Tue Apr  5 23:22:38 2016 File 140 of 180: beatles/Let_It_Be/12-Get_Back
Tue Apr  5 23:22:47 2016 File 141 of 180: beatles/Please_Please_Me/01-I_Saw_Her_Standing_There
Tue Apr  5 23:22:55 2016 File 142 of 180: beatles/Please_Please_Me/02-Misery
Tue Apr  5 23:23:00 2016 File 143 of 180: beatles/Please_Please_Me/03-Anna_Go_To_Him_
Tue Apr  5 23:23:10 2016 File 144 of 180: beatles/Please_Please_Me/04-Chains
Tue Apr  5 23:23:31 2016 File 145 of 180: beatles/Please_Please_Me/05-Boys
Tue Apr  5 23:23:42 2016 File 146 of 180: beatles/Please_Please_Me/06-Ask_Me_Why
Tue Apr  5 23:23:48 2016 File 147 of 180: beatles/Please_Please_Me/07-Please_Please_Me
Tue Apr  5 23:23:53 2016 File 148 of 180: beatles/Please_Please_Me/08-Love_Me_Do
Tue Apr  5 23:23:58 2016 File 149 of 180: beatles/Please_Please_Me/09-P_S_I_Love_You
Tue Apr  5 23:24:04 2016 File 150 of 180: beatles/Please_Please_Me/10-Baby_It_s_You
Tue Apr  5 23:24:10 2016 File 151 of 180: beatles/Please_Please_Me/11-Do_You_Want_To_Know_A_Secret
Tue Apr  5 23:24:25 2016 File 152 of 180: beatles/Please_Please_Me/12-A_Taste_Of_Honey
Tue Apr  5 23:24:30 2016 File 153 of 180: beatles/Please_Please_Me/13-There_s_A_Place
Tue Apr  5 23:24:34 2016 File 154 of 180: beatles/Please_Please_Me/14-Twist_And_Shout
Tue Apr  5 23:24:48 2016 File 155 of 180: beatles/Help_/01-Help_
Tue Apr  5 23:25:07 2016 File 156 of 180: beatles/Help_/02-The_Night_Before
Tue Apr  5 23:25:31 2016 File 157 of 180: beatles/Help_/03-You_ve_Got_To_Hide_Your_Love_Away
Tue Apr  5 23:25:36 2016 File 158 of 180: beatles/Help_/04-I_Need_You
Tue Apr  5 23:25:41 2016 File 159 of 180: beatles/Help_/05-Another_Girl
Tue Apr  5 23:25:46 2016 File 160 of 180: beatles/Help_/06-You_re_Going_To_Lose_That_Girl
Tue Apr  5 23:25:52 2016 File 161 of 180: beatles/Help_/07-Ticket_To_Ride
Tue Apr  5 23:26:26 2016 File 162 of 180: beatles/Help_/08-Act_Naturally
Tue Apr  5 23:26:49 2016 File 163 of 180: beatles/Help_/09-It_s_Only_Love
Tue Apr  5 23:26:53 2016 File 164 of 180: beatles/Help_/10-You_Like_Me_Too_Much
Tue Apr  5 23:27:03 2016 File 165 of 180: beatles/Help_/11-Tell_Me_What_You_See
Tue Apr  5 23:27:09 2016 File 166 of 180: beatles/Help_/12-I_ve_Just_Seen_A_Face
Tue Apr  5 23:27:14 2016 File 167 of 180: beatles/Help_/13-Yesterday
Tue Apr  5 23:27:21 2016 File 168 of 180: beatles/Help_/14-Dizzy_Miss_Lizzy
Tue Apr  5 23:27:28 2016 File 169 of 180: beatles/Magical_Mystery_Tour/01-Magical_Mystery_Tour
Tue Apr  5 23:27:36 2016 File 170 of 180: beatles/Magical_Mystery_Tour/02-The_Fool_On_The_Hill
Tue Apr  5 23:28:06 2016 File 171 of 180: beatles/Magical_Mystery_Tour/03-Flying
Tue Apr  5 23:28:13 2016 File 172 of 180: beatles/Magical_Mystery_Tour/04-Blue_Jay_Way
Tue Apr  5 23:28:22 2016 File 173 of 180: beatles/Magical_Mystery_Tour/05-Your_Mother_Should_Know
Tue Apr  5 23:28:43 2016 File 174 of 180: beatles/Magical_Mystery_Tour/06-I_Am_The_Walrus
Tue Apr  5 23:28:53 2016 File 175 of 180: beatles/Magical_Mystery_Tour/07-Hello_Goodbye
Tue Apr  5 23:29:16 2016 File 176 of 180: beatles/Magical_Mystery_Tour/08-Strawberry_Fields_Forever
Tue Apr  5 23:29:27 2016 File 177 of 180: beatles/Magical_Mystery_Tour/09-Penny_Lane
Tue Apr  5 23:29:41 2016 File 178 of 180: beatles/Magical_Mystery_Tour/10-Baby_You_re_A_Rich_Man
Tue Apr  5 23:29:53 2016 File 179 of 180: beatles/Magical_Mystery_Tour/11-All_You_Need_Is_Love

In [ ]: