Update of /project/climacs/cvsroot/papers/ilc2005/syntax In directory common-lisp.net:/tmp/cvs-serv17345
Modified Files: climacssyntax.tex Log Message: A bit more explanation of tablature, following feedback from members of the group here.
Date: Mon May 23 16:26:15 2005 Author: crhodes
Index: papers/ilc2005/syntax/climacssyntax.tex diff -u papers/ilc2005/syntax/climacssyntax.tex:1.23 papers/ilc2005/syntax/climacssyntax.tex:1.24 --- papers/ilc2005/syntax/climacssyntax.tex:1.23 Mon May 23 15:57:22 2005 +++ papers/ilc2005/syntax/climacssyntax.tex Mon May 23 16:26:15 2005 @@ -202,8 +202,8 @@ in a specialized array, this will net a worst case space efficiency of four bytes of every byte in the file. However, the time advantages of this representation outweigh the space inefficiency. Searching for an -individual character in a sequence of characters encoded in UTF-8 (or -other variable-length encoding) is $O(n)$, because each individual +individual character in a sequence of $n$ characters encoded in UTF-8 +(or other variable-length encoding) is $O(n)$, because each individual character must be examined to determine the number of octets which are stored to represent that character.
@@ -315,7 +315,7 @@ framework. Firstly, and most importantly, ISO Prolog \cite{ISOProlog} is not a context-free grammar: \textit{terms} have an implicit priority affecting their parse.\footnote{Formally, the grammar could - be made context-free by introducing 1200 new production rules.} The + be made context-free by introducing 2400 new production rules.} The implementation of Earley's algorithm, however, was able to address this additional complexity with no difficulty.
@@ -402,25 +402,29 @@ |}} \caption{An extract from `Lachrime by I. D.' from \textit{A New Booke of Tabliture}, published by William Barley (London, - 1596), E1r, and its \TabCode\ encoding.} + 1596), E1r, and its \TabCode\ encoding. The parenthesized + characters encode the lines joining and spanning the example, + while the individual punctuation characters refer to the + fingering marks.} \label{fig:barley} \end{center} \end{figure*}
\TabCode\ \cite{tabcode} is a textual format for description of lute -tablature. In its simplest form, it is a sequence of -whitespace-delimited independent words, where each word represents -either a set of frets to depress and strings to be sounded, or -alternatively some element of musical notation (such as a barline); -figure \ref{fig:besfantlach} shows a fragment of manuscript, and -demonstrates its \TabCode\ encoding. It is also possible to encode -more complex elements of lute tablature notation in \TabCode: -ornaments, fingering marks, beaming, connecting lines and other -complex elements can all be accommodated (see figure \ref{fig:barley} -for examples of some of these more complex elements). \TabCode\ has -been used to produce scholarly editions of lute works \cite{Weiss} and -to assist in computer-based musicological studies (as in -\cite{ecolm-graz} for example). +tablature, a form of musical notation. In its simplest form, it is a +sequence of whitespace-delimited independent words, where each word +represents either a set of string--fret coordinates for the player's +left hand specifying the note or chord to be played or alternatively +some other element of musical notation (such as a barline); figure +\ref{fig:besfantlach} shows a fragment of tablature, and demonstrates +its \TabCode\ encoding. It is also possible to encode more complex +elements of lute tablature notation in \TabCode: ornaments, fingering +marks, beaming, connecting lines and other complex elements can all be +accommodated (see figure \ref{fig:barley} for examples of some of +these more complex elements). \TabCode\ has been used to produce +scholarly editions of lute works \cite{Weiss} and to assist in +computer-based musicological studies (as in \cite{ecolm-graz} for +example).
The \TabCode\ language itself has developed to provide a terse and intuitive encoding of tablature, rather than a well-formed grammar for @@ -442,15 +446,17 @@ \end{center} \end{figure}
-More complex to model are beams and connecting lines, which have their -own semi-independent identity, despite being encoded in \TabCode\ as +More complex to model are beams\footnote{the term `beam' is used for + the grid-like representation of repeated rhythm signs, adapted from + standard music notation.} and connecting lines, which have their own +semi-independent identity, despite being encoded in \TabCode\ as modifiers to individual tokens. In particular, the existence of beams and connecting lines means that we cannot parse a buffer into a sequence of tabwords and thence into hypothetical higher-level structures such as \texttt{beamed-group} and \texttt{connected-pair}, because these higher-level structures can overlap in non-trivial ways, -as in figure \ref{fig:board}. Instead, we deal with these modifiers by -invoking a parser on the sequence of parsed buffer elements to +as in figure \ref{fig:board}. Instead, we deal with these modifiers +by invoking a parser on the sequence of parsed buffer elements to generate parallel sequences of beams, connecting lines and other such tablature elements.
@@ -490,13 +496,13 @@ unchanged for most editing operations.
To assist the editorial process, we have also implemented MIDI audio -feedback: in addition to a command to render the entire tablature, we -provide several gestures to play individual chords: one intended for -use during the initial entry of the encoding, to act as a rapid -error-detection aid, and a motion command and mouse gesture to assist -revision and navigation. At present, this MIDI support is based on -Apple's CoreMIDI framework on Mac OS X; a port to alsa-lib on Linux is -in progress. +feedback: in addition to a command to render the entire tablature in +sound, we provide several gestures to play individual chords: one +intended for use during the initial entry of the encoding, to act as a +rapid error-detection aid, and a motion command and mouse gesture to +assist revision and navigation. At present, this MIDI support is +based on Apple's CoreMIDI framework on Mac OS X; a port to alsa-lib on +Linux is in progress.
\section{Future Work and Conclusions} \label{sec:conclusions}