[gsharp-cvs] CVS update: gsharp/Doc/buffer.tex

Robert Strandh rstrandh at common-lisp.net
Wed Nov 2 05:01:21 UTC 2005


Update of /project/gsharp/cvsroot/gsharp/Doc
In directory common-lisp.net:/tmp/cvs-serv22023/Doc

Modified Files:
	buffer.tex 
Log Message:
Put back some of the constructor functions.

Added more documentation about buffer protocols.

Date: Wed Nov  2 06:01:18 2005
Author: rstrandh

Index: gsharp/Doc/buffer.tex
diff -u gsharp/Doc/buffer.tex:1.5 gsharp/Doc/buffer.tex:1.6
--- gsharp/Doc/buffer.tex:1.5	Mon Oct 31 19:23:47 2005
+++ gsharp/Doc/buffer.tex	Wed Nov  2 06:01:18 2005
@@ -39,10 +39,6 @@
 
 \Defclass {clef}
 
-\Definitarg {:name}
-
-\Definitarg {:lineno}
-
 \Defun {make-clef} {name \optional (lineno \cl{nil})}
 
 Create a clef with the name and line numbers given.  Line numbers
@@ -80,41 +76,24 @@
 
 The protocol class for all staves. 
 
-\Definitarg {:name}
+\Defclass {fiveline-staff}
 
-This initarg indicates the name of the staff to be used.  The name of
-a staff must be unique and usually has some relationship to the
-instruments(s) displayed on it.  Examples of staff names would be
-``1st violin'', ``soprano \& alto'', etc.  The default value for this
-initarg is \lispobj{"default staff"}.
+This class is a subclass of \lispobj{staff}, and is used to represent an
+ordinary five-line staff for displaying notes. 
 
 \Defgeneric {name} {staff}
 
 Return the name of the staff.  With \lispobj{setf}, change the name of
 the staff.
 
-\Defclass {fiveline-staff}
-
-This class is a subclass of \lispobj{staff}, and is used to represent an
-ordinary five-line staff for displaying notes. 
-
-\Definitarg {:clef}
-
-This value must always be supplied, and must be an instance of the
-class \lispobj{clef}.  The clef of a five-line staff indicates where
-on the staff notes are to be displayed.  
-
-\Definitarg {:keysig}
-
-This initarg is used to represent the key signature of the staff.  The
-value is a vector with seven elements, where each element corresponds
-to a note of the scale (C, D, E, F, G, A, B), and is a keyword
-(\lispobj{:natural}, \lispobj{:sharp}, or \lispobj{:flat}) indicating
-whether staff positions corresponding to that note of the scale should
-be altered.  The default value for this initarg is a vector with seven
-elements, each begin the object \lispobj{:natural}.
+\Defun {make-fiveline-staff} {\key name clef keysig}
 
-\Defun {make-fiveline-staff} {name \optional (clef \lispobj(make-clef :treble))}
+Make a five-line staff with the name, the clef, and the key signature
+indicated.  The default value of the \lispobj{name} argument is the
+string \lispobj{"default staff"}.  The default value for the
+\lispobj{clef} argument is a newly created treble clef.  The default
+argument for the key signature is a key signature with no
+alterations. 
 
 \Defgeneric {clef} {fiveline-staff}
 
@@ -131,6 +110,11 @@
 This class is a subclass of \lispobj{staff}, and is used to represent a
 staff for displaying lyrics. 
 
+\Defun {make-lyrics-staff} (\key name)
+
+Make a lyrics staff with the name indicated.  The default value of the
+\lispobj{name} argument is the string \lispobj{"default staff"}.
+
 %-------------------------------------------------------------------
 \subsection{External representation}
 
@@ -171,22 +155,101 @@
 
 The protocol class for notes. 
 
+\Defun {make-note} (pitch staff \rest args \key head accidentals dots)
+
+Create a note as indicated.  The pitch represents the pitch of the
+note without any accidentals, and is an integer between 0 and 127,
+where 0 indicates a C in the lowest octave.  The staff is an instance
+of the class \lispobj{staff} and indicates what staff the note is to
+be displayed on.  
+
+The \lispobj{head} argument indicates what kind of note-head is wanted
+in the form of one of the keywords \lispobj{:whole}, \lispobj{:half},
+and \lispobj{:filled}, or nil, where nil means that the note-head is
+taken from the cluster to which the note belongs.
+
+The \lispobj{accidentals} argument indicates which, if any,
+accidentals the note should have, and is one of the keywords 
+\lispobj{:natural}, \lispobj{:flat}, \lispobj{:double-flat},
+\lispobj{:sharp}, or \lispobj{:double-sharp}.  The default value is
+\lispobj{:natural} meaning that this note does not have any
+accidentals. 
+
+The \lispobj{dots} argument indicates how many dots follow this note.
+It is an integer between 0 and 3 or nil, where nil means that the
+number of dots is taken  from the cluster to which the note belongs.
 
 %-------------------------------------------------------------------
 \subsection{External representation}
 
 A note is printed (by \lispobj{print-object}
 
-\Definitarg{:cluster}
+%===================================================================
+\section{The cluster protocol}
+
+%-------------------------------------------------------------------
+\subsection{Description}
 
-This initarg determines the cluster to which the note belongs.  The
-default value for this initarg is \lispobj{nil} indicating that the
-note currently does not belong to any cluster.
+A cluster is a roughly the same as a chord, in that it is a collection
+of notes that share a stem  (unless the note heads are whole note
+heads, in which case there is no stem at all).  
+
+%-------------------------------------------------------------------
+\subsection{Protocol classes and functions}
 
-\Definitarg{:pitch}
+\Defclass{cluster}
+
+\Defun {make-cluster} {&key (notehead :filled) (lbeams 0) (rbeams 0)
+		       (dots 0) (xoffset 0) notes (stem-direction :auto))}
+
+Create a cluster.
+
+The \lispobj{notehead} argument indicates the basic timing unit to be
+used for this cluster and is one of the keywords \lispobj{:whole},
+\lispobj{:half}, and \lispobj{:filled}.  A value of \lispobj{:whole}
+gives a \emph{basic duration} of $1$, a value of \lispobj{:half} gives $1
+\over 2$ and \lispobj{:filled} gives $1 \over 4$. 
+
+The \lispobj{lbeams} argument indicates by how many beams this cluster
+ties to the cluster immediately to its left.  It must be an integer
+between $0$ and $5$ inclusive. 
+
+The \lispobj{rbeams} argument indicates by how many beams this cluster
+ties to the cluster immediately to its right.  It must be an integer
+between $0$ and $5$ inclusive. 
+
+When the \lispobj{notehead} argument is \lispobj{:filled}, the
+\emph{basic duration} ($1 \over 4$) is divided by $2^n$ where $n$ is the max
+of the values of \lispobj{lbeams} and \lispobj{rbeams}, giving the
+\emph{beamed duration} of the cluster. 
+
+The \lispobj{dots} arguments indicates how many dots should follow
+notes of this cluster by default.  It must be an integer between $0$
+and $3$ inclusive.  The number of dots determines how the \emph{final
+duration} for the cluster is obtained from its \emph{beamed duration}.
+When the value is $0$, the final duration is the same as the beamed
+duration.  When the value is $1$, the final duration is the beamed
+duration multiplied by $3 \over 2$.  When the value is $2$, the final
+duration is the beamed duration multiplied by $7 \over 4$.  When the
+value is $3$, the final duration is the beamed duration multiplied by
+$15 \over 8$.
+
+The \lispobj{xoffset} arguments indicates by how much to the right of
+its nominal position this cluster should be displayed.  The unit is in
+\emph{staff-steps}. 
+
+The \lispobj{notes} argument is a list of initial notes for this
+cluster.
+
+The \lispobj{stem-direction} argument indicates the direction to be
+used for the stem of this cluster.  The value is one of the keywords
+\lispobj{:up}, \lispobj{:down} and \lispobj{:auto}, where
+\lispobj{:auto} means that the direction is determined by the layout
+algorithm.  The values \lispobj{:up} and \lispobj{:down} are typically
+used when two voices share a staff, and one voice has all the stems up
+and the other has all the stems down. 
+
+%-------------------------------------------------------------------
+\subsection{External representation}
 
-This initarg is mandatory, and determines the pitch of the note.
-A pitch is indicated as an integer between 0 and 127, where 0 means a
-C in the lowest octave possible. 
 
-\Definitarg{:staff}
\ No newline at end of file




More information about the Gsharp-cvs mailing list