home *** CD-ROM | disk | FTP | other *** search
- { FART.PAS - Demo of music and drum routines for Tandy 1000 and/or PCJr }
-
- uses noiz,drums;
- var j,k: integer;
-
- procedure down(a,b,c: integer);
- begin
- drums.down(a,b,c);
- quiet;
- end;
-
- procedure up(a,b,c: integer);
- begin
- drums.up(a,b,c);
- quiet;
- end;
-
- procedure crash(dur: integer);
- begin
- up(1,14,1);
- down(0,dur,1);
- end;
-
- procedure roll1;
- var i: integer;
- begin
- for i:=1 to 4 do down(0,2,1);
- for i:=1 to 4 do down(1,2,1);
- for i:=1 to 4 do down(2,2,1);
- for i:=1 to 4 do up(3,2,1);
- down(0,20,1);
- end;
-
- procedure roll2;
- var i: integer;
- begin
- for i:=1 to 4 do up(1,2,1);
- for i:=1 to 4 do down(2,2,1);
- for i:=1 to 4 do up(0,2,1);
- for i:=1 to 4 do down(0,3,1);
- up(0,20,1);
- end;
-
- procedure roll3;
- var i: integer;
- begin
- bass(2,4);
- lowtom(8,2); tom(8,2); snare(8,2);
- bass(2,4);
- snare(8,2); tom(8,2); lowtom(8,2);
- bass(8,2);
- down(0,20,1);
- end;
-
- procedure roll4;
- begin
- snare(8,2);
- lowtom(4,4); lowtom(4,2);
- tom(4,4); roto1(4,1);
- end;
-
- procedure filler(b: boolean);
- begin
- sound(e2); snare(2,8);
- sound(g2); snare(2,6);
- sound(a3); snare(4,2);
- sound(as2); lowtom(4,4);
- sound(b2); lowtom(4,2);
- sound(d2); tom(4,4);
- sound(b2); bass(4,2);
- sound(d2); snare(2,5);
- bend(d2,e2,40,12,1);
- if b then
- begin
- sound(e2);
- chord(e3,b3,e4,6,12);
- nosound;
- snare(2,2);
- end else
- snare(2,2);
- end;
-
- procedure lick1(reps,dur: integer);
- const
- eblues: array[1..8] of integer =
- (e3,fs3,g3,a4,as4,b4,d4,e4);
- var i,j: integer;
- begin
- if (reps <= 0) then exit;
- j:=1;
- for i:=1 to reps do
- begin
- j:=1;
- repeat
- plays(eblues[j],dur,0,9,0);
- inc(j);
- until j=9;
- bend(d4,e4,24,2,1);
- plays(g4,20,10,0,0);
- bend(e4,d4,24,2,1);
- quiet;
- end;
- end;
-
- procedure guitar_solo;
- begin
- sound(e2);
- chord(e3,b3,e4,15,25); quiet;
- scale2(e3,g3,a4,as4,b4,d4,ds4,e4,10,2,9,0);
- crash(2); crash(5);
- sound(as2);
- chord(as4,f4,as5,15,25); quiet;
- bend(d5,e5,40,0,3);
- plays(e5,50,0,10,0);
- scale2(g5,e5,d5,b5,g5,e5,d5,b5,25,5,0,0);
- scale2(g5,e5,d5,b5,as5,a5,g4,e4,25,5,0,0);
- bend(d5,e5,40,0,3); plays(g5,50,0,0,0);
- bend(e5,d5,40,4,1); plays(b5,50,0,0,0);
- bend(g5,a6,20,0,3);
- scale2(b6,as6,a6,g5,b6,as6,a6,g5,10,10,0,0);
- bend(d5,e5,20,5,1);
- scale2(g5,e5,d5,b5,as5,a5,g4,e4,0,7,7,0);
- crash(2); crash(6);
- sound(e2);
- echo(40,long);
- chord(e3,b3,e4,1,30);
- down(2,15,1);
- end;
-
- procedure ending;
- begin
- up(1,25,1);
- sound(as2); chord(as4,f4,as5,27,25);
- up(0,25,1);
- sound(c2); chord(g3,c4,g4,27,10);
- up(2,46,1);
- sound(e1); chord(e3,b4,e4,27,15);
- up(1,5,1); down(2,50,1); quiet; halt;
- end;
-
- procedure beat1(reps: integer);
- var i,mode,counter: integer;
- label tg;
- begin
- k:=0; mode:=0;
- up(2,50,1); filler(true);
- Tg:
- case mode of
- 0:;
- 1: sound(e3);
- 2: sound(b3);
- 3: begin
- sound(a2); mode:=0;
- end;
- end;
- inc(mode);
- down(2,8,1);
- if (i = 2) then
- begin
- if (k in [12,16,20,24,28,32,36]) then
- begin
- case k of
- 12: begin
- sound(g2);
- chord(g2,c3,g4,1,12);
- down(2,15,1);
- end;
- 16: begin
- sound(d2);
- chord(d3,a4,c4,1,5);
- down(2,15,1);
- end;
- 20: begin
- filler(false);
- sound(e2);
- chord(e3,b3,e4,1,12);
- down(2,15,1);
- end;
- 24: begin
- sound(e2); lick1(1,12);
- sound(e2);
- chord(e3,b3,e4,1,30);
- down(2,15,1);
- end;
- 28: begin
- sound(as2);
- chord(as4,f4,as5,1,25);
- down(2,15,1);
- end;
- 32: guitar_solo;
- 36: begin
- sound(as2);
- chord(as4,f4,as5,1,25);
- down(2,15,1);
- k:=0;
- end;
- end;
- end else
- begin
- nosound;
- sound(e2);
- chord(e3,b3,e4,1,12);
- down(2,15,1);
- end;
- end;
- j:=0; i:=0;
- for counter:=1 to reps do
- begin
- if ((keyhit) and (fkey=#3)) then ending;
- inc(i); inc(j); inc(k);
- down(0,5,1);
- wait(50);
- if j=2 then
- begin
- up(1,5,1); j:=11; i:=0;
- end;
- if (i = 2) then goto tg;
- down(0,3,1);
- down(2,8,1);
- down(2,8,1);
- end;
- roll1; crash(15);
- end;
-
- begin
- drums.inturbo:=false; noiz.inturbo:=false;
- roll3; roll2; roll1;
- writeln('Hit Crtl-C to End');
- beat1(8);
- end.