# 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)
Example #2
0
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)