summaryrefslogtreecommitdiff
path: root/info/latex4musicians/latex4musicians.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/latex4musicians/latex4musicians.tex
Initial commit
Diffstat (limited to 'info/latex4musicians/latex4musicians.tex')
-rw-r--r--info/latex4musicians/latex4musicians.tex3107
1 files changed, 3107 insertions, 0 deletions
diff --git a/info/latex4musicians/latex4musicians.tex b/info/latex4musicians/latex4musicians.tex
new file mode 100644
index 0000000000..fb2bd31925
--- /dev/null
+++ b/info/latex4musicians/latex4musicians.tex
@@ -0,0 +1,3107 @@
+% latex4musicians.tex -*- LaTeX -*-
+%
+% By Guido Gonzato, PhD <guido.gonzato (at) gmail.com>
+%
+% Last updated: January 19, 2019
+
+% \RequirePackage[l2tabu,orthodox]{nag} % LaTeX syntax check
+
+\documentclass[a4paper,12pt]{article}
+\usepackage{etoolbox} % fix alltt
+\usepackage{fancyhdr} % fancy headers
+\usepackage{metalogo} % LaTeX logos
+\usepackage{wasysym} % for \twonotes
+\usepackage{graphicx} % include PDF files
+\usepackage[colorlinks,%
+ linkcolor=red,%
+ urlcolor=blue,%
+ filecolor=blue,%
+ breaklinks=true]%
+ {hyperref} % URLs and links
+\urlstyle{same} % use the same font for links
+\usepackage{setspace} % for sources
+\usepackage{fancyvrb} % fancy verbatim
+\usepackage{color} % for included pages
+\pagecolor{white} % don't disrupt pdfpages
+\usepackage{pdfpages} % include external pages
+\usepackage[breakable]%
+{tcolorbox} % shaded boxes
+\usepackage{alltt} % for sources
+\usepackage{textcomp} % for upquote
+\usepackage{upquote} % fix ' in PDF output
+\usepackage{boxedminipage} % for LaTeX examples
+
+\include{params} % low-level formatting stuff
+\pagestyle{fancy} % fancy headers
+
+% -----
+
+\begin{document}
+
+\title{\LaTeX{} for {\huge\twonotes{}}usicians}
+
+\author{Guido Gonzato, PhD}
+
+\date{Version \version\\
+\today}
+
+\maketitle
+
+\begin{center}
+ \includegraphics[width=\textwidth]{jingle.pdf}
+\end{center}
+
+\begin{abstract}
+
+ This guide shows how to create \LaTeX{} documents that include
+ several kinds of music elements, from very simple to quite complex.
+ Music features may consist of music symbols, song lyrics, guitar
+ chords diagrams, lead sheets, music excerpts, guitar tablatures,
+ multi-page scores.
+
+ Music can be produced directly by \TeX{} and \LaTeX{} using
+ packages, and also by external scorewriters. Major packages and
+ programs are listed and briefly described, providing ready-to-use
+ examples.
+
+\end{abstract}
+
+\tableofcontents
+% \listoftables
+% \listoffigures
+
+\noteseparator
+
+% -----
+
+\section{Introduction}
+
+~ \hfill%
+\begin{minipage}{0.7\linewidth}
+ \begin{quote}
+ [And] there is no such hobby that it cannot be combined with \LaTeX.
+
+ ~ \hfill --- \href{http://www.mychemistry.eu/2013/04/guitar-tablatures/}
+ {Clemens Niederberger}
+ \end{quote}
+\end{minipage}
+
+\bigskip
+
+I'm a long-time and enthusiastic \LaTeX{} user, and I'm also an
+amateur musician; I play folk music on wind instruments. Years ago, I
+used \LaTeX{} to typeset my
+\href{http://abcplus.sourceforge.net/#ABCGuide}{ABC notation tutorial}
+that I'm still maintaining. Writing that tutorial, I included many PDF
+music snippets along with the corresponding ABC sources, and I was
+very satisfied with the result. (Hopefully, other people were
+satisfied, too.)
+
+Since then, I have become interested in other music notation
+languages. I have come across many excellent programs and many great
+packages I wasn't aware of; I have collected many music snippets and I
+have taken notes. I must say that I'm impressed; there are plenty of
+options for the musician who is also a \LaTeX{} user. In fact, \TeX{}
+can typeset music by itself using extensions, such as the MusiX\TeX{}
+family. Besides, \LaTeX{} can easily include music produced by other
+scorewriters.
+
+So, to write \LaTeX{} documents that include music we have to solve
+two problems: how do we make the music in a suitable format? And how
+do we combine the music with \LaTeX?
+
+For my own self-training, and in the hope of doing something useful
+for other musicians, I have decided to write this guide that explains
+how to solve these problems in many ways. In particular, it shows how
+to create documents that include many types of music information, from
+very simple to quite complex:
+
+\begin{itemize}
+
+ \item \hyperref[sec:musicsymbols]{music symbols}:
+ \begin{minipage}[c]{\linewidth}
+ \includegraphics{glyphs}
+ \end{minipage}
+
+ \item \hyperref[sec:songbooks]{song lyrics}:
+ \begin{minipage}[c]{\linewidth}
+ \includegraphics[width=2cm]{guitar}
+ \end{minipage}
+
+ \item \hyperref[sec:guitar]{guitar chord diagrams}:
+ \begin{minipage}[c]{\linewidth}
+ \includegraphics{gdiagram}
+ \end{minipage}
+
+ \item \hyperref[sec:sheetmusic]{sheet music}:
+ \begin{minipage}[c]{\linewidth}
+ \includegraphics{sheet}
+ \end{minipage}
+
+ \item \hyperref[sec:tablatures]{guitar tablatures}:
+ \begin{minipage}[c]{\linewidth}
+ \includegraphics{gtablature}
+ \end{minipage}
+
+ \item \hyperref[sec:multimedia]{multimedia files}:
+ \begin{minipage}[c]{\linewidth}
+ \href{run:jingle.midi}{\fbox{play me!}}
+ \end{minipage}
+
+ \item \hyperref[sec:sources]{notation sources}:
+ \hspace{1em}
+ \begin{boxedminipage}[c]{0.4\linewidth}
+ \begin{alltt}
+\footnotesize
+X: 1
+L: 1/4
+K: C
+c G/G/ _AG|z !>!B!>!c z|]
+\end{alltt}
+ \end{boxedminipage}
+
+\end{itemize}
+
+This guide aims to provide a roundup of available options, along with
+ready-to-use examples. We will examine a few \TeX/\LaTeX{} packages
+and several programs that produce high-quality music output; then we
+will learn how to include the music (as PDF files, sound files, or
+notation sources) in \LaTeX{} documents.
+
+% -----
+
+\subsection{Conventions}
+
+This document is meant to be consulted in its PDF version (online, if
+possible), rather than printed on paper. Hence, it uses many external
+links.
+
+Links are written in short form whenever possible; for instance, the
+\pkgname{abc} package will be referred to as
+\href{https://www.ctan.org/pkg/abc}{abc} instead of
+\url{https://www.ctan.org/pkg/abc}.
+
+Sources (\LaTeX{} or notation languages) are shown in a frame with a
+light green background; the resulting PDF output, when applicable, has
+a light gray background. Command line sessions are shown in a frame;
+user commands are emphasised in boldface.
+
+All software described in this guide is
+\href{https://en.wikipedia.org/wiki/Free_and_open-source_software}%
+{free and open source}.
+
+% -----
+
+\subsection{Preliminaries}
+
+To begin with, we need a working \LaTeX{} system. I strongly recommend
+that you install the latest release of
+\href{https://www.tug.org/texlive/}{TeX Live}, which I used to typeset
+this manual and all included examples on a GNU/Linux system (TeX Live
+2018). Please note that on Debian-based GNU/Linux systems, and maybe
+other distributions, the default TeX Live packages may be older. I
+suppose that other \TeX{} distributions like
+\href{https://miktex.org/}{MiKTeX} or
+\href{http://www.tug.org/mactex/}{MacTeX} are just as good, but I have
+no first-hand experience with them.
+
+Secondly, we need a Bash-based command line environment; this is
+provided by default in GNU/Linux and macOS systems. Windows users
+should install the excellent \href{http://www.msys2.org/}{MSYS2}
+platform.
+
+In most cases, typesetting is done with the common \cmd{pdflatex}
+command. Some packages, though, require the \XeLaTeX{} or \LuaLaTeX{}
+engines. In this manual, \cmd{pdflatex} is the default command, unless
+otherwise specified.
+
+This manual is not meant to replace the documentation of the packages
+and programs that it briefly describes. A few examples are provided to
+get you started and to whet your appetite, but in most cases they
+don't cover all available features. The package or program
+documentation is the primary source of information you should refer
+to.
+
+% Good luck. Some programmers write awsome programs, but clearly
+% don't know how to write good, useful, concise documentation.
+
+Finally, I assume that you are reasonably familiar with \LaTeX. Should
+you need some information, fine manuals and tutorials are available at
+the \href{https://ctan.org/tex-archive/info/}{\LaTeX{} info page}.
+
+% -----
+
+\subsection{Adding Packages}
+
+TeX Live provides a large number of packages, but in the following
+sections we will deal with packages that may not be included in less
+recent releases. Also, some features may be available in package
+releases that are newer than those included in TeX Live. In these
+cases, you will have to install the missing (or newer) package
+manually. The procedure is simple:
+
+\begin{enumerate}
+
+ \item create this directory structure:
+
+ \verb|$ mkdir -p $HOME/texmf/tex/latex|
+
+ new packages will be installed in this directory tree.
+
+ \item get the package (typically as a zip-compressed directory) from
+ your favourite CTAN mirror; let's call it \file{foo.zip}
+
+ \item unpack it in the right place:
+
+ \verb|$ mkdir $HOME/texmf/tex/latex/foo|
+
+ \verb|$ mv foo.zip $HOME/texmf/tex/latex/foo|
+
+ \verb|$ cd $HOME/texmf/tex/latex/foo ; unzip foo.zip|
+
+ \item if no \file{.sty} file exists, run the command
+ \cmd{latex foo.ins} or \cmd{latex foo.dtx} to create it;
+
+ \item run the command \cmd{texhash \$HOME/texmf}
+
+\end{enumerate}
+
+Package \pkgname{foo} is now accessible.
+
+If you are installing a package that is newer than that in TeX Live
+and want \LaTeX{} to use it, add this line to your \file{.bashrc}:
+
+\begin{verbatim}
+export TEXINPUTS=$HOME/texmf/tex//:
+\end{verbatim}
+% $
+
+Please note the double \cmd{/} at the end. This line makes \TeX{}
+search recursively in \file{\$HOME/texmf/tex/}, then it adds the
+current value of \cmd{TEXINPUTS} (if any) to the search path.
+
+% -----
+
+\subsection{Including PDF files}
+
+It's reasonable to assume that PDF is the most sensible format for
+final output. PostScript, SVG, PNG and other formats will not be
+considered, but it's easy to convert PDF files to these formats using
+applications like \href{https://inkscape.org}{Inkscape} or
+\href{https://www.imagemagick.org}{ImageMagick}.
+
+Unless you create music directly using \pkgname{MusiXTeX} and related
+packages (Section~\ref{sec:musixtex}), your \LaTeX{} document will
+include music as PDF files. Such files can be short excerpts, i.e.\
+smaller than a page, or span several pages. These files will be
+included with the \ltx{includegraphics} command (package
+\pkg{graphicx}) or with the \ltx{include\-pdf} command (package
+\pkg{pdfpages}), respectively:
+
+\begin{source}
+\begin{verbatim}
+\documentclass[oneside]{article}
+\usepackage{graphicx}
+\usepackage{pdfpages}
+\usepackage[a4paper,margin=1.5cm]{geometry}
+
+\begin{document}
+
+This is a short excerpt:
+
+\includegraphics[width=0.8\textwidth]{sample.pdf}
+
+Let's now include several pages:
+
+% pages=- means "all pages"
+\includepdf[pages=-,pagecommand={},width=\textwidth]{music.pdf}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+I suggest that you read the excellent \pkg{epslatex} guide that
+explains many details on alignment, size, rotation etc.\ of included
+graphics files.
+
+In the case of short excerpts, we need some means of cropping the PDF
+to its actual contents (bounding box); PDF files, in fact, are usually
+created as whole pages. Cropping the PDF is accomplished with the free
+program \href{http://pdfcrop.sourceforge.net}{pdfcrop}, a very useful
+Perl script that depends on
+\href{https://www.ghostscript.com}{Ghostscript} and
+\href{http://pdfedit.cz/en/index.html}{PDFedit}.
+
+Given a file called \file{music.pdf}, we crop it with these commands:
+
+\begin{screen}
+$ \textbf{pdfcrop music.pdf}
+PDFCROP 1.38, 2012/11/02 - Copyright (c) 2002-2012 by Heiko Oberdiek.
+==> 1 page written on \verb|`|music-crop.pdf'.
+$ \textbf{mv -f music-crop.pdf music.pdf}
+$ _
+\end{screen}
+% $
+
+Pdfcrop doesn't work on MSYS2; moreover, MSYS2's Ghostscript package
+lacks the \cmd{bbox} device. However, if you install the official
+release of Ghostscript for Windows, you can use the following shell
+script, \cmd{pdfcrop.sh}. It only works with single-page PDF files:
+
+\begin{source}
+\begin{verbatim}
+#!/bin/sh
+
+# pdfcrop.sh - for MSYS2 and GhostScript
+# Guido Gonzato, PhD. GPL 2 or later.
+
+MYSELF=$(basename $0)
+
+if [ $# -eq 0 ] ; then
+ printf "Usage: ${MYSELF} <file.pdf>\n"
+ printf "This script uses 'gs' to crop a one-page pdf file.\n\n"
+ exit 1
+fi
+
+# GhostScript for Windows is installed in C:\Gs
+GS=/c/gs/gs9.26/bin/gswin64c.exe
+# GNU/Linux and others:
+# GS=/usr/bin/gs
+INPUT=$1
+PDF=$(basename $1 .pdf)
+OUTPUT=$PDF-crop.pdf
+GSOPTS="-q -sDEVICE=bbox -dBATCH -dNOPAUSE"
+
+# find out the bounding box
+$GS $GSOPTS $INPUT 2>&1 | grep "%%B" > $PDF.bbox
+
+# read bbox coordinates in variables
+read tmp X1 Y1 X2 Y2 < $PDF.bbox
+
+# write the output, cropped to bbox
+$GS -q -o $OUTPUT \
+ -sDEVICE=pdfwrite \
+ -c "[ /CropBox [$X1 $Y1 $X2 $Y2] /PAGES pdfmark" \
+ -f $INPUT
+
+/bin/rm -f $PDF.bbox
+
+echo "$INPUT cropped to $OUTPUT"
+\end{verbatim}
+\end{source}
+
+% $
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Music Symbols}
+\label{sec:musicsymbols}
+
+The simplest music elements we may want to include in our documents
+are music symbols (\emph{glyphs}). Standard \LaTeX{} only provides the
+math mode commands \ltx{sharp}, \ltx{flat}, and \ltx{natural}:
+$\sharp$ $\flat$ $\natural$. Additional glyphs are provided by several
+packages; moreover, glyphs provided by music fonts are accessible via
+\XeLaTeX{} and Lua\LaTeX.
+
+% -----
+
+\subsection{Using Packages}
+
+The impressive
+\href{http://tug.ctan.org/info/symbols/%
+comprehensive/symbols-a4.pdf}%
+{Comprehensive LaTeX Symbol List}, Section 7, lists packages that
+provide a handful of music symbols: \pkg{textcomp}, \pkg{mnsymbol},
+\pkg{fdsymbol}, \pkg{boisik}, \pkg{wasysym}, \pkg{stix}, and
+\pkg{arev}.
+
+More symbols are provided by \pkg{musicography}, \pkg{leadsheets}, and
+\pkg{harmony}. These packages work with \cmd{pdflatex}, but still
+provide a fairly limited number of glyphs. Besides, there could be
+incompatibility between packages because of commands defined using the
+same name.
+
+% TODO: figure out what harmony glyphs are for...
+
+% -----
+
+\subsubsection{Package \pkg{musicography}}
+
+This package may be missing in less recent releases of TeX Live, so
+you might have to install it manually. If you only need a limited
+number of glyphs, then \pkg{musicography} may do the job:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{musicography}
+\thispagestyle{empty} % no page number
+
+\begin{document}
+
+Musicography makes the music symbol font provided by MusiX\TeX\
+available as text font and then uses it to define a number
+of symbols:
+
+\musFlat\ \musSharp\ \musNatural\ \musDoubleFlat\ \musDoubleSharp\
+\musWhole\ \musHalf\ \musQuarter\ \musEighth\ \musSixteenth\
+\musWholeDotted\ \musHalfDotted\ \musQuarterDotted\
+\musEighthDotted\ \musSixteenthDotted\
+\meterC\ \meterCutC\ \meterCThree\ \meterCThreeTwo\ \meterCZ\
+\musMeter{7}{8}
+
+\end{document}\end{verbatim}
+\end{source}
+
+\score{musicography}
+
+% -----
+
+\subsubsection{Package \pkg{leadsheets}}
+
+If you only need a limited number of glyphs, then also
+\pkg{leadsheets} may do the job:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[minimal]{leadsheets}
+\useleadsheetslibraries{musicsymbols}
+\thispagestyle{empty}
+
+\begin{document}
+
+Leadsheets makes the music symbol font provided by MusiX\TeX\
+available as text font and then uses it to define a number
+of symbols:
+
+\sharp\ \doublesharp\ \flat\ \doubleflat\ \natural\
+\trebleclef\ \altoclef\ \bassclef\ \meterC\ \allabreve\
+\meter{12}{8}\ \wholerest\ \halfrest\ \quarterrest\
+\eighthrest\ \sixteenthrest\ \Break\ \normalbar\
+\leftrepeat\ \rightrepeat\ \leftrightrepeat\ \doublebar\
+\stopbar
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{glyphs_ls}
+
+This package also provides the \ltx{writechord} command to typeset
+chords:
+
+\begin{source}
+\begin{verbatim}
+\documentclass[12pt]{article}
+\usepackage[minimal]{leadsheets}
+\useleadsheetslibraries{chords}
+\thispagestyle{empty}
+
+\begin{document}
+
+Let's typeset some chords: \writechord{Bb7(#9)} \writechord{Bbb6}
+\writechord{C#7(b9)} \writechord{C##13}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{chords}
+
+% -----
+
+\subsubsection{Package \pkg{lilyglyphs}}
+
+One of the most complete sources of music glyphs is the
+\pkg{lilyglyphs} package. It provides all the symbols available in the
+\href{http://lilypond.org/doc/v2.18/%
+Documentation/notation/the-feta-font} {Emmentaler} music font, which
+is used by the \href{http://lilypond.org}{LilyPond} scorewriter
+(Section~\ref{sec:lilypond}). \pkgname{Lilyglyphs} only works with
+\XeLaTeX{} and \LuaLaTeX, and is incompatible with
+\pkgname{leadsheets} and \pkgname{MusiXTeX}. Available glyphs and
+corresponding commands are listed in Section 3 of the package
+\href{http://mirrors.ctan.org/macros/luatex/latex/lilyglyphs/%
+documentation/lilyglyphs.pdf}{documentation}.
+
+This is a very small example of what \pkgname{Lilyglyphs} provides:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{fontspec}
+\usepackage{lilyglyphs}
+\thispagestyle{empty}
+
+\begin{document}
+
+Lilyglyphs makes the music symbol font provided by LilyPond available
+as text font and then uses it to define a number of symbols, some
+\clefGInline\ of which \clefCInline\ can be used \clefFInline\ inline:
+
+clefs:~ \clefG\ \clefC\ \clefF\ ~time signatures:~
+\lilyTimeC\ \lilyTimeCHalf\ \lilyTimeSignature{7}{8}\
+~accidentals:~ \sharp\ \flat\ \natural\ \doublesharp\ \flatflat\
+~rests:~ \wholeNoteRest\ \halfNoteRest\ \crotchetRest\
+~notes:~ \wholeNote\ \halfNote\ \halfNoteDown\ \quarterNote\
+\quarterNoteDotted\
+~and much, much more.
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{lilyglyphs}
+
+% -----
+
+\subsection{Using Music Fonts}
+
+The \XeLaTeX{} and Lua\LaTeX{} engines use Unicode input by default
+and support OTF/TTF fonts. We can use these engines to print any
+character provided by locally installed fonts; these can be listed
+with the \cmd{fc-list} command, provided by the
+\href{https://www.fontconfig.org/}{Fontconfig} software.
+
+Some fonts are especially useful for music. Unicode-encoded fonts
+provide \href{https://www.unicode.org/charts/PDF/U1D100.pdf}{music
+symbols}, which we can find for instance in
+\href{https://www.gnu.org/software/freefont/}{GNU FreeFont}. However,
+a font standard for music applications called
+\href{https://www.smufl.org}{SMuFL} has been developed.
+
+Specifically, \href{https://www.smufl.org/fonts}{Bravura} is a free,
+SMuFL-compliant music font that provides thousands of high-quality
+music glyphs. Bravura is available in OpenType format as
+\file{Bravura.otf} and \file{BravuraText.otf}; the first is used for
+drawing music symbols in scores, the second for inserting music
+symbols in text. Each glyph is mapped to a numerical code called
+\emph{code point}; a comprehensive list of glyphs and the
+corresponding code points is available at
+\url{https://www.smufl.org/version}.
+
+The following source shows how to use the glyphs provided by Bravura.
+We can define new commands for commonly used glyphs, or directly use
+the \ltx{char"XXXX} syntax to print Unicode characters specifying
+their code point. The fonts are expected to be installed in
+\path{/usr/share/fonts/}; if you install the fonts in a different
+directory, you'll also have change the following source accordingly:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{fontspec}
+\thispagestyle{empty}
+\newfontfamily\brtxt{BravuraText.otf}[Path=/usr/share/fonts/]
+\newfontfamily\brv{Bravura.otf}[Path=/usr/share/fonts/]
+
+\newcommand{\clefGi} {{\brtxt \char"E050}}
+\newcommand{\clefCi} {{\brtxt \char"E05C}}
+\newcommand{\clefFi} {{\brtxt \char"E062}}
+
+\newcommand{\clefG} {{\brv \char"E050}}
+\newcommand{\clefC} {{\brv \char"E05C}}
+\newcommand{\clefF} {{\brv \char"E062}}
+\newcommand{\timeC} {{\brv \char"E08A}}
+\newcommand{\timeCHalf} {{\brv \char"E08B}}
+\renewcommand{\flat} {{\brv \char"E260}}
+\renewcommand{\natural} {{\brv \char"E261}}
+\renewcommand{\sharp} {{\brv \char"E262}}
+\newcommand{\wholeNote} {{\brv \char"E1D2}}
+\newcommand{\halfNote} {{\brv \char"E1D3}}
+\newcommand{\halfNoteDown}{{\brv \char"E1D4}}
+\newcommand{\quarterNote} {{\brv \char"E1D5}}
+
+\begin{document}
+
+The Bravura and BravuraText Music fonts provide thousands of music
+symbols. BravuraText glyphs are specifically \clefGi\ designed
+\clefFi\ to be used \clefCi\ inline:
+
+clefs:~ \clefG\ \clefC\ \clefF\ ~time signatures:~
+\timeC\ \timeCHalf\ ~accidentals:~ \sharp\ \flat\ \natural\
+~notes:~ \wholeNote\ \halfNote\ \halfNoteDown\ \quarterNote\
+~and much, much more.
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{bravura}
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Song Lyrics}
+\label{sec:songbooks}
+
+Several packages make it possible to typeset song lyrics, with varying
+degrees of complexity. For instance, we may want to write lyrics only;
+other useful features include chords above lyrics, guitar chords
+diagrams, transposition, index generation, etc.
+
+% -----
+
+\subsection{Package \pkg{guitar}}
+\label{sec:pkgguitar}
+
+This is a very basic and simple to use package that provides a
+\env{guitar} environment to add chords above lyrics. Customisation
+options include alignment, spacing, font, and other low-level
+details.
+
+A minimal
+example:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage{guitar}
+
+\begin{document}
+
+\begin{guitar}
+ \textbf{Imagine (John Lennon)}
+
+ \emph{Intro, $\times$ 2}
+ % use tilde to add some space
+ [C] ~ [Cmaj7] ~ [F] ~
+ % if chords overlap, add | at the end of the chord, like:
+ [C]Imagine there's [Cmaj7|]{no} [F]heaven
+ [C]It's easy if [Cmaj7|]{you} [F]try
+ [C]No hell [Cmaj7|]{below} [F]us
+ [C]Above us [Cmaj7|]{only} [F]sky
+\end{guitar}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{guitar}
+
+% -----
+
+\subsection{Package \pkg{gtrcrd}}
+
+This is another basic and simple to use package. Customisation options
+include chord location and name (Do-Re-Mi instead of C-D-E), font,
+transposition, and spacing. Chords overlaps need manual adjustment.
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage{gtrcrd}
+
+\setlength{\crdheight}{2ex} % reduce spacing
+\def\crdfont{\footnotesize \itshape \sffamily} % setchord font
+\setlength{\parindent}{0pt} % no indentation
+
+\begin{document}
+
+\textbf{Imagine (John Lennon)}
+
+\emph{Intro, $\times$ 2}
+
+% if chords overlap, use \hspace:
+\C {\hspace{3mm}} \C[maj7] {\hspace{10mm}} \F ~
+
+\C Imagine there's \C[maj7] no {\hspace{5mm}} \F heaven
+
+\C It's easy if \C[maj7] you {\hspace{2mm}} \F try
+
+\C No hell \C[maj7] below \F us
+
+\C Above us \C[maj7] only {\hspace{2mm}} \F sky
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{gtrcrd}
+
+% -----
+
+\subsection{Package \pkg{songs}}
+\label{sec:pkgsongs}
+
+This is a very powerful package that provides many features: chords
+above lyrics, guitar chords diagrams (Section~\ref{sec:songs_cd}),
+transposition, index generation, multiple columns, and more. Overall,
+it allows for the creation of complete songbooks.
+
+% \enlargethispage{\baselineskip}
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage[chorded]{songs}
+
+\begin{document}
+
+\renewcommand{\lyricfont}{\small}
+\renewcommand{\printchord}{\it\small}
+\afterpreludeskip=-18pt
+\beforepostludeskip=-8pt
+
+\begin{songs}{}
+\beginsong{Imagine}[by={John Lennon}]
+\beginverse
+ \emph{Intro, $\times$ 2}
+ \[C] \[Cmaj7] \[F]
+ \[C]Imagine there's \[Cmaj7]no \[F]heaven
+ \[C]It's easy if \[Cmaj7]you \[F]try
+ \[C]No hell \[Cmaj7]below \[F]us
+ \[C]Above us \[Cmaj7]only \[F]sky
+\endverse
+\endsong
+\end{songs}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{songs}
+
+% -----
+
+\subsection{Package \pkg{musixguit}}
+
+This package is integrated with \pkg{musixtex}
+(Section~\ref{sec:musixtex}), and is also capable of producing sheet
+music and guitar chord diagrams. Its documentation is written in
+German; if you can't read it don't worry, the provided examples are
+easy to understand. Chords overlaps need manual adjustment.
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{musixguit}
+\thispagestyle{empty}
+
+\begin{document}
+
+\textbf{Imagine (John Lennon)}
+
+\begin{song}
+
+\emph{Intro, $\times$ 2}
+
+\chord{C} ~ \chord{Cmaj7} {\hspace{8mm}} \chord{F}
+
+\chord{C}Imagine there's \chord{Cmaj7}no~~~ \chord{F}heaven
+
+\chord{C}It's easy if \chord{Cmaj7}you~~ \chord{F}try
+
+\chord{C}No hell \chord{Cmaj7}below \chord{F}us
+
+\chord{C}Above us \chord{Cmaj7}only~ \chord{F}sky
+
+\end{song}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{musixguit}
+
+% -----
+
+\subsection{Package \pkg{leadsheets}}
+\label{sec:leadsheets}
+
+This package provides many features: music and symbols, chords,
+MuseJazz style, a \env{song} and a \env{verse} environment,
+transposition, a \cmd{leadsheet} class, and templates. Overall, this
+package allows for the creation of complete songbooks.
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[full]{leadsheets}
+\thispagestyle{empty}
+
+\begin{document}
+
+\begin{song}{title={Imagine}, music={John Lennon}}
+\begin{verse}
+
+ Intro, $\times$ 2\\
+ \chord{C}~ \chord{Cmaj7}~ \chord{F}~
+
+ % The ^ character is a shortcut for \chord
+ \chord{C}Imagine there's ^{Cmaj7}no ^{F}heaven \\
+ ^{C}It's easy if ^{Cmaj7}you ^{F}try \\
+ ^{C}No hell ^{Cmaj7}below ^{F}us \\
+ ^{C}Above us ^{Cmaj7}only ^{F}sky \\
+
+\end{verse}
+\end{song}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{leadsheets}
+
+% -----
+
+\subsection{Package \pkg{songbook}}
+
+This is another powerful package that provides support for chords,
+songs, overhead transparencies, and index generation.
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[chordbk]{songbook}
+\thispagestyle{empty}
+
+\begin{document}
+
+\textbf{Imagine (John Lennon)}
+
+% \medskip
+
+\emph{Intro, $\times$ 2}
+
+\Ch{C}~ \Ch{Cmaj7}~ \Ch{F}~
+
+\Ch{C}{Imagine} there's \Ch{Cmaj7}{no} \Ch{F}heaven
+
+\Ch{C}{It's} easy if \Ch{Cmaj7}{you} \Ch{F}{try}
+
+\Ch{C}No hell \Ch{Cmaj7}{below} \Ch{F}us
+
+\Ch{C}{Above} us \Ch{Cmaj7}{only} \Ch{F}{sky}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{songbook}
+
+% -----
+
+\subsection{Program: \href{https://www.vromans.org/projects/Chordii/}
+{chordii}}
+
+Chordii is a free command-line program, released under the
+\href{https://www.gnu.org/licenses/licenses.en.html}{GNU GPL}. It uses
+a simple text notation to typeset songs in PostScript format, complete
+with chords and guitar chord grid.
+
+This is the source of a song written in Chordii format:
+
+\begin{source}
+\begin{verbatim}
+{titles:left}
+{title:Imagine}
+{st:John Lennon}
+
+(Intro, x 2)
+[C] [Cmaj7] [F]
+[C]Imagine there's [Cmaj7]no [F]heaven
+[C]It's easy if [Cmaj7]you [F]try
+[C]No hell [Cmaj7]below [F]us
+[C]Above us [Cmaj7]only [F]sky
+\end{verbatim}
+\end{source}
+
+% \medskip
+
+We typeset the score with these commands:
+
+\begin{screen}
+$ \textbf{chordii -a imagine.cho > imagine.ps}
+$ \textbf{ps2pdf imagine.ps}
+$ _
+\end{screen}
+% $
+
+The \cmd{-a} switch means ``Automatic single space lines without
+chords''. The resulting song is:
+
+\bigskip
+
+\scoreshort{chordii}
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Guitar Chord Diagrams}
+\label{sec:guitar}
+
+Guitar players may need to print \emph{guitar chords diagrams} and
+\emph{guitar tablatures}; both can be made with \LaTeX{} packages and
+external programs. As a matter of fact, these music features are not
+limited to the guitar; chord diagrams and tablatures apply to other
+stringed instruments as well.
+
+Tablatures are a form of music notation that is usually employed to
+show how a \emph{melody} should be fingered on the fretboard. Since
+tablatures are just a special form of music notation, we will deal
+with them after the section about sheet music. For the moment, let's
+see how to do guitar chord diagrams.
+
+For an authoritative list of standard guitar chords diagrams, I
+suggest that you visit \href{http://lilypond.org/doc/v2.18/%
+Documentation/notation/predefined-fretboard-diagrams}{this useful
+page}.
+
+% -----
+
+\subsection{Package \pkg{gchords}}
+\label{sec:gchords}
+
+This package makes it possible to print guitar chord diagrams using
+the \ltx{chord} command that employs a simple syntax:
+
+\medskip
+
+\ltx{chord}{\emph{\{fret
+number\}}}{\emph{\{fingering\}}}{\emph{\{chord name\}}}
+
+\begin{itemize}
+
+ \item \emph{fret number} can be \texttt{\{t\}}, which means top
+ fret, or \texttt{\{t\}} followed by a digit that denotes the fret;
+
+ \item \emph{fingering} is explained in the example below;
+
+ \item \emph{chord name} is the given chord name.
+
+\end{itemize}
+
+The \ltx{chords} command prints a row of chords, each defined by a
+\ltx{chord} command:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{gchords}
+\thispagestyle{empty}
+
+\begin{document}
+
+\def\numfrets{4}
+
+\chords{ % print a row of chords
+% fingers: n, x, o, p{n}, f{n}
+% C chord: finger 3 pos. 3, finger 2 pos. 2, finger 1 pos. 1
+\chord{t}{n,f3p3,f2p2,n,f1p1,n}{C}
+\chord{t}{n,n,p2,p2,p1,n}{Am}
+\chord{t}{x,n,n,p2,p3,p1}{Dm}
+\chord{t3}{n,p2,n,p1,n,n}{G7 (ugly)}
+{\tiny % font size for string labels, t{X}
+\chord{t}{t{E}n,t{A}n,t{D}n,t{G}n,t{B}n,t{e}n}
+{std. tuning} }
+}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{gchords}
+
+% -----
+
+\subsection{Package \pkg{songs}}
+\label{sec:songs_cd}
+
+We met this package in Section~\ref{sec:pkgsongs}. It provides an
+easy way to print guitar chord diagrams (referred to as ``guitar
+tablatures'' in the package). The \ltx{gtab} command defines chord
+diagrams using a very simple syntax:
+
+\medskip
+
+\ltx{gtab}{\emph{\{chord name\}}}
+{\emph{\{fret:strings:fingering\}}}
+
+\begin{itemize}
+
+ \item \emph{chord name} is the given chord name;
+
+ \item \emph{fret} is an optional fret number;
+
+ \item \emph{strings} is a string of digits denoting the strings that
+ compose the chord;
+
+ \item \emph{fingering} is an optional string of digits denoting the
+ fingers to use.
+
+\end{itemize}
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage[chorded]{songs}
+
+\begin{document}
+
+% \gtab{chord name}{fret:strings:fingering}
+\gtab{C}{032010:032010} \gtab{Cmaj7}{032000:032000}
+\gtab{F}{1:022100}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{songs_g}
+
+% -----
+
+\subsection{Package \pkg{guitarchordschemes}}
+
+This package enables the creation of fully customisable guitar chord
+diagrams and scales. The main command is \ltx{chordscheme}, and is
+quite self-explanatory:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{guitarchordschemes}
+\thispagestyle{empty}
+
+\begin{document}
+
+% general parameters
+\setchordscheme{
+ rotate=-90,
+ x-unit=2.5mm, % chord size, x
+ y-unit=3mm, % chord size, y
+ name-format=\bfseries, % chord name font
+ finger-format=\bfseries%
+ \footnotesize % fingering font
+}
+
+\newsavebox{\Gstd}
+\savebox{\Gstd}{
+\chordscheme[ % define the chord
+ name = G (Sol), % chord name
+ position = 1, % first fret position
+ finger = {2/5:2} , % fret, string, finger
+ finger = {3/6:3} , % fret, string, finger
+ finger = {3/1:4} , % fret, string, finger
+ ring = {2,3,4} % open strings
+]}
+
+\newsavebox{\Gbarre}
+\savebox{\Gbarre}{
+\chordscheme[
+ name = G (Sol) barre,
+ position = 3,
+ barre = 1/1-6, % fret, string range
+ finger = {2/3:2},
+ finger = {3/5:3},
+ finger = {3/4:4}
+]}
+
+\usebox{\Gstd}\usebox{\Gbarre}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\scoreshort{gcschemes}
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Sheet Music}
+\label{sec:sheetmusic}
+
+In this section, we will learn how to produce sheet music in PDF
+format for inclusion in \LaTeX{} documents. Sheet music can be typeset
+by \TeX{} itself, but we can also use the output produced by one of
+the several free and open source scorewriters.
+
+In the next few sections, we will briefly examine each option. Music
+notation languages will not be explained, for obvious space reasons.
+Minimal sources will be listed to give minimal working examples and to
+get acquainted with the notation complexity.
+
+% -----
+
+\subsection{Which Notation Software?}
+
+I'm not going to suggest any particular music notation software. I do
+have my personal preferences; I find some notations easier than
+others; some programs have more features than others; and so on.
+Nevertheless, I think that all packages and programs described in the
+following sections have their advantages, and all of them can typeset
+beautiful scores. Unless you need specific features, choosing a
+typesetting software is mostly a matter of personal preference. Let's
+put it this way: the best program is the one that lets you obtain the
+results you need, with the least effort, in the least amount of time,
+and the most fun.
+
+All software described below is capable of typesetting complex Western
+music: multiple voices and staves, symbols, dynamics, lyrics, text
+annotations; sone of them can also do tablatures and more.
+
+% -----
+
+\subsection{Packages \pkg{musixtex}, \pkg{m-tx}}
+\label{sec:musixtex}
+
+In the beginning, \TeX{} could not typeset music, and everyone was
+unhappy. Then the \pkg{mtex} (aka \pkgname{MuTeX}) package was
+created, but it was limited and not very easy to use. Then
+\pkgname{MuTeX} begat \pkgname{MusicTeX}, which begat \pkg{pmtex};
+then \pkgname{MusicTeX} begat \pkg{musixtex}, which begat \pkg{pmx},
+which begat \pkg{m-tx}. I hope I got the storyline right. Each package
+was a simpler interface to its predecessors.
+
+In reverse order: \pkgname{M-Tx} is a preprocessor to \pkgname{PMX},
+which in turn is a preprocessor for \pkgname{MusiXTeX}, which does the
+actual music typesetting via \TeX. It goes without saying that
+\pkgname{M-Tx} is the simplest to use, while \pkgname{MusiXTeX} is the
+most difficult to use but also the most powerful. Other packages
+related to \pkgname{MusiXTeX} are the following:
+
+\begin{itemize}
+
+ \item \pkg{autosp} generates note-spacing commands for
+ \pkgname{MusiXTeX} scores;
+
+ \item \pkg{bagpipe} provides support for typesetting bagpipe music;
+
+ \item \pkg{bizantinemusic} facilitates the writing of Byzantine
+ music;
+
+ \item \pkg{figbas} provides mini fonts for figured bass notation in
+ \pkgname{MusiXTeX};
+
+ \item \pkg{gregoriotex} provides engraving of Gregorian Chant
+ (Section~\ref{sec:gregoriotex});
+
+ \item \pkg{lyluatex} provides commands to include LilyPond scores in
+ Lua\LaTeX{} documents (Section~\ref{sec:lyluatex});
+
+ \item \pkg{musixtnt} is an extension library that enables
+ transformations of the effect of notes commands;
+
+ \item \pkg{pmxchords} produces chord information to go with pmx
+ output;
+
+ \item \pkg{snote} provides shape notes for \pkgname{MusixTeX};
+
+ \item \pkg{texmuse} is a music typesetting system using \TeX{}
+ and Metafont.
+
+\end{itemize}
+
+From \pkg{musixtex} home page:
+
+\begin{quote}
+
+ MusiXTEX provides a set of macros, based on the earlier MusicTEX,
+ for typesetting music with \TeX.
+
+\end{quote}
+
+\pkgname{MusiXTeX} is quite low-level, and the user must take care of
+such details as beam slope and note spacing; several examples are
+available \href{https://ctan.org/tex-archive/macros/%
+musixtex/doc/examples}{here}. Notably, it works with plain \TeX. (Ever
+tried plain \TeX?) A minimal example (\file{sample-mtex.tex}):
+
+\begin{source}
+\begin{verbatim}
+% bare MusiXTeX example
+
+\input musixtex
+\nopagenumbers
+
+\setstaffs1{1} % a single stave
+\setclef1{\treble} % with a treble clef
+\generalmeter{\meterC} % common time
+\nobarnumbers % what it says
+\startextract % a short music piece
+ % \qu = quarter note, stem up;
+ % \ql = quarter note, stem down;
+ % \Notes, \en = start and end of note line
+ \Notes \qu c \qu d \qu e \qu f \en
+ \bar
+ \Notes \qu g \qu{'a} \ql b \ql c \en
+\endextract
+
+\end
+\end{verbatim}
+\end{source}
+
+We typeset the score with these commands:
+
+\begin{screen}
+$ \textbf{tex sample-mtex.tex}
+$ \textbf{dvips sample-mtex.dvi}
+$ \textbf{ps2pdf sample-mtex.ps}
+$ _
+\end{screen}
+
+\scoreshort{sample-mtex}
+
+\pkgname{MusiXTeX} input can also be embedded in \LaTeX{} documents
+(\file{sam\-ple-m\-la\-tex.tex}):
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{musixtex}
+\thispagestyle{empty}
+
+\begin{document}
+
+A short music excerpt in MusiX\TeX:
+
+\medskip
+
+\begin{music}
+ \smallmusicsize
+ \instrumentnumber{1}
+ \setstaffs1{1}
+ \generalmeter{\meterC}
+ \nobarnumbers
+ \startextract
+ % bar 1
+ \Notes \qu c \en % C
+ \notes \ibu1d2\qb1d\tbu1\qb1e \en % beamed DE
+ \notes \ibu1g2\qb1f\qb1g%
+ \qb1{'a}\tbu1\qb1b \en % beamed FGAB
+ \bar % bar 2
+ \Notes \ql{'c} \en % c
+ \notes \ibu1{'b}{-3}%
+ \qb1b\tbu1\qb1a \en % beamed BA
+ \notes \ibu1{g}{-3}%
+ \qb1g\qb1f\qb1e\tbu1\qb1d \en % beamed GFED
+ \bar % bar 3
+ \notes \ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g% % beamed CGEG
+ \ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g \en % beamed CGEG
+ \bar % bar 4
+ \Notes \qu c\qu e\qu c\qp \en % CEC
+ \endextract
+
+\end{music}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{sample-mlatex}
+
+\bigskip
+
+Admittedly it looks a bit arcane, and I'll point you to the
+\href{http://mirrors.ctan.org/macros/musixtex/doc/musixdoc.pdf}
+{documentation} for explanations. I suggest that you learn at least
+the basics of it; several useful packages are based on this syntax.
+
+\pkgname{M-Tx} employs a much simpler notation than
+\pkgname{MusiXTeX}. This is a standalone music sample
+(\file{sample-mtx.mtx}) that produces the same music as the above
+\pkgname{MusiXTeX} score:
+
+\begin{source}
+\begin{verbatim}
+% music sample in M-Tx notation
+
+Title: \bigtype Music sample in M-tx
+Style: Solo
+Meter: C
+Width: 140mm
+
+c4 d8 e f g a b | c4 b8 a g f e d | c8 g+ e g c- g+ e g | c4- e c r |
+\end{verbatim}
+\end{source}
+
+We typeset the score with this command:
+
+\begin{screen}
+$ \textbf{musixtex sample-mtx.mtx}
+This is musixtex.lua version 0.21.
+==> This is M-Tx 0.63a (Music from TeXt) <8 April 2018>
+==>> Input from file sample-mtx.mtx
+...
+sample-mtx.pdf generated by ps2pdf.
+$ _
+\end{screen}
+% $
+
+\noindent which produces \file{sample-mtx.pdf}. In older versions of
+\pkgname{M-Tx}, the command was \cmd{m-tx}; it has now been retired
+and replaced by \cmd{musixtex}. This is the resulting score:
+
+\bigskip
+
+\score{sample-mtx}
+
+\bigskip
+
+Music in \pkgname{M-Tx} format can be easily included in \LaTeX{}
+documents. \pkgname{M-Tx} provides the \env{Score}, \env{excerpts},
+and \env{mus} environments to include complete pieces, short excerpts,
+and inline short excerpts respectively. Let's see how to use
+\cmd{excerpts} and \cmd{mus}; a few steps are required.
+
+First of all, the \LaTeX{} source that includes the \pkgname{M-Tx}
+music files must not have a \file{.tex} extension; \file{.ltx} or
+\file{.latex} are ok. Let's call our sample file
+\file{sample-latexmtx.ltx}.
+
+Secondly, we need the \file{mtxlatex.sty} style file, which is not
+installed by default but is found in the \pkgname{M-Tx} documentation
+directory. In TeX Live, \file{mtxlatex.sty} is located in directory
+\path{/usr/share/doc/texlive-doc/generic/m-tx}. This file must be
+copied to the same directory as the source file; all included
+\pkgname{M-Tx} files must be copied there too.
+
+We already met \file{sample-mtx.mtx}; the following is another short
+excerpt, \file{scale.mtx}. It produces a 30mm wide scale:
+
+\begin{source}
+\begin{verbatim}
+Style: Solo
+Meter: C
+Size: 13pt
+Width: 30mm
+
+c8 d e f g2 |
+\end{verbatim}
+\end{source}
+
+Finally, this is the main file \file{sample-latexmtx.ltx}:
+
+\begin{source}
+\begin{verbatim}
+\documentclass[12pt]{article}
+\usepackage{mtxlatex} % usually not installed
+\thispagestyle{empty}
+
+\mtxlatex
+
+\begin{document}
+
+This \LaTeX{} document includes music written in M-Tx. The
+\texttt{mus} environment includes music inline:
+\begin{mus} \input{scale.tex} \end{mus} , while the
+\texttt{excerpts} environment is used for longer excerpts:
+
+\medskip
+
+\begin{excerpts}
+ \input{sample-mtx.tex}
+\end{excerpts}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+We typeset the document with this command:
+
+\begin{screen}
+$ \textbf{musixtex sample-mtx scale sample-latexmtx.ltx}
+...
+sample-latexmtx.pdf generated by ps2pdf.
+$ _
+\end{screen}
+% $
+
+Please note that we omitted the \pkgname{M-Tx} file extensions, and
+that the main file is the last in the command line. We obtain this
+output:
+
+\bigskip
+
+\score{sample-latexmtx}
+
+\bigskip
+
+Please also note that the \pkgname{M-Tx} excerpts cannot be resized as
+if they were included PDF files: their geometry, in fact, is set in
+the \pkgname{M-Tx} source.
+
+% -----
+
+\subsection{Package \pkg{gregoriotex}}
+\label{sec:gregoriotex}
+
+This package typesets Gregorian chant. Input is in GABC format, a
+simple text notation inspired by the
+\href{http://abcnotation.com/}{ABC notation} that we'll examine later
+on. Conversion requires Lua\LaTeX.
+
+This is a sample GABC source, \file{kyrie.gabc}, taken from the
+package documentation:
+
+\begin{source}
+\begin{alltt}
+name:Kyrie XVII;
+%%
+(c4)KY(f)ri(gfg)e(h.) *()
+e(ixjvIH'GhvF'E)l\'e(ghg')i(g)son.(f.)
+<i>bis</i>(::)
+\end{alltt}
+\end{source}
+
+We also need an auxiliary \LaTeX{} source, \file{kyrie.tex}:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage[autocompile]{gregoriotex}
+
+\begin{document}
+
+\gregorioscore{kyrie}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+We typeset the score with this command:
+
+\begin{screen}
+$ \textbf{lualatex kyrie.tex}
+...
+Output written on kyrie.pdf (1 page, 11290 bytes).
+Transcript written on kyrie.log.
+$ _
+\end{screen}
+% $
+
+\scoreshort{kyrie}
+
+% -----
+
+\subsection{Program: \href{http://lilypond.org/}{LilyPond}}
+\label{sec:lilypond}
+
+LilyPond is a free and multiplatform scorewriter, released under the
+GNU GPL. From the LilyPond home page:
+
+\begin{quote}
+
+ LilyPond is a music engraving program, devoted to producing the
+ highest-quality sheet music possible. It brings the aesthetics of
+ traditionally engraved music to computer printouts. LilyPond is free
+ software and part of the \href{http://gnu.org/}{GNU Project}.
+
+\end{quote}
+
+LilyPond uses a simple text notation for music input; output is PDF by
+default. This is our usual music sample in LilyPond format,
+\file{sample-lily\-pond.ly}:
+
+\begin{source}
+\begin{verbatim}
+% music sample in LilyPond notation
+
+\version "2.18.2"
+
+\paper{
+ indent = 0 \mm
+}
+
+\header {
+ title = "Music sample in LilyPond"
+ tagline = "" % no footer
+}
+
+\relative c' {
+ \time 4/4
+ \clef treble
+ c4 d8 e f8 g a b | c4 b8 a g8 f e d |
+ c8 g' e g c,8 g' e g | c,4 e c r \bar "|."
+}
+\end{verbatim}
+\end{source}
+
+We typeset the document with this command:
+
+\begin{screen}
+$ \textbf{lilypond sample-lilypond.ly}
+GNU LilyPond 2.18.2
+Processing `sample-lilypond.ly'
+Parsing...
+Interpreting music...
+Preprocessing graphical objects...
+Finding the ideal number of pages...
+Fitting music on 1 page...
+Drawing systems...
+Layout output to `sample-lilypond.ps'...
+Converting to `./sample-lilypond.pdf'...
+Success: compilation successfully completed
+$ _
+\end{screen}
+% $
+
+\bigskip
+
+LilyPond is capable of typesetting many different kinds of music, and
+it is among the most complete and powerful scorewriters available. If
+you want to find out more, the documentation page is
+\href{http://lilypond.org/manuals.html}{here}.
+
+% -----
+
+\subsubsection{\cmd{lilypond-book}}
+
+LilyPond also provides the \cmd{lilypond-book} command that can be
+used to easily embed LilyPond sources in special \LaTeX{} documents.
+These should have a \cmd{.lytex} extension, like the following source
+(\cmd{sample-lilybook.lytex}):
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+
+\begin{document}
+
+This is a LilyPond snippet \begin{lilypond} {c' e' g'}
+\end{lilypond} embedded in the \LaTeX{} source.
+
+This is another LilyPond excerpt that uses the \texttt{lilypond}
+environment:
+
+\medskip
+
+\begin{lilypond}
+ \score {
+ \relative c' {
+ \time 4/4
+ \clef treble
+ c4 d8 e f8 g a b | c4 b8 a g8 f e d |
+ c8 g' e g c,8 g' e g | c,4 e c r \bar "|."
+ }
+ } % end of score
+\end{lilypond}
+
+\medskip
+
+End of document.
+
+\end{document}
+
+\end{verbatim}
+\end{source}
+
+We typeset the score with these commands:
+
+\begin{screen}
+$ \textbf{lilypond-book -f latex -o /tmp \textbackslash
+ --lily-output-dir=/tmp sample-lilybook.lytex}
+lilypond-book (GNU LilyPond) 2.18.2
+...
+Writing `/tmp/sample-lilybook.tex'...
+$ \textbf{cd /tmp}
+$ \textbf{pdflatex sample-lilybook.tex}
+...
+Output written on sample-lilybook.pdf (1 page, 60934 bytes).
+Transcript written on sample-lilybook.log.
+$ _
+\end{screen}
+% $
+
+\bigskip
+
+\score{sample-lilybook}
+
+% -----
+
+\subsubsection{Package \pkg{lyluatex}}
+\label{sec:lyluatex}
+
+This package may be missing in less recent releases of TeX Live, so
+you might have to install it manually. \pkgname{Lyluatex} provides a
+native Lua\LaTeX{} environment that offers the same functionality as
+\cmd{lilypond-book}, even though the output is different. This source
+is \file{sample-lyluatex.tex}:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{lyluatex}
+\thispagestyle{empty}
+
+\begin{document}
+
+This is a LilyPond snippet \lilypond{c' e' g'} embedded in the text
+using the \verb|\lilypond| command.
+
+This is another LilyPond excerpt that uses the \texttt{lilypond}
+environment:
+
+\medskip
+
+\begin{lilypond}
+ \score {
+ \relative c' {
+ \time 4/4
+ \clef treble
+ c4 d8 e f8 g a b | c4 b8 a g8 f e d |
+ c8 g' e g c,8 g' e g | c,4 e c r \bar "|."
+ }
+ } % end of score
+\end{lilypond}
+
+\medskip
+
+End of document.
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+We typeset the score with this command:
+
+\begin{screen}
+$ \textbf{lualatex --shell-escape sample-lyluatex.tex}
+...
+Output written on sample-lyluatex.pdf (1 page, 22334 bytes).
+ Transcript written on sample-lyluatex.log.
+$ _
+\end{screen}
+% $
+
+\score{sample-lyluatex}
+
+% -----
+
+\subsection{Program: \href{http://moinejf.free.fr}{abcm2ps}}
+
+\cmd{abcm2ps} is a free and multiplatform scorewriter, released under
+the GNU GPL.
+
+This program is currently one of the best implementations of the
+\href{http://abcnotation.com/}{ABC notation}, which describes itself
+as:
+
+\begin{quote}
+
+ \emph{the} text-based music notation system and the \emph{de
+ facto} standard for folk and traditional music.
+
+\end{quote}
+
+In fact, this notation is specifically designed to meet the needs of
+traditional musicians; hundred of thousands (really!) of tunes in ABC
+formats are available. ABC is a simple text notation, originally
+designed for single-voice music but currently capable of producing
+complex polyphonic scores.
+
+This is our usual music sample in ABC notation (\file{sample-abc.abc}):
+
+\begin{source}
+\begin{verbatim}
+% music sample in ABC notation
+
+X: 1
+T: Music sample in ABC
+M: C
+L: 1/4
+K: C
+%
+C D/E/ F/G/A/B/|c B/A/ G/F/E/D/|C/G/E/G/ C/G/E/G/|CECz|]
+\end{verbatim}
+\end{source}
+
+We typeset the score with these commands:
+
+\begin{screen}
+$ \textbf{abcm2ps -c -O= sample-abc.abc}
+abcm2ps-8.14.1 (2018-11-15)
+File sample-abc.abc
+Output written on sample-abc.ps (1 page, 1 title, 20503 bytes)
+$ \textbf{ps2pdf sample-abc.ps}
+$ _
+\end{screen}
+% $
+
+% -----
+
+\subsection{Program: \href{http://moinejf.free.fr}{abc2svg}}
+
+\cmd{abc2svg} is a free and multiplatform scorewriter, released under
+the GNU GPL. It's basically \cmd{abcm2ps} rewritten in JavaScript.
+
+Although \cmd{abc2svg} can be integrated in a
+\href{http://moinejf.free.fr/js/edit-1.xhtml}{web-based editor}, it's
+a command-line program. It reads an ABC source file and turns it to
+\file{xhtml}:
+
+\begin{screen}
+$ \textbf{abc2svg file.abc > file.xhtml}
+$ _
+\end{screen}
+
+The resulting \file{.xhtml} can then be loaded into any web browser
+and printed to PDF. \href{https://www.google.com/chrome}{Google
+Chrome} or \href{https://www.chromium.org/Home}{Chromium} are the
+recommended browsers.
+
+We can run the whole procedure non-interactively, entirely in the
+command line. This only works in GNU/Linux and macOS:
+
+\begin{screen}
+$ \textbf{abc2svg tunes.abc > tunes.xhtml}
+$ \textbf{chromium-browser --headless --print-to-pdf=tunes.pdf tunes.xhtml}
+... many log messages ...
+... Written to file tunes.pdf.
+$ _
+\end{screen}
+
+% $
+However, in this case Chromium will add headers and footers to every
+page. To remove them and obtain a clean PDF file, run the command:
+
+\begin{screen}
+$ \textbf{pdfcrop --margins "0 -9 0 -9" --clip tunes.pdf}
+PDFCROP 1.38, 2012/11/02 - Copyright (c) 2002-2012 by Heiko Oberdiek.
+==> 79 pages written on `tunes-crop.pdf'.
+$ _
+\end{screen}
+
+The same result can be obtained using \pkg{pdfpages} directly:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{pdfpages}
+
+\def\tunes{tunes.pdf} % PDF file to trim
+
+\begin{document}
+
+\includepdf[pages=-,pagecommand={},%
+width=\paperwidth,trim={0 0.9cm 0 0.9cm},clip]{\tunes}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+% -----
+
+\subsection{Program: \href{http://people.ds.cam.ac.uk/ph10/pmw.html}{PMW}}
+
+Philip's Music Writer (PMW) is a free and multiplatform scorewriter,
+released under the GNU GPL. From the PMW home page:
+
+\begin{quote}
+
+ \emph{Philip's Music Writer} (PMW) is a computer program for high
+ quality music typesetting.
+
+\end{quote}
+
+PMW uses a simple text notation for music input and produces output in
+PostScript.
+
+This is our usual music sample in PMW format (\file{sample-pmw.pmw}):
+
+\begin{source}
+\begin{verbatim}
+@ music sample in PMW
+
+Heading "|Music sample in PMW"
+Key C
+Time 4/4
+
+[stave 1 treble 1]
+c d- e-; f-g-a-b-; | c' b- a-; g-f-e-d-; |
+c-g-e-g-; c-g-e-g-; |c e c r |
+[endstave]
+\end{verbatim}
+\end{source}
+
+We typeset the score with these commands:
+
+\begin{screen}
+$ \textbf{pmw -includefonts sample-pmw.pmw}
+$ \textbf{ps2pdf sample-pmw.ps}
+$ _
+\end{screen}
+% $
+
+% -----
+
+\subsection{Program: \href{http://www.arkkra.com/}{MUP}}
+
+MUP is a free and multiplatform scorewriter, released under a free
+license. From the MUP home page:
+
+\begin{quote}
+
+ Mup takes a text file as input and produces very high quality
+ PostScript output for printed music. It can handle both regular
+ notation and tablature notation. It can also produce MIDI output.
+
+\end{quote}
+
+This is our usual music sample in MUP format (\file{sample-mup.mup}):
+
+\begin{source}
+\begin{verbatim}
+// music sample in MUP notation
+
+header
+ title "Music sample in MUP"
+
+score
+ time=4/4
+
+music
+ 1: 4c; 8d bm; e ebm; f bm; g; a; b ebm;
+ bar
+ 1: 4c+; 8b bm; a ebm; g bm; f; e; d ebm;
+ bar
+ 1: 8c bm; g; e; g ebm; c bm; g; e; g ebm;
+ bar
+ 1: 4c; e; c; r;
+ endbar
+\end{verbatim}
+\end{source}
+
+We typeset the score with these commands:
+
+\begin{screen}
+$ \textbf{mup -F sample-mup.mup}
+Mup - Music Publisher Version 6.6
+Copyright (c) 1995-2017 by Arkkra Enterprises.
+Mup is free software. Use -l option to see license terms.
+$ \textbf{ps2pdf sample-mup.ps}
+$ _
+\end{screen}
+% $
+
+% -----
+
+\subsection{Program: \href{http://musescore.org}{MuseScore}}
+\label{sec:musescore}
+
+MuseScore is a free and multiplatform scorewriter, released under the
+GNU GPL. Unlike the previous programs, it's a desktop application;
+however, it can be conveniently used from the command line.
+
+MuseScore uses its own file formats (\file{.mscz}, \file{.mscx}) but
+it can also import several other file formats;
+\href{https://www.musicxml.com/}{MusicXML} is probably the most
+important.
+
+We convert any supported file to PDF with this command:
+
+\begin{screen}
+$ \textbf{musescore file.xml -o file.pdf}
+initScoreFonts 0x30d33c0
+convert <file.xml> to <file.pdf>
+setFirstInstrument: no instrument found for part 'P1'
+$ _
+\end{screen}
+% $
+
+% -----
+
+\subsection{Package \pkg{abc}}
+\label{sec:pkgabc}
+
+This package enables the inclusion of music in ABC notation in
+\LaTeX{} sources; it's similar to \cmd{lilypond-book} or
+\pkg{lyluatex}, but targeting ABC.
+
+\pkgname{Abc} provides the \env{abc} environment and the
+\ltx{abcinput} commands. The first embeds ABC music in the source,
+while the second includes an external ABC file. This is
+(\file{sample-abc.tex}):
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[generate,ps2eps]{abc}
+\thispagestyle{empty}
+
+\begin{document}
+
+This is an Irish reel:
+
+\begin{abc}[name=julia,program={abcm2ps -O=}]
+X:63
+T: Julia Delaney's
+M: C|
+L: 1/8
+R: reel
+K: Ddor
+|: dcAG ~F2EF|~E2 DE FD D2|dcAG FGAA|Addc d2 fe :|
+ f2fe fagf |ecgc acgc |f2fe fagf|edcG Add2 :|
+\end{abc}
+
+This is an Irish polka, slighly smaller:
+
+\abcinput[program={abcm2ps -O=},width=0.9\abcwidth]
+{breeches}
+
+End of document.
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+The \cmd{generate} option (default) indicates that the ABC music
+should be generated by the external ABC typesetter. If the ABC music
+is not modified and it has already been generated, we could specify
+the \cmd{nogenerate} option. This is what we want to do when only the
+text is changed.
+
+We typeset the source with this command:
+
+\begin{screen}
+$ \textbf{pdflatex --shell-escape sample-abc.tex}
+...
+Output written on sample-abc.pdf (1 page, 30937 bytes).
+Transcript written on sample-abc.log.
+$ _
+\end{screen}
+
+\score{sample-abc}
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Guitar Tablatures}
+\label{sec:tablatures}
+
+Let's go back to guitar stuff. Tablature, as already explained, is a
+form of music notation for stringed instruments; making tablatures is
+basically the same process as making sheet music.
+
+We can distinguish between \emph{automatic tablatures}, where fret
+positions are generated by the program, and \emph{manual tablatures},
+where fret positions are specified by the user.
+
+% -----
+
+\subsection{Program: \href{http://lilypond.org/}{LilyPond}}
+\label{sec:lilytab}
+
+In addition to sheet music, LilyPond can also easily typeset automatic
+guitar tablatures. A minimal example (\file{lilytab.ly}):
+
+\begin{source}
+\begin{verbatim}
+\version "2.18.2"
+\header { tagline = "" } % no footer
+\paper { left-margin = 0\cm }
+
+music = {
+ \time 3/4
+ c4 d e f g a b a b c'2 r4 \bar "|."
+}
+
+\score {
+ <<
+ \new Staff { \clef "G_8" \music } % sheet music
+ \new TabStaff { \tabFullNotation \music } % tablature
+ >>
+}
+\end{verbatim}
+\end{source}
+
+We typeset the score with this command:
+
+\begin{screen}
+$ \textbf{lilypond lilytab.ly}
+...
+Converting to `./lilytab.pdf'...
+Success: compilation successfully completed
+$ _
+\end{screen}
+% $
+
+\scoreshort{lilytab}
+
+\bigskip
+
+As we can see, the very same music line can be typeset as sheet music
+and as guitar tablature. Fretboard positions are automatically
+generated by LilyPond.
+
+% -----
+
+\subsection{Program: \href{https://wim.vree.org/svgParse/abc2xml.html}
+{abc2xml.py}}
+\label{sec:abc2xml}
+
+This Python program converts an ABC file to a
+\href{https://www.musicxml.com/}{MusicXML} file containing automatic
+tablature information; this file can then be typeset with any
+MusicXML-enabled application, like MuseScore.
+
+A minimal tablature example (\file{abctab.abc}):
+
+\begin{source}
+\begin{verbatim}
+X: 1
+M: 3/4
+L: 1/4
+K: C
+%
+V:1
+CDE | FGA | BBB | c2z |]
+V:2 clef=tab octave=-1
+CDE | FGA | BBB | c2z |]
+\end{verbatim}
+\end{source}
+
+We typeset the score with these commands (error messages can be safely
+ignored):
+
+\begin{screen}
+$ \textbf{abc2xml.py -f abctab.abc > abctab.xml}
+-- decoded from utf-8
+-- skipped header: (field X,1)
+-- done in 0.02 secs
+$ \textbf{musescore abctab.xml -o abctab.pdf}
+Jack appears to be installed on this system, so we'll use it.
+initScoreFonts 0x25ba100
+libpng warning: iCCP: known incorrect sRGB profile
+convert <abctab.xml> to <abctab.pdf>
+Error at line 18 col 16: no instrument found for part 'P1'
+Error at line 138 col 16: no instrument found for part 'P2'
+$ _
+\end{screen}
+% $
+
+\score{abctab}
+
+\bigskip
+
+As we can see, the very same music line can be typeset as sheet music
+and as guitar tablature. Fretboard positions are automatically
+generated by \cmd{abc2xml.py}.
+
+We can also use \cmd{lilypond} to typeset the ABC tablature. The
+ancillary program \cmd{musicxml2ly} converts MusicXML files to
+LilyPond format:
+
+\begin{screen}
+$ \textbf{abc2xml.py -f abctab.abc > abctab.xml}
+-- decoded from utf-8
+-- skipped header: (field X,1)
+-- done in 0.02 secs
+$ \textbf{musicxml2ly abctab.xml}
+$ musicxml2ly: Reading MusicXML from abctab.xml ...
+musicxml2ly: Converting to LilyPond expressions...
+musicxml2ly: Converting to LilyPond expressions...
+musicxml2ly: Output to `abctab.ly'
+$ \textbf{lilypond abctab.ly}
+GNU LilyPond 2.18.2
+Processing `abctab.ly'
+...
+Converting to `./abctab.pdf'...
+Success: compilation successfully completed
+$ _
+\end{screen}
+% $
+
+Regrettably, \cmd{musicxml2ly} is not as robust as MuseScore's
+MusicXML import filter, and it may fail on complex music.
+
+% -----
+
+\subsection{Package \pkg{musixtex}}
+
+Starting from version 1.29, \pkgname{MusiXTeX} can also make manual
+tablatures for several stringed instruments. A minimal example, to be
+typeset with \cmd{musixtex} (\file{sample-musixtex-tab.tex}):
+
+\begin{source}
+\begin{verbatim}
+% bare MusiXTeX example
+
+\input musixtex
+\nopagenumbers
+
+This is a MusiXTeX tablature example:
+
+\setlines16 % six lines
+\setstaffs1{1}
+\setclefsymbol1{\tabclef} % and a TAB clef
+\nobarnumbers
+\let\extractline\leftline % left aligned
+
+\startextract
+ \Notes \tab{5}{3} \tab{4}{0} \tab{4}{2} \en
+ \bar
+ \Notes \tab{4}{3} \tab{3}{0} \tab{3}{2} \en
+ \bar
+ \Notes \tab{2}{0} \tab{3}{2} \tab{2}{0} \en
+ \bar
+ \Notes \tab{2}{1} \qp \qp \en
+\endextract
+
+\end
+\end{verbatim}
+\end{source}
+
+\scoreshort{sample-musixtex-tab}
+
+% -----
+
+\subsection{Package \pkg{guitartabs}}
+
+This package may be missing in less recent releases of TeX Live, so
+you might have to install it manually. It provides a \cmd{guitartabs}
+document class and a very simple syntax to manually specify strings,
+fret positions, and note length:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{guitartabs}
+\thispagestyle{empty}
+
+\begin{document}
+
+\Large
+
+\begin{tabline}{4}{4}{4}{E,A,D,G,B,e}
+ % bar 1
+ % note 1 of 3, string 5, fret 4, note length 1/4
+ \notel{1}{3}{5}{3}{4}
+ % note 2 of 3, string 4, fret 0, note length 1/4
+ \notel{2}{3}{4}{0}{4}
+ \notel{3}{3}{4}{2}{4}
+ % bar 2
+ \nextbar
+ \notel{1}{3}{4}{3}{4}
+ \notel{2}{3}{3}{0}{4}
+ \notel{3}{3}{3}{2}{4}
+ % bar 3
+ \nextbar
+ \notel{1}{3}{2}{0}{4}
+ \notel{2}{3}{3}{2}{4}
+ \notel{3}{3}{2}{0}{4}
+ % bar 4
+ \nextbar
+ \notel{1}{3}{5}{3}{2}
+ % rests
+ \restquarter{2}{3}
+ \restquarter{3}{3}
+\end{tabline}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{guitartabs}
+
+If you don't need the note length indications at the bottom of the
+tablature, use \ltx{note} instead of \ltx{notel}.
+
+% -----
+
+\subsection{Using Guitar Pro Tablatures}
+
+A \emph{de facto} standard for guitar tablatures is the
+\href{https://www.guitar-pro.com}{Guitar Pro} format, or more
+precisely a set file formats: \file{.gpX} (where X is 3, 4, 5, 6),
+\file{.gpx}, \file{.gtp}. Many sites offer free tablatures in one of
+these formats.
+
+To print them, we can use
+\href{http://www.tuxguitar.com.ar/}{TuxGuitar} or MuseScore. TuxGuitar
+is a free and multiplatform tablature editor; it's a desktop
+application that can export tablatures in PDF format. Regrettably, it
+cannot work as a command-line program.
+
+To import GuitarPro tablatures into MuseScore and export them as PDF,
+we can use the \cmd{-P} command line switch. It exports all parts to
+the PDF file; then it's up to the user to find out the pages that
+contain the tablature.
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Bits and Pieces}
+
+\subsection{Multimedia Files}
+\label{sec:multimedia}
+
+In addition to sheet music, our documents can also include sound
+files. To be more precise, we can click on a link to an external sound
+file that is referred to in the PDF document; the default player will
+be run.
+
+This feature is made possible by the \pkg{hyperref} package, which
+provides the \ltx{href} command:
+
+\begin{source}
+\begin{verbatim}
+\href{run:jingle.midi}{this midi file}
+\end{verbatim}
+\end{source}
+
+The first parameter opens the specified file with the default
+multimedia player; the second parameter creates a link to click on.
+For example, the above line lets the reader click on
+\href{run:jingle.midi}{this midi file} and listen to it. The operating
+system must know how to play the specified sound file.
+
+The link need not be just text; we may as well apply the link to
+included graphics.
+
+% -----
+
+\subsection{Notation Source Files}
+\label{sec:sources}
+
+If we need to include notation source files, we could use a simple
+\cmd{verbatim} environment, or \cmd{alltt} (package \pkg{alltt}) if we
+also want to include \LaTeX{} commands in the source:
+
+\bigskip
+
+\noindent
+{ \small
+\begin{boxedminipage}[c]{0.52\linewidth}
+\begin{verbatim}
+\textit{\% This is a comment!}
+\textbf{X:} 1
+\textbf{L:} 1/4
+\textbf{K:} C
+\textit{\% These are notes:}
+c G/G/ _AG|z !>!B!>!c z|]
+\end{verbatim}
+\end{boxedminipage}
+\hspace{2em}
+\begin{boxedminipage}[c]{0.4\linewidth}
+\begin{alltt}
+\textit{\% This is a comment!}
+\textbf{X:} 1
+\textbf{L:} 1/4
+\textbf{K:} C
+\textit{\% These are notes:}
+c G/G/ _AG|z !>!B!>!c z|]
+\end{alltt}
+\end{boxedminipage}
+} % \small
+
+\bigskip
+
+But if you want something fancier, like the sources included in this
+document, you could also use the \pkg{tcolorbox} and define a new
+environment like the following:
+
+\bigskip
+
+\begin{tcolorbox}[breakable,boxrule=0.2pt,%
+ left=0pt,right=0pt,colback=green!7!white,arc=2pt]
+\begin{verbatim}
+\newenvironment{source}
+{ % beg def
+ \medskip
+ \small
+ \begin{margins}{-0.3cm}{-0.3cm}
+ \begin{spacing}{0.9}
+ \begin{tcolorbox}[breakable,boxrule=0.2pt,%
+ left=0pt,right=0pt,colback=green!7!white,arc=2pt]
+ \begin{alltt}
+}
+{ % end def
+ \end{alltt}
+ \end{tcolorbox}
+ \end{spacing}
+ \end{margins}
+}
+\end{verbatim}
+\end{tcolorbox}
+
+% -----
+
+\noteseparator
+
+% -----
+
+\section{Putting It All Together}
+
+We have solved the first problem; now we know how to make music files
+in several different ways. Now it's time to solve the second problem:
+how to combine music files and \LaTeX.
+
+We have two possible approaches: keeping all music in the \LaTeX{}
+source, or keeping the music in external files. Both approaches have
+advantages and disadvantages. Basically, the first method is slower,
+because any change in the source may require recompilation of music
+excerpts. The second method requires a little more work, because we
+need to maintain an additional file that takes care of music
+conversion.
+
+% -----
+
+\subsection{Package \pkg{abc}, Revisited}
+
+We met this package in Section~\ref{sec:pkgabc}, where it was used to
+include ABC music in a \LaTeX{} source. This package, however, is not
+limited to ABC. User-defined environments can provide support for
+virtually any external scorewriter; LilyPond support, however, is
+slightly bugged.
+
+The following source defines the \env{mtx} and \env{pmw} environments.
+For each, the definition specifies the external program to run, its
+command line switches, and the file extension:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage[generate,ps2eps]{abc}
+
+% --- M-Tx support
+\newenvironment{mtx}[1][]
+{\renewcommand{\normalabcoutputfile}{out-mtx}%
+\abc[program=musixtex,options={-g},extension=mtx,#1]}
+{\endabc}
+\newcommand{\mtxinput}[2][]{%
+\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}}
+
+% --- PMW support
+\newenvironment{pmw}[1][]
+{\renewcommand{\normalabcoutputfile}{out-pmw}%
+\abc[program=pmw,options={-includefont},extension=pmw,#1]}
+{\endabc}
+\newcommand{\pmwinput}[2][]{%
+\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}}
+
+\begin{document}
+
+This document includes music excerpts written in different formats. It
+uses \texttt{abc.sty} and defines new environments.
+
+This is a short piece, typeset by M-Tx:
+
+\mtxinput{sample-mtx}
+
+The same piece, typeset by PMW:
+
+\pmwinput{sample-pmw}
+
+End of document.
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{sample-all}
+
+\bigskip
+
+A complete template that implements all environments is presented in
+Section~\ref{sec:abcall}.
+
+% -----
+
+\subsection{Using \cmd{make}}
+
+Another way to make a \LaTeX{} document that includes music in
+different formats is by using a developer's tool called \cmd{make}.
+It's a program that takes care of what needs what, what needs to be
+converted first, what should be done if you modify something, and so
+on. \cmd{make} is normally used to compile programs.
+
+Let's make a practical example. We have a \LaTeX{} document,
+\file{main.tex}, which includes three PDF files, \file{music1.pdf},
+\file{music2.pdf}, and \file{music3.pdf}:
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{graphicx}
+\thispagestyle{empty}
+
+\begin{document}
+
+This document includes three music excerpts:
+
+\includegraphics{music1}
+
+\includegraphics{music2}
+
+\includegraphics{music3}
+
+End of document.
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+Let's suppose that the three PDF files are obtained from an
+\pkgname{M-Tx} file, a LilyPond file, and an ABC file. We should
+convert the PDF files manually, then typeset \file{main.tex}. It's not
+a big deal, but what if you have dozens of music files, each of which
+must be converted with different commands? This task would soon grow
+tedious and difficult to manage.
+
+Here \cmd{make} comes to the rescue. It uses a text file, called
+\file{Makefile}, which contains rules for building the document and
+the PDF files that it includes. This is a simple \file{Makefile} that
+can be used to compose (make!) \file{main.pdf}:
+
+\begin{source}
+\begin{verbatim}
+# Makefile for main.tex
+
+FIGURES = music1.pdf music2.pdf music3.pdf
+
+# The final document depends on main.tex and the figures
+main.pdf: main.tex $(FIGURES)
+ pdflatex main.tex
+
+# music1.pdf depends on music1.mtx
+# conversion commands follow
+music1.pdf: music1.mtx
+ musixtex music1.mtx ; pdfcrop musix1.pdf ; \
+ /bin/mv musix1-crop.pdf music1.pdf
+
+# music2.pdf depends on music2.ly
+music2.pdf: music2.ly
+ lilypond music2.ly; pdfcrop musix2.pdf ; \
+ /bin/mv musix2-crop.pdf music2.pdf
+
+# music3.pdf depends on music3.abc
+music3.pdf: music3.abc
+ abcm2ps -c -O= music3.abc; ps2pdf music3.ps; \
+ pdfcrop musix3.pdf ; \
+ /bin/mv musix3-crop.pdf music3.pdf
+
+# end of Makefile
+\end{verbatim}
+\end{source}
+
+% $
+
+Let's see what it does. First of all, as you might have guessed the
+\cmd{\#} character starts a comment; the rest of the line is ignored.
+
+This line:
+
+\begin{source}
+\begin{verbatim}
+FIGURES = music1.pdf music2.pdf music3.pdf
+\end{verbatim}
+\end{source}
+
+\noindent
+creates a \emph{variable}, that is a ``name'' (\cmd{FIGURES}) that
+``contains'' the three file names \cmd{music1.pdf music2.pdf
+music3.pdf}. This variable will be referred to later on.
+
+These lines:
+
+\begin{source}
+\begin{verbatim}
+main.pdf: main.tex $(FIGURES)
+ pdflatex main.tex
+\end{verbatim}
+\end{source}
+% $
+
+\noindent
+declare that \cmd{main.pdf} is a \emph{target} that depends on
+\file{main.tex} and on the three files denoted by the \cmd{FIGURES}
+variable. The second line specifies the command that must be run to
+make \file{main.pdf}. This line starts with a TAB character, not with
+spaces: this is important!
+
+Then we have three sections, one for each music file. Each section
+tells \cmd{make} what to do to compose the PDF figure. For instance,
+the section:
+
+\begin{source}
+\begin{verbatim}
+music1.pdf: music1.mtx
+ musixtex music1.mtx ; pdfcrop musix1.pdf ; \
+ /bin/mv musix1-crop.pdf music1.pdf
+\end{verbatim}
+\end{source}
+
+\noindent
+states that \file{music1.pdf} is a target that depends on
+\file{music1.mtx}; the following lines specify the commands to create
+\file{music1.pdf}. Commands are separated by the \cmd{;} character,
+while \cmd{\textbackslash} indicates that the command continues to the
+next line.
+
+To make \file{main.pdf}, we simply run the command:
+
+\begin{screen}
+$ \textbf{make}
+...
+$ _
+\end{screen}
+
+\noindent
+in the same directory where we saved \file{Makefile}. \cmd{make} will
+make the three figures first, then \file{main.pdf} that depends on
+them.
+
+If we modify one of the files, \cmd{make} will take care of
+dependencies and rebuild the final target. For example, if we modify
+\file{music2.ly}, \cmd{make} will rebuild \file{music2.pdf} first, then
+\file{main.pdf} that depends on \file{music2.pdf}.
+
+In my opinion, this approach is the most flexible. This guide was
+compiled using \cmd{make} and a pretty long \file{Makefile}.
+
+% -----
+
+\noteseparator
+
+% -----
+
+\newpage
+\section{The End}
+
+That's it, dear fellow musicians: I really hope that this guide will
+be useful to you. Please help me improve this document: for any
+suggestions, comments, or contributions, please feel free to contact
+me by \href{mailto:guido.gonzato@gmail.com}{email}. I'd like to
+receive feedback, especially if you use this document in education.
+
+I would like to thank all the geniuses who wrote the packages and
+programs cited in this guide. Kudos and hats off, folks!
+
+This document is copyleft \copyleft{} Guido Gonzato, PhD, and released
+under the \href{https://www.gnu.org/licenses/fdl.html}{GNU Free
+Documentation Licence}.
+
+\medskip
+
+\begin{center}
+ \includegraphics{guidopiper.jpeg}
+\end{center}
+
+Ciao! \texttt{=8-)}
+
+% -----
+
+\noteseparator
+
+% -----
+
+\newpage
+
+\appendix
+
+\section{List of Packages and Programs}
+
+This manual uses many \LaTeX{} packages and includes PDF output
+produced by several programs, all of which are free and open source.
+Commercial programs were intentionally left out.
+
+The page \url{https://www.ctan.org/topic/music} is an important
+starting po\-int for those interested in combining \LaTeX{} and music.
+It's a list of \LaTeX{} packages for typesetting music and related
+stuff. The following is the complete list of packages and programs I
+used to make this manual, in order of appearance.
+
+\begin{itemize}
+
+ \item CTAN Music page. ``This topic contains packages for
+ typesetting music and related stuff.''\\
+ \url{https://www.ctan.org/topic/music}.
+
+ \item Package: musicography, v. 2018-05.21.\\
+ \url{https://ctan.org/pkg/musicography}
+
+ \item Package: leadsheets, v. 0.5b\\
+ \url{https://ctan.org/pkg/leadsheets}
+
+ \item Package: lilyglyphs, v. 0.2.3\\
+ \url{https://ctan.org/pkg/lilyglyphs}
+
+ \item Font: Bravura, v.1.272\\
+ \url{https://www.smufl.org/fonts}
+
+ \item Package: guitar, v. 1.6\\
+ \url{https://ctan.org/pkg/guitar}
+
+ \item Package: gtrcrd, v. 1.1\\
+ \url{https://ctan.org/pkg/gtrcrd}
+
+ \item Package: songs, v. 3.0\\
+ \url{https://ctan.org/pkg/songs}
+
+ \item Package: musixguit, v. 1.2.2\\
+ \url{https://ctan.org/pkg/musixguit}
+
+ \item Package: songbook, v. 4.5\\
+ \url{https://ctan.org/pkg/songbook}
+
+ \item Program: Chordii, v. 4.3\\
+ \url{https://www.vromans.org/projects/Chordii}
+
+ \item Package: gchords, v. 1.20\\
+ \url{https://ctan.org/pkg/gchords}
+
+ \item Package: guitarchordschemes, v. 0.7\\
+ \url{https://ctan.org/pkg/guitarchordschemes}
+
+ \item Package: guitartabs, v. 2018-05-01\\
+ \url{https://ctan.org/pkg/guitartabs}
+
+ \item Page: MusiXTeX and Related Software. \\
+ \url{https://icking-music-archive.org/software/htdocs/htdocs.html}
+
+ \item Package: MusiXTeX, v. 1.29\\
+ \url{https://ctan.org/pkg/musixtex}
+
+ \item Package: M-Tx, v. 0.63a\\
+ \url{https://ctan.org/pkg/m-tx}
+
+ \item Package: Gregoriotex, v. 5.1.1\\
+ \url{https://ctan.org/pkg/gregoriotex}\\
+ \url{http://gregorio-project.github.io/gregoriotex}\\
+ \url{http://gregorio-project.github.io}
+
+ \item Program: LilyPond, v. 1.18.2\\
+ \url{http://lilypond.org}
+
+ \item Package: Lyluatex, v. 1.0b\\
+ \url{https://ctan.org/pkg/lyluatex}
+
+ \item Programs: \cmd{abcm2ps} v. 8.14.2, \cmd{and2svg} v. 1.19.0\\
+ \url{http://moinejf.free.fr}
+
+ \item Program: PMW, Philip's Music Writer, v. 4.30\\
+ \url{http://people.ds.cam.ac.uk/ph10/pmw.html}
+
+ \item Program: MUP v. 6.6\\
+ \url{http://www.arkkra.com}
+
+ \item Program: MuseScore v. 3.0\\
+ \url{http://musescore.org}
+
+ \item Package: Abc v. 2.0b\\
+ \url{https://ctan.org/pkg/abc}
+
+ \item Program: abc2xml.ly v. 218\\
+ \url{https://wim.vree.org/svgParse/abc2xml.html}
+
+\end{itemize}
+
+% -----
+
+\newpage
+
+\section{Examples}
+
+\subsection{A Complete \pkg{abc} Example}
+\label{sec:abcall}
+
+This source defines environments for M-Tx, PMW, LilyPond, and MUP; it
+also redefines the \cmd{abc} environment as \cmd{ABC}. This is
+necessary for technical reasons. Lilypond sources must begin with a
+double line \ltx{version "2.18.2"}; this is required to avoid a bug.
+
+\begin{source}
+\begin{verbatim}
+% typeset with:
+% pdflatex -shell-escape sample-abc-all.tex
+
+\documentclass{article}
+\thispagestyle{empty}
+\usepackage[generate,ps2eps]{abc}
+
+% --- M-Tx support
+\newenvironment{mtx}[1][]
+{\renewcommand{\normalabcoutputfile}{out-mtx}%
+\abc[program=musixtex,options={-g},extension=mtx,#1]}
+{\endabc}
+\newcommand{\mtxinput}[2][]{%
+\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}}
+
+% --- PMW support
+\newenvironment{pmw}[1][]
+{\renewcommand{\normalabcoutputfile}{out-pmw}%
+\abc[program=pmw,options={-includefont},extension=pmw,#1]}
+{\endabc}
+\newcommand{\pmwinput}[2][]{%
+\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}}
+
+% --- LilyPond support
+% !!! BUG: the LilyPond source must begin with a \null command
+\newenvironment{lily}[1][]
+{\renewcommand{\normalabcoutputfile}{out-lily}%
+\abc[program=lilypond,options={-d backend=eps},extension=ly,#1]}
+{\endabc}
+\newcommand{\lilyinput}[2][]{%
+\abcinput[program=lilypond,options={--ps},extension=ly,#1]{#2}}
+
+% --- MUP support
+\newenvironment{mup}[1][]
+{\renewcommand{\normalabcoutputfile}{out-mup}%
+\abc[program=mup,options={-F},extension=mup,#1]}
+{\endabc}
+\newcommand{\mupinput}[2][]{%
+\abcinput[program=mup,options={-F},extension=mup,#1]{#2}}
+
+% --- ABC must be redefined
+\newenvironment{ABC}[1][]
+{\renewcommand{\normalabcoutputfile}{out-ABC}%
+\abc[program=abcm2ps,options={-O=},extension=abc,#1]}
+{\endabc}
+\newcommand{\ABCinput}[2][]{%
+\abcinput[program=abcm2ps,options={-O=},extension=abc,#1]{#2}}
+
+\begin{document}
+
+This document includes music excerpts written in several formats. It
+uses \texttt{abc.sty} and defines new environments.
+
+This is a short piece, typeset by M-Tx:
+
+\begin{mtx}
+Title: \bigtype Music sample in M-Tx
+Style: Solo
+Meter: C
+Width: 160mm
+
+c4 d8 e f g a b | c4 b8 a g f e d | c8 g+ e g c- g+ e g | c4- e c r |
+\end{mtx}
+
+The same piece, typeset by LilyPond:
+
+\begin{lily}
+% twice - it's required to avoid a bug
+\version "2.18.2"
+\version "2.18.2"
+
+\header {
+ title = "Music sample in LilyPond"
+ tagline = "" % no footer
+}
+
+\relative c' {
+ \time 4/4
+ \clef treble
+ c4 d8 e f8 g a b | c4 b8 a g8 f e d |
+ c8 g' e g c,8 g' e g | c,4 e c r \bar "|."
+}
+\end{lily}
+
+The same piece, typeset by PMW:
+
+\begin{pmw}
+Heading "|Music sample in PMW"
+Key C
+Time 4/4
+
+[stave 1 treble 1]
+c d- e-; f-g-a-b-; | c' b- a-; g-f-e-d-; |
+c-g-e-g-; c-g-e-g-; |c e c r |
+[endstave]
+\end{pmw}
+
+The same piece, typeset by MUP:
+
+\begin{mup}
+// music sample in MUP notation
+
+header
+ title "Music sample in MUP"
+
+score
+ time=4/4
+
+music
+ 1: 4c; 8d bm; e ebm; f bm; g; a; b ebm;
+ bar
+ 1: 4c+; 8b bm; a ebm; g bm; f; e; d ebm;
+ bar
+ 1: 8c bm; g; e; g ebm; c bm; g; e; g ebm;
+ bar
+ 1: 4c; e; c; r;
+ endbar
+\end{mup}
+
+The same piece, typeset by abcm2ps:
+
+\begin{ABC}
+X: 1
+T: Music sample in ABC
+M: 4/4
+L: 1/4
+K: C
+%
+C D/E/ F/G/A/B/|c B/A/ G/F/E/D/|C/G/E/G/ C/G/E/G/|CECz|]
+\end{ABC}
+
+\end{document}
+
+\end{verbatim}
+\end{source}
+
+\score{sample-abc-all}
+
+% -----
+
+\subsection{A Complete Songbook Example}
+\label{sec:songbook}
+
+The following source is a minimal template for songbooks. It uses the
+\pkg{gchords} and \pkg{guitar} packages (Sections~\ref{sec:gchords}
+and \ref{sec:pkgguitar}). The resulting PDF has its own page numbers
+(don't get confused!) and is included in this document with
+\ltx{includepdf}.
+
+\begin{source}
+\begin{verbatim}
+\documentclass[11pt]{article}
+\usepackage{graphicx}
+\usepackage{gchords}
+\usepackage{guitar}
+
+\begin{document}
+
+\title{A Minimal Songbook}
+\author{Guido Gonzato}
+\date{\today}
+
+\maketitle
+\tableofcontents
+
+% -----
+
+\section{For He's a Jolly Good Fellow}
+
+% Typically sung to congratulate somebody.
+
+\smallchords
+
+\def\numfrets{4}
+\begin{minipage}[c]{\linewidth} % use less space
+ \chords{
+ \chord{t}{n,p3,p2,n,p1,n}{C}
+ \chord{t}{p3,p2,n,n,n,p3}{G}
+ \chord{t}{n,p3,p2,p3,p1,n}{C7}
+ \chord{t1}{n,p2,p2,p1,n,n}{F}
+}
+\end{minipage}
+
+\medskip
+
+\includegraphics[width=\textwidth]{fellow}
+
+\bigskip
+
+\begin{guitar}
+
+For [C]he's a jolly good fellow,
+For [G]he's a jolly good [C]fellow,
+For [C7]he's a jolly good [F]fellow,
+Which [C]nobody [G]can [C]deny.
+
+\end{guitar}
+
+% -----
+
+\section{Happy Birthday To You}
+
+% Sung to remind somebody they're growing old.
+
+\def\numfrets{4}
+\begin{minipage}[c]{\linewidth}
+ \chords{
+ \chord{t1}{n,p2,p2,p1,n,n}{F}
+ \chord{t}{n,p3,p2,n,p1,n}{C}
+ \chord{t}{n,p3,p2,p3,p1,n}{C7}
+ \chord{t1}{n,n,p2,p2,p2,n}{Bb}
+}
+\end{minipage}
+
+\medskip
+
+\includegraphics[width=\textwidth]{happyb}
+
+\bigskip
+
+\begin{guitar}
+Happy [F]birthday to [C]you,
+Happy [C7]birthday to [F]you,
+Happy birthday dear [Bb]Guido,
+Happy [F]birthday [C]to [F]you!
+\end{guitar}
+
+% -----
+
+\section{Warm Kitty}
+
+% No need to introduce this lullaby!
+
+\def\numfrets{4}
+\begin{minipage}[c]{\linewidth}
+\chords{
+ \chord{t}{n,n,p2,p2,p2,n}{A}
+ \chord{t}{n,p2,p2,p1,n,n}{E}
+ \chord{t}{n,p2,p2,p1,p3,n}{E7}
+}
+\end{minipage}
+
+\medskip
+
+\includegraphics[width=\textwidth]{warm}
+
+\bigskip
+
+\begin{guitar}
+
+[A]Soft kitty, [E]warm kitty
+[A]Little ball of [E]fur [E7]~
+[A]Happy kitty, [E]sleepy kitty
+[A]Purr, [E]purr, [A]purr
+
+\end{guitar}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\newpage
+
+\pagecolor{pdfbg}
+\includepdf[pages=-,pagecommand={}]{sample-songbook.pdf}
+\pagecolor{white}
+
+% -----
+
+\subsection{A sample \file{Makefile}}
+
+This is the \file{Makefile} that was used to typeset the previous
+example. The \cmd{clean} target is used to clean up all temporary
+files.
+
+\begin{source}
+\begin{verbatim}
+# Makefile for sample-songbook
+
+FIGURES = fellow.pdf happyb.pdf warm.pdf
+
+sample-songbook: sample-songbook.tex $(FIGURES)
+ pdflatex sample-songbook.tex; \
+ pdflatex sample-songbook.tex; \
+ pdflatex sample-songbook.tex
+
+fellow.pdf: fellow.abc
+ abcm2ps -c -O= fellow.abc; \
+ ps2pdf fellow.ps; pdfcrop fellow.pdf; \
+ /bin/mv -f fellow-crop.pdf fellow.pdf
+
+happyb.pdf: happyb.abc
+ abcm2ps -O= happyb.abc; \
+ ps2pdf happyb.ps; pdfcrop happyb.pdf; \
+ /bin/mv -f happyb-crop.pdf happyb.pdf
+
+warm.pdf: warm.abc
+ abcm2ps -O= warm.abc; \
+ ps2pdf warm.ps; pdfcrop warm.pdf; \
+ /bin/mv -f warm-crop.pdf warm.pdf
+
+clean:
+ /bin/rm -f .*~ *~ *aux *bak *lo? *to? *out *tmp *bbl *ps
+\end{verbatim}
+\end{source}
+% $
+
+% -----
+
+\subsection{Verses and Guitar Chords Diagrams}
+
+Combining verses and guitar chord diagrams can be done in several
+ways. I think that the following example shows two of the easiest
+methods. Please refer to Section~\ref{sec:pkgguitar} and
+Section~\ref{sec:gchords} for further details.
+
+\begin{source}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{guitar}
+\usepackage{gchords}
+\thispagestyle{empty}
+
+\newcommand{\C}{\hspace{-0.8em}\chord{t}{n,p3,p2,n,p1,n}{C}}
+\newcommand{\CmajVII}{\hspace{-0.8em}\chord{t}{n,p3,p2,n,n,n}{Cmaj7}}
+\newcommand{\F}{\hspace{-0.8em}\chord{t1}{n,p2,p2,p1,n,n}{F}}
+
+\def\chordsize{1.5mm}
+\def\numfrets{3}
+\def\namefont{\it}
+
+\begin{document}
+
+\noindent
+We can typeset verses and guitar chord grids in a \texttt{guitar}
+environment:
+
+\bigskip
+
+\begin{minipage}[c]{\linewidth} % to avoid indentation
+ \begin{guitar}
+
+ \textbf{Imagine (John Lennon)}
+ \emph{Intro, $\times$ 2}
+ [\C] \hspace{2em} [\CmajVII] \hspace{2em} [\F] \hspace{2em}
+ [\C]Imagine there's [\CmajVII|]{no} ~ [\F]heaven
+ [\C]It's easy if [\CmajVII|]{you} ~ [\F]try
+
+ \end{guitar}
+\end{minipage}
+
+\noindent
+{\ldots}and so on. But we could just use the \verb|\upchord| command,
+provided by \texttt{gchords}:
+
+\begin{verse}
+
+ \upchord{\C}Imagine there's \upchord{\CmajVII}no \qquad
+ \upchord{\F}heaven
+
+ \upchord{\C}It's easy if \upchord{\CmajVII}you \qquad
+ \upchord{\F}try
+
+\end{verse}
+
+\end{document}
+\end{verbatim}
+\end{source}
+
+\score{verses-chords}
+
+% -----
+
+\end{document}
+
+%% --- end of file latex4musicians.tex