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.