%%%%%%%%%% 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 \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