home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D-,E+,F-,G-,I+,L-,N-,O-,R-,S-,V+,X-}
- {$M 3000,0,1008}
- {**************************************************************************
-
- VOCPDEMO
- Shows how to change the Sample Playback rate Real Time
-
- Date: 4/4/91
- Version: 1
-
- ***************************************************************************
-
- Copyright (c) 1991, Zackzon Labs.
-
- Author: Anthony Rumble
-
- ==========
- Addresses:
- ==========
- InterNet: c9106510@cc.newcastle.edu
- SIGNet: 28:2200/108
-
- Snail Mail:
- 32 Woolwich Rd.
- Hunters Hill, NSW, 2110
- Australia
-
- -------------------------------------------------------------------------
- HISTORY
- -------------------------------------------------------------------------
- 1.0 - Works fine so far
- *************************************************************************}
- program sbpiano;
-
- uses crt, sbvox, misc, sounds;
-
- const
- ver='1.0';
-
- type
- voc_hdr = record
- voctype:byte;
- blklen:array[1..3] of byte;
- sr:byte;
- pack:byte;
- end;
-
- var
- c:integer;
- version:integer;
- err:integer;
- ch:char;
- stop:boolean;
- status:word;
- piano:^voc_hdr;
- newsnd:pointer;
- extsnd:boolean;
-
- {****************************************************************************
- MAIN
- ----------------------------------------------------------------------------
- ****************************************************************************}
- begin
- extsnd:=false;
- clrscr;
- writeln(' Sound Blaster VocPDemo ',ver);
- writeln(' By Anthony Rumble');
- writeln(' Copyright (c) 1991. Zackzon Labs');
- writeln;
- stop:=false;
- {Get version Number}
- version := vox_get_version;
- writeln(' CT-VOICE Version ',hi(version),'.',lo(version));
- {Initialise the CT-VOICE driver}
- err := vox_initial;
- if err<>0 then
- begin
- case err of
- 1:writeln('Voice Card Fails');
- 2:writeln('I/O read/write faile');
- 3:writeln('Interupt for DMA fails');
- end;
- halt(1);
- end;
-
- {Setup the Status Variable}
- vox_status_addx(@status);
- {Starting Instrument}
- piano:=@elecpian;
-
- {set Middle C}
- c:=136;
-
- stop:=false;
- while not stop do
- begin
- if keypressed then
- begin
- vox_terminate;
- ch:=readkey;
- ch:=upcase(ch);
- case ch of
- #00:
- begin
- ch := readkey;
- case ch of
- #72:c:=c+1;
- #80:c:=c-1;
- #59:piano:=@elecpian;
- #60:piano:=@bassdiee;
- end;
- end;
- 'A': {Mid C}
- begin
- piano^.sr:=c;
- vox_output(piano);
- end;
- 'W': {C# / Db}
- begin
- piano^.sr:=c+8;
- vox_output(piano);
- end;
- 'S': {D}
- begin
- piano^.sr:=c+12;
- vox_output(piano);
- end;
- 'E': {D# / Eb}
- begin
- piano^.sr:=c+19;
- vox_output(piano);
- end;
- 'D': {E}
- begin
- piano^.sr:=c+24;
- vox_output(piano);
- end;
- 'F': {F}
- begin
- piano^.sr:=c+30;
- vox_output(piano);
- end;
- 'T': {F# / Gb}
- begin
- piano^.sr:=c+35;
- vox_output(piano);
- end;
- 'G': {G}
- begin
- piano^.sr:=c+40;
- vox_output(piano);
- end;
- 'Y': {G# / Ab}
- begin
- piano^.sr:=c+44;
- vox_output(piano);
- end;
- 'H': {A}
- begin
- piano^.sr:=c+49;
- vox_output(piano);
- end;
- 'U': {A# / Bb}
- begin
- piano^.sr:=c+53;
- vox_output(piano);
- end;
- 'J': {B}
- begin
- piano^.sr:=c+56;
- vox_output(piano);
- end;
- 'K': {C}
- begin
- piano^.sr:=c+60;
- vox_output(piano);
- end;
- 'O': {C# / Db}
- begin
- piano^.sr:=c+63;
- vox_output(piano);
- end;
- 'L': {D}
- begin
- piano^.sr:=c+67;
- vox_output(piano);
- end;
- #27:stop:=true;
- end;
- end;
- end;
- writeln;
- vox_terminate;
- end.