3DS Themer Log - Day XX

Aside from getting a number of the harder themes out of the way, I realized that there was a rather major issue with the way to create looping bgm files the, more or less, fancy way which involves setting an actual time/sample to start the loop. This pretty much means you can have an introductory phrase before entering the loop.

To give a quick synopsis of the themes that are "complete", aside from finalizing the Haruhi and Kyon themes, I also made the Asakura Ryoko, Koizumi Itsuki, and Asahina Mikuru themes. Just over halfway through the entire series of characters that I'm planning on making themes for, leaving just Nagato Yuki, Tsuruya-san, and the possible imouto theme if I have enough resources.

I'm quite satisfied with how most of the themes look and sound (they aren't color theory perfect or anything, but I do take some references from it and try to keep things fairly visible). The only real issue is the looping problem. While casually listening to the music it isn't quite as apparent, but knowing where the break is and paying attention to that break, it isn't looping like it is in audacity for some peculiar reason. I've tried to hunt down what could possibly be causing such a weird issue, but I have yet to figure out how to fix it. It also doesn't affect songs that are looped in their entirety, just ones that have an intro phase.

The main reason for this particular blog post is more of a reference that I can look back at to see what I've tested to try to alleviate the issue.

- Added a silent lead-in to the actual loop, which failed spectacularly as I would have expected. It just made an audible pause in the initial pass.
- Added a silent lead-out at the end of the loop
- Realigned the loop to the sample split auto-generated in BRSTM/BCSTM Conversion Tool closest to my actual split...which didn't do shit.
- Realigned the loop to start and end in multiples of 14336 samples as suggested here, which felt like it had the greatest effect of relieving the issue, but it might as well be a placebo effect.

---

Finally I decided I should test out Yata+'s conversion to BRSTM since it uses BrstmConv which should be the defacto standard sort of app for this stuff. Surprisingly, or maybe unsurprisingly depending on how you look at it, BrstmConv actually worked completely. No more weird ass audio hiccup at the end, just a smooth loop as intended.

I suppose the worst thing to come out of this is that now instead of just using audacity and BRSTM/BCSTM Conversion Tool, I have to use BrstmConv as well. It's really kind of shitty that I have to use so many programs just to deal with this kind of stuff.

The current list of programs used:
- Audacity for audio editing
- Gimp for image editing
- Usagi 3ds Theme Tool for theme previewing
- Foobar2000 for initial audio previewing/finding
- Yata+/BrstmConv for converting to .bcstm
- Howling Theme Tool for packing my themes into a .cia
- FalconPuncher for sending .cia via wifi
- FBI for installing via wifi
- BigBlueMenu for uninstalling CTR-M-HMME-00 entry (because apparently FBI fails at it)

Honestly it would be pretty neat to see a feature in Usagi to pack and send themes for testing. Maybe one day Brstm/Bcstm conversion too. Then all I would need to really find would be a better CIA installer that didn't have such weird shortcomings.

---

On a separate note, I thought I would dump some extra thoughts on how to optimize the quality of the bgm audio without going past the limit.

The standard ballpark formula for a wav file is:
size = sample rate * number of channels * (bits per sample /8) * time in seconds

The size ratio for wav -> bcstm is about 0.287 meaning the target filesize we are looking for is about 11.5 MBs maximum wav file size ( (1 / 0.287) * 3.3MB ).

So if we were to rearrange this to solve for the sample rate instead (which would be the easiest and probably best thing to change):
sample rate (kHz) = (size (MBs) * 1024) / (# of channels * (bits per sample / 8) * time in seconds)

And simplify the sorts of numbers that you normally should have (2 channels, 16 bits per sample, 11.5MBs file size):
sample rate = ( 2945.714688601645 / time ) * 1000

With this, you can get a rough estimate of the "best" sample rate you could get with your loop. Rounding up to the nearest 50th or 100th is probably pretty safe to do as well. Ex: 28,594Hz to 28,600Hz .... or 22034Hz to 22050Hz.

Comments

There are no comments to display.

Blog entry information

Author
jurassicplayer
Views
160
Last update

More entries in Personal Blogs

More entries from jurassicplayer

General chit-chat
Help Users
  • No one is chatting at the moment.
    bassviolet @ bassviolet: uwu