X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tex%2Flilyponddefs.tex;h=67cfd2e3bfdb8245d043d642e6e1ed83bb3ac6c5;hb=refs%2Ftags%2Frelease%2F0.1.48;hp=2237f638066816e15026d8f63f64ec630e1f6993;hpb=4bdf5f822b18b10b48f619c116641e6aee1968ac;p=lilypond.git diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 2237f63806..67cfd2e3bf 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -1,14 +1,44 @@ %% %% include file for LilyPond - -\def\mdef#1#2{\def#1{\mchar{#2}}} -\def\mchar#1{\musicfnt\char#1} +%% +%% this file defines various macros to accomodate lilypond output +%% +%% let's not make par before endinput +% +% TeXbook ex 7.7 +\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} +% +% skip if included already +\def\SkipLilydefs{\endinput} +\ifundefined{EndLilyPondOutput} + \def\EndLilyPondOutput{\csname bye\endcsname} + \def\SkipLilydefs{} +\fi +\SkipLilydefs +% +\ifundefined{mudelacopyright} + \def\mudelacopyright{\copyright\ \number\year} +\fi +\ifundefined{LilyIdString} + \def\LilyIdString{Lily was here} +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% macros to shorten other definitions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\musicdef#1#2{\def#1{\musicchar{#2}}} +\def\musicchar#1{\musicfnt\char#1} \def\rationalmultiply#1*#2/#3{\multiply #1 by #2 \divide #1 by #3} + + \def\maccentraise#1#2{\dimen0=\noteheight \rationalmultiply\dimen0*#2% \raise\dimen0\hbox{#1}} -\def\maccentdef#1#2#3{\def#1{\maccentraise{\mchar{#2}}{#3}}} -\def\vcenter#1{\vbox to 0pt{\vss #1\vss}} +\def\maccentdef#1#2#3{\def#1{\maccentraise{\musicchar{#2}}{#3}}} +\def\vertcenter#1{\vbox to 0pt{\vss #1\vss}} + +\def\musicmathdef#1#2{\def#1{\musicmathchar{#2}}} +\def\musicmathchar#1{\musicmathfont\char#1} \def\topalign#1{\vbox to 0pt{#1\vss}} \def\botalign#1{\vbox to 0pt{\vss #1}} @@ -18,154 +48,186 @@ \def\rightalign#1{\hbox to 0pt{\hss#1}} -%% musix defs +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% set up dimensions \parindent=0pt \newdimen\smallspace \newdimen\interlinedist - \newcount\n - \newdimen\balkhoog - \newdimen\notewidth - \newdimen\noteheight - \newdimen\notewidthhalf - \newdimen\notewidthdouble - \newdimen\staffrulethickness - \newdimen\interstaffrule -\newdimen\balkhalf +\newdimen\stemthickness +\newcount\n +\newdimen\staffheight +\newdimen\notewidth +\newdimen\noteheight +\newdimen\staffrulethickness +\newdimen\interstaffrule +\newdimen\dist + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% set fonts and primary dimensions +% ugh \def\musixtwentydefs{ - \font\textfont=cmr10 - \font\meterfont=cmbx12 - \font\slurufont=xslu20 - \font\slurdfont=xsld20 - \font\slurhfont=xslz20 - \font\hslurufont=xslhu20 - \font\hslurdfont=xslhd20 - \font\hslurhfont=xslhz20 - \font\musicfnt=musix20 - \font\italicfont=cmti10 - \font\dynfont=cmbxti10 scaled \magstep1 - \balkhoog=20pt - \notewidth=6pt - \noteheight=5pt - \staffrulethickness=0.4pt + \twentyfonts \musixcalc } +\def\cmrtwenty{ + \font\meterfont=cmbx15 + \font\italicfont=cmti10 scaled \magstep1 + \font\musicmathfont=cmsy10 + \font\normaltextfont=cmr10 %\textfont is a primitive + \font\smalltextfont=cmr8 + \font\boldfont=cmbx10 + \font\textmusic=cmmi12 +} +\def\cmrsixteen{ + \font\smalltextfont=cmr6 + \font\normaltextfont=cmr8 %\textfont is a primitive + \font\meterfont=cmbx12 + \font\italicfont=cmti9 + \font\textmusic=cmmi10 + \font\boldfont=cmbx8 +} +\def\cmreleven{ + \font\smalltextfont=cmr5 + \font\normaltextfont=cmr6 + \font\meterfont=cmbx8 + \font\italicfont=cmti6 + \font\textmusic=cmmi8 + \font\boldfont=cmbx6 +} +\def\cmrthirteen{ + \font\smalltextfont=cmr6 + \font\normaltextfont=cmr7 + \font\meterfont=cmbx9 + \font\italicfont=cmti7 + \font\textmusic=cmmi9 + \font\boldfont=cmbx7 +} \def\musixsixteendefs{ - \font\textfont=cmr8 - \font\meterfont=cmbx12 - \font\italicfont=cmti8 - \font\slurufont=xslu16 - \font\slurdfont=xsld16 - \font\slurhfont=xslz20 % sigh - \font\hslurufont=xslhu16 - \font\hslurdfont=xslhd16 - \font\hslurhfont=xslhz20 - \font\musicfnt=musix16 - \font\dynfont=cmbxti10 - \balkhoog=16pt - \staffrulethickness=0.4pt - \notewidth=5pt - \noteheight=4pt + \sixteenfonts \musixcalc } +\def\musixtwentysixdefs{ + \twentysixfonts + \musixcalc +} +\def\musixthirteendefs{ + \thirteenfonts + \musixcalc +} +\def\musixelevendefs{ + \elevendefs + \musixcalc +} + +\def\textsharp{\raise.4ex\hbox{\textmusic\char"5D}} +\def\textnatural{\raise.4ex\hbox{\textmusic\char"5C}} +\def\textflat{\raise.2ex\hbox{\textmusic\char"5B}} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% do derivative calcs + +% this has to be synced with the font definition \def\musixcalc{ - \interlinedist=\fontdimen5\musicfnt + \staffheight=\mudelapaperbarsize pt + \interlinedist=\staffheight + \divide\interlinedist by 4 + \notewidth=\mudelapapernotewidth pt + \smallspace=.3\interlinedist - \interstaffrule=\balkhoog - \advance\interstaffrule by-\staffrulethickness + \interstaffrule=\staffheight \divide\interstaffrule by 4 - \advance\interstaffrule by -\staffrulethickness - \notewidthhalf=\notewidth - \notewidthdouble=\notewidth - \rationalmultiply \notewidthhalf*1/2 - \multiply \notewidthdouble by 2 - \balkhalf=\balkhoog - \rationalmultiply\balkhalf*1/2 + \staffrulethickness=\mudelapaperrulethickness pt + \stemthickness=\staffrulethickness } -% \def\dyn{\italicfont} -\def\dyn{\dynfont} -\def\dynf{f\kern-.1ex} -\def\dynm{f\kern-.15ex} -\def\dynp{p\kern-.15ex} - -\def\dynppp{\dynfont\dynp\dynp p} -\def\dynpp{\dynfont\dynp p} -\def\dynp{\dynfont p} -\def\dynmp{\dynfont\dynm p} -\def\dynmf{\dynfont\dynm f} -\def\dynf{\dynfont f} -\def\dynff{\dynfont\dynf f} -\def\dynfff{\dynfont\dynf\dynf f} - -\def\slurcharh#1{{\slurhfont\char#1}} -\def\slurcharu#1{{\slurufont\char#1}} -\def\slurchard#1{{\slurdfont\char#1}} -\def\hslurcharh#1{{\hslurhfont\char#1}} -\def\hslurcharu#1{{\hslurufont\char#1}} -\def\hslurchard#1{{\hslurdfont\char#1}} - -\mdef\quartball{'007} -\mdef\halfball{'010} -\mdef\wholeball{'011} -\mdef\halfrest{'074} -\mdef\wholerest{'075} -\mdef\quartrest{62} -\mdef\eighthrest{63} -\mdef\sixteenthrest{64} -\mdef\thirtysecondrest{65} -\mdef\sharp{52} -\mdef\flat{50} -\mdef\natural{54} -\mdef\sharpsharp{53} -\mdef\flatflat{51} - -\mdef\singledot{'00} -\mdef\doubledot{'01} -\mdef\tripledot{'02} -\mdef\mussepline{155} - -\mdef\violinclef{71} -\mdef\bassclef{73} -\mdef\altoclef{75} -\mdef\cviolinclef{72} -\mdef\cbassclef{74} -\mdef\caltoclef{76} - -\mdef\deigthflag{45} -\mdef\dsixteenthflag{46} -\mdef\dthirtysecondflag{47} - -% pointing up -\mdef\ueigthflag{40} -\mdef\usixteenthflag{41} -\mdef\uthirtysecondflag{42} - -\maccentdef\repeatcolon{55}{2/1} + +% stacked numbers; may be overruled in fetdefs +\def\generalmeter#1#2{\vbox to 0pt{\vss\hbox{\meterfont + #1}\nointerlineskip + \hbox{\meterfont #2}\vss}} + +% stacked horizontal lines + +\input dyndefs +\input fetdefs + +%\input taupindefs +%\input eglerdefs + + \def\emptybar{} -\def\thinbar{\vrule height\balkhoog} +\def\defaultthinbar{\thinbar{\staffheight}} +\def\defaultthickbar{\thickbar{\staffheight}} %? what-s wrong with rightalign? -\def\thickbar{\vrule height\balkhoog width 2\smallspace} -\def\maatstreep{\thinbar} -% \def\finishbar{\rightalign{\thinbar\kern\smallspace\thickbar}} -\def\finishbar{\hss\rightalign{\thinbar\kern\smallspace\thickbar}} -% \def\repeatstopbar{\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}} -\def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}} -% \def\repeatstopbar{\kern-3\smallspace\rightalign{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar}\kern3\smallspace} -\def\repeatstartbar{\hbox{\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}} -\def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar\kern\smallspace\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}} -\def\doublebar{\hbox{\thinbar\hskip\smallspace\thinbar}} - -%compatability +\def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\defaultthinbar\hskip\smallspace\defaultthickbar}} +\def\repeatstartbar{\hbox{\defaultthickbar\kern\smallspace\defaultthinbar\kern2\smallspace\repeatcolon}} +\def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\defaultthickbar\kern\smallspace\defaultthickbar\kern2\smallspace\repeatcolon}} + +%compatibility \def\repeatbar{\repeatstopbar} \def\startrepeat{\repeatstartbar} \def\repeatbarstartrepeat{\repeatstopstart} -\def\generalmeter#1#2{\botalign{\vbox to\balkhalf{\vss \meterfont#1}% - \nointerlineskip - \vbox to \balkhalf{\vss\meterfont #2}}} +\def\vruler#1{{% + \def\wid{\dimen0}% + \def\inc{\dimen1}% + \wid=#1pt + \inc=\wid + \divide\inc by #1 + \divide\wid by 2 + \here=-\wid + \loop\ifdim\here<\wid\advance\here by\inc + \hbox to0pt{\vbox to0pt{\vss\hrule width2pt height 0.05pt\kern\here}\hss}% + \repeat% +}} +\def\hruler#1#2{\hbox{% + \def\wid{\dimen0}% + \def\here{\dimen3}% + \wid=#1pt + \divide\wid by 2 + \here=-\wid + \loop\ifdim\here<\wid\advance\here by #2 + \hbox to0pt{\kern\here\vrule width0.05pt height 1pt depth 1pt\hss}% + \repeat% +}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% parametric symbols +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\doublebar#1{\hbox{\thinbar{#1}\hskip\smallspace\thinbar{#1}}} +\def\thinbar#1{\dimen0=#1% + \vrule height .5\dimen0 depth .5\dimen0 width 1.6\staffrulethickness} % TODO parametric. +\def\thickbar#1{\dimen0=#1% + \vrule height .5\dimen0 depth .5\dimen0 width 2\smallspace} +\def\maatstreep#1{\thinbar{#1}} +\def\startbar#1{\leftalign{\thickbar{#1}\kern\smallspace\thinbar{#1}}} +\def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}} + + +\def\stem#1#2{\hbox{\kern -.5\stemthickness + \vrule width\stemthickness height#2 depth-#1}} + +\def\placebox#1#2#3{% + \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}% +} + + +\def\rulesym#1#2{\dimen0=#1% + \vrule height .5\dimen0 depth .5\dimen0 width #2} +\def\settext#1{\normaltextfont #1} +\def\setitalic#1{\italicfont #1} +\def\setbold#1{\boldfont #1} +\def\setdynamic#1{\dynfont #1} +\def\setfinger#1{\fingerfont #1} + +% the interline symbol. Redefine to remove it. \def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}} \def\lineseparator{\defaultlineseparator} \def\beauty{% @@ -174,80 +236,39 @@ \par\vskip 10pt plus 30pt minus 10pt\par } -\def\interstaffline{% - \vskip 10pt -} -\def\ugly{\nointerlineskip\par -\vskip 40pt\par\vbox{\leftalign{\vrule width30pt height1pt}}\par\vskip 40pt -} -\def\interscoreline{\beauty} - - -\def\lines#1#2{% - \vbox{\kern-\interstaffrule - \n=0\nointerlineskip% - \loop\ifnum\n<#1\advance\n by1% - \kern\interstaffrule - \hrule height \staffrulethickness width#2 - \repeat - }} - -\def\toplines#1{ % why space needed here? - \topalign{\hbox{\kern-\notewidth\lines{#1}{\notewidthdouble}}}} -\def\botlines#1{ % idem ditto - \botalign{\hbox{\kern-\notewidth\lines{#1}{\notewidthdouble}}}} - -% -% a staffsymbol with #1 lines, width #2 -% bottom at baseline -\def\linestafsym#1#2{\leftalign{\botalign{\lines{#1}{#2}}}} - -\def\eigthflag{\topalign{\ueigthflag}} -\def\sixteenthflag{\topalign{\usixteenthflag}} -\def\thirtysecondflag{\topalign{\uthirtysecondflag}} - -\def\cquartrest{\vcenter\quartrest} -\def\ceighthrest{\vcenter\eighthrest} -\def\csixteenthrest{\vcenter\sixteenthrest} -\def\cthirtysecondrest{\vcenter\thirtysecondrest} - -\def\lsingledot{\kern-\notewidth\singledot} -\def\ldoubledot{\kern-\notewidth\doubledot} -\def\ltripledot{\kern-\notewidth\tripledot} - -\maccentdef\sforzato{30}{-3/2} -\maccentdef\marcato{20}{-1/1} -\maccentdef\imarcato{21}{1/1} -\maccentdef\staccato{24}{-1/1} -\maccentdef\istaccato{25}{1/1} -\maccentdef\staccatissimo{28}{-1/1} -\maccentdef\istaccatissimo{29}{1/1} -\maccentdef\portato{18}{-9/10} -\maccentdef\iportato{19}{9/10} -\maccentdef\tenuto{26}{0/1} -\maccentdef\itenuto{27}{0/1} -\maccentdef\fermata{80}{-1/1} -\maccentdef\ifermata{81}{1/1} - - - -\mdef\spicato{28} -\mdef\ispicato{29} -\mdef\upbow{23} -\mdef\downbow{22} -\mdef\portato{26} - -\def\stem#1#2{\vrule height#2 depth-#1} -\def\placebox#1#2#3{% - \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}% -} - - -\def\beamslope#1#2{{\count0=#2\advance\count0 by#1\musicfnt\char\count0}} -\def\rulesym#1#2{\vrule height #1 width #2} -\def\crescendosym#1{\count0=84\advance\count0 by #1} -\def\decrescendosym#1{\count0=116\advance\count0 by #1} -\def\settext#1{\textfont #1} -\def\setitalic#1{\italicfont #1} -\def\setdynamic#1{\dynfont #1} +\def\interscoreline{\vskip 16pt} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% big fat marks, if errors are detected. +\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}} +\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}} +\def\errormark{{\bf E!}} +\def\unknown{{\bf u}} + +\def\postheader{} +\ifundefined{documentclass} + \footline={\ifnum\pageno=1 + {\smalltextfont\mudelacopyright\hfil \LilyIdString + }\else{\hfil\the\pageno\hfil}\fi +}\else + %% FIXME + \def\ps@plain{ + \renewcommand{\@oddhead}{}% + \renewcommand{\@evenfoot}{}% + \renewcommand{\@evenhead}{}% + \renewcommand{\@oddfoot}{\ifnum\thepage=1 + {\hfil \LilyIdString + }\else{foo\hfil\the\pageno\hfil}\fi}} + \def\ps@empty{ + \renewcommand{\@oddhead}{}% + \renewcommand{\@evenfoot}{}% + \renewcommand{\@evenhead}{}% + \renewcommand{\@oddfoot}{\ifnum\thepage=1 + {\hfil \LilyIdString + }\else{foo\hfil\the\pageno\hfil}\fi}} +\fi + + +% debugging stuff: +% \vbox to 0pt{\vskip .5cm \hruler{48}{3pt}\vss}