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
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)
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)
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
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)
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])))
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))
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: