]> git.donarmstrong.com Git - lilypond.git/blob - tex/lilyponddefs.tex
ca18e61502f7abfcef7bce3731db28d2d7f729da
[lilypond.git] / tex / lilyponddefs.tex
1 %%
2 %% include file for LilyPond
3 %%
4 %% this file defines various macros to accomodate lilypond output
5
6 % TeXbook ex 7.7
7 \def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
8
9 \def\SkipLilydefs{\endinput}
10 \ifundefined{EndLilyPondOutput}
11         \def\EndLilyPondOutput{\csname bye\endcsname}
12         \def\SkipLilydefs{}
13 \fi
14 \SkipLilydefs
15 % should use \endinput
16
17         \def\mdef#1#2{\def#1{\mchar{#2}}}
18 \def\mchar#1{\musicfnt\char#1}
19 \def\rationalmultiply#1*#2/#3{\multiply #1 by #2 \divide #1 by #3}
20 \def\maccentraise#1#2{\dimen0=\noteheight
21         \rationalmultiply\dimen0*#2%
22         \raise\dimen0\hbox{#1}}
23 \def\maccentdef#1#2#3{\def#1{\maccentraise{\mchar{#2}}{#3}}}
24 \def\vertcenter#1{\vbox to 0pt{\vss #1\vss}}
25
26 \def\mathdef#1#2{\def#1{\mathchar{#2}}}
27 \def\mathchar#1{\mathfont\char#1}
28
29 \def\topalign#1{\vbox to 0pt{#1\vss}}
30 \def\botalign#1{\vbox to 0pt{\vss #1}}
31
32 \def\centeralign#1{\hbox to 0pt{\hss#1\hss}}
33 \def\leftalign#1{\hbox to 0pt{#1\hss}}
34 \def\rightalign#1{\hbox to 0pt{\hss#1}}
35
36
37 %% musix defs
38 \parindent=0pt
39 \newdimen\smallspace
40 \newdimen\interlinedist
41         \newcount\n
42         \newdimen\balkhoog
43         \newdimen\notewidth
44         \newdimen\noteheight
45         \newdimen\notewidthhalf
46         \newdimen\notewidthdouble
47         \newdimen\staffrulethickness
48         \newdimen\interstaffrule
49 \newdimen\balkhalf
50 \def\musixtwentydefs{
51         \font\textfont=cmr10
52         \font\meterfont=cmbx12
53         \font\slurufont=xslu20
54         \font\slurdfont=xsld20
55         \font\slurhfont=xslz20
56         \font\hslurufont=xslhu20
57         \font\hslurdfont=xslhd20
58         \font\hslurhfont=xslhz20
59         \font\musicfnt=musix20
60         \font\musicdraw=musixsps
61         \font\italicfont=cmti10
62         \font\dynfont=cmbxti10 scaled \magstep1
63         \font\mathfont=cmsy10
64         \balkhoog=20pt
65         \notewidth=6pt
66         \noteheight=5pt
67         \staffrulethickness=0.4pt
68         \musixcalc
69 }
70
71
72 \def\musixsixteendefs{
73         \font\textfont=cmr8
74         \font\meterfont=cmbx12
75         \font\italicfont=cmti8
76         \font\slurufont=xslu16
77         \font\slurdfont=xsld16
78         \font\slurhfont=xslz20 % sigh
79         \font\hslurufont=xslhu16
80         \font\hslurdfont=xslhd16
81         \font\hslurhfont=xslhz20
82         \font\musicfnt=musix16
83         \font\dynfont=cmbxti12
84         \font\musicdraw=musixsps
85         \font\mathfont=cmsy8
86         \balkhoog=16pt
87         \staffrulethickness=0.4pt
88         \notewidth=5pt
89         \noteheight=4pt
90         \musixcalc
91 }
92
93 \def\musixcalc{
94         \interlinedist=\fontdimen5\musicfnt
95         \smallspace=.3\interlinedist
96         \interstaffrule=\balkhoog
97         \advance\interstaffrule by-\staffrulethickness
98         \divide\interstaffrule by 4
99         \advance\interstaffrule by -\staffrulethickness
100         \notewidthhalf=\notewidth
101         \notewidthdouble=\notewidth
102         \rationalmultiply \notewidthhalf*1/2
103         \multiply \notewidthdouble by 2
104                \balkhalf=\balkhoog
105  \rationalmultiply\balkhalf*1/2 
106 }
107 % \def\dyn{\italicfont}
108 \def\dyn{\dynfont}
109 \def\kdynf{\dynfont f\kern-.1ex}
110 \def\kdynm{\dynfont m\kern-.15ex}
111 \def\kdynp{\dynfont p\kern-.15ex}
112
113
114 \def\dynp{\dynfont p}
115 \def\dynpp{\dynp\kdynp}
116 \def\dynppp{\dynpp\kdynp}
117 \def\dynmp{\dynfont m\kdynp}
118 \def\dynmf{\dynfont m\kdynf}
119 \def\dynf{\dynfont f}
120 \def\dynff{\dynf\kdynf}
121 \def\dynfff{\dynff\kdynf}
122
123 \def\slurcharh#1{{\slurhfont\char#1}}
124 \def\slurcharu#1{{\slurufont\char#1}}
125 \def\slurchard#1{{\slurdfont\char#1}}
126 \def\hslurcharh#1{{\hslurhfont\char#1}}
127 \def\hslurcharu#1{{\hslurufont\char#1}}
128 \def\hslurchard#1{{\hslurdfont\char#1}}
129
130 \mdef\quartball{'007}
131 \mdef\halfball{'010}
132 \mdef\wholeball{'011}
133 \mdef\halfrest{'074}
134 \mdef\wholerest{'075}
135 \mdef\quartrest{62}
136 \mdef\eighthrest{63}
137 \mdef\sixteenthrest{64}
138 \mdef\thirtysecondrest{65}
139 \mdef\sharp{52}
140 \mdef\flat{50}
141 \mdef\natural{54}
142 \mdef\sharpsharp{53}
143 \mdef\flatflat{51}
144
145 \mdef\singledot{'00}
146 \mdef\doubledot{'01}
147 \mdef\tripledot{'02}
148 \mdef\mussepline{155}
149
150 \mdef\violinclef{71}
151 \mdef\bassclef{73}
152 \mdef\altoclef{75}
153 \mdef\cviolinclef{72}
154 \mdef\cbassclef{74}
155 \mdef\caltoclef{76}
156
157 \mdef\deigthflag{45}
158 \mdef\dsixteenthflag{46}
159 \mdef\dthirtysecondflag{47}
160
161 % pointing up
162 \mdef\ueigthflag{40}
163 \mdef\usixteenthflag{41}
164 \mdef\uthirtysecondflag{42}
165
166 \maccentdef\repeatcolon{55}{2/1}
167 \def\emptybar{}
168
169 \def\thinbar{\vrule height\balkhoog}
170 \def\thickbar{\vrule height\balkhoog width 2\smallspace}
171 \def\maatstreep{\thinbar}
172 %? what-s wrong with rightalign?
173 \def\finishbar{\rightalign{\thinbar\kern\smallspace\thickbar}}
174 %%% \def\finishbar{\hss\rightalign{\thinbar\kern\smallspace\thickbar}}
175 % \def\repeatstopbar{\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}}
176 \def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}}
177 \def\repeatstartbar{\hbox{\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}}
178 \def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar\kern\smallspace\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}}
179 \def\doublebar{\hbox{\thinbar\hskip\smallspace\thinbar}}
180
181 %compatability
182 \def\repeatbar{\repeatstopbar}
183 \def\startrepeat{\repeatstartbar}
184 \def\repeatbarstartrepeat{\repeatstopstart}
185
186 \def\generalmeter#1#2{\botalign{\vbox to\balkhalf{\vss \meterfont#1}%
187         \nointerlineskip
188         \vbox to \balkhalf{\vss\meterfont #2}}}
189 \def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}}
190 \def\lineseparator{\defaultlineseparator}
191 \def\beauty{%
192         \par\vskip 10pt plus 30pt minus 10pt\par
193         \hskip -5pt\lineseparator
194         \par\vskip 10pt plus 30pt minus 10pt\par
195 }
196
197 \def\interstaffline{%
198         \vskip 10pt
199 }
200 \def\ugly{\nointerlineskip\par
201 \vskip 40pt\par\vbox{\leftalign{\vrule width30pt height1pt}}\par\vskip 40pt
202 }
203 \def\interscoreline{\beauty}
204
205
206 \def\lines#1#2{%
207  \vbox{\kern-\interstaffrule
208         \n=0\nointerlineskip%
209         \loop\ifnum\n<#1\advance\n by1%
210                 \kern\interstaffrule
211                 \hrule height \staffrulethickness width#2
212                 \repeat
213         }}
214
215 \def\toplines#1{ % why space needed here?
216         \topalign{\hbox{\kern-\notewidth\lines{#1}{\notewidthdouble}}}}
217 \def\botlines#1{ % idem ditto
218         \botalign{\hbox{\kern-\notewidth\lines{#1}{\notewidthdouble}}}}
219
220 %
221 % a staffsymbol with #1 lines, width #2
222 % bottom at baseline
223 \def\linestafsym#1#2{\leftalign{\botalign{\lines{#1}{#2}}}}
224
225 \def\eigthflag{\topalign{\ueigthflag}}
226 \def\sixteenthflag{\topalign{\usixteenthflag}}
227 \def\thirtysecondflag{\topalign{\uthirtysecondflag}}
228
229 \def\cquartrest{\vertcenter\quartrest}
230 \def\ceighthrest{\vertcenter\eighthrest}
231 \def\csixteenthrest{\vertcenter\sixteenthrest}
232 \def\cthirtysecondrest{\vertcenter\thirtysecondrest}
233
234 \def\lsingledot{\kern-\notewidth\singledot}
235 \def\ldoubledot{\kern-\notewidth\doubledot}
236 \def\ltripledot{\kern-\notewidth\tripledot}
237
238 \maccentdef\sforzato{30}{-3/2}
239 \maccentdef\marcato{20}{-1/1}
240 \maccentdef\imarcato{21}{1/1}
241 \maccentdef\staccato{24}{-1/3}
242 \maccentdef\istaccato{25}{1/3}
243 \maccentdef\staccatissimo{28}{-5/5}
244 \maccentdef\istaccatissimo{29}{2/5}
245 \maccentdef\portato{18}{-6/5}
246 \maccentdef\iportato{19}{3/5}
247 \maccentdef\tenuto{26}{-1/1}
248 \maccentdef\itenuto{27}{1/1}
249 \maccentdef\fermata{80}{-1/1}
250 \maccentdef\ifermata{81}{1/1}
251
252 \mdef\spicato{28}
253 \mdef\ispicato{29}
254 \mdef\upbow{23}
255 \mdef\downbow{22}
256
257 \mathdef\cup{91} % \cup
258 \mathdef\wedge{94} % \wedge
259 \mathdef\striepke{0} % heu?
260
261 %% custom characters --- this should go: add to (meta!) font
262 \def\myheel{\kern-.5ex\vbox{\cup}\kern-.5ex}
263 \def\mytoe{\kern-.5ex\vbox{\wedge}\kern-.5ex}
264 \def\mystriepke{\kern-1.1ex\vbox{\hbox{\kern-.05em\striepke}}\kern-1.1ex}
265
266 \def\heel{\vbox{\myheel}}
267 \def\toe{\vbox{\mytoe}}
268 \def\backorfront{\mystriepke}
269
270 \def\bheel{\vbox{\myheel\mystriepke}}
271 \def\btoe{\vbox{\mytoe\mystriepke}}
272 \def\fheel{\vbox{\mystriepke\myheel}}
273 \def\ftoe{\vbox{\mystriepke\mytoe}}
274 \def\heeltoe{\vbox{\myheel\mytoe}}
275 \def\toeheel{\vbox{\mytoe\myheel}}
276 %%
277
278 \def\stem#1#2{\vrule height#2 depth-#1}
279
280 \def\placebox#1#2#3{%
281         \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}%
282 }
283
284
285 \def\beamslope#1#2{{\count0=#2\advance\count0 by#1\musicfnt\char\count0}}
286 \def\rulesym#1#2{\vrule height #1 width #2}
287 \def\crescendosym#1{\count0=84\advance\count0 by #1\musicdraw\char\count0}
288 \def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0}
289 \def\settext#1{\textfont #1}
290 \def\setitalic#1{\italicfont #1}
291 \def\setdynamic#1{\dynfont #1}
292
293         
294