home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 26 / CD_ASCQ_26_1295.iso / voxrom / textes / repwin08 / annexes / triax / sbtest.pas < prev    next >
Pascal/Delphi Source File  |  1995-10-01  |  4KB  |  133 lines

  1. {▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓}
  2. { SBTEST - Fichier exemple pour article SB }
  3. {▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓}
  4.  
  5. Uses CRT,SB;
  6.  
  7. Var
  8.   Handle   : file;      {Handle fichier}
  9.   Buffer   : pointer;   {Pointeur sur buffer}
  10.   BufSize  : word;      {Taille du buffer}
  11.   ExePath  : string;    {Chemin de l'éxecutable}
  12.  
  13. {▒▒▒ HEX2ASC: Converti un nombre en héxa->ascii ▒▒▒}
  14. Function Hex2Asc(Hexa:WORD):string;
  15. Const HexDigits : array[0..15] of char = '0123456789ABCDEF';
  16. Var   HexStr    : string;
  17. Begin
  18.    HexStr:='';
  19.    Repeat
  20.       HexStr:=HexDigits[Hexa and $0f]+HexStr;
  21.       Hexa:=Hexa shr 4;
  22.    Until Hexa=0;
  23.    Hex2Asc:=HexStr;
  24. End;  {Pas de commentaires pour cette routine,
  25.         c'est pas le but de l'article}
  26.  
  27. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  28. {▓▓▓ Et c'est partiiiiiiiiiiiiiii..............!!!!!!!!!!!!!!!!  (?!) ▓▓▓}
  29. {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
  30. Begin
  31.    {D'abord on s'assure qu'il y a bien une SB}
  32.    If not SBDetect then
  33.      Begin
  34.         {Dommage...}
  35.         WriteLn('Bein alors, hein? Cékoi ce petit malin qui lance SBtest');
  36.         WriteLn('alors qu''il a même pas de SoundBlaster?? Ca mériterait');
  37.         WriteLn('des claques, tiens...');
  38.         WriteLn(':-)');
  39.         readkey;
  40.         Halt;
  41.      End;
  42.  
  43.    {Ensuite on balance des infos pour eul'plaisir}
  44.    WriteLn('Tintintin... Vous avez une SoundBlaster!!!');
  45.    WriteLn;
  46.    WriteLn('    Port : ',Hex2Asc(SBPort),'h');
  47.    WriteLn('     Irq : ',SBIrq);
  48.    WriteLn('     Dma : ',SBDma);
  49.    WriteLn(' Version : ',Hex2Asc(SBVersion));
  50.    WriteLn;
  51.    Delay(1000);
  52.  
  53.    {On charge le fichier contenant ma voix chaude et sensuelle}
  54.    ExePath := Paramstr(0);
  55.    while exepath[ord(exepath[0])] <> '\' do dec(exepath[0]);
  56.    Assign(Handle,EXEpath+'TX!VOICE.RAW');
  57.    Reset(Handle,1);
  58.    if ioresult>0 then halt;
  59.    BufSize:=FileSize(Handle);
  60.    GetMem(Buffer,BufSize);
  61.    BlockRead(Handle,Buffer^,BufSize);
  62.    Close(Handle);
  63.  
  64.    SBInit; {Installe le handler d'irq}
  65.  
  66.    WriteLn('Etant donné que je n''ai trouvé aucun fichier avec une belle');
  67.    WriteLn('musique à vous montrer, j''ai du sampler ma voix. (eh oui)');
  68.    WriteLn;
  69.    Delay(2000);
  70.  
  71.    {Ecoutez, ça n'a rien à voir...}
  72.    SBHpOn;
  73.    SBSetFreq(22000);
  74.    SBDmaOut(BufSize,Buffer);
  75.    Repeat until SBDmaDone;
  76.    FreeMem(Buffer,BufSize);
  77.  
  78.    {Le droit de réponse...}
  79.    WriteLn('Maintenant voici les réponses aux questions et exclamations');
  80.    WriteLn('que vous avez pu exprimer lors de la sortie de ce sample...');
  81.    WriteLn;
  82.    WriteLn('  * Oui j''ai une voix eud''jeun'', c''est normal j''ai 16 ans!');
  83.    WriteLn('  * Il y a bien un écho, j''arrive pas encore à parler comme ça...');
  84.    WriteLn('  * C''est vrai j''ai une voix à la con mais que voulez-vous');
  85.    WriteLn('    on s''refait pas!');
  86.    WriteLn;
  87.    Delay(4000);
  88.  
  89.    {On va bien rire...hinhinhin}
  90.    WriteLn('Eh maintenant, ça va être votre tour...');
  91.    WriteLn;
  92.    WriteLn('  >>> Allez-y, parlez... <<<');
  93.  
  94.    GetMem(Buffer,26000);
  95.    SBHpOff;
  96.    SBSetFreq(13000); {Moins vite que tout à l'heure car la SB
  97.                       ne peut pas sampler à des vitesses phénoménales...}
  98.  
  99.    Repeat
  100.    Until (SBDirectIn<120) or (SBDirectIn>136)  {Petite astuce sympa qui
  101.                                                 permet de ne déclencher
  102.                                                 l'enregistrement qu'au moment
  103.                                                 où la bête de scène commence
  104.                                                 à parler}
  105.  
  106.          or keypressed;                        {Pour ceux qui n'auraient
  107.                                                 pas de micro}
  108.  
  109.    if not keypressed then begin
  110.  
  111.      {Enregistrement...}
  112.      WriteLn('  >>> ça tourne (2'') <<<');
  113.      WriteLn;
  114.      SBDmaIn(26000,Buffer);
  115.      Repeat until SBDmaDone;
  116.  
  117.      WriteLn('OK... C''est pas trop mauvais.');
  118.      WriteLn('Appuyez sur une touche et écoutez-vous!');
  119.      WriteLn;
  120.      ReadKey;
  121.  
  122.      {...Et restitution}
  123.      SBHpOn;
  124.      SBDmaOut(26000,Buffer);
  125.      Repeat until SBDmaDone;
  126.  
  127.    end;    { if not keypressed }
  128.  
  129.    FreeMem(Buffer,26000);
  130.    SBDone; {Désinstalle le handler}
  131.    WriteLn('Allez, à la prochaine!');
  132.    WriteLn('                    (c) TrIaX!''95');
  133. End.