diff options
Diffstat (limited to 'macros/generic/musixtex/tex/musixbar.tex')
-rw-r--r-- | macros/generic/musixtex/tex/musixbar.tex | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/macros/generic/musixtex/tex/musixbar.tex b/macros/generic/musixtex/tex/musixbar.tex new file mode 100644 index 0000000000..5e748aae6d --- /dev/null +++ b/macros/generic/musixtex/tex/musixbar.tex @@ -0,0 +1,148 @@ +%%%%%%%%%% Hiding/printing bar lines individually %%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Here comes a bunch of rather general macros which enable printing or +% hiding barlines for each staff and inter-staff space individually: +% +% Mthimkhulu Molekwa <MMolekwa@rrs.co.za> + +\ifx\indivbarrules\undefined\else\endinput\fi + +\immediate\write16{MusiXBAR printing or hiding seperate bar lines 1.01\space<23 Februar 2000>}% + +\edef\catcodeat{\the\catcode`\@}\catcode`\@=11 + +%\makeatletter + +\newdimen\barline@depth + +\def\rul@indiv#1{% + \n@loop + \Comp@High + \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname\relax + \multiply\barline@depth -1\relax + \advance\barline@depth\altitude + \else + \barline@depth=0pt\relax + \fi + {\expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 1% + \y@v=0pt\relax + \fi + \raise\altitude\rlap{\vrule\@depth\barline@depth\@width#1\@height\y@v}}% + \barline@depth\altitude + \advance\barline@depth\y@v + \repeat + \addspace#1} + +\def\rul@indiv@#1{\n@loop{\prul@indiv@#1}\repeat\addspace#1} + +\def\prul@indiv@#1{% + \y@v\interportee \C@Inter\advance\y@v-\stem@skip + \expandafter\ifx\csname s@b\romannumeral\noinstrum@nt\endcsname\relax + \multiply\barline@depth -1\relax + \advance\barline@depth\altitude + \else + \barline@depth=0pt\relax + \fi + {\expandafter\ifx\csname h@bl\romannumeral\noinstrum@nt\endcsname 1% + \y@v=0pt\relax + \fi + \p@loop + \raise\altportee\rlap{% + \vrule\@depth\barline@depth\@width#1\@height\y@v}% + \count@portee + \repeat}% + \barline@depth\altitude + \advance\barline@depth\y@v} + +%== Required to use the following macros +\def\indivbarrules{% + \let\writ@rule\rul@indiv + \sepbarrule 1} + +\def\Indivbarrules{% + \let\writ@rule\rul@indiv@ + \sepbarrule 1} + +%== separates bar line of specified instrument from one of previous instrument +\def\sepbarrule#1{\expandafter\let\csname s@b\romannumeral#1\endcsname 1} + +%== connects bar line of specified instrument to one of previous instrument +\def\conbarrule#1{% + \if 1#1\else\expandafter\let\csname s@b\romannumeral#1\endcsname\relax\fi} + +%== hides bar line for specified instrument +\def\hidebarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname 1} + +%== shows bar line for specified instrument +\def\showbarrule#1{\expandafter\let\csname h@bl\romannumeral#1\endcsname\relax} + +%== separates barlines in multistaff instruments +\def\rul@sep@#1{\n@loop{\prul@sep#1}\repeat\addspace#1} + +\def\prul@sep#1{% + \y@v\interportee \C@Inter\advance\y@v-\stem@skip + \p@loop + \hbox{\raise\altportee\rlap{% + \vrule\@depth\hlthick\@width#1\@height\y@v}}% + \count@portee\repeat} + +\def\Sepbarrules{\let\writ@rule\rul@sep@ } + +%-\makeatother + +\catcode`\@=\catcodeat +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Here comes an example of how to use these macros + +%%%%% Pre-amble +\input musixtex +\input musixbar + +\instrumentnumber3 +\setmeter3{{\meterfrac{3}{4}}} +\setmeter2{{\meterfrac{2}{4}}} +\setmeter1{{\meterfrac{3}{8}}} +\nobarnumbers +\indivbarrules +\sepbarrule2 +\sepbarrule3 + +%%%%% Spacing +\beforeruleskip=0.5\afterruleskip +\interinstrument=4\Interligne + +%%%%% Macros +\let\ni\nextinstrument + +%%%%% Music +\linegoal2 +\startpiece\addspace\afterruleskip +\NOtes\pt f\qa f\ni\qa f\ni\qa f\en +\hidebarrule2\hidebarrule3\bar +\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en +\showbarrule2\bar +\NOtes\pt f\qa f\ni\qa f\ni\qa f\en +\hidebarrule2\showbarrule3\bar +\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en +\showbarrule2\hidebarrule3\bar +\NOtes\pt f\qa f\ni\qa f\ni\qa f\en +\hidebarrule2\bar +\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en +\showbarrule2\showbarrule3\bar +\NOtes\pt f\qa f\ni\qa f\ni\qa f\en +\hidebarrule2\hidebarrule3\bar +\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en +\showbarrule2\bar +\NOtes\pt f\qa f\ni\qa f\ni\qa f\en +\hidebarrule2\showbarrule3\bar +\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en +\showbarrule2\hidebarrule3\bar +\NOtes\pt f\qa f\ni\qa f\ni\qa f\en +\hidebarrule2\bar +\NOtes\multnoteskip{.333}\Tqbu fff\ni\qa f\ni\qa f\en +\showbarrule2\showbarrule3\stoppiece +\bye + |