/* ----- def_hd2 ------- */ void def_hd2 (FILE *fp) { float p[14][2] = { {8.0, 0.0}, {8.0, 8.5}, {-8.0, 8.5}, {-8.0, 0.0}, {-8.0, -8.5}, {8.0, -8.5}, {8.0, 0.0}, {7.0, 0.0}, {7.0, -4.0}, {-7.0, -4.0}, {-7.0, 0.0}, {-7.0, 4.0}, {7.0, 4.0}, {7.0, 0.0} }; /* float phi; */ float c,s,xx,yy,f1,f2; int i; /*phi=0.5; c=cos(phi); s=sin(phi); */ c=0.878; s=0.479; for (i=0;i<14;i++) { xx = c*p[i][0] - s*p[i][1]; yy = s*p[i][0] + c*p[i][1]; p[i][0]=xx; p[i][1]=yy; } f1=f2=6.0/12.0; fprintf (fp, "\n/Hd { %% x y Hd - open head for half\n" " dup /y exch def exch dup /x exch def exch moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); add_mv (fp,f1,f2,p,7); add_cv (fp,f1,f2,p,8,2); fprintf (fp, " fill\n} bind def\n"); }
/* ----- def_flags2 ------- */ void def_flags2 (FILE *fp) { float p[13][2] = { {0.0, 0.0}, {2.0, -5.0}, {9.0, -6.0}, {7.5, -18.0}, {7.5, -9.0}, {1.5, -6.5}, {0.0, -6.5}, {2.0, -14.0}, {9.0, -14.0}, {7.5, -26.0}, {7.5, -17.0}, {1.5, -14.5}, {0.0, -14.0}, }; float f1,f2; int i; f1=f2=6.0/9.0; /* up flags */ fprintf (fp, "\n/f2u { %% len f2u - double flag up\n" " y add x %.1f add exch moveto\n", STEM_XOFF); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,4); fprintf (fp, " fill\n} bind def\n"); f1=1.2*f1; /* down flags */ for (i=0;i<13;i++) p[i][1]=-p[i][1]; fprintf (fp, "\n/f2d { %% len f2d - double flag down\n" " neg y add x %.1f sub exch moveto\n", STEM_XOFF); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,4); fprintf (fp, " fill\n} bind def\n"); }
/* ----- def_flags1 ------- */ void def_flags1 (FILE *fp) { float p[13][2] = { {0.0, 0.0}, {1.5, -3.0}, {1.0, -2.5}, {4.0, -6.0}, {9.0, -10.0}, {9.0, -16.0}, {8.0, -20.0}, {7.0, -24.0}, {4.0, -26.0}, {6.5, -21.5}, {9.0, -15.0}, {4.0, -9.0}, {0.0, -8.0} } ; float f1,f2; int i; f1=f2=6.0/9.0; fprintf (fp, "\n/f1u { %% len f1u - single flag up\n" " y add x %.1f add exch moveto\n", STEM_XOFF); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,4); fprintf (fp, " fill\n} bind def\n"); f1=1.2*f1; for (i=0;i<13;i++) p[i][1]=-p[i][1]; fprintf (fp, "\n/f1d { %% len f1d - single flag down\n" " neg y add x %.1f sub exch moveto\n", STEM_XOFF); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,4); fprintf (fp, " fill\n} bind def\n"); }
/* ----- def_hd3 ------- */ void def_hd3 (FILE *fp) { float p[13][2] = { {11.0, 0.0}, {11.0, 2.0}, {6.0, 6.5}, {0.0, 6.5}, {-6.0, 6.5}, {-11.0, 2.0}, {-11.0, 0.0}, {-11.0, -2.0}, {-6.0, -6.5}, {0.0, -6.5}, {6.0, -6.5}, {11.0, -2.0}, {11.0, 0.0} }; float q[8][2] = { {11.0, 0.0}, {5.0, 0.0}, {5.0, -5.0}, {-5.0, -5.0}, {-5.0, 0.0}, {-5.0, 5.0}, {5.0, 5.0}, {5.0, 0.0}}; /* float phi; */ float c,s,xx,yy,f1,f2; int i; /*phi=2.5; c=cos(phi); s=sin(phi); */ c=-0.801; s=0.598; for (i=1;i<8;i++) { xx = c*q[i][0] - s*q[i][1]; yy = s*q[i][0] + c*q[i][1]; q[i][0]=xx; q[i][1]=yy; } f1=f2=6.5/12.0; fprintf (fp, "\n/HD { %% x y HD - open head for whole\n" " dup /y exch def exch dup /x exch def exch moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,4); add_mv (fp,f1,f2,q,1); add_cv (fp,f1,f2,q,2,2); fprintf (fp, " fill\n} bind def\n"); /* brevis (round and square) and longa */ fprintf (fp, "\n/HDD { %% x y HDD - double note\n" " HD\n" " x y moveto -6 -4 rmoveto 0 8 rlineto stroke\n" " x y moveto 6 -4 rmoveto 0 8 rlineto stroke\n" "} bind def\n"); fprintf (fp, "\n/brevis { %% x y brevis - square brevis\n" " 2 copy /y exch def /x exch def moveto\n" " 2.5 setlinewidth -6 -2.7 rmoveto 12 0 rlineto\n" " 0 5.4 rmoveto -12 0 rlineto stroke\n" " 0.8 setlinewidth x y moveto -6 -5 rmoveto 0 10 rlineto\n" " x y moveto 6 -5 rmoveto 0 10 rlineto stroke\n" "} bind def\n"); fprintf (fp, "\n/longa { %% x y longa\n" " brevis x y moveto 6 -10 rmoveto 0 15 rlineto stroke\n" "} bind def\n"); }
/* ----- def_hd1 ------- */ void def_hd1 (FILE *fp) { float p[7][2] = { {8.0, 0.0}, {8.0, 8.0}, {-8.0, 8.0}, {-8.0, 0.0}, {-8.0, -8.0}, {8.0, -8.0}, {8.0, 0.0} }; float c,s,xx,yy,f1,f2; int i; /*float phi; */ /*phi=0.6; c=cos(phi); s=sin(phi); */ c=0.825; s=0.565; for (i=0;i<7;i++) { xx = c*p[i][0] - s*p[i][1]; yy = s*p[i][0] + c*p[i][1]; p[i][0]=xx; p[i][1]=yy; } f1=f2=6.0/12.0; fprintf (fp, "\n/hd { %% x y hd - full head\n" " dup /y exch def exch dup /x exch def exch moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill\n} bind def\n"); }
/* ----- def_gclef ------- */ void def_gclef (FILE *fp) { float p[71][2]={ {-6, 16}, {-8, 13}, {-14, 19}, {-10, 35}, {2, 35}, {8, 37}, {21, 30}, {21, 17}, {21, 5}, {10, -1}, {0, -1}, {-12, -1}, {-23, 5}, {-23, 22}, {-23, 29}, {-22, 37}, {-7, 49}, {10, 61}, {10, 68}, {10, 73}, {10, 78}, {9, 82}, {7, 82}, {2, 78}, {-2, 68}, {-2, 62}, {-2, 25}, {10, 18}, {11, -8}, {11, -18}, {5, -23}, {-4, -23}, {-10, -23}, {-15, -18}, {-15, -13}, {-15, -8}, {-12, -4}, {-7, -4}, {3, -4}, {3, -20}, {-6, -17}, {-5, -23}, {9, -20}, {9, -9}, {7, 24}, {-5, 30}, {-5, 67}, {-5, 78}, {-2, 87}, {7, 91}, {13, 87}, {18, 80}, {17, 73}, {17, 62}, {10, 54}, {1, 45}, {-5, 38}, {-15, 33}, {-15, 19}, {-15, 7}, {-8, 1}, {0, 1}, {8, 1}, {15, 6}, {15, 14}, {15, 23}, {7, 26}, {2, 26}, {-5, 26}, {-9, 21}, {-6, 16} }; float f1,f2; f1 = f2 = 24.0/65.0; fprintf (fp, "\n/gclef { %% x n gclef - G clef on line n\n" " 2 sub 6 mul moveto\n"); /*shift to line n*/ add_mv (fp,f1,f2,p,0); add_sg (fp,f1,f2,p,1,1); add_cv (fp,f1,f2,p,2,23); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/sgclef {\n" " 0.85 div exch 0.85 div exch" /*compensate scale*/ " gsave 0.85 0.85 scale gclef grestore\n" "} bind def\n"); }
/* ----- def_csig ------- */ void def_csg (FILE *fp) { float p[25][2]={ {0,26}, {4,26}, {11,23}, {11,14}, {11,20}, {5,19}, {5,14}, {5,9}, {12,9}, {12,15}, {12,25}, {6,28}, {0,28}, {-15,28}, {-25,17}, {-25,2}, {-25,-10}, {-10,-28}, {11,-8}, {-6,-20}, {-18,-11}, {-18,2}, {-18,14}, {-14,26}, {0,26} }; float f1,f2; int i; for (i=0;i<25;i++) { p[i][0]=p[i][0]+4; p[i][1]=p[i][1]+43; } f1 = f2 = 0.25; fprintf (fp, "\n/csig { %% x csig - C timesig \n" " 0 moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,8); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/ctsig { %% x ctsig - C| timesig \n" " dup csig 4 moveto 0 16 rlineto stroke\n" "} bind def\n"); }
/* ----- def_deco1 ------- */ void def_deco1 (FILE *fp) { float p[8][2] = { /* for hold sign */ {-15,0},{-15,23},{15,23},{15,0}, {14.5,0},{12,18},{-12,18},{-14.5,0} }; float q[8][2] = { /* for down bow sign */ {-4,0},{-4,9},{4,9},{4,0}, {-4,6},{-4,9},{4,9},{4,6} }; float r[3][2] = { /* for up bow sign */ {-3.2,11},{0,0},{3.2,11} }; float f1,f2; f1=f2=0.5; fprintf (fp, "\n/hld { %% x y hld - hold sign\n" " 2 copy moveto 2 copy 1.5 add 1.3 0 360 arc moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,1); add_sg (fp,f1,f2,p,4,1); add_cv (fp,f1,f2,p,5,1); fprintf (fp, " fill\n} bind def\n"); f1=f2=0.8; fprintf (fp, "\n/dnb { %% x y dnb - down bow\n" " moveto\n"); add_mv (fp,f1,f2,q,0); add_sg (fp,f1,f2,q,1,3); fprintf (fp, " currentpoint stroke moveto\n"); add_mv (fp,f1,f2,q,4); add_sg (fp,f1,f2,q,5,3); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/upb { %% x y upb - up bow\n" " moveto\n"); add_mv (fp,f1,f2,r,0); add_sg (fp,f1,f2,r,1,2); fprintf (fp, " stroke\n} bind def\n"); fprintf (fp, "\n/brth { %% x y brth - breath mark\n" " gsave 0.8 setlinewidth\n" " moveto -1 -3 rmoveto 2 7 rlineto stroke grestore\n" "} bind def\n"); }
uint32_t Ppc405Iss::do_addi( uint32_t opl, uint32_t opr, uint32_t ca, bool need_ca ) { bool cout, vout; uint32_t tmp = add_cv(opl, opr, ca, cout, vout); r_gp[m_ins.d.rd] = tmp; if ( need_ca ) caSet( cout ); return tmp; }
/* ----- def_brace ------- */ void def_brace (FILE *fp) { float p[8][2]={ {7.2,60}, {-7,39}, {17,17}, {-1,0}, {-1.4,0}, {13,13}, {-11,39}, {7,60} }; float q[8][2]={ {-3,0}, {2,0}, {4,1}, {5.5,5}, {5.9,4.7}, {4.7,1.2}, {3.2,-.4}, {-1,-1.2} }; float f1,f2; f1 = 0.9; f2 = 1.0; fprintf (fp, "\n/bracehalf {\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,1); add_sg (fp,f1,f2,p,4,1); add_cv (fp,f1,f2,p,5,1); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/brace { %% scale x0 y0 brace\n" " 3 copy moveto gsave 1 exch scale bracehalf grestore\n" " moveto gsave neg 1 exch scale bracehalf grestore\n" "} bind def\n"); f1 = 1.0; f2 = 1.0; fprintf (fp, "\n/brackhead {\n"); add_mv (fp,f1,f2,q,0); add_cv (fp,f1,f2,q,1,1); add_sg (fp,f1,f2,q,4,1); add_cv (fp,f1,f2,q,5,1); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/bracket { %% h x0 y0 bracket\n" " 3 copy moveto 0 exch rmoveto brackhead\n" " 3 copy moveto pop gsave 1 -1 scale brackhead grestore \n" " moveto -3 0 rlineto 0 exch rlineto 3 0 rlineto fill\n" "} bind def \n"); }
/* ----- def_fclef ------- */ void def_fclef (FILE *fp) { float p[42][2]={ {-2.3,3}, {6,7}, {10.5,12}, {10.5,16}, {10.5,20.5}, {8.5,23.5}, {6.2,23.3}, {5.2,23.5}, {2,23.5}, {0.5,19.5}, {2,20}, {4,19.5}, {4,18}, {4,17}, {3.5,16}, {2,16}, {1,16}, {0,16.9}, {0,18.5}, {0,21}, {2.1,24}, {6,24}, {10,24}, {13.5,21.5}, {13.5,16.5}, {13.5,11}, {7,5.5}, {-2.0,2.8}, {14.9,21}, {14.9,22.5}, {16.9,22.5}, {16.9,21}, {16.9,19.5}, {14.9,19.5}, {14.9,21}, {14.9,15}, {14.9,16.5}, {16.9,16.5}, {16.9,15}, {16.9,13.5}, {14.9,13.5}, {14.9,15} }; int i; float f1,f2; for (i=0;i<42;i++) {p[i][0]-=7.5; p[i][1]-=0.5; } f1 = f2 = 1.0; fprintf (fp, "\n/fclef { %% x n fclef - F clef on line n\n" " 4 sub 6 mul moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,9); add_cv (fp,f1,f2,p,1,9); add_mv (fp,f1,f2,p,28); add_cv (fp,f1,f2,p,29,2); add_mv (fp,f1,f2,p,25); add_cv (fp,f1,f2,p,36,2); fprintf (fp, "fill\n} bind def\n"); fprintf (fp, "\n/sfclef {\n" " 0.85 div exch 0.85 div exch" /*compensate scale*/ " gsave 0.85 0.85 scale fclef grestore\n" "} bind def\n"); }
/* ----- def_xflags ------- */ void def_xflags (FILE *fp) { float p[7][2] = { {0.0, 0.0}, {2.0, -7.5}, {9.0, -7.5}, {7.5, -19.5}, {7.5, -10.5}, {1.5, -8.0}, {0.0, -7.5} }; float f1,f2; int i; f1=f2=6.0/9.0; /* extra up flag */ fprintf (fp, "\n/xfu { %% len xfu - extra flag up\n" " y add x %.1f add exch moveto\n", STEM_XOFF); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill\n} bind def\n"); f1=1.2*f1; /* extra down flag */ for (i=0;i<7;i++) p[i][1]=-p[i][1]; fprintf (fp, "\n/xfd { %% len xfd - extra flag down\n" " neg y add x %.1f sub exch moveto\n", STEM_XOFF); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/f3d {dup f2d 9.5 sub xfd} bind def\n"); fprintf (fp, "\n/f4d {dup dup f2d 9.5 sub xfd 14.7 sub xfd} bind def\n"); fprintf (fp, "\n/f3u {dup f2u 9.5 sub xfu} bind def\n"); fprintf (fp, "\n/f4u {dup dup f2u 9.5 sub xfu 14.7 sub xfu} bind def\n"); }
void Ppc405Iss::do_add( uint32_t opl, uint32_t opr, uint32_t ca, bool need_ca ) { bool cout, vout; uint32_t tmp = add_cv(opl, opr, ca, cout, vout); r_gp[m_ins.xo.rd] = tmp; if ( need_ca ) caSet( cout ); if ( m_ins.xo.oe ) ovSet( vout ); if ( m_ins.xo.rc ) crSetSigned( 0, tmp, 0 ); }
/* ----- def_cclef ------- */ void def_cclef (FILE *fp) { float p[30][2]={ {0,0}, {2,5.5}, {9,4.5}, {12,10}, {12,15.5}, {12,19.5}, {11,23.3}, {6.5,23.5}, {5.2,23.5}, {2,23.5}, {0.5,19.5}, {2,20}, {4,19.5}, {4,18}, {4,17}, {3.5,16}, {2,16}, {1,16}, {0,16.9}, {0,18.5}, {0,21}, {2.1,24}, {6,24}, {12,24}, {15,21.5}, {15,16.5}, {15,10}, {10,4.5}, {4,5}, {3,0} }; int i; float f1,f2; for (i=0;i<30;i++) p[i][1]+=24; f1 = 0.6; f2 = 0.5; fprintf (fp, "\n/cchalf {\n" " 0 moveto\n"); add_mv (fp,f1,f2,p,0); add_sg (fp,f1,f2,p,1,1); add_cv (fp,f1,f2,p,2,9); add_sg (fp,f1,f2,p,29,1); fprintf (fp, "fill\n} bind def\n"); fprintf (fp, "\n/cclef { %% x n cclef - C clef on line n\n" " gsave 0 exch 3 sub 6 mul translate\n" " dup dup dup\n" " cchalf 0 24 translate 1 -1 scale cchalf\n" " 6.5 sub 0 moveto 0 24 rlineto 3 0 rlineto 0 -24 rlineto fill\n" " 1.8 sub 0 moveto 0 24 rlineto 0.8 setlinewidth stroke grestore \n" "} bind def\n"); fprintf (fp, "\n/scclef { cclef } bind def\n"); }
/* ----- def_gnote ------- */ void def_gnote (FILE *fp) { /* parameter for filled head */ float p[7][2] = { {0,10}, {16,10}, {16,-10}, {0,-10}, {-16,-10}, {-16,10}, {0,10} }; /* parameter for half note head */ float ph[14][2] = { {8.0, 0.0}, {8.0, 8.5}, {-8.0, 8.5}, {-8.0, 0.0}, {-8.0, -8.5}, {8.0, -8.5}, {8.0, 0.0}, {7.0, 0.0}, {7.0, -4.0}, {-7.0, -4.0}, {-7.0, 0.0}, {-7.0, 4.0}, {7.0, 4.0}, {7.0, 0.0} }; /* parameter for whole note head */ float pw[13][2] = { {11.0, 0.0}, {11.0, 2.0}, {6.0, 6.5}, {0.0, 6.5}, {-6.0, 6.5}, {-11.0, 2.0}, {-11.0, 0.0}, {-11.0, -2.0}, {-6.0, -6.5}, {0.0, -6.5}, {6.0, -6.5}, {11.0, -2.0}, {11.0, 0.0} }; float qw[8][2] = { {11.0, 0.0}, {5.0, 0.0}, {5.0, -5.0}, {-5.0, -5.0}, {-5.0, 0.0}, {-5.0, 5.0}, {5.0, 5.0}, {5.0, 0.0}}; /* float phi; */ float c,s,xx,yy,f1,f2,fh,fw; int i; /*phi=0.7; c=cos(phi); s=sin(phi); */ c=0.765; s=0.644; for (i=0;i<7;i++) { xx = c*p[i][0] - s*p[i][1]; yy = s*p[i][0] + c*p[i][1]; p[i][0]=xx; p[i][1]=yy; } for (i=0;i<14;i++) { xx = c*ph[i][0] - s*ph[i][1]; yy = s*ph[i][0] + c*ph[i][1]; ph[i][0]=xx; ph[i][1]=yy; } c=-0.801; s=0.598; for (i=1;i<8;i++) { xx = c*qw[i][0] - s*qw[i][1]; yy = s*qw[i][0] + c*qw[i][1]; qw[i][0]=xx; qw[i][1]=yy; } f1=f2=2./10.0; fprintf (fp, "\n/gn16 { %% x y l gn16 - single sixteenth grace note\n" " 3 1 roll 2 copy moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill moveto %.2f 0 rmoveto 0 exch rlineto currentpoint\n" " 3 -4 4 -5 3 -8 rcurveto -5 2 rmoveto stroke\n" " 3.4 sub moveto\n" " 3 -4 4 -5 2 -8 rcurveto -5 2 rmoveto stroke\n", GSTEM_XOFF); fprintf (fp, "} bind def\n"); fprintf (fp, "\n/gn8 { %% x y l gn8 - single eighth grace note\n" " 3 1 roll 2 copy moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill moveto %.2f 0 rmoveto 0 exch rlineto\n" "3 -4 4 -5 2 -8 rcurveto -5 2 rmoveto\n" "stroke\n", GSTEM_XOFF); fprintf (fp, "} bind def\n"); fprintf (fp, "\n/gn8s { %% x y l gn8s - single eighth grace note with stroke\n" " 3 1 roll 2 copy moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill moveto %.2f 0 rmoveto 0 exch rlineto\n" "3 -4 4 -5 2 -8 rcurveto -5 2 rmoveto 7 4 rlineto\n" "stroke\n", GSTEM_XOFF); fprintf (fp, "} bind def\n"); fprintf (fp, "\n/gnt { %% x y l gnt - grace note without flag\n" " 3 1 roll 2 copy moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill moveto %.2f 0 rmoveto 0 exch rlineto stroke\n", GSTEM_XOFF); fprintf (fp, "} bind def\n"); fprintf (fp, "\n/gn2 { %% x y l gn2 - grace half note\n" " 3 1 roll 2 copy moveto\n"); fh=8.0/25.0; add_mv (fp,fh,fh,ph,0); add_cv (fp,fh,fh,ph,1,2); add_mv (fp,fh,fh,ph,7); add_cv (fp,fh,fh,ph,8,2); fprintf (fp, " fill moveto %.2f 0 rmoveto 0 exch rlineto stroke\n", GSTEM_XOFF); fprintf (fp, "} bind def\n"); fprintf (fp, "\n/gn1 { %% x y gn1 - whole grace note\n" " 2 copy moveto\n"); fw=9.0/25.0; add_mv (fp,fw,fw,pw,0); add_cv (fp,fw,fw,pw,1,4); add_mv (fp,fw,fw,qw,1); add_cv (fp,fw,fw,qw,2,2); fprintf (fp, " fill\n"); fprintf (fp, "} bind def\n"); fprintf(fp, "\n/gbm1 { %% x1 y1 x2 y2 gbm1 - single note beam\n" " gsave 1.4 setlinewidth\n" " 0.5 sub moveto 0.5 sub lineto stroke grestore\n" "} bind def\n"); fprintf(fp, "\n/gbm2 { %% x1 y1 x2 y2 gbm2 - double note beam\n" " gsave 1.4 setlinewidth\n" " 4 copy 0.5 sub moveto 0.5 sub lineto stroke\n" " 3.4 sub moveto 3.4 sub lineto stroke grestore\n" "} bind def\n"); fprintf(fp, "\n/gbm3 { %% x1 y1 x2 y2 gbm3 - triple gnote beam\n" " gsave 1.2 setlinewidth\n" " 4 copy 0.3 sub moveto 0.3 sub lineto stroke\n" " 4 copy 2.5 sub moveto 2.5 sub lineto stroke\n" " 4.7 sub moveto 4.7 sub lineto stroke grestore\n" "} bind def\n"); fprintf(fp, "\n/ghl { %% x y ghl - grace note ledger line\n" " gsave 0.7 setlinewidth moveto \n" " -3 0 rmoveto 6 0 rlineto stroke grestore\n" "} bind def\n"); fprintf(fp, "\n/gsl { %% x1 y2 x2 y2 x3 y3 x0 y0 gsl\n" " moveto curveto stroke\n" "} bind def\n"); fprintf(fp, "\n/gsh0 { %% x y gsh0\n" "gsave translate 0.7 0.7 scale 0 0 sh0 grestore\n" "} bind def\n"); fprintf(fp, "\n/gft0 { %% x y gft0\n" "gsave translate 0.7 0.7 scale 0 0 ft0 grestore\n" "} bind def\n"); fprintf(fp, "\n/gnt0 { %% x y gnt0\n" "gsave translate 0.7 0.7 scale 0 0 nt0 grestore\n" "} bind def\n"); fprintf(fp, "\n/gdf0 { %% x y gdf0\n" "gsave translate 0.7 0.6 scale 0 0 dft0 grestore\n" "} bind def\n"); fprintf(fp, "\n/gds0 { %% x y gds0\n" "gsave translate 0.7 0.7 scale 0 0 dsh0 grestore\n" "} bind def\n"); }
/* ----- def_rests ------- */ void def_rests (FILE *fp) { float p[14][2]={ {-1,17}, {15,4}, {-6,8}, {6.5,-5}, {-2,-2}, {-5,-11}, {1,-15}, {-9,-11}, {-6,0}, {1,-1}, {-9,7}, {7,5}, {-1,17} }; float q[16][2]={ {8,14}, {5,9}, {3,5}, {-1.5,4}, {4,11}, {-9,14}, {-9,7}, {-9,4}, {-6,2}, {-3,2}, {4,2}, {5,7}, {7,11}, {-1.8,-20}, {-0.5,-20}, {8.5,14}}; float r[29][2]={ {8,14}, {5,9}, {3,5}, {-1.5,4}, {4,11}, {-9,14}, {-9,7}, {-9,4}, {-6,2}, {-3,2}, {4,2}, {5,7}, {7,11}, {8,14}, {5,9}, {3,5}, {-1.5,4}, {4,11}, {-9,14}, {-9,7}, {-9,4}, {-6,2}, {-3,2}, {4,2}, {5,7}, {7.3,11}, {-1.8,-21}, {-0.5,-21}, {8.5,14} }; float f1,f2; int i; fprintf (fp, "\n/r4 { %% x y r4 - quarter rest\n" " dup /y exch def exch dup /x exch def exch moveto\n"); f1=f2=6.0/11.5; add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,4); fprintf (fp, " fill\n } bind def\n"); fprintf (fp, "\n/r8 { %% x y r8 - eighth rest\n" " dup /y exch def exch dup /x exch def exch moveto\n"); f1=f2=7/18.0; add_mv (fp,f1,f2,q,0); add_cv (fp,f1,f2,q,1,4); add_sg (fp,f1,f2,q,13,3); fprintf (fp, " fill\n } bind def\n"); for (i=13;i<26;i++) { r[i][0]-=4.2; r[i][1]-=14; } fprintf (fp, "\n/r16 { %% x y r16 - 16th rest\n" " dup /y exch def exch dup /x exch def exch moveto\n"); f1=f2=7/18.0; add_mv (fp,f1,f2,r,0); add_cv (fp,f1,f2,r,1,4); add_sg (fp,f1,f2,r,13,1); add_cv (fp,f1,f2,r,14,4); add_sg (fp,f1,f2,r,26,3); fprintf (fp, " fill\n } bind def\n"); fprintf (fp, "\n/r00 { %% x y r00 - longa rest\n" " 2 copy /y exch def /x exch def moveto\n" " -1 6 rmoveto 0 -12 rlineto 3 0 rlineto 0 12 rlineto fill\n" "} bind def\n"); fprintf (fp, "\n/r0 { %% x y r0 - brevis rest\n" " 6 add dup /y exch def exch dup /x exch def exch moveto\n" " -1 0 rmoveto 0 -6 rlineto 3 0 rlineto 0 6 rlineto fill\n" "} bind def\n"); fprintf (fp, "\n/r1 { %% x y r1 - whole rest\n" " dup /y exch def exch dup /x exch def exch moveto\n" " -3 6 rmoveto 0 -3 rlineto 6 0 rlineto 0 3 rlineto fill\n" "} bind def\n"); fprintf (fp, "\n/r2 { %% x y r2 - half rest\n" " dup /y exch def exch dup /x exch def exch moveto\n" " -3 0 rmoveto 0 3 rlineto 6 0 rlineto 0 -3 rlineto fill\n" "} bind def\n" ); /* get 32nd, 64th rest by overwriting 8th and 16th rests */ fprintf (fp, "\n/r32 {\n" "2 copy r16 5.5 add exch 1.6 add exch r8\n" "} bind def\n"); fprintf (fp, "\n/r64 {\n" "2 copy 5.5 add exch 1.6 add exch r16\n" "5.5 sub exch 1.5 sub exch r16\n" "} bind def\n"); fprintf (fp, "\n/brest { %% nb_measures x y brest\n" " gsave T 0.8 setlinewidth\n" " 0 -6 moveto 0 12 rlineto 40 -6 moveto 0 12 rlineto stroke\n" " 3 setlinewidth 0 0 moveto 40 0 rlineto stroke\n" " /Times-Bold 13 selectfont 20 16 moveto cshow grestore\n" "} bind def \n"); }
/* ----- def_acc ------- */ void def_acc (FILE *fp) { float p[12][2]={ {-2,3},{6,6.5},{6,-1},{-2,-4.5},{4,0},{4,4},{-2,2},{-2,10},{-2,-4}}; float q[14][2]={ {4,4},{4,7},{-4,5},{-4,2},{4,4},{4,-5},{4,-2},{-4,-4},{-4,-7},{4,-5}, {2,-10},{2,11.5},{-2,-11.5},{-2,10} }; float r[14][2]={ {-2.5,-6}, {2.5,-5}, {2.5,-2}, {-2.5,-3}, {-2.5,6}, {-2.5,2}, {2.5,3}, {2.5,6}, {-2.5,5}, {-2.5,2}, {-2.5,11}, {-2.5,-5.5}, {2.5,5.5}, {2.5,-11} }; float s[25][2]={ {0.7,0},{3.9,3},{6,3},{6.2,6.2},{3,6},{3,3.9}, {0,0.7},{-3,3.9},{-3,6},{-6.2,6.2},{-6,3},{-3.9,3}, {-0.7,0},{-3.9,-3},{-6,-3},{-6.2,-6.2},{-3,-6},{-3,-3.9}, {0,-0.7},{3,-3.9},{3,-6},{6.2,-6.2},{6,-3},{3.9,-3}, {0.7,0} }; float f1,f2; f2=8.0/9.0; f1=f2*0.9; fprintf (fp, "\n/ft0 { %% x y ft0 - flat sign\n" " moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " currentpoint fill moveto\n"); add_mv (fp,f1,f2,p,7); add_sg (fp,f1,f2,p,8,1); fprintf (fp, " stroke\n } bind def\n"); fprintf (fp, "/ft { %% dx ft - flat relative to head\n" " neg x add y ft0 } bind def\n"); f2=8.0/9.0; /* more narrow flat sign for double flat */ f1=f2*0.8; fprintf (fp, "\n/ftx { %% x y ftx - narrow flat sign\n" " moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " currentpoint fill moveto\n"); add_mv (fp,f1,f2,p,7); add_sg (fp,f1,f2,p,8,1); fprintf (fp, " stroke\n } bind def\n"); fprintf (fp, "/dft0 { %% x y dft0 ft - double flat sign\n" " 2 copy exch 2.5 sub exch ftx exch 1.5 add exch ftx } bind def\n" "/dft { %% dx dft - double flat relative to head\n" " neg x add y dft0 } bind def\n"); f2=6.5/9.0; f1=f2*0.9; fprintf (fp, "\n/sh0 { %% x y sh0 - sharp sign\n" " moveto\n"); add_mv (fp,f1,f2,q,0); add_sg (fp,f1,f2,q,1,4); add_mv (fp,f1,f2,q,5); add_sg (fp,f1,f2,q,6,4); fprintf (fp, " currentpoint fill moveto\n"); add_mv (fp,f1,f2,q,10); add_sg (fp,f1,f2,q,11,1); fprintf (fp, " currentpoint stroke moveto\n"); add_mv (fp,f1,f2,q,12); add_sg (fp,f1,f2,q,13,1); fprintf (fp, " stroke\n } bind def\n"); fprintf (fp, "/sh { %% dx sh - sharp relative to head\n" " neg x add y sh0 } bind def\n"); fprintf (fp, "/sh1 { %% sh1 - sharp inline at currentpos\n" " currentpoint\n" " currentpoint moveto 3.5 4.6 rmoveto gsave 0.75 0.75 scale currentpoint sh0 grestore\n" " moveto 7 0 rmoveto\n" "} bind def\n" "/ft1 { %% ft1 - flat inline at currentpos\n" " currentpoint\n" " currentpoint moveto 3.7 3.1 rmoveto gsave 0.75 0.75 scale currentpoint ft0 grestore\n" " moveto 7 0 rmoveto\n" "} bind def\n" "/nt1 { %% nt1 - natural inline at currentpos\n" " currentpoint\n" " currentpoint moveto 4 4 rmoveto gsave 0.75 0.75 scale currentpoint nt0 grestore\n" " moveto 7 0 rmoveto\n" "} bind def\n" ); f2=6.5/9.0; f1=f2*0.9; fprintf (fp, "\n/nt0 { %% x y nt0 - neutral sign\n" " moveto\n"); add_mv (fp,f1,f2,r,0); add_sg (fp,f1,f2,r,1,4); add_mv (fp,f1,f2,r,5); add_sg (fp,f1,f2,r,6,4); fprintf (fp, " currentpoint fill moveto\n"); add_mv (fp,f1,f2,r,10); add_sg (fp,f1,f2,r,11,1); fprintf (fp, " currentpoint stroke moveto\n"); add_mv (fp,f1,f2,r,12); add_sg (fp,f1,f2,r,13,1); fprintf (fp, " stroke\n } bind def\n"); fprintf (fp, "/nt { %% dx nt - neutral relative to head\n" " neg x add y nt0 } bind def\n"); f1=5.0/9.0; f2=f1; fprintf (fp, "\n/dsh0 { %% x y dsh0 - double sharp \n" " moveto\n"); add_mv (fp,f1,f2,s,0); add_sg (fp,f1,f2,s,1,24); fprintf (fp, " fill\n } bind def\n"); fprintf (fp, "/dsh { %% dx dsh - double sharp relative to head\n" " neg x add y dsh0 } bind def\n"); }
/* ----- def_deco ------- */ void def_deco (FILE *fp) { float p[7][2] = { {-10,-2},{0,15},{1,-11},{10,2},{0,-15},{-1,11},{-10,-2} }; /* float q[7][2] = { {-13,0},{-2,9},{2,9},{13,0},{3,5},{-3,5},{-13,-0} }; */ /* float q[7][2] = { {-11,0},{-9,10},{9,10},{11,0},{5,7},{-5,7},{-11,-0} }; */ /* Walsh suggestion, scale 1.8 in y */ float q[7][2] = { {-13,0},{-12,9},{12,9},{13,0},{10,7.4},{-10,7.4},{-13,-0} }; float s[7][2] = { {-8,-4.8},{-6,-5.5},{-3,-4.6},{0,0},{-2.3,-5},{-6,-6.8},{-8.5,-6} }; float f1,f2; int i; f1=0.5; f2=0.5; fprintf (fp, "\n/grm { %% x y grm - gracing mark\n" " moveto\n"); add_mv (fp,f1,f2,p,0); add_cv (fp,f1,f2,p,1,2); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/stc { %% x y stc - staccato mark\n" " 1.2 0 360 arc fill } bind def\n"); fprintf (fp, "\n/hat { %% x y hat\n" " moveto\n" " -4 -2 rmoveto 4 6 rlineto currentpoint stroke moveto\n" " 4 -6 rlineto -2 0 rlineto -3 4.5 rlineto fill\n" " } bind def\n"); fprintf (fp, "\n/att { %% x y att\n" " moveto\n" " -4 -3 rmoveto 8 3 rlineto -8 3 rlineto stroke\n" " } bind def\n"); f2=f2*1.8; if (temp_switch==3) { f1=0.8*f1; f2=0.8*f2; } else { f1=0.9*f1; f2=0.9*f2; } fprintf (fp, "\n/cpu { %% x y cpu - roll sign above head\n" " moveto\n"); add_mv (fp,f1,f2,q,0); add_cv (fp,f1,f2,q,1,2); fprintf (fp, " fill\n} bind def\n"); for (i=0;i<7;i++) q[i][1]=-q[i][1]; fprintf (fp, "\n/cpd { %% x y cpd - roll sign below head\n" " moveto\n"); add_mv (fp,f1,f2,q,0); add_cv (fp,f1,f2,q,1,2); fprintf (fp, " fill\n} bind def\n"); f1=0.9; f2=1.0; fprintf (fp, "\n/sld { %% y dx sld - slide\n" " x exch sub exch moveto\n"); add_mv (fp,f1,f2,s,0); add_cv (fp,f1,f2,s,1,2); fprintf (fp, " fill\n} bind def\n"); fprintf (fp, "\n/emb { %% x y emb - tenuto sign\n" " gsave 1.4 setlinewidth 1 setlinecap\n" " moveto -3.5 0 rmoveto 7 0 rlineto stroke grestore\n" "} bind def\n"); fprintf (fp, "\n/trl { %% x y trl - trill sign\n" " gsave /Times-BoldItalic 14 selectfont\n" " moveto (tr) cshow grestore\n" "} bind def\n"); fprintf (fp, "\n/sgno { %% x y sgno - segno\n" " moveto gsave\n" " 0 3 rmoveto currentpoint currentpoint currentpoint\n" " 2.8 -0.54 2.89 1.18 1.39 1.63 rcurveto\n" " -2.2 -0.9 -1.4 -3.15 2.76 -2.48 rcurveto\n" " 3.1 2.4 2.54 6.26 -7.71 13.5 rcurveto\n" " 0.5 3.6 3.6 3.24 5.4 2.5 rcurveto\n" " -2.8 0.54 -2.89 -1.18 -1.39 -1.63 rcurveto\n" " 2.2 0.9 1.4 3.15 -2.76 2.48 rcurveto\n" " -3.1 -2.4 -2.54 -6.26 7.71 -13.5 rcurveto\n" " -0.5 -3.6 -3.6 -3.24 -5.4 -2.5 rcurveto\n" " fill\n" " moveto 0.6 setlinewidth -5.6 1.6 rmoveto 12.5 12.5 rlineto stroke\n" " 7.2 add exch -5.6 add exch 1 0 360 arc fill\n" " 8.4 add exch 7 add exch 1 0 360 arc fill grestore\n" "} bind def\n"); fprintf (fp, "\n/coda { %% x y coda - coda \n" " gsave 1.2 setlinewidth 2 copy moveto 0 20 rlineto\n" " 2 copy 10 add exch -10 add exch moveto 20 0 rlineto stroke\n" " 10 add 6 0 360 arc 1.8 setlinewidth stroke grestore\n" "} bind def\n"); fprintf (fp, "\n/umrd { %% x y umrd - upper mordent\n" " 4 add moveto\n" " 2.2 2.2 rlineto 2.1 -2.9 rlineto 0.7 0.7 rlineto\n" " -2.2 -2.2 rlineto -2.1 2.9 rlineto -0.7 -0.7 rlineto\n" " -2.2 -2.2 rlineto -2.1 2.9 rlineto -0.7 -0.7 rlineto\n" " 2.2 2.2 rlineto 2.1 -2.9 rlineto 0.7 0.7 rlineto fill\n" "} bind def\n"); fprintf (fp, "\n/lmrd { %% x y lmrd - lower mordent\n" " 2 copy umrd 8 add moveto\n" " 0.6 setlinewidth 0 -8 rlineto stroke\n" "} bind def\n"); fprintf (fp, "\n/turn { %% x y turn - doppelschlag\n" " moveto 5.2 8 rmoveto\n" " 1.4 -0.5 0.9 -4.8 -2.2 -2.8 rcurveto\n" " -4.8 3.5 rlineto\n" " -3.0 2.0 -5.8 -1.8 -3.6 -4.4 rcurveto\n" " 1.0 -1.1 2.0 -0.8 2.1 0.1 rcurveto\n" " 0.1 0.9 -0.7 1.2 -1.9 0.6 rcurveto\n" " -1.4 0.5 -0.9 4.8 2.2 2.8 rcurveto\n" " 4.8 -3.5 rlineto\n" " 3.0 -2.0 5.8 1.8 3.6 4.4 rcurveto\n" " -1.0 1.1 -2 0.8 -2.1 -0.1 rcurveto\n" " -0.1 -0.9 0.7 -1.2 1.9 -0.6 rcurveto\n" " fill\n" "} bind def\n"); fprintf(fp, "\n/wedge { %% x y wedge \n" " moveto 1.4 7 rlineto\n" " -0.8 2 -1.2 2 -2.8 0 rcurveto\n" " 1.4 -7 rlineto fill\n" "} bind def\n"); fprintf (fp, "\n/plus { %% x y plus - plus sign\n" " 1 add moveto gsave 1 setlinewidth\n" " 0 10 rlineto currentpoint stroke moveto\n" " -5 -5 rmoveto 10 0 rlineto stroke grestore\n" "} bind def\n"); fprintf (fp, "\n/cross { %% x y cross - x shaped cross\n" " gsave 1.2 setlinewidth 1 setlinecap\n" " moveto -3 1 rmoveto 6 8 rlineto currentpoint stroke moveto\n" " 0 -8 rmoveto -6 8 rlineto stroke grestore\n" "} bind def\n"); fprintf (fp, "\n/dyn { %% (s) x y cross - dynamic mark s\n" " /Times-BoldItalic 16 selectfont 5 add moveto cshow\n" "} bind def\n"); }