Synthetic-music Mobile Application Format (SMAF), is a music data format specified by Yamaha for portable electronic devices, such as cell phones and PDAs. The file extension for SMAF is .MMF and is common as ringtones for mobile phones with one of five sound chips.
Any SMAF container must have a signature (tag) MMMD (hex: 4D 4D 4D 44) at the beginning of the filefollowed by 4-byte data size in (big-endian order, high byte first).
MMF files are organized into data segments (chunks). Each segment is prefixed with an 8 byte header: 4 byte signature (CNTI, OPDA, MSTR, MTR or ATR) and 4 byte data size (big-endian order, high byte first).
Chunk size is data size plus 8 bytes. Summarizing size for all found chunks, we calculate total file size. If MMF file has not been damaged, summarized file size should be equal to file size calclulated from a primary header.
Let's examine the sample
When inspecting sample.mmf file's data using any Hex Viewer, like Active@ Disk Editor, which is included in Active@ File Recovery package, we can see it starts with a signature MMMD (hex: 4D, 4D, 4D, 44). At offset 4 there is a data size: 6,119 (hex: 00, 00, 17, E7) in big-endian order (high byte first). Adding header length to the data size, we calculate a total MMF file size: 6,119 + 8 = 6,127 bytes. The first data chunk starts with CNTI signature and has a length of 40 bytes (hex: 00 00 00 28). The following data chunk starts with MTR signature and has a length of 1,553 bytes (hex: 00 00 06 11).
struct SMAF_Header { uint32 SignatureMMMD; // Signature: "MMMD" uint32 SizeSMAF; // 4 byte data size, big-endian order };
This example just determins wav start signature and calculates file size based on the size specified in SMAF header. Syntax of the signature definition language you can read here.
[MMF_HEADER] DESCRIPTION=MMF Audio File EXTENSION=mmf BEGIN=MMF_BEGIN SCRIPT=MMF_SCRIPT [MMF_BEGIN] MMMD=0|0 [MMF_SCRIPT] size = read(dword, 4) size = sum(size, 8)
This document is available in PDF format,
which requires Adobe® Acrobat® Reader
(Free download):