&dA &dA &d@ Program to look at how print records corrolate with &dA &d@ type of dynamic and type of note &dA #define F1 "op55n1\stage2\03\" #define F2 "op55n1\stage2\04\" #define F3 "op55n3\stage2\01\" #define F4 "op55n3\stage2\02\" #define F5 "op55n3\stage2\03\" #define F6 "op55n3\stage2\04\" #define F7 "op64n1\stage2\01\" str blib.80,tlib.80(7),file.100,rec.100,rec2.100 str temp.80,dyn.4(15),dstring.200 str note.4 str claves.7,numbers.10,accs.3,dynamic.5 int p1,p2,ssize,cline,clef,sugg int h,i,j int a1 int a,b,c,d,e int data(4000,7),dcnt table X(10000) blib = "c:\md\haydn\dover\quartets\" tlib(1) = blib // F1 tlib(2) = blib // F2 tlib(3) = blib // F3 tlib(4) = blib // F4 tlib(5) = blib // F5 tlib(6) = blib // F6 tlib(7) = blib // F7 claves = "CDEFGAB" numbers = "0123456789" accs = " #f" dyn(1) = "p" dyn(2) = "pp" dyn(3) = "ppp" dyn(4) = "pppp" dyn(5) = "f" dyn(6) = "ff" dyn(7) = "fff" dyn(8) = "ffff" dyn(9) = "mp" dyn(10) = "mf" dyn(11) = "fp" dyn(12) = "Zp" dyn(13) = "Z" dyn(14) = "Z" dyn(15) = "R" dstring = "" loop for i = 1 to 15 temp = dyn(i) // pad(5) dstring = dstring // temp repeat loop for p1 = 1 to 7 loop for p2 = 1 to 4 file = tlib(p1) // "0" // chs(p2) putc ~file open [1,1] file j = 0 loop for i = 1 to 10000 getf [1] rec if j = 0 rec = rec // pad(1) if rec{1} = "$" j = 1 tput [X,i] ~rec end else tput [X,i] ~rec end repeat eof1: close [1] ssize = i - 1 loop for i = 1 to ssize tget [X,i] rec rec = rec // pad(44) if rec{1} = "$" if rec con "C:" clef = int(rec{mpt+2..}) perform getcline end end if "ABCDEFG" con rec{1} if rec{32..43} con ['p','f','m','Z'] h = sub tget [X,i+1] rec2 rec2 = rec2 // pad(44) if rec2{1} = "P" temp = "C" // chs(h) // ":" if rec2 con temp d = mpt c = h + 1 loop while "pfmZ" con rec{c} ++c repeat dynamic = rec{h..c-1} note = rec{1,4} perform decodenote (a,b) a1 = 52 - a - cline if rec2{d..} con "Y" sugg = int(rec2{sub+1..}) ++dcnt data(dcnt,1) = a1 dynamic = dynamic // pad(5) if dstring con dynamic data(dcnt,2) = mpt - 1 / 5 + 1 end if "ud" con rec{23} data(dcnt,3) = mpt end if rec{17} = "w" data(dcnt,4) = 0 else data(dcnt,4) = 1 end if rec{26} <> " " data(dcnt,5) = 1 if "[]=" con rec{27} ++data(dcnt,5) end if "[]=" con rec{28} ++data(dcnt,5) end if "[]=" con rec{29} ++data(dcnt,5) end else data(dcnt,5) = 0 end if rec{32..43} con ['-','(',')','[',']','{','}'] data(dcnt,6) = 1 else data(dcnt,6) = 0 end data(dcnt,7) = sugg end end end end end repeat repeat repeat putc &dACASE 1: All stems up without slurs or ties&d@ putc loop for i = -20 to 20 a = 0 loop for j = 1 to dcnt if data(j,1) = i and data(j,3) = 1 and data(j,6) = 0 if a = 0 putc note position = ~i a = 1 end putc .w8 ~data(j,2) ~data(j,3) ~data(j,4) ~data(j,5) ~data(j,6) ~data(j,7) end repeat if a = 1 putc end repeat putc &dACASE 2: All stems down without beams&d@ putc loop for i = -20 to 20 a = 0 loop for j = 1 to dcnt if data(j,1) = i and data(j,3) = 2 and data(j,5) = 0 if a = 0 putc note position = ~i a = 1 end putc .w8 ~data(j,2) ~data(j,3) ~data(j,4) ~data(j,5) ~data(j,6) ~data(j,7) end repeat if a = 1 putc end repeat putc &dACASE 3: All whole notes without slurs or ties&d@ putc loop for i = -20 to 20 a = 0 loop for j = 1 to dcnt if data(j,1) = i and data(j,4) = 0 if a = 0 putc note position = ~i a = 1 end putc .w8 ~data(j,2) ~data(j,3) ~data(j,4) ~data(j,5) ~data(j,6) ~data(j,7) end repeat if a = 1 putc end repeat putc &dACASE 4: Stems up with slurs or ties&d@ putc loop for i = -20 to 20 a = 0 loop for j = 1 to dcnt if data(j,1) = i and data(j,3) = 1 and data(j,6) = 1 if a = 0 putc note position = ~i a = 1 end putc .w8 ~data(j,2) ~data(j,3) ~data(j,4) ~data(j,5) ~data(j,6) ~data(j,7) end repeat if a = 1 putc end repeat putc &dACASE 5: Stems down with beams&d@ putc loop for i = -20 to 20 a = 0 loop for j = 1 to dcnt if data(j,1) = i and data(j,3) = 2 and data(j,5) > 0 if a = 0 putc note position = ~i a = 1 end putc .w8 ~data(j,2) ~data(j,3) ~data(j,4) ~data(j,5) ~data(j,6) ~data(j,7) end repeat if a = 1 putc end repeat getc stop &dA &d@ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ &dA &d@³P 1a. decodenote (@c,@d) ³ &dA &d@³ ³ &dA &d@³ Input: note (string) ³ &dA &d@³ ³ &dA &d@³ Output: @c = clave number ³ &dA &d@³ 100 = rest ³ &dA &d@³ 200 = unprinted rest ³ &dA &d@³ ³ &dA &d@³ @d = &dAunmodified&d@ accidental flag ³ &dA &d@³ 0000 = no accidental ³ &dA &d@³ 0010 = sharp ³ &dA &d@³ 0011 = flat ³ &dA &d@³ 1010 = sharp sharp ³ &dA &d@³ 1111 = flat flat ³ &dA &d@³ ³ &dA &d@ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ procedure decodenote (@c,@d) int a,b int @c,@d if claves con note{1} a = mpt end @d = 0 loop for b = 2 to 4 if numbers con note{b} @c = mpt - 2 * 7 + a passback @c,@d return end @d <<= 2 if accs con note{b} @d = @d | mpt end repeat putc program error; can't decode note = ~note stop return &dA &d@ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ &dA &d@³P 27. getcline ³ &dA &d@³ ³ &dA &d@³ Purpose: Compute value cline from clef ³ &dA &d@³ ³ &dA &d@³ Inputs: clef = clef flag ³ &dA &d@³ ³ &dA &d@³ Outputs: cline = location of middle C ³ &dA &d@³ ³ &dA &d@ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ procedure getcline int g,h,i,k,m i = clef / 10 j = 6 - rem k = i / 3 h = rem m = j * 2 + 20 cline = h - 1 * 4 + m + g return run