\documentclass{article}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\usepackage{semantic-markup}
\usepackage{musicography}
\usepackage{fancyvrb}
\frenchspacing

\newenvironment{codetable}
{\begin{quote}\begin{tabular}{lll}}
{\end{tabular}\end{quote}}

\usepackage[
    pdftitle={The musicography Package: Symbols for Music Writing},
    pdfauthor={Andrew A. Cashner},
    pdfsubject={LaTeX package}, pdfkeywords={LaTeX, symbols, music, musicology, humanities}
]{hyperref}

\title{The \code{musicography} Package: Symbols for Music Writing with
\code{pdflatex}}
\author{Andrew A. Cashner\thanks{%
    \href{mailto:andrewacashner@gmail.com}
    {\nolinkurl{andrewacashner@gmail.com}}%
    }%
}
\date{January 29, 2020}

\begin{document}
\maketitle

Most \LaTeX{} font packages and freely available fonts only provided a limited
range of musical symbols. 
The \code{lilyglyphs} package uses Lilypond's fonts, but requires
\code{lualatex}. 
This package makes available the most commonly used symbols in writing about
music in a way that looks consistent and attractive.
It is especially useful for \code{pdflatex} but also works alongside Unicode
fonts with \code{xelatex}.
It includes accidentals, meters, notes of different rhythmic values, and
automatic formatting of figured bass.

This package builds on the approach used in the \code{harmony} package, where
the symbols are taken from the MusiXTeX fonts.
But it provides a larger range of symbols and a more flexible, user-friendly
interface written using \code{xparse}.
The package is meant to work hand-in-hand with my \code{semantic-markup}
package, and overrides some of its music-symbol commands with better
alternatives.

\tableofcontents

\section{Package Options}

To use the package, write \verb|\usepackage{musicography}| in your preamble.
If you are also using this author's \code{semantic-markup} package, 
\code{musicography} will automatically redefine the commands for accidentals in
the other package.

The \code{bigger} option provides larger font sizes that match better with
certain fonts.

The package now (2019) provides full support for figured-bass notation using the
\verb|\musFig| command.

The \verb|\musNumFont| command allows you to change the font of the numerals
used.
For example, if using the \code{ebgaramond} font package, it looks better if you
do this: 
\begin{quote}
    \verb|\renewcommand{\musNumFont}[1]{\liningnums{#1}}|.
\end{quote}


\section{Symbols and Commands}

\subsection{Accidentals}

\begin{codetable}
    Flat & \verb|\musFlat| or \verb|\fl| & \musFlat\\
    Sharp & \verb|\musSharp| or \verb|\sh| & \musSharp\\
    Natural & \verb|\musNatural| or \verb|\na| & \musNatural\\
    Double Flat & \verb|\musDoubleFlat| & \musDoubleFlat\\
    Double Sharp & \verb|\musDoubleSharp| & \musDoubleSharp\\
\end{codetable}

\subsection{Notes of Different Rhythmic Values}

Commands are available using modern (United States) note names; in several cases
there are also aliases for older note names.

\begin{codetable}
    Whole note (semibreve) & \verb|\musWhole| or \verb|\musSemibreve| &
    \musWhole\\
    Half note (minim) & \verb|\musHalf| or \verb|\musMinim| & \musHalf\\
    Quarter note (semiminim) & \verb|\musQuarter| or \verb|\musSeminimin| &
    \musQuarter\\
    Eighth note (corchea) & \verb|\musEighth| or \verb|\musCorchea| &
    \musEighth\\
    Sixteenth note & \verb|\musSixteenth| & \musSixteenth\\
    Thirty-second note & \verb|\musThirtySecond| & \musThirtySecond\\
    Sixty-fourth note & \verb|\musSixtyFourth| & \musSixtyFourth\\
\end{codetable}

A dot may be added to any of the above by adding \code{Dotted} to the end of the
command. For example:

\begin{codetable}
    Dotted whole note & \verb|\musWholeDotted| & \musWholeDotted\\
    Dotted quarter note & \verb|\musQuarterDotted| & \musQuarterDotted\\
    Dotted thirty-second note & \verb|\musThirtySecondDotted| &
    \musThirtySecondDotted\\
\end{codetable}

\subsection{Meter Signatures}

\begin{codetable}
    Common duple & \verb|\meterC| & \meterC\\
    \term{Alla breve} & \verb|\meterCutC| & \meterCutC\\
    Ternary (16th--18th cent.) & \verb|\meterCThree| & \meterCThree\\
    Ternary with $3:2$ proportion & \verb|\meterCThreeTwo| &
    \meterCThreeTwo\\
    Spanish 17th-cent. ternary & \verb|\meterCZ| & \meterCZ\\
    Medieval \term{tempus perfectum} & \verb|\meterO| & \meterO\\
\end{codetable}

For other time signatures, use \verb|\musMeter{}{}|; the two arguments are the
numerator and denominator of the fraction, respectively.

\subsection{Figured Bass}

For figured-bass notation, use \verb|\musFig{}|.
The command, as of May 2019 now re-implemented using the \code{stackengine}
package, takes a single argument which may contain as many space-separated
elements as you like. 
(The \verb|\musFig| command is implemented with \verb|\musStack{}|, which is
also used to for \verb|\musMeter|.)

The elements in the argument will be stacked vertically and left-aligned.
Multiple figures in a row should be enclosed in brackets if there are spaces
between them.

To align figures when there are empty slots, as in \musFig{6--5
\noFig[5--]\musSharp}, use \verb|\noFig[]|. 
It will insert horizontal space the
same width as its optional argument when typeset; the default value is the
width of the numeral 5.
It does this using \verb|\hphantom|, so you should supply the same text in the
argument as the figure with which you want to align. 
The code for the example at the beginning of this paragraph was 
\verb|\musFig{6--5 \noFig[5--]\musSharp}|.

The font may be controlled by redefining \verb|\musFigFont{}|.
Its default value is as follows:
\begin{Verbatim}
\NewDocumentCommand{\musFigFont}{}{%
    \scriptsize
    \let\musFontLarge\musFontBig
}
\end{Verbatim}
This reduces the size of numbers and the music font so that they fit better with
surrounding text and so that numerals and accidentals in the figures match.



{\renewcommand{\arraystretch}{2.5}
\small
\begin{codetable}
    Two figures & \verb|\musFig{7 5\musSharp}| 
    & \musFig{7 5\musSharp}\\
    Three figures & \verb|\musFig{7\musFlat{} 5 3}| 
    & \musFig{7\musFlat{} 5 3}\\
    Four figures & \verb|\musFig{7 5 4 2}| &
    \musFig{9 7 5 3}\\
    Voice leading & \verb|\musFig{7--6 5--4 3}| 
    & \musFig{7--6 5--4 3}\\
    Voice leading & \verb|\musFig{6--7 4--5 \noFig[2--]3}| 
    & \musFig{7--6 5--4 \noFig[2--]3}\\
    Multiple figures per row 
    & \verb|\musFig{{6\musFlat{} 5} {\noFig[6\musFlat] \musSharp}}|
    & \musFig{{6\musFlat{} 5} {\noFig[6\musFlat] \musSharp}}\\
\end{codetable}}


\subsection{Customization}

It would be a simple matter of using \verb|\newcommand| or \verb|\let| to create
aliases for these commands, say, for British usage (such as \verb|\quaver|).

\LaTeX{} programmers may wish to use the package's internal commands directly to
access more symbols from the fonts or fine-tune their appearance.
See \verb|\musSymbol| and \verb|\musAccidental| in the code listing below. 

\section{Changes}

\begin{itemize}
    \item[2020-01-29] Reduced stack gap for \verb|\musFig|
    \item[2019/11/24] Fix \verb|\MeterCThreeTwo| so that numbers are stacked
        and aligned correctly
    \item[2019/05/28] Bux fixes and new features, especially figured bass
        \begin{itemize}
            \item Fix issue 1 on Bitbucket, thanks to Christian Mondrup
                \begin{itemize}
                    \item Correct mistaken notehead symbol for values less than
                        quarter note (was hollow, now filled)
                    \item Add 32nd and 64th notes, regular and dotted varieties
                    \item \verb|\musSymbol| is now typeset inside an
                        \verb|\mbox| to fix alignment problems when used in
                        tables
                \end{itemize}
            \item New features (some requested in issue no. 1):
                \begin{itemize}
                    \item Add medieval perfect meter
                    \item Add aliases for \term{fusa} ($=$ corchea $=$ eighth note)
                    \item Replace musStack implementation with \code{stackengine}
                    \item Add full figured-bass support
                \end{itemize}
        \end{itemize}
    \item[2018/05/21] Override semantic-markup's \verb|\fl|, \verb|\sh|,
        \verb|\na| commands if it is loaded
    \item[2017/10/31] Corrected glyph used for \verb|\musHalf| and documented
        \verb|\musMeter| and \verb|\musFigures|
    \item[2017/08/29] First version on CTAN
    \item[2017/04/12] Created
\end{itemize}

\section{Code}

\VerbatimInput{musicography.sty}


\end{document}
