+1.3.121.jcn2
+============
+
+* Renamed last instances of musical_*pitch to pitch.
+
+* Bugfix: actually read pitch value in \pitch #(make-pitch ...)
+
+* Bugfix(?): always allow explicit duration entry.
+
+* Fixed .po charsets for upcoming msgfmt release (Bruno Haible).
+
+* Some doco updates and fixes.
+
1.3.121.jcn1
============
-@node Reporting Bugs, , , Top
-@section Bug reports
+@node Reporting Bugs
+@chapter Bug reports
LilyPond development moves quickly, so if you have a problem, it is
wise to check if it has been fixed in a newer release. If you think
-@node convert-ly, , ,Top
+@node convert-ly
@chapter convert-ly
@code{convert-ly} sequentially applies different
lilypond-conversions to upgrade a Lilypond input file. It uses
-@node Internals, , , top
+@node Internals
+@chapter Internals
@menu
* Conversion stages:: Lilypond is a multi-pass program.
* Molecules:: Molecules are stand-alone descriptions of output
@end menu
-
-@node Conversion stages, , , Internals
+@node Conversion stages
+@section Conversion stages
When translating the input to notation, there are number of distinct
phases. We list them here:
@end table
-@node Grobs, , , Internals
+@node Grobs
@section Grobs
This section is about Grobs (short for Graphical Objects), which are
* Pointer substitution::
@end menu
-@node What is a grob?, , , Grobs
+@node What is a grob?
+@subsection What is a grob?
In music notation, lots of symbols are related in some way. You can
think of music notation as a graph where nodes are formed by the
description in the form of Molecules (@ref{Molecules}) is extracted from
the network. These are then dumped into the output file
-@node Callbacks, , , Grobs
+@node Callbacks
+@subsection Callbacks
Offsets of grobs are relative to a parent reference point. Most
positions are not known when an object is created, so these are
hard-codes the extent in that coordinate.
-@node Setting grob properties, , , Grobs
+@node Setting grob properties
+@subsection Setting grob properties
Grob properties are stored as GUILE association lists, with symbols as
keys. From C++, element properties can be accessed using the functions
space to the left. This mechanism is rather clumsy to use, but it allows
you tweak any setting of any grob.
-@node Items and Spanners, , , Grobs
+@node Items and Spanners
@unnumberedsubsec Items and Spanners
Grobs can also be distinguished in their role in the horizontal spacing.
direction (-1, 0 or 1) and returns a cons of booleans, signifying wether
this grob should be transparent and invisible.
-@node Pointer substitution, , , Grobs
+@node Pointer substitution
@unnumberedsubsec Pointer substitution
the grob is made. A substitution process redirects all grob-reference
so that spanner grob will only reference other grobs in the same line.
-@node Engraver, , , Internals
+@node Engraver
+@section Engraver
-@node Music_iterator, , , Internals
+@node Music_iterator
+@section Music_iterator
-@node Music, , , Internals
+@node Music
+@section Music
-@node Molecules, , , Internals
+@node Molecules
+@section Molecules
The objective of any typesetting system is to put ink on paper in the
right places. For LilyPond, this final stage is left to the TeX and the
-@node Development, , , top
+@node Development
@chapter Development
@menu
* Localisation::
@end menu
-@node CodingStyle, , , Development
+@node CodingStyle
@section CodingStyle - standards while programming for GNU LilyPond
As a general rule, you should always try to continue computations, even
Use them.
-@node Making patches, , , Development
-
+@node Making patches
+@section Making patches
@unnumberedsec Track and distribute your code changes
@end example
-@node Localisation, , , Development
-
-@chapter Localisation - User messages in LilyPond
-
-@section Introduction
+@node Localisation
+@section Localisation - User messages in LilyPond
This document provides some guidelines for uniformising user messages.
In the absence of other standards, we'll be using these rules when coding
Not-preferred messages are marked with @code{+}. By convention,
agrammatical examples are marked with @code{*}.
-@section Guidelines
+@subsection Guidelines
@itemize @bullet
@end ignore
+@macro keyindex {word}
+@cindex \word\
+
+@end macro
+
+@macro indexcode {word}
+@cindex \word\
+
+@end macro
+
@node Top
* Output property:: Output property
* Embedded TeX:: Embedded TeX
* Embedded PostScript:: Embedded PostScript
+* Index:: Checking Feature index
@end menu
-@ignore
-Testin'' a b c...
-@lilypond[fragment,relative,verbatim,center]
- a'' b c
-@end lilypond
-@end ignore
-
@node Arpeggio
@section Arpeggio
+@cindex argepeggio
+
+@cindex broken arpeggio
+@c @cindex ``doorlopend'' argpeggio
+
+You can specify an arpeggio sign on a chord by issuing an
+@c duh
+@c @code{\arpeggio}@indexcode{\arpeggio} request:
+@code{\arpeggio} request:
+@cindex @code{\arpeggio}
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\context Voice <c'\arpeggio e g c>
@end lilypond
+@end quotation
+
+Typesetting of simultanious chords with arpeggios can be controlled with
+the property @code{PianoStaff.connectArpeggios} @footnote{ FIXME:
+connectArpeggios. Can't find the English terms for two kinds of
+arpeggio (Dutch: gebroken arpeggio vs doorlopend arpeggio).} By
+default, LilyPond prints broken arpeggios; when set to true, one
+extended arpeggio sign is printed.
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\context PianoStaff <
\property PianoStaff.connectArpeggios = ##t
\context Staff \context Voice <c''\arpeggio e g c>
\context Staff=other \context Voice <c,\arpeggio e g>
>
@end lilypond
-
+@end quotation
@node Glissando
@section Glissando
+@cindex glissando
+
+A glissando line can be requested by issuing a
+@c duh
+@c @code{\glissando}@indexcode{\glissando} request:
+@code{\glissando} request:
+@cindex @code{\glissando}
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
c'' \glissando c'
@end lilypond
+@end quotation
+
+Printing of the additional text @code{"gliss."} is currently not
+supported.
+
@subsection Follow Thread
-@lilypond[fragment,relative,verbatim,center]
+@cindex follow thread
+@cindex staff switching
+@cindex cross staff
+
+@c Documented here because it looks like a glissando.
+A glissando-like line can be printed to connect notes whenever a thread
+switches to another staff. This is enabled if the property
+@code{PianoStaff.followThread}@indexcode{followThread} is set to true:
+
+@quotation
+@lilypond[fragment,relative,verbatim]
\context PianoStaff <
\property PianoStaff.followThread = ##t
\context Staff \context Voice {
\context Staff=two {\clef bass; \skip 1*2;}
>
@end lilypond
+@end quotation
@node Manual beam settings
@section Manual beam settings
+@cindex beams
+@cindex beam settings
+@cindex manual beams
+In some cases it may be necessary to override LilyPond's automatic
+beaming algorithm. For example, the auto beamer will not beam over
+rests, so if you want that, specify the begin and end point manually
+using @code{[}@indexcode{[} and @code{]}@indexcode{]}:
-Beams over rests...
-
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\context Staff {
r4 [r8 g'' a]
}
@end lilypond
+@end quotation
+Similarly, for beams over bar lines:
-Control number of beams...
+@quotation
+@lilypond[fragment,relative,verbatim]
+ \context Staff {
+ a''8 r a2 r8 [a a]
+ }
+@end lilypond
+@end quotation
+
+If you have specific wishes for the number of beams, you can fully
+control the number of beams through the properties
+@code{Voice.stemLeftBeamCount}@indexcode{stemLeftBeamCount};
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\context Staff {
[f'8 r16 f g a]
[f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
}
@end lilypond
+@end quotation
-@lilypond[fragment,relative,verbatim,center]
+and @code{Voice.stemRightBeamCount}@indexcode{stemRightBeamCount}:
+
+@quotation
+@lilypond[fragment,relative,verbatim]
f'32 g a b b a g f
\property Voice.autoBeamSettings
\property Voice.stemLeftBeamCount = #1 b
a g f
@end lilypond
+@end quotation
-Don't extend to middle line esp. for grace
+Conventionally, stems extend to the middle staff line, and thus so do
+beams. The extending of the stems can be controlled through
+@code{Voice.Stem}'s grob-property
+@code{no-stem-extend}@indexcode{no-stem-extend}:
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\grace a'8 a4
\property Voice.Stem \set #'no-stem-extend = ##t
- \grace g8 g4
+ \grace g8 g4 [g8 g]
@end lilypond
-
-Beam slope (height)
+@end quotation
-Horizontal beam
+The beam symbol can be tweaked through @code{Voice.Beam}'s
+grob-properties @code{height-hs} and @code{y-position-hs}.
-@lilypond[fragment,relative,verbatim,center]
+Set @code{height-hs} to zero, to get horizontal beams:
+
+@quotation
+@lilypond[fragment,relative,verbatim]
\property Voice.Beam \set #'direction = #1
\property Voice.Beam \set #'height-hs = #0
[a''8 e' d c]
@end lilypond
+@end quotation
-beam start-y beam-height
+Both are in half spaces. Here's how you'd specify a weird looking beam
+that instead of beaing horizontal, falls two staff spaces (ie, four half
+spaces):
-Weird beam
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\property Voice.Beam \set #'y-position-hs = #4
\property Voice.Beam \set #'height-hs = #-4
[c'8 c]
@end lilypond
+@end quotation
+The direction of a perfectly centred beams can be
+controlled through @code{Voice.Beam}'s grob-property
+@code{default-neutral-direction}@indexcode{default-neutral-direction}
-Like stem...
-
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
[b''8 b]
\property Voice.Beam \set #'default-neutral-direction = #-1
[b b]
@end lilypond
+@end quotation
There are several ways to calculate the direction of a beam.
mean centre distance weighted per note
@end table
-You can spot the difference of these settings quite easily from these simple examples:
+You can spot the differences of these settings from these simple
+examples:
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
[d''8 a]
\property Voice.Beam \set #'dir-function = #beam-dir-mean
[d a]
\property Voice.Beam \set #'dir-function = #beam-dir-median
[d a]
@end lilypond
-
-@lilypond[fragment,relative,verbatim,center]
+@end quotation
+
+@quotation
+@lilypond[fragment,relative,verbatim]
\time 3/8;
[d''8 a a]
\property Voice.Beam \set #'dir-function = #beam-dir-mean
\property Voice.Beam \set #'dir-function = #beam-dir-median
[d a a]
@end lilypond
+@end quotation
+
+These beam direction functions are defined in @file{scm/beam.scm}. If
+your favourite algorithm isn't one of these, you can hook up your own.
+
@node Slur attachments
@section Slur attachments
-Override attachments...
-@lilypond[fragment,relative,verbatim,center]
+The ending of a slur should whenever possible be attached to a note
+head. Only in some instances where beams are involved, LilyPond may
+attach a slur to a stem end. In some cases, you may want to override
+LilyPond's decision, eg to attach the slur to the stem end. This can be
+done through @code{Voice.Slur}'s grob-property @code{attachment}:
+@c FIXME: make @ref{} to backend doco
+
+@quotation
+@lilypond[fragment,relative,verbatim]
\property Voice.Slur \set #'direction = #1
\property Voice.Stem \set #'length = #5.5
g''8(g)g4
g8(g)g4
g4(g8)g
@end lilypond
+*@end quotation
-
-Test Before, after
-
-@c Ugh, ugh @multitable is broken in texinfo-4.0
-@c Fixed in 4.0.jcn3
-@c We'll have to postpone this before/after representation until
-@c jcn3 is rolled into texinfo...
+Trying Before | After example...
+@c Fix rolled into 4.0a prerelease
@multitable @columnfractions .40 .40
@item
@noindent
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
\property Voice.Slur
\set #'direction = #1
g''8(g)g4
g4(g8)g
@end lilypond
@tab
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
\property Voice.Slur
\set #'direction = #1
\property Voice.Stem
@end lilypond
@end multitable
-
-Ophee slurs...
-@lilypond[fragment,relative,verbatim,center]
+
+Similarly, slurs can be attached to note heads even when beams are
+involved (aka Ophee slurs):
+
+@quotation
+@lilypond[fragment,relative,verbatim]
\property Voice.Slur \set #'direction = #1
\property Voice.Slur \set #'attachment = #'(head . head)
g''16()g()g()g()d'()d()d()d
@end lilypond
+@end quotation
+If a slur would strike through a stem or beam, LilyPond will move the
+slur away vertically (upward or downward). In some cases, this may
+cause ugly slurs that you may want to correct:
-Steep slur correct...
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
\property Voice.Stem \set #'direction = #1
\property Voice.Slur \set #'direction = #1
d'32( d'4 )d8..
\property Voice.Slur \set #'attachment = #'(stem . stem)
d,32( d'4 )d8..
@end lilypond
+@end quotation
-Ugly slurs...
-@lilypond[verbatim,center]
+LilyPond will increase the curvature of a slur trying to stay free of
+note heads and stems. However, if the curvature would increase too much,
+the slur will be reverted to its default shape. This decision is based
+on @code{Voice.Slur}'s grob-property @code{beautiful} value. In some
+cases, you may find ugly slurs beautiful, and tell LilyPond so by
+increasing the @code{beautiful} value:
+
+@quotation
+@lilypond[verbatim]
\score {
\notes \context PianoStaff <
\time 6/4;
}
}
@end lilypond
+@end quotation
@node Text spanner
@section Text spanner
Have crescendo set a text spanner iso hairpin
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
\context Voice {
\property Voice.crescendoText = "cresc."
\property Voice.crescendoSpanner = #'dashed-line
@subsection Ottava
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
a'''' b c a
\property Voice.TextSpanner \set #'type = #'dotted-line
\property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
@section Engraver hacking
No time signature, no barlines...
-@lilypond[verbatim,center]
+@lilypond[verbatim]
\score {
\notes \relative c'' {
a b c d
@end lilypond
No staff, no clef, squash pitches
-@lilypond[verbatim,center]
+@lilypond[verbatim]
\score {
\notes { c4 c4 c8 c8 }
\paper {
@node Part combiner
@section Part combiner
-@lilypond[verbatim,center]
+@lilypond[verbatim]
\score{
\context Staff = flauti <
\time 4/4;
Metrome hack...
-@lilypond[verbatim,center]
+
+
+@lilypond[verbatim]
#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
#(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
@node Output property
@section Output property
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
\outputproperty #(make-type-checker 'note-head-interface)
#'extra-offset = #'(2 . 3)
c''2 c
@end lilypond
Don't move the finger 2, only text "m.d." ...
-@lilypond[verbatim,center]
+@lilypond[verbatim]
#(define (make-text-checker text)
(lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
@node Apply hacking
@section Apply hacking
-@lilypond[verbatim,center]
+@lilypond[verbatim]
music = \notes { c'4 d'4( e'4 f'4 }
#(define (reverse-music music)
@end example
-@lilypond[verbatim,center]
+@lilypond[verbatim]
#(define (unhair-pitch p)
(let* ((o (pitch-octave p))
(a (pitch-alteration p))
@node Embedded TeX
@section Embedded TeX
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
a''^"3 $\\times$ \\`a deux"
@end lilypond
[TODO:] Make a direct postscript command?
-@lilypond[verbatim,center]
+@lilypond[verbatim]
\score {
\notes \relative c'' {
a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
}
@end lilypond
+
+@node Index
+@section Checking Feature index
+
+@printindex cp
+
+
@bye
-
-@node Invoking LilyPond, , , Top
+@node Invoking LilyPond
@chapter Invoking LilyPond
@cindex Invoking LilyPond
@end tex
@contents
-@node Top, , , (dir)
+@node Top
@top
@end ignore
-@node Top, , , (dir)
-@chapter GNU LilyPond --- The music typesetter
+@ifnottex
+@node Top
+@top
+@end ifnottex
+@chapter GNU LilyPond --- The music typesetter
LilyPond produces sheet music from input files. This document describes
how to use LilyPond.
* Invoking LilyPond:: Operation.
* Reporting Bugs:: Where to report bugs.
* Reference Manual:: Reference Manual.
-@c Move to Reference Manual?
+* Internals:: Internals
* Internals:(lilypond-internals). Auto generated detailed documentation.
-* convert-ly:: Upgrading input files.
-* Internals::
* Development:: Some hints on developing for LilyPond.
+* convert-ly:: Upgrading input files.
* Index:: Unified index.
@end menu
@include development.itexi
-@node Index, , , Top
+@node Index
@unnumbered Index
@printindex cp
-@node More information, , , Top
+@node More information
@section Resources
-@node Properties, , , Reference Manual
+@node Properties
+@section Properties
Properties are Scheme values. Most of them are in the generated documentation, but some MIDI properties are not. Here is their documentation
@c - Add some words about Guile. /MB
@c - Fix indexing (keyindex) so it doesn't add line breaks /MB
-@node Reference Manual, , , Top
+@c ugh: because of @include, we need to fill in these nodes
+@node Reference Manual
@chapter Reference Manual
@menu
-@node Overview, , , Reference Manual
+@node Overview
@section Overview
This document@footnote{This document has been revised for LilyPond 1.2.}
-@node Top level, , , Reference Manual
+@node Top level
@section Top level
@cindex top level
It is customary to put the @code{\header} at the top of the file.
-
-@node Pitch names, , , Reference Manual
+@node Pitch names
+@section Pitch names
Note names and chord modifiers can be customised for nationalities.
languages and conventions. The syntax is as follows.
-@node Lexical conventions, , , Reference Manual
+@node Lexical conventions
@section Lexical conventions
@cindex lexical conventions
@code{convert-ly}, a tool that automatically upgrades input files.
-
-@cindex other languages
-
-@node Other languages, , , Reference Manual
+@node Other languages
+@section Other languages
+@cindex Other languages
Note name definitions have been provided in various languages.
Simply include the language specific init file. For example:
Pitch names can be redefined using the @code{\pitchnames} command, see
@ref{Pitch names}.
-@cindex Lexical Modes
-
+@node Lexical modes
+@section Lexical modes
+@cindex Lexical modes
@cindex modes
-@node Lexical modes, , , Reference Manual
To simplify entering notes, lyrics, and chords, @emph{Lilypond} has three
special input modes on top of the default mode. In each mode, words
[todo: include short table showign differences]
-@node Types, , , Reference Manual
+@node Types
@section Types
@cindex Identifiers
@end example
-@node Music expressions, , , Reference Manual
+@node Music expressions
@section Music expressions
@cindex music expressions
-@node Atomic music expressions, , , Reference Manual
+@node Atomic music expressions
@section Atomic music expressions
numbers and dots.
-@node Note specification, , , Reference Manual
-
-@cindex note specification
+@node Note specification
+@section Note specification
+@cindex Note specification
@cindex pitches
@code{Mark_engraver}@indexcode{Mark_engraver} to the Score context for
this to work.
-@node barlines, , , Reference Manual
+@node barlines
+@section barlines
@example
\bar@keyindex{bar} @var{bartype};
this has the same effect as the space rest `@code{s}'.
+@node Manual beams
+@section Manual beams
@cindex beams
-@node Manual beams, , , Reference Manual
-
A beam is specified by surrounding the beamed notes with brackets
`@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'.
The slur syntax with parentheses is a shorthand for this.
-
+@node stem tremolo
+@section stem tremolo
@cindex tremolo marks
-@node stem tremolo, , , Reference Manual
-
Tremolo marks can be printed on a single note by adding
`@code{:}[@var{length}]' after the note. The length must be at
least 8. A @var{length} value of 8 gives one line across
-@node Compound music expressions, , , Reference Manual
+@node Compound music expressions
@section Compound music expressions
@cindex compound music expressions
-@cindex relative pitch specification
-@node relative, , , Reference Manual
+@node relative
+@section relative
+@cindex relative pitch specification
It is easy to get confused by octave changing marks and accidentally
putting a pitch in the wrong octave. A much better way of entering a
+@node Repeats
+@section Repeats
@cindex repeats
-@node Repeats, , , Reference Manual
In order to specify repeats, use the @code{\repeat}@keyindex{repeat}
keyword. Since repeats look and sound differently when played or
-@cindex transposition of pitches
-@node transpose, , , Reference Manual
+@node transpose
+@section transpose
+@cindex transposition of pitches
A music expression can be transposed with
@code{\transpose}@keyindex{transpose}. The syntax is
-@node Ambiguities, , , Reference Manual
+@node Ambiguities
@section Ambiguities
@cindex ambiguities
-@node Notation conversion specifics, , , Reference Manual
+@node Notation conversion specifics
@section Notation conversion specifics
-@node Automatic Beaming, , , Reference Manual
+@node Automatic Beaming
+@section Automatic Beaming
@cindex automatic beam generation
@cindex autobeam
By default, LilyPond will generate beams automatically. This feature
can be disabled by setting the
-@code{Voice.beamAuto}@indexcode{Voice.beamAuto} property to @code{#f}.
+@code{Voice.beamAuto}@indexcode{Voice.beamAuto} property to false.
It can be overridden for specific cases by specifying explicit beams.
you would use @code{(end * * 1 32)}.
-@node Chord Names, , , Reference Manual
+@node Chord Names
+@section Chord Names
@cindex chord names
@cindex chords
You can make the chord changes stand out more by setting property
-@code{ChordNames.chordChanges} to @code{#t}. This will only display
+@code{ChordNames.chordChanges} to true. This will only display
chord names when there's a change in the chords scheme, but always
display the chord name after a line break:
@end quotation
+@node lyricprint
+@section lyricprint
@cindex lyrics
@cindex printing!lyrics
-@node lyricprint, , , Reference Manual
Lyric syllables must be interpreted within a @code{Lyrics} context
-@node Notation Contexts, , , Reference Manual
+@node Notation Contexts
@section Notation Contexts
@cindex notation contexts
@mbinclude properties.itely
-@node Page layout, , , Reference Manual
+@node Page layout
+@section Page layout
@subsection Paper block
@item @code{linewidth}@indexcode{linewidth}
Sets the width of the lines. If set to -1.0, a single
- unjustified line is produced.
+ unjustified line is produced. If you use this variable, you
+ probably want to define it in staff spaces, ie
+ @example
+ linewidth = 30 * \staffspace;
+ @end example
@item @code{textheight}@indexcode{textheight}
Sets the total height of the music on each page. Only used by
will set the paper variables @code{hsize} and @code{vsize} (used by
@code{ly2dvi})
-@node contextdefs, , , Reference Manual
+@node contextdefs
+@section contextdefs
@cindex context definition
@cindex translator definition
@end quotation
-@node Sound output, , , Reference Manual
+@node Sound output
@section Sound output
The MIDI block is analogous to the paper block, but it is somewhat
@cindex MIDI instrument names
-@node midilist, , , Reference Manual
+@node midilist
+@section midilist
The MIDI instrument name is set by the
@code{Staff.midiInstrument}@indexcode{Staff.midiInstrument} property or,
-@node Pre-defined Identifiers, , , Reference Manual
+@node Pre-defined Identifiers
@section Pre-defined Identifiers
Allow stems, beams, and slurs to point either upwards or
downwards, decided automatically by LilyPond.
- @item @code{\stemdown}@keyindex{stemdown}
+ @item @code{\stemDown}@keyindex{stemDown}
Force stems, beams, and slurs to point down.
@item @code{\stemUp}@keyindex{stemUp}
@c -*-texinfo-*-
-@node Tutorial, , , Top
+@c ugh: because of @include, we need to fill in these nodes?
+@node Tutorial
@chapter Tutorial
@menu
* end of tutorial:: The end
@end menu
-@node Introduction, , , Tutorial
+@node Introduction
@section Introduction
experiment with writing Lilypond input yourself, to get a feel for
how LilyPond behaves.
-@node The first tune, , , Tutorial
+@node The first tune
@section The first tune
description. In other words, LilyPond would be best
described by `music compiler' or `music to notation compiler'.
-@node Lyrics and chords, , , Tutorial
+@node Lyrics and chords
@section Lyrics and chords
In this section we show how to typeset a song of unknown
@end example
End the score block.
-@node Piano music, , , Tutorial
+@node Piano music
@section Piano music
Our third subject is a piece of piano music. The fragment in the input
[TODO: demonstrate Hara-Kiri with scores and part extraction.]
-@node end of tutorial, , , Tutorial
+@node end of tutorial
@section The end
That's all folks. From here, you can either try fiddling with input
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=121
-MY_PATCH_LEVEL=jcn1
+MY_PATCH_LEVEL=jcn2
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
--- /dev/null
+\header{
+texidoc="Explicit pitches and durations.";
+}
+\score {
+ \notes {
+ \pitch #(make-pitch 0 0 0) \duration #(make-duration 1 0)
+ \pitch #(make-pitch 1 1 1) \duration #(make-duration 2 0)
+
+ }
+}
\ No newline at end of file
return SCM_BOOL_F;
}
-
static SCM
make_duration (SCM l, SCM d)
{
{"lyrics", LYRICS},
{"key", KEY},
{"mark", MARK},
- {"musicalpitch", MUSICAL_PITCH},
+ {"pitch", PITCH},
{"time", TIME_T},
{"times", TIMES},
{"midi", MIDI},
%token MEASURES
%token MIDI
%token MM_T
-%token MUSICAL_PITCH
+%token PITCH
%token NAME
%token PITCHNAMES
%token NOTES
%type <reqvec> pre_requests post_requests
%type <request> gen_text_def
-%type <scm> steno_musical_pitch musical_pitch absolute_musical_pitch
-%type <scm> steno_tonic_pitch
+%type <scm> steno_pitch pitch absolute_pitch
+%type <scm> explicit_pitch steno_tonic_pitch
%type <scm> chord_additions chord_subtractions chord_notes chord_step
%type <music> chord
| Repeated_music { $$ = $1; }
| Simultaneous_music { $$ = $1; }
| Sequential_music { $$ = $1; }
- | TRANSPOSE musical_pitch Music {
+ | TRANSPOSE pitch Music {
$$ = new Transposed_music (SCM_EOL);
Music *p = $3;
Pitch pit = *unsmob_pitch ($2);
;
relative_music:
- RELATIVE absolute_musical_pitch Music {
+ RELATIVE absolute_pitch Music {
Music * p = $3;
Pitch pit = *unsmob_pitch ($2);
$$ = new Relative_octave_music (SCM_EOL);
}
;
-steno_musical_pitch:
+steno_pitch:
NOTENAME_PITCH {
$$ = $1;
}
}
;
-musical_pitch:
- steno_musical_pitch {
+pitch:
+ steno_pitch {
$$ = $1;
}
- | MUSICAL_PITCH embedded_scm {
- if (!unsmob_pitch ($2))
+ | explicit_pitch {
+ $$ = $1;
+ }
+ ;
+
+explicit_pitch:
+ PITCH embedded_scm {
+ $$ = $2;
+ if (!unsmob_pitch ($2)) {
THIS->parser_error (_f ("Expecting musical-pitch value", 3));
- Pitch m;
- $$ = m.smobbed_copy ();
+ $$ = Pitch ().smobbed_copy ();
+ }
}
;
}
;
-absolute_musical_pitch:
- steno_musical_pitch {
+absolute_pitch:
+ steno_pitch {
$$ = $1;
}
;
steno_duration {
$$ = $1;
}
+ | explicit_duration {
+ $$ = $1;
+ }
| duration_length '*' bare_unsigned {
$$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
}
| entered_notemode_duration {
$$ = $1;
}
+ | explicit_duration {
+ $$ = $1;
+ }
;
steno_duration:
simple_element:
- musical_pitch exclamations questions optional_notemode_duration {
+ pitch exclamations questions optional_notemode_duration {
if (!THIS->lexer_p_->note_state_b ())
THIS->parser_error (_ ("Have to be in Note mode for notes"));
"Last-Translator: Erwin Dieterich <bamse@gmx.de>\n"
"Language-Team: LANGUAGE <de@li.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: ENCODING\n"
#: data-file.cc:54
msgid ""
msgstr ""
"POT-Creation-Date: 2000-12-17 15:35+0100\n"
-"Content-Type: text/plain; charset=\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
"Date: 1998-05-30 00:17:12+0200\n"
"From: <jantien@xs4all.nl>\n"
"Xgettext-Options: --c++ --default-domain=lilypond --join "
# the TP robot wants them like this (I hope).
# Of course, Han-Wen <hanwen@cs.uu.nl> also was FIRST AUTHOR.
#
+#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: lilypond 1.3.59\n"
"Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=8859-1\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Date: 1998-05-26 11:26:28+0200\n"
"From: <janneke@gnu.org>\n"
;; guile> (load "backend-documentation-lib.scm")
;; For some reason, this can't be generated when lilypond is loaded;
;; the regexp stuff behaves weird.
-(define (list-interface-names) '("general-grob-interface" "general-grob-interface" "beam-interface" "clef-interface" "axis-group-interface" "note-column-interface" "stem-interface" "slur-interface" "side-position-interface" "accidentals-interface" "line-of-score-interface" "note-head-interface" "note-name-interface" "rhythmic-head-interface" "rest-interface" "tuplet-bracket-interface" "align-interface" "aligned-interface" "align-interface" "break-aligned-interface" "chord-name-interface" "time-signature-interface" "bar-line-interface" "hairpin-interface" "arpeggio-interface" "note-collision-interface" "custos-interface" "dot-interface" "font-interface" "text-interface" "dot-column-interface" "dynamic-interface" "finger-interface" "separation-spanner-interface" "text-script-interface" "grace-alignment-interface" "hara-kiri-group-interface" "line-spanner-interface" "lyric-hyphen-interface" "key-signature-interface" "lyric-extender-interface" "lyric-syllable-interface" "mark-interface" "multi-measure-rest-interface" "font-interface" "paper-column-interface" "spaceable-element-interface" "rest-collision-interface" "script-interface" "script-column-interface" "spacing-spanner-interface" "staff-symbol-interface" "stem-tremolo-interface" "separation-item-interface" "sustain-pedal-interface" "system-start-delimiter-interface" "text-spanner-interface" "tie-interface" "tie-column-interface" "volta-bracket-interface"))
+(define (list-interface-names) '("general-grob-interface" "beam-interface" "clef-interface" "axis-group-interface" "note-column-interface" "stem-interface" "slur-interface" "side-position-interface" "accidentals-interface" "line-of-score-interface" "note-head-interface" "note-name-interface" "rhythmic-head-interface" "rest-interface" "tuplet-bracket-interface" "align-interface" "aligned-interface" "break-aligned-interface" "chord-name-interface" "time-signature-interface" "bar-line-interface" "hairpin-interface" "arpeggio-interface" "note-collision-interface" "custos-interface" "dot-interface" "font-interface" "text-interface" "dot-column-interface" "dynamic-interface" "finger-interface" "separation-spanner-interface" "text-script-interface" "grace-alignment-interface" "hara-kiri-group-interface" "line-spanner-interface" "lyric-hyphen-interface" "key-signature-interface" "lyric-extender-interface" "lyric-syllable-interface" "mark-interface" "multi-measure-rest-interface" "paper-column-interface" "spaceable-element-interface" "rest-collision-interface" "script-interface" "script-column-interface" "spacing-spanner-interface" "span-bar-interface" "staff-symbol-interface" "stem-tremolo-interface" "separation-item-interface" "sustain-pedal-interface" "system-start-delimiter-interface" "text-spanner-interface" "tie-interface" "tie-column-interface" "volta-bracket-interface"))
(eval-string (ly-gulp-file "interface-description.scm"))
"\n@html"
"\n<hr>"
"\n@end html"
- "\n@node " name ",,,"))
+ "\n@node " name))
(define texi-section-alist
'(
;; prepend GNU for dir, must be unique
"\n* GNU " name " (" file-name "). " name "."
"\n@end direntry"
- (node "Top") top
+ (node "Top") ",(lilypond)Development,," top
"\n@top"
(texi-section 1 name #f)
(texi-menu items-alist)
(translator-property-description 'melismaBusy boolean? "Signifies
whether a melisma is active. This can be used to signal melismas on
top of those automatically detected. ")
-(translator-property-description 'melismaEngraverBusy boolean? "See @ref{melismaBusy}. This is set automatically.")
+(translator-property-description 'melismaEngraverBusy boolean? "See @ref{(lilypond)melismaBusy}. This is set automatically.")
(translator-property-description 'midiInstrument string? "Name of the
MIDI instrument to use ")
(translator-property-description 'noAutoBeaming boolean? "If set to true then beams are not generated automatically.
if 1:
def conv (str):
str = re.sub ('drarnChords', 'chordChanges', str)
+ str = re.sub ('\\musicalpitch', '\\pitch', str)
return str
- conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges'))
+ conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges, \\musicalpitch -> \\pitch'))
############################