X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tex%2Flilyponddefs.tex;h=6e977a8ad6089a2d0d6140a8b175014a39292ee9;hb=fc81e281674f9d3cb627ef84e8597f14ac78a046;hp=a9db1f5fa27d747fc000965bfaffc15d49f12acd;hpb=b75137963d1390716d79dab8fd593daa2d56c94f;p=lilypond.git diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index a9db1f5fa2..6e977a8ad6 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -2,10 +2,12 @@ %% include file for LilyPond %% %% 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} @@ -13,22 +15,24 @@ \def\SkipLilydefs{} \fi \SkipLilydefs -% should use \endinput +% +\ifundefined{mudelacopyright} + \def\mudelacopyright{\copyright\ \number\year} +\fi +\ifundefined{LilyIdString} + \def\LilyIdString{Lily was here} +\fi +\ifundefined{documentclass} + \input lilypond-plaintex +\else + \input lilypond-latex +\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % macros to shorten other definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\mdef#1#2{\def#1{\mchar{#2}}} -\def\mchar#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\vertcenter#1{\vbox to 0pt{\vss #1\vss}} - -\def\mathdef#1#2{\def#1{\mathchar{#2}}} -\def\mathchar#1{\mathfont\char#1} +\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}} @@ -43,270 +47,174 @@ \parindent=0pt \newdimen\smallspace \newdimen\interlinedist -\newcount\n -\newdimen\balkhoog + +\newdimen\stemthickness +\newcount\n %duh. meaningful identifiers. +\newdimen\staffheight \newdimen\notewidth \newdimen\noteheight -\newdimen\notewidthhalf -\newdimen\notewidthdouble -\newdimen\staffrulethickness -\newdimen\interstaffrule -\newdimen\balkhalf +\newdimen\stafflinethickness +\newdimen\interstaffline +\newdimen\dist %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set fonts and primary dimensions -\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\musicdraw=musixsps - \font\italicfont=cmti10 - \font\dynfont=cmbxti10 scaled \magstep1 - \font\mathfont=cmsy10 - \balkhoog=20pt - \notewidth=6pt - \noteheight=5pt - \staffrulethickness=0.4pt - \musixcalc +% ugh + +\def\cmrtwenty{ + \font\smalltextfont=cmr8 + \font\textmusic=cmmi12 } +\def\cmrsixteen{ + \font\smalltextfont=cmr6 + \font\textmusic=cmmi10 + } +\def\cmrthirteen{ + \font\smalltextfont=cmr6 + \font\textmusic=cmmi9 + } +\def\cmreleven{ + \font\smalltextfont=cmr5 + \font\textmusic=cmmi8 + } + +%%%%%%% +% +\def\musixtwentydefs{ + \twentyfonts + \csname cmrtwenty\texsuffix\endcsname + \musixcalc +} \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=cmbxti12 - \font\musicdraw=musixsps - \font\mathfont=cmsy8 - \balkhoog=16pt - \staffrulethickness=0.4pt - \notewidth=5pt - \noteheight=4pt + \sixteenfonts + \csname cmrsixteen\texsuffix\endcsname + \musixcalc + } +\def\musixtwentysixdefs{ + \csname cmrtwentysix\texsuffix\endcsname + \twentysixfonts + \musixcalc + } +\def\musixthirteendefs{ + \thirteenfonts + \csname cmrthirteen\texsuffix\endcsname + \musixcalc +} +\def\musixelevendefs{ + \csname cmreleven\texsuffix\endcsname + \elevenfonts \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 + + % ugh. Can extract ex dim from TFM + \interlinedist=\staffheight + \divide\interlinedist by 4 + \notewidth=\mudelapapernotewidth pt + \smallspace=.3\interlinedist - \interstaffrule=\balkhoog - \advance\interstaffrule by-\staffrulethickness - \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 + \interstaffline=\staffheight + \divide\interstaffline by 4 + \stafflinethickness=\mudelapaperrulethickness pt + \stemthickness=\stafflinethickness } -% dynamics take extra kerning -\def\dyn{\dynfont} -\def\kdynf{\dynfont f\kern-.1ex} -\def\kdynm{\dynfont m\kern-.15ex} -\def\kdynp{\dynfont p\kern-.15ex} - - -\def\dynp{\dynfont p} -\def\dynpp{\dynp\kdynp} -\def\dynppp{\dynpp\kdynp} -\def\dynmp{\dynfont m\kdynp} -\def\dynmf{\dynfont m\kdynf} -\def\dynf{\dynfont f} -\def\dynff{\dynf\kdynf} -\def\dynfff{\dynff\kdynf} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% provide interface to musixtex fonts -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\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\sixtyfourthrest{66} -\mdef\hundredtwentyeighthrest{67} -\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\deighthflag{45} -\mdef\dsixteenthflag{46} -\mdef\dthirtysecondflag{47} -\mdef\dsixtyfourthflag{48} -\mdef\dhundredtwentyeighthflag{49} - -% pointing up -\mdef\ueighthflag{40} -\mdef\usixteenthflag{41} -\mdef\uthirtysecondflag{42} -\mdef\usixtyfourthflag{43} -\mdef\uhundredtwentyeighthflag{44} - -\maccentdef\repeatcolon{55}{2/1} -\def\eighthflag{\topalign{\ueighthflag}} -\def\sixteenthflag{\topalign{\usixteenthflag}} -\def\thirtysecondflag{\topalign{\uthirtysecondflag}} -\def\sixtyfourthflag{\topalign{\usixtyfourthflag}} -\def\hundredtwentyeighthflag{\topalign{\uhundredtwentyeighthflag}} - -\def\cquartrest{\vertcenter\quartrest} -\def\ceighthrest{\vertcenter\eighthrest} -\def\csixteenthrest{\vertcenter\sixteenthrest} -\def\cthirtysecondrest{\vertcenter\thirtysecondrest} -\def\csixtyfourthrest{\vertcenter\sixtyfourthrest} -\def\chundredtwentyeighthrest{\vertcenter\hundredtwentyeighthrest} - -\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/3} -\maccentdef\istaccato{25}{1/3} -\maccentdef\staccatissimo{28}{-5/5} -\maccentdef\istaccatissimo{29}{2/5} -\maccentdef\portato{18}{-6/5} -\maccentdef\iportato{19}{3/5} -\maccentdef\tenuto{26}{-1/1} -\maccentdef\itenuto{27}{1/1} -\maccentdef\fermata{80}{-1/1} -\maccentdef\ifermata{81}{1/1} - -\mdef\spicato{28} -\mdef\ispicato{29} -\mdef\upbow{23} -\mdef\downbow{22} - -\mathdef\cup{91} % \cup -\mathdef\wedge{94} % \wedge -\mathdef\striepke{0} % heu? - -%% custom characters --- this should go: add to (meta!) font -\def\myheel{\kern-.5ex\vbox{\cup}\kern-.5ex} -\def\mytoe{\kern-.5ex\vbox{\wedge}\kern-.5ex} -\def\mystriepke{\kern-1.1ex\vbox{\hbox{\kern-.05em\striepke}}\kern-1.1ex} - -\def\heel{\vbox{\myheel}} -\def\toe{\vbox{\mytoe}} -\def\backorfront{\mystriepke} - -\def\bheel{\vbox{\myheel\mystriepke}} -\def\btoe{\vbox{\mytoe\mystriepke}} -\def\fheel{\vbox{\mystriepke\myheel}} -\def\ftoe{\vbox{\mystriepke\mytoe}} -\def\heeltoe{\vbox{\myheel\mytoe}} -\def\toeheel{\vbox{\mytoe\myheel}} -%% -\def\emptybar{} -\def\thinbar{\vrule height\balkhoog} -\def\thickbar{\vrule height\balkhoog width 2\smallspace} -\def\maatstreep{\thinbar} +% stacked horizontal lines +\def\interscoreline{\vskip 16pt} +\def\setdynamic#1{\dynfont #1} +\def\setfinger#1{\fingerfont #1} +\def\setnumber#1{\fetanummer #1} +\def\setnumberj#1{\fetanummerj #1} +\def\setmark#1{\markfont #1} + +% 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} %FIXME +} + +\input dyndefs +\input fetdefs -%? what-s wrong with rightalign? -\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\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}} +\def\emptybar{} + +\def\defaultthinbar{\thinbar{\staffheight}} +\def\defaultthickbar{\thickbar{\staffheight}} +%? what-s wrong with rightalign? +\def\repeatstopbar{\rightalign{\repeatcolon\kern2\smallspace\defaultthinbar\kern\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} +%urg +\fetdef\repeatcolon{20} +\def\repeatbar#1{\repeatstopbar} +\def\startrepeat#1{\repeatstartbar} +\def\repeatbarstartrepeat#1{\repeatstopstart} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % parametric symbols %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\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}} -% stacked numbers -\def\generalmeter#1#2{\botalign{\vbox to\balkhalf{\vss \meterfont#1}% - \nointerlineskip - \vbox to \balkhalf{\vss\meterfont #2}}} +\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\stafflinethickness} % 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\fatdoublebar#1{\hbox{\phantom{\repeatcolon\kern2\smallspace}\thickbar{#1}\kern\smallspace\thickbar{#1}}} -% stacked horizontal lines -\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}}}} +\def\extender#1{\vrule width#1 height .8\stafflinethickness} +% ugh +% see e.g. input/test/beam-pos.ly % -% a staffsymbol with #1 lines, width #2 -% bottom at baseline -\def\linestafsym#1#2{\leftalign{\botalign{\lines{#1}{#2}}}} - -\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\musicdraw\char\count0} -\def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0} -\def\settext#1{\textfont #1} -\def\setitalic#1{\italicfont #1} -\def\setdynamic#1{\dynfont #1} +% something's wrong with the aligment; sometimes all symbols +% look to be placed a bit too high (there's an ugly fix for +% the staccato-dot in script.cc) +% but this varies from line to line: it seems that xdvi +% does some rounding; i can't really check this from screen on i +% 600x600 res. +% +\def\rulesym#1#2{\dimen0=#1 %obsolete + \vrule height .5\dimen0 depth .5\dimen0 width #2} +\def\shiftedrulesym#1#2{\dimen0=#1% + \vrule height .7\dimen0 depth .3\dimen0 width #2} +\def\tinyrulesym#1#2{\dimen0=#1% + \vrule height .1\dimen0 depth .1\dimen0 width #2} +%would be nice for checking alignment +\def\openrulesym#1#2{\dimen0=#1% + \vbox to \dimen0{\vss% + \hbox{\vrule height .1\dimen0 width #2}% + \hbox{\vrule height .2\dimen0 width 0pt}% + \hbox{\vrule height .4\dimen0 width #2}% + \hbox{\vrule height .2\dimen0 width 0pt}% + \hbox{\vrule height .1\dimen0 width #2}% + \vss}} +%\let\rulesym\shiftedrulesym +%\let\rulesym\tinyrulesym +%\let\rulesym\openrulesym % the interline symbol. Redefine to remove it. \def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}} @@ -318,14 +226,27 @@ } -% redefine if not happy with interline spacing -% -\def\interstaffline{% - \vskip 10pt -} -\def\interscoreline{\beauty} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% big fat marks, if errors are detected. -\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}} -\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}} +\def\postheader{} + +% +% macros suck. \ifundefined{nolilyfooter} gives wierd errors from time +% to time. +% + +% +% Warning: the order is conceptually weird. It says: + +% if not defined (``nolilyfooter''): +% do_footer () +% else +% dont_do_footer () +% +\ifx\csname nolilyfooter\endcsname\relax + \message{[footer defined]}% + \csname lilyfooter\texsuffix\endcsname% +\else + \message{[footer empty]} + \csname% + nolilyfooter\texsuffix\endcsname +\fi