Making correctly looping WAV by rebooter23 at 6:49 PM EST on January 23, 2018
How can I create a perfectly looping WAV with test.exe?
I don't want to manually cut out the intro and the tail and often the info about loop points that comes from test.exe doesn't translate to Audacity's time signature for some reason and then you just cant find the best cut points easily. The ends of the files test.exe outputs don't loop with the beginnings.
My goal is to create WAV files so that I can convert them to mp3 or something else and listen to higher fidelity VGM on my mobile devices. I'm using iOS and modizer is the only app that uses vgmstream but it's not getting updates and thus I can't listen to the tracks of A Link Between Worlds indefinitely.
1. You could try converting the unsupported files to a more common Nintendo format like .brstm for use with indefinite looping.
2. I'd recommend using foobar2000 for making conversions to more standard formats. The output by default is looped twice when it comes out as a WAV, MP3, whatever. Also the looping points can be found by looking at the source file's properties in foobar.
3. If you still need to worry about Audacity editing, I 100% agree that the samples format should be used over the time format, as those will yield more exact information than time ever will. The output of test.exe only displays 4 decimal places iirc, though most of the time 5 or 6 are required in order to surely obtain the correct points.
If you’re using modizer, you can use VGAudio to transcode the BFSTMs to BRSTM as it only modifies the header and doesn’t touch the raw data. I’m not sure if Modizer is gonna include the latest vgmstream release next time but I think yoyofr has plans to release a new update of the app soon so it’s possible. So far the source code is at version 2.9 alpha.
@ArcticJaguar725 The problem is that even in foobar the conversion will include the intro of songs except I cut them out manually which is very tedious. And the files seem to have a tail too since the song is being continued after the loop to fade or whatever. It would be better if test.exe could just export the set of samples in between loop points.
Wait a minute, why do you need the intro cut out? I'm not really surprised that test.exe doesn't cut out the intro because I feel like 99.9% of the time it would be preferable to keep it.
Probably he just wants seemless looping between the loop points but yeah i too prefer whole songs including intros. I thought you could play a wav with intro and still get it to loop between certain points ?
I like to listen to VGM while doing intellectually intense tasks like studying for an exam, so I use Cog or fooobar to have a song looping for as long as I feel which is no problem. But when I'm not able to use my computer it get's tedious as I convert the result of test.exe to mp3 and put them on my smartphone and let the files loop but it always throws me out of the tunnel if the song stops and unnaturally comes back to the intro again. But just creating a 2 h looping mp3 is a waste of space.
Yes, there are solutions, but as already discussed modizer is not able to play recent Switch, Wii, Wii U and 3DS music. So the only way I can achieve the looping effect is to manually cut the wav in between the looping points. It would even make it easier if there was a bash script that would cut a wav in between sample #x and #y but there's not such a thing available I'm afraid.
Wait hang on, are you just using a standard media player to loop those MP3s? In my experience, there has always been a bit of space in between the end of a song and beginning of another song with most standard media players, meaning a typical MP3 loop like that shouldn't be seamless at all; in fact, it would typically be preferable to just do a standard fadeout loop. I absolutely agree with bxaimc that you should use VGAudio to make conversions for use with modizer if that's an option. As long as that version of modizer supports formats like BRSTM, HPS, and DSP (which it really should), you'll be fine.
@bxalmc I haven't forgotten about your proposal, my answer was a direct response to the other question.
However, I tried out to convert a BCSTM from Zelda TriForce Heroes to BRSTM via your provided VGAudioCli.exe and the results aren't acceptable.
Before I continue, I want anybody else who reads this in the future to know, that the dependencies are .NET Framework 4.5, not 4.0 or others. Took me some time until I realized that "standalone" doesn't mean standalone, particularly the app doesn't return any failure.
Anyways the conversion can take place losslessly via this command:
VGAudioCli -i:0,1 <filename>.bcstm -o <filename>.brstm -f gcadpcm (-f is for the internal format used which is gcadpcm in the mentioned filed. BRSTM seems to be a container only so far as I understood)
The result is that the modizer isn't ready for brstms, as the slightest use of processing power interrupts the music e.g. getting notifications or swiping a page while reading PDFs, but moreover modizer doesn't recognize the loop points correctly. Using modizer's loop feature it breaks in the middle of the song and repeats from the beginning. You can only "force loop" in the vgmstream settings to a max of 16 loops - which would be okay if it wasn't for the constant interruptions.
So the question still stands: How do we get perfectly looping WAVs easily?
Weird, works fine for me while I surf the web, text, and chat through discord. You might want to watch the amount of running apps. Close what you don’t need often. I have an iPhone 8 Plus btw...
In an attempt to actually answer your question, my guess is that no such method to automatically cut out the intro currently exists at the moment. If you have any coding experience, you could write a program that runs the file to be converted through test.exe, obtains the looping metadata via standard output of test.exe, and then opens the dumped WAV to trim out the intro/fade based on the looping points of the host file. Obviously writing such a program takes more effort than using a preexisting option, but I doubt those preexisting options exist since I've never seen any need for this before.
So, there is the possibility to use sox if I pipe and use the variables as values. But the files of the towns in BOTW for example Rito Village don’t provide loop information. Any ideas?