How to replace music – Ys: The Oath in Felghana

admin

A simple guide/reference to where the music files are and what the corresponding titles are. You don’t need to struggle over what the song name is because I did it for you.

Music files location and file naming

You’ll find the music to replace here

path/to/steam-install/steamapps/common/Ys The Oath in Felghana/release/music

There’s three types of naming conventions

StyleVersion
y3bg##p.oggPC-88 music
y3bg##x.oggX68k music
Y3BG##.oggOath in Felghana music

File format has to be ogg (didn’t test if others will work), and you can choose to replace any one of the three styles. I replaced X68k with the Wanderers from Ys versions by Yonemitsu Ryo because they’re freaking amazing.

Corresponding song titles

And here’s the corresponding song titles (using the Felghana naming convention and a text file found in the same folder).

The notes column is just to identify if that song exists in the Wanderers from Ys PCE ost collection I had. When that song didn’t have a Wanderers PCE version, I used ones from Perfect Collection Ys III (Pc3 in the table), because those were also by Yonemitsu Ryo and I just love his stuff. Bonus points because there are some good vocal tracks as well.

IdFileTitleNotes
1Y3BG01Dancing On The RoadPc3
2Y3BG02A Premonition Styx
3Y3BG03Trading Village Of RedmontPc3
4Y3BG04Quiet MomentsPc3
5Y3BG05Welcome!!Pc3
6Y3BG06Prelude To The Adventure
7Y3BG07The Boy’s Got Wings
8Y3BG08Be Careful(the X68k is damn good too but the solo on pce shreds)
9Y3BG09Dark Beasts As Black As The NightThe reason I started playing Ys games
10Y3BG10Illburns Ruins
11Y3BG11A Searing StrugglePc3 is really good too
12Y3BG12Snare Of Darknessthe one song I hate, Pc3 Disc 2 to the rescue
13Y3BG13Shock Of The Death God
14Y3BG14Quickening Dream
15Y3BG15Steeling The Will To Fight
16Y3BG16Tearful Twilight (diff To Order)Pc3, Disc 2
17Y3BG17Valestine CastleThe bridge in the middle aaaah
18Y3BG18Prayer For LovePc3
19Y3BG19Radiant KeyPc3
20Y3BG20Sealed Time
21Y3BG21Beat Of DestructionThe second reason I started playing Ys games
22Y3BG22aTower Of DestinyBoth are good, but pce because flute
Y3BG22bUnused?
23Y3BG23Behold!!Disc 2 has a great jazz section
24Y3BG24The Strongest Foe(but with a roar at the start in the Felghana version)
25Y3BG25Departure At Sunrise (diff)Thousand Year Love, vocal version cus why not. All versions are great
26Y3BG26Wanderers From YsUnfortunately pce rip has voice lines
27Y3BG27Dear My BrotherPc3
28Y3BG28Lovely ElenaPc3, vocal version
29Y3BG29Introduction!!Pc3
30Y3BG30The Theme Of ChesterPc3
31Y3BG31Chop!!Another irritating song, Pc3 Disc 2 to the rescue with a great rendition
32Y3BG32Believe In My HeartPc3, vocal version. Tough as non vocal is great as well
33Y3BG33The Oath In Felghana – A Premonition =styx=Pc88 just seems to be a loop of 2. Pc3, Disc 2
34Y3BG34Farewell My Dear Brother but at the end probably with lots of SFXX68k version. Unsure where this plays since it’s been a while since a playthrough
35Y3BG35Intro sound with A Premonition. only around 10 secondsFelghana version
36Y3BG36Not in the folder?

That table is essentially all you need to switch out the music as you want. Just manually rename files. Or you can also use a small and simple script from the next section which I wrote for myself. Nothing fancy.

A python script to handle the renaming/converting for you

Can I post code in a guide? shrugs

Dependencies: pydub – [github.com]  (for audio conversion), tqdm – [github.com]  (for pretty progress)

# convert and rename ys 3 music files to <format>.ogg

import os
import tqdm
import glob
import shutil
import argparse

from pydub import AudioSegment

NAME_STYLE = "X68000" # PC-88, X68000, Fel
MUSIC_DIR = "../music-to-rename"
OUTPUT_DIR = "converted-files"

rename_dict = {
 "PC-88": ["y3bg", "p"], # prefix, number, suffix
 "X68000": ["y3bg", "x"],
 "Fel": ["Y3BG", ""]
}

def main(
 name_style: str,
 music_dir: str,
 output_dir: str
):
 files = sorted(glob.glob(music_dir + "/*"))
 a*sert len(files), "No files in the directory to convert"
 a*sert len(files) == 35, "You should have 35 music files to convert. otherwise keep ogg dummies, they're skipped"

 
 os.makedirs(output_dir, exist_ok=True)

 for file_num, file_path in tqdm.tqdm(enumerate(files), desc="Songs converted", total=len(files)):
 file_loc, file = os.path.split(file_path)
 _, file_ext = os.path.splitext(file)

 renamed_file = rename_dict[name_style][0] + f"{file_num + 1:02}" + f"{'a' if file_num == 21 else ''}" + rename_dict[name_style][1] + ".ogg"

 if file_ext == ".ogg":
 # no conversion necessary
 shutil.copy2(
 file_path, 
 os.path.join(output_dir, renamed_file)
 )
 else:
 sound = AudioSegment.from_file(file_path)
 sound.export(
 os.path.join(output_dir, renamed_file),
 format="ogg"
 )

if __name__ == "__main__":
 parser = argparse.ArgumentParser(formatter_cla*s=argparse.ArgumentDefaultsHelpFormatter)
 parser.add_argument("--name-style", "-s", type=str, default=NAME_STYLE, help="Naming style of converted files.", choices=rename_dict.keys())
 parser.add_argument("--music-dir", "-i", type=str, default=MUSIC_DIR, help="Directory with exactly 35 music files in ascending order, no trailing slash")
 parser.add_argument("--output-dir", "-o", type=str, default=OUTPUT_DIR, help="The output directory")

 args = parser.parse_args()

 main(
 args.name_style,
 args.music_dir,
 args.output_dir
 )

Usage:

  • Put exactly 35 files in a folder, their format doesn’t matter as long as it’s music and can be handled by ffmpeg.
  • Their order should be the same as that from the table earlier (just use your file explorer and sort name ascending to verify).
  • Set this folder as MUSIC_DIR in the code.
  • Run.

You should be able to figure the rest out, its nothing complicated. Though I’ll add details here if someone asks for more in the comments. If anyone even uses this.

Thanks for reading and have fun~

Written by corven

I hope you enjoy the How to replace music – Ys: The Oath in Felghana guide. This is all for now! If you have something to add to this guide or forget to add some information, please let us know via comment! We check each comment manually!

Share This Article