Looping XA files (SotN) with vgmstrean? by RetroFanatic at 11:19 PM EDT on April 8, 2017
It's not capable of that? Was going to rip some tracks from Symphony of the Night and I'd rather not have to use the copy-pasta method with Audacity.

Hmm. Tried opening some Megaman X5 songs in winamp. They can be looped.

Must mean that the SotN archive I downloaded from here does not have loop-points added to the songs?

Edit: Oops, I was wrong. The Megaman X5 songs must have been looped several times by default before the XA files for that archive was crated.

edited 11:27 PM EDT April 8, 2017
SotN XA by Sephirothkefka at 2:17 AM EDT on April 9, 2017
From my analysis it seems that most songs loop via 2 tracks, an intro track and a continuous track although some songs (like Festival of Servants) seems to have set loop points in the game itself. Still better than the weirdness that's Chronicles (damn you VB2 files).
by MusashiAA at 1:42 PM EDT on April 9, 2017
Would it be possible to allow optional XA looping in the same fashion as other streamed files, even despite XA files not natively looping?
by Sephirothkefka at 2:35 AM EDT on April 10, 2017
Probably not. XA IS RIFF based so maybe look to ATRAC3/9 for that.
by hcs at 4:50 AM EDT on April 10, 2017
I'm pretty sure XA is not RIFF based, though it may be found with a RIFF header I dont't think there's a codec ID assigned to it, and I don't think it looks that way on the disk, though some extractors might add a RIFF header.

I assume XA doesn't have a channel for loop flags like Sony ADPCM (VAG, etc) does. But I imagine XA could be added to GENH, which I guess is what Sephirothkefka was getting at, as GENH supports ATRAC3 and 3+ now.
by Sephirothkefka at 9:17 PM EDT on April 10, 2017
I completely forgot extractors added RIFF headers so that's entirely my fault. But yeah, maybe there are loop points in the file and the extractors are ignoring it? I could definitely see Sony/Philips making it possible, especially both the CD-i and Playstation are arguably demos of technologies they've developed and both use some form of XA.
by kode54 at 12:45 AM EDT on April 11, 2017
It wasn't just extractors that added a header. There were certain operating systems that added RIFF headers to file entries referencing mode2/2352 data, and did the raw reading necessary to present the full XA data to the software without requiring raw drive access. I eventually had to add raw reading to foo_adpcm because many games did not work with this, and instead presented totally unreadable files.

Many of the tracks in Symphony of the Night also happen to work with a cheapass loop scanner I wrote, it merely looks for a block earlier in the file that has a final few frames near matching to the last frame in the file.

edited 12:47 AM EDT April 11, 2017
by bnnm at 10:05 AM EDT on April 13, 2017
As a test I did a quick hack so any format can use external .pos to loop.

For codecs not prepared loop, like XA, you need to be careful your loop samples use values it likes (block aligned).

The cost is an fopen after the file is recognized. No big deal I think, as plenty of formats do this, but I'm not sure how foobar will like it with long playlists and stuff.

Should I add this, opinions?
by AnonRunzes at 11:23 AM EDT on April 13, 2017
I`m actually fine with the idea of supporting looping of non-loopable formats.

edited 11:29 AM EDT April 13, 2017
Thoughts by Sephirothkefka at 5:24 AM EDT on April 14, 2017
I think it should be possible for the games that need it. But for games that don't (Megaman X games for example), they, well, don't need it. I would be nice (like for X4 which only plays the song twice (except for the Boss themes, demos, and character and map selection screens)) but not totally necessary.

Go to Page 0

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]


HCS Forum Index
Halley's Comet Software
forum source
Generated in 0.0028s;