Exemplo n.º 1
0
def get_ids_from_files(searchpath_or_pathlist,
                       ext='.mp3',
                       recursive=False,
                       save_to=None,
                       separator=" "):

    filelist = preparse_files(searchpath_or_pathlist,
                              ext=ext,
                              recursive=recursive)

    track_ids = []
    for item in filelist:
        if " " not in item:
            track_id = os.path.split(item)[1].split('.')[0]
        else:
            track_id = os.path.split(item)[1].split()[0]
        track_ids.append(int(track_id))

    if save_to is not None:
        idlist_file = open(save_to, "w")
        [
            idlist_file.write(str(track_id) + separator)
            for track_id in track_ids
        ]

    return track_ids
Exemplo n.º 2
0
def wav2aiff(input_path, replace=True):
    """Convert a wav audio file into an aiff audio file."""

    files = preparse_files(input_path)

    for f in files:
        fname, fext = os.path.splitext(f)
        if fext == '.wav':
            call('ffmpeg -i "{}" "{}"'.format(f, fname + '.aif'), shell=True)
            if replace:
                os.remove(f)
Exemplo n.º 3
0
def filepath_to_pdcol(dataframe, searchpath_or_pathlist, ext='.mp3', filename_only=True, remove_extension=True):
    filelist = preparse_files(searchpath_or_pathlist, ext=ext)

    dataframe['filename'] = pd.Series()
    for item in dataframe.iterrows():
        file_path = find_file_by_id(item[1][0], filelist)
        if filename_only:
            file_path = strip_filename(file_path)
        if remove_extension:
            file_path = os.path.splitext(file_path)[0]
            print(file_path)
        dataframe.set_value(dataframe.index[item[0]], ['filename'], file_path)
Exemplo n.º 4
0
def find_file_by_id(beatport_id, searchpath_or_pathlist, ext='.mp3'):
    """
    Find a beaport file by its number id given a search path or dir.
    The Beatport id can be a string or an integer.

    """
    filelist = preparse_files(searchpath_or_pathlist, ext=ext)

    for item in filelist:
        item_id = _remove_leading_zeroes_from_id(os.path.split(item)[1].split()[0])

        if item_id == _remove_leading_zeroes_from_id(beatport_id):
            return item
Exemplo n.º 5
0
def metadir_to_pddf(dir_or_listOfFilepaths, ext='.keyest-configs'):
    """
    Directory with metadata files to pandas dataframe.
    Takes a dir with keyest-configs files and creates a pandas dataframe with them.
    """

    list_of_files = preparse_files(dir_or_listOfFilepaths, ext=ext)

    dataframe = []
    for item in list_of_files:
        dataframe.append(metafile_to_pds(item))

    # put the results in a pandas dataframe:
    return pd.DataFrame(dataframe)
Exemplo n.º 6
0
def audio_to_mp3_96(input_path, ext='.mp3'):
    """Convert an audio file to mp3 at 96 Kbps."""

    files = preparse_files(input_path)

    if os.path.isfile(input_path):
        my_dir = os.path.split(input_path)[0]
        temp_dir = os.path.join(my_dir, '96kbps')
    else:
        temp_dir = os.path.join(input_path, '96kbps')
        os.mkdir(temp_dir)

    for f in files:
        fname, fext = os.path.splitext(f)
        if fext == ext:
            call('sox "{}" -C 96.0 "{}"'.format(f, os.path.join(temp_dir, os.path.split(fname)[1] + ext)), shell=True)
            print("Converting {} to 96 Kbps.".format((os.path.split(f)[1])))
Exemplo n.º 7
0
def trim_to_first_n_secs(input_path, duration=7.5, ext='.mp3'):
    """Create a sound file with the first n seconds of a larger audio file."""

    files = preparse_files(input_path, ext=ext)

    if os.path.isfile(input_path):
        my_dir = os.path.split(input_path)[0]
        temp_dir = os.path.join(my_dir, '{}s'.format(duration))
    elif os.path.isdir(input_path):
        temp_dir = os.path.join(input_path, '{}s'.format(duration))
        os.mkdir(temp_dir)
    else:
        temp_dir = os.getcwd()

    for f in files:
        fdir, fname = os.path.split(f)
        call('sox "{}" "{}" trim 0 00:{}'.format(f, os.path.join(temp_dir, fname), duration), shell=True)
        print("Cutting {} to first {} seconds".format(fname, duration))
Exemplo n.º 8
0
    parser.add_argument("input", help="file or dir to analyse for hypermetrical positions.")
    parser.add_argument("-o", "--output_dir", help="dir to write results to")
    parser.add_argument("-r", "--recursive", action="store_true", help="recursive")

    args = parser.parse_args()

    print("\nPreparing the Algorithm...")

    # create a madmom 'processor' to find the hypermetrical positions ONLY.
    beat_tracker = mmm.features.beats.DBNDownBeatTrackingProcessor(beats_per_bar=16, fps=100, downbeats=True)

    if os.path.isfile(args.input):
        list_of_files = [args.input]
        output_dir = os.path.split(args.input)[0]
    elif os.path.isdir(args.input):
        list_of_files = preparse_files(args.input, recursive=args.recursive)
        output_dir = args.input
    else:
        raise NameError("Invalid input. Make sure it is a valid file or dir.")

    if args.output_dir:
        if not os.path.isdir(args.output_dir):
            output_dir = create_dir(args.output_dir)
        else:
            output_dir = args.output_dir

    print("Analysing audio files in '{}'".format(args.input))
    print("Exporting annotations to '{}'\n".format(output_dir))

    count_files = 0
    for a_file in list_of_files: