TCHANNEL STRUC
           ; general switches :
           enabled     DB     ?   ; flag if =0 then nothing to mix at the moment
           channeltyp  DB     ?   ; 0=off,1=left,2=right,3,4=adlib ... if 0,3,4 -> everything ignored !
           ; current Instrument :
           InstrSEG    DW     ?   ; DOS segment of current instrument data
           SampleSEG   DW     ?   ; DOS segment of current sample data
           InstrNo     DB     ?   ; number of instrument is currently playing
           Note        DB     ?   ; we don't need it really for playing, but let's store it anyway
           ; copy of sampledata (maybe it differs a bit):
           SampleVol   DB     ?   ; current sample volume
           sLoopflag   DB     ?   ; flag if we have to loop sample
           sSmpstart   DW     ?   ; start offset of sample
           sLoopstart  DW     ?   ; loop start of current sample =0ffffh if no loop
           sLoopend    DW     ?   ; loop end/normal end of current sample
           sCurPos     DD     ?   ; fixed point value for current position in sample
           sStep       DD     ?   ; fixed point value of frequency step (distance of one step
                                  ; depends on period we play currently)
           sPeriod     DW     ?   ; st3 period ... you know these amiga values (look at tech.doc of ST3)
                                  ; period does no influence playing a sample direct, but it's for sliding etc.
           lower_border DW    ?   ; B-7 or B-5 period for current instrument to check limits
           upper_border DW    ?   ; C-0 or C-3 period for current instrument to check limits
           ; effect info :
           command     DW     ?   ; 2 times effectnumber (for using a jmptable)
           cmd2nd      DW     ?   ; -> 2nd command part - for multiple effects
           parameter   DB     ?   ; just the command parameters
           ; extra effect data :
           continueEf  DB     ?   ; Flag if we should continue effect - vibrato,tremolo
           VibtabOfs   DW     ?   ; yo for each channel its own choise (default = OFS sinuswave)
           TrmtabOfs   DW     ?   ; = Offset of wavetable for tremolo
           tablepos    DB     ?   ; <- we reset this if a effect starts uses such a table
           VibPara     DB     ?   ; <- for dual command Vib + Vol
           PortPara    DB     ?   ; <- for dual command Port + Vol
           OldPeriod   DW     ?   ; save that value for some effects
           Oldvolume   DB     ?   ; save that value for tremolo
           WantedPeri  DW     ?   ; <- period to slide to with Portamento
           ArpegPos    DB     ?   ; which of thoses 3 notes we currently play ...
           note1       DB     ?   ; \
           note2       DB     ?   ; - +note - 3 notes we do arpeggio between
           Step0       DD     ?   ; \
           Step1       DD     ?   ;  |- the 3 step values we switch between in arpeggio effect (0 is start value <- we have to refesh after arpeggio)
           Step2       DD     ?   ; /
           cTick       DB     ?   ; - ticks left to retrigg note
           savNote     DB     ?   ; \
           savInst     DB     ?   ;  | - new values for notedelay ...
           SavVol      DB     ?   ;  |
           ndTick      DB     ?   ; /   <- also used for Notecut (ticks left to cut)
TCHANNEL ENDS

TINSTRUMENT STRUC
              TYP  DB  ?     ; if <>1 forget the rest it's a wrong instrument typ
              ; only read the following things if typ was =1
              ; or you will get 'amazing' results ;)
              DOSname DB 12 DUP (?)
              notused1      DB  ?
              memseg        DW  ?   ; segment of sampledata
              slength       DW  ?   ; length of sample <= 64KB
              HI_length     DW  ?   ; <- not used !
              loopbeg       DW  ?   ; loop begin <= 64KB
              HI_loopbeg    DW  ?   ; <- not used !
              loopend       DW  ?   ; loop end <= 64KB
              HI_loopend    DW  ?   ; <- not used !
              vol           DB  ?   ; default instrument volume
              notused2      DB  ?
              packinfo      DB  ?   ; =0 or we can't play it !
              flags         DB  ?   ; bit 0 = sample loops
                                    ; all other bits not supported ...
              c2speed       DW  ?   ; frequency at middle C (actually C-4)
              HI_c2speed    DW  ?   ; <- not used !
              notused3      DB 4 DUP (?)
              GUS_addr      DW  ?   ; <- not used !
              SB_Flags      DW  ?   ; dounno ... not used yet
              SB_last       DD  ?   ; not used yet (will be good for EMS play ?)
              IName         DB 28 DUP (?)
              SCRS_ID       DB  4 DUP (?)
TINSTRUMENT ENDS