Forgot to include a more concrete example at the end of my previous brain dump:
[MAGIC_NUMBERx1 = 0x0a]
[TITLExN]
[HEADER x20]
[STEREO_TRACKS_FLAG_TAG = 90 01 01]
[ADDITIONAL_INFO_TAG = 98 01 02]
[UNDECIPHERED_BYTES = a2 01 02 00 00 8a 06]
[ORIGINATOR_FIRMWAREx20 = "4.14.108-aeros-4.0.2"]
[PARTS_LIST_TAG = 90 06 06]
[PART_TAG = 9a 06 XX]
[TRACK_TAG = 9a 06 XX]
[UNDECIPHERED_BYTES x4] [OPTIONAL_MEASURE_COUNT x1]
[CHANNEL_A_UNDECIPHERED_BYTES x8] [CHANNEL_A_FILENAME xN]
[CHANNEL_B_UNDECIPHERED_BYTES x8] [CHANNEL_B_FILENAME xN]
[PART_TAG = 9a 06 XX]
[TRACK_TAG = 9a 06 XX]
[UNDECIPHERED_BYTES x4] [OPTIONAL_MEASURE_COUNT x1]
[CHANNEL_A_UNDECIPHERED_BYTES x8] [CHANNEL_A_FILENAME xN]
[CHANNEL_B_UNDECIPHERED_BYTES x8] [CHANNEL_B_FILENAME xN]
And to tease you, here’s the output of my (python) tool parsing one of my test files:
[INFO ] --- Analyze meta song_2/.meta
[DEBUG] Running with song_2/.meta at song_2
[INFO ] Parts list object found
[INFO ] - Part object found, 0x60
[INFO ] - Track object found, 0x2d
[DEBUG] - Track object has measure count, 2
[INFO ] - Track object found, 0x2d
[DEBUG] - Track object has measure count, 2
[INFO ] - Part object found, 0x60
[INFO ] - Track object found, 0x2d
[DEBUG] - Track object has measure count, 2
[INFO ] - Track object found, 0x2d
[DEBUG] - Track object has measure count, 2
[INFO ] Meta file parsed structure:
{'fileHeaderByte': 10,
'title': 'song_2',
'metaRaw': b'\x15\x00\x00\xc8B\x1a\x04\x08\x04\x10\x04X\x18h\x01p\x01\x80\x01j',
'stereo': True,
'beatsPerMinute': 100.0,
'fileListIndex': 106,
'timeSignatureNumerator': 4,
'timeSignatureDenominator': 4,
'partsObject': {'header': b'\x90\x06\x06',
'filepos': 62,
'parts': [{'header': b'\x9a\x06`',
'filepos': 65,
'tracks': [{'header': b'\x9a\x06-',
'filepos': 68,
'metaRaw': b'\x08q\x18\xc0',
'measureCount': 2,
'expectedChannels': 2,
'channels': [{'filepos': 76,
'metaRaw': b'R\x12\x08\xc8\xf8\x0c\x12',
'filename': 'song_2/CHASP1T1.wav'},
{'filepos': 96,
'metaRaw': b'Z\x12\x08\xc8\xf8\x0c\x12',
'filename': 'song_2/CHBSP1T1.wav'}]},
{'header': b'\x9a\x06-',
'filepos': 116,
'metaRaw': b'\x08q\x18\xc0',
'measureCount': 2,
'expectedChannels': 2,
'channels': [{'filepos': 124,
'metaRaw': b'R\x12\x08\xc8\xf8\x0c\x12',
'filename': 'song_2/CHASP1T2.wav'},
{'filepos': 144,
'metaRaw': b'Z\x12\x08\xc8\xf8\x0c\x12',
'filename': 'song_2/CHBSP1T2.wav'}]}]},
{'header': b'\x9a\x06`',
'filepos': 164,
'tracks': [{'header': b'\x9a\x06-',
'filepos': 167,
'metaRaw': b'\x08q\x18\xc0',
'measureCount': 2,
'expectedChannels': 2,
'channels': [{'filepos': 175,
'metaRaw': b'R\x12\x08\xc8\xf8\x0c\x12',
'filename': 'song_2/CHASP2T1.wav'},
{'filepos': 195,
'metaRaw': b'Z\x12\x08\xc8\xf8\x0c\x12',
'filename': 'song_2/CHBSP2T1.wav'}]},
{'header': b'\x9a\x06-',
'filepos': 215,
'metaRaw': b'\x08q\x18\xc0',
'measureCount': 2,
'expectedChannels': 2,
'channels': [{'filepos': 223,
'metaRaw': b'R\x12\x08\x9b\xf8\x0c\x12',
'filename': 'song_2/CHASP2T2.wav'},
{'filepos': 243,
'metaRaw': b'Z\x12\x08\x9b\xf8\x0c\x12',
'filename': 'song_2/CHBSP2T2.wav'}]}]}]},
'unknownSection1': {'header': b'\x90\x01\x01', 'filepos': 28, 'metaRaw': None},
'originator': {'header': b'\x98\x01\x02',
'filepos': 31,
'metaRaw': b'\xa2\x01\x02\x00\x00\x8a\x06',
'originatorFirmware': '4.14.108-aeros-4.0.2'}}
I’ve only checked it with quantised 2x2 files so far; but I don’t expect 6x6 or freeform to be wildly different.