コード例 #1
0
    print("Couldn't find guitar BGM")
    tmpfile.tmpcleanup()
    exit(1)

tmpfile.add_temp_file(drum_bgm_out)
tmpfile.add_temp_file(guitar_bgm_out)

music_id = int(os.path.basename(drum_bgm)[3:7])

song_info = mdb.get_song_info_from_csv("gitadora_music.csv", music_id)

if song_info is None:
    song_info = mdb.get_song_info_from_mdb("mdb_xg.xml", music_id)

if args.mix_phase:
    wavbintool.parse_bin(base_bgm, base_bgm_out)

wavbintool.parse_bin(drum_bgm, drum_bgm_out)
wavbintool.parse_bin(guitar_bgm, guitar_bgm_out)

if args.mix_phase:
    base_audio = pydub.AudioSegment.from_file(base_bgm_out).invert_phase()

drum_audio = pydub.AudioSegment.from_file(drum_bgm_out)
guitar_audio = pydub.AudioSegment.from_file(guitar_bgm_out)

if args.mix_phase:
    drum_phased = drum_audio.overlay(base_audio)
    guitar_phased = guitar_audio.overlay(base_audio)

    drum_phased += args.mix_drum_volume
コード例 #2
0
                # Convert to WAV
                output_filename = filename.replace(".bin", ".wav")
                output_filename = os.path.join(
                    sound_folder,
                    os.path.basename(filename).replace(".bin", ".wav"))

                print("Converting %s..." % output_filename)

                if not args.single_threaded:
                    bgm_thread = threading.Thread(target=wavbintool.parse_bin,
                                                  args=(filename,
                                                        output_filename))
                    bgm_thread.start()
                    running_threads.append(bgm_thread)
                else:
                    wavbintool.parse_bin(filename, output_filename)
        else:
            filenames_bgm = None

        def handle_set(file_set):
            if 'seq' not in file_set or not file_set['seq']:
                return

            # Extract va3 files
            if 'sound' in file_set and not args.no_sounds:
                print("Parsing %s..." % file_set['sound'])
                vas3tool.read_vas3(file_set['sound'],
                                   sound_folder,
                                   force_game=("drum" if file_set['sound'][-5]
                                               == 'd' else "guitar"))
コード例 #3
0
    if not instrument_bgm:
        results = fnmatch.filter(filenames_bgm_basename,
                                 instrument_bgm_pattern)

        if len(results) > 0:
            instrument_bgm = results[0]

    if base_bgm and instrument_bgm:
        break

base_bgm = os.path.join(args.input, base_bgm)
instrument_bgm = os.path.join(args.input, instrument_bgm)

if base_bgm.endswith(".bin"):
    base_bgm_out = base_bgm.replace(".bin", ".wav")
    wavbintool.parse_bin(base_bgm, base_bgm_out)
    tmpfile.add_temp_file(base_bgm_out)
    base_bgm = base_bgm_out

if instrument_bgm.endswith(".bin"):
    instrument_bgm_out = instrument_bgm.replace(".bin", ".wav")
    wavbintool.parse_bin(instrument_bgm, instrument_bgm_out)
    tmpfile.add_temp_file(instrument_bgm_out)
    instrument_bgm = instrument_bgm_out

music_id = int(os.path.basename(base_bgm)[3:7])

song_info = mdb.get_song_info_from_csv("gitadora_music.csv", music_id)

if song_info is None:
    song_info = mdb.get_song_info_from_mdb("mdb_ex.xml", music_id)
コード例 #4
0
ファイル: audio.py プロジェクト: area573/gitadora-customs
def get_isolated_bgm(input, instrument):
    if os.path.isfile(input):
        filenames_bgm, ifs_path = ifs.extract(input)
        tmpfile.add_temp_folder(ifs_path)
        input = ifs_path

    else:
        filenames_bgm = glob.glob(input + "/bgm*.bin") + glob.glob(input +
                                                                   "/bgm*.wav")
        ifs_path = input

    # Find matching BGMs for each isolation type
    isolation_bgms_bin = {
        "drum": [("bgm*___k.bin", "bgm*d__k.bin"),
                 ("bgm*___k_xg.bin", "bgm*d__k_xg.bin")],
        "guitar": [("bgm*__bk.bin", "bgm*_gbk.bin"),
                   ("bgm*__bk_xg.bin", "bgm*_gbk_xg.bin")],
        "bass": [("bgm*___k.bin", "bgm*__bk.bin"),
                 ("bgm*___k_xg.bin", "bgm*__bk_xg.bin")],
    }

    isolation_bgms_wav = {
        "drum": [("bgm*___k.wav", "bgm*d__k.wav"),
                 ("bgm*___k_xg.wav", "bgm*d__k_xg.wav")],
        "guitar": [("bgm*__bk.wav", "bgm*_gbk.wav"),
                   ("bgm*__bk_xg.wav", "bgm*_gbk_xg.wav")],
        "bass": [("bgm*___k.wav", "bgm*__bk.wav"),
                 ("bgm*___k_xg.wav", "bgm*__bk_xg.wav")],
    }

    filenames_bgm_basename = [os.path.basename(x) for x in filenames_bgm]

    base_bgm = None
    instrument_bgm = None
    for isolated_bgms in [isolation_bgms_bin, isolation_bgms_wav]:
        isolated_bgm_set = isolated_bgms[instrument]

        for (base_bgm_pattern, instrument_bgm_pattern) in isolated_bgm_set:
            if not base_bgm:
                results = fnmatch.filter(filenames_bgm_basename,
                                         base_bgm_pattern)

                if len(results) > 0:
                    base_bgm = results[0]

            if not instrument_bgm:
                results = fnmatch.filter(filenames_bgm_basename,
                                         instrument_bgm_pattern)

                if len(results) > 0:
                    instrument_bgm = results[0]

            if base_bgm and instrument_bgm:
                break

        if base_bgm and instrument_bgm:
            break

    base_bgm = os.path.join(input, base_bgm)
    instrument_bgm = os.path.join(input, instrument_bgm)

    if base_bgm.endswith(".bin"):
        base_bgm_out = base_bgm.replace(".bin", ".wav")
        wavbintool.parse_bin(base_bgm, base_bgm_out)
        tmpfile.add_temp_file(base_bgm_out)
        base_bgm = base_bgm_out

    if instrument_bgm.endswith(".bin"):
        instrument_bgm_out = instrument_bgm.replace(".bin", ".wav")
        wavbintool.parse_bin(instrument_bgm, instrument_bgm_out)
        tmpfile.add_temp_file(instrument_bgm_out)
        instrument_bgm = instrument_bgm_out

    base_audio = pydub.AudioSegment.from_file(base_bgm).invert_phase()
    instrument_audio = pydub.AudioSegment.from_file(instrument_bgm)
    instrument_phased = instrument_audio.overlay(base_audio)

    return instrument_phased, base_bgm