Mo3 file format specs petition

Started by discontinued,

Laurent

Hi Ian,

I see some space in mo3 structure for which I don't understand the usage. Are they used by BASS to replay the module ? Like the space (16+16+64)*4 bytes just before the song sequence (list of replayed patterns)...

Laurent

Ian @ un4seen

It's the IT MIDI macro stuff. First come the SF0-SFF settings, which are 1 byte each, and equate to "F0F0<value-1>z" in IT. Then come the Z80-ZFF settings, which are 2 bytes each, and equate to "F0F0<value1-1><value2>".

Before that, are the default channel volume and pan tables, which are 64 bytes each (64 channels).

Laurent

Thank you

Could you describe the instruments structure and especialy the 3*104 bytes (section 2.3.3 is poor) ? it is mostly vol and panning values right ? Could you give me some details ?

Laurent

Ian @ un4seen

They're the volume/pan/pitch envelopes, with basically the same structure as IT envelopes, except that the node points are 16-bit pos/val pairs.

Laurent

Hi there,

The source code of unmo3 is released at http://lclevy.free.fr/mo3.

"The piece of code has been written as a compagnion (validation code) of the document "the unofficial MO3 specification".

It is targeted to developpers or technical people, not for end users. It can be used by IT/XM/S3M modules specialists (tracker editor developper or modules players) to write a MO3 import loader, or more generally to handle MO3 modules in any way.

The MO3 format has been created by Ian Luck (http://www.un4seen.com). If you are looking for a good encoder and decoder (but without the source code) and a good module player, Ian's web site is the right place to go.

The features of unmo3 (opensource version) are:

    * uncompress the MO3 header and samples with lossless compressions.
    * able to save to a file uncompressed header and samples
    * able to extract mp3 and ogg compressed samples
    * can display a channel of a given pattern into 2 forms
          o as encoded inside MO3 file
          o as it usually appears in a tracker editor (for .mod only)

"

Laurent

Pailes^MilkyTracker

Hi Ian, Hi Laurent,

thanks for all the hard work to get these things done.
I will start working to support MO3 in MilkyTracker soon I promise.
Unfortunately my todo list grew quite a bit in the last months so I'm quite busy.

Regards,
pailes

Laurent


Hi,

Ian, could you help me to complete or adjust the document for the missing parts ?

Laurent

Ian @ un4seen

There seems to be a little problem with the main header (2.3.1), from the "0x0013" point. 0x13 = global volume, 0x14 = pan separation, 0x15 = internal volume thing that you can probably ignore, 0x16... = default volume table/etc...

Laurent

Hi Ian,

Ok, this is fixed.

What does mean other bits in "flags" ? xxx24xxx for xm for example ?
the usage of linear or amiga frequencies table ?

Any comment or addition about the effects encoding ?
And the sample info are incomplete, could you help me fixing this part ?

Laurent

Ian @ un4seen

Quote from: LaurentWhat does mean other bits in "flags" ? xxx24xxx for xm for example ?
the usage of linear or amiga frequencies table ?

1 = linear freqs
0x20000 is always set

As far as I can see, 0x4000 is currently unused.

Quote from: LaurentAnd the sample info are incomplete, could you help me fixing this part ?

"finetune" is 4 bytes and doubles as "C4/5 speed" for S3M and IT (with Amiga slides).
0x0006 = panning
0x0016-19 = vibrato type/sweep/depth/rate
0x001A = global volume
0x001B = sustain loop start
0x001F = sustain loop end
0x0027 = encoder delay

Laurent

Quote from: Ian @ un4seen"finetune" is 4 bytes and doubles as "C4/5 speed" for S3M and IT (with Amiga slides).
you mean the value is doubled, but only for S3m and IT modules ?

Quote from: Ian @ un4seen0x0016-19 = vibrato type
could you tell me how the type is encoded ? 0=sine ? and for ramp up/down, square and random ?

Laurent

Laurent


And the 24 bytes at 0x322 at end of instruments structure ?

Laurent

Ian @ un4seen

Quote from: Laurent
Quote from: Ian @ un4seen"finetune" is 4 bytes and doubles as "C4/5 speed" for S3M and IT (with Amiga slides).
you mean the value is doubled, but only for S3m and IT modules ?

No, I mean it's sometimes "finetune", and other times it's "C4/5 speed" (they aren't both needed). Basically, it's "C4/5 speed" when either the S3M or IT bit is set, unless the linear bit is also set.

Quote from: Laurent
Quote from: Ian @ un4seen0x0016-19 = vibrato type
could you tell me how the type is encoded ? 0=sine ? and for ramp up/down, square and random ?

0=Sine, 1=Ramp down, 2=Square, 3=Random.
                                               
Quote from: LaurentAnd the 24 bytes at 0x322 at end of instruments structure ?

0x322-5 = vibrato stuff again
0x328-B = midi channel/bank/patch/bend
0x32C = global volume
0x32D = panning
0x32F = NNA
0x330 = PPS
0x331 = PPC
0x332 = DCT
0x333 = DCA
0x334 = RV
0x336 = RP
0x338 = IFC
0x339 = IFQ

See the IT specs for details of the acronyms above.

Laurent

OK,
and the first 4 bytes after instrument name ?

Laurent

Laurent

I don't where is "NoS"...
IFC and IFQ are not explained in the IT format doc I have...

Laurent

Ian @ un4seen

Quote from: Laurentand the first 4 bytes after instrument name ?

Flags... 1 = play on MIDI, 2 = mute. These are hardly ever used.

Quote from: LaurentI don't where is "NoS"...

Count them in the "sample map".

Quote from: LaurentIFC and IFQ are not explained in the IT format doc I have...

"IFC" = initial filter cutoff, "IFR" = initial filter resonance.

Laurent

Thank you

And about the effect tables ?
Are they correct ?
Should I regroup them in a single (factorized) one ? or each effect behavior is format (IT, S3M, XM...)
depend ?

had you take a lot at the code source ?

Laurent

Laurent

Quote from: Laurenthad you take a lot at the code source ?
ooops, you should have read
had you taken a look at the code source ?

Ian @ un4seen

Quote from: LaurentAnd about the effect tables ?
Are they correct ?
Should I regroup them in a single (factorized) one ? or each effect behavior is format (IT, S3M, XM...)
depend ?

I guess you could put them in MOD/MTM/XM and S3M/IT groups.

Quote from: Laurenthad you taken a look at the code source ?

No, not yet. If it's working, I guess it's ok :)

Laurent


OK.
The document is almost finished for me, I'm not planning to explain 100% how to replay XM, IT, S3M and MOD,
tracker editors know it better than me. And with the source code, they can analyse the MO3 files.

Ian, if you're thinking this is a good start for your spec, feel free to use the "unofficial" one as a beginning.

My goal is reached : enough details is now available to public about the MO3 format.

Thank you for answering my questions.

Laurent

raina

Just out of curiosity, this:
Quote from: Ian @ un4seen0=Sine, 1=Ramp down, 2=Square, 3=Random.             
is purely IT, right? Since there's no random in Ft2 but Saw or whatchamacallit, Ramp up(?).

Ian @ un4seen

Yep, the XM vibrato stuff is instrument-specific, so it's in the instrument info rather than the sample info.

Ian @ un4seen

Quote from: LaurentMy goal is reached : enough details is now available to public about the MO3 format.

I see the XMPlay wiki entry has been updated...

QuoteMO3 support - MO3 is only playable using XMPlay or players which rely on the UNMO3 tool, both closed-source freeware written by Ian Luck.

Was that you? :)

Besides being factually incorrect (plenty of software plays MO3 using BASS), I don't really see how it's relevant.

Zarggg

Quote from: Ian @ un4seen
QuoteMO3 support - MO3 is only playable using XMPlay or players which rely on the UNMO3 tool, both closed-source freeware written by Ian Luck.

Was that you? :)

Besides being factually incorrect (plenty of software plays MO3 using BASS), I don't really see how it's relevant.

I modified that statement to just read "MO3 support".

Laurent

Quote from: Ian @ un4seenI see the XMPlay wiki entry has been updated...

QuoteMO3 support - MO3 is only playable using XMPlay or players which rely on the UNMO3 tool, both closed-source freeware written by Ian Luck.

Was that you? :)

Besides being factually incorrect (plenty of software plays MO3 using BASS), I don't really see how it's relevant.

I haven't written this sentence.

But I agree MO3 support replaying is today only supported by closed source software (unmo3 or bass).

I have written the link to MO3 page, that's all.

Laurent