[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

Here's a regular expression summary of the FORM SMUS syntax.  This could
be an IFF file or part of one.

    SMUS      ::= "FORM" #{ "SMUS" SHDR [NAME] [Copyright] [AUTH] [IRev]
                            ANNO* INS1*  TRAK*  InstrForm* }

    SHDR      ::= "SHDR" #{ SScoreHeader    }
    NAME      ::= "NAME" #{ CHAR*   } [0]
    Copyright ::= "(c) " #{ CHAR*   } [0]
    AUTH      ::= "AUTH" #{ CHAR*   } [0]
    IRev      ::= "IRev" #{ ...     }

    ANNO      ::= "ANNO" #{ CHAR*   } [0]
    INS1      ::= "INS1" #{ RefInstrument   } [0]

    TRAK      ::= "TRAK" #{ SEvent* }
    InstrForm ::= "FORM" #{ ...     }

The token "#" represents a ckSize LONG count of the following {braced}
data bytes.  Literal items are shown in "quotes", [square bracket items]
are optional, and "*" means 0 or more replications.  A sometimes-needed
pad byte is shown as "[0]".

Actually, the order of chunks in a FORM SMUS is not as strict as this
regular expression indicates.  The SHDR, NAME, Copyright, AUTH, IRev,
ANNO, and INS1 chunks may appear in any order, as long as they precede the
TRAK chunks.

The chunk "InstrForm" represents any kind of instrument data FORM embedded
in the FORM SMUS.  For example, see the document "8SVX" IFF 8-Bit Sampled
Voice. Of course, a recipient program will ignore an instrument FORM if it
doesn't recognize that FORM type.

[Back to Amiga Developer Docs]