src.preprocess

 1import os
 2from glob import glob
 3
 4from midi2audio import FluidSynth
 5from tqdm import tqdm
 6
 7from src.helper import print_midi
 8
 9
10def convert_labeled_data_to_wav():
11    """Converts the labeled data from MIDI format to WAV format."""
12
13    fs = FluidSynth()
14
15    # Pathing of files
16    abs_dir = os.getcwd()
17    source_dir = "data/musicians"
18
19    # Create iterator for musician folders
20    parent_folders = os.listdir(source_dir)
21    musician_folders = tqdm(parent_folders, colour="green")
22
23    # Iterate over all musician folders
24    for top_folder in musician_folders:
25        musician_folders.set_description(f"Processing: {top_folder}")
26
27        # Ignore irrelevant files
28        if top_folder == ".DS_Store":
29            continue  # this is a MacOSX generated file
30
31        # Create iterator for MIDI files
32        midi_files = tqdm(glob(source_dir + "/" + top_folder + "/*.mid"), colour="red")
33
34        # Iterate over all files under musician folders
35        for midi_file in midi_files:
36            midi_files.set_description(f"Processing: {midi_file.split('/')[-1]}")
37            input_file = abs_dir + "/" + midi_file
38            output_file = os.path.splitext(input_file)[0] + ".wav"
39            fs.midi_to_audio(input_file, output_file)
40
41
42def convert_unlabled_data_to_wav():
43    """Converts the unlabled data from MIDI format to WAV format."""
44
45    fs = FluidSynth()
46
47    # Pathing of files
48    abs_dir = os.getcwd()
49    source_dir = "data/test"
50
51    # Create iterator for MIDI files
52    midi_files = tqdm(glob(source_dir + "/*.mid"), colour="green")
53
54    # Iterate over all files under musician folders
55    for midi_file in midi_files:
56        midi_files.set_description(f"Processing: {midi_file.split('/')[-1]}")
57        input_file = abs_dir + "/" + midi_file
58        output_file = os.path.splitext(input_file)[0] + ".wav"
59        fs.midi_to_audio(input_file, output_file)
60
61
62# using the default sound font in 44100 Hz sample rate
63if __name__ == "__main__":
64    # First convert all MIDI files to WAV format
65    convert_labeled_data_to_wav()
66    convert_unlabled_data_to_wav()
67
68    # View Track Metadata
69    print_midi("data/test/0.002716920481628_adj.mid")
def convert_labeled_data_to_wav():
11def convert_labeled_data_to_wav():
12    """Converts the labeled data from MIDI format to WAV format."""
13
14    fs = FluidSynth()
15
16    # Pathing of files
17    abs_dir = os.getcwd()
18    source_dir = "data/musicians"
19
20    # Create iterator for musician folders
21    parent_folders = os.listdir(source_dir)
22    musician_folders = tqdm(parent_folders, colour="green")
23
24    # Iterate over all musician folders
25    for top_folder in musician_folders:
26        musician_folders.set_description(f"Processing: {top_folder}")
27
28        # Ignore irrelevant files
29        if top_folder == ".DS_Store":
30            continue  # this is a MacOSX generated file
31
32        # Create iterator for MIDI files
33        midi_files = tqdm(glob(source_dir + "/" + top_folder + "/*.mid"), colour="red")
34
35        # Iterate over all files under musician folders
36        for midi_file in midi_files:
37            midi_files.set_description(f"Processing: {midi_file.split('/')[-1]}")
38            input_file = abs_dir + "/" + midi_file
39            output_file = os.path.splitext(input_file)[0] + ".wav"
40            fs.midi_to_audio(input_file, output_file)

Converts the labeled data from MIDI format to WAV format.

def convert_unlabled_data_to_wav():
43def convert_unlabled_data_to_wav():
44    """Converts the unlabled data from MIDI format to WAV format."""
45
46    fs = FluidSynth()
47
48    # Pathing of files
49    abs_dir = os.getcwd()
50    source_dir = "data/test"
51
52    # Create iterator for MIDI files
53    midi_files = tqdm(glob(source_dir + "/*.mid"), colour="green")
54
55    # Iterate over all files under musician folders
56    for midi_file in midi_files:
57        midi_files.set_description(f"Processing: {midi_file.split('/')[-1]}")
58        input_file = abs_dir + "/" + midi_file
59        output_file = os.path.splitext(input_file)[0] + ".wav"
60        fs.midi_to_audio(input_file, output_file)

Converts the unlabled data from MIDI format to WAV format.