# CREATED:2013-08-22 12:20:01 by Brian McFee <*****@*****.**> '''Music segmentation using timbre, pitch, repetition and time. If run as a program, usage is: ''' import sys import os import cPickle as pickle import segmenter def features(input_song): with open(input_song, 'r') as f: data = pickle.load(f) return data['features'], data['beats'] if __name__ == '__main__': parameters = segmenter.process_arguments(sys.argv[1:]) # Load the features print '- ', os.path.basename(parameters['input_song']) X, beats = features(parameters['input_song']) segmenter.lsd(X[0], X[1], beats, parameters)
def make_jams(levels, labels, beats): J = jams.Jams() J.metadata.duration = beats[-1] annotation = J.sections.create_annotation() make_metadata(annotation) for tag, bounds in zip(labels, levels): add_level(annotation, tag, make_intervals(bounds, beats)) return J if __name__ == '__main__': parameters = segmenter.process_arguments() # Load the features print '- ', os.path.basename(parameters['input_song']) X, beats = segmenter.features(parameters['input_song']) # Load the boundary transformation W_bound = segmenter.load_transform(parameters['transform_boundary']) print '\tapplying boundary transformation...' X_bound = W_bound.dot(X) # Find the segment boundaries print '\tpredicting segments...' kmin, kmax = segmenter.get_num_segs(beats[-1]) levels, labels = get_all_levels(X_bound, kmin, kmax)
#!/usr/bin/env python # CREATED:2013-08-22 12:20:01 by Brian McFee <*****@*****.**> '''Music segmentation using timbre, pitch, repetition and time. If run as a program, usage is: ''' import sys import os import cPickle as pickle import segmenter def features(input_song): with open(input_song, 'r') as f: data = pickle.load(f) return data['features'], data['beats'] if __name__ == '__main__': parameters = segmenter.process_arguments(sys.argv[1:]) # Load the features print '- ', os.path.basename(parameters['input_song']) X, beats = features(parameters['input_song']) segmenter.lsd(X[0], X[1], beats, parameters)