summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/latex4musicians/Figures/musixtab.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/latex4musicians/Figures/musixtab.tex')
-rw-r--r--Master/texmf-dist/doc/latex/latex4musicians/Figures/musixtab.tex256
1 files changed, 256 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/latex4musicians/Figures/musixtab.tex b/Master/texmf-dist/doc/latex/latex4musicians/Figures/musixtab.tex
new file mode 100644
index 00000000000..5505918de24
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/latex4musicians/Figures/musixtab.tex
@@ -0,0 +1,256 @@
+% Extension for MusiXTeX - Guitar Tablatures
+%
+% This file contains some macros which extend MusiXTeX with some
+% common notations for guitar tablatures. It is recommended that
+% you use a 6-line system (assuming a 6-string guitar) and increase
+% the space between its staves, e.g.:
+%
+% \setlines16
+% \setsize1\largevalue
+\makeatletter
+
+% Clef symbol that displays "TAB" vertically (looks best with
+% \smallmusicsize)
+\def\tabclefsymbolsmall{\vtop to .75\Interligne{%
+ \vss%
+ \hbox to 2.5\Interligne{\hss\tinytype\bf T}%
+ \vskip -1\Interligne
+ \hbox to 2.5\Interligne{\hss\tinytype\bf A}%
+ \vskip -1\Interligne
+ \hbox to 2.5\Interligne{\hss\tinytype\bf B}}}
+
+% Display guitar string numbers on staves
+%
+% Usage: \str{<string>}{<number>}
+% <string>: string number between 1 and 6
+% <number>: any number (or other text) to put onto the string
+% (usually a fret number between 0 and 24)
+%
+% \str inserts horizontal space after the number (like other
+% MusiXTeX notes). To insert a non-spacing string note, use
+% \zstr.
+\def\strerr{\errmessage{str macro requires a string number from 1--6}}
+\def\zstr#1#2{%
+ \ifcase#1\relax\strerr
+ \or\def\@strnr{-1}%
+ \or\def\@strnr{1}%
+ \or\def\@strnr{3}%
+ \or\def\@strnr{5}%
+ \or\def\@strnr{7}%
+ \or\def\@strnr{9}%
+ \else\strerr
+ \fi
+ \cchar\@strnr{\tinytype\bf\roffset{.35}{#2}}}
+\def\str#1#2{\zstr{#1}{#2}\sk}
+
+% Insert a Palm Mute indicator (P.M.) starting at the current position.
+%
+% Usage: \palmmute{<pitch>}{<length>}
+% <pitch>: vertical level at which the palm mute is placed
+% <length>: length of the line in multiples of \noteskip
+%
+% This will insert a palm mute indicator looking similar to this:
+% P.M.-----------|
+% If <length> is sufficiently small, no line will be inserted, just
+% P.M.
+\newtoks\@pmstring
+\chardef\@pmlinechar=45
+\chardef\@pmendchar=21
+\newdimen\@pmboxminwd
+\@pmboxminwd=2.3em
+\def\palmmute{\check@staff
+ \n@v\@pmlinechar \n@ii\@pmendchar\global\@pmstring={P.M.}\fi
+ \@drawpm}
+\def\@drawpm#1#2{\check@staff
+ \y@v#2\noteskip%
+ \ifnum #2<2
+ \zcharnote{#1}{\loff{\hbox\@to\@pmboxminwd{%
+ \@pminit}}}%
+ \else
+ \zcharnote{#1}{\loff{\hbox\@to\y@v{%
+ \@pminit\xleaders\hbox{\char\n@v}\hfill\mxsps\char\n@ii}}}%
+ \fi\fi}
+\def\@pminit{%
+ \setbox\w@rkbox\hbox{\tinytype\the\@pmstring}%
+ \box\w@rkbox}
+
+% Insert a Hammer On or Pull Off symbol.
+%
+% Usage: \hammeron{<pitch>}{<offset>}
+% \pulloff{<pitch>}{<offset>}
+% <pitch>: vertical level at which the symbol is placed
+% <offset>: horizontal offset from the current position
+% in note head widths
+%
+% \hammeron will insert an "H", while \pulloff will insert
+% a "P".
+\def\hammeron#1#2{%
+ \ccharnote{#1}{\tinytype\roffset{#2}{H}}}
+\def\pulloff#1#2{%
+ \ccharnote{#1}{\tinytype\roffset{#2}{P}}}
+
+% Insert a Natural Harmonics or Artifical Harmonics
+% indicator.
+%
+% Usage: \harmonics{<pitch>}{<offset>}
+% \aharmonics{<pitch>}{<offset>}
+% <pitch>: vertical level at which the symbol is placed
+% <offset>: horizontal offset from the current position
+% in note head widths
+%
+% \harmonics will insert "Harm.", while \aharmonics will
+% insert "A.H.".
+\def\harmonics#1#2{%
+ \ccharnote{#1}{\tinytype\roffset{#2}{Harm.}}}
+\def\aharmonics#1#2{%
+ \ccharnote{#1}{\tinytype\roffset{#2}{A.H.}}}
+
+% Insert a bend indicator at the current position.
+%
+% Usage: \bendhalf{<pitch>}{<textpitch>}{<offset>}
+% \bendfull{<pitch>}{<textpitch>}{<offset>}
+% <pitch>: vertical level at which the lower end of the
+% bend curve is placed
+% <textpitch>: vertical level at which the text is placed
+% <offset>: horizontal offset from the current position
+% in note head widths
+%
+% \bendhalf uses the text "1/2", while \bendfull uses the
+% text "Full".
+%
+% There are more commands like \Bendhalf, \Bendfull, and
+% \Bend, which allow full control over the curve parameters,
+% text etc. However, they should rarely be necessary.
+\newtoks\@bendslurid
+\newtoks\@bendstring
+\newtoks\@bendho
+\newtoks\@bendvo
+\newtoks\@bendht
+\newtoks\@bendvt
+\newtoks\@bendcur
+\newtoks\@bendang
+\@bendslurid={14}
+
+\def\@rstbendho{\global\@bendho={2}}
+\def\@rstbendvo{\global\@bendvo={2}}
+\def\@rstbendht{\global\@bendht={4}}
+\def\@rstbendvt{\global\@bendvt={6}}
+\def\@rstbendcur{\global\@bendcur={-.4}}
+\def\@rstbendang{\global\@bendang={.2}}
+\def\@rstbend{\@rstbendho\@rstbendvo\@rstbendht\@rstbendvt\@rstbendcur\@rstbendang}
+
+\def\@setbendstring#1{\global\@bendstring={#1}}
+\def\@setbendho#1{\global\@bendho={#1}}
+\def\@setbendvo#1{\global\@bendvo={#1}}
+\def\@setbendht#1{\global\@bendht={#1}}
+\def\@setbendvt#1{\global\@bendvt={#1}}
+\def\@setbendcur#1{\global\@bendcur={#1}}
+\def\@setbendang#1{\global\@bendang={#1}}
+
+\def\bendhalf{\check@staff
+ \@rstbend\@setbendstring{1/2}\fi
+ \@drawbend}
+\def\Bendhalf#1#2{\check@staff
+ \@rstbend\@setbendstring{1/2}%
+ \@setbendht{#1}\@setbendvt{#2}\fi
+ \@drawbend}
+\def\bendfull{\check@staff
+ \@rstbend\@setbendstring{Full}\fi
+ \@drawbend}
+\def\Bendfull#1#2{\check@staff
+ \@rstbend\@setbendstring{Full}%
+ \@setbendht{#1}\@setbendvt{#2}\fi
+ \@drawbend}
+\def\Bend#1#2#3#4#5#6#7{\check@staff
+ \@rstbend\@setbendstring{#1}%
+ \@setbendho{#2}\@setbendvo{#3}\@setbendht{#4}%
+ \@setbendvt{#5}\@setbendcur{#6}\@setbendang{#7}\fi
+ \@drawbend}
+\def\@drawbend#1#2#3{\check@staff
+ \roffset{#3}{\iSlur{\the\@bendslurid}{#1}{\the\@bendvo}{\the\@bendho}%
+ \tSlur{\the\@bendslurid}{#1}{\the\@bendvt}{\the\@bendht}{\the\@bendcur}{\the\@bendang}%
+ \ccharnote{#2}{\tinytype\roffset{\the\@bendho}{\the\@bendstring}}}%
+ \fi}
+
+% Insert a slide indicator at the current position.
+%
+% Usage: \gslide{<pitch>}{<length>}{<slope>}
+% \gslidet{<pitch>}{<length>}{<slope>}{<textpitch>}{<textoffset>}
+% \gSlide{<pitch>}{<voffset>}{<length>}{<slope>}
+% \gSlidet{<pitch>}{<voffset>}{<length>}{<slope>}{<textpitch>}{<textoffset>}
+% <pitch>: vertical level at which the beginning of the
+% line is placed
+% <voffset>: additional vertical offset (for fine-tuning
+% the line position)
+% <length>: length of the line (values smaller than 2
+% may cause weird behavior)
+% <slope>: slope of the line (should be in [-20,20] range)
+% <textpitch>: vertical level at which the text is placed
+% <textoffset>: horizontal offset from the current position
+% in note head widths for the text
+%
+% These commands insert a straight line. The text versions
+% additionally insert the text "sl." in italics.
+\newtoks\@gslidestring
+\newtoks\@gslideho
+\newtoks\@gslidevp
+\newtoks\@gslidevo
+\newtoks\@gslidelen
+\newtoks\@gslideslp
+\newtoks\@gslidestrho
+\newtoks\@gslidestrvp
+
+\def\@rstgslideho{\global\@gslideho={1.5}}
+\def\@rstgslidevp{\global\@gslidevp={m}}
+\def\@rstgslidevo{\global\@gslidevo={0}}
+\def\@rstgslidelen{\global\@gslidelen={3}}
+\def\@rstgslideslp{\global\@gslideslp={-10}}
+\def\@rstgslidestrho{\global\@gslidestrho={1.8}}
+\def\@rstgslidestrvp{\global\@gslidestrvp={p}}
+\def\@rstgslide{\@rstgslideho\@rstgslidevp\@rstgslidevo\@rstgslidelen\@rstgslideslp\@rstgslidestrho\@rstgslidestrvp}
+
+\def\@setgslidestring#1{\global\@gslidestring={#1}}
+\def\@setgslideho#1{\global\@gslideho={#1}}
+\def\@setgslidevp#1{\global\@gslidevp={#1}}
+\def\@setgslidevo#1{\global\@gslidevo={#1}}
+\def\@setgslidelen#1{\global\@gslidelen={#1}}
+\def\@setgslideslp#1{\global\@gslideslp={#1}}
+\def\@setgslidestrho#1{\global\@gslidestrho={#1}}
+\def\@setgslidestrvp#1{\global\@gslidestrvp={#1}}
+
+\def\gslide#1#2#3{\check@staff
+ \@rstgslide\@setgslidevp{#1}%
+ \@setgslidelen{#2}\@setgslideslp{#3}\fi
+ \@drawgslide}
+\def\gslidet#1#2#3#4#5{\check@staff
+ \@rstgslide\@setgslidevp{#1}%
+ \@setgslidelen{#2}\@setgslideslp{#3}%
+ \@setgslidestrvp{#4}\@setgslidestrho{#5}\@setgslidestring{sl.}\fi
+ \@drawgslide\@drawgslidestr}
+\def\gslideT#1#2#3#4#5#6{\check@staff
+ \@rstgslide\@setgslidevp{#1}%
+ \@setgslidelen{#2}\@setgslideslp{#3}%
+ \@setgslidestrvp{#4}\@setgslidestrho{#5}\@setgslidestring{#6}\fi
+ \@drawgslide\@drawgslidestr}
+\def\gSlide#1#2#3#4{\check@staff
+ \@rstgslide\@setgslidevp{#1}\@setgslidevo{#2}%
+ \@setgslidelen{#3}\@setgslideslp{#4}\fi
+ \@drawgslide}
+\def\gSlidet#1#2#3#4#5#6{\check@staff
+ \@rstgslide\@setgslidevp{#1}\@setgslidevo{#2}%
+ \@setgslidelen{#3}\@setgslideslp{#4}%
+ \@setgslidestrvp{#5}\@setgslidestrho{#6}\@setgslidestring{sl.}\fi
+ \@drawgslide\@drawgslidestr}
+\def\gSlideT#1#2#3#4#5#6#7{\check@staff
+ \@rstgslide\@setgslidevp{#1}\@setgslidevo{#2}%
+ \@setgslidelen{#3}\@setgslideslp{#4}%
+ \@setgslidestrvp{#5}\@setgslidestrho{#6}\@setgslidestring{#7}\fi
+ \@drawgslide\@drawgslidestr}
+\def\@drawgslide{\check@staff
+ \zcharnote{\the\@gslidevp}{\roffset{\the\@gslideho}{\varline{\the\@gslidevo}{\the\@gslidelen\qn@width}{\the\@gslideslp}}}%
+ \fi}
+\def\@drawgslidestr{\check@staff
+ \zcharnote{\the\@gslidestrvp}{\tinytype\it\roffset{\the\@gslidestrho}{\the\@gslidestring}}%
+ \fi}
+
+\makeatother