home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / sound / sbmod / variab.pas < prev    next >
Pascal/Delphi Source File  |  1994-10-13  |  11KB  |  337 lines

  1. unit variab;
  2.  
  3. interface
  4.  
  5. TYPE
  6.   pt = record               
  7.     ofs,sgm  :  word;       
  8.   end;
  9.  
  10.   Effect_Type = record
  11.      p : pointer;
  12.      l : longint;
  13.      sr : word;
  14.    end;
  15.  
  16.   Param_Table = record
  17.     mult  : word;
  18.     Speed : word;
  19.     bgr   : word;
  20.     Ab    : integer;
  21.    end;
  22. TYPE vocheader = record
  23.        ident      : array[0..19] of char;
  24.        Sampoff    : word;
  25.        Verslo     : Byte;
  26.        Vershi     : Byte;
  27.        ident_code : word;
  28.      end;
  29.  
  30.      Voiceblock = record
  31.        ident_code : byte;
  32.        Long_lo   : word;
  33.        Long_hi   : byte;
  34.        SR         : byte;
  35.        Pack       : byte;
  36.      end;
  37.  
  38.  
  39.  
  40. CONST bloc_actif : byte = 1;
  41.   Incfacts : array[1..99] of longint =
  42.     ( $0021E7,$0023EB,$00260E,$002851,$002AB7,$002D41,$002FF2,$0032CC,
  43.       $0035D1,$003904,$003C68,$004000,$0043CE,$0047D6,$004C1C,$0050A2,
  44.       $00556E,$005A82,$005FE4,$006598,$006BA2,$007209,$0078D0,$007FFF,
  45.       $00879C,$008FAC,$009837,$00A144,$00AADB,$00B504,$00BFC8,$00CB2F,
  46.       $00D744,$00E411,$00F1A1,$00FFFF,$010F39,$011F5A,$013070,$01428A,
  47.       $0155B8,$016A09,$017F91,$01965F,$01AE89,$01C823,$01E343,$01FFFF,
  48.       $021E72,$023EB3,$0260DF,$028514,$02AB6F,$02D413,$02FF21,$032CC0,
  49.       $035D14,$039047,$03C686,$03FFFF,$043CE4,$047D66,$04C1BF,$050A29,
  50.       $0556E0,$05A827,$05FE43,$06597F,$06BA27,$07208F,$078D0D,$07FFFF,
  51.       $0879C7,$08FACC,$09837E,$0A1451,$0AADC0,$0B504F,$0BFC87,$0CB2FF,
  52.       $0D744F,$0E411F,$0F1A1C,$0FFFFF,$10F38F,$11F59A,$1306FE,$1428A3,
  53.       $155B81,$16A09E,$17F910,$1965FE,$1AE89F,$1C823D,$1E3438,$1FFFFF,
  54.       $21E71E, $23EB35,$260DFC
  55.     );
  56.  
  57.   outfading : boolean = false;
  58.   outvolume : byte = 63;
  59.   msp : longint = 0;
  60.   TailleFiMod : longint = 0;
  61.   filtre_actif : boolean = false;
  62.   balance : byte = 12;
  63.   Mastervolume : byte = 29;
  64.   Startport : word = $200;
  65.   Endport   : word = $280;
  66.   playspeed : byte = 6;
  67.  
  68.   DETECT = 55555;
  69.   Samfreq : word = 22;
  70.   force_mono : boolean = false;
  71.   force_sb : boolean = false;
  72.   force_irq : boolean = false;
  73.   force_dma : boolean = false;
  74.   force_base : boolean = false;
  75.   PC    = 0;
  76.   AMIGA = 1;
  77.   m669 : boolean = false;
  78.   interrupt_trouve : boolean = false;
  79.   interrupt_check : boolean = false;
  80.   Choose_lower_freq : boolean = false;
  81.   timer_per_second  : word = 50;      { Nb d'appels du Timer par Sec. }
  82.   Sampling_Frequence : word = 10000;  { Valeur de Sampling par défault} 
  83.   in_retrace        : boolean = false; 
  84.   dsp_irq        : byte = $5;           { numéro d'interruption de SB}
  85.   dma_ch            : byte = 1;         { Numéro du canal DMA utilisé}
  86.                                         { = 1, sinon modifier cette  }
  87.                                         { variable                   }
  88.   dsp_adr           : word = $220;      { adresse de base de la carte}
  89.                                         { Sound-Blaster              }
  90.   SbVersMin         : BYTE = 0;         { Numéro de Version secondaire }
  91.   SbVersMaj         : BYTE = 0;         { Numéro de Version principal }
  92.   STEREO            : BOOLEAN = false;
  93.   SbRegDetected     : BOOLEAN = FALSE;  { Détection d'une carte SB ?    }
  94.   IRQDetected       : BOOLEAN = FALSE;
  95.   SbRegInited       : BOOLEAN = FALSE;
  96.   SbProDetected     : BOOLEAN = FALSE;  { Détection d'une carte SB Pro  ? }
  97.   SbProInited       : BOOLEAN = FALSE;
  98.   Sb16Detected      : BOOLEAN = FALSE;  { Détection d'une carte SB 16 ASP  ? }
  99.   Sb16Inited        : BOOLEAN = FALSE;
  100.   MixerDetected     : BOOLEAN = FALSE;  
  101.   OldTimerInt                 = $71;    
  102.                                         
  103.   voix              : integer = 4;      { Nombre de voix dans le     }
  104.                                         { fichier MOD (4 ou 8)       }
  105.   Modoctave : array[1..70] of word =
  106.    (
  107.     1712,1616,1525,1440,1359,1283,1211, { Ce tableau correspond aux sons }
  108.     1143,1078,961,907,856,808,763,720,  { contenu dans le fichier MOD    }
  109.     679,641,605,571,539,509,480,453,428,
  110.     404,381,360,340,321,303,286,270,254,
  111.     240,227,214,202,191,180,170,160,151,
  112.     143,135, 127,120,113,107,101,95,90,
  113.     85,80,76,71,67,64,60,57,
  114.     54,51,48,45,43,40,38,36,34,32,30);
  115.  
  116. { PermUp_1           : byte = 0;         { Portamento Up  }
  117. { PermUp_2           : byte = 0;
  118.  PermUp_3           : byte = 0;
  119.  PermUp_4           : byte = 0;
  120.  PermUp_5           : byte = 0;
  121.  PermUp_6           : byte = 0;
  122.  PermUp_7           : byte = 0;
  123.  PermUp_8           : byte = 0;
  124.  PermDo_1           : byte = 0;         { Portamento Down  }
  125. { PermDo_2           : byte = 0;
  126.  PermDo_3           : byte = 0;
  127.  PermDo_4           : byte = 0;
  128.  PermDo_5           : byte = 0;
  129.  PermDo_6           : byte = 0;
  130.  PermDo_7           : byte = 0;
  131.  PermDo_8           : byte = 0;
  132.  PermNk1            : word = 0;
  133.  PermNk2            : word = 0;
  134.  PermNk3            : word = 0;
  135.  PermNk4            : word = 0;
  136.  PermNk5            : word = 0;
  137.  PermNk6            : word = 0;
  138.  PermNk7            : word = 0;
  139.  PermNk8            : word = 0;}
  140.  
  141.  AUTO = 9999;                           {  Auto detection }
  142.  ON   = true;
  143.  OFF  = false;
  144.  playeffect : boolean = false;
  145.  effectvolume : word = 7;
  146.  converteff    : byte = 0;
  147.  sensib : real = 0.9;
  148.  
  149.  dma_page : array[0..3] of byte = ($87,$83,$81,$81);
  150.  dma_adr  : array[0..3] of byte = (0,2,4,6);
  151.  dma_wc   : array[0..3] of byte = (1,3,5,7);
  152.  
  153.  sb16_outputlong : word = 0;
  154.  dern_sortie : boolean = false;
  155.  
  156. VAR
  157.  Oldintcompteur : word;
  158.  efi : file;
  159.  outfile : file;
  160. { ModPara : array[0..64] of Param_Table;}
  161.  Taillebloc          : word;            
  162.  dsp_rdy_sb16        : boolean;         { prend la valeur TRUE quand le transfert }
  163.                                         { de données via DMA est fini   }
  164.  SbVersStr           : string[5];       
  165.  Speed               : word;            
  166.  oldInt              : pointer;         { adresse d'interruption du timer }
  167.  irqmsq              : byte;            { masque ou démasque l'interupt SB }
  168.  mixer_proc          : pointer;         { pointeur sur procédure }
  169.  nmw_proc            : pointer;         { pointeur sur procédure } 
  170.  proc_intra          : pointer;         { pointeur sur procédure }
  171.  Frappe_Notes        : array[1..8]      { permet le contrôle d'un equalizer }
  172.                        of integer;
  173.  Rm_Song             : Array[1..64,1..8,
  174.                          1..4] of Byte;
  175.  rm                  : array[0..128]    { permet de gérer les patterns }
  176.                        of pointer;
  177.  Chanson             : array[1..128]    { Arrangement des chansons   }
  178.                        of byte;
  179.  blk                 : pointer;
  180.  inst        : array[1..8] of pointer;
  181.  Samp                : Array[1..64]     { Tableau de pointeurs sur les }
  182.                        of pointer;      { différents samples         }
  183.  Sam_l               : Array[1..64]     { longueur des samples       }
  184.                        of word;
  185.  loop_s              : array[1..64]     { position de départ des Looping }
  186.                        of word;
  187.  loop_l              : array[1..64]     { longueur des Looping       }
  188.                        of word;
  189.  i1,i2,i3,i4,
  190.  i5,i6,i7,i8         : pt;
  191.  inl           : array[1..8] of word;
  192.  inp          : array[1..8] of word;
  193.  i                   : word;
  194.  mlj                 : word;            
  195.  
  196.  mli                 : word;            
  197.                                         
  198. { Vk1,Vk2,Vk3,
  199. { Vk4,Vkh,Vk5,                           
  200. { Vk6,Vk7,Vk8         : word;
  201. { Nk1,Nk2,Nk3,                           
  202. { Nk4,Nkh,Nk5,                           
  203. { Nk6,Nk7,Nk8         : byte;            
  204. { Dif1,Dif2,Dif3,
  205.  Dif4,Dif5,Dif6,
  206.  Dif7,Dif8           : byte;
  207.  Difb1,Difb2,Difb3,
  208.  Difb4,Difb5,Difb6,
  209.  Difb7,Difb8           : byte;}
  210. { Inst1vk             : word;            
  211. { Inst2vk             : word;            
  212. { Inst3vk             : word;
  213.  Inst4vk             : word;
  214.  Inst5vk             : word;
  215.  Inst6vk             : word;
  216.  Inst7vk             : word;
  217.  Inst8vk             : word;
  218.  Inst1nk             : byte;            
  219. { Inst2nk             : byte;
  220. { Inst3nk             : byte;
  221.  Inst4nk             : byte;
  222.  Inst5nk             : byte;
  223.  Inst6nk             : byte;
  224.  Inst7nk             : byte;
  225.  Inst8nk             : byte;}
  226.  In_St       : array[1..8] of byte;
  227.  nb_sam              : byte;            { Nombre de samples  }
  228.  nb_patt             : byte;            { Nombre de patterns }
  229.  m_played            : boolean;         
  230.  sound_boucle        : word;
  231.                                         
  232.  Sampling_Rate       : byte;            
  233.  
  234.  mod_nom             : string;          
  235.  tpw                 : integer;         
  236.  loop_pos            : word;
  237.  phase_1,                               
  238.  phase_2             : boolean;
  239.  Sampel1,Sampel2,                       { samples actifs             }
  240.  Sampel3,Sampel4,
  241.  Sampel5,Sampel6,
  242.  Sampel7,Sampel8     : pointer;
  243.  SaTail1,SaTail2,                       { Taille des samples actifs  }
  244.  SaTail3,SaTail4,
  245.  SaTail5,SaTail6,
  246.  SaTail7,SaTail8         : word;
  247.  mautodet            : boolean;
  248.  
  249.  modmultiply         : word;
  250.  
  251.  mloop               : boolean;
  252.  
  253.  periodic_arret      : pointer;         { Pointeur sur procédure de stop }
  254.  
  255.  music_off           : boolean;         { quand TRUE arrete la musique }
  256.  
  257.  Notvol1,Notvol2,
  258.  Notvol3,Notvol4,
  259.  Notvol5,Notvol6,
  260.  Notvol7,Notvol8     : byte;
  261.  NotVol              : array[1..8] of byte;
  262.  Old_TCompteur       : word;
  263.  
  264.  Dma_Compteur        : integer;
  265.  
  266.  dma_annul           : integer;         { Annulation du compteur DMA }
  267.  mod_terminated      : boolean;
  268.  ls    : array[1..8] of word;
  269.  ll     : array[1..8] of word;
  270.  Eff  : array[1..8] of byte;
  271.  Nom_Chanson         : string[20];      { Nom des fichiers MOD       }
  272.  Noms_Inst           : array[1..31]     { Nom des instruments        }
  273.                        of string[22];
  274. vol_inst             : array[1..31]
  275.                        of byte;
  276.  ChansonLongueur     : byte;
  277.  SecCompteur         : word;           
  278.  secpass,minpass       : byte;            { Duree des chansons         }
  279.  Taille_Patt         : integer;  
  280.  XMSMaxFree          : word;
  281.  MinXms              : word;            
  282.  xmsHandles             : array[1..32]
  283.                        of word;         
  284.  
  285.  soundeff : pointer;
  286.  Taille_effet : word;
  287.  effet_posi : word;
  288.  Effvk      : word;
  289.  Effnk      : byte;
  290.  Effistvk   : word;
  291.  Effistnk   : byte;
  292.  Effet : pt;
  293.  Effet_reduction : boolean;
  294.  ton_haut : byte;
  295.  
  296. { tempolist : array[1..128] of byte;
  297.  breaklist : array[1..128] of byte;}
  298.  cible : pt;
  299.  Modp  : pointer;                       { Pointeur sur Rm_Song        }
  300.  note1,note2,                          
  301.  note3,note4,                          
  302.  note5,note6,
  303.  note7,note8 :byte;
  304.  
  305.  Fadepos1,fadepos2,
  306.  fadepos3,fadepos4,
  307.  fadepos5,fadepos6,
  308.  fadepos7,fadepos8 : word;
  309.  
  310.  intback : pointer;
  311.  port21 : byte;
  312.  
  313.  vocf : file;
  314.  t_f : longint;
  315.  bloc1,bloc2 : pointer;
  316.  voch : vocheader;
  317.  vblock : voiceblock;
  318.  intpointer : pointer;
  319.  dsp_rdy_voc : boolean;
  320.  T_bloc : word;
  321.  PLAYING_MOD : boolean;
  322.  PLAYING_VOC : boolean;
  323.  dummarray : array[1..20] of byte;
  324.  lastone : boolean;
  325.  VOC_READY : boolean;
  326.  inread : array[1..25] of byte;
  327.  vocsstereo : boolean;
  328.  Mod_Fin : boolean;
  329.  
  330. implementation
  331.  
  332. begin;
  333. end.
  334.  
  335.  
  336.  
  337.