impulsetracker/InternalDocumentation/CHANNEL.TXT

280 lines
9.0 KiB
Plaintext
Executable File

Host Channel Structure
0 1 2 3 4 5 6 7 8 9 A B C D E F
ÚÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
0000:³ Flags ³Msk³Nte³Ins³Vol³Cmd&Val³OCm&Val³VCm&Val³MCh³MPr³Nt2³Smp³
ÃÄÄÄÂÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄ´
0010:³DKL³EFG³O00³I00³J00³M00³N00³P00³Q00³T00³S00³OxH³W00³VCE³GOE³SFx³ GOE = Gxx
ÃÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÁÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄ´ with old
0020:³HCN³CUC³VSe³LTr³SCOffst³PLR³PLC³PWF³PPo³PDp³PSp³LPn³LVi³CP ³CV ³ effects
ÃÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄ´
0030:³VCh³TCD³Too³RTC³Porta Frequency³VWF³VPo³VDp³VSp³TWF³TPo³TDp³TSp³
ÃÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄ´
0040:³ Misc Effect Data............................................. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Flags:
þ Update Mode
ù 2 Bits (0-3)
ú 0: Don't update effect
ú 1: Update effect if channel is on
ú 2: Always update effect
þ Channel On
ù 1 Bit (4)
ú 0: Channel is off
ú 1: Channel is on
þ Channel Cut ; No longer implemented
ù 1 Bit (8)
ú 0: No Channel Cut command
ú 1: Channel Cut command issued
þ Slide in progress (Commands G/L)
ù 1 Bit (16)
ú 0: No slide in progress
ú 1: Slide in progress
þ Freeplay note (ie. Don't check channel on/off)
ù 1 Bit (32)
ú 0: Not freeplay -> Check channel
ú 1: Freeplay -> Don't check channel
+64 = row updated.
+ 128 = Apply random volume
+256 Volume column effect requires updating if channel on
+512 Volume column effect requires updating always.
+32768 = Dont' touch in interrupt!
þ Decoding Data
ù Msk, Nte, Ins, Vol, Cmd&Val, ONt, OIn, OVl, OCm&Val
Msk = Read mask: Bit 0 or 4 = Note read
Bit 1 or 5 = Instrument read
Bit 2 or 6 = Volume read
Bit 3 or 7 = Command/Command Value read
þ Smp & Nt2
ù Sample Number (zero based) and Note (after translation if using inst.)
þ CP. = Channel Pan
þ CV. = Channel Volume
þ SCN = Slave Channel Number
þ CUC = Command Update Count. For playmode 0
þ SCOffst = Slave channel number offset
þ VWF = Vibrato wave form
þ TWF = Tremelo wave form
þ PWF = Panning wave form
PLR = Pattern loop row
PLC = pattern loop count.
VSe = Volume set
LVi = Last vibrato.
LTr = Last tremelo.
Dir = Porta direction
RTC = Retrig count
Too = tremor on/off ; on = 1
TCD = tremor count down
OxH = High order Offset for yxx00h
VCh = Volume change (For Command D)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Slave Channel Structure
0 1 2 3 4 5 6 7 8 9 A B C D E F
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
0000:³ Flags ³ Device specific...............³LpM³LpD³ Left Volume ³
ÃÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÅÄÄÄÁÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
0010:³ Frequency ³ Frequency Set ³Bit³ViP³ViDepth³ RVol/MIDIFSet ³
ÃÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÂÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
0020:³FV ³Vol³VS ³CVl³SVl³FP ³FadeOut³DCT³DCA³Pan³PS ³OldSampleOffset³
ÃÄÄÄÁÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÁÄÄÄÅÄÄÄÂÄÄÄÅÄÄÄÁÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄ´
0030:³InsOffs³Nte³Ins³SmpOffs³Smp³FPP³HCOffst³HCN³NNA³MCh³MPr³ MBank ³
ÃÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÅÄÄÄÄÄÄÄÁÄÄÄÁÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÁÄÄÄÅÄÄÄÁÄÄÄÁÄÄÄÄÄÄÄ´
0040:³ Loop Beginning³ Loop End ³SmpErr.³16bVol ³ Sample Offset ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ´
0050:³VEnvelopeValue ³VEnvelopeDelta ³VEnvPos³CurVEnN³NextVET³filtera³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
0060:³PEnvelopeValue ³PEnvelopeDelta ³PEnvPos³CurVEnN³NextPET³filterb³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´
0070:³PtEnvelopeValue³PtEnvelopeDelta³PtEvPos³CurPtEN³NxtPtET³filterc³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ
For MIDI, [SI+0Bh] = Pattern note
Reqd values: VEnvValue (DWord), VEnvDelta (DWord), VEnvPos (Word), NextVEnvNode
PEnvValue (DWord), PEnvDelta (DWord), PEnvPos (Word), NextPEnvNode
PtEnvValue (DWord), PtEnvDelta (DWord), PtEnvPos (Word), NextPtEnv
Reqd flags: VolEnvOn, PEnvOn, PtEnvOn
FP = final pan.
FPP = final playing pan, taking into account reverse.
MBank also doubled as Filter freq, resonance
Flags:
þ Channel On
ù 1 Bit (1)
ú 0: Channel is off
ú 1: Channel is on
þ Recalculate panning (2)
þ Note Off (ie. Sustain)
ù 1 Bit (4)
ú 0: No Note Off command (ie. Sustain on)
ú 1: Note Off command issued (ie. Sustain off)
þ FadeOut
ù 1 Bit (8)
ú 0: No FadeOut command
ú 1: Apply FadeOut
þ Recalculate volume
ù 1 Bit (16)
ú 0: Volume doesn't need to be calculated
ú 1: Volume needs to be recalculated
þ Frequency change
ù 1 Bit (32)
ú 0: Frequency has NOT changed
ú 1: Frequency HAS changed
þ Recalculate Final volume...
ù 1 Bit (64)
ú 0: Final volume does not need to be calculated
ú 1: Final volume DOES need to be calculated.
þ Central pan...
ù 1 Bit (128)
ú 0: Use whatever is given.
ú 1: Always use central pan (for sample list/instrument list)
þ New note!
ù 1 Bit (256)
ú 0: No new note
ú 1: New note to play.
þ Note stop (cut) ; IMPORTANT FOR GUS!!!
ù 1 Bit (512)
ú 0: note NOT cut
ú 1: Note CUT
þ Loop changed. (1024)
þ Channel muted (2048) ; 2^11
þ Vol Envelope on (4096) ; 1000h
þ Pan Envelope on (8192) ; 2000h
þ Pitch Envelope on (16384) ; 4000h
þ Pan value changed ; 8000h
Recalculate final pan
LpM
þ LoopMode
ù 0: No Loop
ù 8: Forwards Loop
ù 24: Ping Pong Loop ; Values are just for GUS convenience
LpD
þ LoopDirection (for ping pong), ; 0 = forwards, 1 = backwards.
þ FadeOut = Fadeout Count (0-255)
þ CVl = Channel Volume
þ HCN = Host Channel Number. +128 if "disowned"
þ Smp = Sample number
þ Pan: 0->64, 100 = Surround, >= 128 = muted.
þ FnV: Final Volume
þ Bit: 2 = 16, 0 = 8.
þ ViD: Vibrato Depth
þ ViS: Vibrato Speed
þ VEP: Volume Envelope position
þ VEV: Volume Envelope value
þ Ins: Instrument number (0 based, 0FFh if none)
þ Smp: Sample number (0 based)
þ Frequency = Final note frequency. Incorportes vibrato
þ Frequency Set = Calculated Frequency of note. Calculated once when played
Altered by effects E,F,G,L
þ VS = Volume Set. Similar to Frequency Set. Affected by D,K,L
þ Vol = Volume. Altered by effects R,I
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Sound Blaster Output Structure
0 1 2 3 4 5 6 7 8 9
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÂ
0000:³(Flags)³ Skip Value ³Vol³ x ³MixMode³
ÃÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÂÄÄÄÅ
For non-looped samples, 44h is LENGTH.
Sound Blaster Pro Output Structure
0 1 2 3 4 5 6 7 8 9
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÂ
0000:³(Flags)³ Skip Value ³LVl³RVl³MixMode³
ÃÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÂÄÄÄÅ
Skip Value
þ 16.16 bit fixed point
Vol/LVl/RVl
þ Output Volume / Left Volume / Right Volume
ù Accounts for:
ú Channel Volume
ú Global Volume
ú Sample Global Volume
ú Fade Out
MMd: 0 If Left only
1 If right only
2 if Left = Right
3 if Panned
4 if Surround
5 if position update.
+32 for 16 bit samples
+8 for looped
+24 for ping pong.
UltraSound Output Structure
0 1 2 3 4 5 6 7 8 9
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂ
0000:³(Flags)³LastVol³Freqval³ ³
ÃÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÅ
Frequency Value used in dynamic GUS drivers
AWE32 Output Structure
0 1 2 3 4 5 6 7 8 9
ÚÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂ
0000:³(Flags)³ x ³ x ³ Freqvalue ³ ³
ÃÄÄÄÂÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÅÄÄÄÂÄÄÄÅ
Frequency Value used in floating point AWE32 drivers
SAM Output Structure
0 1 2 3 4 5 6 7 8 9
ÚÄÄÄÄÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÄÄÄÄÂ
0000:³(Flags)³opn³ x ³ ³ ³ ³ ³ ³
ÃÄÄÄÂÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÅÄÄÄÂÄÄÄÅ
opn = 1 if voice is opened, 0 if not.