A sound file can have both wave banks and sequence at the same time. However, to share wave banks with multiple songs, the game seems to have a file for banks and files for sequences separately.
|0x00||60||Sound format header|
|0x3c||variable||VB and regions|
Sound Format Header
A sound file has a 60 bytes header at the beginning.
|0x00||4||SEQ size (could be 0)|
|0x04||2||SEQ id (msq_id)|
|0x06||1||Wave bank count (usually 4)|
|0x07||1||Unknown (usually 0 for BGM?)|
|0x0c||4||Wave bank #1 - size of VB (if 0, use preloaded bank)|
|0x10||4||Wave bank #1 - size of regions|
|0x14||2||Wave bank #1 - id/index?|
|0x16||2||Wave bank #1 - ?|
|0x18||12||Wave bank #2 - same as above|
|0x24||12||Wave bank #3 - same as above|
|0x30||12||Wave bank #4 - same as above|
SEQq is a sequence format for those games. It looks very similar to Generic SEQ, however, it is slightly different.
I've made a simple converter for SEQq, seqq2mid. Check it out if you want.
You can rip sequences by using bin2seq.
|ID||4 bytes||Signature: "qQES"|
|SEQ number?||2 bytes||For instance, 0x1001|
|Resolution of quarter note||2 bytes||TPQN|
|Tempo||3 bytes||Tempo (length of quarter note in microseconds)|
|Rhythm (Numerator)||1 byte||Numerator of time signature (n)|
|Rhythm (Denominator)||1 byte||Denominator of time signature (2n)|
|Number of channels||1 byte||Number of channels used in the sequence|
It has more control changes than SEQ.
- 2, 11
Unlike SEQ, SEQq has data length.
SEQ ends with a meta event, "delta-time FF 2F". On the other hand, SEQq ends with "FF 2F 00", without delta-time!