Reply to topic  [ 1 post ] 
TuComposer Instrument (TCI) file format specifications 
Author Message
Administrator

Joined: 31. May 2005 05:23
Posts: 70
Location: Liège
Post TuComposer Instrument (TCI) file format specifications
Code:
FORMxxxxTCI1
*?FILE = Filename of instrument/sample (e.g. Piano2.INS). If this is before
         the IHDR chunk it will be assigned to the instrument itself, else it
         will be assigned to the next sample (e.g. Piano2.INS). In future
         versions it may also affect envelope data. SO DON'T DO NASTY THINGS
         TO PUT ENVL CHUNKS AFTER A FILE CHUNK BUT BEFORE A IHDR/SMPL CHUNK !
*?NAME = Name of instrument/sample (e.g. Piano 2). If this one is before the
         IHDR chunk it will be assigned to the instrument itself, else it
         will be assigned to the next sample (e.g. Piano2.INS). In future
         versions it may also affect envelope data. SO DON'T DO THINGS LIKE
         TO PUT ENVL CHUNKS AFTER A NAME CHUNK BUT BEFORE A IHDR/SMPL CHUNK !
  IHDR = Instrument header, contains important data.
         Offset    Size    Meanings
          + 0      UBYTE   Version number of instrument (currently 01)
          + 1      UBYTE   Revision number of instrument (currently 00)
          + 2      UWORD   Volume envelope number (0 if none)
          + 4      UWORD   Panning envelope number (0 if none)
          + 6      UWORD   Slide envelope number (0 if none)
          + 8      UWORD   Vibrato envelope number (0 if none)
          +10      UWORD   Tremolo envelope number (0 if none)
          +12      UWORD   Pannolo envelope number (0 if none)
          +14      UWORD   Channolo envelope number
          +16      UWORD   Spenolo envelope number (0 if none)
          +18      UWORD   Arpeggio definition number
          +20      UWORD   Keyboard definition number (0=std)
          +22      UBYTE   Number of samples in instrument
          +23      UBYTE   Global volume for all samples in instrument
          +24      UBYTE   New note action
                           Val # | Meanings
                               0 | NNA cut
                               1 | NNA continue
                               2 | NNA off
                               3 | NNA fade
          +25      UBYTE   Note swing (random note modifier)
          +26      UWORD   Volume swing (random volume modifier)
          +28      UWORD   Panning swing (random panning modifier)
          +30      ULONG   Pitch swing (random pitch modifier)
          +34      WORD    Pitch panning separation
          +36      UBYTE   Default panning (will override sample panning)
          +37      UBYTE   Default sub panning (will override sample sub pan)
          +38      UBYTE   Duplicate note check type
                           Bit # | Meanings if set
                               0 | Check for duplicate instrument notes (OR)
                               1 | Check for duplicate sample notes (OR)
                               2 | Check for duplicate instruments (OR)
                               3 | Check for duplicate samples (OR)
                               4 | Check for duplicate instrument notes (AND)
                               5 | Check for duplicate sample notes (AND)
                               6 | Check for duplicate instruments (AND)
                               7 | Check for duplicate samples (AND)
          +39      UBYTE   Duplicate note check action
                           Val # | Meanings
                               0 | Duplicate note cut
                               1 | Duplicate note off
                               2 | Duplicate note fade out
                               3 | Duplicate note continue (only useful when
                                   using synth DNA handling code)
          +40      UBYTE   Compatibility flags
                           Bit # | Meanings if set
                               0 | Instrument wave is locked, i.e., waveform
                                   can't be changed without a new note, but
                                   volume/panning/etc. is taken from the new
                                   instrument (like MOD does), if bit is clear
                                   it handles like IT/S3M
                               1 | Instrument panning affects channel panning
                                   (like IT does)
                               2 | If no sample number is given in the
                                   keyboard table, the previous one is used
          +41      UBYTE   Special flags
                           Bit # | Meanings if set
                               0 | Not note transposeable in order list
                               1 | Use semitone & finetune for slide envelope
                                   If bit is clear, slides will be fine porta-
                                   mento values)
                               2 | Use linear frequence table for slide
                                   envelope if portamento values are used
                               4 | Use instrument default panning
                               5 | Default instrument surround
                               6 | Not instrument transposeable
          +42      UWORD   Envelope usage flags
                           Bit # | Meanings if set
                               0 | Not use (reload) volume envelope
                               1 | Not use (reload) panning envelope
                               2 | Not use (reload) slide envelope
                               3 | Not use (reload) vibrato envelope
                               4 | Not use (reload) tremolo envelope
                               5 | Not use (reload) pannolo envelope
                               6 | Not use (reload) channolo envelope
                               7 | Not use (reload) spenolo envelope
                               8 | Not use (reload) track tremolo envelope
                               9 | Not use (reload) track pannolo envelope
                              10 | Not use (reload) global tremolo envelope
                              11 | Not use (reload) global pannolo envelope
          +44      UWORD   Envelope processing flags
                           Bit # | Meanings if set
                               0 | Add first, then get volume envelope value
                               1 | Add first, then get panning envelope value
                               2 | Add first, then get slide envelope value
                               3 | Add first, then get vibrato envelope value
                               4 | Add first, then get tremolo envelope value
                               5 | Add first, then get pannolo envelope value
                               6 | Add first, then get channolo envelope value
                               7 | Add first, then get spenolo envelope value
                               8 | Add first, then get track tremolo envelope
                               9 | Add first, then get track pannolo envelope
                              10 | Add first, then get global tremolo envelope
                              11 | Add first, then get global pannolo envelope
          +46      UWORD   Envelope retrigger flags
                           Bit # | Meanings if set
                               0 | Not retrigger volume envelope
                               1 | Not retrigger panning envelope
                               2 | Not retrigger slide envelope
                               3 | Not retrigger vibrato envelope
                               4 | Not retrigger tremolo envelope
                               5 | Not retrigger pannolo envelope
                               6 | Not retrigger channolo envelope
                               7 | Not retrigger spenolo envelope
                               8 | Not retrigger track tremolo envelope
                               9 | Not retrigger track pannolo envelope
                              10 | Not retrigger global tremolo envelope
                              11 | Not retrigger global pannolo envelope
          +48      UWORD   Envelope random flags
                           Bit # | Meanings if set
                               0 | Randomize volume envelope
                               1 | Randomize panning envelope
                               2 | Randomize slide envelope
                               3 | Randomize vibrato envelope
                               4 | Randomize tremolo envelope
                               5 | Randomize pannolo envelope
                               6 | Randomize channolo envelope
                               7 | Randomize spenolo envelope
                               8 | Randomize track tremolo envelope
                               9 | Randomize track pannolo envelope
                              10 | Randomize global tremolo envelope
                              11 | Randomize global pannolo envelope
          +50      UWORD   Envelope random delay flags
                           Bit # | Meanings if set
                               0 | Speed is delay randomize volume envelope
                               1 | Speed is delay randomize panning envelope
                               2 | Speed is delay randomize slide envelope
                               3 | Speed is delay randomize vibrato envelope
                               4 | Speed is delay randomize tremolo envelope
                               5 | Speed is delay randomize pannolo envelope
                               6 | Speed is delay randomize channolo envelope
                               7 | Speed is delay randomize spenolo envelope
                               8 | Speed is delay rand. track tremolo envelope
                               9 | Speed is delay rand. track pannolo envelope
                              10 | Speed is delay rand. global tremolo envelope
                              11 | Speed is delay rand. global pannolo envelope
          +52      UWORD   Fade out value
          +54      UWORD   Hold
          +56      UWORD   Decay
          +58      UBYTE   DCA (Decay Action) when Decay is off
                           Val # | Meanings
                               0 | Note cut (as normal)
                               1 | Note off (do keyoff)
                               2 | Note fade (start fadeout)
          +59      UBYTE   Pitch panning center (0 is C-0, 60 is C-5, etc.)
          +60      UBYTE   MIDI channel used
          +61      UBYTE   MIDI program (instrument)
          +62      UBYTE   MIDI flags
                           Bit # | Meanings if set
                               0 | Tick quantize
                               1 | Record note-off
                               2 | Record velocity
                               3 | Record aftertouch
                               4 | Record with external sync
                               7 | MIDI for instrument enabled
          +63      BYTE    MIDI transpose
          +64      UBYTE   MIDI aftertouch (percentage)
          +65      UBYTE   MIDI pitchbender
 ?FORMxxxxSAMP = Sample list
        * FORMxxxxSMPL = Sample entry
                 ?FILE = Filename of sample (e.g. O-Hihat.IFF)
                 ?NAME = Name of sample (e.g. Hihat.Opened)
                  SMPH = Sample header, contains sample info
                         Offset    Size    Meanings
                          + 0      ULONG   Number of samples (not the length)
                          + 4      ULONG   Repeat start (samples)
                          + 8      ULONG   Repeat length (samples)
                          +12      ULONG   Repeat count (NULL if unlimited)
                          +16      ULONG   Sustain repeat start (in samples)
                          +20      ULONG   Sustain repeat length (in samples)
                          +24      ULONG   Sustain repeat count (0, unlimited)
                          +28      ULONG   Sample rate in Hz
                          +32      ULONG   Sample start offset (start play)
                          +36      ULONG   Lower sample rate limit
                          +40      ULONG   Upper sample rate limit
                          +44      UBYTE   Sample bit depth (currently 1 - 16)
                          +45      BYTE    Transpose (from -120 to +120)
                          +46      BYTE    8-bit fine tune (from -128 to +127)
                          +47      UBYTE   Compatible flags
                                           Bit # | Meanings
                                               0 | Sample panning affects ch-
                                                   annel panning (like IT)
                                               1 | Only keep the volume when
                                                   notes without a sample
                                                   number are played
                                               2 | If no note is played at a
                                                   tone portamento, the note
                                                   under the tone porta will
                                                   start playing as normally
                                                   would be
                                               3 | If this and the previous
                                                   bit are set, it will always
                                                   play the sample from begin
                          +48      UBYTE   Flags
                                           Bit # | Meanings if set
                                               0 | Delta sample
                                               1 | Loop sample
                                               2 | Use sustain loop
                                               3 | Use sample panning
                                               4 | Panning is surround panning
                                               6 | Play sample backwards
                                                   initially (but play, if
                                                   a normal loop, always
                                                   forward then)
                          +49      UBYTE   Repeat mode
                                           Bit # | Meanings
                                               0 | Backward loop
                                               1 | Ping pong loop
                          +50      UBYTE   Sustain repeat mode (look repeat
                                           mode for details)
                          +51      UBYTE   Global volume (from 0 to 255)
                          +52      UBYTE   Default volume (from 0 to 255)
                          +53      UBYTE   Default sub volume (from 0 to 255)
                          +54      UBYTE   Default panning (from 0 to 255)
                          +55      UBYTE   Default sub panning (from 0 to 255)
                          +56      UWORD   Auto vibrato envelope number (or 0)
                          +58      UWORD   Auto tremolo envelope number (or 0)
                          +60      UWORD   Auto pannolo envelope number (or 0)
                          +62      UBYTE   Envelope usage flags
                                           Bit # | Meanings if set
                                               0 | Do not reload auto vibrato
                                               1 | Do not reload auto tremolo
                                               2 | Do not reload auto pannolo
                          +63      UBYTE   Envelope processing flags
                                           Bit # | Meanings if set
                                               0 | First add auto vibrato
                                               1 | First add auto tremolo
                                               2 | First add auto pannolo
                                               7 | Use linear frequency table
                                                   for auto vibrato
                          +64      UBYTE   Envelope retrigger flags
                                           Bit # | Meanings if set
                                               0 | Not retrigger auto vibrato
                                               1 | Not retrigger auto tremolo
                                               2 | Not retrigger auto pannolo
                          +65      UBYTE   Envelope randomization flags
                                           Bit # | Meanings if set
                                               0 | Randomize auto vibrato
                                               1 | Randomize auto tremolo
                                               2 | Randomize auto pannolo
                          +66      UWORD   Auto vibrato sweep
                          +68      UWORD   Auto tremolo sweep
                          +70      UWORD   Auto pannolo sweep
                          +72      UBYTE   Auto vibrato depth
                          +73      UBYTE   Auto vibrato speed
                          +74      UBYTE   Auto tremolo depth
                          +75      UBYTE   Auto tremolo rate
                          +76      UBYTE   Auto pannolo depth
                          +77      UBYTE   Auto pannolo rate
                 ?BODY = The actual sample data. If the delta sample bit is
                         set, the samples are delta values. The samples are
                         stored as signed data. The length field of the BODY
                         chunk says the actual length in bytes of the sample.
                         So if the sample is 16 bit and has 20000 samples, you
                         will read here 40000. Remember that n-bit samples are
                         also stored as n-bit delta samples (and not always as
                         8-bit delta values like some other trackers do). But
                         delta does not help much on samples other than 4, 8,
                         12 and 16 bits. If there's no BODY chunk, the sample
                         must be read from disk using the FILE chunk.
                 ?FORMxxxxSNTH = Synthetic data information
                         ?FILE = Filename of synth (e.g. SynPiano.TCY)
                         ?NAME = Name of synth (e.g. Synth Piano)
                          YHDR = Synth header:
                                 Offset    Size    Meanings
                                  + 0      UWORD   Number of waveforms
                                  + 2      UWORD   Entry point of volume
                                                   handling code
                                  + 4      UWORD   Entry point of panning
                                                   handling code
                                  + 6      UWORD   Entry point of slide
                                                   handling code
                                  + 8      UWORD   Entry point of special
                                                   handling code
                                  +10      UWORD   Sustained volume handling
                                                   code entry point
                                  +12      UWORD   Sustained panning handling
                                                   code entry point
                                  +14      UWORD   Sustained slide handling
                                                   code entry point
                                  +16      UWORD   Sustained special handling
                                                   code entry point
                                  +18      UWORD   NNA trigger jump position
                                                   of volume handling code
                                  +20      UWORD   NNA trigger jump position
                                                   of panning handling code
                                  +22      UWORD   NNA trigger jump position
                                                   of slide handling code
                                  +24      UWORD   NNA trigger jump position
                                                   of special handling code
                                  +26      UWORD   DNA trigger jump position
                                                   of volume handling code
                                  +28      UWORD   DNA trigger jump position
                                                   of panning handling code
                                  +30      UWORD   DNA trigger jump position
                                                   of slide handling code
                                  +32      UWORD   DNA trigger jump position
                                                   of special handling code
                                  +34      UWORD   Initial value of var. 0
                                  +36      UWORD   Initial value of var. 1
                                  +38      UWORD   Initial value of var. 2
                                  +40      UWORD   Initial value of var. 3
                                  +42      UWORD   Initial value of var. 4
                                  +44      UWORD   Initial value of var. 5
                                  +46      UWORD   Initial value of var. 6
                                  +48      UWORD   Initial value of var. 7
                                  +50      UWORD   Initial value of var. 8
                                  +52      UWORD   Initial value of var. 9
                                  +54      UWORD   Initial value of var. 10
                                  +56      UWORD   Initial value of var. 11
                                  +58      UWORD   Initial value of var. 12
                                  +60      UWORD   Initial value of var. 13
                                  +62      UWORD   Initial value of var. 14
                                  +64      UWORD   Initial value of var. 15
                                  +66      UWORD   Initial vol. condition var.
                                  +68      UWORD   Initial pan. condition var.
                                  +70      UWORD   Init. slide condition var.
                                  +72      UWORD   Init. spec. condition var.
                                  +74      UBYTE   NNA trigger usage flags
                                  +75      UBYTE   Sustain usage flags
                                  +76      UBYTE   Position keep mask
                                  +77      UBYTE   NNA trigger pos. keep mask
                                  +78      UWORD   Variable keep mask
                         ?FORMxxxxWFRM = Waveform list
                                * FORMxxxxWAVE = For each waveform
                                         ?FILE = File name of waveform
                                         ?NAME = Name of waveform
                                          WHDR = Waveform header. See TCY1
                                                 description for details.
                                          BODY = Each waveform point is an
                                                 WORD (i.e. trated as an array
                                                 of 16-bit samples)
                         ?CODE = Synth programming code. This is an UBYTE with
                                 the instruction, two nibbles, the first
                                 containing the source variable and the second
                                 the destination variable, following by an
                                 instruction data UWORD which is instruction
                                 specific. The amount of lines equals to
                                 chunk length / 4.
                         ?FORMxxxxSTAB = This is the symbol table
                                * FORMxxxxSMBL = This is for each symbol
                                          NAME = Symbol name (e.g. MAXFREQ)
                                          SREF = Symbol reference chunk:
                                                 Offset    Size    Meanings
                                                  + 0      UWORD   Symbol
                                                                   value
                                                  + 2      UWORD   First valid
                                                                   line
                                                  + 4      UWORD   Last valid
                                                                   line
                                                  + 6      UBYTE   Type. See
                                                                   TCY1 for
                                                                   details.
                                                  + 7      UBYTE   Flags. See
                                                                   TCY1 for
                                                                   details.
 ?FORMxxxxENVL = Nested FORM chunk that contains all envelope data
        * FORMxxxxENVD = Envelope data
                  EHDR = Envelope header, contains important data
                         Offset    Size    Meanings
                          + 0      UWORD   Envelope flags
                                           Bit # | Meanings if set
                                               0 | Use envelope loop points
                                               1 | Use envelope sustain points
                                               2 | Ping pong envelope
                                               3 | Sustain loop is played in
                                                   pingpong order
                          + 2      UWORD   Envelope tempo in ticks (default 1)
                          + 4      UWORD   Sustain start point
                          + 6      UWORD   Sustain end point
                          + 8      UWORD   Sustain loop repeat counter
                          +10      UWORD   Loop start point
                          +12      UWORD   Loop end point
                          +14      UWORD   Loop repeat counter
                          +16      WORD    Lowest random value
                          +18      WORD    Highest random value
          BODY = The BODY chunk contains the waveform data of the envelope.
                 Each point is a WORD containing a value from -$8000 to $7FFF.
                 The values are evaluated differently depending on the
                 envelope type. Number of envelope points is BODY chunk
                 length divided by 2. To get correct volume envelope value
                 add $8000 to it.
         ?NODE = Envelope node list. This is an array if UWORDs containing
                 the draggable node points. The UWORDs contain the envelope
                 position (X-axis). The first node is always 0 and the last
                 node is always at the end of the envelope.
 ?KBRD = Sample/Note keyboard definition table. If not present, the default
         table will be used (sample 0, normal note). This chunk is currently
         always 480 bytes long (10 octaves * 12 notes long words), but may be
         increased when the amount of possible octaves in TuComposer is
         raised.
 ?FORMxxxxARPG = Arpeggio control data
          AHDR = Arpeggio control header, contains important data
                 Offset    Size    Meanings
                   + 0      UWORD   Number of ticks in arpeggio env.
                   + 2      UWORD   Special flags
                                    Bit # | Meanings if set
                                        0 | Loop arpeggio control
                                        1 | Use sustain ticks
                                        2 | Play in ping pong order
                   + 4      UWORD   Sustain start tick
                   + 6      UWORD   Sustain end tick
                   + 8      UWORD   Sustain repeat counter
                   +10      UWORD   Loop start tick
                   +12      UWORD   Loop end tick
                   +14      UWORD   Loop repeat counter
          FORMxxxxARPE = Arpeggio tick entries
                * ARPE = Arpeggio tick entry
                         Offset    Size    Meanings
                          + 0      UBYTE   Tone (HI-nibble is octave,
                                           LO is note, 1 is C-, 2 is C#, 3 is
                                                   D-, 4 is D#, 5 is E-, etc.)
                          + 1      BYTE    Transpose (-120 to +120)
                          + 2      UWORD   Instrument number or zero for
                                           arpeggio instrument)
                          + 4      UBYTE   Effect byte 1 (The arpeggio control
                                           can currently only hold up to 4
                                           effects (unused effecs are left to
                                           zero))
                          + 5      UBYTE   Effect byte 2
                          + 6      UBYTE   Effect byte 3
                          + 7      UBYTE   Effect byte 4
                          + 8      UWORD   Data word 1 (The arpeggio control
                                           can currently only hold up to 4
                                           data words (contents are effect
                                           dependant and unused effect slots
                                           also contain zero here).
                          +10      UWORD   Data word 2       
                          +12      UWORD   Data word 3       
                          +14      UWORD   Data word 4


1. June 2005 12:09
Profile ICQ WWW
Display posts from previous:  Sort by  
Reply to topic   [ 1 post ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.