Music Data Format & Tools

By jdgabbard

Resident (44)

jdgabbard's picture

11-06-2022, 20:30

I've never given a lot of thought to the format of music data. Obviously there are some standards out there such as VGM, MIDI, etc. However, I mostly see this, where it concerns Home Computers and Consoles, as formats used to replay the music on another host. Such as on a PC, or some type of standalone tracker on the 8bit system in question. And looking at those formats it seems obvious why this would be the case: there is a lot of bloat in MIDI for a system with limited acoustic resources and memory, and there seems to be a decent amount in VGM.

So this brings me to my question. What methods do most programmers use for compression of music data for systems with limited memory? I would assume that some type of format has evolved over the years. And I'm assuming that some type of tools exist to take, lets say, MIDI tracks that have been composed and transcribe these into something that is compressed enough for an 8bit system to manage, while leaving enough memory for game data.

As an example, I've been working on a homebrewed system for a while that is similar in capabilities to the MSX standard, though without some of the complications of SLOTs, which are not needed in the modern age of FAT32 capabilities. On this computer I included an SAA-1099, mostly due to it having six voices, and complex noise and envelope controls. Having amplitude control over the left and right channels is also nice.

While programming for this system I decided to sit down and look at what would be required, data wise, to have a format compatible with the SAA, but not bloat out the format. And what I think I have determined is that when you take into consideration instruction type, data for either tone, instruction or noise, amplitude, and envelope, you would need either 2 to 3 bytes per event. This assumes the use of lookup tables to distinguish between predefined notes, and the like. However, I hate to recreate the wheel if there is some other standard out there that would accomplish my needs. And having tools that help with the conversion of composed music, if they already exist, would take a lot of the pencil work out of compiling these into a data format the computer could read.

Though while looking for any types of standards, I've fallen a little short with my Google-Fu. Although I did find this: SAA1099Tracker. Which isn't really great about explaining the format. Not to mentioned I've only composed with MIDI in the past. And some information at https://www.chibiakumas.com/ where he describes a one byte format, but still leaves something to be desired in explanation of the format, since it is stretched over several videos without clear indication on where it picks up. No offense to this guy, he makes some fantastic videos. I just find his method of presentation difficult to follow.

Anyone have any suggestions of what to look at, or standards to read up on? To be clear, I'm not really a music guy. Though, I do understand the basics, have played mostly brass instruments in my youth.

Login or register to post comments

By thegeps

Paragon (1035)

thegeps's picture

05-07-2022, 02:15

You can download arkos tracker 2 here:

https://www.julien-nevo.com/arkostracker/

After installation there is a folder where file format is explained (it is for msx psg but you asked a file format example, so it should fit your needs)

By jepmsx

Master (156)

jepmsx's picture

05-07-2022, 07:31

There is also the MBM (Moonblaster) format file and it is explained in https://www.msx.org/wiki/Moonblaster_file_format

Moonblaster was a tracker used a lot in the 90s. It quickly adapted to Moonsound making it very successful.
It can be downloaded in https://www.msx.org/downloads/music/trackers/moonblaster-14 and the manual is found in http://mus.msx.click/index.php?title=TRACKERS_MOONBLASTER_EN...

I think that the previous links are not for the Moonsound version, only MSX-Audio / MSX-Music