texlive[67666] Master/texmf-dist: recorder-fingering (18jul23)

commits+karl at tug.org commits+karl at tug.org
Tue Jul 18 21:50:18 CEST 2023


Revision: 67666
          http://tug.org/svn/texlive?view=revision&revision=67666
Author:   karl
Date:     2023-07-18 21:50:18 +0200 (Tue, 18 Jul 2023)
Log Message:
-----------
recorder-fingering (18jul23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/recorder-fingering/README.md
    trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.pdf
    trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.tex
    trunk/Master/texmf-dist/tex/latex/recorder-fingering/recorder-fingering.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.bib

Modified: trunk/Master/texmf-dist/doc/latex/recorder-fingering/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/recorder-fingering/README.md	2023-07-18 19:50:06 UTC (rev 67665)
+++ trunk/Master/texmf-dist/doc/latex/recorder-fingering/README.md	2023-07-18 19:50:18 UTC (rev 67666)
@@ -1,6 +1,6 @@
 # recorder-fingering
 
-Version 1.2 July 15, 2023
+Version 1.3 July 17, 2023
 
 The `recorder-fingering` package provides support for generating fingering diagrams for baroque fingering recorders and the tin whistle. Standard fingerings are provided for recorders in both C and F, and the tin whistle in D, along with methods to create and display alternate fingerings for trills, etc.
 

Added: trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.bib	2023-07-18 19:50:18 UTC (rev 67666)
@@ -0,0 +1,25 @@
+
+ at online{GreyLarsenWhistleFingerings,
+	title = {Resources for Tin Whistle and Irish Flute Players},
+	author = {Grey Larsen},
+	lastchecked = {2023-07-17},
+	month = {7},
+	url = {https://greylarsen.com/resources/resources-for-tin-whistle-and-irish-flute-players/},
+	year = {2023}}
+
+ at online{BlockisRecorderFingerings,
+	author = {Übergabe, Blocki },
+	title = {Blockis recorder fingerings}, 
+	lastchecked = {2023-07-17},
+	month = {7},
+	url = {https://blockfloetengriffe.de/en/},
+	year = {2023}}
+
+ at book{Wollitz1981,
+	address = {New York},
+	author = {Wollitz, Kenneth},
+	publisher = {Alfred A. Knopf},
+	title = {The Recorder Book},
+	year = {1981}}
+
+


Property changes on: trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.tex	2023-07-18 19:50:06 UTC (rev 67665)
+++ trunk/Master/texmf-dist/doc/latex/recorder-fingering/recorder-fingering.tex	2023-07-18 19:50:18 UTC (rev 67666)
@@ -1,6 +1,6 @@
 % !TEX TS-program = LuaLaTeXmk
 
-\documentclass[11pt]{article} 
+\documentclass[11pt]{article}
 \usepackage{calc}
 \usepackage{fontspec}
 \usepackage[lmargin=.75in,rmargin=.75in,tmargin=1in,bmargin=1in]{geometry}
@@ -12,19 +12,26 @@
 \usepackage{url}
 \usepackage[sf,small]{titlesec}
 \usepackage[section]{placeins}
-\usepackage[colorlinks=true]{hyperref}
 \setmonofont{Inconsolatazi4}
 \usepackage{recorder-fingering}
 \usepackage{parskip}
 \usepackage{musixtex}
 \input musixlyr
+% musixtex and biblatex clash
+\let\mxaddspace\addspace
+\let\addspace\relax
+\AtBeginEnvironment{music}{\let\addspace\mxaddspace}
+\usepackage[style=authoryear]{biblatex}
+\addbibresource{recorder-fingering.bib}
 \usetikzlibrary{tikzmark}
 \usetikzlibrary{positioning}
+\usepackage[colorlinks=true,citecolor=black]{hyperref}
+
 \NewDocumentCommand{\addf}{m}{\tikz[remember picture]{\node[overlay,above=of pic cs:#1]{\Soprano{#1}};}}
 \DefineShortVerb{\|}
 \title{The \texttt{recorder-fingering} package}
 \author{Alan Munn\\amunn at msu.edu}
-\date{Version 1.2\\July 15, 2023}
+\date{Version 1.3\\July 17, 2023}
   
 \lstset{%
     basicstyle=\ttfamily\small,
@@ -56,7 +63,7 @@
 
 
 \section{Display commands}
-This package provides five recorder commands (|\Sopranino|, |\Soprano|, |\Alto|, |\Tenor|, and |\Bass|) and one tin whistle command (|\Whistle|).\footnote{Because \pkg{musixtex} defines commands \pkg{\bs alto} and \pkg{\bs bass} the fingering display commands are capitalized.}  which will produce a fingering diagram for any note in the playable range of that recorder. At present, there are no differences between the three F recorders (sopranino, alto, and bass) and the two C recorders (soprano and tenor), so the different command names are simply there for convenience. 
+This package provides five recorder commands (|\Sopranino|, |\Soprano|, |\Alto|, |\Tenor|, and |\Bass|) and one tin whistle command (|\Whistle|).\footnote{Because \pkg{musixtex} defines commands \pkg{\bs alto} and \pkg{\bs bass} the fingering display commands are capitalized.}  which will produce a fingering diagram for any note in the playable range of that recorder. Additionally, a set of trill fingering commands are provided to make producing trill fingerings simpler. At present, there are no differences between the three F recorders (sopranino, alto, and bass) and the two C recorders (soprano and tenor), so the different command names are simply there for convenience. A set of dedicated trill fingering display commands is also provided.   These are described in section \ref{trill-fingerings}.
 
 
 \begin{table}[htpb]
@@ -68,6 +75,7 @@
 \bs Alto [<parameters>]\{<note>\} & Display a fingering diagram for note in F\\
 \bs Tenor [<parameters>]\{<note>\} & Display a fingering diagram for note in C\\
 \bs Bass [<parameters>]\{<note>\} & Display a fingering diagram for note in F\\
+\bs Whistle [<parameters>]\{<note>\} & Display a tin whistle  diagram (in D) \\
 \bottomrule
 \end{tabularx}
 \caption{Display commands}
@@ -98,7 +106,7 @@
 \caption{Display options}
 \end{table}
 
-The |width| parameter sets the width of the diagram; it defaults to |20pt| for the default thumb offset diagrams. If you set |thumboffset=false| you will probably want to choose a smaller value e.g. |10pt|.  Since the tin whistle has no thumb position, its default is set to |7pt|.
+The |width| parameter sets the width of the diagram; it defaults to |20pt| for the default thumb offset diagrams. If you set |thumboffset=false| you will probably want to choose a smaller value e.g. |10pt|.  Since the tin whistle has no thumb position, I recommend setting the |width| parameter for tin whistle diagrams to |7pt|.
 
 The |trill| parameter sets an arrow pointing to a hole (numbered 1-7 from the top hole). This parameter is only in effect when using the display commands. It will place an arrow on the side specified by |trilldir| at a single hole or comma separated list of holes. e.g. |trill=3| sets an arrow at hole 3, |trill={6,7}| sets arrows at holes 6 and 7.
 
@@ -123,7 +131,7 @@
 There are four commands to add new fingerings to the predefined list, or in fact, to change the existing defaults.
 \subsection{Note names}
 Although the basic predefined fingerings use the note naming schema outlined in section \ref{Notes}, the note names themselves are arbitrary. This allows you to add trill fingerings or alternate fingerings with meaningful names, e.g. |ftrill| or |altF| are possible names for new fingerings.
-\subsection{Fingering vectors}
+\subsection{Fingering vectors\label{fingering-vectors}}
 Fingerings are specified using an 8 (and possibly 9) element comma separated list (7 for the tin whistle\footnote{Since I don’t play the tin whistle, I don’t know if there are any esoteric fingerings similar to those in the recorder that use the knee to close the bell hole. But in case they do exist, it’s possible to specify a 7th hole for D fingerings.}). For the recorders, each position in the list denotes a hole starting from the thumb (position 0) to the bell (position 8). For the tin whistle, each position in the list denotes a hole. Each hole position is indicated by a hole state according to the following scheme:
 
 \begin{table}[htpb]
@@ -159,40 +167,108 @@
 \caption{Commands for adding new fingerings}
 \end{table}
 
-\subsection{New fingering examples}
-\NewFfingering{BbAtrill}{0,1,1,1,1,1,0,0}
-\AddFingerings{C}{
-	EFtrill = {0,1,1,1,1,1,0,0},
-	altd = {0,1,1,1,1,1,2,2}
+\section{Trill fingerings}
+Because trill fingerings are likely to be displayed with, rather than without, their trill annotations, a separate set of trill fingering macros is provided so that trill fingerings can be stored along with their trill annotations and produced without needing to add the trill annotation manually. 
+
+\begin{table}[htpb]
+\centering
+\begin{tabularx}{.8\textwidth}{X}
+\toprule
+\texttt{\bs NewFtrill\{<notename>\}\{<fingering vector>\}\{<trill vector>\}} \\\rule{3em}{0pt}Add a new trill and fingering to the F recorder set\\
+\texttt{\bs NewCtrill\{<notename>\}\{<fingering vector>\}\{<trill vector>\}} \\\rule{3em}{0pt} Add a new trill and fingering to the C recorder set\\
+\texttt{\bs NewDtrill\{<notename>\}\{<fingering vector>\}\{<trill vector>\}} \\\rule{3em}{0pt} Add a new trill and fingering to the tin whistle set\\
+\texttt{\bs AddTrills\{<key>\}\{<note = \{\{<fingering vector>\}\},\{<trill vector>\}\}>\}} \\\rule{3em}{0pt} Add a set of new trills to the F, C or D instrument set\\
+\bottomrule
+\end{tabularx}
+\caption{Commands for adding new trill fingerings}
+\end{table}
+
+The three commands |\NewFtrill|, |\NewCtrill|, and |\NewDtrill| take two arguments: a fingering vector, and a trill vector. The fingering vector is the same as described in section \ref{fingering-vectors}. The trill vector indicates which holes will be annotated with trill arrows when displayed using one of the dedicated trill display macros. 
+
+The fourth command takes two arguments: a key (F,C, or D) and a key value set of ordered pairs of vectors, a fingering vector and a trill vector.  
+
+\subsection{Displaying trill fingerings\label{trill-fingerings}}
+Fingerings that are created using the trill fingering macros can be displayed along with their associated trill annotations using the commands |\Ftrill|, |\Ctrill|, and |\Dtrill|.
+
+\begin{table}[htpb]
+\centering
+\begin{tabularx}{.8\textwidth}{t{r}X}
+\toprule
+\bs Ftrill [<parameters>]\{<note>\} & Display a trill diagram for note in F\\
+\bs Ctrill [<parameters>]\{<note>\} & Display a trill diagram for note in C\\
+\bs Dtrill [<parameters>]\{<note>\} & Display a tin whistle trill diagram (in D) \\
+\bottomrule
+\end{tabularx}
+\caption{Trill display commands}
+\end{table}
+
+Note that the package does not come with any pre-coded trill fingerings, so these commands will not work unless you have added trill fingerings yourself. 
+
+\clearpage
+\section{New fingering examples}
+Here are some examples of how to add new fingerings and trills.
+
+\AddFingerings{F}{
+altD = {1,0,1,1,1,1,0,0},
+altE = {1,0,1,1,0,0,0,0},
+altAb = {t,1,1,1,1,1,1,0}
 }
+\AddTrills{F}{
+BbA = {{0,1,1,1,1,1,0,0},{5}},
+C#D ={{1,1,1,0,1,1,1,0},{4,5}}
+}
+\NewCfingering{alte}{t,1,1,1,1,0,2,2}
+\NewCtrill{ef#}{t,1,1,1,0,1,0,0}{4}
+\NewCtrill{gab}{t,1,1,0,1,0,2,0}{6}
+	
+\begin{lstlisting}
 \AddFingerings{F}{
-	agtrill = {0,0,1,1,1,1,0,0}}
-\begin{lstlisting}
-\NewFfingering{BbAtrill}{0,1,1,1,1,1,0,0}
-\Alto[trill=5]{BbAtrill}
+altD = {1,0,1,1,1,1,0,0},
+altE = {1,0,1,1,0,0,0,0},
+altAb = {t,1,1,1,1,1,1,0}
+}
+\Alto{altD}\quad
+\Alto{altE}\quad
+\Alto{altAb}
 \end{lstlisting}
-\Alto[trill=5]{BbAtrill}
 
+\Alto{altD}\quad
+\Alto{altE}\quad
+\Alto{altAb}
+
 \begin{lstlisting}
-\AddFingerings{C}{
-	EFtrill = {0,1,1,1,1,1,0,0},
-	altd = {0,1,1,1,1,1,2,2}
-\AddFingerings{F}{
-	agtrill = {0,0,1,1,1,1,0,0}
+\AddTrills{F}{
+BbA = {{0,1,1,1,1,1,0,0},{5}},
+C#D ={{1,1,1,0,1,1,1,0},{4,5}}
 }
-\Soprano{EFtrill}
-\Soprano{altd}\hfil
-\Alto{agtrill}\hfil
+\Ftrill{BbA}\quad
+\Ftrill{C#D}\quad
 \end{lstlisting}
 
-\Soprano{EFtrill}\hfil
-\Soprano{altd}\hfil
-\Alto{agtrill}
+\Ftrill{BbA}\quad
+\Ftrill{C#D}\quad
 
+\begin{lstlisting}
+\NewCfingering{alte}{t,1,1,1,1,0,2,2}
+\NewCtrill{ef#}{t,1,1,1,0,1,0,0}{4}
+\NewCtrill{gab}{t,1,1,0,1,0,2,0}{6}
+\Soprano{alte}\quad
+\Ctrill{ef#}\quad
+\Ctrill{gab}
+\end{lstlisting}
+\Soprano{alte}\quad
+\Ctrill{ef#}\quad
+\Ctrill{gab}
+\clearpage
+
 \section{Version History}
-Version 0.5 of this package (the initial version) was in response to a \href{https://tex.stackexchange.com/q/674847/2693}{TeX.se question} and used a substantially different set of user commands. The current version (1.0) is more flexible and has a more useable user interface. Version 1.1 added support for trill annotation, and added a separation between the left and right hand holes.  Version 1.2 added support for the tin whistle. Bug reports and feature requests are welcome at the \href{https://github.com/amunn/recorder-fingering/issues}{GitHub bug tracker}. 
+Version 0.5 of this package (the initial version) was in response to a \href{https://tex.stackexchange.com/q/674847/2693}{TeX.se question} and used a substantially different set of user commands. The current version (1.x) is more flexible and has a more useable user interface. Version 1.1 added support for trill annotation, and added a separation between the left and right hand holes.  Version 1.2 added support for the tin whistle. Version 1.3 added dedicated trill fingering commands.  Bug reports and feature requests are welcome at the \href{https://github.com/amunn/recorder-fingering/issues}{GitHub bug tracker}. 
 \section{Acknowledgements}
 This is my first attempt to write a package using |expl3|. Thanks to Jonathan P. Spratte for suggesting how to split fingering vectors and the various LaTeX development team members (David Carlisle, Ulrike Fischer, Phelype Olenik and Joseph Wright) who have answered random |expl3| questions in the TeX.se chat. Thanks to Bob Tennent, whose suggestions resulted in version 1.1.  Thanks also to all the TeX.se users who have both asked and answered questions on the site. Your questions encourage new packages like this one and your answers help make the code better. Thanks to Charles-Albert Lehalle for the suggestion to add the tin whistle. 
+\section{Sources}
+The core fingerings for recorders are taken from \textcite{Wollitz1981}. The core fingerings for the tin whistle are taken from \textcite{GreyLarsenWhistleFingerings}. The sample recorder trill fingerings are from \textcite{BlockisRecorderFingerings}.
+
+\printbibliography[heading=none]
 \clearpage
 \section{Samples} The charts below shows all of the defaults fingerings for the C recorders and the tin whistle.\footnote{Since the top row of the table represents the input name, \pkg{b} and  \pkg{\#} are used instead the proper symbols \flat\ and \sharp.}
 

Modified: trunk/Master/texmf-dist/tex/latex/recorder-fingering/recorder-fingering.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/recorder-fingering/recorder-fingering.sty	2023-07-18 19:50:06 UTC (rev 67665)
+++ trunk/Master/texmf-dist/tex/latex/recorder-fingering/recorder-fingering.sty	2023-07-18 19:50:18 UTC (rev 67666)
@@ -26,9 +26,9 @@
 %
 % recorder-fingering.tex, recorder-fingering.pdf
 %
-% Version 1.2 2023/07/15
+% Version 1.3 2023/07/17
 \NeedsTeXFormat{LaTeX2e}[2022/11/01]
-\ProvidesPackage{recorder-fingering}[2023/07/15 v1.2 Recorder fingering diagrams]
+\ProvidesPackage{recorder-fingering}[2023/07/17 v1.3 Recorder fingering diagrams]
 \RequirePackage{tikz} 
 \usetikzlibrary{calc} 
 \RequirePackage{graphicx}
@@ -78,6 +78,14 @@
 \prop_new:N \l_fingering_C_prop
 \prop_new:N \l_fingering_D_prop
 
+% Set up property lists for trills
+\prop_new:N \l_fingering_trill_F_prop
+\prop_new:N \l_fingering_trill_C_prop
+\prop_new:N \l_fingering_trill_D_prop
+
+% Temporary property list for adding trills
+\prop_new:N \l_fingering_trills_prop
+
 % Set up sharp/flat conversion list
 \prop_new:N \l_fingering_F_sharp_flat_prop
 \prop_new:N \l_fingering_C_sharp_flat_prop
@@ -371,8 +379,9 @@
 \NewDocumentCommand{\Alto}{O{}m}{
 	\group_begin:
 		\keys_set:nn {fingering} {#1}
-		\prop_get:NnN \l_fingering_F_prop {#2} \l_tmpa_tl
-		\fingering_generate_recorder_fingering:V \l_tmpa_tl
+		\prop_get:NnNTF \l_fingering_F_prop {#2} \l_tmpa_tl
+		{\fingering_generate_recorder_fingering:V \l_tmpa_tl}
+		{\msg_error:nn {recorder-fingering} {key-not-found}}
 	\group_end:
 }
 \cs_set_eq:NN \Sopranino \Alto
@@ -381,8 +390,9 @@
 \NewDocumentCommand{\Soprano}{O{}m}{
 	\group_begin:
 		\keys_set:nn {fingering} {#1}
-		\prop_get:NnN \l_fingering_C_prop {#2} \l_tmpa_tl
-		\fingering_generate_recorder_fingering:V \l_tmpa_tl
+		\prop_get:NnNTF \l_fingering_C_prop {#2} \l_tmpa_tl
+		{\fingering_generate_recorder_fingering:V \l_tmpa_tl}
+		{\msg_error:nn {recorder-fingering} {key-not-found}}
 	\group_end:
 }
 \cs_set_eq:NN \Tenor \Soprano
@@ -390,11 +400,41 @@
 \NewDocumentCommand{\Whistle}{O{}m}{
 	\group_begin:
 		\keys_set:nn {fingering} {#1}
-		\prop_get:NnN \l_fingering_D_prop {#2} \l_tmpa_tl
-		\fingering_generate_whistle_fingering:V \l_tmpa_tl
+		\prop_get:NnNTF \l_fingering_D_prop {#2} \l_tmpa_tl
+		{\fingering_generate_whistle_fingering:V \l_tmpa_tl}
+		{\msg_error:nn {recorder-fingering} {key-not-found}}
 	\group_end:
 }
 
+% Trill version of the commands; this allows you to store trill holes 
+% with a key name, so that the trill doesn’t have to be specified manually
+\NewDocumentCommand{\Ftrill}{m}{
+	\prop_get:NnNTF \l_fingering_trill_F_prop {#1} \l_tmpa_tl
+	{\group_begin:
+		\keys_set:nx {fingering} {trill={\l_tmpa_tl}}
+		\prop_get:NnN \l_fingering_F_prop {#1} \l_tmpb_tl
+		\fingering_generate_recorder_fingering:V \l_tmpb_tl
+	 \group_end:}
+	{\msg_error:nn {recorder-fingering} {key-not-found}}
+}
+\NewDocumentCommand{\Ctrill}{m}{
+	\prop_get:NnNTF \l_fingering_trill_C_prop {#1} \l_tmpa_tl
+	{\group_begin:
+		\keys_set:nx {fingering} {trill={\l_tmpa_tl}}
+		\prop_get:NnN \l_fingering_C_prop {#1} \l_tmpb_tl
+		\fingering_generate_recorder_fingering:V \l_tmpb_tl
+	 \group_end:}
+	{\msg_error:nn {recorder-fingering} {key-not-found}}
+}
+\NewDocumentCommand{\Dtrill}{m}{
+	\prop_get:NnNTF \l_fingering_trill_D_prop {#1} \l_tmpa_tl
+	{\group_begin:
+		\keys_set:nx {fingering} {trill={\l_tmpa_tl}}
+		\prop_get:NnN \l_fingering_D_prop {#1} \l_tmpb_tl
+		\fingering_generate_recorder_fingering:V \l_tmpb_tl
+	 \group_end:}
+	{\msg_error:nn {recorder-fingering} {key-not-found}}
+}
 
 % Now commands to add new fingerings: 
 % First, a note = { } version for multiple fingerings
@@ -401,7 +441,7 @@
 % This command will override existing fingerings
 \NewDocumentCommand{\AddFingerings}{mm}{
 	\str_case:nnTF {#1}{
-	{F} {\prop_put_from_keyval:Nn \l_fingering_F_prop {#2}}
+	{F}{\prop_put_from_keyval:Nn \l_fingering_F_prop {#2}}
 	{C}{\prop_put_from_keyval:Nn \l_fingering_C_prop {#2}}
 	{D}{\prop_put_from_keyval:Nn \l_fingering_D_prop {#2}}
 	}
@@ -409,6 +449,52 @@
 	{\msg_error:nn { recorder-fingering }{ wrong-instrument}}
 }
 
+% Add trills version of the above command
+% Syntax is key = {{hole-list},{trill-list}}
+% 
+% \AddTrills{C}{C#D={{1,1,1,0,1,1,1,0},{4,5}}}
+
+\NewDocumentCommand{\AddTrills}{mm}{
+	\prop_set_from_keyval:Nn \l_fingering_trills_prop {#2}
+	\str_case:nnTF {#1}{
+	{F}{\prop_map_function:NN \l_fingering_trills_prop \fingering_F_trill_copy:nn}
+	{C}{\prop_map_function:NN \l_fingering_trills_prop \fingering_C_trill_copy:nn}
+	{D}{\prop_map_function:NN \l_fingering_trills_prop \fingering_D_trill_copy:nn}
+	}
+	{}
+	{\msg_error:nn { recorder-fingering }{ wrong-instrument}}
+}
+
+% Trill copy functions
+\cs_new_protected:Nn \fingering_F_trill_copy:nn {
+	\clist_set:Nn \l_tmpa_clist {#2}
+	\clist_pop:NNTF \l_tmpa_clist \l_tmpa_tl
+		{\prop_put:Nnx \l_fingering_F_prop {#1}{\l_tmpa_tl}}
+		{\show\notfound}
+	\clist_pop:NNTF \l_tmpa_clist \l_tmpa_tl
+		{\prop_put:Nnx \l_fingering_trill_F_prop {#1}{\l_tmpa_tl}}
+		{\show\notfound}
+}	
+
+\cs_new_protected:Nn \fingering_C_trill_copy:nn {
+	\clist_set:Nn \l_tmpa_clist {#2}
+	\clist_pop:NNTF \l_tmpa_clist \l_tmpa_tl
+		{\prop_put:Nnx \l_fingering_C_prop {#1}{\l_tmpa_tl}}
+		{\show\notfound}
+	\clist_pop:NNTF \l_tmpa_clist \l_tmpa_tl
+		{\prop_put:Nnx \l_fingering_trill_C_prop {#1}{\l_tmpa_tl}}
+		{\show\notfound}}	
+
+\cs_new_protected:Nn \fingering_D_trill_copy:nn {
+	\clist_set:Nn \l_tmpa_clist {#2}
+	\clist_pop:NNTF \l_tmpa_clist \l_tmpa_tl
+		{\prop_put:Nnx \l_fingering_D_prop {#1}{\l_tmpa_tl}}
+		{\show\notfound}
+	\clist_pop:NNTF \l_tmpa_clist \l_tmpa_tl
+		{\prop_put:Nnx \l_fingering_trill_D_prop {#1}{\l_tmpa_tl}}
+		{\show\notfound}
+}	
+
 % Second individual fingerings for alto and soprano
 % These commands will throw an error if the note is already defined
 \NewDocumentCommand{\NewFfingering}{smm}{
@@ -434,7 +520,39 @@
 	{\msg_error:nn { recorder-fingering } { key-exists }}
 	{\prop_put:Nnn \l_fingering_D_prop {#2} {#3}}
 	}}
+	
+% Macros to add trill fingerings. This stores the trill keys as well so that they
+% can be automatically displayed
 
+\NewDocumentCommand{\NewFtrill}{smmm}{
+	\IfBooleanTF{#1}
+	{\prop_put:Nnn \l_fingering_F_prop {#2} {#3}
+	 \prop_put:Nnn \l_fingering_trill_F_prop {#2} {#4}}
+	{\prop_get:NnNTF \l_fingering_F_prop {#2} \l_tmpa_tl
+	{\msg_error:nn { recorder-fingering } { key-exists }}
+	{\prop_put:Nnn \l_fingering_F_prop {#2} {#3}
+	 \prop_put:Nnn \l_fingering_trill_F_prop {#2} {#4}}}
+}
+\NewDocumentCommand{\NewCtrill}{smmm}{
+	\IfBooleanTF{#1}
+	{\prop_put:Nnn \l_fingering_C_prop {#2} {#3}
+	 \prop_put:Nnn \l_fingering_trill_C_prop {#2} {#4}}
+	{\prop_get:NnNTF \l_fingering_C_prop {#2} \l_tmpa_tl
+	{\msg_error:nn { recorder-fingering } { key-exists }}
+	{\prop_put:Nnn \l_fingering_C_prop {#2} {#3}
+	 \prop_put:Nnn \l_fingering_trill_C_prop {#2} {#4}}}
+}
+\NewDocumentCommand{\NewDtrill}{smmm}{
+	\IfBooleanTF{#1}
+	{\prop_put:Nnn \l_fingering_D_prop {#2} {#3}
+	 \prop_put:Nnn \l_fingering_trill_D_prop {#2} {#4}}
+	{\prop_get:NnNTF \l_fingering_D_prop {#2} \l_tmpa_tl
+	{\msg_error:nn { recorder-fingering } { key-exists }}
+	{\prop_put:Nnn \l_fingering_D_prop {#2} {#3}
+	 \prop_put:Nnn \l_fingering_trill_D_prop {#2} {#4}}}
+}
+
+
 % macros to copy fingerings (for now internal only)
 \cs_new_protected:Nn \fingering_add_F_fingering:nn {\prop_put:Nnn \l_fingering_F_prop {#1} {#2}}
 \cs_new_protected:Nn \fingering_add_C_fingering:nn {\prop_put:Nnn \l_fingering_C_prop {#1} {#2}}



More information about the tex-live-commits mailing list.