COMMENT Piano range extended to "93 keys" {g0 through ef8}. Stereo out {p13},
COMMENT with lowest notes on right channel, highest tones on left channel.
COMMENT Only fragments of some input soundfiles used {duty factor} to produce
COMMENT staccato tones near beginning.

< **** 44.1k PIANO functions  ********
*f1 0 0 -1  "/sflib/kb/pn1.bf0.wav" 0 0 0;  < dur = 3.97
*f2 0 0 -1  "/sflib/kb/pn1.d1.wav" 0 0 0;  < dur = 3.94
*f3 0 0 -1  "/sflib/kb/pn1.g1.wav" 0 0 0;  < dur = 3.48
*f4 0 0 -1  "/sflib/kb/pn1.c2.wav" 0 0 0;  < dur = 4.06
*f5 0 0 -1  "/sflib/kb/pn1.f2.wav" 0 0 0;  < dur = 3.46
*f6 0 0 -1  "/sflib/kb/pn1.bf2.wav" 0 0 0;  < dur = 3.72
*f7 0 0 -1  "/sflib/kb/pn1.ef3.wav" 0 0 0;  < dur = 3.4
*f8 0 0 -1  "/sflib/kb/pn1.af3.wav" 0 0 0;  < dur = 3.16
*f9 0 0 -1  "/sflib/kb/pn1.cs4.wav" 0 0 0;  < dur = 2.54
*f10 0 0 -1  "/sflib/kb/pn1.fs4.wav" 0 0 0;  < dur = 3.56
*f11 0 0 -1  "/sflib/kb/pn1.b4.wav" 0 0 0;  < dur =  3.91
*f12 0 0 -1  "/sflib/kb/pn1.e5.wav" 0 0 0;  < dur = 3.29
*f13 0 0 -1  "/sflib/kb/pn1.a5.wav" 0 0 0;  < dur = 2.2
*f14 0 0 -1  "/sflib/kb/pn1.d6.wav" 0 0 0;  < dur = 1.84
*f15 0 0 -1  "/sflib/kb/pn1.g6.wav" 0 0 0;  < dur = 1.8
*f16 0 0 -1  "/sflib/kb/pn1.c7.wav" 0 0 0;  < dur = 1.33
*f17 0 0 -1  "/sflib/kb/pn1.ef7.wav" 0 0 0;  < dur = 1.07
*f18 0 0 -1  "/sflib/kb/pn1.fs7.wav" 0 0 0;  < dur = 1.31
*f19 0 0 -1  "/sflib/kb/pn1.a7.wav" 0 0 0;  < dur = 1.03
*f20 0 0 -1  "/sflib/kb/pn1.c8.wav" 0 0 0;  < dur = 1.04
 
   <; f99 = gen1 funcs & midi note split pts
*f99 0 128 -17 0 1 24 2 29 3 34 4 39 5 43 6 49 7 54 8 59 9 64 10 69 11
 74 12 79 13 84 14 89 15 94 16 98 17 100 18 104 19 107 20;
   <; f98 = midi note nums of samples
*f98 0  32  -2 0 22 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96
 99 102 105 108;
  < ----   End of PN {piano}  functions   -----
<   Score file for Library algorithm  ### samp ###
* f100 0 1024 10 1.;      < SINE WAVE for vibrato

ifdef([DETUNE],,define([DETUNE],0))dnl
ifdef([START],,define([START],0.000))dnl
ampfac 1;
define(CHORUSLOOP,[

te 76;
SAMP  START 8.0; 
rd .018;
p3 rh 16*8/ -4/    400/16/8/16*7/ -4/     16*6;
du nu 12./ .85*3/  100.06*3/300.6// 302.*2/301.5/ 100.06*3/ 301.*4/302*6;
   < p4 = output PITCH : (1) 1. - 13. = pch {notes} ;
   <  (2)  14 - 127 =  MIDI note  number ;  (3) negative = cps {herz}
p4  no d1/a/e2/b/fs3/cs4/gs/ds5//  fs6/b5/g0/c5/a/ef6/af/cs7/bf/ef7//
   df6/c8/d/ef/b7/bf6;
   < p5= AMPLITUDE : (1) .001 - 10 = multplier for input soundfile amplitude
   <   (2) 11 - 32767  new integer amplitude value : Default = 1.
p5 mx 2. 7000 17000/1. 0/3. 17000 12000 7000/1.25 9000 20000/ .75 18000 8000;
   < p6 = detuning : 1. = 1/2 step up, -1. = 1/2 step down : Default = 0
p6   DETUNE;
  < ------ INPUT SOUNDFILE function number {p7} & pitch {p8}  ------------
  < If p7 & p8 left blank, these values derived from function tables 99 & 98
p7                                             < input soundfile func num 
   < p8 = base PITCH of soundfile : (1) 1. - 13. = pch {notes} ;
   <  (2)  14 - 127 =  MIDI note  number ;  (3) negative = cps {herz}
p8       
 < p9 { optional} =  duration of input soundfile to be used 
 < Default  = entire soundfile  ; has no effect if looping used {if p10 != 0}
p9 

< ------Sustain LOOPING  {p10 - 11} : ---------------------------------
  < p10 = loop mode: 0 = no looping, 1 = forward, 2 = forward & backward
p10                      
  < p11 = loop begin point, in samples
p11                        
  < p12 = loop end point, in samples
p12    

  < p13 = spatial placement for mono in, stereo out {nchnls = 2}
  < 0 = hard left, 1. = hard right
  < flag  options :
  <   -1 : the lower the pitch, the further the placement to the left
  <  -2 : the lower the pitch, the further the placement to the right
  <  -3 : random initial placement followed by random moving pan
  <  -4 : random initial placement followed by quasi-periodic  moving pan
  < -5  : no action taken : user supplies own stereo processing of mono signal a1
p13   -2;   

  < ------- NEW AMPLITUDE ENVELOPE {p14 - p16} {optional} ------------
  <  if p14 + p15 = 0, no new envelope created
  < p14 = rise time { > 100 , or negative, = % p3} : Default = 0
p14      
   < p15 = decay time { > 100 , or negative, = % p3} : Default = 0
p15  1. .04 .055;
  < p16 = optional "atss" amplitude multiplier for end of note : Default = 1.
  < normal range = ca. .1 - .9 {diminuendo} or 1.1 - 2. {crescendo}
p16  1. .95 .6;

   < ----- BRIGHTNESS {p17-p20}  {optional} --------------------
 < p17 = opening brightness: Range = .001 {mellowest} - 2.{brightest} : Def. = 1.
p17       
   < p18 = closing brightness { same range as p17; Default  = p17 }
p18      
   < p19 = time between p17 & p18: 0 = p3, > 100 or negative = % p3 : Def. = p3
p19     
 < p20 = optional center freq. for filters : pch or cps : Default = p4 pitch
p20     

  <  Added user p-fields: 
end;  <<< End of ### samp ### score >>>
])dnl
CHORUSLOOP
