home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / sound / sbutil / demosrc.exe / VOCPDEMO.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1991-04-25  |  4.0 KB  |  194 lines

  1. {$A+,B-,D-,E+,F-,G-,I+,L-,N-,O-,R-,S-,V+,X-}
  2. {$M 3000,0,1008}
  3. {**************************************************************************
  4.  
  5.                                VOCPDEMO
  6.         Shows how to change the Sample Playback rate Real Time
  7.  
  8.                              Date: 4/4/91
  9.                               Version: 1
  10.  
  11. ***************************************************************************
  12.  
  13.                    Copyright (c) 1991, Zackzon Labs.
  14.  
  15.                        Author: Anthony Rumble
  16.  
  17. ==========
  18. Addresses:
  19. ==========
  20. InterNet: c9106510@cc.newcastle.edu
  21. SIGNet: 28:2200/108
  22.  
  23. Snail Mail:
  24.  32 Woolwich Rd.
  25.  Hunters Hill, NSW, 2110
  26.  Australia
  27.  
  28. -------------------------------------------------------------------------
  29.                               HISTORY
  30. -------------------------------------------------------------------------
  31. 1.0 - Works fine so far
  32. *************************************************************************}
  33. program sbpiano;
  34.  
  35. uses crt, sbvox, misc, sounds;
  36.  
  37. const
  38.  ver='1.0';
  39.  
  40. type
  41.  voc_hdr = record
  42.   voctype:byte;
  43.   blklen:array[1..3] of byte;
  44.   sr:byte;
  45.   pack:byte;
  46.  end;
  47.  
  48. var
  49.  c:integer;
  50.  version:integer;
  51.  err:integer;
  52.  ch:char;
  53.  stop:boolean;
  54.  status:word;
  55.  piano:^voc_hdr;
  56.  newsnd:pointer;
  57.  extsnd:boolean;
  58.  
  59. {****************************************************************************
  60.                                    MAIN
  61. ----------------------------------------------------------------------------
  62. ****************************************************************************}
  63. begin
  64.  extsnd:=false;
  65.  clrscr;
  66.  writeln('   Sound Blaster VocPDemo ',ver);
  67.  writeln('   By Anthony Rumble');
  68.  writeln('   Copyright (c) 1991. Zackzon Labs');
  69.  writeln;
  70.  stop:=false;
  71.  {Get version Number}
  72.  version := vox_get_version;
  73.  writeln('   CT-VOICE Version ',hi(version),'.',lo(version));
  74.  {Initialise the CT-VOICE driver}
  75.  err := vox_initial;
  76.  if err<>0 then
  77.  begin
  78.   case err of
  79.    1:writeln('Voice Card Fails');
  80.    2:writeln('I/O read/write faile');
  81.    3:writeln('Interupt for DMA fails');
  82.   end;
  83.   halt(1);
  84.  end;
  85.  
  86.  {Setup the Status Variable}
  87.  vox_status_addx(@status);
  88.  {Starting Instrument}
  89.  piano:=@elecpian;
  90.  
  91.  {set Middle C}
  92.  c:=136;
  93.  
  94.  stop:=false;
  95.  while not stop do
  96.  begin
  97.   if keypressed then
  98.   begin
  99.    vox_terminate;
  100.    ch:=readkey;
  101.    ch:=upcase(ch);
  102.    case ch of
  103.    #00:
  104.     begin
  105.      ch := readkey;
  106.      case ch of
  107.       #72:c:=c+1;
  108.       #80:c:=c-1;
  109.       #59:piano:=@elecpian;
  110.       #60:piano:=@bassdiee;
  111.      end;
  112.     end;
  113.     'A': {Mid C}
  114.      begin
  115.       piano^.sr:=c;
  116.       vox_output(piano);
  117.      end;
  118.     'W': {C# / Db}
  119.      begin
  120.       piano^.sr:=c+8;
  121.       vox_output(piano);
  122.      end;
  123.      'S': {D}
  124.       begin
  125.        piano^.sr:=c+12;
  126.        vox_output(piano);
  127.       end;
  128.     'E': {D# / Eb}
  129.      begin
  130.       piano^.sr:=c+19;
  131.       vox_output(piano);
  132.      end;
  133.      'D': {E}
  134.       begin
  135.        piano^.sr:=c+24;
  136.        vox_output(piano);
  137.       end;
  138.      'F': {F}
  139.       begin
  140.        piano^.sr:=c+30;
  141.        vox_output(piano);
  142.       end;
  143.      'T': {F# / Gb}
  144.      begin
  145.       piano^.sr:=c+35;
  146.       vox_output(piano);
  147.      end;
  148.      'G': {G}
  149.       begin
  150.        piano^.sr:=c+40;
  151.        vox_output(piano);
  152.       end;
  153.      'Y': {G# / Ab}
  154.      begin
  155.       piano^.sr:=c+44;
  156.       vox_output(piano);
  157.      end;
  158.      'H': {A}
  159.       begin
  160.        piano^.sr:=c+49;
  161.        vox_output(piano);
  162.       end;
  163.      'U': {A# / Bb}
  164.      begin
  165.       piano^.sr:=c+53;
  166.       vox_output(piano);
  167.      end;
  168.      'J': {B}
  169.       begin
  170.        piano^.sr:=c+56;
  171.        vox_output(piano);
  172.       end;
  173.      'K': {C}
  174.       begin
  175.        piano^.sr:=c+60;
  176.        vox_output(piano);
  177.       end;
  178.      'O': {C# / Db}
  179.      begin
  180.       piano^.sr:=c+63;
  181.       vox_output(piano);
  182.      end;
  183.      'L': {D}
  184.       begin
  185.        piano^.sr:=c+67;
  186.        vox_output(piano);
  187.       end;
  188.     #27:stop:=true;
  189.    end;
  190.   end;
  191.  end;
  192.  writeln;
  193.  vox_terminate;
  194. end.