]> git.donarmstrong.com Git - lilypond.git/commitdiff
2002-12-30 Juergen Reuter <reuter@ipd.uka.de>
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 30 Dec 2002 10:34:52 +0000 (10:34 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 30 Dec 2002 10:34:52 +0000 (10:34 +0000)
        * Documentation/user/refman.itely: added docu for ambitus and
        clusters

        * lily/lookup.cc, scm/tex.scm: cleanup: avoid nasty double
        ly_quote_scm() in lookup.cc

        * mf/parmesan-clefs.mf: set_char_box fix

        * lily/cluster-engraver.cc: junk implicit protection; use
        Protected_scm instead

ChangeLog
Documentation/user/refman.itely
aclocal.m4
lily/cluster-engraver.cc
lily/lookup.cc
mf/parmesan-clefs.mf
scm/chord-name.scm
scm/tex.scm

index af59738dff43510d19f38dc4aa3f0fedab376951..fbc86ef3240c18a348b4766c8ef2b0672abe859e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2002-12-30  Juergen Reuter  <reuter@ipd.uka.de>
+
+        * Documentation/user/refman.itely: added docu for ambitus and
+        clusters
+
+        * lily/lookup.cc, scm/tex.scm: cleanup: avoid nasty double
+        ly_quote_scm() in lookup.cc
+
+        * mf/parmesan-clefs.mf: set_char_box fix
+
+        * lily/cluster-engraver.cc: junk implicit protection; use
+        Protected_scm instead
+
 2002-12-29  Jan Nieuwenhuizen  <janneke@gnu.org>
 
        * scm/chord-name.scm: Junk "`(," constructs, use make-FOO-markup
index ac17efe3bc70e0de066b38735b12386ef8c2ec75..4448f20fc8e3aae3a08c0fc5d873218c7e654356 100644 (file)
@@ -9,7 +9,7 @@
 
 @macro refbugs
 @strong{BUGS}
-@end macro
+g@end macro
 
 
 @c .{Reference Manual}
@@ -41,10 +41,12 @@ this manual.
 * Repeats::                     
 * Rhythmic music::              
 * Piano music::                 
+* Vocal music::                 
 * Tablatures::                  
 * Chords::                      
 * Writing parts::               
-* Ancient notation ::           
+* Ancient notation::           
+* Contemporary notation::      
 * Tuning output::               
 * Global layout::               
 * Sound::                       
@@ -3038,6 +3040,116 @@ can be printed automatically. This is enabled if the property
 The associated object is @internalsref{VoiceFollower}.
 
 
+@node Vocal music
+@section Vocal music
+
+For a discussion of how to put lyrics into a score, see section
+@code{Printing lyrics} in the tutorial.
+
+[TODO: Move lyrics section from tutorial to here?]
+
+See also the sections on @ref{Slurs} and @ref{Breath marks}.
+
+[TODO: Move slurs / breath marks section to here?]
+
+[TODO: Write subsection upon usage of ChoirStaff.]
+
+@menu
+* Ambitus::
+@end menu
+
+@node Ambitus
+@subsection Ambitus
+@cindex ambitus
+
+The term @emph{ambitus} denotes a range of pitches for a given voice a
+part of music.  It also may denote the pitch range that a musical
+instrument is capable of playing.  Most musical instruments have their
+ambitus standardized (or at least there is agreement upon the minimal
+ambitus of a particular type of instrument), such that a composer or
+arranger of a piece of music can easily meet the ambitus constraints of
+the targeted instrument.  However, the ambitus of the human voice
+depends on individual physiological state, including education and
+training of the voice.  Therefore, a singer potentially has to check for
+each piece of music if the ambitus of that piece meets his individual
+capabilities.  This is why the ambitus of a piece may be of particular
+value to vocal performers.
+
+The ambitus is typically notated on a per-voice basis at the very
+beginning of a piece, e.g. nearby the initial clef or time signature of
+each staff.  The range is graphically specified by two noteheads, that
+represent the minimum and maximum pitch.  Some publishers use a textual
+notation: they put the range in words in front of the corresponding
+staff.  Lilypond currently only supports the graphical ambitus notation.
+
+To apply, simply add the @internalsref{Ambitus_engraver} to the
+@internalsref{Voice} context, as shown in the below example:
+
+@lilypond[singleline,verbatim]
+upper = \notes \relative c {
+  \clef "treble"
+  \key c \minor
+  as'' c e2 bes f cis d4 e f2 g
+}
+lower = \notes \relative c {
+  \clef "treble"
+  \key e \major
+  e'4 b g a c es fis a cis b a g f e d2
+}
+\score {
+  \context ChoirStaff {
+    <
+      \context Staff = one { \upper }
+      \context Staff = three { \lower }
+    >
+  }
+  \paper {
+    \translator {
+      \VoiceContext
+      \consists Ambitus_engraver
+    }
+  }
+}
+@end lilypond
+
+The shape of the note heads to use can be changed via the
+@code{note-head-style} property, which holds the glyph name of the note
+head (see also @ref{Ancient note heads}).  The vertical line between the
+upper and lower head can be switched on or off via the @code{join-heads}
+property.  Example:
+
+@example
+\translator @{
+  \VoiceContext
+  \consists Ambitus_engraver
+  Ambitus \set #'note-head-style = #'noteheads-2mensural
+  Ambitus \set #'join-heads = ##f
+@}
+@end example
+
+By default, the ambitus grob is put before the clef.  You can control
+this behaviour through the @code{breakAlignOrder} property of the score
+context by redefining the order, e.g. with the following addition to the
+paper block:
+
+@example
+\translator @{
+  \ScoreContext
+  breakAlignOrder = #'(
+    instrument-name
+    left-edge
+    span-bar
+    breathing-sign
+    clef
+    ambitus
+    key-signature
+    staff-bar
+    time-signature
+    custos
+  )
+@}
+@end example
+
 @node Tablatures
 @section Tablatures
 
@@ -4328,6 +4440,105 @@ conversion to pitches, and no realizations of the bass are played in
 the MIDI file.
 
 
+@c . {Contemporary notation}
+@node Contemporary notation
+@section Contemporary notation
+
+@menu
+* Clusters::
+@end menu
+
+@node Clusters
+@subsection Clusters
+
+@cindex cluster
+
+In musical terminology, a @emph{cluster} denotes a range of
+simultaneously sounding pitches that may change over time.  The set of
+available pitches to apply usually depends on the accoustic source.
+Thus, in piano music, a cluster typically consists of a continous range
+of the semitones as provided by the piano's fixed set of a chromatic
+scale.  In choral music, each singer of the choir typically may sing an
+arbitrary pitch within the cluster's range that is not bound to any
+diatonic, chromatic or other scale.  In electronic music, a cluster
+(theoretically) may even cover a continuous range of pitches, thus
+resulting in coloured noise, such as pink noise.
+
+Clusters can be notated in the context of ordinary staff notation by
+engraving simple geometrical shapes that replace ordinary notation of
+notes.  Ordinary notes as musical events specify starting time and
+duration of pitches; however, the duration of a note is expressed by the
+shape of the note head rather than by the horizontal graphical extent of
+the note symbol.  In contrast, the shape of a cluster geometrically
+describes the development of a range of pitches (vertical extent) over
+time (horizontal extent).  Still, the geometrical shape of a cluster
+covers the area in wich any single pitch contained in the cluster would
+be notated as an ordinary note.  From this point of view, it is
+reasonable to specify a cluster as the envelope of a set of notes.  This
+is exactly how to construct a cluster with lilypond.
+
+@lilypond[singleline,verbatim]
+\score {
+    \context PianoStaff <
+        \context Voice = voiceI { % same as voiceII, but with ordinary notes
+            \notes \relative c' {
+                c4 f4
+                a4 <e4 d'4> | \break
+                < g8 a8 > < e8 a8 > a4 c1 < d4 b4 > e4 |
+                c4 a4 f4 g4 a4
+            }
+        }
+        \context Voice = voiceII { % same as voiceI, but with cluster notation
+            \notes \relative c' {
+
+                % hide notes, accidentals, etc.
+                \property Thread.NoteHead \set #'transparent = ##t
+                \property Voice.Stem \set #'transparent = ##t
+                \property Voice.Beam \set #'transparent = ##t
+                \property Staff.Accidental \set #'transparent = ##t
+
+                \property Voice.Cluster \set #'padding = #0.01
+                \property Voice.Cluster \set #'shape = #'ramp
+
+                c4 f4
+                \startCluster
+                a4 <e4 d'4> | \break
+                < g8 a8 > < e8 a8 > a4 c1 < d4 b4 > e4 |
+                c4 \stopCluster a4 f4 g4 a4
+            }
+        }
+    >
+}
+@end lilypond
+
+Note that the second voice differs from the first one only by the
+additional keywords @code{\startCluster} and @code{\stopCluster} and the
+fact that notes, accidentals, etc. are hidden.  A future version of
+lilypond may automatically hide notes, accidentals, etc. within the
+scope of clusters.
+
+Also note that a music expression like @code{< @{ g8 e8 @} a4 >} is
+illegal; in such a case, you can instead use the expression @code{< g8
+a8 > < e8 a8 >}.
+
+By default, cluster engraver is in the voice context.  This allows
+putting ordinary notes and clusters together in the same staff, even
+simultaneously.  However, in such a case no attempt is made to
+automatically avoid collisions between ordinary notes and clusters.
+
+The geometrical shape can be further controlled with grob properties
+@code{padding} and @code{shape}.  @code{padding} adds to the vertical
+extent of the shape (top and bottom) and is expressed in units of
+staffspace.  Since the pitch range of a single pitch is infinitely
+small, if padding is set to @code{0.0}, this possibly results in an
+invisible shape, if you,for example, say @code{ \startCluster c d e
+\endCluster}.  The default value for @code{padding} therefore is
+@code{0.25}, such that a single pitch roughly shows the same height as a
+note head.  Property @code{shape} controls how the overall shape of the
+cluster is constructed from the set of notes.  Currently supported
+values are @code{leftsided-stairs}, @code{rightsided-stairs},
+@code{centered-stairs}, and @code{ramp}.
+
 @c . {Tuning output}
 @node Tuning output
 @section Tuning output
index eb03abd45bf27d97659ed9209d08cda7263e07c3..bb3c44d689ac92682195d991828eb9d63addfadb 100644 (file)
@@ -1,6 +1,6 @@
 dnl aclocal.m4   -*-shell-script-*-
 dnl WARNING WARNING WARNING
-dnl do not edit! this is aclocal.m4, generated from /home/fred/lily/stepmake/aclocal.m4
+dnl do not edit! this is aclocal.m4, generated from /home/hanwen/usr/src/lilypond/stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
index 4308326c535f1d8f1e3130ee6796b31d80120e8d..f9a659e0fbccf5f41015787ed9d8649e7bfc480b 100644 (file)
@@ -26,7 +26,7 @@ private:
   Drul_array<Music*> reqs_drul_;
   Pitch pitch_min_, pitch_max_;
   Spanner *cluster_;
-  SCM columns_scm_;
+  Protected_scm columns_scm_;
 };
 
 void reset_min_max (Pitch *pitch_min, Pitch *pitch_max)
@@ -139,7 +139,6 @@ Cluster_engraver::stop_translation_timestep ()
              segment = scm_list_n (segment, SCM_UNDEFINED);
              columns_scm_ = (columns_scm_ != SCM_EOL) ?
                gh_append2 (columns_scm_, segment) : segment;
-             cluster_->set_grob_property ("segments", columns_scm_); // Urrgh!
            }
          else
            {
index db0b03365890c9275a3ed7a7cfa7893551f699e1..5695c4921ef731c610b5566fe01e8e58416876f9 100644 (file)
@@ -297,7 +297,7 @@ Lookup::round_filled_polygon (Array<Offset> points, Real blotdiameter)
       box.add_point (points[i]);
     }
   SCM polygon_scm = scm_list_n (ly_symbol2scm ("polygon"),
-                               ly_quote_scm (ly_quote_scm (shrinked_points_scm)),
+                               ly_quote_scm (shrinked_points_scm),
                                gh_double2scm (blotdiameter),
                                SCM_UNDEFINED);
 
index de7bb2af77b4f09b338f8c23b33c39852ee9031c..d7ba3f5797fa13e00e05dc3565ebf4f9847a6415 100644 (file)
@@ -695,7 +695,7 @@ def draw_petrucci_g_clef(expr exact_center, reduction) =
        % inspired by Josquin Desprez, "Stabat Mater", Libro tertio,
        % 1519, printed by Petrucci, in: MGG, volume 7, Table 11.
 
-       set_char_box(0.6 staff_space#, 0.8 staff_space#, 0.6 staff_space#, 
+       set_char_box(1.0 staff_space#, 0.5 staff_space#, 0.6 staff_space#, 
          4.0 staff_space#);
 
        save reduced_il, reduced_slt;
index f91d3d5c832e449648b2046dbb2e0c18e7330ed7..803b693f5a59cb1eb25f1fcb9b6e51fd13b95c44 100644 (file)
@@ -767,6 +767,7 @@ dump reinterpret the markup as a molecule. " ; "
                    (make-simple-markup "7")))))
       (step->markup-alternate-jazz pitch)))
 
+;; removeme ?
 (define (xchord::additions->markup-jazz additions subtractions)
   (if (pair? additions)
       (make-line-markup
index cdb5cec39ea0fa00e60c22ed98f2381c53698720..ef95de07ef797f4e2c5d9fed6c4acd051fd1176b 100644 (file)
   (embedded-ps (list 'tuplet  ht gapx dx dy thick dir)))
 
 (define (polygon points blotdiameter)
-  (embedded-ps (list 'polygon points blotdiameter)))
+  (embedded-ps (list 'polygon `(quote ,points) blotdiameter)))
 
 (define (draw-line thick fx fy tx ty)
   (embedded-ps (list 'draw-line thick fx fy tx ty)))