in_cube 0.18 beta 1 supports two ASTs I have from Double Dash, with looping. It turned out to be a headered block format like HPS (though with 16-bit PCM, and it doesn't loop itself like HPS so I had to do some inefficient reading for an accurate loop). Let me know how it works on other ASTs.
On the AIX front, I updated aix2adx to work on additional sections past an AIXE marker. Unfortunately there still wasn't any looping information, but since I promised looping I wrote another utility to do it.
The way the BGM01.AIX is structured is three streams, each in two sections (or "goround"s, as aix2adx calls them). The first section is what is played before the loop, the second section should be looped over its entire length. I wrote a program called adxloop which will rewrite the header for a nonlooping ADX to make it loop. It can also take another input ADX, which is the part that plays before the loop begins, which works well for these AIXs.
Here's how to use these tools (from the command line):
aix2adx BGM01.aix
adxloop BGM0100000.adx BGM0101000.adx BGM0100loop.adx
adxloop BGM0100001.adx BGM0101001.adx BGM0101loop.adx
adxloop BGM0100002.adx BGM0101002.adx BGM0102loop.adx
BGM01.aix is the original AIX. From it aix2adx will extract:
BGM0100000.adx, BGM0100001.adx, and BGM0100002.adx
which are the first sections of the three channels, and:
BGM0101000.adx, BGM0101001.adx, and BGM0101002.adx
which are the second sections of the three channels. adxloop takes the two sections of each channel, concatenates them, and loops for the length of the second section, creating a new file called BGM0100loop.adx (et al).
Let me know how this works (and sorry about the hard to read file names). I tested the generated files in in_cube, kode's foobar ADPCM player, and CinePak and it seems to work properly. aix2adx 0.1 and adxloop are both on the in_cube page.