-1.3.145.jcn1
+
+1.3.145.jcn2
============
+* Make and ly2dvi fixes.
+
+* Made feta-timesig C a bit rounder.
+
+* Included flat autogenerated list of grob interfaces into refman.
+
+* Moved Rest_engraver to ThreadContext.
+
+* Documentation updates.
+
+* Bugfix: package-diff: remove all out-?.* dirs.
+
* Preliminary tutorial fixes.
* Ly2dvi:
* Tutorial and refman fixes (Mats)
-
-1.3.144.jcn4
+1.3.145.hwn1
============
+* Bugfix: LyricsVoice.stz property now works.
+
+* Remove sem-colons from lilypond syntax.
+
+* Removed a grammar ambiguity: '-' DIGIT (fingering, only possible in \notes)
+now can not be interpreted as a negative number.
+
+
+1.3.145.rz1
+===========
+
+* Stem/notehead attach bug fixed (still probs with mensural head and
+ other head on same stem)
+
+* Minor font changes
+
+
+1.3.145
+=======
+
* Build fixes for icon, this fixes 'rpm' target. Tried to reinclude
in rpm using (.png and) .xpm, but latest LinuxPPC release's rpm
(3.0.6) Icon: tag handling is broken.
Bugs that are not fault of LilyPond are documented here.
+@unnumbered NetBSD
+
+@itemize @bullet
+@item The flex precompiled in NetBSD-1.4.2 is broken.
+Download flex-2.5.4a, build, install.
+
+@item The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
+release)) does not include @file{/usr/pkg} paths. Configure using:
+@example
+
+CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
+
+@end example
+
+@end itemize
@unnumbered Solaris:
@lilypond[fragment,verbatim]
-\relative c'' { \key c \minor; r8 c16 b c8 g as c16 b c8 d | g,4 }
+\relative c'' { \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4 }
@end lilypond
The output looks very good: the font and the layout algorithms were
rm -f fonts.aux fonts.log feta*.tfm feta*.*pk
rm -rf $(outdir)/lilypond $(outdir)/lilypond-internals
-# when cross-compiling, we don't have lilypond
+$(outdir)/lilypond.nexi: $(outdir)/interfaces.itexi
+$(outdir)/lilypond.texi: $(outdir)/interfaces.itexi
+
+# Rules for the automatically generated documentation
+# When cross-compiling, we don't have lilypond, so we fake
ifneq ($(CROSS),yes)
-$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi:
+dummy:
+$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi: dummy
cd $(outdir) && ../$(depth)/$(builddir)/lily/$(outconfbase)/lilypond ../$(src-depth)/ly/generate-documentation
-ln $(outdir)/lilypond-internals.texi $(outdir)/lilypond-internals.nexi
+
+$(outdir)/interfaces.itexi: dummy
+ cd $(outdir) && ../$(depth)/$(builddir)/lily/$(outconfbase)/lilypond ../$(src-depth)/ly/generate-interface-doc
+
else
+
$(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi:
touch $@
touch $(outdir)/$(*F).nexi
+
+$(outdir)/interfaces.itexi:
+ cp dummy-interfaces.itexi $@
endif
--- /dev/null
+@c -*-texinfo-*-
+
+@node Conversion tools
+@chapter Converting to LilyPond format.
+
+
+@menu
+* midi2ly::
+* etf2ly::
+* abc2ly::
+* pmx2ly::
+* musedata2ly::
+* mup2ly::
+@end menu
+
+@node midi2ly
+@section midi2ly
+
+Midi2ly translates a MIDI input file to a LilyPond source file. MIDI
+(Music Instrument Digital Interface) is a standard for digital
+instruments: it specifies cabling, a serial protocol and a file format.
+
+It is possible to record a MIDI file using a digital keyboard, and then
+convert it to @file{.ly}. However, human players can not rhythmically
+exact enough to make a MIDI to .ly conversion trivial. midi2ly tries to
+compensate for these timing errors, but is not very good at this. It is
+therefore not recommended to use midi2ly for human-generated midi
+files. Correcting the quantization mistakes of the human player takes a
+lot of time.
+
+Hackers who know about signal processing are invited to write a more
+robust midi2ly.
+
+MIDI is also a de facto standard format for exporting music from other
+programs, so this capability may come in useful when you want to import
+files from a program that has no converter for its native format.
+
+@subsection Invoking midi2ly
+
+@example
+ midi2ly [OPTION]... MIDI-FLIE
+@end example
+
+@unnumberedsubsec Options
+
+@table @code
+@item -b, --no-quantify,
+ Write exact durations, e.g.: `a4*385/384'.
+@item -D, --debug,
+ Print lots of debugging stuff.
+@item -h, --help,
+ Show a summary of usage.
+@item -I, --include=@file{DIR},
+ Add DIR to search path.
+@item -k, --key=ACC[:MINOR],
+ Set default key. ACC > 0 sets number of sharps; ACC < 0 sets number
+ of flats. A minor key is indicated by ":1".
+@item -n, --no-silly,
+ Assume no plets or double dots, assume smallest (reciprocal) duration 16.
+@item -o, --output=@file{FILE},
+ Set @file{FILE} as default output.
+@item -p, --no-plets,
+ Assume no plets.
+@item -q, --quiet,
+ Be quiet.
+@item -s, --smallest=N,
+ Assume no shorter (reciprocal) durations than N.
+@item -v, --verbose,
+ Be verbose.
+@item -w, --warranty,
+ Show the warranty with which midi2ly comes. (It comes with @strong{NO WARRANTY}!)
+@item -x, --no-double-dots,
+ Assume no double dotted notes.
+@end table
+
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+
+Written by @email{Jan Nieuwenhuizen, janneke@@gnu.org}.
+
+
+@node etf2ly
+@section etf2ly
+
+
+ETF (Enigma Transport Format) is a format used by Coda Music
+Technology's Finale product. This program will convert part of an ETF
+file to a ready-to-use LilyPond file.
+
+@subsection Invoking etf2ly
+Usage:
+
+@example
+ etf2ly [OPTION]... ETF-FILE
+@end example
+
+Convert ETF to LilyPond.
+
+@unnumberedsubsec Options
+@table @code
+@item -h,--help
+this help
+@item -o,--output=FILE
+set output filename to FILE
+@item -v,--version
+version information
+@end table
+
+
+@refbugs
+
+Known: articulation scripts are buggy. Empty measures confuse etf2ly.
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
+
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+@node abc2ly
+@section abc2ly
+
+ABC is a fairly simple ASCII based format. It is described at
+@uref{http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt}.
+
+@subsection Invoking abc2ly
+
+@example
+ abc2ly [OPTION]... ABC-FILE
+@end example
+
+Convert ABC to LilyPond.
+
+@unnumberedsubsec Options
+@table @code
+@item -h,--help
+this help
+@item -o,--output=FILE
+set output filename to FILE
+@item -v,--version
+version information
+@end table
+
+@refbugs
+
+The ABC standard is not very "standard". For extended features
+(eg. polyphonic music) different conventions exist.
+
+
+Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
+
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+@node pmx2ly
+@section pmx2ly
+
+PMX is a Musixtex preprocessor written by Don Simons, see
+@uref{http://www.gmd.de/Misc/Music/musixtex/software/pmx/}.
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+@subsection Invoking pmx2ly
+
+@example
+ pmx2ly [OPTION]... PMX-FILE
+@end example
+
+Convert PMX to LilyPond.
+
+@unnumberedsubsec Options
+
+@table @code
+@item -h,--help
+this help
+@item -o,--output=FILE
+set output filename to FILE
+@item -v,--version
+version information
+@end table
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
+
+
+@node musedata2ly
+@section musedata2ly
+
+ Musedata (@uref{http://www.musedata.org/}) is an electronic library of
+classical music scores, currently comprising about 800 composition
+dating from 1700 to 1825. The music is encoded in so-called Musedata
+format
+(@uref{http://www.ccarh.org/publications/books/beyondmidi/online/musedata}).
+musedata2ly converts a set of musedata files to one .ly file, and will
+include a \header field if a .ref file is supplied
+
+@subsection Invoking musedata2ly
+
+@example
+ musedata2ly [OPTION]... MUSEDATA-FILE
+@end example
+
+Convert Musedata to LilyPond.
+
+@unnumberedsubsec Options
+
+@table @code
+@item -h,--help
+print help
+@item -o,--output=@var{file}
+set output filename to @var{file}
+@item -v,--version
+version information
+@item -r,--ref=@var{reffile}
+ read background information from ref-file
+@var{REFFILE}
+@end table
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
+
+
+@node mup2ly
+@section mup2ly
+
+MUP (Music Publisher) is a shareware music notation program by Arkkra
+Enterprises. It is also the name of the input format. Mup2ly will
+convert part of a Mup file to a ready-to-use LilyPond file.
+
+@subsection Invoking mup2ly
+
+@example
+ mup2ly [OPTION]... MUP-FILE
+@end example
+
+Convert Mup to LilyPond.
+
+@unnumberedsubsec Options
+
+@table @code
+@item -d,--debug
+show what constructs are not converted, but skipped.
+@item D, --define=@var{NAME}[=@code{EXP}]
+define macro @var{NAME} with opt expansion @code{EXP}
+@item -E,--pre-process
+only run the pre-processor
+@item -h,--help
+print help
+@item -o,--output=FILE
+write output to @var{FILE}
+@item -v,--version
+version information
+@item -w,--warranty
+print warranty and copyright. Mup2ly comes with absolutlely @strong{NO WARRANTY}.
+@end table
+
+
+@refbugs
+
+Currently, only plain notes (pitches, durations), voices and staffs are
+converted.
+
+Written by @email{Jan Nieuwenhuizen,janneke@@gnu.org}, based on pmx2ly.
+
+Report bugs to @email{bug-gnu-music@@gnu.org}.
+
+
+
+++ /dev/null
-@c -*-texinfo-*-
-
-@node Conversion tools
-@chapter Converting to LilyPond format.
-
-
-@menu
-* midi2ly::
-* etf2ly::
-* abc2ly::
-* pmx2ly::
-* musedata2ly::
-@end menu
-
-@node midi2ly
-@section midi2ly
-
-Midi2ly translates a MIDI input file to a LilyPond source file. MIDI
-(Music Instrument Digital Interface) is a standard for digital
-instruments: it specifies cabling, a serial protocol and a file format.
-
-It is possible to record a MIDI file using a digital keyboard, and then
-convert it to @file{.ly}. However, human players can not rhythmically
-exact enough to make a MIDI to .ly conversion trivial. midi2ly tries to
-compensate for these timing errors, but is not very good at this. It is
-therefore not recommended to use midi2ly for human-generated midi
-files. Correcting the quantization mistakes of the human player takes a
-lot of time.
-
-Hackers who know about signal processing are invited to write a more
-robust midi2ly.
-
-MIDI is also a de facto standard format for exporting music from other
-programs, so this capability may come in useful when you want to import
-files from a program that has no convertor for its native format.
-
-@subsection Invoking midi2ly
-
-@example
- midi2ly [options] midi-file
-@end example
-
-@unnumberedsec Options
-
-@table @code
-@item -b, --no-quantify,
- Write exact durations, e.g.: `a4*385/384'.
-@item -D, --debug,
- Print lots of debugging stuff.
-@item -h, --help,
- Show a summary of usage.
-@item -I, --include=@file{DIR},
- Add DIR to search path.
-@item -k, --key=ACC[:MINOR],
- Set default key. ACC > 0 sets number of sharps; ACC < 0 sets number
- of flats. A minor key is indicated by ":1".
-@item -n, --no-silly,
- Assume no plets or double dots, assume smallest (reciprocal) duration 16.
-@item -o, --output=@file{FILE},
- Set @file{FILE} as default output.
-@item -p, --no-plets,
- Assume no plets.
-@item -q, --quiet,
- Be quiet.
-@item -s, --smallest=N,
- Assume no shorter (reciprocal) durations than N.
-@item -v, --verbose,
- Be verbose.
-@item -w, --warranty,
- Show the warranty with which midi2ly comes. (It comes with @strong{NO WARRANTY}!)
-@item -x, --no-double-dots,
- Assume no double dotted notes.
-@end table
-
-@node etf2ly
-@section etf2ly
-
-
-ETF (Enigma Transport Format) is a format used by Coda Music
-Technology's Finale product. This program will convert part of an ETF
-file to a ready-to-use lilypond file.
-
-@subsection Invoking etf2ly
-Usage:
-
-@example
- etf2ly [OPTION]... ETF-FILE
-@end example
-
-Convert ETF to LilyPond.
-
-Options:
-@table @code
-@item -h,--help
-this help
-@item -o,--output=FILE
-set output filename to FILE
-@item -v,--version
-version information
-@end table
-
-
-Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
-
-
-@subsection Bugs
-
-Known: articulation scripts are buggy. Empty measures confuse etf2ly.
-Report bugs to @email{bug-gnu-music@@gnu.org}.
-
-@node abc2ly
-@section abc2ly
-
-ABC is a fairly simple ASCII based format. It is described at
-@uref{http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt}.
-
-
-@example
- abc2ly [OPTION]... ABC-FILE
-@end example
-
-Convert ABC to LilyPond.
-
-Options:
-@table @code
-@item -h,--help
-this help
-@item -o,--output=FILE
-set output filename to FILE
-@item -v,--version
-version information
-@end table
-
-@subsection Bugs
-
-The ABC standard is not very "standard". For extended features
-(eg. polyphonic music) different conventions exist.
-
-
-@node pmx2ly
-@section pmx2ly
-
-PMX is a Musixtex preprocessor written by Don Simons, see
-@uref{http://www.gmd.de/Misc/Music/musixtex/software/pmx/}.
-
-Report bugs to @email{bug-gnu-music@@gnu.org}.
-
-@example
- pmx2ly [OPTION]... PMX-FILE
-@end example
-
-Convert PMX to LilyPond.
-
-Options:
-@table @code
-@item -h,--help
-this help
-@item -o,--output=FILE
-set output filename to FILE
-@item -v,--version
-version information
-@end table
-
-
-@node musedata2ly
-@section musedata2ly
-
-PMX is a Musixtex preprocessor written by Don Simons, see
-@uref{http://www.gmd.de/Misc/Music/musixtex/software/pmx/}.
-
-Report bugs to @email{bug-gnu-music@@gnu.org}.
-
-@example
- musedata2ly [OPTION]... MUSEDATA-FILE
-@end example
-
-Convert Musedata to LilyPond. Musedata (@uref{http://www.musedata.org/})
-is an electronic library of classical music scores, currently comprising
-about 800 composition dating from 1700 to 1825. The music is encoded in
-so-called Musedata format
-(@uref{http://www.ccarh.org/publications/books/beyondmidi/online/musedata}).
-musedata2ly converts a set of musedata files to one .ly file, and will
-include a \header field if a .ref file is supplied
-
-Report bugs to @email{bug-gnu-music@@gnu.org}.
-
-Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
-
-
-Options:
-@table @code
-@item -h,--help
-this help
-@item -o,--output=@var{file}
-set output filename to @var{file}
-@item -v,--version
-version information
-@item -r,--ref=@var{reffile}
- read background information from ref-file
-@var{REFFILE}
-@end table
-
-
-
related to LilyPond
@itemize @bullet
-@item Writing convertors, eg. from NIFF and MIDI (we tried writing one with
+@item Writing converters, eg. from NIFF and MIDI (we tried writing one with
limited success: midi2ly, included with lilypond.)
We found that writing them in Python is the easiest.
%\property Voice.textNonEmpty = ##f
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c'' {
-\key d \major;
-\time 4/4;
+\key d \major
+\time 4/4
<d4_"notation" a fis> r
{ \property Grace.Stem \override #'flag-style = ##f
\grace g16 }
fis8 e16 fis
{ \property Grace.Stem \override #'flag-style = ##f
\grace a16 }
-g8 fis16 g | a4 \bar "||"; }
+g8 fis16 g | a4 \bar "||" }
\notes\relative c'' {
-<d4_"performance" a fis> r g16 () fis e fis a () g fis g | a4 \bar "||"; }
+<d4_"performance" a fis> r g16 () fis e fis a () g fis g | a4 \bar "||" }
@end lilypond
An appoggiatura may have more notes preceding the main note.
\emptyText
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c'' {
- \key as \major;
- \time 2/4;
+ \key as \major
+ \time 2/4
\grace { bes16 } as8_"notation" as16 bes as8 g |
\grace { [as16 ( bes] } < ) c4 as >
- \grace { [as16 ( bes] } < ) c4 as > \bar "||";
+ \grace { [as16 ( bes] } < ) c4 as > \bar "||"
\grace { bes16 } as8_"performance" as16 bes as8 g |
< \context Voice = va { \stemUp as32 bes c8. as32 bes c8. }
\context Voice = vb { \stemDown as16 ~ as8. as16 ~ as8. } >
- \bar "||";
+ \bar "||"
}
@end lilypond
@lilypond[13pt,eps]
\notes \context PianoStaff <
\context Staff = SA \relative c'' {
- \time 4/4;
- \clef treble;
+ \time 4/4
+ \clef treble
r8 g16 c e g, c e r8 g,16 c e g, c e |
- r8 a,16 d f a, d f r8 a,16 d f a, d f \bar "||"; }
+ r8 a,16 d f a, d f r8 a,16 d f a, d f \bar "||" }
\context Staff = SB \relative c' {
- \clef bass;
+ \clef bass
< \context Voice = va {
\stemUp
r16 e8. () e4 r16 e8. () e4 |
@
@lilypond[13pt,eps]
-\key g \major;
-\time 4/4;
-\notes\relative c'' { g4 c b a | g1 \bar "||";}
-\time 3/8;
-\notes\relative c'' { g8 d' c | b c a | g4. \bar "||";}
+\key g \major
+\time 4/4
+\notes\relative c'' { g4 c b a | g1 \bar "||"}
+\time 3/8
+\notes\relative c'' { g8 d' c | b c a | g4. \bar "||"}
@end lilypond
@item bind
@lilypond[13pt,eps]
\notes\context GrandStaff <
- \relative c''\context Staff = SA { \clef treble; g4 e c2 }
- \relative c \context Staff = SB { \clef bass; c1 \bar "|."; } >
+ \relative c''\context Staff = SA { \clef treble g4 e c2 }
+ \relative c \context Staff = SB { \clef bass c1 \bar "|." } >
@end lilypond
@lilypond[13pt,eps]
\context StaffGroup <
-% \property StaffGroup.minVerticalAlign = 12
- \notes\relative c'' \context Staff = SA { \clef treble; g4 e c2 }
- \notes\relative c \context Staff = SB { \clef bass; c1 \bar "|."; } >
+% \property StaffGroup.minVerticalAlign = #12
+ \notes\relative c'' \context Staff = SA { \clef treble g4 e c2 }
+ \notes\relative c \context Staff = SB { \clef bass c1 \bar "|." } >
@end lilypond
@item brass
\property Score.LyricText \set #'font-style = #'large
\addlyrics
\context Staff \notes\relative c' {
- \clef soprano; c1
- \clef mezzosoprano; c
- \clef alto; c
- \clef tenor; c
- \clef baritone; c
+ \clef soprano c1
+ \clef mezzosoprano c
+ \clef alto c
+ \clef tenor c
+ \clef baritone c
}
\context Lyrics \lyrics {
Soprano Mezzosoprano Alto Tenor Baritone
\property Score.barNonAuto = ##t
\property Voice.textNonEmpty = ##t
\property Voice.TextScript \set #'font-style = #'large
-\time 4/4;
+\time 4/4
\notes\relative c'' {
<g1_"major" b d>
<g_"minor" bes d>
@
@lilypond[13pt,eps]
-\key g \major; \time 4/4;
-\notes\relative c'' { g4 g g a | b2 a | g4 b a a | g1 \bar "||"; }
+\key g \major \time 4/4
+\notes\relative c'' { g4 g g a | b2 a | g4 b a a | g1 \bar "||" }
@end lilypond
@item consonance
\property Score.TimeSignature \override #'style = #'C2/2
\notes\context PianoStaff <
\context Staff = SA \relative c' {
- \key bes \major;
- \time 4/4;
- \clef treble;
+ \key bes \major
+ \time 4/4
+ \clef treble
< \context Voice = rha {
\stemUp
r1 | r2 r8 g'8 bes d, |
>
}
\context Staff = SB \relative c' {
- \clef bass;
- \key bes \major;
+ \clef bass
+ \key bes \major
< \context Voice = lha {
\stemUp
r8 d es g, fis4 g | r8 a16 bes c8 bes16 a bes4 g |
@
@lilypond[13pt,eps]
-\key g \major; \time 4/4;
-\notes\relative c'' { g4 \< a b c | \! d1 \bar "|."; }
+\key g \major \time 4/4
+\notes\relative c'' { g4 \< a b c | \! d1 \bar "|." }
@end lilypond
@item cue-notes
@lilypond[13pt,eps]
\property Voice.TextScript \set #'font-style = #'large
-\key g \major; \time 4/4;
-\notes\relative c'' { d1 | g,4^\segno a b c | b a g2_"d.s." \bar "|."; }
+\key g \major \time 4/4
+\notes\relative c'' { d1 | g,4^\segno a b c | b a g2_"d.s." \bar "|." }
@end lilypond
@item decrescendo
@
@lilypond[13pt,eps]
-\context Staff \notes\relative c'' {\key g \major; \time 4/4;
- d4 \> c b a | \! g1 \bar "|."; }
+\context Staff \notes\relative c'' {\key g \major \time 4/4
+ d4 \> c b a | \! g1 \bar "|." }
@end lilypond
@item descending interval
@
@lilypond[13pt,eps]
-\key a \major;
-\time 4/4;
+\key a \major
+\time 4/4
\notes\relative c' {
- \partial 8; e8 | a4. gis8 b a e cis |
- fis2 d4. \bar "||"; }
+ \partial 8 e8 | a4. gis8 b a e cis |
+ fis2 d4. \bar "||" }
@end lilypond
@item dissonant interval; dissonance
\property Lyrics.LyricText \set #'font-style = #'large
\addlyrics
\notes\relative c {
-% \clef "F3";
- \clef varbaritone;
+% \clef "F3"
+ \clef varbaritone
f1
- \clef bass;
+ \clef bass
f1
- \clef subbass;
+ \clef subbass
f1
- \clef "F^8";
+ \clef "F^8"
f1
- \clef "F_8";
+ \clef "F_8"
f1
}
\context Lyrics \lyrics {
@lilypond[13pt,eps]
-\time 4/4;
+\time 4/4
\notes\relative c'' {
-a4 b c2^\fermata \bar "|."; }
+a4 b c2^\fermata \bar "|." }
@end lilypond
@item fifth
\property Lyrics.LyricText \set #'font-style = #'large
\addlyrics
\notes\relative c'' {
- \clef french;
+ \clef french
g1
- \clef treble;
+ \clef treble
g
- \clef "G^8";
+ \clef "G^8"
g
- \clef "G_8";
+ \clef "G_8"
g
}
\context Lyrics \lyrics {
@lilypond[13pt,eps]
\notes\context PianoStaff <
\context Staff = SA \relative c'' {
- \time 4/4;
- \clef treble;
- \partial 4; < c4 g e > | < c a f > < b g d > < c2 g e > }
+ \time 4/4
+ \clef treble
+ \partial 4 < c4 g e > | < c a f > < b g d > < c2 g e > }
\property Lyrics.LyricText \set #'font-style = #'large
\addlyrics
\context Staff = SB \relative c {
- \clef bass;
- \partial 4; c4 | f, g c2
- \bar "|."; }
+ \clef bass
+ \partial 4 c4 | f, g c2
+ \bar "|." }
\context Lyrics \lyrics { T S D T } >
@end lilypond
\property Score.barNonAuto = ##t
\property Score.TextScript \set #'font-style = #'large
\context Staff \notes\relative c'' {
- < g1_"second" a > s < g'_"seventh" a, > s \bar "||";
- < g,_"third" b > s < g'_"sixth" b, > s \bar "||";
- < g,_"fourth" c > s < g'_"fifth" c, > s \bar "||";
+ < g1_"second" a > s < g'_"seventh" a, > s \bar "||"
+ < g,_"third" b > s < g'_"sixth" b, > s \bar "||"
+ < g,_"fourth" c > s < g'_"fifth" c, > s \bar "||"
}
@end lilypond
\property Lyrics.LyricText \set #'font-style = #'large
\addlyrics
\notes\relative c'' {
- c4( d )e \bar "||";
- c4-- d-- e-- \bar "||";
- c4-.( d-. )e-. \bar "||";
- c4-. d-. e-. \bar "||";
+ c4( d )e \bar "||"
+ c4-- d-- e-- \bar "||"
+ c4-.( d-. )e-. \bar "||"
+ c4-. d-. e-. \bar "||"
}
\context Lyrics \lyrics { a "" "" b "" "" c "" "" d }
@end lilypond
@lilypond[13pt,eps]
\notes\relative c'' {
- \time 3/4;
- \key f \major;
- c es d | c bes8 a bes4 | c es d | c2 \bar "||";}
+ \time 3/4
+ \key f \major
+ c es d | c bes8 a bes4 | c es d | c2 \bar "||"}
@end lilypond
@lilypond[13pt,eps]
\notes\relative c' {
- \time 6/8;
- \key f \major;
+ \time 6/8
+ \key f \major
f8 f f f a16 g a f |
- c'8 c c c e16 d e c \bar "||";}
+ c'8 c c c e16 d e c \bar "||"}
@end lilypond
@lilypond[13pt,eps]
\notes\relative c'' {
- \time 5/4;
- \key g \major;
+ \time 5/4
+ \key g \major
d4 b8 g b d d c a4 |
- g8 g16 g g8 g16 g g8 fis16 g a8 fis16 e d4 \bar "||";}
+ g8 g16 g g8 g16 g g8 fis16 g a8 fis16 e d4 \bar "||"}
@end lilypond
@item metronome
\property Score.barNonAuto = ##t
\property Staff.Clef \set #'full-size-change = ##t
\notes\relative c' {
- \clef bass; c1 s
- \clef alto; c s
- \clef treble; c s
+ \clef bass c1 s
+ \clef alto c s
+ \clef treble c s
}
@end lilypond
\emptyText
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c'' {
- \time 4/4;
- \key g \major;
- \partial 8; g16_"------" fis |
+ \time 4/4
+ \key g \major
+ \partial 8 g16_"------" fis |
g8 d16_"------" c d8 g16 fis g8 b,16 a b8 g'16 fis |
g8 g,16 a b8 cis d16 s
}
\emptyText
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c'' {
- \time 4/4;
- g4._"pointed" g8 g2 | g4 () g8 g g2 \bar "||";
- g4.._"double pointed" g16 g2 | g4 () g8 () g16 g g2 \bar "||"; }
+ \time 4/4
+ g4._"pointed" g8 g2 | g4 () g8 g g2 \bar "||"
+ g4.._"double pointed" g16 g2 | g4 () g8 () g16 g g2 \bar "||" }
@end lilypond
Alternatively note values may be subdivided by other ratios. Most common is
\property Voice.TextScript \set #'font-style = #'large
\emptyText
\notes\relative c'' {
- \time 4/4;
- \times 2/3 {g8_"triplets" g g} g4 g8 g g4 \bar "||";
- \times 2/5 {g8_"quintuplets" g g g g} g4 g8 g g4 \bar "||";
- \time 3/4;
+ \time 4/4
+ \times 2/3 {g8_"triplets" g g} g4 g8 g g4 \bar "||"
+ \times 2/5 {g8_"quintuplets" g g g g} g4 g8 g g4 \bar "||"
+ \time 3/4
\times 3/2 {g4_"duplets" g} |
- g4 g g \bar "||";
+ g4 g g \bar "||"
\times 6/4 {g8_"quadruplets" g g g} |
- g8 g g g g4 \bar "||";}
+ g8 g g g g4 \bar "||"}
@end lilypond
@
\emptyText
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c'' {
- c2._"pre-1850" b4\trill | c1 \bar "||";
- c2._"post-1850" b4\trill | c1 \bar "||";
+ c2._"pre-1850" b4\trill | c1 \bar "||"
+ c2._"post-1850" b4\trill | c1 \bar "||"
}
}
\notes\relative c'' {
\emptyText
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c'' {
- a4_"turn" b\turn c2 \bar "||";
- g4_"mordent" a b\mordent a \bar "||";
- e'4_"prall" d\prall c2 \bar "||";
+ a4_"turn" b\turn c2 \bar "||"
+ g4_"mordent" a b\mordent a \bar "||"
+ e'4_"prall" d\prall c2 \bar "||"
}
}
\notes\relative c'' {
\property Score.barNonAuto = ##t
\property Voice.TextScript \set #'font-style = #'large
\notes\relative c' {
- \key es \major;
+ \key es \major
es1_"e flat major" f g as bes c d es
- \bar "||"; s16
- \key es \major;
- c,1_"c minor" d es f g a! b! c \bar "||";
+ \bar "||" s16
+ \key es \major
+ c,1_"c minor" d es f g a! b! c \bar "||"
}
@end lilypond
@
@lilypond[13pt,eps]
-\key g \major;
-\time 4/4;
+\key g \major
+\time 4/4
\notes\relative c'' {
\repeat volta 2 {g4 g d' d | e e d2 | c4 c b b | a a g2 }
}
\emptyText
\property Score.barNonAuto = ##t
\property Lyrics.LyricText \set #'font-style = #'large
-%\property Lyrics.minVerticalAlign = 8
+%\property Lyrics.minVerticalAlign = #8
\addlyrics
\notes\relative c' {
c1 d e f g a b c }
@
@lilypond[13pt,eps]
-\key d \major;
-\time 4/4;
+\key d \major
+\time 4/4
\notes\relative c'' {
- \partial 8; a8 |
+ \partial 8 a8 |
d4-\staccato cis-\staccato b-\staccato cis-\staccato |
- d2. \bar "||"; }
+ d2. \bar "||" }
@end lilypond
@item staff
@lilypond[13pt,eps]
\emptyText
\property Voice.TextScript \set #'font-style = #'large
-\time 4/4;
+\time 4/4
\notes\relative c' {
- \partial 4;
+ \partial 4
d8 dis |
e c'4 e,8 c'4 e,8 c' ( | ) c2
}
@lilypond[13pt,eps]
\context GrandStaff <
\notes\relative c'' {
- \time 4/4;
- \key es \major;
- \clef treble;
+ \time 4/4
+ \key es \major
+ \clef treble
< \context Voice = rha {
\stemUp
es4 d c bes | bes }
}
\property Voice.TextScript \set #'font-style = #'large
\property Lyrics.LyricText \set #'font-style = #'Large
- \property Lyrics.minVerticalAlign = 6
+ \property Lyrics.minVerticalAlign = #6
\addlyrics
\notes\relative c' {
- \clef bass;
- \key es \major;
+ \clef bass
+ \key es \major
es8 c () c bes () bes as () as g16 f | es4
}
\context Lyrics \lyrics {
@lilypond[13pt,eps]
\context Staff {
- \time 3/4;
+ \time 3/4
\notes\relative c'' {
- \key g \major;
- d4 g,8 a b c | d4 g, g | e' c8 d e fis | g4 g, g \bar "|."; }
+ \key g \major
+ d4 g,8 a b c | d4 g, g | e' c8 d e fis | g4 g, g \bar "|." }
\transpose bes\relative c'' {
- \key g \major;
- d4 g,8 a b c | d4 g, g | e' c8 d e fis | g4 g, g \bar "|."; }
+ \key g \major
+ d4 g,8 a b c | d4 g, g | e' c8 d e fis | g4 g, g \bar "|." }
}
@end lilypond
@
@lilypond[13pt,eps]
-\key f \major;
-\time 4/4;
+\key f \major
+\time 4/4
\notes\relative c' {
- \partial 4; f4 | bes4. a8 bes4 c |
- bes () a g f | bes4. a8 bes4 c | f,2. \bar "||"; }
+ \partial 4 f4 | bes4. a8 bes4 c |
+ bes () a g f | bes4. a8 bes4 c | f,2. \bar "||" }
@end lilypond
@item voice
* Conversion tools:: Converting to lilypond source format.
* lilypond-book:: Interleaving text with music.
* Internals:: How it all works.
-* Literature:: additional reading
+* Literature:: Additional reading
+* Full Grob interface list:: Generated list of all Grob properties.
* Index of internals:(lilypond-internals). Auto generated detailed documentation.
* Index:: Unified index.
* Function Index:: Function index.
@mbinclude ly2dvi.itexi
@mbinclude convert-ly.itexi
@mbinclude lilypond-book.itely
-@mbinclude convertors.itely
+@mbinclude converters.itely
@mbinclude literature.itely
+@mbinclude interfaces.itexi
@c FIXME: Index has two alphabetically sorted lists @code vs plain?
@node Index
@subsection Environment variables
+@table @code
@item LANG
selects the language for the warning messages of Ly2dvi and LilyPond.
@end table
in using LilyPond as we have when hacking it.
This manual was written to help you learn LilyPond, but as you might
-imagine, we don't have much to learn about it. Therefore, we can't
-really judge whether the manual is clear for a newbie, but maybe you
-can! So, should you find any part of the manual vague or outdated,
-please tell us your suggestions: if you don't, we'll never know.
+imagine, we ourselves don't have much to learn about it. Therefore,
+we can't really judge whether the manual is clear for a newbie, but
+maybe you can! So, should you find any part of the manual vague or
+outdated, please tell us your suggestions: if you don't, we'll never
+know.
Han-Wen and Jan
@lilypond[]
\score {
\notes \relative c'' {
- a\longa a\breve \autoBeamOff
+ a\breve \autoBeamOff
a1 a2 a4 a8 a16 a32 a64 a64
r\longa r\breve
r1 r2 r4 r8 r16 r32 r64 r64
\paper {
\translator {
\StaffContext
- \remove "Clef_engraver";
- \remove "Staff_symbol_engraver";
- \remove "Time_signature_engraver";
- \consists "Pitch_squash_engraver";
+ \remove "Clef_engraver"
+ \remove "Staff_symbol_engraver"
+ \remove "Time_signature_engraver"
+ \consists "Pitch_squash_engraver"
}
}
}
@example
- \skip @var{duration} @code{;}
+ \skip @var{duration}
s@var{duration}
@end example
@cindex @code{\skip}
Changing the key signature is done with the @code{\key} command.
@example
- @code{\key} @var{pitch} @var{type} @code{;}
+ @code{\key} @var{pitch} @var{type}
@end example
@cindex @code{\minor}
The time signature is changed by the @code{\time} command. Syntax:
@example
- \time @var{numerator}@code{/}@var{denominator} @code{;}
+ \time @var{numerator}@code{/}@var{denominator}
@end example
Internally, this is a shortcut for doing
@example
@cindex repeat bars
@example
- \bar @var{bartype};
+ \bar @var{bartype}
@end example
This is a shortcut for doing
override default measure bars.
@code{whichBar} can also be set directly, using @code{\property} or
-@code{\bar ; }. These settings take precedence over automatic @code{whichBar}
+@code{\bar }. These settings take precedence over automatic @code{whichBar}
settings.
@code{Bar_engraver} creates @code{BarLine} grobs.
@lilypond[fragment,singleline,relative]
\property Voice.autoBeamSettings
\override #'(end * * * *) = #(make-moment 3 8)
- \time 12/8; c'8 c c c16 c c c c c [c c c c] c8 c c4
+ \time 12/8 c'8 c c c16 c c c c c [c c c c] c8 c c4
@end lilypond
It is not possible to specify beaming parameters that act differently in
@code{\)}.
@lilypond[fragment,verbatim,center,relative]
- \time 6/4; c''\((d)e f(e)\)d
+ \time 6/4 c''\((d)e f(e)\)d
@end lilypond
Typographically, the phrasing slur behaves almost exactly like a normal
}
>
\paper {
- linewidth = 5.875\in;
- indent = 0.0;
+ linewidth = 5.875\in
+ indent = 0.0
}
}
@end lilypond
@lilypond[fragment,verbatim]
\context Staff {
\relative c' {
- \partial 4;
+ \partial 4
\repeat volta 3 { e | c2 d2 | e2 f2 | }
\alternative { { g4 g g } { a | a a a a | b2. } }
}
@lilypond[fragment,relative ]
\context RhythmicStaff {
- \time 4/4;
+ \time 4/4
c4 e8 f g2 | r4 g r2 | g1:32 | r1 |
}
@end lilypond
\autochange Staff \context Voice = VA < \relative c' {
g4 a b c d r4 a g } > }
\context Staff = "down" {
- \clef bass;
+ \clef bass
s1*2
} > }
@end lilypond
\context PianoStaff <
\property PianoStaff.connectArpeggios = ##t
\context Voice = one { <c''\arpeggio e g c> }
- \context Voice = other { \clef bass; <c,,\arpeggio e g>}
+ \context Voice = other { \clef bass <c,,\arpeggio e g>}
>
@end lilypond
\translator Staff=two
b2 a
}
- \context Staff=two {\clef bass; \skip 1*2;}
+ \context Staff=two {\clef bass \skip 1*2 }
>
@end lilypond
@lilypond[verbatim,singleline]
\addlyrics \notes \relative c' {
- \time 7/4;
+ \time 7/4
\property Staff.automaticMelismata = ##t
d'2 c4 b2 a2
b2 c4 b4 () a4 g2 }
@lilypond[singleline,verbatim]
\score {
\addlyrics
- \notes \relative c'' \context Voice = duet { \time 3/4;
+ \notes \relative c'' \context Voice = duet { \time 3/4
g2 e4 a2 f4 g2. }
\lyrics \context Lyrics <
\context LyricsVoice = "duet-1" {
@cindex @code{Mark_engraver}
@example
- \mark @var{unsigned};
- \mark @var{string};
- \mark ;
+ \mark @var{unsigned}
+ \mark @var{string}
+ \mark \default
@end example
With this command, you can print a rehearsal mark above the system. You
@lilypond[fragment,verbatim]
\relative c'' {
- c1 \mark "A2";
- c1 \mark ;
- c1 \mark ;
- c1 \mark "12";
- c1 \mark #'(music "scripts-segno") ;
+ c1 \mark "A2"
+ c1 \mark \default
+ c1 \mark \default
+ c1 \mark "12"
+ c1 \mark #'(music "scripts-segno")
c1
}
@end lilypond
\property Staff.instrument = "ploink " { c''4 } }
\paper {
\translator { \StaffContext
- \consists "Instrument_name_engraver"; } } }
+ \consists "Instrument_name_engraver" } } }
@end lilypond
This requires that you add the @code{Instrument_name_engraver} to the
c'' 4 }
\paper {
\translator { \StaffContext
- \consists "Instrument_name_engraver"; } } }
+ \consists "Instrument_name_engraver" } } }
@end lilypond
@lilypond[fragment,verbatim]
\context Staff {
- \clef "F";
- { \key e \major; c d e f }
- \clef "G";
- \transpose des'' { \key e \major; c d e f }
- \transpose cis'' { \key e \major; c d e f }
+ \clef "F"
+ { \key e \major c d e f }
+ \clef "G"
+ \transpose des'' { \key e \major c d e f }
+ \transpose cis'' { \key e \major c d e f }
}
@end lilypond
automatically.
@lilypond[fragment,verbatim]
- \time 3/4; R2.*2 \property Score.skipBars = ##t R2.*17 R2.*4
+ \time 3/4 R2.*2 \property Score.skipBars = ##t R2.*17 R2.*4
@end lilypond
Currently, there is no way to condense multiple rests into a single
\context Staff = SB { c4 d e f \break R1 }
>
\paper {
- linewidth = 6.\cm ;
+ linewidth = 6.\cm
\translator { \HaraKiriStaffContext }
}
}
\paper {
\translator {
\StaffContext
- \consists Custos_engraver;
- Custos \override #'style = #'mensural;
+ \consists Custos_engraver
+ Custos \override #'style = #'mensural
}
}
}
\paper @{
\translator @{
\StaffContext
- \consists Custos_engraver;
- Custos \override #'style = #'mensural;
+ \consists Custos_engraver
+ Custos \override #'style = #'mensural
@}
@}
@end example
a1^#`((rows (font-relative-size . -1)) ,dotted-eight-note " = 64")
}
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator{
\ScoreContext
TextScript \override #'font-shape = #'upright
\score {
\notes\relative c'' {
- \time 6/4;
+ \time 6/4
a b c b \blanknotes c \unblanknotes d
}
}
Rhythm exercise: make staff invisible and squash pitches:
@lilypond[singleline,verbatim]
\score {
- \notes { \time 3/4; c4 c c8 c | c4 c c8 c }
+ \notes { \time 3/4 c4 c c8 c | c4 c c8 c }
\paper {
\translator {
\StaffContext
- \remove Staff_symbol_engraver;
- \consists Pitch_squash_engraver;
- \remove Clef_engraver;
+ \remove Staff_symbol_engraver
+ \consists Pitch_squash_engraver
+ \remove Clef_engraver
}
}
}
\translator {
\StaffContext
whichBar = #""
- \remove "Time_signature_engraver";
+ \remove "Time_signature_engraver"
}
}
}
s2
a'1
}
- \paper { linewidth = 70 * \staffspace; }
+ \paper { linewidth = 70*\staffspace }
}
@end lilypond
where each of the items is one of
@itemize @bullet
- @item An assignment. The assignment must be terminated by a
- semicolon.
+ @item An assignment.
@item A context definition. See @ref{Notation Contexts} for
more information on context definitions.
this by specifying @code{\break}. This will force a line break at this
point. Do remember that line breaks can only occur at places where there
are barlines. If you want to have a line break where there is no
-barline, you can force an invisible barline by entering @code{\bar "";}.
+barline, you can force an invisible barline by entering @code{\bar ""}.
Similarly, @code{\noBreak} forbids a line break at a certain point.
c'4 c'4 }
\paper {
\translator { \StaffContext
- \remove Clef_engraver;
+ \remove Clef_engraver
} } }
@end lilypond
This is an example:
@example
\translator @code{
- \type "Engraver_group_engraver";
- \name "SimpleStaff";
- \alias "Staff";
- \consists "Staff_symbol_engraver";
- \consists "Note_head_engraver";
- \consistsend "Axis_group_engraver";
+ \type "Engraver_group_engraver"
+ \name "SimpleStaff"
+ \alias "Staff"
+ \consists "Staff_symbol_engraver"
+ \consists "Note_head_engraver"
+ \consistsend "Axis_group_engraver"
}@
@end example
Other modifiers are
@itemize @bullet
- @item @code{\alias} @var{alternate-name} @code{;}
+ @item @code{\alias} @var{alternate-name}
This specifies a different name. In the above example,
@code{\property Staff.X = Y} will also work on @code{SimpleStaff}s
- @item @code{\consistsend} @var{engravername} @code{;}
+ @item @code{\consistsend} @var{engravername}
Analogous to @code{\consists}, but makes sure that
@var{engravername} is always added to the end of the list of
engravers.
removes engravers. This command is usually not needed for
end-users.
- @item @code{\accepts} @var{contextname} @code{;}
+ @item @code{\accepts} @var{contextname}
Add @var{contextname} to the list of context this context can
contain. The first listed context is the context to create by
default.
completeness, but is never used in practice.
- @item @code{\name} @var{contextname} @code{;}
+ @item @code{\name} @var{contextname}
This sets name of the context, e.g. @code{Staff}, @code{Voice}. If
the name is not specified, the translator won't do anything.
@end itemize
The syntax is
@example
- \header @{ @var{key1} = @var{val1};
- @var{key2} = @var{val2}; @dots{} @}
+ \header @{ @var{key1} = @var{val1}
+ @var{key2} = @var{val2} @dots{} @}
@end example
It is customary to put the @code{\header} at the top of the file.
the input-types listed above. Identifier assignments can appear at top
level in the LilyPond file, but also in @code{\paper} blocks.
-Semicolons are forbidden after top level assignments, but mandatory in
-other places. The rules about semicolons and assignments are very
-confusing, but when LilyPond input evolves more towards Scheme, we hope
-that this problem will grow smaller.
-
An identifier can be created with any string for its name, but you will
only be able to refer to identifiers whose names begin with a letter,
being entirely alphabetical. It is impossible to refer to an identifier
@itemize @bullet
@item The assignment
- @example
+@example
foo = bar
@end example
-
- can be interpreted as making a string identifier @code{\foo}
+ is interpreted as the string identifier assignment. However,
+it can also be interpreted as making a string identifier @code{\foo}
containing @code{"bar"}, or a music identifier @code{\foo}
- containing the syllable `bar'.
-
- @item The assignment
-
- @example
-foo = -6
-@end example
-
- can be interpreted as making an integer identifier
- containing -6, or a Request identifier containing the
- fingering `6' (with neutral direction).
+ containing the syllable `bar'.
@item If you do a nested repeat like
@code{\alternative} belongs. This is the classic if-then-else
dilemma. It may be solved by using braces.
- @item (an as yet unidentified ambiguity :-)
+ @item The parser is not sophisticated enough to distinguish at the
+right time between
+ @code{c4*2 / 3 } and @code{c4*2 / g} (in chord mode).
+
+[checkme]
+
@end itemize
@subsection Version information
@cindex @code{\version}
@example
- \version @var{string} ;
+ \version @var{string}
@end example
Specify the version of LilyPond that a file was written for. The
@c TODO: LilyPond Lilypond lilypond
+FIXME: choose one of: notation context/interpretation context.
+
+
@node Tutorial
@chapter Tutorial
* More movements ::
* A piano excerpt:: Piano music
* An orchestral score::
-* Part extraction::
+* Other ways to run LilyPond::
* Latex and texinfo integration::
* end of tutorial:: The end
@end menu
@node Running LilyPond
@section Running LilyPond
-[FIXME refman: describe all programs involved in one list.]
-
Before we dive into describing the input language of LilyPond, we first
show you through the procedure for getting notes on your screen and out
of your printer.
}
@end lilypond
-When you're satisfied with the result, you can print the PostScript
-file.
+When you're satisfied with the result, you can print the
+PostScript file:
-@cindex PostScript
-@cindex Printing output
-@cindex .ps
-@cindex GhostScript
-@cindex @code{lpr}
-PostScript is a page description language, similar to PDF. Some printers
-can understand a postscript file directly, but the cheaper ones need the
-intervention of GhostScript, an emulator that runs PostScript on your
-computer instead of your printer. Most Linux distributions nowadays have
-GhostScript running ``in the background'', so any configured printer
-will act as a PostScript printer. Assuming this, the following command
-will print the file
@example
lpr test.ps
@end example
-If this does not make your printer produce a page of music, then you
-should look into installing and configuring ghostscript. Refer to
-GhostScript's website at @uref{http://www.ghostscript.com}.
-
-There are three other routes. Firstly, there is a script called
-@code{lilypond-book}, that allows you to freely mix LilyPond input with
-Texinfo or LaTeX input. For example, this manual was written using
-@code{lilypond-book}. It is discussed in @ref{lilypond-book}.
-
-@c FIXME: ly2dvi option?
-Secondly, you can generate PostScript directly. This is useful if you
-can not or do not want to run @TeX{} on your system. To obtain direct
-PostScript output, invoke LilyPond as follows:
-@cindex PostScript output
-@example
-lilypond -f ps test.ly
-@end example
-You have to set some environment variables to view or print this
-output. More information can be found in @ref{Invoking
-LilyPond}.
-
-@c FIXME: ly2dvi option?
-Thirdly, if you want to do special things with your output, you can run
-invoke lilypond directly:
-@example
-lilypond test.ly
-@end example
-to produce plain @TeX{}@footnote{@TeX{} is a text-typesetting system
-that is especially suited for typesetting mathematics.} output. Note
-that you must run @TeX{} on the resulting @file{test.tex}, ie, not
-LaTeX.
-@cindex @TeX{}
-
+If this does not make your printer produce a page of music, you should
+look into installing and configuring ghostscript. Refer to
+GhostScript's website at @uref{http://www.ghostscript.com}.
+@cindex GhostScript
+@cindex @code{lpr}
+@cindex Printing output
+@cindex PostScript
+@cindex .ps
@unnumberedsubsec Windows
@strong{[TODO]}
-* setting of env vars (TFMINPUTS,MFINPUTS,TEXINPUTS)
+* setting of env vars (TFMFONTS,MFINPUTS,TEXINPUTS)
* dvi viewer doesn't display postscript
@cindex Bach, Johann Sebastian
@lilypond[verbatim]
-% text preceded by a percent sign is a comment
+% all text after a percent sign is a comment
% and is ignored by Lilypond
\include "paper16.ly"
\score {
\notes
- \relative c'' \sequential{
- \time 3/4;
- \key g \major;
+ \relative c'' \sequential {
+ \time 3/4
+ \key g \major
\repeat "volta" 2 {
d4 g,8 a b c d4 g, g |
e'4 c8 d e fis g4 g, g |
- c4 d8()c b a( )b4 c8 b a g |
+ c4 d8( )c b a( )b4 c8 b a g |
a4 [b8 a] [g fis] g2. |
}
g4 fis e |
fis a, r8 cis8
d2.-\fermata
- \bar "|.";
+ \bar "|."
}
\paper {
% standard settings are too wide for a book
- linewidth = 14.0 \cm;
+ linewidth = 14.0 \cm
}
}
@end lilypond
We will analyse the input, line by line.
@separate
@example
- % text preceded by a percent sign is a comment
- % and is ignored by LilyPond
+ % all text after a percent sign is a comment
+ % and is ignored by Lilypond
@end example
-The percent sign, @code{%}, introduces a line comment. If you want to
-make a comment that use several lines, you can use block comments. These
-are delimited by @code{%@{} and @code{%@}}
+The percent sign, @code{%}, introduces a line comment. You can also
+comment out a block of several lines, by enclosing them in
+@code{%@{} and @code{%@}}.
@cindex comment
@cindex block comment
@cindex line comment
\score @{
@end example
-Music is printed by combining a chunk of music with directions for
+Music is printed by combining a piece of music with directions for
outputting it. This combination is formed in the @code{\score} block.
@separate
@example
\notes
@end example
- This makes LilyPond ready for accepting notes.
+Prepare LilyPond for accepting notes.
+@cindex octaves, choosing
+@cindex pitch
@separate
@example
\relative c''
@end example
-
-@cindex octaves, choosing
-@cindex pitch
-As we will see, each note is described by its note name, duration,
-octave and possibly a chromatic alteration. In this scheme, the
-octave is indicated by using raised quotes (@code{'}) and ``lowered''
-quotes (commas: @code{,}). The central C is denoted by @code{c'}.
-The C one octave higher is @code{c''}. One and two octaves below
-the central C is denoted by @code{c} and @code{c,} respectively.
-
@cindex relative
-Even though a piece of music often spans a range of several octaves,
-it mostly moves in small intervals. LilyPond has a special entry
-mode to save typing in this situation. In this ``relative'' octave
-mode, octaves of notes
-without quotes are chosen such that a note is as close as possible
-(graphically, on the staff) to the preceding note. If you add a
-high-quote an extra octave is added. The lowered quote (a comma) will
-subtract an extra octave. Because the first note has no predecessor,
+As we will see, each note is described by its note name, duration,
+octave and possibly a chromatic alteration. In this setup, the octave
+is indicated by using high quotes (@code{'}) and ``lowered quotes''
+(commas: @code{,}). The central C is denoted by @code{c'}. The C one
+octave higher is @code{c''}. One and two octaves below the central C is
+denoted by @code{c} and @code{c,} respectively.
+
+Even though a piece of music often spans a range of several octaves, it
+mostly moves in small intervals. LilyPond has a special entry mode to
+save typing in this situation. In this ``relative'' octave mode,
+octaves of notes without quotes are chosen such that a note is as close
+as possible (graphically, on the staff) to the preceding note. If you
+add a high-quote an extra octave is added. A lowered quote (a comma)
+will subtract an extra octave.
+
+Because the first note has no predecessor,
you have to give the (absolute) pitch of the note to start with.
@separate
@example
@separate
@example
- \time 3/4;
+ \time 3/4
@end example
@cindex time signature, setting
@cindex @code{\time}
- This command sets or changes the time signature of the current piece:
-a 3/4 sign is printed. The time signature setting is also used to generate
-bar lines at the right spots.
+Set (or change) the time signature of the current piece: a 3/4 sign is
+printed. The time signature setting is also used to generate bar lines
+at the right spots.
@separate
@example
- \key g \major;
+ \key g \major
@end example
@cindex key signature, setting
@cindex @code{\key}
- This command changes the current key signature to G-major. Although this
-command comes after the @code{\time} command, the key signature comes
-before the time signature in the output; LilyPond knows about music
-typesetting conventions.
+Set (or change) the current key signature to G-major. Although in this
+example, the @code{\key} command happened to be entered after the
+@code{\time} command, in the output the time signature will be printed
+after the key signature; LilyPond knows about music typesetting
+conventions.
@separate
@example
\repeat "volta" 2
@end example
- This command tells LilyPond that the following piece of music is
-played twice. The first argument indicates the type of repeat. In this
-case, @code{"volta"} means that prima volta/secunda volta brackets are
-used for the alternative endings---if there were any.
+The following piece of music is played twice. The first argument
+indicates the type of repeat. In this case, @code{"volta"} means that
+prima volta/secunda volta brackets are used for the alternative
+endings---if there were any.
@separate
@example
@separate
@example
- d4
+ d4 g,8
@end example
- This is a note with pitch @code{d} (determined up to the octave). The
-relative music was started with a @code{c''}, so the real pitch of this
-note is @code{d''}. A number designates the duration of the note, so
-the @code{4} here represents a quarter note.
+Two notes. The first note is a quarter note with relative pitch
+@code{d}. The relative music was started with a @code{c''}, so the real
+pitch of this note is @code{d''}. The duration of a note is designated
+by a number; the @code{4} here represents a quarter note.
+
+The second note is an eight note with relative pitch @code{g,}. The
+pitch is taken relative to the previous @code{d''}, making this
+note have real pitch @code{g'}. The @code{8} represents an eight note.
@separate
@example
a b
@end example
-These are notes with pitch @code{a} and @code{b}. Because their
-duration is the same as the @code{g}, there is no need to enter the
+Two more notes, with pitch @code{a} and @code{b}. Because their
+duration is the same as the @code{g,8}, there is no need to enter the
duration, but you may enter it anyway, i.e., @code{a4 b4}
@separate
@example
@cindex bar check
@cindex @code{|}
@cindex errors, finding
- Three more notes. The @code{|} character is a `bar check'. When
-processing the music, LilyPond will verify that bar checks are found at
-the start of a measure. This can help you track down typing errors.
+Three more notes. The @code{|} character is a ``bar check''. LilyPond
+will verify that bar checks are found at the start of a measure. This can
+help you track down typing errors.
@cindex alteration, chromatic
@cindex chromatic alteration
-So far, no notes were chromatically altered. Here is the first one
-that is: @code{fis}. Lilypond by default uses Dutch note names, and
-``Fis'' is the Dutch note name for ``F sharp''. However, there is no
-sharp sign in the output. The program keeps track of key signatures,
-and will only print accidentals if they are needed.
@separate
@example
c8 d e fis
-
+
@end example
-LilyPond guesses were beams can be added to eighth and shorter notes.
-In this case, a beam is added over the 4 eights.
+So far, no notes were chromatically altered. Here is the first one that
+is: @code{fis}. Lilypond by default uses Dutch@footnote{Note names are
+available in several languages, but we find the Dutch names quite
+convenient.} note names, and ``Fis'' is the Dutch note name for ``F
+sharp''. However, there is no sharp sign in the output. The program
+keeps track of key signatures, and will only print accidentals if they
+are needed.
+
+For groups of eighth notes and shorter, LilyPond can determine how the
+notes should form a beam. In this case, the 4 eights are automatically
+printed as a beam.
@separate
@example
c4 d8( )c b a( )b4 c8 b a g |
@end example
- The next line shows how to make a slur: the beginning and ending note
-of the slur is marked with an opening and closing parenthesis
-respectively. In the line shown above, this is done for two slurs.
-Slur markers (parentheses) are entered between the slurred notes.
+The beginning and ending notes of a slur are marked with parentheses,
+@code{(} and @code{)} for start and end respectively. The line above
+indicates two slurs. These slur markers (parentheses) are entered
+between the slurred notes.
@separate
@example
a4 [b8 a] [g fis]
@end example
-Automatic beaming can be overridden by inserting beam marks
-(brackets). Brackets are put around the notes you want beamed.
+Automatic beaming can be overridden by inserting beam marks, @code{[}
+and @code{]}. These beam markers (brackets) are put around the notes
+you want beamed.
@separate
@example
@}
@end example
- This ends the sequential music to be repeated. LilyPond will typeset
-a repeat bar.
+The end of the sequential music to be repeated. LilyPond will typeset a
+repeat bar.
@separate
@example
cis'4 b8 cis a4 |
@end example
- This line shows that Lily will print an accidental if necessary:
-the first C sharp of the bar will be printed with an accidental,
-the second one without.
+Accidentals are printed whenever necessary: the first C sharp of the bar
+will be printed with an accidental, the second one without.
@separate
@example
d2.-\fermata
@end example
- All articulations have a verbose form, like @code{\fermata}. The
+All articulations have a verbose form, like @code{\fermata}. The
command @code{\fermata} is not part of the core of the language, but it
is a shorthand for a more complicated description of a fermata symbol.
@code{\fermata} names that description and is therefore called an
@cindex @code{\fermata}
@separate
@example
- \bar "|.";
-@end example
-@separate
-@example
+ \bar "|."
@}
@end example
-Here the music ends.
-
+Here the music ends. LilyPond does not automatically typeset and end
+bar, we must explicitely request one, using @code{"|."}.
+@c FIXME: Why not?! better to override \bar "" if not wanted?
@separate
@example
\paper @{
- linewidth = 14.0\cm;
+ linewidth = 14.0\cm
@}
@end example
-This specifies how the entered music should be converted to notation
-output. Most of the details of the conversion (font sizes, dimensions,
-etc.) have
-been taken care of, but to fit the output in this document, it has
-to be narrower. We do this by setting the line width to 14 centimeters
-(approximately 5.5 inches).
+The @code{\paper} block specifies how entered music should be converted
+to notation output. Most of the details of the conversion (font sizes,
+dimensions, etc.) have been taken care of, but to fit the output in this
+document, it has to be narrower. We do this by setting the line width
+to 14 centimeters (approximately 5.5 inches).
@separate
@example
@example
\header @{
- title = "The river is flowing";
- composer = "Traditional";
+ title = "The river is flowing"
+ composer = "Traditional"
@}
\include "paper16.ly"
melody = \notes \relative c' @{
- \partial 8;
- \key c \minor;
+ \partial 8
+ \key c \minor
g8 |
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
+ \bar "|."
@}
text = \lyrics @{
\score @{
\simultaneous @{
-% \accompaniment
+ %\accompaniment
\context ChordNames \accompaniment
\addlyrics
@}
\context Lyrics \text
@}
- \midi @{ \tempo 4=72;@}
- \paper @{ linewidth = 10.0\cm; @}
+ \midi @{ \tempo 4=72 @}
+ \paper @{ linewidth = 10.0\cm @}
@}
@end example
@lilypond[center]
\header {
- title = "The river is flowing";
- composer = "Traditional";
+ title = "The river is flowing"
+ composer = "Traditional"
}
\include "paper16.ly"
melody = \notes \relative c' {
- \partial 8;
- \key c \minor;
+ \partial 8
+ \key c \minor
g8 |
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
+ \bar "|."
}
text = \lyrics {
\score {
\simultaneous {
-% \accompaniment
+ %\accompaniment
\context ChordNames \accompaniment
\addlyrics
}
\context Lyrics \text
}
- \midi { \tempo 4=72;}
- \paper { linewidth = 10.0\cm; }
+ \midi { \tempo 4=72 }
+ \paper { linewidth = 10.0\cm }
}
@end lilypond
@separate
@example
- title = "The river is flowing";
- composer = "Traditional (?)";
+ title = "The river is flowing"
+ composer = "Traditional (?)"
@end example
@cindex assignments
@cindex identifier assignment
@separate
@example
- \partial 8;
+ \partial 8
@end example
@cindex @code{\partial}
The piece starts with an anacrusis of one eighth.
@separate
@example
- \key c \minor;
+ \key c \minor
@end example
The key is C minor: we have three flats.
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
+ \bar "|."
@end example
@end example
This ends the definition of @code{melody}. Note that there are no
semicolons after assignments at the top level.
+
+[FIXME: no longer true for 146?]
+
@separate
@example
@end example
-This is the argument of @code{\addlyrics}. We instantiate a
-@code{Staff} context explicitly: should you chose to remove the comment
-before the ``note heads'' version of the accompaniment, the
-accompaniment will be on a nameless staff. The melody has to be on a
-different staff as the accompaniment. This is accomplished by giving
-the melody staff a different name.
+The second argument of @code{\addlyrics} is the melody. We instantiate
+a @code{Staff} context explicitly: should you choose to remove the
+comment before the ``note heads'' version of the accompaniment, the
+accompaniment will be on a nameless staff. The melody has to be on
+staff different from the accompaniment. This is accomplished by giving
+the melody and accompaniment staffs different names.
@separate
@example
@cindex context variables
@cindex setting context variables
An interpretation context has variables, called properties, that tune
-its behaviour. One of
-the variables is @code{noAutoBeaming}. If set to @code{##t}, which is
-the boolean value @var{true}, LilyPond will not try to put automatic beaming
-on the current staff.
-
+its behaviour. One of the variables is @code{noAutoBeaming}. Setting
+this Staff's property to @code{##t}, which is the boolean value @var{true},
+turns the automatic beaming mechanism off for the current staff.
@cindex GUILE
@cindex Scheme
@cindex accessing Scheme
@separate
@example
- @}
-
-@end example
-This ends @code{\simultaneous}.
-@separate
-@example
-
- \midi @{ \tempo 4=72;@}
+ \midi @{ \tempo 4=72@}
@end example
MIDI (Musical Instrument Digital Interface) is a standard for
@separate
@example
- \paper @{ linewidth = 10.0\cm; @}
+ \paper @{ linewidth = 10.0\cm @}
@end example
We also want notation output. The linewidth is short so the piece
@node More movements
@section More movements
+[FIXME: merge here with, or move this to: Other ways to run LilyPond]
+
You probably ran @file{ly2dvi} on the last example, and ended up with a
viewable @file{.dvi} file. However, between there are a few steps of
which LilyPond is only one. To enhance your understanding of what's
For example, the following file (@file{miniatures.ly})
@example
- \version "1.3.124";
- \header @{ title = "Two miniatures"; @}
-
- #(set! point-and-click line-column-location)
-
- \paper @{
- linewidth = -1.0; @}
+\version "1.3.124"
+\header @{ title = "Two miniatures" @}
- \score @{
+#(set! point-and-click line-column-location)
+
+\paper @{ linewidth = -1.0 @}
+
+\score @{
\notes @{ c'4 d'4 @}
\header @{
- opus = "Opus 1.";
- piece = "Up"; @}
- @}
- \score @{
- \notes @{ d'4 c'4 @}
+ opus = "Opus 1."
+ piece = "Up" @}
+@}
+\score @{
+ \notes @{ d'4 c'4 @}
\header @{
- opus = "Opus 2.";
- piece = "Down"; @}
- @}
+ opus = "Opus 2."
+ piece = "Down" @}
+@}
@end example
The titling in this manual was not generated by ly2dvi, so we can't
@lilypond
\score {
\notes { c'4 d'4 }
- \paper {
- linewidth = -1.0; }
+ \paper { linewidth = -1.0 }
}
@end lilypond
@flushright
@lilypond
\score {
\notes { d'4 c'4 }
- \paper {
- linewidth = -1.0; }
+ \paper { linewidth = -1.0 }
}
@end lilypond
@separate
@example
-\version "1.3.124";
+\version "1.3.124"
@end example
Lilypond and its language are still under development, and occasionally,
details of the syntax are changed. This fragment indicates for which
@separate
@example
- \header @{ title = "Two miniatures"; @}
+ \header @{ title = "Two miniatures" @}
@end example
This sets the titling information for the entire file.
#(set! point-and-click line-column-location)
@end example
-This is Scheme code. It sets the variable @code{point-and-click} to the
-value @var{line-column-location} (which itself is a Scheme procedure).
+This piece of Scheme code sets the Scheme variable
+@code{point-and-click} to the value @var{line-column-location} (which
+itself is a Scheme procedure).
Editing input files can be quite complicated if you're working with
large files: if you're digitizing existing music, you have to
synchronize the .ly file, the sheet music on your lap and the sheet
music on the screen. The point-and-click mechanism makes it easy to
find the origin of an error in the .ly file: when you view the file with
-Xdvi and click on a note , your editor will jump to the spot where that
-note was entered. More information is in @ref{Point and click}
+Xdvi and click on a note, your editor will jump to the spot where that
+note was entered. For more information, see @ref{Point and click}.
@separate
@example
@separate
@example
- linewidth = -1.0; @}
+ linewidth = -1.0 @}
@end example
within each score, are used for the titling of each movement.
@separate
@example
- opus = "Opus 1.";
- piece = "Up"; @}
+ opus = "Opus 1."
+ piece = "Up" @}
@end example
For example, the Opus number is put at the right, and the piece string
will be at the left.
@node A piano excerpt
@section A piano excerpt
-Our third subject is a piece of piano music. The fragment in the input
+Our fourth subject is a piece of piano music. The fragment in the input
file is a piano reduction of the G major Sinfonia by Giovanni Battista
Sammartini. It was composed around 1740. It's in the source package
under the name @file{sammartini.ly}.
@lilypond[verbatim]
-\include "paper16.ly";
+\include "paper16.ly"
stemDown = \property Voice.Stem \override #'direction = #-1
stemUp = \property Voice.Stem \override #'direction = #1
stemBoth = \property Voice.Stem \revert #'direction
viola = \notes \relative c' \context Voice = viola {
- <c4-\f-\arpeggio g' c>
- \stemDown g'8. b,16
- s1 s2. r4
- g
+ <c4-\f-\arpeggio g' c>
+ \stemDown g'8. b,16
+ s1 s2. r4
+ g
}
oboes = \notes \relative c'' \context Voice = oboe {
- \stemUp s4 g8. b,16 c8 r <e'8.^\p g> <f16 a>
- \grace <e8( g> <d4 )f> <c2 e> \times 2/3 { <d8 \< f> <e g> <f a> }
- <
- { \times 2/3 { a8 g c } \! c2 }
- \context Voice = oboeTwo {
- \stemDown
- \grace {
- \property Grace.Stem \override #'direction = #-1
- [f,16 g] }
- f8 e e2
- } >
- \stemBoth
- \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
- [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r |
- [<c16( e> < )e8. g>] <c8 e,>
+ \stemUp s4 g8. b,16 c8 r <e'8.^\p g> <f16 a>
+ \grace <e8( g> <d4 )f> <c2 e>
+ \times 2/3 { <d8 \< f> <e g> <f a> }
+ <
+ { \times 2/3 { a8 g c } \! c2 }
+ \context Voice = oboeTwo {
+ \stemDown
+ \grace {
+ \property Grace.Stem \override #'direction = #-1
+ [f,16 g] }
+ f8 e e2
+ }
+ >
+ \stemBoth
+ \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
+ [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r |
+ [<c16( e> < )e8. g>] <c8 e,>
}
-hoomPah = \repeat unfold 8
- \notes \transpose c' { \stemUp c8 \stemBoth \stemDown c'8 \stemBoth }
+hoomPah = \repeat unfold 8 \notes
+ \transpose c' { \stemUp c8 \stemBoth \stemDown c'8 \stemBoth }
bassvoices = \notes \relative c' {
- c4 g8. b,16
- \autochange Staff \hoomPah
- \translator Staff = down
- \stemDown [c8 c'8] r4
- <g d'> r4
- < {\stemUp r2 <e4 c'> <c8 g'> }
- \context Voice = reallyLow {\stemDown g2 ~ | g4 c8 } >
+ c4 g8. b,16
+ \autochange Staff \hoomPah
+ \translator Staff = down
+ \stemDown [c8 c'8] r4
+ <g d'> r4
+ < {\stemUp r2 <e4 c'> <c8 g'> }
+ \context Voice = reallyLow {\stemDown g2 ~ | g4 c8 } >
}
\score {
- \context PianoStaff \notes <
- \context Staff = up < \time 2/2;
- \viola
- \oboes
- >
- \context Staff = down < \time 2/2; \clef bass;
- \bassvoices
- >
+ \context PianoStaff \notes <
+ \context Staff = up < \time 2/2
+ \viola
+ \oboes
>
- \midi { }
- \paper {
- indent = 0.0;
- linewidth = 15.0 \cm; }
+ \context Staff = down < \time 2/2 \clef bass
+ \bassvoices
+ >
+ >
+ \midi { }
+ \paper {
+ indent = 0.0
+ linewidth = 15.0 \cm }
}
@end lilypond
-If it looks like incomprehensible gibberish to you, then you are right.
+If this looks like incomprehensible gibberish to you, you are right.
This example has been doctored to have as many quirks as possible.
-@separate
-@example
- stemDown = \property Voice.Stem \override #'direction = #-1
-@end example
-
-As you can see, this example features more voices on one staff. To make
-room for those voices, their notes have to be stemmed in opposite
-directions. These are the commands to make that happen.
+As you can see, this example features multiple voices on one staff. To
+make room for those voices, their notes have to be stemmed in opposite
+directions.
Printed symbols are internally represented by so-called Graphical
Objects (more colloquially: Grobs). These statements concern the
grob, etc. The initial values of these settings are set in the Scheme
file @file{scm/grob-description.scm}.
-This statement adds a setting for all Stem grobs in the current
-Voice: @code{direction} is set to @code{-1}, which encodes down. The
-setting remains in effect until it is reverted.
+@separate
+@example
+ stemDown = \property Voice.Stem \override #'direction = #-1
+@end example
+
+Set a proprerty for all Stem grobs in the current Voice:
+@code{direction} is set to @code{-1}, which encodes down. The setting
+remains in effect until it is reverted.
@separate
@example
\property Voice.Stem \revert #'direction
@end example
-This statement reverts the old setting. If you do this, the effect of
-precisely one @code{\stemDown} or @code{\stemUp} is neutralised.
+Revert the to the previous setting. The effect of precisely one
+@code{\stemDown} or @code{\stemUp} is neutralised.
LilyPond includes the identifiers @code{\stemUp}, @code{\stemDown} along
arpeggio are attached to a note, so here we attach them to the first
note.
-@code{\arpeggio} draws an vertical wavy line before the chord,
-signifying an arpeggio.
+@code{\arpeggio} typesets an arpeggio sign (a wavy vertical line) before
+the chord.
@separate
@example
@cindex transposing
@cindex relative mode and transposing
-Transposing can be done with @code{\transpose}. It takes two arguments;
+Transposing can be done with @code{\transpose}. It takes two arguments
the first specifies what central C should be transposed to. The second
is the to-be-transposed music. As you can see, in this case, the
transposition has no effect, as central C stays at central C.
Voices can switch between staffs. The easiest way to get this, is to use
@code{\autochange}. This command looks at the pitch of each note, and if
necessary, will cross to the other staff. For this to work, the two
-staffs must be called @code{"up"} and @code{"down"}.
+staffs must be called @code{"up"} and @code{"down"}.
@separate
@example
\translator Staff = down
@end example
@cindex staff switch
@cindex cross staff voice
-The rest of this melody must be in the lower staff, so we do a manual
-staff switch here.
+We want the remaining part of this melody on the lower staff, so we do a
+manual staff switch here.
@separate
context is called @code{PianoStaff}.
@separate
@example
-\context Staff = bottom < \time 2/2; \clef bass;
+\context Staff = bottom < \time 2/2 \clef bass
@end example
The bottom staff must have a different clef.
@separate
@example
-indent = 0.0;
+indent = 0.0
@end example
To make some more room on the line, the first (in this case the only)
line is not indented. The line still looks very cramped, but that is due
* Simple part combining in a Hymn
@end ignore
+
@node An orchestral score
@section An orchestral score
-[explain why declarative nature of lily makes making scores rel. easy]
+@menu
+* The full score::
+* Extracting an individual part::
+@end menu
+
+
+Our last two examples show a way to setup the music for an orchestral
+score. When typesetting a piece for several instruments, you'll want to
+create a conductor's full score, alongside several individual parts.
-We will not go through the
-input line by line, but only indicate and explain the new elements.
+LilyPond is well suited for this task. We will declare the music for
+each instrument individually, giving the music of each instrument its
+own name. These pieces of music are then combined in different
+@code{\score} blocks to produce different combinations of the score.
This orchestral score example consists of three input files. In the
first file, @file{os-music.ly}, we define the music for all instruments.
This file will be used both for producing the score and the separate
-parts. If you run lilypond on this file, no output will be produced.
+parts.
+If you were to run lilypond on this file, no printable output would be
+produced.
@example
% os-music.ly
\header @{
- title = "Zo, goed lieverd?";
- subtitle = "How's, this babe?";
- composer = "JCN";
- opus = "1";
- piece = "Laid back";
+ title = "Zo, goed lieverd?"
+ subtitle = "How's, this babe?"
+ composer = "JCN"
+ opus = "1"
+ piece = "Laid back"
@}
global = @{
- \time 2/4;
- \skip 2*4; \bar "|.";
+ \time 2/4
+ \skip 2*4 \bar "|."
@}
-Key = \notes \key as \major;
+Key = \notes \key as \major
flautoI = \notes\relative c'' @{
f8 g f g f g f g
bes as bes as bes as bes as
as8 bes as bes R1 d4 ~ d
@}
tromboI = \notes\relative c'' @{
- c4. c8 c8 c4. es4 R1*1/2 es4
+ c4. c8 c8 c4. es4 r as, r
@}
tromboII = \notes\relative c'' @{
as4. as8 as8 as4. R1*1/2 as4 es'
@}
@end example
-Things to note here are the definition of @code{\global} where we define
-the time signature, and set the end bar. And the separate definition of
-@code{\Key} that we will use for all staffs except those for transposing
-instruments.
+We will not go through the input line by line, but only indicate and
+explain the new elements.
+
+
+@separate
+@example
+global = @{
+ \time 2/4
+ \skip 2*4 \bar "|.";
+@}
+@end example
+
+Declare setting to be used globally. The @code{\skip} command produces
+no output, but moves forward in time: in this case, the duration of a
+half note (@code{2}), and that four times (@code{*4}). This brings us
+to the end of the piece, and we can set the end bar.
+
+@separate
+@example
+Key = \notes \key as \major
+@end example
+Declare the key signature of the piece and assign it to the identifier
+@var{Key}. Lateron, we'll use @code{\Key} for all staffs except those
+for transposing instruments.
+
+@node The full score
+@subsection The full score
+
The second file, @file{os-score.ly} reads the definitions of the first
(@file{os-music.ly}), and defines the @code{\score} block for the full
conductor's score.
+
@example
% os-score.ly
-\include "os-music.ly";
-\include "paper13.ly";
+\include "os-music.ly"
+\include "paper13.ly"
#(set! point-and-click line-column-location)
#(define text-flat '((font-relative-size . -2)
\score @{
<
\global
+ \property Score.BarNumber \override #'padding = #3
\context StaffGroup = woodwind <
\context Staff = flauti <
\property Staff.midiInstrument = #"flute"
\property Staff.midiInstrument = #"timpani"
\property Staff.instrument = #'(lines "Timpani" "(C-G)")
\property Staff.instr = #"Timp."
- \clef bass;
+ \clef bass
\Key
\timpani
>
\property Staff.instr = #`(lines "Cor."
(rows "(E" ,text-flat ")"))
\property Staff.transposing = #3
- \notes \key bes \major;
+ \notes \key bes \major
\context Voice=one \corno
>
>
>
\paper @{
- indent = 15 * \staffspace;
- linewidth = 60 * \staffspace;
- textheight = 90 * \staffspace;
- \translator@{
- \ThreadContext
- \consists "Rest_engraver";
- @}
+ indent = 15 * \staffspace
+ linewidth = 60 * \staffspace
+ textheight = 90 * \staffspace
\translator@{
\VoiceContext
- \remove "Rest_engraver";
- \consists "Multi_measure_rest_engraver";
- \consists "Bar_engraver";
+ \consists "Multi_measure_rest_engraver"
@}
\translator@{
\HaraKiriStaffContext
- \remove "Multi_measure_rest_engraver";
- \remove "Bar_engraver";
- @}
- \translator @{
- \OrchestralScoreContext
- BarNumber \override #'padding = #3
+ \remove "Multi_measure_rest_engraver"
@}
@}
\midi @{
- \tempo 4 = 75;
+ \tempo 4 = 75
@}
@}
@end example
@separate
@example
-\include "os-music.ly";
+\include "os-music.ly"
@end example
First, we need to include the music definitions we made in
@file{os-music.ly}.
#(define text-flat '((font-relative-size . -2)
(music "accidentals--1")))
@end example
-[FIXME: what is markup text?]
-We need a flat sign in text to name the tuning of the french horn, so we
-predefine it with bit of scheme markup text (See @ref{Text markup}).
+When naming the tuning of the french horn, we'll need a piece of text
+with a flat sign. LilyPond has a mechanism for font selection and
+kerning called Scheme markup text (See @ref{Text markup}). The flat
+sign is taken from the music font, and its name is @code{accidentals--1}
+(The sharp sign is called @code{accidentals-+1}). The default font is
+too big for text, so we select a relative size of @code{-2}.
@separate
@example
@end example
Of course, all staffs are simultaneous and use the same global settings.
+@separate
+@example
+ \property Score.BarNumber \override #'padding = #3
+@end example
+LilyPond prints bar numbers at the start of each line, but
+unfortunately, they end up a bit too close to the staff in this example.
+A bar number internally is a Grob called @var{BarNumber}. BarNumber
+Grobs can be manipulated through their @var{side-position-interface}. One
+of the properties of a @var{side-position-interface} that can be tweaked
+is the @var{padding}: the amount of extra space that is put between this
+Grob and other Grobs. We set the padding to three staff spaces.
+
+You can find all this kind of information in LilyPond's automatically
+generated documentation in
+@ifnottex
+@ref{ (lilypond-internals)lilypond-internals, LilyPond Internals}.
+@end ifnottex
+@iftex
+the online documentation.
+@end iftex
+
@separate
@example
\context StaffGroup = woodwind <
\context Staff = flauti <
@end example
-Then, we start a new staff group for the woodwind section (just the
-flutes in this case). Immediately after that, we start the staff for
-the two flutes, that also play simultaneously.
+A new notation context: the StaffGroup. StaffGroup can hold one or more
+Staffs, and will print a big bracket at the left of the score. Start a
+new staff group for the woodwind section (just the flutes in this case).
+Immediately after that, we start the staff for the two flutes, that also
+play simultaneously.
@separate
@example
\property Staff.midiInstrument = #"flute"
@end example
-We specify the instrument for MIDI output (see @ref{MIDI instrument
+Specify the instrument for MIDI output (see @ref{MIDI instrument
names}).
@separate
>
>
@end example
-We close the flutes staff and woodwind staff group.
+Close the flutes staff and woodwind staff group.
@separate
@example
\context Thread=one \tromboI
\context Thread=two \tromboII
@end example
-[FIXME: what is thread, why is distinction thread/voice necessary?]
+You have seen the notation contexts Staff and Voice, but here's a new
+one: Thread. One or more Threads can be part of a Voice. The Thread
+takes care of note heads and rests, the Voice combine note heads onto a
+stem.
For the trumpets we use the automatic part combiner (see @ref{Automatic
part combining}) to combine the two simultaneous trumpet parts onto the
The french horn is to be tuned in E-flat, so we tell the MIDI backend to
transpose this staff by three steps.
-[FIXME: note how we can choose different tuning for entering, printing and
-playing, using \transpose and transposing.]
+Note how we can choose different tuning for entering, printing and
+playing, using @code{\transpose} and the MIDI Staff proprerty
+@var{transposing}.
@separate
@example
- \notes \key bes \major;
+ \notes \key bes \major
@end example
Therefore, it has a different key.
@separate
@example
- indent = 15 * \staffspace;
- linewidth = 60 * \staffspace;
+ indent = 15 * \staffspace
+ linewidth = 60 * \staffspace
@end example
We specify a big indent for the first line and a small linewidth for this
tutorial.
@separate
@example
- \translator@{
- \ThreadContext
- \consists "Rest_engraver";
- @}
\translator@{
\VoiceContext
- \remove "Rest_engraver";
- \consists "Multi_measure_rest_engraver";
- \consists "Bar_engraver";
+ \consists "Multi_measure_rest_engraver"
@}
-@end example
-[FIXME: explain about overriding contexts.]
-
-Because we have a Thread representing one instrument, we need to move
-the @code{Rest_engraver} from Voice to Thread level. Similarly, we need
-to move the @code{Multi_measure_rest_engraver} from Staff to Voice
-level.
-
-[FIXME: should put Rest_engraver in threadcontext by default.]
-
-@separate
-@example
\translator@{
\HaraKiriStaffContext
- \remove "Multi_measure_rest_engraver";
- \remove "Bar_engraver";
+ \remove "Multi_measure_rest_engraver"
@}
@end example
+[FIXME: ignoring mmrest moving for now, assuming we'll do that in
+engraver.ly]
+
+Usually, LilyPond's predefined setup of notation contexts (Thread,
+Voice, Staff, Staffgroup, Score) is just fine. But in this case, we
+want a different type of Staff context.
+
In orchestral scores, it often happens that one instrument has only
rests during one line of the score. The @code{HaraKiriStaffContext} can
be used as a regular @code{StaffContext} drop-in and will take care of
the automatic removing of empty staffs.
-@ignore
-[note how you can use \override in \translator]
-[explain what padding is.]
-
-[note that : (ly/engraver.ly) OrchestralScoreContext is for compatibility.
-
-OrchestralScoreContext= \translator {
- \ScoreContext
-}
-
-]
-
-@end ignore
-
-
-@separate
-@example
- \translator @{
- \OrchestralScoreContext
- BarNumber \override #'padding = #3
- @}
-@end example
-FIXME: use \property Score.BarNumber
-
-We want bar numbering at score level and want to move the bar number a
-few staff spaces up.
-
-
-@node Part extraction
-@section Part extraction
+@node Extracting an individual part
+@subsection Extracting an individual part
The third file, @file{os-flute-2.ly} also reads the definitions of the
first (@file{os-music.ly}), and defines the @code{\score} block for the
second flute part.
@example
-\include "os-music.ly";
-\include "paper16.ly";
+\include "os-music.ly"
+\include "paper16.ly"
\score @{
\context Staff <
+ \property Score.skipBars = ##t
\property Staff.midiInstrument = #"flute"
\global
\Key
\flautoII
>
\header @{
- instrument = "Flauto II";
+ instrument = "Flauto II"
@}
\paper @{
- linewidth = 80 * \staffspace;
- textheight = 200 * \staffspace;
- \translator @{
- \OrchestralScoreContext %%%%FIXME
- skipBars = ##t
- @}
+ linewidth = 80 * \staffspace
+ textheight = 200 * \staffspace
@}
\midi @{
- \tempo 4 = 75;
+ \tempo 4 = 75
@}
@}
@end example
@separate
@example
\header @{
- instrument = "Flauto II";
+ instrument = "Flauto II"
@}
@end example
The @code{\header} definitions were also read from @file{os-music.ly},
@separate
@example
- skipBars = ##t
+ \property Score.skipBars = ##t
@end example
In the conductor's full score, all bars with rests are printed, but for
the individual parts, we want to contract pieces of consecutive empty
-bars.
+bars. LilyPond will do this if Score's @var{skipBars} property to
+true.
+
+
+@node Other ways to run LilyPond
+@section Other ways to run LilyPond
+
+[FIXME: describe all programs involved in one list.]
+
+Until now, you have been using @file{ly2dvi} to invoke LilyPond.
+There are three other routes. Firstly, there is a script called
+@code{lilypond-book}, that allows you to freely mix LilyPond input with
+Texinfo or LaTeX input. For example, this manual was written using
+@code{lilypond-book}. It is discussed in @ref{lilypond-book}.
+
+@c FIXME: ly2dvi option?
+Secondly, you can generate PostScript directly. This is useful if you
+can not or do not want to run @TeX{} on your system. To obtain direct
+PostScript output, invoke LilyPond as follows:
+@cindex PostScript output
+@example
+lilypond -f ps test.ly
+@end example
+You have to set some environment variables to view or print this
+output. More information can be found in @ref{Invoking
+LilyPond}.
+
+@c FIXME: ly2dvi option?
+Thirdly, if you want to do special things with your output, you can run
+invoke lilypond directly:
+@example
+lilypond test.ly
+@end example
+to produce plain @TeX{}@footnote{@TeX{} is a text-typesetting system
+that is especially suited for typesetting mathematics.} output. Note
+that you must run @TeX{} on the resulting @file{test.tex}, ie, not
+LaTeX.
+@cindex @TeX{}
+
-[FIXME: Waarom moet skipBars in \translator, waarom niet \property
-Score.skipBars]
@lilypond[veryverbatim, intertext="produces this music:"]
\score{
\notes\relative c'{
- \time 5/8;
+ \time 5/8
[e16( g b c a g][e a b d] | )e2 d,8 |
[e16( g b c a g][e a b d] | )b2 [a16( f] |
[e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] |
above. Lilypond-book will insert some code for you that defines the
linewidth and the font to use. If you don't want to change the default,
there is no need to put an empty @code{\paper@{@}} inside the @code{\score}.
-In the example above, something like
-this might be inserted before your code:
+In the example above, something like this might be inserted before your code:
@example
\include "paper16.ly"
\paper@{ \paper_sixteen
- linewidth = 390.\pt;
- castingalgorithm = \Gourlay;
+ linewidth = 390.\pt
@}
@end example
The actual values for linewidth will differ depending on papersize and
@lilypond[veryverbatim, intertext="produces this music:"]
\score{
\notes\relative c'{
- \time 5/8;
+ \time 5/8
[e16( g b c a g][e a b d] | )e2 d,8 |
[e16( g b c a g][e a b d] | )b2 [a16( f] |
[e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] |
[f( a b d b a][f a b d] | )e2
}
- \paper{linewidth = 10.\cm;}
+ \paper{linewidth = 10.\cm }
}
@end lilypond
@lilypond[eps]
\score{
\notes{s}
- \paper{ linewidth = 5.\cm;}
+ \paper{ linewidth = 5.\cm }
}
@end lilypond
was created with this code:
@@lilypond[eps]
\score@{
\notes@{s@}
- \paper@{ linewidth = 5.\cm;@}
+ \paper@{ linewidth = 5.\cm@}
@}
@@end lilypond
@end example
@lilypond
\score{
\notes\relative c'{
- \time 12/8;
+ \time 12/8
r4-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
[f16-.( )f-. dis8-- gis16-.( )gis-.] cis4.-\fermata |
r4.-\fermata [cis,16 cis g'8 f16 f b8][g16 g f8 b16 b] dis4.-\fermata
}
- \paper{linewidth = 7.\cm;}
+ \paper{linewidth = 7.\cm}
}
@end lilypond
@lilypond[verbatim]
\score{
\notes\relative c'{
- \time 12/8;
+ \time 12/8
r4.-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
[f16-.( )f-. dis8-- gis16-.( )gis-.] cis8.-\fermata |
r4.-\fermata [cis,16 cis g'8 f16 f b8]
[g16 g f8 b16 b] dis4.-\fermata
}
- \paper{linewidth = 7.\cm;}
+ \paper{linewidth = 7.\cm }
}
@end lilypond
\begin@{lilypond@}
\header @{
- title = "Title";
- subtitle = "Subtitle";
- subsubtitle = "Subsubtitle";
- opus = "Opus 1";
- piece = "Piece";
- composer = "Composer";
- enteredby = "JCN";
- instrument = "instrument";
+ title = "Title"
+ subtitle = "Subtitle"
+ subsubtitle = "Subsubtitle"
+ opus = "Opus 1"
+ piece = "Piece"
+ composer = "Composer"
+ enteredby = "JCN"
+ instrument = "instrument"
@}
-\paper @{ linewidth = -1.; @}
+\paper @{ linewidth = -1. @}
\score @{
\notes \relative c'' @{ a b c d @}
@}
depth = .
#
-# descent order into subdirectories:
-#
-SUBDIRS = buildscripts scripts flower lily mf midi2ly po \
- Documentation ly input tex make intl ps scm \
+# descent order into subdirectories
+#
+SUBDIRS = buildscripts scripts flower lily \
+ mf ly tex ps scm \
+ midi2ly po make intl \
debian $(builddir)/stepmake \
+ Documentation input \
mutopia ports
#
Bugs that are not fault of LilyPond are documented here.
+NetBSD
+******
+
+ * The flex precompiled in NetBSD-1.4.2 is broken. Download
+ flex-2.5.4a, build, install.
+
+ * The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
+ release)) does not include `/usr/pkg' paths. Configure using:
+
+ CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
+
+
Solaris:
********
New features in 1.4
-* Finale (.etf), PMX (.pmx) and musedata import tools.
+* Finale (.etf), PMX, Musedata and Mup import tools.
* Point and click functionality using emacs and Xdvi.
midi2ly/ midi2ly source code
include/
mutopia/ Larger examples with full music pieces.
- Coriolan/
- D.Zipoli/
E.Satie/
F.Schubert/
- Hymns/
J.S.Bach/
intl/ library for gettext
po/ translations
+ ports/
ps/ postscript library files
tex/ TeX library files
scripts/ User scripts
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=145
-MY_PATCH_LEVEL=jcn1
+PATCH_LEVEL=146
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
# bin/Makefile
depth = ..
-STEPMAKE_TEMPLATES=script install po
+STEPMAKE_TEMPLATES=script install install-out po
include $(depth)/make/stepmake.make
INSTALLATION_FILES=$(outdir)/gettext.py
INSTALLATION_DIR=$(datadir)/python
+# Should we install these? This should be handled by sysadmin or
+# packager but if she forgets...
+#INSTALLATION_OUT_SUFFIXES=1
+#INSTALLATION_OUT_DIR1=$(datadir)/scripts
+#INSTALLATION_OUT_FILES1=$(outdir)/lilypond-login $(outdir)/lilypond-profile
+
all: $(outdir)/gettext.py
+\version "1.3.146"
% ASCII Art output
%
% Process as:
\score {
\notes\relative c'' {
- \time 3/8;
+ \time 3/8
a8 a a
- \time 5/8;
+ \time 5/8
a a a a a
%a16 a a a a a a a a a
}
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator {
\StaffContext
StaffSymbol \override #'molecule-callback = #(lambda (x) '())
+\version "1.3.146"
% ASCII Art output
%
% Process as:
\score {
\notes\relative c'' {
- \time 4/4;
+ \time 4/4
g1 a b c
g2 a b c
g4 a b c
+\version "1.3.146"
% ASCII Art output
%
% Process as:
\score {
\notes\relative c'' {
- \time 4/4;
+ \time 4/4
g1 a b c
g2 a b c
g4 a b c
+\version "1.3.146"
% ASCII Art output
%
% Process as:
+\version "1.3.146"
% ASCII Art output
%
% Process as:
\score {
\context StaffGroup <
\context Staff=upper \notes\relative c{
- \key f \major;
- \time 3/4;
+ \key f \major
+ \time 3/4
r8^"Moderato" %\pp
<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
r8 <as-. c-.> <c-. es-.>
}
\context Staff=lower \notes\relative c{
- \key f \major;
- \time 3/4;
- \clef "bass";
+ \key f \major
+ \time 3/4
+ \clef "bass"
<c,2 c'> r4
<as2 as'> r4
}
>
\paper {
- indent=4.0\char;
- linewidth=78.0\char;
+ indent=4.0\char
+ linewidth=78.0\char
\translator { \StaffContext Bar \override #'bar-size = #5 }
\translator {
\VoiceContext
+\version "1.3.146"
% ASCII Art output
% Process as:
\score {
\context GrandStaff <
\context Staff=upper \notes\relative c{
- \key f \major;
- \time 3/4;
+ \key f \major
+ \time 3/4
r8^"Moderato" %\pp
<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.> |
r8 <as-. c-.> <c-. es-.>
}
\context Staff=lower \notes\relative c{
- \key f \major;
- \time 3/4;
- \clef "bass";
+ \key f \major
+ \time 3/4
+ \clef "bass"
<c,2 c'> r4
<as2 as'> r4
}
>
\paper {
- indent=4.0\char;
- linewidth=78.0\char;
+ indent=4.0\char
+ linewidth=78.0\char
\translator {
\VoiceContext
% horizontal beams
+\version "1.3.146"
% ASCII Art output
%
% Process as:
\header{
-filename = "twinkle.ly";
-title = "Twinkle Twinkle Little Star";
-composer = "Traditional";
-enteredby = "hwn and jcn";
-copyright = "public domain";
+filename = "twinkle.ly"
+title = "Twinkle Twinkle Little Star"
+composer = "Traditional"
+enteredby = "hwn and jcn"
+copyright = "public domain"
}
\include "paper-as5.ly"
melody = \notes \relative c'' {
- \time 2/4;
+ \time 2/4
c4 c | g' g | a a | g g |
%{
f f | e e | d d8.( e16 | )c2 |
}
accompany = \notes \relative c {
- \clef "bass";
- \time 2/4;
+ \clef "bass"
+ \time 2/4
c4 c' | e c | f c | e c |
%{
d b | c a | f g | c,2 |
\context Staff=lower \accompany
>
\paper{
- \translator { \GrandStaffContext \accepts "Lyrics"; }
- indent=4.0\char;
- linewidth=78.0\char;
+ \translator { \GrandStaffContext \accepts "Lyrics" }
+ indent=4.0\char
+ linewidth=78.0\char
}
}
--- /dev/null
+
+%
+% Lyrics with barline colliding is fine now, BUT
+% There's an horizontal gap between staff and end bar
+%
+
+\header{
+texidoc="
+Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that
+lyrics don't collide with barlines.
+";
+}
+
+\score {
+ \context StaffGroup <
+ \notes \context Staff {
+ b1 \bar "|:"; b1 \bar ":|";
+ }
+ \lyrics\context Lyrics <
+ \context LyricsVoiceWithBars {
+% thisContextHasBarEngraver1 added
+ ThisContextCertainlyHasBarEngraverAddedButThereHasBeenSomethingFunnyBefore1. Here.
+ }
+ \context LyricsVoice {
+ this4 one has no BarEngraverAddedToContext1
+ }
+ >
+ \notes \context Staff = SB { b1 b1 }
+ >
+ \paper {
+ linewidth = -1.0\cm;
+ \translator {
+ \LyricsContext
+ \accepts "LyricsVoiceWithBars";
+ }
+ \translator {
+ \LyricsVoiceContext
+ \consists "Bar_engraver";
+ \name "LyricsVoiceWithBars";
+ }
+ \translator {
+ \LyricsVoiceContext
+ }
+ }
+}
+\version "1.3.146"
one = \notes\relative c{
c'' d e f
}
two = \notes\relative c{
- \clef "bass";
+ \clef "bass"
c'2 g2
}
+\version "1.3.146"
\header {
- filename = "just-friends.ly";
- title = "Just Friends";
- description = "Jazz chords example with bar lines";
- opus = "";
- source = "mutex@gmd.de";
- composer = "";
- enteredby = "jcn";
- copyright = "Public Domain";
+ filename = "just-friends.ly"
+ title = "Just Friends"
+ description = "Jazz chords example with bar lines"
+ opus = ""
+ source = "mutex@gmd.de"
+ composer = ""
+ enteredby = "jcn"
+ copyright = "Public Domain"
}
%{
}
}
\paper{
- indent = 0.0\mm;
- linewidth = 100.0\mm;
+ indent = 0.0\mm
+ linewidth = 100.0\mm
\translator{
\ChordNamesContext
- barNonAuto = ##f;
- \consists Bar_engraver;
- \consists "Volta_engraver";
+ barNonAuto = ##f
+ \consists Bar_engraver
+ \consists "Volta_engraver"
}
}
}
+\version "1.3.146"
%{
You should preprocess this file with the C preprocessor. The one with
\header{
- composer = "ARTHUR GRAY";
- title = "LES N\\'ER\\'EIDES";
- subtitle = "THE NEREIDS";
- enteredby = "JCN";
- %piece = "Allegretto scherzando";
- copyright = "public domain";
- description = "Nastiest piece of competition at http://www.orphee.com/comparison/study.html, see http://www.orphee.com/comparison/gray.pdf";
- comment = "LilyPond (1.3.93) can't really do this yet, I guess";
+ composer = "ARTHUR GRAY"
+ title = "LES N\\'ER\\'EIDES"
+ subtitle = "THE NEREIDS"
+ enteredby = "JCN"
+ %piece = "Allegretto scherzando"
+ copyright = "public domain"
+ description = "Nastiest piece of competition at http://www.orphee.com/comparison/study.html, see http://www.orphee.com/comparison/gray.pdf"
+ comment = "LilyPond (1.3.93) can't really do this yet, I guess"
}
%% cpp: don't start on first column
#(define (make-text-checker text)
(lambda (elt)
- ;; huh, string-match undefined?
- ;; (string-match text (ly-get-grob-property elt 'text))
+ huh, string-match undefined?
+ (string-match text (ly-get-grob-property elt 'text))
(equal? text (ly-get-grob-property elt 'text))
))
global = \notes{
- \partial 2;
- \key a \major;
- \skip 2;
- \skip 1*2;
+ \partial 2
+ \key a \major
+ \skip 2
+ \skip 1*2
#ifndef FAKE_GRACE /* First run this through cpp. See head les-nereides.ly */
- \skip 1;
+ \skip 1
#else % FAKE_GRACE
- \skip 2.; \partial 32*24;
- \skip 32*24;
+ \skip 2. \partial 32*24
+ \skip 32*24
#endif % FAKE_GRACE
- \bar "||";
+ \bar "||"
}
treble = \context Voice=treble \notes\relative c''{
\property Voice.Stem \revert #'direction
\property Voice.Stem \override #'direction = #-1
<b,,4 b,>
- \clef treble;
+ \clef treble
\property Voice.Stem \revert #'direction
\property Voice.Stem \override #'direction = #0
<
%urg: staff-change: ! on dis
<cis''\arpeggio a fis dis!>
-% { s8. \clef bass;}
+% { s8. \clef bass}
>
#ifndef FAKE_GRACE
%Hmm
- %\grace { s16 s s s s32 s s s s \clef bass; s }
- \clef bass;
+ %\grace { s16 s s s s32 s s s s \clef bass s }
+ \clef bass
\grace { <e,,,32( e,> } <)gis'2 e>
#else
- s4 s8 s32 s s \clef bass;
+ s4 s8 s32 s s \clef bass
\property Score.PaperColumn \override #'space-factor = #0.6
\property Score.PaperColumn \override #'to-musical-spacing-factor = #0.1
\property Voice.NoteHead \override #'font-relative-size = #-1
}
bassTwo = \context Voice=bassTwo \notes\relative c{
- \skip 2;
- \skip 1*2;
- \skip 2;
+ \skip 2
+ \skip 1*2
+ \skip 2
#ifdef FAKE_GRACE
- \skip 32*16;
+ \skip 32*16
#endif
\property Voice.Stem \revert #'direction
\middleDynamics
>
\context Staff=bass <
- \clef bass;
+ \clef bass
\global
\bass
\bassTwo
>
\paper {
%%BURP
- magnification_italic = 1.;
+ magnification_italic = 1.
\translator {
\ScoreContext
TimeSignature \override #'style = #'C
SpacingSpanner \override #'maximum-duration-for-spacing = #(make-moment 1 4)
- \remove Bar_number_engraver;
+ \remove Bar_number_engraver
}
\translator {
- \type "Engraver_group_engraver";
- \name Dynamics;
- \consists "Output_property_engraver";
+ \type "Engraver_group_engraver"
+ \name Dynamics
+ \consists "Output_property_engraver"
Generic_property_list = #generic-voice-properties
- \consists "Property_engraver";
+ \consists "Property_engraver"
MinimumVerticalExtent = #(cons -3 -3)
VerticalAlignment \override #'threshold = #'(9 . 9)
startUnaChorda = #"una chorda"
stopUnaChorda = #"tre chorde"
- \consists "Piano_pedal_engraver";
- \consists "Script_engraver";
- \consists "Dynamic_engraver";
- \consists "Text_engraver";
+ \consists "Piano_pedal_engraver"
+ \consists "Script_engraver"
+ \consists "Dynamic_engraver"
+ \consists "Text_engraver"
%GURGURGU, text is initialised using TextScript
TextScript \override #'style = #"italic"
%%% TextScript \override #'font-relative-size = #2
- \consists "Skip_req_swallow_translator";
+ \consists "Skip_req_swallow_translator"
- \consistsend "Axis_group_engraver";
+ \consistsend "Axis_group_engraver"
}
\translator {
\PianoStaffContext
- \accepts Dynamics;
+ \accepts Dynamics
VerticalAlignment \override #'threshold = #'(7 . 7)
}
\translator {
+\version "1.3.146"
\header {
- title = "Title";
- subtitle = "Subtitle";
- subsubtitle = "Subsubtitle";
- opus = "Opus 1";
- piece = "Piece";
- composer = "Composer";
- enteredby = "JCN";
- instrument = \instrument;
+ title = "Title"
+ subtitle = "Subtitle"
+ subsubtitle = "Subsubtitle"
+ opus = "Opus 1"
+ piece = "Piece"
+ composer = "Composer"
+ enteredby = "JCN"
+ instrument = \instrument
% mutopia headers.
- mutopiatitle = "";
- mutopiacomposer = "";
- mutopiaopus = "";
- mutopiainstrument = \instrument;
- date = "1807";
+ mutopiatitle = ""
+ mutopiacomposer = ""
+ mutopiaopus = ""
+ mutopiainstrument = \instrument
+ date = "1807"
- source = "Urtext edition";
+ source = "Urtext edition"
- style = "Classical";
- copyright = "Public Domain";
- maintainer = "Jan Nieuwenhuizen";
- maintainer_email = "janneke@gnu.org";
- lastupdated = "2001/Mar/19";
+ style = "Classical"
+ copyright = "Public Domain"
+ maintainer = "Jan Nieuwenhuizen"
+ maintainer_email = "janneke@gnu.org"
+ lastupdated = "2001/Mar/19"
mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
\\\\This music is part of the Mutopia project,
\\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
and placed in the public domain by " + \maintainer +
".\\\\Unrestricted modification and redistribution is permitted
- and encouraged---copy this music and share it.}";
- tagline = \mutopiapublicdomain;
- footer = "pre-Mutopia-2001/mm/dd-nn";
+ and encouraged---copy this music and share it.}"
+ tagline = \mutopiapublicdomain
+ footer = "pre-Mutopia-2001/mm/dd-nn"
}
+\version "1.3.146"
\header{
-filename = "opus-130.ly";
-title = "Quartett";
-description = "";
-composer = "Ludwig van Beethoven (1770-1827)";
-opus = "130";
-enteredby = "JCN";
-copyright = "public domain";
+filename = "opus-130.ly"
+title = "Quartett"
+description = ""
+composer = "Ludwig van Beethoven (1770-1827)"
+opus = "130"
+enteredby = "JCN"
+copyright = "public domain"
}
-% \;
+% \
tempi = \notes {
\property Voice.TextScript \set #'font-style = #'large
}
global = \notes {
- \key g \major;
- \time 3/8;
+ \key g \major
+ \time 3/8
<
\dynamics
s4. * 8
}
viola = \notes\relative c'{
- \clef "alto";
+ \clef "alto"
g8(b)g | b(e,)b' | c,(a')c, | c'(d,)c' | b(d)b |
e(g,)e' | e(e,<)a' c,> | < a(c,> <fis b,> )b,
}
cello = \notes\relative c'{
- \clef "bass";
+ \clef "bass"
g4 r8 | e'4 r8 | c4 r8 | d4 r8 | g,,8 b g | b(e,)b' |
c,(a')d, | d'(d,)g
}
\paper{
\translator { \OrchestralScoreContext }
}
- \midi{ \tempo 4 = 160; }
+ \midi{ \tempo 4 = 160 }
}
+\version "1.3.146"
\header {
- filename = "praeludium-fuga-E.ly";
- title = "praeludium and fuga in E-major";
- opus = "BWV 566";
- composer = "Johann Sebastian Bach (1685-1750)";
- enteredby = "JCN";
- copyright = "public domain";
+ filename = "praeludium-fuga-E.ly"
+ title = "praeludium and fuga in E-major"
+ opus = "BWV 566"
+ composer = "Johann Sebastian Bach (1685-1750)"
+ enteredby = "JCN"
+ copyright = "public domain"
}
%{
description
praeludiumCommands = \notes {
- \time 4/4;
- \key e \major;
+ \time 4/4
+ \key e \major
}
praeludiumRight = \notes {
\praeludiumCommands
- \clef violin;
+ \clef violin
% 13 -- how to type -- where to split -- this more neatly?
\context Staff <
%\stemUp
%{
this is a diversion from the Griepenkerl/Keller
- edition; a hack to avoid collisions
+ edition a hack to avoid collisions
%}
\stemDown
\shiftOn s4 gis }
praeludiumLeft = \notes \relative c {
\praeludiumCommands
- \clef bass;
+ \clef bass
% 13
\context Staff <
praeludiumPedal = \notes \relative c{
\praeludiumCommands
- \clef bass;
+ \clef bass
%13
r4 fis,4-\ltoe e4.-\lheel e'8-\rheel |
fugaIICommands = \notes{
- \time3/4;
- \key e \major; % E-major
+ \time3/4
+ \key e \major % E-major
}
fugaIIRight = \notes \relative c'' {
\fugaIICommands
- \clef violin;
+ \clef violin
%15
\context Staff <
fugaIILeft = \notes {
\fugaIICommands
- \clef bass;
+ \clef bass
%15
\context Staff <
fugaIIPedal = \notes \relative c {
\fugaIICommands
- \clef bass;
+ \clef bass
%15
dis4.-\ltoe e8-\rtoe cis4 |
}
breakmusic = \notes {
- %\time4/4;
+ %\time4/4
r1
}
}
\midi {
- \tempo 4 =96; }
+ \tempo 4 =96 }
}
+\version "1.3.146"
\header{
texidoc="
A sharp sign after a double sharp sign, as well as a flat sign
after a double flat sign is automatically prepended with a
natural sign.
-";
+"
}
-thenotes = \notes \relative cis' { \time 4/4;
+thenotes = \notes \relative cis' { \time 4/4
gisis'4 gis gisis ges |
geses ges geses gis |
gisis g geses g |
gis g ges g |
-\key a \major;
+\key a \major
gisis4 gis gisis ges |
geses ges geses gis |
gisis g geses g |
+\version "1.3.146"
\header{
texidoc="
Accidentals work: the second note does not get a sharp. The third and
fourth show forced and courtesy accidentals.
-";
+"
}
-foo = \notes\relative c'' { \key as \major; dis4 dis dis! dis? }
+foo = \notes\relative c'' { \key as \major dis4 dis dis! dis? }
\score {
+\version "1.3.146"
\score { \notes
\relative c'' \context Staff {
\emptyText
- \repeat volta 2 { \time 4/4; c4^"cuivr\\'e"_\fermata }
+ \repeat volta 2 { \time 4/4 c4^"cuivr\\'e"_\fermata }
\alternative {
{ \property Voice.TextScript \set #'font-style = #'italic d-4_"cantabile" }
{ e } } \grace { c16 }
\property Voice.TextScript \set #'font-style = #'large
- f4-\ff^""^"Largo" \mark "B"; g
+ f4-\ff^""^"Largo" \mark "B" g
}
- \paper { linewidth = -1.0;
+ \paper { linewidth = -1.0
% \translator {\BarNumberingStaffContext} }
}
}
+\version "1.3.146"
\header {
texidoc = "arpeggio stays clear of accidentals and flipped note heads.
-Since Arpeggio engraver is Voice, it does nothing for voice collisions.";
+Since Arpeggio engraver is Voice, it does nothing for voice collisions."
}
hairyChord = \context Staff \notes\relative c' <
\hairyChord
}
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator{
\StaffContext
connectArpeggios = ##t
+\version "1.3.146"
\header{
texidoc="
Arpeggios are supported, both cross-staff and broken single staff.
-";
+"
}
<fis,\arpeggio a c>
}
\context Staff=two \notes\relative c{
- \clef bass;
+ \clef bass
\context Voice < g b d-\arpeggio >
<g\arpeggio b d>
}
+\version "1.3.146"
\header{
texidoc="
The first two a8 notes should not be beamed.
Also, no automatic beaming accross bar lines.
-";
+"
}
\score{
\notes \notes\relative c'' {
-\time 2/8;
+\time 2/8
a8 a
-\time 6/8;
+\time 6/8
a16 cis d a bes g fis4 g8
%a4. fis4 g8
a16 g a bes c d % ees8 d c
}
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\header{
texidoc="
Auto change piano staff switches voices between up and down staffs
-automatically; rests are switched along with the coming note.
-";
+automatically rests are switched along with the coming note.
+"
}
\score {
\autochange Staff \context Voice = VA < \relative c' { g4 a b c d r4 a g } >
}
\context Staff = "down" {
- \clef bass;
+ \clef bass
s1*2
}
+\version "1.3.146"
\header{
-texidoc="Two automatic knees";
+texidoc="Two automatic knees"
}
\score {
[ b, \translator Staff="down" d ]
}
\context Staff = "down" {
- \clef bass;
+ \clef bass
s2.
}
>
\paper{
- linewidth = 40*\staffspace;
+ linewidth = 40*\staffspace
% Now by default
% \translator{
% \VoiceContext
+\version "1.3.146"
\header{
-texidoc="One automatic knee";
+texidoc="One automatic knee"
}
\score {
[c'8 c,,] [c8 e']
}
\paper{
- linewidth = 40*\staffspace;
+ linewidth = 40*\staffspace
% Now by default
% \translator {
% \VoiceContext
+\version "1.3.146"
\header {
-texidoc="Bar number settable and padding adjustable.";
+texidoc="Bar number settable and padding adjustable."
}
\score {
c1 c\break
}
\paper {
- linewidth = 40*\staffspace;
+ linewidth = 40*\staffspace
% \translator { \BarNumberingStaffContext }
}
}
+\version "1.3.146"
\header{
texidoc="
Markings that are attached to (invisible) barlines are
delicate: the are attached to the rest of the score without the score
knowing it. Consequently, they fall over often.
-";
+"
}
onestaff = \context Staff = foo\notes {
\property Staff.instr = instr
- \property Staff.instrument = instrument \mark "B";
- c1 \mark "A"; \break c2 c2 \break
+ \property Staff.instrument = instrument \mark "B"
+ c1 \mark "A" \break c2 c2 \break
}
grstaff = \notes \context GrandStaff <
\property Staff.instr = instr
- \mark "B"; \break c1 \mark "A"; c2 }
+ \mark "B" \break c1 \mark "A" c2 }
\context Staff = bufl { c1 c2 }
>
%\score {\stscore}
\score {\scscore
-\header { title = "bar scripts"; }
+\header { title = "bar scripts" }
}
+\version "1.3.146"
\header{
texidoc="
Beams can be typeset over fixed distance aligned staffs, beam
beautification doesn't really work, but knees do. Beams should be
behave well, wherever the switching point is.
-";
+"
}
\score{
\context PianoStaff <
r2
}
\context Staff=two \notes\relative c'{
- \clef bass;
+ \clef bass
s1
s1
s1
+\version "1.3.146"
\header{
texidoc="
Beams should behave reasonably well, even under extreme circumstances.
Stems may be short, but noteheads should never touch the beam. Note that
-under normal circumstances, these beams would get knees; here
+under normal circumstances, these beams would get knees here
Beam.auto-knee-gap was set to false.
-";
+"
}
\score{
}
\paper{
- linewidth=-1.;
+ linewidth=-1.
\translator {
\VoiceContext
% If we want to test extreme beams,
+\version "1.3.146"
\header{
texidoc="
beams should look the same
-";
+"
}
\score {
+\version "1.3.146"
\header{
texidoc="
Beams should always reach the middle staff line. The second beam
counting from the note head side, should never be lower than the
second staff line. This does not hold for grace note beams.
Override with @code{noStemExtend}.
-";
+"
}
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\header{
texidoc="
Beaming is generated automatically. Beams may cross bar lines. In that
case, line breaks are forbidden. Yet clef and key signatures are
hidden just as with breakable bar lines.
-";
+"
}
\score { \context Staff \notes \relative c'' {
+\version "1.3.146"
\header{
texidoc="
The same mechanism can be used to force pagebreaks.
-";
+"
}
+\version "1.3.146"
\header{
texidoc="
Breaks can be encouraged and discouraged using @code{\break} and
@code{\noBreak}. They are abbrevs for @code{\penalty} commands.
-";
+"
}
c1^"break after this" \break c1 c1
}
- \paper { linewidth = 4.0\cm;}
+ \paper { linewidth = 4.0\cm}
}
+\version "1.3.146"
\header{
texidoc="
Breathing signs, also used for phrasing, do normally not influence
room for the breathing sign. Breathing signs break beams running
through their voice. In the following example, the notes in the first
two measures all have the same distance from each other:
-";
+"
}
\score {
\notes \relative c' {
- \key es \major; \time 3/4;
+ \key es \major \time 3/4
< \context Voice = two { \stemDown es4 bes es }
\context Voice = one { \stemUp g4 as g }
> |
> |
es8 d es f g4 \breathe |
es8 d \breathe es f g f |
- es2 r4 \bar "||";
+ es2 r4 \bar "||"
}
}
+\version "1.3.146"
\header{
texidoc="property chordChanges: only display chord names when
there's a change in the chords scheme, but always display the
chord name after a line break.
-";
+"
}
scheme = \chords {
\context Staff \transpose c'' \scheme
>
\paper{
- linewidth = 40 * \staffspace;
+ linewidth = 40 * \staffspace
}
}
+\version "1.3.146"
\header{
texidoc="
Chord names are generated from a list pitches, and are customisable
from guile. For some unlogical names, guile customisation is used
by default.
-";
+"
}
chord = \notes\transpose c''\chords{
+\version "1.3.146"
\header{
texidoc="
leave a gap. Chord tremolo beams on half notes are not ambiguous,
as half notes cannot appear in a regular beam, and should reach the
stems.
-";
+"
}
\score {
}
\paper {
% ugh, wide
- %linewidth = -1.0;
- linewidth = 40*\staffspace;
+ %linewidth = -1.0
+ linewidth = 40*\staffspace
}
\midi { }
}
+\version "1.3.146"
\header{
texidoc="
size. For octaviated clefs, the ``8'' should appear closely above or
below the clef respectively. The ``8'' is processed in a convoluted
way, so this is fragile as well.
-";
+"
}
\score {
\notes{
- \clef "treble"; c'1^"{treble}" \bar "||";
- \clef "french";c'1^"{french}" \bar "||";
- \clef "soprano";c'1^"{soprano}" \bar "||";
- \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||";
- \clef "alto";c'1^"{alto}" \bar "||";
- \clef "tenor";c'1^"{tenor}" \bar "||";
- \clef "baritone";c'1^"{baritone}" \bar "||";
- \clef "varbaritone";c'1^"{varbaritone}" \bar "||";
- \clef "G_8";c'1^"{sub 8?}" c'1 \bar "||";
- \clef "G^8";c'1^"{sup 8?}" c'1 \bar "||";
- \clef "bass";c'1^"{bass}" \bar "||";
- \clef "subbass";c'1^"{subbass}" \bar "||";
+ \clef "treble" c'1^"{treble}" \bar "||"
+ \clef "french"c'1^"{french}" \bar "||"
+ \clef "soprano"c'1^"{soprano}" \bar "||"
+ \clef "mezzosoprano"c'1^"{mezzosoprano}" \bar "||"
+ \clef "alto"c'1^"{alto}" \bar "||"
+ \clef "tenor"c'1^"{tenor}" \bar "||"
+ \clef "baritone"c'1^"{baritone}" \bar "||"
+ \clef "varbaritone"c'1^"{varbaritone}" \bar "||"
+ \clef "G_8"c'1^"{sub 8?}" c'1 \bar "||"
+ \clef "G^8"c'1^"{sup 8?}" c'1 \bar "||"
+ \clef "bass"c'1^"{bass}" \bar "||"
+ \clef "subbass"c'1^"{subbass}" \bar "||"
\property Staff.Clef \override #'transparent = ##t
- \clef "treble"; c'1^"transparent=\#t" \bar "||";
+ \clef "treble" c'1^"transparent=\#t" \bar "||"
\property Staff.Clef \override #'transparent = ##f
\context Staff \outputproperty #(make-type-checker 'clef-interface) #'full-size-change = ##t
- \clef "french"; c'1^"full-size-change = \#t" \bar "|.";
+ \clef "french" c'1^"full-size-change = \#t" \bar "|."
}
\paper{
\translator{
+\version "1.3.146"
\header{
texidoc="
Normal collisions. We have support for polyphony, where the
middle voices are horizontally shifted.
-";
-filename = "collisions.ly";
-description = "random counterpoint to test collisions";
-enteredby = "HWN,JCN";
-copyright = "public domain";
-Tested = "test the Collision resolution ";
+"
+filename = "collisions.ly"
+description = "random counterpoint to test collisions"
+enteredby = "HWN,JCN"
+copyright = "public domain"
+Tested = "test the Collision resolution "
}
+\version "1.3.146"
\header{
texidoc="
Noteheads can have dots, and rests can too. Augmentation dots should
should go up, but in case of multiple parts, the down stems have down
shifted dots. (Wanske p. 186) In case of chords, all dots should be in
a column. The dots go along as rests are shifted to avoid collisions.
-";
+"
}
\score {
\context Voice \notes\relative c'' {
- \time 6/8;
+ \time 6/8
d4. g,,
<b''4. c d e> <f g a b>
<g b d> <c, g' d' a'>
+\version "1.3.146"
\header{
-texidoc = "Broken crescendi should look be open on one side.";
+texidoc = "Broken crescendi should look be open on one side."
}
\score { \notes \relative c'' {
c1 \< \break \! c1 \> \break \! c1
}
\paper {
- linewidth = 10.\cm;
+ linewidth = 10.\cm
}
}
+\version "1.3.146"
\header{
texidoc=" Dynamics appear below or above the staff. If multiple
dynamics are linked with (de)crescendi, they should be on the same
line. Isolated dynamics may be forced up or down.
- ";
+ "
}
\paper{
}
\midi{
-\tempo 1 = 60;
+\tempo 1 = 60
}
}
+\version "1.3.146"
\header {
-texidoc = "Crescendi may start off-notes. In that case, they should not collapse into flat lines.";
+texidoc = "Crescendi may start off-notes. In that case, they should not collapse into flat lines."
}
\score { \notes { \context Voice {
< f''1 { s4 s4 \< \! s4 \> \! s4 } >
}}
-\paper { linewidth = -1. ;}
+\paper { linewidth = -1. }
}
+\version "1.3.146"
\header {
-texidoc = " Ez-notation prints names in note heads.";
+texidoc = " Ez-notation prints names in note heads."
}
-\include "paper26.ly";
+\include "paper26.ly"
\paper { \paperTwentysix }
\score {
+\version "1.3.146"
\header{
texidoc="
As a last resort, the placement of grobs can be adjusted manually, by
setting the @code{extra-offset} of a grob.
-";
+"
}
\score{
\outputproperty #(make-type-checker 'mark-interface)
#'extra-offset = #'(-1 . 4)
}
- \mark A;
+ \mark A
d1
- \mark;
+ \mark \default
e
}
\paper{
- linewidth=-1.0;
+ linewidth=-1.0
}
}
+\version "1.3.146"
\header{
texidoc="
More specific settings take precendence over less specific settings. The
second slur has slurDirection set to down, overriding the stemup setting.
-";
+"
}
\slurDown
c4 ( )c4
}
- \paper { linewidth = -1.0; }
+ \paper { linewidth = -1.0 }
}
+\version "1.3.146"
\header{
The engraver does no time-keeping, so it involves some trickery to get
< @{ s8 s8 s4 @} @{ c4 \\gliss d4 @} > working correctly.
-";
+"
}
\score{
}
\paper{
- linewidth = 70.\mm;
+ linewidth = 70.\mm
\translator{
\StaffContext
% makes for handier debugging
- % \remove Clef_engraver;
+ % \remove Clef_engraver
}
}
}
+\version "1.3.146"
\header{
texidoc="
Grace notes without beams should have a slash, if @code{flagStyle} is
not set. Main note scripts don't end up on the grace note.
-";
+"
}
\score {\notes \context Voice = VA \relative c'' {
% \grace c16 [c8 c8]
\grace { \property Grace.graceAlignPosition = \right c16} c4
}
-\paper {linewidth = -1.;}
+\paper {linewidth = -1.}
\midi{ }
}
+\version "1.3.146"
\header {
texidoc = "Hairpin dynamics start under notes if there are
no text-dynamics. If there are text dynamics, the hairpin does not run
-into them.";
+into them."
}
\score {
\notes \relative c'' { c4 \> c4 \! c4 c4_\ff \> c4 \! c4 \p }
-\paper { linewidth = -1.;}
+\paper { linewidth = -1.}
}
+\version "1.3.146"
\header{
texidoc="
Hara kiri staffs kill themselves if they are empty. This example really
contains two staffs, but the second contains only spaces, and is
therefore removed. Also, any staff brackets and braces are removed.
-";
+"
}
zager = \context Staff = zager \notes \relative c'' {
- \clef treble;
+ \clef treble
c1
}
zoger = \context Staff = zoger \notes \relative c'' {
- \clef treble;
- \skip 1* 1;
+ \clef treble
+ \skip 1* 1
}
zagers = \context GrandStaff <
>
>
\paper{
- linewidth = 80.0\mm;
+ linewidth = 80.0\mm
\translator { \HaraKiriStaffContext }
%uh?
+\version "1.3.146"
\header { texidoc = "Key signatures can be set per pitch
individually. This can be done bby setting @code{Staff.keySignature}
-directly.";
+directly."
}
\score { \notes
+\version "1.3.146"
\header{
texidoc="
Key signatures appear on key changes. They may also
appear without barlines. The restoration accidentals are not printed at
the start of the line. If @code{createKeyOnClefChange} is set, they're
also created on a clef change.
-";
+"
}
\notes \relative c''
{
\property Staff. createKeyOnClefChange = ##t
- \key bes \major; c2
-% \key c \major; % \minor;
- \key es \major; % \minor;
+ \key bes \major c2
+% \key c \major % \minor
+ \key es \major % \minor
c2
\break
- \key bes \major; % \major;
- c2 \clef alto; c2 \key d \major; \clef treble; c2
+ \key bes \major % \major
+ c2 \clef alto c2 \key d \major \clef treble c2
\property Staff. keySignature = #'((2 . -1) (6 . -1) (4 . -1))
e2
}
+\version "1.3.146"
\header{
texidoc="
Lyrics can be set to a melody automatically. Excess lyrics will be
@code{\rhythm} ignores any other rhythms in the piece. Hyphens and
extenders do not assume anything about lyric lengths, so they continue
to work.
-";
+"
-filename = "twinkle-pop.ly";
-xtitle = "Ah, vous dirais-je, maman ";
-description = "twinkle twinkle in pop-song-settings";
-composer = "traditional";
-enteredby = "HWN, chords by Johan Vromans";
-copyright = "public domain";
+filename = "twinkle-pop.ly"
+xtitle = "Ah, vous dirais-je, maman "
+description = "twinkle twinkle in pop-song-settings"
+composer = "traditional"
+enteredby = "HWN, chords by Johan Vromans"
+copyright = "public domain"
}
+\version "1.3.146"
\header{
texidoc="Lyric phrasing
@end example
Only lyrics that are followed by '__' while there's a melisma,
- are left-aligned, in this case the third x.";
+ are left-aligned, in this case the third x."
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\addlyrics
\context Voice = "v" \notes \relative c'' {
+\version "1.3.146"
\header{
texidoc="
Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that
lyrics don't collide with barlines.
-";
+"
}
\score {
\context StaffGroup <
\notes \context Staff {
- b1 \bar "|:"; b1 \bar ":|";
+ b1 \bar "|:" b1 \bar ":|"
}
\lyrics\context Lyrics <
\context LyricsVoiceWithBars {
\notes \context Staff = SB { b1 b1 }
>
\paper {
- linewidth = -1.0\cm;
+ linewidth = -1.0\cm
\translator {
\LyricsContext
- \accepts "LyricsVoiceWithBars";
+ \accepts "LyricsVoiceWithBars"
}
\translator {
\LyricsVoiceContext
- \consists "Bar_engraver";
- \name "LyricsVoiceWithBars";
+ \consists "Bar_engraver"
+ \name "LyricsVoiceWithBars"
}
\translator {
\LyricsVoiceContext
+\header {
+texidoc = "Lyrics syllables are aligned according to
+ punctuation. Stanza and stz set stanza numbers. "
+
+}
\score {
\addlyrics
- \notes \relative c'' \context Voice = duetto { \time 3/4; g2 e4 a2 f4 g2. }
+ \notes \relative c'' \context Voice = duetto { \time 3/4 g2 e4 a2 f4 g2. }
\lyrics \context Lyrics <
\context LyricsVoice = "duet-1" {
\property LyricsVoice . stanza = "Bert"
\property LyricsVoice . stanza = "Ernie"
Ooooo, ch\'e -- ri, je t'aime. }
>
- \paper { linewidth = -1.0;}
+ \paper { linewidth = -1.0}
}
+\version "1.3.146"
\header {
-texidoc = "There is limited support for mensural notation: note head shapes are available. Mensural stems are centered on the note heads, both for up and down stems.";
+texidoc = "There is limited support for mensural notation: note head shapes are available. Mensural stems are centered on the note heads, both for up and down stems."
}
\score {\notes { \context Voice {
+\version "1.3.146"
\header{
texidoc="
the signs for four, two, and one measure rest are combined to
produce the graphical representation of rests for up to 10 bars.
The number of bars will be written above the sign.
-";
+"
}
thenotes = \notes \relative cis' {
\property Score. skipBars = ##t
-\time 4/4;
+\time 4/4
R1 |
R1*1 |
R1*2 |
+\version "1.3.146"
\header { texidoc=" You can write molecule callbacks in Scheme, thus
providing custom glyphs for notation elements. A simple example is
The parenthesized beam is less successful due to implementation of the
Beam. The note head is also rather naive, since the extent of the
parens are also not seen by accidentals.
-";
+"
}
(popen (ly-find-glyph-by-name fn "accidentals-("))
(subject (callback grob))
- ;; remember old size
+ ; remember old size
(subject-dims (ly-get-molecule-extent subject 0))
)
- ;; add parens
+ ; add parens
(set! subject
(ly-combine-molecule-at-edge
(ly-combine-molecule-at-edge subject 0 1 pclose 0.2)
0 -1 popen 0.2))
- ;; revert old size.
+ ; revert old size.
(ly-set-molecule-extent! subject 0 subject-dims)
subject
)
}
- \paper { linewidth = -1.; }
+ \paper { linewidth = -1. }
}
\header{
+
texidoc="
Multiple measure rests do not collide with barlines and clefs. They
are not expanded when you set @code{Score.skipBars}. Although the
multi-measure-rest is a Spanner, minimum distances are set to keep it
colliding from barlines.
-";
+"
+
}
-\score { \notes { \time 3/4; \key cis \major;
+\score { \notes { \time 3/4 \key cis \major
R2.*15 R2. R2.*7 }
\paper {
\translator {
\ScoreContext
skipBars = ##t
}
- linewidth = -1.;
+ linewidth = -1.
}
}
+\version "1.3.146"
\header{
texidoc="
Text is set with empty horizontal dimensions. The boolean property
textNonEmpty is used to respect the horizontal size of text.
-";
+"
}
\score { \notes {
\property Voice.TextScript \override #'no-spacing-rods = ##f
}
\paper {
- linewidth = -1.0;
+ linewidth = -1.0
}
}
+\version "1.3.146"
\header{
texidoc="
Note head shapes are settable. The stem endings should be adjusted
Harmonic notes have a different shape and different
dimensions. Nevertheless, noteheads in both styles can be combined, on
either up or down stems.
-";
+"
}
+\include "paper23.ly"
-
-\score { \notes \relative c{
-
-c''4 c2 c8 c16 c16 c1 c\breve
+\score { \notes \relative c''{
+% \property Voice.Stem \override #'thickness = #5.0
+\property Voice.NoteHead \set #'style = #'default
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
\property Voice.NoteHead \set #'style = #'diamond
-c4 c2 c8 c16 c16 c1 c\breve
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
\property Voice.NoteHead \set #'style = #'transparent
-c4 c2 c8 c16 c16 c1 c\breve
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
\property Voice.NoteHead \set #'style = #'cross
-c4 c2 c8 c16 c16 c1 c\breve
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
+\property Voice.NoteHead \set #'style = #'xcircle
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
+\property Voice.NoteHead \set #'style = #'slash
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
\property Voice.NoteHead \set #'style = #'mensural
-c4 c2 c8 c16 c16 c1 c\breve c\longa
+c4 c2 c8 c16 c16 c1 c\breve c\longa b4 b2 b8 b16 b16 b1 b\breve b\longa \break
\property Voice.NoteHead \set #'style = #'harmonic
-c4 c2 c8 c16 c16 c1 c\breve
+c4 c2 c8 c16 c16 c1 c\breve b4 b2 b8 b16 b16 b1 b\breve \break
\property Voice.NoteHead \set #'style = #'baroque
-c4 c2 c8 c16 c16 c1 c\breve c\longa
+c4 c2 c8 c16 c16 c1 c\breve c\longa b4 b2 b8 b16 b16 b1 b\breve b\longa \break
- \context Voice <
+ \context Voice = another <
\context Thread = TA
{
\property Thread.NoteHead \set #'style = #'cross
>
- \context Voice <\context Thread = TA {
- \property Thread.NoteHead \set #'style = #'default
- c4 c4 }
-\context Thread = TB {
- \property Thread.NoteHead \set #'style = #'mensural
- c'4 \stemDown c
+ \context Voice <
+ \context Thread = TA {
+ \property Thread.NoteHead \set #'style = #'cross
+ c4 c4 c4 c4 }
+ \context Thread = TB {
+ \property Thread.NoteHead \set #'style = #'mensural
+ c'4 \stemDown c
+ \property Thread.NoteHead \set #'style = #'slash
+ \stemUp c4 \stemDown c
} >
}
- \paper {
-
-
-}
+ \paper {}
}
+\version "1.3.146"
\header {
texidoc = "Note head lines (eg glissando)
-run between centers of the note heads.";
+run between centers of the note heads."
}
\include "paper20.ly"
\context Staff = up {
\property PianoStaff.connectArpeggios = ##t
\showStaffSwitch
- \clef F;
+ \clef F
c4 d \sd h a g8 f16 e32 d \su g2 \glissando a,4 \sd \break a2. \su g4 \glissando f1
}
\context Staff = down {
- \clef F; s1*4
+ \clef F s1*4
}
>
\paper {
- linewidth = 8.0 \cm;
+ linewidth = 8.0 \cm
}
}
+\version "1.3.146"
\header{
texidoc=" The number of stafflines of a staff can be set. Ledger
lines both on note heads and rests are adjusted. Barlines also are
-adjusted. ";
+adjusted. "
}
+\version "1.3.146"
\header {
-texidoc = "Measure and beat repeats are supported.";
+texidoc = "Measure and beat repeats are supported."
}
-\score { \notes \relative c' \context Voice { \time 4/4;
+\score { \notes \relative c' \context Voice { \time 4/4
\repeat "percent" 2 { c2 }
% the chairman dances
+\version "1.3.146"
\header {
-texidoc="Slurs play well with phrasing slur.";
+texidoc="Slurs play well with phrasing slur."
}
\score {
\notes\relative c'' {
- \time 6/4; c\((d)e f(e)\)d
+ \time 6/4 c\((d)e f(e)\)d
}
\paper {
- linewidth = -1.;
+ linewidth = -1.
}
}
+\version "1.3.146"
\header{
texidoc="
Folded. This doesn't make sense without alternatives, but it works.
-";
+"
}
\score {
+\version "1.3.146"
\header{
texidoc="
Across linebreaks, the left edge of a first and second alternative
bracket should be equal
-";
+"
}
\score {
+\version "1.3.146"
\header{
texidoc="
the number of repeats.
Unfolded behavior:
-";
+"
}
\score {
+\version "1.3.146"
\score { \notes \context Voice {
\repeat volta 3 c1
+\version "1.3.146"
\header{
texidoc="
Volta (Semi folded) behavior. Voltas can start on non-barline moments.
If they don't barlines should still be shown.
-";
+"
}
% no alts.
+\version "1.3.146"
\header{
texidoc="
Rests should not collide with beams, stems and noteheads. Rests may
inside the staff, and by half spaces outside. Notice that the half
and whole rests just outside the staff get ledger lines in different
cases.
-";
+"
}
scale = \notes \relative c' {
+\version "1.3.146"
\header {
texidoc = "whole and half rests moving outside the staff should get
-ledger lines";
+ledger lines"
}
+\version "1.3.146"
\header{
texidoc="
Rests. Note that the dot of 8th, 16th and 32nd rests rest should be
next to the top of the rest. All rests except the whole rest are
centered on the middle staff line.
-";
+"
}
\score { \notes {
- \time 4/4;
+ \time 4/4
r \longa * 1/4 r\breve * 1/2
r1 r2 r4 r8 r16 r32 r64 r128 r128
-\time 6/4;
+\time 6/4
r1. r2. r4. r8. r16. r32. r64. r128. r128.
}}
+\version "1.3.146"
\header{
texidoc="
Fonts are available in a default set of sizes: 11, 13, 16, 20, 23 and
26pt staffheight. Sizes of the text fonts and symbol fonts are made
to match the staff dimensions.
-";
+"
}
\include "paper11.ly"
-\include "allfontstyle.ly";
+\include "allfontstyle.ly"
+\version "1.3.146"
\include "paper13.ly"
-\include "allfontstyle.ly";
+\include "allfontstyle.ly"
+\version "1.3.146"
\include "paper16.ly"
-\include "allfontstyle.ly";
+\include "allfontstyle.ly"
+\version "1.3.146"
\include "paper20.ly"
-\include "allfontstyle.ly";
+\include "allfontstyle.ly"
+\version "1.3.146"
\include "paper23.ly"
-\include "allfontstyle.ly";
+\include "allfontstyle.ly"
+\version "1.3.146"
\include "paper26.ly"
-\include "allfontstyle.ly";
+\include "allfontstyle.ly"
+\version "1.3.146"
\header{
texidoc="
Slurs should be attached to note heads, except when they would collide
with beams. Also see: ophee-slurs.
-";
+"
}
\score{
\notes \relative c''{
a4() a8 a
}
\paper{
- indent = 0.0;
- linewidth = 100.\mm;
+ indent = 0.0
+ linewidth = 100.\mm
}
}
+\version "1.3.146"
\header{
texidoc="
just after the preferatory matter, and on the right to the end of the
staff. A slur should follow the same vertical direction it would have
in unbroken state.
-";
+"
}
\score{
\notes \relative c''{
e1( \break) a,
- \time 2/4;
+ \time 2/4
e'2( \break) a,(\break
a2\break
)e'2
}
\paper {
- linewidth=40.\mm;
- indent=0.;
+ linewidth=40.\mm
+ indent=0.
}
}
+\version "1.3.146"
\header{
texidoc="
The same goes for slurs. They behave decently when broken across
linebreak.
-";
+"
}
r1
}
\context Staff=two \notes\relative c'{
- \clef bass;
+ \clef bass
s1 s1 s1 s1 s1 s1 s1 s1 s1 s1
}
>
+\version "1.3.146"
\header{
texidoc="
Slurs should look nice and symmetric. The curvature may increase
only to avoid noteheads, and as little as possible. Slurs never
run through noteheads or stems.
-";
+"
}
\score{
\notes\relative c''{
- \time 3/4;
+ \time 3/4
\slurUp
\stemBoth a ( \stemDown a \stemBoth ) a a( c )a a( e' )a, a( g' )a,
\stemUp a( e' )a,
\stemDown c( f, )c'
}
\paper{
- linewidth = 120.\mm;
+ linewidth = 120.\mm
}
}
+\version "1.3.146"
\score{
\notes\relative c''<
- \time 4/4;
+ \time 4/4
\context Staff{
f8(f f)f f(g g)f f(a a)f f(b b)f
}
}
>
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\score{
\notes\relative c'<
- \time 6/8;
+ \time 6/8
\context Staff{
e8(e)e e(d)e e(c)e e(b)e
}
}
>
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\header{
texidoc="
Loose:
-";
+"
}
\score {
- \notes { \time 2/2; c'2 c'2 \time 2/2; }
- \paper { linewidth = 5.0\cm;
- indent = 0.0;
+ \notes { \time 2/2 c'2 c'2 \time 2/2 }
+ \paper { linewidth = 5.0\cm
+ indent = 0.0
}
}
+\version "1.3.146"
\header{
texidoc="
Natural:
-";
+"
}
\score {
- \notes { \time 2/2; c'2 c'2 \time 2/2; }
- \paper { linewidth = -1.0 \cm;
- indent = 0.0;
+ \notes { \time 2/2 c'2 c'2 \time 2/2 }
+ \paper { linewidth = -1.0 \cm
+ indent = 0.0
}
}
+\version "1.3.146"
\header{
texidoc="
must stretch like the space within the measure.
Tight:
-";
+"
}
\score {
- \notes { \time 2/2; f''2 c'2 \time 2/2; }
- \paper { linewidth = 2.5 \cm;
- indent = 0.0;
+ \notes { \time 2/2 f''2 c'2 \time 2/2 }
+ \paper { linewidth = 2.5 \cm
+ indent = 0.0
}
}
+\version "1.3.146"
\header{
texidoc="
The staccato dot (and all scripts with follow-into-staff set), must
not be on staff lines.
-";
+"
}
\score {
\context Voice \notes\relative c {
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\header{
texidoc="
Staff margins are also markings attached to barlines. They should be
left of the staff, and be centered vertically wrt the staff. They may
be on normal staffs, but also on compound staffs, like the PianoStaff
-";
+"
}
\context Staff = treble {
\property PianoStaff.instrument = "Piano "
\property Staff.instrument = "Right " { c''4 }}
- \context Staff = bass { \property Staff.instrument = "Left " \clef bass; c4 }>
+ \context Staff = bass { \property Staff.instrument = "Left " \clef bass c4 }>
\paper {
-linewidth=-1.0;
+linewidth=-1.0
\translator { \ScoreContext
}
-\translator { \StaffContext \consists "Instrument_name_engraver"; }
-\translator { \PianoStaffContext \consists "Instrument_name_engraver"; }
+\translator { \StaffContext \consists "Instrument_name_engraver" }
+\translator { \PianoStaffContext \consists "Instrument_name_engraver" }
}}
--- /dev/null
+\header {
+texidoc = "Stanza numbers may differ for the first and following systems."
+}
+
+\score {
+
+< \context LyricsVoice \lyrics {
+
+\property LyricsVoice . stanza = "first"
+\property LyricsVoice . stz = "2nd"
+Foo1 Bar1 }
+
+\notes { c''1 \break c''1 }>}
+\version "1.3.146"
\header{
texidoc="
@c FIXME
Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}.
-";
+"
}
\score{
b''4 ~ b8()b8 e4 e,
}
\paper{
- stem_default_neutral_direction=-1.0;
+ stem_default_neutral_direction=-1.0
}
}
+\version "1.3.146"
\header{
texidoc="
Stems, beams, ties and slurs should behave similarly, when placed
on the middle staff line. Of course stem-direction is down for high
notes, and up for low notes.
-";
+"
}
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\header{
texidoc="
In a limited number of cases, LilyPond corrects for optical spacing
effects. In this example, space for opposite pointed stems is adjuste
-";
+"
}
\score {
\context Voice \notes\relative c {
- \time 12/4; c''4 c c c a f' f, a
+ \time 12/4 c''4 c c c a f' f, a
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\header{
texidoc="
Stem tremolos or rolls are tremolo signs that look like beam segments
crossing stems. If the stem is in a beam, the tremolo must be parallel
to the beam. If the stem is invisible (eg. on a whole note), the
tremolo must be centered on the note.
-";
+"
}
+\version "1.3.146"
\header{
texidoc="
boundaries should be explicit.
Pitches can be verified by printing them with the @code{NoteNames} context.
-";
+"
}
thenotes = \notes \relative cis' {
- \time 4/4;
+ \time 4/4
g'2 g ~ |
g g4 gis |
gis2 gis ~ |
g2 gis( |
)g! gis4 gis |
\break
- \key a \major;
+ \key a \major
gis2 gis ~ |
gis4 gis8 ~ gis g4 gis |
gis2 g ~ |
% Btw: I don't even know what the rule is for the second note in the
% next bar, if a reminder accidental was printed. These are really
% not very common cases. Technically, if it is not tied, it
- % should get an accidental; but it looks a bit silly and redundant.
+ % should get an accidental but it looks a bit silly and redundant.
% See last g.
)g! gis4 gis ~ | \break
+\version "1.3.146"
\header{
texidoc="
When tieing chords, the outer slurs point outwards, the inner slurs
point away from the center of the staff. Override with
@code{tieVerticalDirection}.
-";
+"
}
+\version "1.3.146"
\header {
-texidoc = "Ties should not collide with dots.";
+texidoc = "Ties should not collide with dots."
}
-\score{\notes{\time 9/8; \key f \major;\clef bass;
- g4 d8 bes4. ~ bes4 a8 \bar "|";
- a8 gis8 d8 f4. gis,4. \bar "|";
- a,4. ~ a,4 r8 r4 r8 \bar "|";
+\score{\notes{\time 9/8 \key f \major\clef bass
+ g4 d8 bes4. ~ bes4 a8 \bar "|"
+ a8 gis8 d8 f4. gis,4. \bar "|"
+ a,4. ~ a,4 r8 r4 r8 \bar "|"
c4. ~ c8 a8 g8 f8
}}
+\version "1.3.146"
\header{
texidoc="
Ties are strictly horizontal. They are placed in between note heads.
The horizontal middle should not overlap with a staffline.
-";
+"
}
\score{
\notes\relative c''{
%b2~b4~b8~b16~b32~b64 r64\break
%a2~a4~a8~a16~a32~a64 r64
- \time 8/4;
+ \time 8/4
d1 ~ d2~d4~d8~d16~d32~d64 r64\break
a1~ a2~a4~a8~a16~a32~a64 r64
%c2~c4~c8~c16~c32~c64 r64
}
\paper{
- linewidth=0.;
+ linewidth=0.
}
}
+\version "1.3.146"
\header {
texidoc="Simple beams. This broke somewhere < 1.3.110
-";
- title = "Gammes Chromatiques";
- composer = "";
- filename = "gammes_chromatiques.ly";
+"
+ title = "Gammes Chromatiques"
+ composer = ""
+ filename = "gammes_chromatiques.ly"
}
-linebreak = \penalty -1000;
+linebreak = \penalty #-1000
ex = \notes \relative c' {
\repeat "volta" 2 {
+\version "1.3.146"
\header{
texidoc="
Tuplets are indicated by a bracket with a number. There should be no
bracket if there is one beam that matches the length of the tuplet.
The bracket does not interfere with the stafflines, and the number is
centered in the gap in the bracket.
-";
+"
}
\score{
\notes \context Voice \relative c'' {
\times 2/3 { \times 2/3 { a8 b c} c }
\times 3/4 { c4 c4 c4 c4 }
- \time 6/8;
+ \time 6/8
\times 6/9 { c8 c c c c c c c c }
}
+\version "1.3.146"
\header {
-texidoc ="Broken volta spanners behave correctly at left edge in all cases.";
+texidoc ="Broken volta spanners behave correctly at left edge in all cases."
}
%}
voiceB = \notes {
- \clef bass;
+ \clef bass
\property Staff.instrument = "Bass"
\property Staff.instr = "B"
- \key f \minor;
- \time 4/4;
+ \key f \minor
+ \time 4/4
f,2 ( ) f,8 r8 f8 e8
\repeat volta 2
{
>
\paper {
- font_normal = 12.;
+ font_normal = 12.
\translator {
\StaffContext
- \consists Instrument_name_engraver;
+ \consists Instrument_name_engraver
}
}
}
+\version "1.3.146"
\header{
-filename = "rhythm.ly";
-enteredby = "HWN";
-copyright = "public domain";
-TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers";
+filename = "rhythm.ly"
+enteredby = "HWN"
+copyright = "public domain"
+TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"
}
ritme = \notes\transpose c'' {
- \time 4/4;
- \partial 8;
+ \time 4/4
+ \partial 8
c8 |
[a8~ a8. a8 a16 a16 a16] c4. | % watch the beams!
r32 r32 r16 r8 r4 r2 |
- \time 5/16;
+ \time 5/16
% divide measure in 5 equal parts. Usually it 2+3 or 3+2
[c8 c16 c8 ] | % watch THIS!
\times 5/4 { [ c16 c16 c16 c16] } |
- \time 2/8;
+ \time 2/8
c4 |
c4 c4 c4 c4
- \time 4/4;
+ \time 4/4
c1 c1 c1
% [c16 c16 c16 c16 ] |
another =
- \notes \relative c'' { \time 6/4;
- c1. c1. \time 4/4;c4 c4 c4 c4 c1 c1 c1
+ \notes \relative c'' { \time 6/4
+ c1. c1. \time 4/4c4 c4 c4 c4 c1 c1 c1
}
yanother =
- \notes{ \time 4/4;
+ \notes{ \time 4/4
c1 c1 c1 c4 c4 c4 c4 c1 c1 c1
}
%% remove Timing_engraver and Bar_number_engraver
\translator {
\ScoreContext
- \remove "Timing_engraver";
+ \remove "Timing_engraver"
}
\translator {
\RhythmicStaffContext
- \consists "Timing_engraver";
+ \consists "Timing_engraver"
}
\translator{
\StaffContext
- \consists "Timing_engraver";
+ \consists "Timing_engraver"
}
}
}
+\version "1.3.146"
\paper{
- indent=0.;
- linewidth=188.\mm;
+ indent=0.
+ linewidth=188.\mm
\translator{
\PianoStaffContext
+\version "1.3.146"
%K000.ly LilyPond 1.2.16
\paper {
\translator{\VoiceContext
%% huh?
- %%beamAutoBegin=0;
+ %%beamAutoBegin=0
autoBeamSettings \override #'(end 1 8 * *) = #(make-moment 3 8)
autoBeamSettings \override #'(end 1 16 * *) = #(make-moment 3 8)
autoBeamSettings \override #'(end 1 24 * *) = #(make-moment 1 8)
\score{
\context PianoStaff \notes<
\context Staff=up<
- \key d \major ;
-\time 3/8;
-\clef treble;
+ \key d \major
+\time 3/8
+\clef treble
\autochange Staff
\context Voice=va< \zs
\su
%a5
s8 \rh fis'' s|
%a6
-a''32 s fis'' s d'' s a' s d' s a s \bar "||";
-\key f \major;
+a''32 s fis'' s d'' s a' s d' s a s \bar "||"
+\key f \major
%a7
r16 a' f'8. d'16~
%a8
%a9
r16 a' f'8. d'16~
%a10
-d'16 g' e'8. cis'16 \bar "||";
-\key d \major;
+d'16 g' e'8. cis'16 \bar "||"
+\key d \major
%a11
r16 fis' d'8. g'16~
%a12
%a35
s32 e' cis' a s a' e' cis' s cis'' a' e'|
%a36
-\lh a'32 \rh[e'' cis'' a']\lh cis'' \rh[a'' e'' cis'']\lh a' \rh[a cis' e']\bar "||";
-\time 6/8;
+\lh a'32 \rh[e'' cis'' a']\lh cis'' \rh[a'' e'' cis'']\lh a' \rh[a cis' e']\bar "||"
+\time 6/8
%a37
gis''8 a'' gis'' a'' gis'' a''|
}
}>
>
\context Staff=down<
-\clef bass;
-\key d \major;
+\clef bass
+\key d \major
s4.*38
>>
}
+\version "1.3.146"
%{
Converted from star.mup with the aid of mup2ly.py
-http://www.Arkkra.com/doc/star.html
-http://www.Arkkra.com/doc/star.ps
+http://www.arkkra.com/doc/star.html
+http://www.arkkra.com/doc/star.ps
%}
\header{
- title="The Star Spangled Banner";
- subtitle="The United States National Anthem";
- poet="Text by Francis Scott Key";
- composer="J. S. Smith";
- arranger="Arranged by William J. Krauss";
- enteredby="jcn";
- copyright="public domain";
+ title="The Star Spangled Banner"
+ subtitle="The United States National Anthem"
+ poet="Text by Francis Scott Key"
+ composer="J. S. Smith"
+ arranger="Arranged by William J. Krauss"
+ enteredby="jcn"
+ copyright="public domain"
}
global = \notes {
- \time 3/4;
- \key d \major;
- \partial 4;
+ \time 3/4
+ \key d \major
+ \partial 4
}
staffBVoiceB = \notes {
% Ah, it seems that this context stops to exist just before
% the :| barline is set, and doesn't see its width?
% Ugly fix:
- Whose broad \bar "|.";
+ Whose broad \bar "|."
}
\context LyricsVoice = "one-2"
{
}
}
-\include "paper16.ly";
+\include "paper16.ly"
\score{
\context GrandStaff \notes <
\addlyrics
\context Staff=upper <
\global
- \clef treble;
+ \clef treble
\property Staff.automaticMelismata = ##t
\context Voice = one \transpose c'' {
\voiceOne
\staffBVoiceB
- \bar "|.";
+ \bar "|."
}
\context Voice = two \transpose c'' {
\voiceTwo
\context LyricsVoice = "one-1" \text
\context Staff=lower <
\global
- \clef bass;
+ \clef bass
\property Staff.VoltaBracket = \turnOff
\context Voice = three {
\voiceOne
>
\paper{
\paperSixteen
- textheight = 230.\mm;
- linewidth= 180.\mm;
+ textheight = 230.\mm
+ linewidth= 180.\mm
\translator {
\GrandStaffContext
- \accepts "Lyrics";
+ \accepts "Lyrics"
}
\translator {
\LyricsVoiceContext
- \consists "Bar_engraver";
+ \consists "Bar_engraver"
}
}
\midi {
- \tempo 4 = 60;
+ \tempo 4 = 60
}
}
--- /dev/null
+\header {
+ texidoc="Jazz chord names, but with lower case names for minor chords";
+}
+
+#(assoc-set! chord::names-alist-jazz
+ '((0 . 0) (2 . -1)) '(""))
+
+#(assoc-set! chord::names-alist-jazz
+ '((0 . 0) (2 . -1) (4 . 0) (6 . -1)) '("7"))
+
+#(define (pitch->chord-name-text-banter pitch additions)
+ (let ((name (pitch->text-banter pitch)))
+ (if (member '(2 . -1) (map pitch->note-name additions))
+ (cons (string-append
+ (string-downcase (substring (car name) 0 1))
+ (substring (car name) 1))
+ (cdr name))
+ name)))
+
+\score {
+ <
+ \property ChordNames.ChordName \set #'style = #'jazz
+ \context ChordNames \chords { c1 c:m c:m7 }
+ >
+}
+\version "1.3.146"
\score{
\notes\relative c''{
\paper{
}
\midi{
-\tempo 1 = 60;
+\tempo 1 = 60
}
}
+\version "1.3.146"
%
% TODO: what's this?
%
global = \notes {
- \key a \minor;
- \time 6/4;
-% \skip 1.*34;
-% \bar ".|";
+ \key a \minor
+ \time 6/4
+% \skip 1.*34
+% \bar ".|"
}
melody = \notes\relative c''{
>
\context Staff=down <
\global
- \clef bass;
+ \clef bass
\autochange Staff \context Voice \accompany
>
>
\paper {
- indent = 8.\mm;
- textheight = 295.\mm;
+ indent = 8.\mm
+ textheight = 295.\mm
\translator{
\PianoStaffContext
\translator{
\StaffContext
% don't auto-generate bars: not a good idea: -> no breakpoints
- % barAuto = "0";
+ % barAuto = "0"
% urg defaultBarType = #""
defaultBarType = #""
- \remove "Time_signature_engraver";
+ \remove "Time_signature_engraver"
Slur \override #'direction = #1
}
}
\midi {
- \tempo 4 = 54;
+ \tempo 4 = 54
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
- \time 3/4;
+ \time 3/4
cisis'' cisis! cisis? |
cis cis! cis? |
c c! c? |
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
- c''4 c4 cis4 cis [c8 c \clef "bass"; f,, f]
+ c''4 c4 cis4 cis [c8 c \clef "bass" f,, f]
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\header {
texidoc= "Using make-music, you can add
various stuff to notes. Here is an example
how to add an extra fingering.
In general, first do a display of the music you want ot
-create, then write a function that will build the structure for you.";
+create, then write a function that will build the structure for you."
}
#(define (make-script x)
+\version "1.3.146"
%{
See scm/chord-names.scm: chord::names-alist-american
#(set! chord::names-alist-american
(append
'(
- ;; any changes here, see scm/chord-name.scm
+ any changes here, see scm/chord-name.scm
)
chord::names-alist-american))
+\version "1.3.146"
\header {
- title = "ancient font test";
- date = "2000";
+ title = "ancient font test"
+ date = "2000"
}
\property Voice.NoteHead \override #'style = #'mensural
\property Voice.Stem \override #'stem-centered = ##t
\property Staff.Custos \override #'style = #'vaticana
- \clef "vaticana_fa2";
+ \clef "vaticana_fa2"
c2 d e f g
% \property Staff.clefGlyph = #"clefs-vaticana_do"
% \property Staff.clefPosition = #1
% \property Staff.clefOctavation = #0
- \clef "vaticana_do2";
+ \clef "vaticana_do2"
a b c'
b a g f
- \clef "vaticana_fa1";
- e d c1 \bar "|";
+ \clef "vaticana_fa1"
+ e d c1 \bar "|"
\property Staff.Custos \override #'style = #'medicaea
- \clef "medicaea_fa2";
+ \clef "medicaea_fa2"
c2 d e f g
- \clef "medicaea_do2";
+ \clef "medicaea_do2"
a b c'
b a g f
- \clef "medicaea_fa1";
- e d c1 \bar "|";
+ \clef "medicaea_fa1"
+ e d c1 \bar "|"
\property Staff.Custos \override #'style = #'hufnagel
- \clef "hufnagel_fa2";
+ \clef "hufnagel_fa2"
c2 d e f g
- \clef "hufnagel_do2";
+ \clef "hufnagel_do2"
a b c'
b a g f
- \clef "hufnagel_fa1";
- e d c1 \bar "||";
+ \clef "hufnagel_fa1"
+ e d c1 \bar "||"
}
>
\property Voice.NoteHead \override #'style = #'mensural
\property Voice.Stem \override #'stem-centered = ##t
\property Staff.Custos \override #'style = #'mensural
- \clef "mensural1_c2";
+ \clef "mensural1_c2"
c2 d e f g
\property Staff.forceClef = ##t
- \clef "mensural1_c2";
+ \clef "mensural1_c2"
a b c'
b a g f
- \clef "mensural2_c2";
- e d c1 \bar "|";
+ \clef "mensural2_c2"
+ e d c1 \bar "|"
- \clef "mensural2_c2";
+ \clef "mensural2_c2"
c2 d e f g
\property Staff.forceClef = ##t
- \clef "mensural3_c2";
+ \clef "mensural3_c2"
a b c'
b a g f
- \clef "mensural3_c2";
- e d c1 \bar "|";
+ \clef "mensural3_c2"
+ e d c1 \bar "|"
- \clef "mensural1_f";
+ \clef "mensural1_f"
c2 d e f g
\property Staff.forceClef = ##t
- \clef "mensural1_f";
+ \clef "mensural1_f"
a b c'
b a g f
- \clef "mensural2_f";
- e d c1 \bar "|";
+ \clef "mensural2_f"
+ e d c1 \bar "|"
\property Staff.forceClef = ##t
- \clef "mensural2_f";
+ \clef "mensural2_f"
c2 d e f g
- \clef "mensural_g";
+ \clef "mensural_g"
a' b' c''
b' a' g' f'
\property Staff.forceClef = ##t
- \clef "mensural_g";
- e' d' c'1 \bar "|";
+ \clef "mensural_g"
+ e' d' c'1 \bar "|"
\property Staff.forceClef = ##t
- \clef "mensural_g";
+ \clef "mensural_g"
c'2 d' e' f' g'
- \clef "hufnagel_do_fa";
+ \clef "hufnagel_do_fa"
a b c'
b a g f
\property Staff.forceClef = ##t
- \clef "hufnagel_do_fa";
- e d c1 \bar "||";
+ \clef "hufnagel_do_fa"
+ e d c1 \bar "||"
}
>
>
\paper {
% \paperTwentysix
- linewidth = 17.25\cm;
- textheight = 26.0\cm;
- indent = 0.0;
+ linewidth = 17.25\cm
+ textheight = 26.0\cm
+ indent = 0.0
\translator {
\StaffContext
- \consists Custos_engraver;
-% Custos \override #'style = #'mensural;
- \remove Time_signature_engraver;
+ \consists Custos_engraver
+% Custos \override #'style = #'mensural
+ \remove Time_signature_engraver
% StaffSymbol \override #'line-count = #4
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
- \time 4/4;
+ \time 4/4
g''1 a2 b4. c8
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
- \time 4/4;
+ \time 4/4
g''1 a2 b4. c8
\repeat "volta" 2 { a4 b c d } \alternative { { c c c c } { d2 d4 [d8 d] } }
+\version "1.3.146"
% test for ascii-art output
\score {
\notes\relative c'{
- \time 4/4;
+ \time 4/4
c8( e g )b
d( d d )d
- \bar "|.";
+ \bar "|."
}
\paper {
- linewidth=65.0\char;
+ linewidth=65.0\char
\translator { \StaffContext barSize = #9 }
%\translator { \VoiceContext beamHeight = #0 }
\translator { \VoiceContext beamHeight = ##f }
+\version "1.3.146"
\score{
\notes\relative c''{
- \time 4/8;
+ \time 4/8
%{
the default for 4/8 (see scm/auto-beam.scm)
+\version "1.3.146"
\score{
\notes \relative c''{
- \time 2/4;
+ \time 2/4
% one beam per measure
c8 c c c
c16 c c c c c c c
+\version "1.3.146"
\score{
\notes\relative c''{
% urg, avoid crash
\translator{
\VoiceContext
- \remove Tuplet_engraver;
+ \remove Tuplet_engraver
}
}
}
+\version "1.3.146"
%{
The auto-beam engraver has presets for common time signatures.
\score{
\notes \relative c''{
%{
- % urg: something breaks in grouping ; see input/bugs/time-grouping.ly
- \time 1/2;
+ % urg: something breaks in grouping see input/bugs/time-grouping.ly
+ \time 1/2
c8 c c c
c16 c c c c c c c
c32 c c c c c c c c c c c c c c c
- \time 1/4;
+ \time 1/4
c8 c
c16 c c c
c32 c c c c c c c
- \time 1/8;
+ \time 1/8
c8
c16 c
c32 c c c
%}
- \time 2/2;
+ \time 2/2
c8 c c c c c c c
c16 c c c c c c c c c c c c c c c
c32 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
- \time 2/4;
+ \time 2/4
c8 c c c
c16 c c c c c c c
c32 c c c c c c c c c c c c c c c
- \time 2/8;
+ \time 2/8
c8 c
c16 c c c
c32 c c c c c c c
- \time 3/2;
+ \time 3/2
c8 c c c c c c c c c c c
c16 c c c c c c c c c c c c c c c c c c c c c c c
- \time 3/4;
+ \time 3/4
c8 c c c c c
c16 c c c c c c c c c c c
c32 c c c c c c c c c c c c c c c c c c c c c c c
- \time 3/8;
+ \time 3/8
c8 c c
c16 c c c c c
c32 c c c c c c c c c c c
- \time 4/4;
+ \time 4/4
c8 c c c c c c c
c16 c c c c c c c c c c c c c c c
c32 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
- \time 4/8;
+ \time 4/8
c8 c c c
c16 c c c c c c c
c32 c c c c c c c c c c c c c c c
- \time 6/8;
+ \time 6/8
c8 c c c c c
c16 c c c c c c c c c c c
- \time 9/8;
+ \time 9/8
c8 c c c c c c c c
c16 c c c c c c c c c c c c c c c c c
}
+\version "1.3.146"
% bagpipe music.
\header
{
- title="Flower of Scotland";
+ title="Flower of Scotland"
}
\paper {
- linewidth = 14.0 \cm;
- indent = 0.0 \cm;
+ linewidth = 14.0 \cm
+ indent = 0.0 \cm
\translator {
\GraceContext
%
\score {
- \notes { \time 6/8; \partial 4;
+ \notes { \time 6/8 \partial 4
\tieUp
\slurUp
f4 |
)e8 d4 \gg d4 e8 |
\break
-\time 9/8;
+\time 9/8
\dblf f2.( )f4 d8 |
-\time 6/8;
+\time 6/8
\dblg g'4 a'8 \gg a'4. |
\thrd d4.( )d4 \eg a8 |
-\time 9/8;
+\time 9/8
\dble e4 \lag e8 \gg [e16 d8. e8] \gg f4 g'8 |
\break
-\time 6/8;
+\time 6/8
\gg f4 e8 \thrd d4. |
\eg a4.( )a4 d8 |
\dblg g'4 a'8 \gg a'4. |
+\version "1.3.146"
\header{
-enteredby = "jcn";
-copyright = "public domain";
-TestedFeatures = "Banter named chords";
+enteredby = "jcn"
+copyright = "public domain"
+TestedFeatures = "Banter named chords"
}
% test German (Banter) naming
% {
-#;(define chord::names-alist-banter '())
+#(define chord::names-alist-banter '())
#(set! chord::names-alist-banter
(append
'(
(((0 . 0) (2 . -1) (4 . -1)) . (("m" ("5-" . (type . "super")))))
- ; Co iso Cm5-7-
+ Co iso Cm5-7-
(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("o" (type "super")))
)))
+\version "1.3.146"
\score
{
\notes \relative c'' {
c4
-\bar "|."; c
-\bar "|:";c
-\bar "||";c
-\bar ":|" ; c
-\bar ".|"; c
-\bar ".|."; c
-\bar "|"; c
+\bar "|." c
+\bar "|:"c
+\bar "||"c
+\bar ":|" c
+\bar ".|" c
+\bar ".|." c
+\bar "|" c
}
}
+\version "1.3.146"
\score {
\translator{
\StaffContext
- \consists Bar_number_engraver;
+ \consists Bar_number_engraver
barNumberVisibilityFunction = #end-of-line-invisible
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\score{
}
\paper{
- linewidth = 60.0\mm;
+ linewidth = 60.0\mm
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
fragment = \notes {
a g f
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\score{
\notes\relative c''{
% \stemUp
[a b c d]
}
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\header{
texidoc="
up down down
up up down
-";
+"
}
\score {
[d a]
\property Voice.Beam \set #'dir-function = #beam-dir-majority
- \time 3/8;
+ \time 3/8
[d8 a a]
\property Voice.Beam \set #'dir-function = #beam-dir-mean
[d a a]
+\version "1.3.146"
\header {
texidoc = "
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.
-";
+"
}
-\paper { linewidth = -1.;}
+\paper { linewidth = -1.}
\score { \notes \relative c {
[d''8 a]
\property Voice.Beam \set #'dir-function = #beam-dir-mean
[d a]
}}
\score { \notes \relative c {
- \time 3/8;
+ \time 3/8
[d''8 a a]
\property Voice.Beam \set #'dir-function = #beam-dir-mean
[d a a]
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\score{
\context PianoStaff <
\context Staff=one \notes\relative c'{
s1
}
\context Staff=two \notes\relative c'{
- \clef bass;
+ \clef bass
% no knee
\stemUp [c8 \translator Staff=one \stemDown g'16 f]
s8
}
>
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
fragment = \notes {
[b b]
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\header{
-filename = "beam-pos.ly";
-composer = "jcn";
-enteredby = "jcn";
-copyright = "PD";
+filename = "beam-pos.ly"
+composer = "jcn"
+enteredby = "jcn"
+copyright = "PD"
-TestedFeatures = "beam quant positions";
+TestedFeatures = "beam quant positions"
}
\score{
+\version "1.3.146"
fragment = \notes {
[c'8 c]
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
%{
Have some fun beam quanting
+\version "1.3.146"
\header{
texidoc="
Beams over rests.
-";
+"
}
\score{
}
\paper{
- linewidth =-1;
+ linewidth =-1
}
}
+\version "1.3.146"
fragment = \notes {
[a''8 e' d c]
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\score{
\notes\relative c'{
[g16 a b c]
}
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\score{
\notes\relative c'{
[f8 a' g f]
}
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\score{
\notes\relative c''{
[g16 e f g]
}
\paper{
- linewidth = -1.;
+ linewidth = -1.
}
}
+\version "1.3.146"
\score{
\notes \relative c''{
}
\paper{
- indent = 0.0;
- linewidth = 60.0\mm;
+ indent = 0.0
+ linewidth = 60.0\mm
}
}
+\version "1.3.146"
\header{
-filename = "beams.ly";
-composer = "heu";
-enteredby = "jcn";
-copyright = "PD";
+filename = "beams.ly"
+composer = "heu"
+enteredby = "jcn"
+copyright = "PD"
-TestedFeatures = "beams and beamflags";
+TestedFeatures = "beams and beamflags"
}
\context GrandStaff <
\notes\transpose c' {
- \time 8/4;
+ \time 8/4
\stemUp [c8 c'' a' f']
\stemUp [c16 c'' a' f']
\stemUp [c32 c'' a' f']
<
\notes {
\transpose c' {
- \time 8/4;
+ \time 8/4
\stemDown [a'8 a, c e]
\stemDown [a'16 a, c e]
\stemDown [a'32 a, c e]
+\version "1.3.146"
\header {
texidoc = "overriding the molecule callback can also be used to draw a
TODO: check whether the corners are really correct.
- ";
+ "
}
#(define (box-molecule xext yext)
(ly-make-molecule
+\version "1.3.146"
a,
}
- \context Staff=two { \clef bass; \skip 1*2; }
+ \context Staff=two { \clef bass \skip 1*2 }
>
\paper{
- linewidth = 70.\mm;
+ linewidth = 70.\mm
\translator {
\ScoreContext
followVoice = ##t
+\version "1.3.146"
\header{
-enteredby = "jcn";
-copyright = "PD";
+enteredby = "jcn"
+copyright = "PD"
TestedFeatures = "This file tests Feta embedded slurs" +
- "(Feta definitively is not an abbreviation of Font-En-TjA)";
+ "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
\broken
}
\paper{
- indent = 0.0\pt;
+ indent = 0.0\pt
%for broken!
- linewidth= 30.\mm;
+ linewidth= 30.\mm
}
}
+\version "1.3.146"
\header {
texidoc = " Small caps is available as font-shape caps.
- "; }
+ " }
shapeSC = \property Lyrics.LyricText \override #'font-shape = #'caps
shapeNorm = \property Lyrics.LyricText \revert #'font-shape
\notes \relative c'' { c4 c4 c8 c8 }
\lyrics \context Lyrics {
what4 is4 \shapeSC Bud8 -- dha?8 }>
-\paper { linewidth = -1.;}
+\paper { linewidth = -1.}
}
+\version "1.3.146"
\header{
texidoc="property chordChanges: only display chord names when
there's a change in the chords scheme, but always display the
chord name after a line break.
-";
+"
}
scheme = \chords {
\context Staff \transpose c'' \scheme
>
\paper{
- linewidth = 40 * \staffspace;
+ linewidth = 40 * \staffspace
\translator {
\ChordNamesContext
chordChanges = ##t
+\version "1.3.146"
\header{
-enteredby = "jcn";
-copyright = "public domain";
-TestedFeatures = "chord inversions";
+enteredby = "jcn"
+copyright = "public domain"
+TestedFeatures = "chord inversions"
}
inversions = \notes\transpose c''\chords{
+\version "1.3.146"
\header{
-filename = "chord-table.ly";
-copyright = "public domain";
-enteredby = "jcn";
+filename = "chord-table.ly"
+copyright = "public domain"
+enteredby = "jcn"
}
tab = \notes\transpose c'''\chords{
\context ChordNames=b \notes\transpose b,\tab
>
\paper{
- textheight = \vsize - 4.0 * \staffheight;
+ textheight = \vsize - 4.0 * \staffheight
}
}
+\version "1.3.146"
%{
C# cis
Cb ces
- Cm; Cmin c:3-; c:m; c:min
- Caug c:5+; c:aug;
- Cdim c:3-.5-; c:dim
- Cmaj7 c:7+; c:maj
+ Cm Cmin c:3- c:m c:min
+ Caug c:5+ c:aug
+ Cdim c:3-.5- c:dim
+ Cmaj7 c:7+ c:maj
C7 c:7
- Csus; Csus4 c:4; c:sus
+ Csus Csus4 c:4 c:sus
%}
s1 s1 s1
s1 s1
s1
- \key g \major; s1
- \key d \major; s1
- \key a \major; s1
- \key e \major; s1
- \key b \major; s1
- \key fis \major; s1
- \key c \major; s1
- \key f \major; s1
- \key bes \major; s1
- \key es \major; s1
- \key as \major; s1
- \key des \major; s1
- \key ges \major; s1
- \key c \major; s1*2
- \key c \major; s1*6
+ \key g \major s1
+ \key d \major s1
+ \key a \major s1
+ \key e \major s1
+ \key b \major s1
+ \key fis \major s1
+ \key c \major s1
+ \key f \major s1
+ \key bes \major s1
+ \key es \major s1
+ \key as \major s1
+ \key des \major s1
+ \key ges \major s1
+ \key c \major s1*2
+ \key c \major s1*6
}
\score{
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
-\clef "bass_8"; c4
+\clef "bass_8" c4
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
% The volta texts should read: 1-4 and 5
% Not 1 and 2
% (see 1.2.17)
}
-%;
+%
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
% Ugh, we need to override some LaTeX titling stuff
\header {
- title = "Ouvertüre\\vrule width0pt height 0pt depth 1ex";
- subtitle = "\\normalsize Zu Heinrich Joseph v. Collins Trauerspiel\\vrule width0pt height 0pt depth 1ex";
- subsubtitle = "\\Large\\bf Coriolan";
- opus = "Op. 62";
- piece = "\\hspace*{30mm}\\normalfont\\large Allegro con brio";
- composer = "Ludwig van Beethoven (1770-1827)";
- enteredby = "JCN";
+ title = "Ouvertüre\\vrule width0pt height 0pt depth 1ex"
+ subtitle = "\\normalsize Zu Heinrich Joseph v. Collins Trauerspiel\\vrule width0pt height 0pt depth 1ex"
+ subsubtitle = "\\Large\\bf Coriolan"
+ opus = "Op. 62"
+ piece = "\\hspace*{30mm}\\normalfont\\large Allegro con brio"
+ composer = "Ludwig van Beethoven (1770-1827)"
+ enteredby = "JCN"
}
#(define raisedflat '((raise . 0.4) (music (named "accidentals--1"))))
flauti = \notes \relative c' {
\property Staff.instrument = #"2 Flauti"
\property Staff.instr = #"Fl."
- \time 4/4;
+ \time 4/4
c1
\break c
% \break c
% \break c
- \bar"|.";
+ \bar"|."
}
oboi = \notes \relative c' {
\context StaffGroup ="timpani" <
\context Staff ="timpani" \timpani
{
- \skip 1;
+ \skip 1
% Hmm: this forces a staff-bracket, that's good!
% However, I can't find where is decided on staff-bracket yes/no
}
>
\paper {
\paperSixteen
- indent=100.0\mm;
- linewidth=150.0\mm;
+ indent=100.0\mm
+ linewidth=150.0\mm
\translator {
\HaraKiriStaffContext
}
+\version "1.3.146"
\score{
\notes\relative c''{
\paper{
}
\midi{
-\tempo 1 = 60;
+\tempo 1 = 60
}
}
+\version "1.3.146"
fragment = \notes {
}
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\paper {
CueVoiceContext = \translator {
\VoiceContext
- \name CueVoice;
+ \name CueVoice
NoteHead \override #'font-relative-size = #-1
Stem \override #'font-relative-size = #-1
Beam \override #'font-relative-size = #-1
TextScript \override #'font-relative-size = #-1
Slur \override #'font-relative-size = #-1
Accidentals \override #'font-relative-size = #-1
- };
+ }
\translator{ \CueVoiceContext }
StaffContext = \translator{\StaffContext
- \accepts "CueVoice";
- };
+ \accepts "CueVoice"
+ }
}
\paper {
StaffContext = \translator{
\StaffContext
- \remove "Time_signature_engraver";
- };
+ \remove "Time_signature_engraver"
+ }
\translator { \StaffContext }
\translator{
\VoiceContext
- \remove "Auto_beam_engraver";
+ \remove "Auto_beam_engraver"
}
\translator {
\ScoreContext
+\version "1.3.146"
\score { \notes { c'1 \break < d'1 f' a'> }
\paper {\translator { \StaffContext
-\consists Custos_engraver;
+\consists Custos_engraver
}}
}
+\version "1.3.146"
\header { texidoc = "
The direction of a perfectly centred beams can be
controlled through @code{Voice.Beam}'s grob-property
@code{default-neutral-direction}
-";}
+"}
-\paper { linewidth = -1.;}
+\paper { linewidth = -1.}
\score {\notes \relative c {
[b''8 b]
\property Voice.Beam \set #'default-neutral-direction = #-1
+\version "1.3.146"
% barline spacing disrupts visual rhythm.
>
\paper{
- linewidth = -1.0\cm;
+ linewidth = -1.0\cm
\translator{
\ScoreContext
BreakAlignment \override #'space-alist = #nbal
- \remove Timing_engraver;
+ \remove Timing_engraver
}
\translator{
\StaffContext
- \consists Timing_engraver;
+ \consists Timing_engraver
}
}
}
+\version "1.3.146"
% a few 32nds shouldn't stretch spacing enormously.
\score {
-\notes { \time 3/4;
+\notes { \time 3/4
\relative c'{
g'8. c16 es8. d16 c8. bes32 as g8. c,16
es4 r8 es |
}
}
-\paper { linewidth = -1.0; }
+\paper { linewidth = -1.0 }
}
+\version "1.3.146"
\header{
texidoc="
Slurs can be forced to always attach to note heads.
-";
+"
}
fragment = \notes {
g''16()g()g()g()d'()d()d()d
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\score {
\context Staff \notes <
- \time 3/8;
+ \time 3/8
\context Voice=one \relative c'' {
\property Voice.Stem \set #'direction = #1
\property Voice.Tie \set #'direction = #1
a8()a~a
}
>
- \paper { linewidth = 40*\staffspace; }
+ \paper { linewidth = 40*\staffspace }
}
% see ly/drumpitch.ly for list of instruments and paper-kits.
% scm/midi.scm for list of midi-drumkits.
-\include "drumpitch.ly";
+\include "drumpitch.ly"
-\version "1.3.142"
+\version "1.3.146"
drh = \notes { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
drl = \notes {\repeat "unfold" 3 {bd4 sn8 bd bd4 <bd ss>} bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
<
\context TwoLineStaff=timbst \notes <
\property Staff.instrument="timbales"
- \clef "percussion";
+ \clef "percussion"
\apply #(drums->paper 'timbales) \timb
>
\context Staff=drumst \notes <
\property Staff.instrument="drums"
- \clef "percussion";
+ \clef "percussion"
\apply #(drums->paper 'drums) <
\context Voice=voa {\stemUp \drh }
\context Voice=vob {\stemDown \drl }
\paper {
\translator {
\StaffContext
- \consists Instrument_name_engraver;
+ \consists Instrument_name_engraver
Script \override #'padding = #0.5
}
\translator {
\StaffContext
- \name TwoLineStaff;
- \alias Staff;
- \consists Instrument_name_engraver;
- StaffSymbol \override #'line-count = #2;
- BarLine \override #'bar-size = #2;
+ \name TwoLineStaff
+ \alias Staff
+ \consists Instrument_name_engraver
+ StaffSymbol \override #'line-count = #2
+ BarLine \override #'bar-size = #2
}
\translator {
\ScoreContext
- \accepts TwoLineStaff;
+ \accepts TwoLineStaff
}
}
}
\drh
\drl
>
- \midi{ \tempo 4=120; }
+ \midi{ \tempo 4=120 }
}
+\version "1.3.146"
%non of the dynamics properties work anymore
+\version "1.3.146"
\header {
texidoc = "By inserting the @TeX{} command \embeddedps, you can
insert postscript directly into the output.
TODO: make molecule-callback to do this.
- ";
+ "
}
\score {
s2
a'1
}
- \paper { linewidth = 70 * \staffspace; }
+ \paper { linewidth = 70 * \staffspace }
}
+\version "1.3.146"
#(begin (newline)(display "hello world")(newline))\score{
\notes\relative c'{ c }
+\version "1.3.146"
fragment = \notes {
a''^"3 $\\times$ \\`a deux"
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
%
% TODO: junkme.
%
\context StaffGroup ="timpani" <
\context Staff ="timpani" \timpani
{
- \skip 1;
+ \skip 1
% Hmm: this forces a staff-bracket, that's good!
% However, I can't find where is decided on staff-bracket yes/no
}
>
>
\header{
- title = "Coriolan";
- subtitle = "Ouverture";
- opus = "Opus 62";
- composer = "Ludwig van Beethoven (1770-1827)";
- enteredby = "JCN";
- copyright = "public domain";
+ title = "Coriolan"
+ subtitle = "Ouverture"
+ opus = "Opus 62"
+ composer = "Ludwig van Beethoven (1770-1827)"
+ enteredby = "JCN"
+ copyright = "public domain"
}
\paper {
\paperSixteen
- indent=100.0\mm;
- linewidth=150.0\mm;
+ indent=100.0\mm
+ linewidth=150.0\mm
\translator {
\HaraKiriStaffContext
}
}
\midi {
- \tempo 1 = 60;
+ \tempo 1 = 60
}
}
+\version "1.3.146"
\header{
-texidoc="Explicit pitches and durations.";
+texidoc="Explicit pitches and durations."
}
\score {
\notes {
+\version "1.3.146"
%{
(Message vers:9)
To: Adrian Mariano <adrian@cam.cornell.edu>
}
>
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator{
\ScoreContext
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
% to see the magic: uncomment size stuff in init/paper20.ly
+\version "1.3.146"
% Example of figured bass, using text scripts.
% (An alternative is to use a lyrics line if you want the figures
% aligned vertically.)
\score{
\notes \relative c'{
- \clef bass;
+ \clef bass
c^"5" d^#natural g,^"7 6" [a8 e] |
fis4^"7 6" [g8 d] e4^"7 6" [f?8 c] |
+\version "1.3.146"
%
% test file to get a4 paper really filled,
% at a reasonably (small) value. -- jcn
%
\header{
-tagline="Ligly";
+tagline="Ligly"
}
-\include "paper13.ly";
+\include "paper13.ly"
\score{
\context Voice \notes\relative c'{
- \clef alto;
+ \clef alto
\repeat "unfold" 36 c1
}
\paper{
\paperThirteen
- indent = 0.0\mm;
+ indent = 0.0\mm
% URG
% Vertical space is rather precious when typesetting
% music. But we can only set textheight here, and must
% footers. If we want a header or footer on some page,
% all other pages suffer shortened `textheight'.
% Try the maximum for a4, without loosing footers:
- textheight = 297.0\mm - 7.0\mm;
- papersize = "a4";
- linewidth = 15.0\mm;
+ textheight = 297.0\mm - 7.0\mm
+ papersize = "a4"
+ linewidth = 15.0\mm
\translator {
\StaffContext
MinimumVerticalExtent = #(cons 0 0)
+\version "1.3.146"
\notes \context Voice = VA \relative c'' {
\grace {[b8^1 c^2]} d4^3
}
-\paper {linewidth = -1. ; }}
+\paper {linewidth = -1. }}
texidoc="
Theads can be traced automagically when they switch staffs by setting
property @code{followVoice}.
-";
+"
}
-\version "1.3.139"
+\version "1.3.146"
% followVoice: connect note heads with line when thread switches staff
fragment = \notes {
\translator Staff=two
b2 a
}
- \context Staff=two {\clef bass; \skip 1*2;}
+ \context Staff=two {\clef bass \skip 1*2}
>
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
% body for the font test. Does not work standalone
FontBody= \notes\transpose c''{
- \bar "|:";
- \time 4/4;
+ \bar "|:"
+ \time 4/4
\context Staff < \context Voice = VB { \stemUp e'\longa a\breve | }
\context Voice = VA { \stemDown
- c1 \clef "bass"; b,, \clef "violin"; c' a'
- c2 \clef "alto"; g c' \clef "violin"; a'
+ c1 \clef "bass" b,, \clef "violin" c' a'
+ c2 \clef "alto" g c' \clef "violin" a'
} >
\stemBoth
- c4 g c' a' \bar ":|";
+ c4 g c' a' \bar ":|"
a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata |
a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill|
a\fp-\reverseturn a4.\sf a4.\sfz | a4\fz % a\rf
[c8-\upprall a'8-\downprall] [a'-\segno c-\coda] |
[c \< d e f] [as' ges' f' e']
[cis' dis' c' des'] [cisis' disis' \! ceses' deses'] |
- \clef "bass";
+ \clef "bass"
r\longa * 1/4 r\breve *1/2
r1 r2 r4 r8 r16 r32 r64 r128 r128 |
\context Staff < \context Voice = VA { \stemUp r2 c'2 c,,,1 }
\context Voice = VB {\stemDown r2 c2 r1 }>
\stemBoth
- \clef "violin";
+ \clef "violin"
e8_. g'8-> e16^^ g'16_^
e32 _| g'32^| g''32-\ltoe g''32-\lheel
e64-\rtoe g'64-\rheel c4... |
\property Voice . noteHeadStyle = #'harmonic
\transpose c'{
- \time 4/4;
+ \time 4/4
\property Voice . TextScript \override #'font-style = #'Finger
\property Voice . noteHeadStyle = #'diamond
c1^"1" d2^"2" e4^"3"
a'^\flageolet
\property Voice . TextScript \override #'font-style = #'roman
- \time 1/2; a2 |
- \time 3/2; < a1.
+ \time 1/2 a2 |
+ \time 3/2 < a1.
{ s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} >
|
- \time 2/4; a2 |
- \time 5/4; a1.. |
- \time 6/8; a2. |
- \time 7/8; a2.. |
- \time 9/8; a1... |
- \time 12/8; a1. |
- \time 12/4;
+ \time 2/4 a2 |
+ \time 5/4 a1.. |
+ \time 6/8 a2. |
+ \time 7/8 a2.. |
+ \time 9/8 a1... |
+ \time 12/8 a1. |
+ \time 12/4
r1. r2. r4. r8. r16. r32. r64. r64. |
c2\sustainDown c\sustainUp |
}
+\version "1.3.146"
\header{
-title= "The Feta Font";
-subtitle = "proofsheet";
-enteredby = "jcn & hwn";
-copyright = "public domain";
-description = "This file tests the Feta music font, 11pt";
-% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+title= "The Feta Font"
+subtitle = "proofsheet"
+enteredby = "jcn & hwn"
+copyright = "public domain"
+description = "This file tests the Feta music font, 11pt"
+% "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
\FontBody
\paper{
\paperEleven
- linewidth = 17.5 \cm;
+ linewidth = 17.5 \cm
}
}
+\version "1.3.146"
\header{
-title= "The Feta Font";
-subtitle = "proofsheet";
-enteredby = "jcn & hwn";
-copyright = "public domain";
-description = "This file tests the Feta music font, 11pt";
-% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+title= "The Feta Font"
+subtitle = "proofsheet"
+enteredby = "jcn & hwn"
+copyright = "public domain"
+description = "This file tests the Feta music font, 11pt"
+% "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
\include "paper13.ly"
\paper{
-linewidth = 17.5 \cm;
+linewidth = 17.5 \cm
}
\include "font-body.ly"
+\version "1.3.146"
\header{
-title= "The Feta Font";
-subtitle = "proofsheet";
-enteredby = "jcn & hwn";
-copyright = "public domain";
-description = "This file tests the Feta music font";
-% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+title= "The Feta Font"
+subtitle = "proofsheet"
+enteredby = "jcn & hwn"
+copyright = "public domain"
+description = "This file tests the Feta music font"
+% "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
% don't change this.
% otherwise 16pt and 20pt layouts differ.
- linewidth = 12.5 \cm;}
+ linewidth = 12.5 \cm}
\include "font-body.ly"
+\version "1.3.146"
\header{
-title= "The Feta font";
-subtitle = "proofsheet";
-enteredby = "jcn";
-copyright = "public domain";
-description = "This file tests the Feta music-font in the 20pt version";
+title= "The Feta font"
+subtitle = "proofsheet"
+enteredby = "jcn"
+copyright = "public domain"
+description = "This file tests the Feta music-font in the 20pt version"
TestedFeatures =
- "(Feta definitively is not an abbreviation of Font-En-TjA)";
+ "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
\paper{
- linewidth = 17.5 \cm;
+ linewidth = 17.5 \cm
}
\include "font-body.ly"
+\version "1.3.146"
\header{
-title= "The Feta Font";
-subtitle = "proofsheet";
-enteredby = "jcn & hwn";
-copyright = "public domain";
-description = "This file tests the Feta music font";
-% "(Feta definitively is not an abbreviation of Font-En-TjA)";
+title= "The Feta Font"
+subtitle = "proofsheet"
+enteredby = "jcn & hwn"
+copyright = "public domain"
+description = "This file tests the Feta music font"
+% "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
\include "paper26.ly"
\paper{
- linewidth = 17.5 \cm;
+ linewidth = 17.5 \cm
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
>
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
% the Gm7sus4/D chord prints as Gm/4/7/D
% it took me quite a while by experiment to work out how to enter it -- PC
+\version "1.3.146"
%{
\context Voice = VB { \stemDown g4 g g g | \times 2/3 { g2 g2 g2 } | g4. g8 g2 | c1 }
>
\paper{
- linewidth = 9.\cm;
+ linewidth = 9.\cm
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
voiceOne = \notes \relative c'' {
\score{
\grandstaff
\paper{
- linewidth=80.0\mm;
+ linewidth=80.0\mm
- \translator { \VoiceContext noAutoBeaming = ##t; }
+ \translator { \VoiceContext noAutoBeaming = ##t }
\translator { \HaraKiriStaffContext }
- \translator { \OrchestralScoreContext skipBars = 1; }
+ \translator { \OrchestralScoreContext skipBars = 1 }
}
}
+\version "1.3.146"
\header {
-texidoc = "Hara kiri staffs disappear when empty ";
+texidoc = "Hara kiri staffs disappear when empty "
}
>
zager = \context Staff = zager \notes \relative c'' {
- \clef treble;
+ \clef treble
\property Staff.instrument = #"Zager"
\property Staff.instr = #"Zag."
c4^"zag" d e f
}
zoger = \context Staff = zoger \notes \relative c'' {
- \clef treble;
+ \clef treble
\property Staff.instrument = #"Zoger"
\property Staff.instr = #"Zog."
c4^"zog" d e f
- \skip 1*2;
+ \skip 1*2
\translator Staff=zager
\stemDown
c2 g2
a4 b c d
- \skip 1*1;
+ \skip 1*1
}
zagers = \context GrandStaff <
>
>
\paper{
- linewidth = 80.0\mm;
+ linewidth = 80.0\mm
\translator { \HaraKiriStaffContext }
%uh?
\translator { \OrchestralScoreContext }
+\version "1.3.146"
\score{
\context Staff <
- \time 4/4;
+ \time 4/4
\context Voice=one \partcombine Voice
\context Thread=one \notes\relative c'' {
a4 c4.()g8 a4 |
}
>
\paper{
- linewidth=140.\mm;
+ linewidth=140.\mm
\translator {
\VoiceContext
soloADue = ##f
+\version "1.3.146"
improOn = \notes {\translator Voice = impro }
improOff = \notes {\translator SquashVoice = melo }
-global = \notes { s1*3 \bar "|."; }
+global = \notes { s1*3 \bar "|." }
\score {
<
\paper {
\translator {
\VoiceContext
- \name SquashVoice;
- \alias Voice;
- \consists Pitch_squash_engraver;
- \consists Local_key_engraver;
- squashedPosition = 6;
+ \name SquashVoice
+ \alias Voice
+ \consists Pitch_squash_engraver
+ \consists Local_key_engraver
+ squashedPosition = 6
NoteHead \override #'style = #'slash
Accidentals \override #'transparent = ##t
}
\translator {
\VoiceContext
- \alias SquashVoice;
- \consists Local_key_engraver;
+ \alias SquashVoice
+ \consists Local_key_engraver
}
\translator {
\ScoreContext
- \accepts SquashVoice;
+ \accepts SquashVoice
}
\translator {
\StaffContext
- \remove Local_key_engraver;
- \accepts SquashVoice;
+ \remove Local_key_engraver
+ \accepts SquashVoice
}
- linewidth = -1;
+ linewidth = -1
}
}
+\version "1.3.146"
%{
Test of how to make an ``incipit'' to indicate scordatora
tuning of a violin part, using the clefStyle property.
violinincipit = \notes\relative c''{
- \clef "french";
- \time 2/2;
+ \clef "french"
+ \time 2/2
\property Staff.TimeSignature \override #'style = #'old
a4. b8 c4 fis |
% <b1 fis' b d>
}
bcincipit = \notes\relative c{
- \clef bass;
+ \clef bass
\property Staff.TimeSignature \override #'style = #'old
b2. cis4 |
\property Staff.TimeSignature \override #'style = #'C
violin = \notes\relative c''{
% Key signatures with different alterations in different octaves
% are broken since 1.3.58!
-% \specialkey \keysignature f' fis'' g' gis'';
- \key d \major;
- \time 2/2;
- \clef treble;
+% \specialkey \keysignature f' fis'' g' gis''
+ \key d \major
+ \time 2/2
+ \clef treble
a4. b8 c4 fis |
gis~ gis8 fis16^\trill ()e b8 c \context Staff<{\voiceOne a d}{\voiceTwo es,4}>|
}
BC = \notes\relative c{
- \key d \major;
- \time 2/2;
- \clef "bass";
+ \key d \major
+ \time 2/2
+ \clef "bass"
- \key;
+ \key \default
b2. cis4 |
d e fis g |
}
<
\context Staff = violin {\notes{
\property Staff.Clef \override #'transparent = ##t
- \violinincipit \bar ".|";
+ \violinincipit \bar ".|"
\property Staff.Clef \revert #'transparent
\endincipit
\violin
}}
\context Staff = BC{\notes{
\property Staff.Clef \override #'transparent = ##t
- \bcincipit \bar ".|";
+ \bcincipit \bar ".|"
\property Staff.Clef \revert #'transparent
\endincipit
\BC
+\version "1.3.146"
\score {
\paper {
-linewidth=-1.0;
+linewidth=-1.0
\translator { \StaffContext
- \consists "Instrument_name_engraver";
+ \consists "Instrument_name_engraver"
}
-\translator { \GrandStaffContext \consists "Instrument_name_engraver"; }
+\translator { \GrandStaffContext \consists "Instrument_name_engraver" }
}}
+\version "1.3.146"
%{
>
\paper {
\translator { \StaffContext
- \consists Instrument_name_engraver;
+ \consists Instrument_name_engraver
}
}
+\version "1.3.146"
\score {
\property Staff.instrument = "instr " { c''4 }}
\paper {
-linewidth=-1.0;
-\translator { \StaffContext \consists "Instrument_name_engraver"; }
+linewidth=-1.0
+\translator { \StaffContext \consists "Instrument_name_engraver" }
}}
+\version "1.3.146"
\include "paper16.ly"
\score { \notes
\relative cis' {
-% \clef french; % same as octaviated bass
-\clef violin;
-\key cis \major; cis1 \key ces \major; ces
-\clef soprano;
-\key cis \major; cis \key ces \major; ces
-\clef mezzosoprano;
-\key cis \major; cis \key ces \major; ces
-\clef alto;
-\key cis \major; cis \key ces \major; ces
-\clef tenor;
-\key cis \major; cis \key ces \major; ces
-\clef baritone;
-\key cis \major; cis \key ces \major; ces
-\clef bass;
-\key cis \major; cis \key ces \major; ces
+% \clef french % same as octaviated bass
+\clef violin
+\key cis \major cis1 \key ces \major ces
+\clef soprano
+\key cis \major cis \key ces \major ces
+\clef mezzosoprano
+\key cis \major cis \key ces \major ces
+\clef alto
+\key cis \major cis \key ces \major ces
+\clef tenor
+\key cis \major cis \key ces \major ces
+\clef baritone
+\key cis \major cis \key ces \major ces
+\clef bass
+\key cis \major cis \key ces \major ces
}
\paper{\paperSixteen}
+\version "1.3.146"
\score{
\context PianoStaff <
\context Staff=one \notes\relative c'{
s1
}
\context Staff=two \notes\relative c'{
- \clef bass;
+ \clef bass
% no knee
\stemUp [c8 \translator Staff=one \stemDown g'16 f]
s8
}
>
\paper{
- linewidth=-1.;
+ linewidth=-1.
}
}
+\version "1.3.146"
\score{
\notes\relative c'{
+\version "1.3.146"
\header {
texidoc="
Draw abritrary lines. This brings LilyPond on par with Mup.
-";
+"
}
\score {
a'1
}
\paper {
- linewidth = 70.0*\staffspace;
+ linewidth = 70.0*\staffspace
}
}
+\version "1.3.146"
%{
%}
\header {
-copyright = "copyright";
-title = "title";
-subtitle = "subtitle";
-composer = "composer";
-arranger = "arranger";
-instrument = "instrument";
-metre = "metre";
-opus = "opus";
-piece = "piece";
-poet = "poet";
+copyright = "copyright"
+title = "title"
+subtitle = "subtitle"
+composer = "composer"
+arranger = "arranger"
+instrument = "instrument"
+metre = "metre"
+opus = "opus"
+piece = "piece"
+poet = "poet"
}
\header {
- title = "localtitle";
- subtitle = "localsubtitle";
- composer = "localcomposer";
- arranger = "localarranger";
- instrument = "localinstrument";
- metre = "localmetre";
- opus = "localopus";
- piece = "localpiece";
- poet = "localpoet";
- copyright = "localcopyright";
+ title = "localtitle"
+ subtitle = "localsubtitle"
+ composer = "localcomposer"
+ arranger = "localarranger"
+ instrument = "localinstrument"
+ metre = "localmetre"
+ opus = "localopus"
+ piece = "localpiece"
+ poet = "localpoet"
+ copyright = "localcopyright"
}
}
+\version "1.3.146"
\score{
<
\context Staff \notes { c () c () c c }
+\version "1.3.146"
\score{
<
\context Staff \notes { c' () c' () c' c' }
+\version "1.3.146"
\header{
-filename = "twinkle-pop.ly";
-xtitle = "Ah, vous dirais-je, maman ";
-description = "twinkle twinkle in pop-song-settings";
-composer = "traditional";
-enteredby = "HWN, chords by Johan Vromans";
-copyright = "public domain";
+filename = "twinkle-pop.ly"
+xtitle = "Ah, vous dirais-je, maman "
+description = "twinkle twinkle in pop-song-settings"
+composer = "traditional"
+enteredby = "HWN, chords by Johan Vromans"
+copyright = "public domain"
}
b c d e }
textI = \lyrics { la4 __ la -- la I, la dargh la dargh. }
-textII = \lyrics { dar -- dargh __ dargh dargh; dargh la dargh loo. }
-textIII = \lyrics { la -- da __ doo dah; dargh la dargh loo. }
+textII = \lyrics { dar -- dargh __ dargh dargh dargh la dargh loo. }
+textIII = \lyrics { la -- da __ doo dah dargh la dargh loo. }
\score {
+\version "1.3.146"
somewhatLong = \lyrics{
+\version "1.3.146"
%{
\property Staff.clefOctavation = #0
\property Staff.clefPosition = #0
c'4
- \clef "bla";
+ \clef "bla"
c'4
}}
+\version "1.3.146"
\score { \notes {
+\version "1.3.146"
global = \notes {
- s1 | \mark "A";
- s1 | \mark ;
- s1 | \mark ;
- s1 | \mark "12";
- s1 | \mark ;
- s1 | \mark "A2";
- s1 | \mark #'(music "scripts-segno") ;
+ s1 | \mark "A"
+ s1 | \mark \default
+ s1 | \mark \default
+ s1 | \mark "12"
+ s1 | \mark \default
+ s1 | \mark "A2"
+ s1 | \mark #'(music "scripts-segno")
s1
}
+\version "1.3.146"
e-#'(((baselineskip . 0) (kern . 1.5) lines) "Violoncello" " e" "Contrabasso")
}
\paper{
- linewidth = -1.\mm;
+ linewidth = -1.\mm
\translator{
\ScoreContext
TextScript \override #'font-family = #'roman
+\version "1.3.146"
\score{
\context Staff \notes\relative c''<
\paper{
}
\midi{
-\tempo 1 = 60;
+\tempo 1 = 60
}
}
+\version "1.3.146"
%{
do a memory stress test.
%}
\score { \context Score <
\bla \bla \bla \bla \bla \bla \bla
>
- \paper { Gourlay_maxmeaures = 2.; }
+ \paper { Gourlay_maxmeaures = 2. }
}
+\version "1.3.146"
a1^#`((rows (font-relative-size . -1)) ,dotted-eight-note " = 64")
}
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator{
\ScoreContext
TextScript \override #'font-shape = #'upright
+\version "1.3.146"
\score {
\context Staff \notes <
\paper {
\translator {
\StaffContext
- \remove Multi_measure_rest_engraver;
- \remove Bar_engraver;
+ \remove Multi_measure_rest_engraver
+ \remove Bar_engraver
}
\translator {
\VoiceContext
- \consists Multi_measure_rest_engraver;
- \consists Bar_engraver;
+ \consists Multi_measure_rest_engraver
+ \consists Bar_engraver
}
}
}
+\version "1.3.146"
%% Chord gurus, is this ok now??
\context Staff \monstrous
>
\paper{
- linelength=-1.0\mm;
+ linelength=-1.0\mm
}
}
+\version "1.3.146"
\score{
\context Staff \notes\relative c''{
\outputproperty #(make-type-checker 'Mark)
#'extra-offset = #'(-1 . 4)
}
- \mark A;
+ \mark A
d
- \mark ;
+ \mark \default
e
}
\paper{
- linewidth=-1.0;
+ linewidth=-1.0
\translator {
\ScoreContext
- \consists "Mark_engraver";
+ \consists "Mark_engraver"
}
}
}
+\version "1.3.146"
fragment = \notes {
c''2 c
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
#(define (make-text-checker text)
(lambda (grob) (equal? text (ly-get-grob-property grob 'text))))
#'extra-offset = #'(-3.5 . -4.5)
a^2^"m.d."
}
- \paper { linewidth = -1.; }
+ \paper { linewidth = -1. }
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\header {
texidoc = "You can create music expressions from Scheme. The
- mechanism for this is rather clumsy to use, so avoid if possible.";
+ mechanism for this is rather clumsy to use, so avoid if possible."
}
\header{
texidoc="
In InnerStaffGroup and InnerChoirStaff, the brackets should be shiftet leftwards.
-";
-filename = "nested-groups.ly";
-description = "Test of nested staff groups and choirstaffs";
-enteredby = "RZ";
-copyright = "public domain";
-Tested = "Nested StaffGroups";
+"
+filename = "nested-groups.ly"
+description = "Test of nested staff groups and choirstaffs"
+enteredby = "RZ"
+copyright = "public domain"
+Tested = "Nested StaffGroups"
}
-\version "1.3.140" % rz1
+\version "1.3.146" % rz1
\score { \notes
<
>
- \paper { linewidth = -1; }
+ \paper { linewidth = -1 }
}
+\version "1.3.146"
\score {
\notes \relative c'' {
d c b a
}
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator {
\StaffContext
whichBar = #""
- \remove "Time_signature_engraver";
+ \remove "Time_signature_engraver"
}
}
}
+\version "1.3.146"
\score {
\notes { c4 c4 c8 c8 }
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator {
\StaffContext
- \remove Staff_symbol_engraver;
- \consists Pitch_squash_engraver;
- \remove Clef_engraver;
+ \remove Staff_symbol_engraver
+ \consists Pitch_squash_engraver
+ \remove Clef_engraver
}
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
scheme = \notes {
<c'1 e' g'>
\context ChordNamesVoice \scheme
\context Staff \scheme
>
- \paper { linewidth = -1.; }
+ \paper { linewidth = -1. }
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\score{
\notes \transpose c''{
% 1.1.53: @x@ syntax dropped
-% if you want fingering, write chord explicitily; eg < c1-1 e-2 g-3 >
+% if you want fingering, write chord explicitily eg < c1-1 e-2 g-3 >
% @c1@ @c-7@ @c-7^5@-1-3
\chords { c1 c:7 c:7^5 }
}
+\version "1.3.146"
\score
+\version "1.3.146"
\header{
- latexpackages="graphicx";
+ latexpackages="graphicx"
}
>
>
\paper {
-% \paperSixteen;
- linewidth = 185.\mm;
- textheight = 260.\mm;
+% \paperSixteen
+ linewidth = 185.\mm
+ textheight = 260.\mm
\translator {
\OrchestralScoreContext
skipBars = ##t
+\version "1.3.146"
\score {
-\notes { c1 c1 < {\clef "treble"; c1 c1 } \context Staff=stb{ c1 c1}>}
+\notes { c1 c1 < {\clef "treble" c1 c1 } \context Staff=stb{ c1 c1}>}
}
+\version "1.3.146"
fragment = \notes {
a\spanrequest \start "text" b c a \spanrequest \stop "text"
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\score{
\context PianoStaff <
- \context StaffCombineStaff=one \skip 1*2;
- \context StaffCombineStaff=two \skip 1*2;
+ \context StaffCombineStaff=one \skip 1*2
+ \context StaffCombineStaff=two \skip 1*2
\context StaffCombineStaff=one \partcombine StaffCombineStaff
\context StaffCombineVoice=one \notes\relative c''
{
>
\paper {
- textheight = 295.0\mm;
- linewidth = 180.0\mm;
+ textheight = 295.0\mm
+ linewidth = 180.0\mm
\translator{ \HaraKiriStaffContext }
%
%
\translator{
\ThreadContext
- \name "VoiceCombineThread";
- \consists "Rest_engraver";
+ \name "VoiceCombineThread"
+ \consists "Rest_engraver"
}
\translator{
\VoiceContext
- \name "VoiceCombineVoice";
+ \name "VoiceCombineVoice"
soloText = #"I."
soloIIText = #"II."
- \remove "Rest_engraver";
- \accepts "VoiceCombineThread";
+ \remove "Rest_engraver"
+ \accepts "VoiceCombineThread"
}
\translator{
\HaraKiriStaffContext
- \consists "Mark_engraver";
- \name "VoiceCombineStaff";
- \accepts "VoiceCombineVoice";
+ \consists "Mark_engraver"
+ \name "VoiceCombineStaff"
+ \accepts "VoiceCombineVoice"
}
%
%
\translator{
\ThreadContext
- \name "StaffCombineThread";
+ \name "StaffCombineThread"
}
\translator{
\VoiceContext
- \name "StaffCombineVoice";
- \accepts "StaffCombineThread";
- \consists "Thread_devnull_engraver";
+ \name "StaffCombineVoice"
+ \accepts "StaffCombineThread"
+ \consists "Thread_devnull_engraver"
}
\translator {
\HaraKiriStaffContext
- \name "StaffCombineStaff";
- \accepts "StaffCombineVoice";
+ \name "StaffCombineStaff"
+ \accepts "StaffCombineVoice"
soloADue = ##t
soloText = #""
}
\translator {
\StaffGroupContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
+ \accepts "VoiceCombineStaff"
+ \accepts "StaffCombineStaff"
}
\translator{ \HaraKiriStaffContext }
\translator {
\ScoreContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
+ \accepts "VoiceCombineStaff"
+ \accepts "StaffCombineStaff"
skipBars = ##t
barScriptPadding = #2.0 % dimension \pt
+\version "1.3.146"
\header {
-texidoc="Template for part-combining orchestral scores";
+texidoc="Template for part-combining orchestral scores"
}
-\include "paper16.ly";
-% \include "mutopia/Coriolan/coriolan-paper.ly";
+\include "paper16.ly"
+% \include "mutopia/Coriolan/coriolan-paper.ly"
#(define text-flat '((font-relative-size . -2 ) (music "accidentals--1")))
-End = { \skip 1*9; \bar "|."; }
+End = { \skip 1*9 \bar "|." }
flautoI = \notes\relative c'' {
c4\pp d e f
violinoIIStaff = \context Staff = twoViolini <
% MIDI hoort geeneens verschil tussen een
- % eerste en tweede viool ;-)
+ % eerste en tweede viool -)
\property Staff.midiInstrument = #"violin"
\property Staff.instrument = #"Violino II"
\property Staff.instr = #"Vl. II"
\property VoiceCombineStaff.midiInstrument = #"viola"
\property VoiceCombineStaff.instrument = #"Viola"
\property VoiceCombineStaff.instr = #"Vla."
- %\clef "alto";
+ %\clef "alto"
% Ugh, clef broken in 1.3.125
\property VoiceCombineStaff.clefGlyph = #"clefs-C"
\property VoiceCombineStaff.clefPosition = #0
- \key f \major;
+ \key f \major
\End
\context VoiceCombineVoice=oneViole \partcombine VoiceCombineVoice
\property StaffCombineStaff.instr = #"Vc."
- %\clef "bass";
+ %\clef "bass"
% Ugh, clef broken in 1.3.125
\property StaffCombineStaff.clefGlyph = #"clefs-F"
\property StaffCombineStaff.clefPosition = #2
- \key es \major;
+ \key es \major
\End
}
\context StaffCombineStaff=twoBassi {
\property StaffCombineStaff.instrument = #"Contrabasso"
\property StaffCombineStaff.instr = #"Cb."
- %\clef "bass";
+ %\clef "bass"
% Ugh, clef broken in 1.3.125
\property StaffCombineStaff.clefGlyph = #"clefs-F"
\property StaffCombineStaff.clefPosition = #2
- \key as \major;
+ \key as \major
\End
}
\archiGroup
>
\header {
- title = "Coriolan";
- subtitle = "Ouverture";
- opus = "Opus 62";
- composer = "Ludwig van Beethoven (1770-1827)";
- enteredby = "JCN";
- copyright = "public domain";
+ title = "Coriolan"
+ subtitle = "Ouverture"
+ opus = "Opus 62"
+ composer = "Ludwig van Beethoven (1770-1827)"
+ enteredby = "JCN"
+ copyright = "public domain"
}
\paper{
\paperSixteen
- %textheight = 290.0\mm;
- %linewidth = 195.0\mm;
- textheight = 285.0\mm;
- linewidth = 190.0\mm;
+ %textheight = 290.0\mm
+ %linewidth = 195.0\mm
+ textheight = 285.0\mm
+ linewidth = 190.0\mm
\translator{ \HaraKiriStaffContext }
%
%
\translator{
\ThreadContext
- \name "VoiceCombineThread";
- \consists "Rest_engraver";
+ \name "VoiceCombineThread"
+ \consists "Rest_engraver"
}
\translator{
\VoiceContext
- \name "VoiceCombineVoice";
+ \name "VoiceCombineVoice"
soloText = #"I."
soloIIText = #"II."
- \remove "Rest_engraver";
- \accepts "VoiceCombineThread";
+ \remove "Rest_engraver"
+ \accepts "VoiceCombineThread"
}
\translator{
\HaraKiriStaffContext
- \consists "Mark_engraver";
- \name "VoiceCombineStaff";
- \accepts "VoiceCombineVoice";
+ \consists "Mark_engraver"
+ \name "VoiceCombineStaff"
+ \accepts "VoiceCombineVoice"
}
%
%
\translator{
\ThreadContext
- \name "StaffCombineThread";
+ \name "StaffCombineThread"
}
\translator{
\VoiceContext
- \name "StaffCombineVoice";
- \accepts "StaffCombineThread";
- \consists "Thread_devnull_engraver";
+ \name "StaffCombineVoice"
+ \accepts "StaffCombineThread"
+ \consists "Thread_devnull_engraver"
}
\translator {
\HaraKiriStaffContext
- \name "StaffCombineStaff";
- \accepts "StaffCombineVoice";
+ \name "StaffCombineStaff"
+ \accepts "StaffCombineVoice"
soloADue = ##t
soloText = #""
}
\translator {
\StaffGroupContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
+ \accepts "VoiceCombineStaff"
+ \accepts "StaffCombineStaff"
}
\translator{ \HaraKiriStaffContext }
\translator {
%\ScoreContext
\OrchestralScoreContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
+ \accepts "VoiceCombineStaff"
+ \accepts "StaffCombineStaff"
TimeSignature \override #'style = #'C
skipBars = ##t
BarNumber \override #'padding = #3
+\version "1.3.146"
\score{
\context PianoStaff <
- \context StaffCombineStaff=one \skip 1*7;
- \context StaffCombineStaff=two \skip 1*7;
+ \context StaffCombineStaff=one \skip 1*7
+ \context StaffCombineStaff=two \skip 1*7
\context StaffCombineStaff=one \partcombine StaffCombineStaff
\context StaffCombineVoice=one \notes\relative c''
{
>
\paper {
- textheight = 295.0\mm;
- linewidth = 180.0\mm;
+ textheight = 295.0\mm
+ linewidth = 180.0\mm
\translator{ \HaraKiriStaffContext }
%
%
\translator{
\ThreadContext
- \name "VoiceCombineThread";
- \consists "Rest_engraver";
+ \name "VoiceCombineThread"
+ \consists "Rest_engraver"
}
\translator{
\VoiceContext
- \name "VoiceCombineVoice";
+ \name "VoiceCombineVoice"
soloText = #"I."
soloIIText = #"II."
- \remove "Rest_engraver";
- \accepts "VoiceCombineThread";
+ \remove "Rest_engraver"
+ \accepts "VoiceCombineThread"
}
\translator{
\HaraKiriStaffContext
- \consists "Mark_engraver";
- \name "VoiceCombineStaff";
- \accepts "VoiceCombineVoice";
+ \consists "Mark_engraver"
+ \name "VoiceCombineStaff"
+ \accepts "VoiceCombineVoice"
}
%
%
\translator{
\ThreadContext
- \name "StaffCombineThread";
+ \name "StaffCombineThread"
}
\translator{
\VoiceContext
- \name "StaffCombineVoice";
- \accepts "StaffCombineThread";
- \consists "Thread_devnull_engraver";
+ \name "StaffCombineVoice"
+ \accepts "StaffCombineThread"
+ \consists "Thread_devnull_engraver"
}
\translator {
\HaraKiriStaffContext
- \name "StaffCombineStaff";
- \accepts "StaffCombineVoice";
+ \name "StaffCombineStaff"
+ \accepts "StaffCombineVoice"
soloADue = ##t
soloText = #""
}
\translator {
\StaffGroupContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
+ \accepts "VoiceCombineStaff"
+ \accepts "StaffCombineStaff"
}
\translator{ \HaraKiriStaffContext }
\translator {
\ScoreContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
+ \accepts "VoiceCombineStaff"
+ \accepts "StaffCombineStaff"
skipBars = ##t
barScriptPadding = #2.0 % dimension \pt
+\version "1.3.146"
\header{
texidoc="
one staff. LilyPond has a part combiner, that combines or separates two
voices according to actual rhythm and pitch. User-defined texts such as
``solo'' and ``@`a2'' are typeset automagically, as appropriate.
-";
+"
}
\score{
\context Staff = flauti <
- \time 4/4;
+ \time 4/4
\context Voice=one \partcombine Voice
\context Thread=one \notes\relative c'' {
c4 d e f | b,4 d c d | r2 e4 f | c4 d e f |
}
>
\paper{
- linewidth = 80 * \staffspace;
+ linewidth = 80 * \staffspace
\translator{
\ThreadContext
- \consists Rest_engraver;
+ \consists Rest_engraver
}
\translator{
\VoiceContext
- \remove Rest_engraver;
+ \remove Rest_engraver
}
}
}
+\version "1.3.146"
%{ When entering half music (I.e. for students to complete by hand)
you need the spacing to correspond to the timing - all measures same length, etc.
\score {
\context PianoStaff \notes <
\context Staff = v <
- \clef G;
+ \clef G
\context Voice=melo {\mel}
\context Voice=invisible {
\property Voice.NoteHead \override #'transparent = ##t
\repeat unfold 4 \quickmeasure
}
>
- \context Staff = empty \notes {\clef F; s1*4}
+ \context Staff = empty \notes {\clef F s1*4}
>
\paper {}
}
+\version "1.3.146"
\header{
-texidoc = "Piano pedal symbols merge stop and start. The strings are configurable. ";
+texidoc = "Piano pedal symbols merge stop and start. The strings are configurable. "
}
\paper{
}
\midi{
-\tempo 4 = 60;
+\tempo 4 = 60
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\score{
<
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\header {
texidoc="
Simple customised music apply.
-";
+"
}
music = \notes { c'4 d'4( e'4 f'4 }
\music
\apply #reverse-music \music
}
- \paper { linewidth = -1.; }
+ \paper { linewidth = -1. }
}
+\version "1.3.146"
\score{
\context RhythmicStaff {
\notes\relative c''{
- \clef "percussion";
- \time 4/4;
+ \clef "percussion"
+ \time 4/4
r4 r g2 | r4 g r2 | g1:32 | r1 |
}
}
\paper{
\translator{
\RhythmicStaffContext
- \consists "Clef_engraver";
+ \consists "Clef_engraver"
}
}
}
+\version "1.3.146"
\header {
- crossRefNumber = "1";
- tagline = "Lily was here 1.3.98 -- automatically converted from ABC";
- title = "Scales";
+ crossRefNumber = "1"
+ tagline = "Lily was here 1.3.98 -- automatically converted from ABC"
+ title = "Scales"
}
voicedefault = \notes {
\property Score.defaultBarType="empty"
-\key c \major; c'8 -"major" d'8 e'8 f'8 g'8 a'8 b'8
-c''8 \key c \ionian; c'8 -"ionian" d'8 e'8 f'8 g'8 a'8
-b'8 c''8 \key d \dorian; c'8 -"dorian" d'8 e'8 f'8 g'8
-a'8 b'8 c''8 \key e \phrygian; c'8 -"phrygian" d'8 e'8 f'8
- g'8 a'8 b'8 c''8 \key f \lydian; c'8 -"lydian" d'8 e'8
- f'8 g'8 a'8 b'8 c''8 \key g \mixolydian; c'8 -"mixolydian"
- d'8 e'8 f'8 g'8 a'8 b'8 c''8 \key a \minor; c'8
--"minor" d'8 e'8 f'8 g'8 a'8 b'8 c''8 \key a \aeolian;
+\key c \major c'8 -"major" d'8 e'8 f'8 g'8 a'8 b'8
+c''8 \key c \ionian c'8 -"ionian" d'8 e'8 f'8 g'8 a'8
+b'8 c''8 \key d \dorian c'8 -"dorian" d'8 e'8 f'8 g'8
+a'8 b'8 c''8 \key e \phrygian c'8 -"phrygian" d'8 e'8 f'8
+ g'8 a'8 b'8 c''8 \key f \lydian c'8 -"lydian" d'8 e'8
+ f'8 g'8 a'8 b'8 c''8 \key g \mixolydian c'8 -"mixolydian"
+ d'8 e'8 f'8 g'8 a'8 b'8 c''8 \key a \minor c'8
+-"minor" d'8 e'8 f'8 g'8 a'8 b'8 c''8 \key a \aeolian
c'8 -"aeolian" d'8 e'8 f'8 g'8 a'8 b'8 c''8
-\key b \locrian; c'8 -"locrian" d'8 e'8 f'8 g'8 a'8 b'8
-c''8 \key f \major; c'8 -"major" d'8 e'8 f'8 g'8 a'8
-bes'8 c''8 \key f \ionian; c'8 -"ionian" d'8 e'8 f'8 g'8
- a'8 bes'8 c''8 \key g \dorian; c'8 -"dorian" d'8 e'8 f'8
- g'8 a'8 bes'8 c''8 \key a \phrygian; c'8 -"phrygian" d'8
-e'8 f'8 g'8 a'8 bes'8 c''8 \key bes \lydian; c'8
+\key b \locrian c'8 -"locrian" d'8 e'8 f'8 g'8 a'8 b'8
+c''8 \key f \major c'8 -"major" d'8 e'8 f'8 g'8 a'8
+bes'8 c''8 \key f \ionian c'8 -"ionian" d'8 e'8 f'8 g'8
+ a'8 bes'8 c''8 \key g \dorian c'8 -"dorian" d'8 e'8 f'8
+ g'8 a'8 bes'8 c''8 \key a \phrygian c'8 -"phrygian" d'8
+e'8 f'8 g'8 a'8 bes'8 c''8 \key bes \lydian c'8
-"lydian" d'8 e'8 f'8 g'8 a'8 bes'8 c''8
-\key c \mixolydian; c'8 -"mixolydian" d'8 e'8 f'8 g'8 a'8
-bes'8 c''8 \key d \aeolian; c'8 -"aeolian" d'8 e'8 f'8 g'8
- a'8 bes'8 c''8 \key d \minor; c'8 -"minor" d'8 e'8 f'8
- g'8 a'8 bes'8 c''8 \key e \locrian; c'8 -"locrian" d'8
+\key c \mixolydian c'8 -"mixolydian" d'8 e'8 f'8 g'8 a'8
+bes'8 c''8 \key d \aeolian c'8 -"aeolian" d'8 e'8 f'8 g'8
+ a'8 bes'8 c''8 \key d \minor c'8 -"minor" d'8 e'8 f'8
+ g'8 a'8 bes'8 c''8 \key e \locrian c'8 -"locrian" d'8
e'8 f'8 g'8 a'8 bes'8 c''8
}\score{
\notes <
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
% sharp-major
% c g d a e b fis cis
- \key c \major;
+ \key c \major
c' d e f g a b c
- \key g\major;
+ \key g\major
g a b c d e fis g
- \key d\major;
+ \key d\major
d, e fis g a b cis d
- \key a\major;
+ \key a\major
a b cis d e fis gis a
- \key e\major;
+ \key e\major
e, fis gis a b cis dis e
- \key b\major;
+ \key b\major
b cis dis e fis gis ais b
- \key fis\major;
+ \key fis\major
fis, gis ais b cis dis eis fis
- \key cis\major;
+ \key cis\major
cis, dis eis fis gis ais bis cis
% sharp-minor
% a e b fis cis gis dis ais
- \key a\minor;
+ \key a\minor
a b c d e f gis a
- \key e\minor;
+ \key e\minor
e, fis g a b c dis e
- \key b\minor;
+ \key b\minor
b cis d e fis g ais b
- \key fis\minor;
+ \key fis\minor
fis, gis a b cis d eis fis
- \key cis\minor;
+ \key cis\minor
cis, dis e fis gis a bis cis
- \key gis\minor;
+ \key gis\minor
gis ais b cis dis e fisis gis
- \key dis\minor;
+ \key dis\minor
dis, eis fis gis ais b cisis dis
- \key ais\minor;
+ \key ais\minor
ais bis cis dis eis fis gisis ais
% flat-major
% c f bes es as des ges ces
- \key f\major;
+ \key f\major
f, g a bes c d e f
- \key bes\major;
+ \key bes\major
bes, c d es f g a bes
- \key es\major;
+ \key es\major
es,, f g as bes c d es
- \key as\major;
+ \key as\major
as, bes c des es f g as
- \key des\major;
+ \key des\major
des,, es f ges as bes c des
- \key ges\major;
+ \key ges\major
ges, as bes ces des es f ges
- \key ces\major;
+ \key ces\major
ces,, des es fes ges as bes ces
% flat-minor
% a d g c f bes es as
- \key d\minor;
+ \key d\minor
d, e f g a bes cis d
- \key g\minor;
+ \key g\minor
g, a bes c d es fis g
- \key c\minor;
+ \key c\minor
c,, d es f g as b c
- \key f\minor;
+ \key f\minor
f, g as bes c des e f
- \key bes\minor;
+ \key bes\minor
bes, c des es f ges a bes
- \key es\minor;
+ \key es\minor
es,, f ges as bes ces d es
- \key as\minor;
+ \key as\minor
as, bes ces des es fes g as}
\paper { }
+\version "1.3.146"
%{
Please don't use this Scheme hacking unless you have a good reason.
\paper { \translator {
\VoiceContext
- \remove Script_engraver;
- \remove Text_engraver;
+ \remove Script_engraver
+ \remove Text_engraver
}
\translator {
\ThreadContext
- \consists Script_engraver;
- \consists Text_engraver;
+ \consists Script_engraver
+ \consists Text_engraver
}
}
}
+\version "1.3.146"
\stemUp
b,---. c---. d---. e---. f---. g---. a---. b---. c'---.
\stemBoth
- \time 4/4;
+ \time 4/4
[c8 \< d e \! f][d' \> e' f' \! g']
[c-> \< d-> e-> \! f->][d'-> \> e'-> f'-> \! g'->]
[c-^ \< d-^ e-^ \! f-^][d'-^ \> e'-^ f'-^ \! g'-^]
+\version "1.3.146"
\score{
\context Staff <
+\version "1.3.146"
\score{
\notes \relative c''{
\slurDown a()c d()g,\break
}
\paper{
- indent = 0.0;
- linewidth = 60.0\mm;
+ indent = 0.0
+ linewidth = 60.0\mm
}
}
+\version "1.3.146"
\header{
-enteredby = "jcn";
-copyright = "public domain";
+enteredby = "jcn"
+copyright = "public domain"
TestedFeatures = "This file tests Feta embedded slurs" +
- "(Feta definitively is not an abbreviation of Font-En-TjA)";
+ "(Feta definitively is not an abbreviation of Font-En-TjA)"
}
\score{
\context Staff \notes{
-% \property Voice.pletvisibility = 0;
+% \property Voice.pletvisibility = 0
% use blend for fast check
\blend
% {
%\broken
}
\paper{
- indent = 0.0\pt;
+ indent = 0.0\pt
%for broken!
- % linewidth= 30.\mm;
+ % linewidth= 30.\mm
}
}
+\version "1.3.146"
\score{
\notes\relative c''{
}
\paper{
-indent=0.0\mm;
+indent=0.0\mm
}
}
+\version "1.3.146"
\header{
texidoc="
In some cases, you may want to set slur attachments by hand.
-";
+"
}
d,32( d'4 )d8..
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
fragment = \notes {
g4(g8)g
}
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
\score {
\notes\relative c \fragment
+\version "1.3.146"
\header{
texidoc="
The same goes for slurs. They behave decently when broken across
linebreak.
-";
+"
}
%}
}
\context Staff=two \notes\relative c'{
- \clef bass;
+ \clef bass
s1 s1 %s1 s1 s1 s1 s1 s1 s1 s1
}
>
- \paper { indent = 0.; linewidth = 40.*\staffspace; }
+ \paper { indent = 0. linewidth = 40.*\staffspace }
}
+\version "1.3.146"
\score{
\notes\relative c''{
- \time 2/4;
+ \time 2/4
e2(
\break
)e4 f,(\break
)e'2
}
\paper{
- linewidth = 60.\mm;
+ linewidth = 60.\mm
}
}
+\version "1.3.146"
% test damping
+\version "1.3.146"
\score{
c( d e )c |
}
\paper{
- indent = 0.0\pt;
+ indent = 0.0\pt
%for broken!
- % linewidth= 30.\mm;
+ % linewidth= 30.\mm
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\header {
-texidoc = "" ;
+texidoc = ""
}
\score{
\notes\relative c''{
- \time 2/4;
+ \time 2/4
\property Voice.Slur \set #'minimum-length = #40
c()c
c~c\break
+\version "1.3.146"
\score{
\notes\relative c''{
}
\paper{
- linewidth=-1.\mm;
+ linewidth=-1.\mm
}
}
+\version "1.3.146"
x = {
\context Voice=wa { \x d(s4*26)d }
>
\paper {
- indent=0.0\mm;
- linewidth=-1.0\mm;
+ indent=0.0\mm
+ linewidth=-1.0\mm
\translator{
\VoiceContext
Slur \override #'direction = #1
+\version "1.3.146"
\header{
% should look the same
-title="symmetry";
+title="symmetry"
}
\score{
\notes\relative c'{
}
\paper{
- linewidth = 50.0\mm;
+ linewidth = 50.0\mm
}
}
+\version "1.3.146"
\header{
% should look the same
-title="symmetry";
+title="symmetry"
}
\score{
\notes\relative c'{
}
\paper{
- linewidth = 50.0\mm;
+ linewidth = 50.0\mm
}
}
+\version "1.3.146"
\header {
texidoc="You can get ugly slurs, if you want.
-";
+"
}
baseWalk = \notes \relative c {
\score {
\notes \context PianoStaff <
- \time 6/4;
+ \time 6/4
\context Staff=up { s1 * 6/4 }
\context Staff=down <
- \clef bass;
+ \clef bass
\autochange Staff \context Voice \baseWalk
>
>
\paper {
- linewidth = -1.;
+ linewidth = -1.
\translator {
\VoiceContext
Slur \override #'beautiful = #5.0
-
-
-
-\score{
- \notes\transpose c'{
-
- c,4 ~ c, c'' ~ c'' ~ g ~ c ~
- d ~ e ~ f ~ g ~
- a ~ b ~ c, ~ c
-
- < c e ( > <)d f>
- \transpose c''
- < c e ( > <)d f>
- \transpose c'
- < c e ( > <)d' f'>
- < { c ~ d }
- { e ~ f }
- >
-% \context Staff <
-% { \stemUp c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c }
-% { \stemDown c (e g )c'~( [b a g )d] r2 }
-% >
-
- {
-
- c4()c( c c |
- c c c c |
- c c c c |
- c c c )c |
- }
- }
-}
+\version "1.3.146"
+\version "1.3.146"
\header {
texidoc="
You mean like this. (Sorry 'bout the nuked indentation.)
@end example
-";
+"
}
#(define (unhair-pitch p)
\apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1)))
\music
}
- \paper { linewidth = -1.; }
+ \paper { linewidth = -1. }
}
+\version "1.3.146"
\score{
\context Staff = one <
- \context Voice=one { \skip 1; }
- \context Voice=two { \skip 1; }
+ \context Voice=one { \skip 1 }
+ \context Voice=two { \skip 1 }
\context Voice=one \partcombine Voice
\context Thread=one \notes\relative c''
}
>
\paper{
- linewidth = 100.\mm;
+ linewidth = 100.\mm
}
}
+\version "1.3.146"
\header {
-opus = "BWV 937 (prelude)";
-composer = "J. S. Bach";
-source = "Petits Preludes et Fugues. Urtext. Editions Henry Lemoine, Paris.";
+opus = "BWV 937 (prelude)"
+composer = "J. S. Bach"
+source = "Petits Preludes et Fugues. Urtext. Editions Henry Lemoine, Paris."
}
%{
e4 dis4 e2 }
\context Voice = VB { \stemDown\slurDown\tieDown
[cis8 a] [fis b] gis2 }
- {\key e \major; }
+ {\key e \major }
>
- \context Staff = SB { \clef "bass"; \key e \major;
+ \context Staff = SB { \clef "bass" \key e \major
[a,,16 e dis e] [b'8 b,] [e16 e, gis b] e4
}
>
\paper
{
-% linewidth = 5.0 \cm; % ly2dvi barfs on -1
- linewidth = 8.0 \cm;
-% linewidth = 12.0 \cm;
+% linewidth = 5.0 \cm % ly2dvi barfs on -1
+ linewidth = 8.0 \cm
+% linewidth = 12.0 \cm
}
}
+\version "1.3.146"
\header{
-title= "Spacing";
-subtitle = "proofsheet";
-enteredby = "jcn";
-copyright = "public domain";
-TestedFeatures = "This file tests various spacings";
+title= "Spacing"
+subtitle = "proofsheet"
+enteredby = "jcn"
+copyright = "public domain"
+TestedFeatures = "This file tests various spacings"
}
\multipart
}
\paper {
-% linewidth= 18.\cm;
+% linewidth= 18.\cm
}
}
+\version "1.3.146"
nt = \notes { c1 \break c1 c1 }
+\version "1.3.146"
\score {
\notes {
c2_"geen gedonder"_"jij gaat onder"
c2^^^.^|^"down"^"up"
}
- \paper { linewidth = -1. ; }
+ \paper { linewidth = -1. }
}
+\version "1.3.146"
\score
{
>
\paper {
- indent=100.0\mm;
- linewidth=150.0\mm;
+ indent=100.0\mm
+ linewidth=150.0\mm
\translator
{
\StaffContext
- \consists Instrument_name_engraver;
+ \consists Instrument_name_engraver
numberOfStaffLines = #1
}
+\version "1.3.146"
\header {
texidoc = "By splitting the grouping (Axis_group_engraver) and
creation functionality into separate contexts, you can override
-interesting things. You can also drop the \consistsend feature.";
+interesting things. You can also drop the \consistsend feature."
}
\paper {
\translator {
\ScoreContext
- \accepts StaffContainer;
- \denies Staff;
+ \accepts StaffContainer
+ \denies Staff
}
\translator {
- \type Engraver_group_engraver;
- \consists "Axis_group_engraver";
- \accepts "Staff";
- \name StaffContainer;
+ \type Engraver_group_engraver
+ \consists "Axis_group_engraver"
+ \accepts "Staff"
+ \name StaffContainer
}
\translator {
\StaffContext
- \remove Axis_group_engraver;
+ \remove Axis_group_engraver
}
}
}
+\version "1.3.146"
\score {
\notes \relative c'' \context GrandStaff <
+\version "1.3.146"
% test staff margin with partial measure.
\score {
-\notes { \property Staff.instrument = "foo" \partial 4; c4 c1 }
+\notes { \property Staff.instrument = "foo" \partial 4 c4 c1 }
\paper {
- \translator { \StaffContext \consists Instrument_name_engraver; }
+ \translator { \StaffContext \consists Instrument_name_engraver }
}
}
+\version "1.3.146"
\score{
\context Staff \notes\relative c''{
\property Staff.instrument = "Toeters"
c c c c\break
}
\paper{
- linewidth=60.0\mm;
+ linewidth=60.0\mm
% \translator { \HaraKiriStaffContext }
\translator { \OrchestralScoreContext }
\translator {
\StaffContext
- \consists "Instrument_name_engraver";
- marginHangOnClef = 1;
+ \consists "Instrument_name_engraver"
+ marginHangOnClef = 1
}
}
}
+\version "1.3.146"
\score {
\notes \relative c' < \context Voice {
\property Staff.staffSpace = #10
\property Voice.fontSize = #-1
\property Voice . dynamicDirection = \up \stemDown
-%\key gis \major;
+%\key gis \major
c8 d [e f g a] b c \ff
}
\context Staff = VB { \property Voice . dynamicDirection = \down c,,4 \ff c c c }
>
-\paper { linewidth = -1.; }
+\paper { linewidth = -1. }
}
+\version "1.3.146"
\score {
+\version "1.3.146"
\header { texidoc = "
Conventionally, stems and beams extend to the middle staff line. This
extension can be controlled through @code{Voice.Stem}'s grob-property
@code{no-stem-extend}:
-";}
+"}
-\paper { linewidth = -1.;}
+\paper { linewidth = -1.}
\score {\notes \relative c {
\grace a'8 a4
\property Voice.Stem \set #'no-stem-extend = ##t
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
\header{
-title= "Stems and Beams";
-subtitle = "proofsheet";
-enteredby = "jcn";
-copyright = "public domain";
+title= "Stems and Beams"
+subtitle = "proofsheet"
+enteredby = "jcn"
+copyright = "public domain"
TestedFeatures = "This file tests the length of stems and placement
-of beams";
+of beams"
}
beamintervals = \notes{
- \time 7/4;
+ \time 7/4
\stemUp
\transpose c'{
[ c8 d ] [ c e ] [ c f ] [ c g ] [ c a ] [ c b ] [ c c' ] |
\score{
\notes\transpose c'{
\stemUp
- \time 17/4;
+ \time 17/4
g,4 a, b, c d e f g a b c' d' e' f' g' a' b' |
\stemDown
b' a' g' f' e' d' c' b a g f e d c b, a, g, |
+\version "1.3.146"
\score {
+\version "1.3.146"
\score {
+\version "1.3.146"
\paper {
\translator {
\StaffContext
- \name TabStaff;
+ \name TabStaff
StaffSymbol \override #'line-count = #6
- \remove "Clef_engraver";
- \remove "Time_signature_engraver";
- \consists "Pitch_squash_engraver";
+ \remove "Clef_engraver"
+ \remove "Time_signature_engraver"
+ \consists "Pitch_squash_engraver"
NoteHead \override #'transparent = ##t
Stem \override #'transparent = ##t
NoteHead \override #'staff-position = #-6
}
\translator {
\ScoreContext
-\accepts TabStaff;
+\accepts TabStaff
}
}
}
+\version "1.3.146"
\header{
-filename = "tchaikovsky.ly";
-title = "Extracts from 6th symphony";
-subtitle = "Ist movement";
-composer= "Pjotr Iljitsj Tchaikovsky";
-enteredby = "Maarten Storm";
-instrument= "Violoncello";
+filename = "tchaikovsky.ly"
+title = "Extracts from 6th symphony"
+subtitle = "Ist movement"
+composer= "Pjotr Iljitsj Tchaikovsky"
+enteredby = "Maarten Storm"
+instrument= "Violoncello"
}
\score{
\notes
\relative c{
- \clef "bass";
- \key d \major;
+ \clef "bass"
+ \key d \major
<a2\ppp\cr d> <gis\rc\p\decr d'> | <a2\rced d> ~ <a8 d> r8 r4 |
a2\ppp\cr a2\rc\p\decr | <a2\rced d> ~ <a8 d> r8 r4 |
a2\pppp ~ a8 r8 r4 | a2\ppppp ~ a8 r8 r4 | r4 a8_"pizz"
r8 r2^\fermata
}
\header{
- piece="example 1";
+ piece="example 1"
}
}
\score{
\notes
\relative c{
- \clef "bass";
- \key c \major;
+ \clef "bass"
+ \key c \major
<e1\sff cis'^\downbow> | <cis\sff a'^\downbow> |
<d,\ffff\decr g> | ~ <d2 g> ~ <d8\p\rced g>
}
\header{
- piece="example 2";
+ piece="example 2"
}
}
+\version "1.3.146"
\include "german-chords.ly"
% #(set! german-Bb #t)
+\version "1.3.146"
\header{
- title="CELLO-THUMBS";
- enteredby="Maarten Storm";
+ title="CELLO-THUMBS"
+ enteredby="Maarten Storm"
}
<c_\thumb c'-3(> <)d_\thumb d'-3>]
}
\paper{
- linewidth = 80.\mm;
+ linewidth = 80.\mm
}
}
+\version "1.3.146"
\score{
\notes \relative c''{
c c c c
c1~\break
- \time 8/8; c
+ \time 8/8 c
c4 c c c~\break
- \time 4/4;
+ \time 4/4
c c c c
}
\paper {
- linewidth=40.\mm;
- indent=0.;
+ linewidth=40.\mm
+ indent=0.
}
}
+\version "1.3.146"
+\header {
+texidoc = "setting sparseTies causes only one tie to be
+generated per chord pair."
+
+}
+
+
\score {
\context Voice \notes\relative c {
-
- \context Voice {
\property Voice.sparseTies = ##t
- c'' <c e g> ~ <c e g> }
-
+ c'' <c e g> ~ <c e g>
}
\paper {
- linewidth=-1.0;
+ linewidth=-1.0
}
\midi { }
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
\property Staff.TimeSignature \override #'style = #'C
- \time 1/1;
+ \time 1/1
c''1^"TimeSignature style = \#'C"
- \time 2/2;
+ \time 2/2
c1
- \time 2/4;
+ \time 2/4
c2
- \time 3/4;
+ \time 3/4
c2.
- \time 4/4;
+ \time 4/4
c1
- \time 5/4;
+ \time 5/4
c2. c2
- \time 6/4;
+ \time 6/4
c1.
- \time 3/2;
+ \time 3/2
c1.
- \time 7/4;
+ \time 7/4
c1 c2.
- \time 8/4;
+ \time 8/4
c\breve
- \time 9/4;
+ \time 9/4
c2. c2. c2.
\break
\property Staff.TimeSignature \set #'style = #'old
- \time 1/1;
+ \time 1/1
c1^"TimeSignature style = \#'old"
- \time 2/2;
+ \time 2/2
c1
- \time 2/4;
+ \time 2/4
c2
- \time 3/4;
+ \time 3/4
c2.
- \time 4/4;
+ \time 4/4
c1
- \time 5/4;
+ \time 5/4
c2. c2
- \time 6/4;
+ \time 6/4
c1.
- \time 3/2;
+ \time 3/2
c1.
- \time 7/4;
+ \time 7/4
c1 c2.
- \time 8/4;
+ \time 8/4
c\breve
- \time 9/4;
+ \time 9/4
c2. c2. c2.
- \time 6/8;
+ \time 6/8
c2.
- \time 9/8;
+ \time 9/8
c4. c4. c4.
\break
% Lilypond doesn't understand 'default => it does what you want
\property Staff.TimeSignature \set #'style = #'default
- \time 1/1;
+ \time 1/1
c1^"TimeSignature style = \#'default"
- \time 2/2;
+ \time 2/2
c1
- \time 2/4;
+ \time 2/4
c2
- \time 3/4;
+ \time 3/4
c2.
- \time 4/4;
+ \time 4/4
c1
- \time 5/4;
+ \time 5/4
c2. c2
- \time 6/4;
+ \time 6/4
c1.
- \time 3/2;
+ \time 3/2
c1.
- \time 7/4;
+ \time 7/4
c1 c2.
- \time 8/4;
+ \time 8/4
c\breve
- \time 9/4;
+ \time 9/4
c2. c2. c2.
\break
% If the style starts with a '1', you get this style
\property Staff.TimeSignature \set #'style = #'1style
- \time 1/1;
+ \time 1/1
c1^"TimeSignature style = \#'1xxx"
- \time 2/2;
+ \time 2/2
c1
- \time 2/4;
+ \time 2/4
c2
- \time 3/4;
+ \time 3/4
c2.
- \time 4/4;
+ \time 4/4
c1
- \time 5/4;
+ \time 5/4
c2. c2
- \time 6/4;
+ \time 6/4
c1.
- \time 3/2;
+ \time 3/2
c1.
- \time 7/4;
+ \time 7/4
c1 c2.
- \time 8/4;
+ \time 8/4
c\breve
- \time 9/4;
+ \time 9/4
c2. c2. c2.
\break
\property Staff.TextScript \override #'self-alignment-X = #1
\property Staff.TimeSignature \set #'style = #'old9/8
- \time 1/1;
+ \time 1/1
c1^"old9/8"
\property Staff.TimeSignature \set #'style = #'old6/8
- \time 1/1;
+ \time 1/1
c1^"old6/8"
\property Staff.TimeSignature \set #'style = #'old6/8alt
- \time 1/1;
+ \time 1/1
c1^"old6/8alt"
\property Staff.TimeSignature \set #'style = #'old9/4
- \time 1/1;
+ \time 1/1
c1^"old9/4"
\property Staff.TimeSignature \set #'style = #'old6/4
- \time 1/1;
+ \time 1/1
c1^"old6/4"
\property Staff.TimeSignature \set #'style = #'old3/2
- \time 1/1;
+ \time 1/1
c1^"old3/2"
\property Staff.TimeSignature \set #'style = #'old4/4
- \time 1/1;
+ \time 1/1
c1^"old4/4"
\property Staff.TimeSignature \set #'style = #'old2/2
- \time 1/1;
+ \time 1/1
c1^"old2/2"
\property Staff.TimeSignature \set #'style = #'old2/4
- \time 1/1;
+ \time 1/1
c1^"old2/4"
\property Staff.TimeSignature \set #'style = #'old4/8
- \time 1/1;
+ \time 1/1
c1^"old4/8"
\property Staff.TimeSignature \set #'style = #'C4/4
- \time 1/1;
+ \time 1/1
c1^"C4/4"
\property Staff.TimeSignature \set #'style = #'C2/2
- \time 1/1;
+ \time 1/1
c1^"C2/2"
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
% \property Score. measurePosition = #(make-moment -1 4)
- \partial 4;
+ \partial 4
c''4 c4 c4 c2 c1
\cadenzaOn [c8 d e f] [g a b c b c b c]
\cadenzaOff
+\version "1.3.146"
\header{
-filename = "title.ly";
-title = "Title";
-subtitle = "Subtitle";
-composer= "Composer (xxxx-yyyy)";
-arranger = "Arranger";
-copyright = "public domain";
-enteredby = "jcn";
-source = "urtext";
-instrument= "Instrument";
+filename = "title.ly"
+title = "Title"
+subtitle = "Subtitle"
+composer= "Composer (xxxx-yyyy)"
+arranger = "Arranger"
+copyright = "public domain"
+enteredby = "jcn"
+source = "urtext"
+instrument= "Instrument"
}
c d e f f e d c
}
\header{
- opus = "Opus 0";
- piece = "Piece I";
- override="Overdriven";
+ opus = "Opus 0"
+ piece = "Piece I"
+ override="Overdriven"
}
}
f e d c c d e f
}
\header{
- piece = "Piece II";
- opus = "Opus 1";
+ piece = "Piece II"
+ opus = "Opus 1"
}
}
+\version "1.3.146"
\score {
\context Voice \notes\relative c {
+\version "1.3.146"
%{
Hi all,
I have extend Mats' patches to allow accidental transposition:
- \keysignature bes es fis;
+ \keysignature bes es fis
= \transpose d =>
- \keysignature gis;
+ \keysignature gis
As you can see in output = the example file "test.ly" there are a few problems left:
- key undo (already in the Todo)
%}
\header{
-title = "Test it";
-description = "Transposition Test file";
-enteredby = "Eric Bullinger";
-copyright = "public domain";
+title = "Test it"
+description = "Transposition Test file"
+enteredby = "Eric Bullinger"
+copyright = "public domain"
}
vOne = \notes \relative c''{
- \clef"violin";
- \key d \major;
- \time 2/4 ;
+ \clef"violin"
+ \key d \major
+ \time 2/4
d4 d |
- \key fis \major;
+ \key fis \major
fis4 fis |
- \key es \major;
+ \key es \major
c4 c |
}
vTwo = \notes \transpose d' { \vOne }
vThree = \notes \relative c''{
- \clef"violin";
-% \keysignature fis cis;
+ \clef"violin"
+% \keysignature fis cis
\property Staff.keySignature = #'((0 . 1)(3 . 1))
- \time 2/4 ;
+ \time 2/4
d4 d |
-% \keysignature bes es fis;
+% \keysignature bes es fis
\property Staff.keySignature = #'((3 . 1)(2 . -1)(6 . -1))
fis4 fis |
-% \keysignature fis cis gis dis ais eis;
+% \keysignature fis cis gis dis ais eis
\property Staff.keySignature = #'((2 . -1)(5 . -1)(1 . 1)(4 . 1)(0 . 1)(3 . 1))
cis4 ais4 |
}
\context Staff=vThree \vThree
\context Staff=vFour \vFour
>
- \paper { linewidth= 130.\mm; }
+ \paper { linewidth= 130.\mm }
}
+\version "1.3.146"
\score {
\context Voice \notes \relative c'' {
- \time 2/4;
+ \time 2/4
\times 2/3 { r c,,, c''' }
\times 2/3 { r c c }
\times 2/3 { r c r}
+\version "1.3.146"
\score
{
\context Voice \notes \relative c'' {
-\time 2/4;
+\time 2/4
\times 2/3 { c8 c c c c c }
\property Voice . tupletSpannerDuration = #(make-moment 1 4)
\times 2/3 { c8 c c c c c }
+\version "1.3.146"
\score {
+\version "1.3.146"
\header {
texidoc = "If you specify two different key sigs at one point, a
- warning is printed.";
+ warning is printed."
}
\score { \notes
\context Voice <
- { \key cis \major; cis4 \key bes \major; bes4 }
- { \key cis \major; fis4 \key es \major; g4 }
+ { \key cis \major cis4 \key bes \major bes4 }
+ { \key cis \major fis4 \key es \major g4 }
>
}
+\version "1.3.146"
%
% We'd want to combine the stems, but have two slurs too...
}
>
\paper{
- linewidth=60.\mm;
+ linewidth=60.\mm
}
}
+\version "1.3.146"
%{
Hmm, ik vraag me af of dit al helemaal koel is.
return abs (this_one.force_f_) + abs (prev.force_f_ - this_one.force_f_)
- + break_penalties;
+ + break_penalties
Neem als voorbeeld iets dat lijkt op allemande: keuze tussen 2 of drie
maten per regel.
}
\paper {
- indent=0.0\mm;
- linewidth=90.0\mm;
+ indent=0.0\mm
+ linewidth=90.0\mm
}
}
normal property values, and are written itno the grob when the
associated context finishes, so using it in \property works.
- "; }
-\version "1.3.145";
+ " }
+\version "1.3.146"
\score {
\notes <
\context Staff = upper {
\property Staff.VerticalExtent = #'(-15.0 . 0.0)
- \clef alto;
+ \clef alto
c1 \break c1
}
\context Staff = lower {
\property Staff.VerticalExtent = #'(-0.0 . 15.0)
- \clef alto;
+ \clef alto
g1 \break g1
}
>
\paper{
- interscoreline = 13.0\mm;
- interscorelinefill = 0;
- \translator{\ScoreContext \remove "Bar_number_engraver";}
+ interscoreline = 13.0\mm
+ interscorelinefill = 0
+ \translator{\ScoreContext \remove "Bar_number_engraver"}
\translator{\StaffContext MinimumVerticalExtent = #'(-2.0 . 2.0)}
}
}
+\version "1.3.146"
\score{
<
\context Staff = o \notes\relative c,,, {
+\version "1.3.146"
\score{
\context Staff <
- \context Voice=one\skip 1;
- \context Voice=two\skip 1;
+ \context Voice=one\skip 1
+ \context Voice=two\skip 1
\context Voice=one \partcombine Voice
\context Thread=one \notes\relative c'' {
c2 c2
}
>
\paper{
- linewidth=140.\mm;
+ linewidth=140.\mm
}
}
+\version "1.3.146"
\header{
texidoc = " Volta braces are hung on barlines. At the start of the
-line, they should always start after the prefatory matter. ";
+line, they should always start after the prefatory matter. "
}
voiceB = \notes {
- \clef bass;
+ \clef bass
\property Staff.instrument = "Bass"
\property Staff.instr = "B"
- \key f \minor;
- \time 4/4;
+ \key f \minor
+ \time 4/4
f,2 ( ) f,8 r8 f8 e8
\repeat volta 2
{
>
\paper {
- font_normal = 12.;
+ font_normal = 12.
\translator {
\StaffContext
- \consists Instrument_name_engraver;
+ \consists Instrument_name_engraver
}
}
}
+\version "1.3.146"
voiceE = \notes {
-\clef bass;
+\clef bass
\property Staff.instrument = "Bass"
\property Staff.instr = "B"
% \property Staff.VoltaBracket = \turnOff
- \time 4/4; f,2 ( ) f,8 r8 f8 e8
+ \time 4/4 f,2 ( ) f,8 r8 f8 e8
\repeat volta 2
{
d8. d16 e8. f16 f8 c8 c16 c8.
}
voicedefault = \notes {
- \time 4/4; \key f \major ;
- \tempo 4 = 200;
+ \time 4/4 \key f \major
+ \tempo 4 = 200
}
\score{
\notes <
>
\paper {
- font_normal = 12.;
+ font_normal = 12.
\translator {
\StaffContext
TimeSignature \override #'style = #'C
- \consists Instrument_name_engraver;
+ \consists Instrument_name_engraver
}
}
}
+\version "1.3.146"
\header {
texidoc="Various warnings
-";
+"
}
-linebreak = \penalty -1000;
+linebreak = \penalty #-1000
\score {
\notes {
\header {
- title = "Trip";
- copyright = "public domain";
+ title = "Trip"
+ copyright = "public domain"
}
+\version "1.3.146"
+
%{
This file tests as much features of lily as possible. If there are any
praeludiumRight = \notes {
- \key e \major;
- \clef violin;
+ \key e \major
+ \clef violin
% 13 -- how to type -- where to split -- this more neatly?
\context Staff <
}
praeludiumLeft = \notes \relative c {
- \key e \major;
- \clef bass;
+ \key e \major
+ \clef bass
% 13
\context Staff <
fugaIIRight = \notes \relative c'' {
- \key e \major; % E-major
- \clef violin;
- \time3/4;
+ \key e \major % E-major
+ \clef violin
+ \time3/4
%15
\context Staff <
gracetest = \notes \grace { [c16 ( cis dis] }
fugaIILeft = \notes {
- \key e \major;
- \clef bass;
+ \key e \major
+ \clef bass
%15
\context Staff <
\context Voice = two { \stemDown s2 e4 |
fis2 fis4 }
>
- \stemBoth cis2 [e16( fis a \clef "treble"; b] |
+ \stemBoth cis2 [e16( fis a \clef "treble" b] |
d'4 ) b8 b8 b4 |
%19
}
fugaIIPedal = \notes \relative c {
- \key e \major;
- \clef bass;
+ \key e \major
+ \clef bass
\repeat "volta" 2 { dis4.-\ltoe } \alternative { e8-\rtoe cis4 } |
b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] |
\property Score.midiInstrument = "church organ"
\praeludiumRight
- \times 4/3 { c4 c4 c4 } \mark "B";
+ \times 4/3 { c4 c4 c4 } \mark "B"
\fugaIIRight }
\context Staff = bass {
\property Staff.instrument = #"left"
\property Staff.instrument = #"bass"
\property Staff.instr = #"bs"
- \time 4/4;
- \key e \major;
- \clef bass;
+ \time 4/4
+ \key e \major
+ \clef bass
%13
r4 fis,4-\ltoe e4.-\lheel e'8-\rheel |
g r4.
)
c2^^^-^\f
- \time 3/4;
+ \time 3/4
- \fugaIIPedal \bar "|." ; }
+ \fugaIIPedal \bar "|." }
>
>
\OrchestralScoreContext
}
\translator { \PianoStaffContext
- \consists "Instrument_name_engraver";
+ \consists "Instrument_name_engraver"
}
\translator { \StaffContext
- \consists "Instrument_name_engraver";
+ \consists "Instrument_name_engraver"
}
}
\midi {
- \tempo 4 =96; }
+ \tempo 4 =96 }
}
\header {
- title = "The river is flowing";
- composer = "Traditonal (?)";
+ title = "The river is flowing"
+ composer = "Traditonal (?)"
}
\include "paper16.ly"
melody = \notes \relative c' {
- \partial 8;
+ \partial 8
g8 |
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
c4 c8 d [es () d] c4 | d4 es8 d c4.
- \bar "|.";
+ \bar "|."
}
text = \lyrics {
\context Lyrics \text
}
\midi { }
- \paper { linewidth = 10.0\cm; }
+ \paper { linewidth = 10.0\cm }
}
\score {
\context PianoStaff \notes <
- \context Staff = top { \key d \major; \time 4/4;
+ \context Staff = top { \key d \major \time 4/4
\soprano
}
- \context Staff = bottom < \key d \major; \time 4/4; \clef bass;
+ \context Staff = bottom < \key d \major \time 4/4 \clef bass
\context Voice = up { \tenor }
\context Voice = down { \bass }
>
% lines preceded by a percent sign are comments.
\include "paper16.ly"
\score {
- \notes
+ \notes
\relative c''
- \sequential {
- \key g \major;
- \time 3/4;
+ \sequential {
+ \key g \major
+ \time 3/4
\repeat "volta" 2 \sequential {
d4 g,8 a b c d4 g, g |
e'4 c8 d e fis g4 g, g |
- c4 d8()c b a( )b4 c8 b a g |
+ c4 d8( )c b a( )b4 c8 b a g |
a4 [b8 a] [g fis] g2. |
}
g4 fis e |
fis a, r8 cis8
d2.-\fermata
- \bar "|.";
+ \bar "|."
}
\paper {
- linewidth = 10.0 \cm; % standard settings are too wide for a book
+ linewidth = 10.0 \cm % standard settings are too wide for a book
}
}
- \version "1.3.138";
- \header {
- title = "Two miniatures";
- }
-
- #(set! point-and-click line-column-location)
-
- \paper { linewidth = -1.0; }
+\version "1.3.138"
+\header { title = "Two miniatures" }
- \score {
+#(set! point-and-click line-column-location)
+
+\paper { linewidth = -1.0 }
+
+\score {
\notes { c'4 d'4 }
\header {
- opus = "Opus 1.";
- piece = "Up";
- }
- }
-
- \score {
- \notes { d'4 c'4 }
+ opus = "Opus 1."
+ piece = "Up" }
+}
+
+\score {
+ \notes { d'4 c'4 }
\header {
- opus = "Opus 2.";
- piece = "Down";
- }
- }
+ opus = "Opus 2."
+ piece = "Down" }
+}
-\include "os-music.ly";
-\include "paper16.ly";
+\include "os-music.ly"
+\include "paper16.ly"
\score {
\context Staff <
+ \property Score.skipBars = ##t
\property Staff.midiInstrument = #"flute"
\global
\Key
\flautoII
>
\header {
- instrument = "flute I";
+ instrument = "flute I"
}
\paper {
- linewidth = 80 * \staffspace;
- textheight = 40 * \staffspace;
- \translator {
- \OrchestralScoreContext
- skipBars = ##t
- }
+ linewidth = 80 * \staffspace
+ textheight = 40 * \staffspace
}
\midi {
- \tempo 4 = 75;
+ \tempo 4 = 75
}
}
% switch off settings of -score file, so the rest of the
% tutorial isn't \special
-#(set! point-and-click #f)
\ No newline at end of file
+#(set! point-and-click #f)
% include file for tutorial
\header {
- title = "Zo, goed lieverd?";
- subtitle = "How's, this babe?";
- composer = "JCN";
- opus = "1";
- piece = "Laid back";
+ title = "Zo, goed lieverd?"
+ subtitle = "How's, this babe?"
+ composer = "JCN"
+ opus = "1"
+ piece = "Laid back"
}
global = {
- \time 2/4;
- \skip 2*4; \bar "|.";
+ \time 2/4
+ \skip 2*4 \bar "|."
}
-Key = \notes \key as \major;
+Key = \notes \key as \major
flautoI = \notes\relative c'' {
f8 g f g f g f g
bes as bes as bes as bes as
as8 bes as bes R1 d4 ~ d
}
tromboI = \notes\relative c'' {
- c4. c8 c8 c4. es4 R1*1/2 es4
+ c4. c8 c8 c4. es4 r as, r
}
tromboII = \notes\relative c'' {
as4. as8 as8 as4. R1*1/2 as4 es'
-\version "1.3.138";
+\version "1.3.138"
-\include "os-music.ly";
-\include "paper13.ly";
+\include "os-music.ly"
+\include "paper13.ly"
#(set! point-and-click line-column-location)
#(define text-flat '((font-relative-size . -2) (music "accidentals--1")))
\score {
<
\global
+ \property Score.BarNumber \override #'padding = #3
\context StaffGroup = woodwind <
\context Staff = flauti <
\property Staff.midiInstrument = #"flute"
\property Staff.midiInstrument = #"timpani"
\property Staff.instrument = #'(lines "Timpani" "(C-G)")
\property Staff.instr = #"Timp."
- \clef bass;
+ \clef bass
\Key
\timpani
>
\property Staff.instrument = #`(lines "Corno" (rows "(E" ,text-flat ")"))
\property Staff.instr = #`(lines "Cor." (rows "(E" ,text-flat ")"))
\property Staff.transposing = #3
- \notes \key bes \major;
+ \notes \key bes \major
\context Voice=one \corno
>
>
>
\paper {
- indent = 15 * \staffspace;
- linewidth = 60 * \staffspace;
- textheight = 90 * \staffspace;
- \translator{
- \ThreadContext
- \consists "Rest_engraver";
- }
+ indent = 15 * \staffspace
+ linewidth = 60 * \staffspace
+ textheight = 90 * \staffspace
\translator{
\VoiceContext
- \remove "Rest_engraver";
- \consists "Multi_measure_rest_engraver";
- \consists "Bar_engraver";
+ \consists "Multi_measure_rest_engraver"
}
\translator{
\HaraKiriStaffContext
- \remove "Multi_measure_rest_engraver";
- \remove "Bar_engraver";
- }
- \translator {
- \OrchestralScoreContext
- BarNumber \override #'padding = #3
+ \remove "Multi_measure_rest_engraver"
}
}
\midi {
- \tempo 4 = 75;
+ \tempo 4 = 75
}
}
-\include "paper16.ly";
+\include "paper16.ly"
stemdown = \property Voice.Stem \override #'direction = #-1
stemup = \property Voice.Stem \override #'direction = #1
stemboth = \property Voice.Stem \revert #'direction
viola = \notes \relative c' \context Voice = viola {
- <c4-\f-\arpeggio g' c>
- \stemDown g'8. b,16
- s1 s2. r4
- g
+ <c4-\f-\arpeggio g' c>
+ \stemDown g'8. b,16
+ s1 s2. r4
+ g
}
oboes = \notes \relative c'' \context Voice = oboe {
- \stemUp s4 g8. b,16 c8 r <e'8.^\p g> <f16 a>
- \grace <e8( g> <d4 f> <c2 e> \times 2/3 { <d8 \< f> <e g> <f a> }
- <
- { \times 2/3 { a8 g c } \! c2 }
- \context Voice = oboeTwo {
- \stemDown
- \grace {
- \property Grace.Stem \override #'direction = #-1
- [f,16 g] }
- f8 e e2
- } >
- \stemBoth
- \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
- [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r |
- [<c16( e> < )e8. g>] <c8 e,>
+ \stemUp s4 g8. b,16 c8 r <e'8.^\p g> <f16 a>
+ \grace <e8( g> <d4 f> <c2 e>
+ \times 2/3 { <d8 \< f> <e g> <f a> }
+ <
+ { \times 2/3 { a8 g c } \! c2 }
+ \context Voice = oboeTwo {
+ \stemDown
+ \grace {
+ \property Grace.Stem \override #'direction = #-1
+ [f,16 g] }
+ f8 e e2
+ }
+ >
+ \stemBoth
+ \grace <c,8( e> <)b8. d8.-\trill> <c16 e> |
+ [<d ( f> < )f8. a>] <)b,8 d> r [<d16( f> <f8. )a>] <b,8 d> r |
+ [<c16( e> < )e8. g>] <c8 e,>
}
-hoomPah = \repeat unfold 8
- \notes \transpose c' { c8 \stemDown c'8 \stemUp }
+hoomPah = \repeat unfold 8 \notes
+ \transpose c' { c8 \stemDown c'8 \stemUp }
bassvoices = \notes \relative c' {
- c4 g8. b,16
- \autochange Staff \hoomPah
- \translator Staff = down
- \stemDown [c8 c'8] r4
- <g d'> r4
- < {\stemUp r2 <e4 c'> <c8 g'> }
- \context Voice = reallyLow {\stemDown g2 ~ | g4 c8 } >
+ c4 g8. b,16
+ \autochange Staff \hoomPah
+ \translator Staff = down
+ \stemDown [c8 c'8] r4
+ <g d'> r4
+ < {\stemUp r2 <e4 c'> <c8 g'> }
+ \context Voice = reallyLow {\stemDown g2 ~ | g4 c8 } >
}
\score {
- \context PianoStaff \notes <
- \context Staff = up < \time 2/2;
- \viola
- \oboes
- >
- \context Staff = down < \time 2/2; \clef bass;
- \bassvoices
- >
- >
- \midi { }
- \paper {
- indent = 0.0;
- linewidth = 15.0 \cm; }
+ \context PianoStaff \notes <
+ \context Staff = up < \time 2/2
+ \viola
+ \oboes
+ >
+ \context Staff = down < \time 2/2 \clef bass;
+ \bassvoices
+ >
+ >
+ \midi { }
+ \paper {
+ indent = 0.0
+ linewidth = 15.0 \cm }
}
s1*2
\accomp
>
- \context Staff = down { \clef bass; s1*2 }
+ \context Staff = down { \clef bass s1*2 }
>
saw = \context Staff \notes {
\header {
- title = "Test";
+ title = "Test"
}
+\version "1.3.146"
\header{
-filename = "twinkle-pop.ly";
-xtitle = "Ah, vous dirais-je, maman ";
-description = "twinkle twinkle in pop-song-settings";
-composer = "traditional";
-enteredby = "HWN, chords by Johan Vromans";
-copyright = "public domain";
+filename = "twinkle-pop.ly"
+xtitle = "Ah, vous dirais-je, maman "
+description = "twinkle twinkle in pop-song-settings"
+composer = "traditional"
+enteredby = "HWN, chords by Johan Vromans"
+copyright = "public domain"
}
melodie = \notes\relative c'' {
- \clef "violin";
- \time 2/4 ;
+ \clef "violin"
+ \time 2/4
c4 c | g' g | a a | g2 |
f4 f | e e | d d | c2 |
g g | f f | e e | d d |
% copy 1-8
c4 c | g' g | a a | g2 |
- f4 f | e e | d d | c2 \bar "|.";
+ f4 f | e e | d d | c2 \bar "|."
}
acc = \chords {
\context Lyrics \text
>
\header{
- title = "Ah, vous dirais-je, maman ";
+ title = "Ah, vous dirais-je, maman "
}
\paper { }
}
\lyrics \context Lyrics \text
>
\header{
- piece = "clarinet in B\\textflat";
+ piece = "clarinet in B\\textflat"
}
\paper { }
}
+\version "1.3.146"
\header{
-filename = "twinkle.ly";
-title = "Twinkle Twinkle Little Star";
-composer = "Traditional";
-enteredby = "hwn and jcn";
-copyright = "public domain";
+filename = "twinkle.ly"
+title = "Twinkle Twinkle Little Star"
+composer = "Traditional"
+enteredby = "hwn and jcn"
+copyright = "public domain"
}
%{
melody = \notes \relative c'' {
- \clef violin;
+ \clef violin
\property Staff.instrument = "alto sax"
c4 c | g' g | a a | g g |
}
accompany = \notes \relative c {
- \clef "bass";
+ \clef "bass"
c4 c' | e c | f c | e c |
d b | c a | f g | c,2 |
textiii = \lyrics{
Then the tra -- veler in the dark " "
- Thanks you for your ti -- ny " " spark;
+ Thanks you for your ti -- ny " " spark
He could not see which way to go,
If you did not twin -- kle " " so. " "
Twin -- kle, twin -- kle, lit -- tle star, " "
\context Lyrics=top s1
\context GrandStaff <
\context Staff=ii \repeat volta 2 <
- \time 2/4;
+ \time 2/4
\melody >
\context Staff=iii \repeat volta 2 <
\accompany >
>
>
\paper{
- gourlay_maxmeasures = 14.0;
+ gourlay_maxmeasures = 14.0
}
\midi{
- \tempo 4 = 120 ;
+ \tempo 4 = 120
}
}
<INITIAL,chords,lyrics,notes>\\version{WHITE}* {
yy_push_state (version);
}
-<version>\"[^"]*\";? { /* got the include file name */
+<version>\"[^"]*\" { /* got the version number */
String s (YYText ()+1);
s = s.left_str (s.index_last_i ('"'));
new_input (ly_scm2string (sid), source_global_l);
yy_pop_state ();
} else {
- String msg (_f ("wrong or undefined identifier: `%s'", s ));
+ String msg (_f ("wrong or undefined identifier: `%s'", s ));
+
LexerError (msg.ch_C ());
+ SCM err = scm_current_error_port ();
+ scm_puts ("This value was found in the table: ", err);
+ scm_display (sid, err);
}
}
<incl>\"[^"]* { // backup rule
int cnv=sscanf (YYText (), "%lf", &r);
assert (cnv == 1);
- yylval.real = r;
+ yylval.scm = gh_double2scm (r);
return REAL;
}
{"consists", CONSISTS},
{"consistsend", CONSISTSEND},
{"context", CONTEXT},
+ {"default", DEFAULT},
{"denies", DENIES},
{"duration", DURATION},
{"dynamicscript", DYNAMICSCRIPT},
%union {
Link_array<Request> *reqvec;
- String * string;
+
+ String *string; // needed by the lexer as temporary scratch area.
Music *music;
Score *score;
Scope *scope;
Scheme_hash_table *scmhash;
- Musical_req* musreq;
Music_output_def * outputdef;
- Midi_def* midi;
- Real real;
Request * request;
/* We use SCMs to do strings, because it saves us the trouble of
%token MIDI
%token MM_T
%token PITCH
+%token DEFAULT
%token NAME
%token PITCHNAMES
%token NOTES
%token <scm> MUSIC_IDENTIFIER TRANSLATOR_IDENTIFIER
%token <scm> STRING_IDENTIFIER SCM_IDENTIFIER
%token <scm> RESTNAME
-%token <scm> STRING
+%token <scm> STRING
%token <scm> SCM_T
%token <i> UNSIGNED
-%token <real> REAL
+%token <scm> REAL
%type <outputdef> output_def
%type <scmhash> lilypond_header lilypond_header_body
%type <request> extender_req
%type <request> hyphen_req
%type <scm> string bare_number number_expression
+
%type <score> score_block score_body
%type <scm> translator_spec_block translator_spec_body
Scope *sc = new Scope ($$);
THIS->lexer_p_-> scope_l_arr_.push (sc);
}
- | lilypond_header_body assignment semicolon {
+ | lilypond_header_body assignment {
}
;
$$ = unsmob_translator_def ($1)->clone_scm ();
unsmob_translator_def ($$)-> set_spot (THIS->here_input ());
}
- | TYPE STRING semicolon {
+ | TYPE STRING {
$$ = Translator_def::make_scm ();
Translator_def*td = unsmob_translator_def ($$);
td->translator_group_type_ = $2;
unsmob_translator_def ($$)->add_pop_property (
scm_string_to_symbol ($2), $4);
}
- | translator_spec_body STRING '=' identifier_init semicolon {
- SCM v = gh_int2scm (0);
- if (gh_string_p ($4) || gh_number_p ($4) || gh_boolean_p ($4))
- v = $4;
- else
- THIS->parser_error (_ ("Wrong type for property value"));
-
- /* ugh*/
- unsmob_translator_def ($$)->add_property_assign ($2, v);
- }
- | translator_spec_body NAME STRING semicolon {
+ | translator_spec_body NAME STRING {
unsmob_translator_def ($$)->type_name_ = $3;
}
- | translator_spec_body CONSISTS STRING semicolon {
+ | translator_spec_body CONSISTS STRING {
unsmob_translator_def ($$)->add_element ($3);
}
- | translator_spec_body ALIAS STRING semicolon {
+ | translator_spec_body ALIAS STRING {
Translator_def*td = unsmob_translator_def ($$);
td->type_aliases_ = gh_cons ($3, td->type_aliases_);
}
->add_property_assign (scm_symbol_to_string (gh_caar (p)), gh_cdar (p));
}
- | translator_spec_body CONSISTSEND STRING semicolon {
+ | translator_spec_body CONSISTSEND STRING {
unsmob_translator_def ($$)->add_last_element ( $3);
}
- | translator_spec_body ACCEPTS STRING semicolon {
+ | translator_spec_body ACCEPTS STRING {
unsmob_translator_def ($$)->set_acceptor ($3,true);
}
- | translator_spec_body DENIES STRING semicolon {
+ | translator_spec_body DENIES STRING {
unsmob_translator_def ($$)->set_acceptor ($3,false);
}
- | translator_spec_body REMOVE STRING semicolon {
+ | translator_spec_body REMOVE STRING {
unsmob_translator_def ($$)->remove_element ($3);
}
;
THIS->lexer_p_->scope_l_arr_.push (p->scope_p_);
$$ = p;
}
- | music_output_def_body assignment semicolon {
+ | music_output_def_body assignment {
}
| music_output_def_body translator_spec_block {
| music_output_def_body STYLESHEET embedded_scm {
dynamic_cast<Paper_def*> ($$)-> style_sheet_ = $3;
}
- | music_output_def_body tempo_request semicolon {
+ | music_output_def_body tempo_request {
/*
junk this ? there already is tempo stuff in
music.
scm_unprotect_object ($2->self_scm ());
}
- | CONTEXT STRING '=' STRING Music {
+ | CONTEXT string '=' string Music {
Context_specced_music *csm = new Context_specced_music (SCM_EOL);
csm->set_mus_property ("element", $5->self_scm ());
scm_unprotect_object ($5->self_scm ());
$$-> set_spot (THIS->here_input ());
$1-> set_spot (THIS->here_input ());
}
- | BAR STRING ';' {
+ | BAR STRING {
Music *t = new Music (SCM_EOL);
t->set_mus_property ("iterator-ctor",
csm->set_mus_property ("context-type", ly_str02scm ("Score"));
}
- | PARTIAL duration_length ';' {
+ | PARTIAL duration_length {
Music * p = new Music (SCM_EOL);
p->set_mus_property ("symbol", ly_symbol2scm ( "measurePosition"));
p->set_mus_property ("iterator-ctor",
$$ =sp ;
sp-> set_mus_property ("context-type", ly_str02scm ( "Score"));
}
- | CLEF STRING ';' {
+ | CLEF STRING {
SCM func = scm_eval2 (ly_symbol2scm ("clef-name-to-properties"), SCM_EOL);
SCM result = gh_call1 (func, $2);
$$ =sp ;
sp-> set_mus_property ("context-type", ly_str02scm ("Staff"));
}
- | TIME_T bare_unsigned '/' bare_unsigned ';' {
+ | TIME_T bare_unsigned '/' bare_unsigned {
Music * p = new Music (SCM_EOL);
p->set_mus_property ("symbol",
ly_symbol2scm ( "timeSignatureFraction"));
command_req:
shorthand_command_req { $$ = $1; }
- | verbose_command_req semicolon { $$ = $1; }
+ | verbose_command_req { $$ = $1; }
;
shorthand_command_req:
sp_p->set_spot (THIS->here_input ());
$$ = sp_p;
}
- | MARK {
+ | MARK DEFAULT {
Mark_req * m = new Mark_req;
$$ = m;
}
$$ = m;
}
- | PENALTY bare_int {
+ | PENALTY SCM_T {
+
+
Break_req * b = new Break_req;
- b->set_mus_property ("penalty", gh_double2scm ( $2 / 100.0));
+ SCM s = $2;
+ if (!gh_number_p (s))
+ s =gh_int2scm (0);
+
+ b->set_mus_property ("penalty", s);
b->set_spot (THIS->here_input ());
$$ = b;
}
| tempo_request {
$$ = $1;
}
- | KEY {
+ | KEY DEFAULT {
Key_change_req *key_p= new Key_change_req;
$$ = key_p;
}
$$ = new Sequential_music (SCM_EOL);
$$->set_mus_property ("elements", ms);
}
- | STRING {
- THIS->remember_spot ();
- }
- /* cont */
- optional_notemode_duration {
- if (!THIS->lexer_p_->lyric_state_b ()) {
- THIS->pop_spot ().error (_ ("Have to be in Lyric mode for lyrics"));
- THIS->error_level_i_ = 1;
- THIS->parser_error (_ ("Giving up"));
- }
- else
- THIS->pop_spot ();
+ | STRING optional_notemode_duration {
+
Lyric_req* lreq_p = new Lyric_req;
lreq_p->set_mus_property ("text", $1);
- lreq_p->set_mus_property ("duration",$3);
+ lreq_p->set_mus_property ("duration",$2);
lreq_p->set_spot (THIS->here_input ());
Simultaneous_music* velt_p = new Request_chord (SCM_EOL);
velt_p->set_mus_property ("elements", gh_list (lreq_p->self_scm (), SCM_UNDEFINED));
UNSIGNED {
$$ = gh_int2scm ($1);
}
- | DIGIT {
- $$ = gh_int2scm ($1);
- }
| REAL {
- $$ = gh_double2scm ($1);
+ $$ = $1;
}
| NUMBER_IDENTIFIER {
$$ = $1;
}
| REAL CM_T {
- $$ = gh_double2scm ($1 CM);
+ $$ = gh_double2scm (gh_scm2double ($1) CM );
}
| REAL PT_T {
- $$ = gh_double2scm ($1 PT);
+ $$ = gh_double2scm (gh_scm2double ($1) PT);
}
| REAL IN_T {
- $$ = gh_double2scm ($1 INCH);
+ $$ = gh_double2scm (gh_scm2double ($1) INCH);
}
| REAL MM_T {
- $$ = gh_double2scm ($1 MM);
+ $$ = gh_double2scm (gh_scm2double ($1) MM);
}
| REAL CHAR_T {
- $$ = gh_double2scm ($1 CHAR);
+ $$ = gh_double2scm (gh_scm2double ($1) CHAR);
}
;
bare_unsigned:
- bare_number {
- if (scm_integer_p ($1) == SCM_BOOL_T) {
- $$ = gh_scm2int ($1);
-
- } else {
- THIS->parser_error (_ ("need integer number arg"));
- $$ = 0;
- }
- if ($$ < 0) {
- THIS->parser_error (_ ("Must be positive integer"));
- $$ = -$$;
- }
-
+ UNSIGNED {
+ $$ = $1;
+ }
+ | DIGIT {
+ $$ = $1;
}
;
+
bare_int:
bare_number {
if (scm_integer_p ($1) == SCM_BOOL_T)
;
-semicolon:
- ';'
- ;
-
%%
void
-
/*
lyric-number-engraver.cc -- implement Stanza_number_engraver
void
Stanza_number_engraver::acknowledge_grob (Grob_info i)
{
- SCM s = get_property ("stanza");
+ if (gh_string_p (get_property ("whichBar")))
+ {
+ SCM s = get_property ("stanza");
- if (now_mom () > Moment (0))
- s = get_property ("stz");
+ if (now_mom () > Moment (0))
+ s = get_property ("stz");
- if (gh_string_p (s))
- {
-// if (i.elem_l_->has_interface (symbol ("lyric-syllable-interface")))
- // Tried catching lyric items to generate stanza numbers, but it spoils lyric spacing.
- if (Bar::has_interface (i.elem_l_) || now_mom () == Moment (0))
- // Works, but requires bar_engraver in LyricsVoice context apart from at beginning.
- // Is there any score element we can catch that will do the trick?
-// if (! i.elem_l_->has_interface (symbol ("lyric-syllable-interface")) ||
-// now_mom () == Moment (0))
- // What happens if we try anything at all EXCEPT a lyric? Is there anything else?
- // Not sure what it's catching, but it still mucks up lyrics.
+ if (gh_string_p (s))
+
+ /*
+ if (i.elem_l_->has_interface (symbol ("lyric-syllable-interface")))
+
+ Tried catching lyric items to generate stanza numbers, but it
+ spoils lyric spacing.
+
+ Works, but requires bar_engraver in LyricsVoice context apart
+ from at beginning. Is there any score element we can catch
+ that will do the trick?
+
+ What happens if we try anything at all EXCEPT a lyric? Is
+ there anything else? Not sure what it's catching, but it
+ still mucks up lyrics.
+
+ */
+
create_text (s);
}
}
-
void
Stanza_number_engraver::stop_translation_timestep ()
{
Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
Real head_wid = 0;
-
- /*
-TODO:
-
- I don't really get the idea of the attachment-angle.
- It seems like that you attach the Stem to the NoteHead at point
- (1,tan(aa)/2), making it still nessesary to have special CENTER-STEMS
- option - and if I would like to attach stem i.e. here:
-
- |
- |
- |
- XXX
- XXXXX
- XXXXX
- XXX
-
- That would be impossible.
- Why haven't you just made ATTACHMENT-COORDINATES as a pair of reals,
- with (0 . 0) meaning CENTER, (1 . 1) upper right, etc...?
-
--Rune
-
-
- */
if (Grob *hed = support_head (me))
{
Real y_attach = Note_head::stem_attachment_coordinate ( hed, Y_AXIS);
y_attach = head_height.linear_combination (y_attach);
- stem_y[Direction (-d)] += d * y_attach;
+ stem_y[Direction (-d)] += d * 2*y_attach;
}
{
/*
- FIXME: should look at afm/tfm file for dimensions.
+ FIXME:
+ * should look at afm/tfm file for dimensions.
+ (This breaks ascii-art output: it hasn't got 255 symbols)
- (This breaks ascii-art output: it hasn't got 255 symbols)
+ * more glyphs (or maybe just better sized (fixed # of staff-spaces)),
+ the size mismatches with the staffs are very ugly
+
*/
// ugrhn
{
if (gh_string_p (text))
return string2molecule (me, text, alist_chain);
- else if (gh_list_p (text))
+ else if (gh_list_p (text) && text != SCM_EOL && text != SCM_UNDEFINED)
{
if (!gh_pair_p (gh_car (text)) && gh_string_p (gh_car (text)))
return string2molecule (me, gh_car (text), alist_chain);
+\version "1.3.146"
% a4.ly
-hsize = 210.0 \mm;
-vsize = 296.9 \mm;
+hsize = 210.0 \mm
+vsize = 296.9 \mm
+\version "1.3.146"
% Symbols needed to print accordion music
%
% 2' = T
% Toplevel initialisation file.
-\version "1.3.120";
+\version "1.3.146"
\include "declarations.ly"
\include "paper16.ly"
\paper { \paperSixteen
- linewidth = -1.\cm;
- castingalgorithm = \Wordwrap;
- "unusedentry" = "}\\def\\nolilyfooter{";
+ linewidth = -1.\cm
+ castingalgorithm = \Wordwrap
+ "unusedentry" = "}\\def\\nolilyfooter{"
}
\score {
% Toplevel initialisation file.
-\version "1.3.120";
+\version "1.3.146"
-\include "declarations.ly";
+\include "declarations.ly"
\include "paper16.ly"
\paper{
-\version "1.3.110";
+\version "1.3.146"
% Toplevel initialisation file.
-\version "1.3.120";
+\version "1.3.146"
\include "declarations.ly"
-\include "paper16.ly";
+\include "paper16.ly"
\paper {
\paperSixteen
- linewidth = -1.0\cm;
- castingalgorithm = \Wordwrap;
- "unusedentry" = "}\\def\\nolilyfooter{";
+ linewidth = -1.0\cm
+ castingalgorithm = \Wordwrap
+ "unusedentry" = "}\\def\\nolilyfooter{"
}
% Toplevel initialisation file.
-\version "1.3.120";
+\version "1.3.146"
\include "declarations.ly"
\paper {
\paperSixteen
-% linewidth = 7.\cm;
- linewidth = 11.\cm;
+% linewidth = 7.\cm
+ linewidth = 11.\cm
}
\maininput
+\version "1.3.146"
% urg!
%
(m . ,(make-pitch 0 2 -1 ))
(min . ,(make-pitch 0 2 -1 ))
(aug . ,(make-pitch 0 4 1 ))
-; (dim . ,(make-pitch -100 4 -1 ))
+ (dim . ,(make-pitch -100 4 -1 ))
(dim . ,(make-pitch -100 2 -1 ))
; urg, not actually a chord-modifier, but it works
-; c7 -> <c bes>, c 7+ -> c b
+; c7 -> <c bes>, c 7+ -> c b
(maj . ,(make-pitch 0 6 1 ))
; sus4 should delete 2 too...
(sus . ,(make-pitch 0 3 0 ))
+
+\version "1.3.146"
breve = \duration #(make-duration -1 0)
longa = \duration #(make-duration -2 0 )
maxima = \duration #(make-duration -3 0)
bigger = 1
center=0
-break = \penalty -1000000;
-noBreak = \penalty 1000000;
+break = \penalty #-10000
+noBreak = \penalty #10000
\include "scale-definitions.ly"
melisma = \property Staff.melismaBusy = ##t
melismaEnd = \property Staff.melismaBusy = ##f
-papersize = "a4"
+
\include "engraver.ly"
-\include "generic-paper.ly"
-\include "paper20.ly"
-singleLine = \paper { linewidth = 1.; }
+singleLine = \paper { linewidth = 1. }
% ugh
\include "midi.ly"
+papersize = "a4"
+paperfile = \papersize + ".ly"
+
+\include "generic-paper.ly"
+\include "paper20.ly"
+
+
\include "dynamic-scripts.ly"
\include "spanners.ly"
\include "property.ly"
-unusedEntry = \notes { c4 } % reset default duration
+
+% reset default duration
+unusedEntry = \notes { c4 }
% music = "\melodic\relative c"
(gis . ,(make-pitch -1 4 1 ))
(gisis . ,(make-pitch -1 4 2 ))
(asas . ,(make-pitch -1 5 -2 ))
- (ases . ,(make-pitch -1 5 -2 )) ; non-standard name for asas
+ (ases . ,(make-pitch -1 5 -2 )) non-standard name for asas
(as . ,(make-pitch -1 5 -1 ))
(a . ,(make-pitch -1 5 0 ))
(ais . ,(make-pitch -1 5 1 ))
-\version "1.3.110";
+\version "1.3.146"
% GM drum pitches.
% I use different accidentals to distinguish drums at the same GM pitch.
% Always accidental 0 (white keys) or 1 (black keys) to get the "correct" gm name.
-% i.e. fis, for closed highat ; ges, for highat.
+% i.e. fis, for closed highat ges, for highat.
% 2001/03/25 Rune Zedeler <rune@zedeler.dk>
(mutetriangle trim ,(make-pitch 1 4 1))
(triangle tri ,(make-pitch 1 4 2))
(opentriangle trio ,(make-pitch 1 5 0))
- ; "transposing" pitches:
+ "transposing" pitches:
(oneup ua ,(make-pitch 0 1 0))
(twoup ub ,(make-pitch 0 2 0))
(threeup uc ,(make-pitch 0 3 0))
)
-\version "1.3.142";
+\version "1.3.146"
+\version "1.3.146"
%
% declare the standard dynamic identifiers.
(eff . ,(make-pitch -1 2 -2 ))
(ef . ,(make-pitch -1 2 -1 ))
(e . ,(make-pitch -1 2 0 ))
- (es . ,(make-pitch -1 2 1 )) ; es = E-flat in Dutch
+
+ (es . ,(make-pitch -1 2 1 ))
(ess . ,(make-pitch -1 2 2 ))
(fff . ,(make-pitch -1 3 -2 ))
(ff . ,(make-pitch -1 3 -1 ))
(aff . ,(make-pitch -1 5 -2 ))
(af . ,(make-pitch -1 5 -1 ))
(a . ,(make-pitch -1 5 0 ))
- (as . ,(make-pitch -1 5 1 )) ; as = A-flat in Dutch
+ (as . ,(make-pitch -1 5 1 ))
(ass . ,(make-pitch -1 5 2 ))
(bff . ,(make-pitch -1 6 -2 ))
(bf . ,(make-pitch -1 6 -1 ))
(bss . ,(make-pitch -1 6 2 ))
)
-\version "1.3.110";
+\version "1.3.146"
-\version "1.3.140"
+\version "1.3.146"
%
% setup for Request->Element conversion. Guru-only
%
StaffContext=\translator {
- \type "Engraver_group_engraver";
- \name Staff ;
- \consists "Output_property_engraver";
+ \type "Engraver_group_engraver"
+ \name Staff
+ \consists "Output_property_engraver"
Generic_property_list = #generic-staff-properties
- \consists "Property_engraver";
+ \consists "Property_engraver"
- \consists "Multi_measure_rest_engraver";
+ \consists "Multi_measure_rest_engraver"
- \consists "Bar_engraver";
+ \consists "Bar_engraver"
% Bar_engraver must be first so default bars aren't overwritten
% with empty ones.
-% \consists "Repeat_engraver";
- \consists "Volta_engraver";
- \consists "Separating_line_group_engraver";
+% \consists "Repeat_engraver"
+ \consists "Volta_engraver"
+ \consists "Separating_line_group_engraver"
- \consists "Clef_engraver";
- \consists "Key_engraver";
- \consists "Time_signature_engraver";
- \consists "Staff_symbol_engraver";
- \consists "Collision_engraver";
- \consists "Rest_collision_engraver";
- \consists "Local_key_engraver";
- \consists "Piano_pedal_engraver";
+ \consists "Clef_engraver"
+ \consists "Key_engraver"
+ \consists "Time_signature_engraver"
+ \consists "Staff_symbol_engraver"
+ \consists "Collision_engraver"
+ \consists "Rest_collision_engraver"
+ \consists "Local_key_engraver"
+ \consists "Piano_pedal_engraver"
%{
- The Instrument_name_engraver puts the name of the instrument
- (\property Staff.instrument; Staff.instr for subsequent lines)
+ The Instrument_name_engravei puts the name of the instrument
+ (\property Staff.instrument Staff.instr for subsequent lines)
to the left of a staff.
This is commented out, so you don't get funny things on the
PianoStaff
- \consists "Instrument_name_engraver";
+ \consists "Instrument_name_engraver"
%}
- \consistsend "Axis_group_engraver";
+ \consistsend "Axis_group_engraver"
MinimumVerticalExtent = ##f
ExtraVerticalExtent = ##f
instrument = #""
instr = #""
- \accepts "Voice";
+ \accepts "Voice"
}
StaffContainerContext = \translator {
- \type Engraver_group_engraver;
- \consists "Axis_group_engraver";
+ \type Engraver_group_engraver
+ \consists "Axis_group_engraver"
MinimumVerticalExtent = ##f
ExtraVerticalExtent = ##f
VerticalExtent = ##f
- \accepts Staff;
- \name StaffContainer;
+ \accepts Staff
+ \name StaffContainer
}
InnerChoirStaffContext = \translator {
- \type "Engraver_group_engraver";
- \name InnerChoirStaff;
- alignmentReference = \center;
- \consists "System_start_delimiter_engraver";
+ \type "Engraver_group_engraver"
+ \name InnerChoirStaff
+ alignmentReference = #0
+ \consists "System_start_delimiter_engraver"
SystemStartDelimiter \override #'glyph = #'bracket
- \accepts "Staff";
- \accepts "RhythmicStaff";
- \accepts "GrandStaff";
- \accepts "PianoStaff";
- \accepts "Lyrics";
- \accepts "ChordNames";
+ \accepts "Staff"
+ \accepts "RhythmicStaff"
+ \accepts "GrandStaff"
+ \accepts "PianoStaff"
+ \accepts "Lyrics"
+ \accepts "ChordNames"
}
ChoirStaffContext = \translator {
\InnerChoirStaffContext
- \name ChoirStaff;
- \accepts "InnerChoirStaff";
- \accepts "InnerStaffGroup";
+ \name ChoirStaff
+ \accepts "InnerChoirStaff"
+ \accepts "InnerStaffGroup"
}
RhythmicStaffContext=\translator{
- \type "Engraver_group_engraver";
+ \type "Engraver_group_engraver"
- \consists "Property_engraver";
- \consists "Output_property_engraver";
+ \consists "Property_engraver"
+ \consists "Output_property_engraver"
Generic_property_list = #generic-staff-properties
MinimumVerticalExtent = ##f
ExtraVerticalExtent = ##f
VerticalExtent = ##f
- \consists "Pitch_squash_engraver";
- \consists "Separating_line_group_engraver";
- \name RhythmicStaff;
- \alias "Staff";
+ \consists "Pitch_squash_engraver"
+ \consists "Separating_line_group_engraver"
+ \name RhythmicStaff
+ \alias "Staff"
Bar \override #'bar-size = #4
VoltaBracket \override #'minimum-space = #15 % urg, in \pt
VoltaBracket \override #'padding = #5 % urg, in \pt
StaffSymbol \override #'line-count = #1
-% \consists "Repeat_engraver";
- \consists "Volta_engraver";
- \consists "Bar_engraver";
- \consists "Time_signature_engraver";
- \consists "Staff_symbol_engraver";
- \consistsend "Axis_group_engraver";
- \accepts "Voice";
+% \consists "Repeat_engraver"
+ \consists "Volta_engraver"
+ \consists "Bar_engraver"
+ \consists "Time_signature_engraver"
+ \consists "Staff_symbol_engraver"
+ \consistsend "Axis_group_engraver"
+ \accepts "Voice"
}
VoiceContext = \translator {
- \type "Engraver_group_engraver";
- \name Voice;
+ \type "Engraver_group_engraver"
+ \name Voice
Generic_property_list = #generic-voice-properties
% must come before all
- \consists "Voice_devnull_engraver";
- \consists "Output_property_engraver";
- \consists "Arpeggio_engraver";
+ \consists "Voice_devnull_engraver"
+ \consists "Output_property_engraver"
+ \consists "Arpeggio_engraver"
- \consists "Text_spanner_engraver";
- \consists "Property_engraver";
+ \consists "Text_spanner_engraver"
+ \consists "Property_engraver"
- \consists "Breathing_sign_engraver";
- \consists "Rest_engraver";
- \consists "Dot_column_engraver";
- \consists "Stem_engraver";
- \consists "Beam_engraver";
- \consists "Auto_beam_engraver";
+ \consists "Breathing_sign_engraver"
+ % \consists "Rest_engraver"
+ \consists "Dot_column_engraver"
+ \consists "Stem_engraver"
+ \consists "Beam_engraver"
+ \consists "Auto_beam_engraver"
- \consists "Chord_tremolo_engraver";
- \consists "Percent_repeat_engraver";
- \consists "Melisma_engraver";
+ \consists "Chord_tremolo_engraver"
+ \consists "Percent_repeat_engraver"
+ \consists "Melisma_engraver"
%{
Must come before text_engraver, but after note_column engraver.
%}
- \consists "Dynamic_engraver";
- \consists "Text_engraver";
-
- \consists "Script_engraver";
- \consists "Script_column_engraver";
- \consists "Rhythmic_column_engraver";
- \consists "Phrasing_slur_engraver";
- \consists "Slur_engraver";
- \consists "Tie_engraver";
- \consists "Tuplet_engraver";
- \consists "Grace_position_engraver";
- \consists "A2_engraver";
-
- \consists "Skip_req_swallow_translator";
- \accepts Thread; % bug if you leave out this!
- \accepts Grace;
+ \consists "Dynamic_engraver"
+ \consists "Text_engraver"
+
+ \consists "Script_engraver"
+ \consists "Script_column_engraver"
+ \consists "Rhythmic_column_engraver"
+ \consists "Phrasing_slur_engraver"
+ \consists "Slur_engraver"
+ \consists "Tie_engraver"
+ \consists "Tuplet_engraver"
+ \consists "Grace_position_engraver"
+ \consists "A2_engraver"
+
+ \consists "Skip_req_swallow_translator"
+ \accepts Thread % bug if you leave out this!
+ \accepts Grace
}
GraceContext=\translator {
- \type "Grace_engraver_group";
- \name "Grace";
- \consists "Output_property_engraver";
+ \type "Grace_engraver_group"
+ \name "Grace"
+ \consists "Output_property_engraver"
Generic_property_list = #generic-grace-properties
- \consists "Note_heads_engraver";
- \consists "Local_key_engraver";
- \consists "Stem_engraver";
- \consists "Beam_engraver";
- \consists "Slur_engraver";
+ \consists "Note_heads_engraver"
+ \consists "Local_key_engraver"
+ \consists "Stem_engraver"
+ \consists "Beam_engraver"
+ \consists "Slur_engraver"
- \consists "Auto_beam_engraver";
- \consists "Align_note_column_engraver";
+ \consists "Auto_beam_engraver"
+ \consists "Align_note_column_engraver"
- \consists "Rhythmic_column_engraver";
+ \consists "Rhythmic_column_engraver"
- \consists "Dynamic_engraver";% in Grace ???
- \consists "Text_engraver"; % in Grace ???
+ \consists "Dynamic_engraver"% in Grace ???
+ \consists "Text_engraver" % in Grace ???
- \consists "Property_engraver";
+ \consists "Property_engraver"
Stem \override #'flag-style = #"grace"
Stem \override #'stem-length = #6.0
= #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
weAreGraceContext = ##t
- graceAccidentalSpace= 1.5 ; % in staff space
+ graceAccidentalSpace= #1.5 % in staff space
}
ThreadContext = \translator{
- \type Engraver_group_engraver;
- \name Thread;
+ \type Engraver_group_engraver
+ \name Thread
- \consists "Thread_devnull_engraver";
- \consists "Note_heads_engraver";
- \consists "Note_head_line_engraver";
- \consists "Output_property_engraver";
+ \consists "Thread_devnull_engraver"
+ \consists "Note_heads_engraver"
+ \consists "Rest_engraver"
+ \consists "Note_head_line_engraver"
+ \consists "Output_property_engraver"
Generic_property_list = #generic-thread-properties
- \consists "Property_engraver";
+ \consists "Property_engraver"
}
GrandStaffContext=\translator{
- \type "Engraver_group_engraver";
- \name GrandStaff;
- \consists "Span_bar_engraver";
- \consists "Span_arpeggio_engraver";
- \consists "System_start_delimiter_engraver";
+ \type "Engraver_group_engraver"
+ \name GrandStaff
+ \consists "Span_bar_engraver"
+ \consists "Span_arpeggio_engraver"
+ \consists "System_start_delimiter_engraver"
SystemStartDelimiter \override #'glyph = #'brace
- \consists "Property_engraver";
+ \consists "Property_engraver"
Generic_property_list = #generic-grand-staff-properties
- \accepts "Staff";
+ \accepts "Staff"
}
PianoStaffContext = \translator{
\GrandStaffContext
- \name "PianoStaff";
+ \name "PianoStaff"
- \consists "Vertical_align_engraver";
+ \consists "Vertical_align_engraver"
- alignmentReference = \center;
+ alignmentReference = #0
verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
VerticalAlignment \override #'forced-distance = #12
-% \consistsend "Axis_group_engraver";
+% \consistsend "Axis_group_engraver"
}
InnerStaffGroupContext= \translator {
- \type "Engraver_group_engraver";
- \name InnerStaffGroup;
+ \type "Engraver_group_engraver"
+ \name InnerStaffGroup
- \consists "Span_bar_engraver";
- \consists "Span_arpeggio_engraver";
- \consists "Output_property_engraver";
+ \consists "Span_bar_engraver"
+ \consists "Span_arpeggio_engraver"
+ \consists "Output_property_engraver"
SystemStartDelimiter \override #'glyph = #'bracket
- \consists "System_start_delimiter_engraver";
- \accepts "Staff";
- \accepts "RhythmicStaff";
- \accepts "GrandStaff";
- \accepts "PianoStaff";
+ \consists "System_start_delimiter_engraver"
+ \accepts "Staff"
+ \accepts "RhythmicStaff"
+ \accepts "GrandStaff"
+ \accepts "PianoStaff"
- \accepts "Lyrics";
- \accepts "ChordNames";
+ \accepts "Lyrics"
+ \accepts "ChordNames"
}
StaffGroupContext = \translator {
\InnerStaffGroupContext
- \name StaffGroup;
- \accepts "InnerChoirStaff";
- \accepts "ChoirStaff";
- \accepts "InnerStaffGroup";
+ \name StaffGroup
+ \accepts "InnerChoirStaff"
+ \accepts "ChoirStaff"
+ \accepts "InnerStaffGroup"
}
% UGH! JUNKME
LyricsVoiceContext= \translator{
- \type "Engraver_group_engraver";
- \consistsend "Axis_group_engraver";
+ \type "Engraver_group_engraver"
+ \consistsend "Axis_group_engraver"
MinimumVerticalExtent = #(cons -1.2 1.2)
ExtraVerticalExtent = ##f
VerticalExtent = ##f
- \name LyricsVoice ;
- \consists "Separating_line_group_engraver";
- \consists "Lyric_engraver";
- \consists "Extender_engraver";
- \consists "Hyphen_engraver";
- \consists "Stanza_number_engraver";
- phrasingPunctuation = #".,;:!?\""
+ \name LyricsVoice
+ \consists "Separating_line_group_engraver"
+ \consists "Lyric_engraver"
+ \consists "Extender_engraver"
+ \consists "Hyphen_engraver"
+ \consists "Stanza_number_engraver"
+ phrasingPunctuation = #".,:!?\""
}
NoteNamesContext = \translator {
- \type "Engraver_group_engraver";
- \name NoteNames;
- \consistsend "Axis_group_engraver";
+ \type "Engraver_group_engraver"
+ \name NoteNames
+ \consistsend "Axis_group_engraver"
MinimumVerticalExtent = ##f
ExtraVerticalExtent = ##f
VerticalExtent = ##f
- \consists "Note_name_engraver";
- \consists "Separating_line_group_engraver";
+ \consists "Note_name_engraver"
+ \consists "Separating_line_group_engraver"
}
LyricsContext = \translator {
- \type "Engraver_group_engraver";
- \name Lyrics;
- \consists Vertical_align_engraver; %need this for getting folded repeats right.
+ \type "Engraver_group_engraver"
+ \name Lyrics
+ \consists Vertical_align_engraver %need this for getting folded repeats right.
Generic_property_list = #generic-lyrics-properties
- \consists "Property_engraver";
- \consistsend "Axis_group_engraver";
+ \consists "Property_engraver"
+ \consistsend "Axis_group_engraver"
MinimumVerticalExtent = ##f
ExtraVerticalExtent = ##f
VerticalExtent = ##f
- \accepts "LyricsVoice";
+ \accepts "LyricsVoice"
}
ChordNamesContext = \translator {
- \type "Engraver_group_engraver";
- \name ChordNames;
+ \type "Engraver_group_engraver"
+ \name ChordNames
Generic_property_list = #generic-chord-staff-properties
- \consists "Property_engraver";
- \consists "Output_property_engraver";
- \consists "Separating_line_group_engraver";
- \consists "Chord_name_engraver";
- \consists "Skip_req_swallow_translator";
- \consistsend "Axis_group_engraver";
+ \consists "Property_engraver"
+ \consists "Output_property_engraver"
+ \consists "Separating_line_group_engraver"
+ \consists "Chord_name_engraver"
+ \consists "Skip_req_swallow_translator"
+ \consistsend "Axis_group_engraver"
MinimumVerticalExtent = ##f
ExtraVerticalExtent = ##f
VerticalExtent = ##f
StupidScore = \translator {
- \type "Score_engraver";
- \name Score;
- \consists "Note_heads_engraver";
+ \type "Score_engraver"
+ \name Score
+ \consists "Note_heads_engraver"
}
HaraKiriStaffContext = \translator {
\StaffContext
- \remove "Axis_group_engraver";
- \consistsend "Hara_kiri_engraver";
- \consists "Instrument_name_engraver";
- \accepts "Voice";
+ \remove "Axis_group_engraver"
+ \consistsend "Hara_kiri_engraver"
+ \consists "Instrument_name_engraver"
+ \accepts "Voice"
}
%{
The HaraKiriStaffContexts doesn't override \name,
ScoreContext = \translator {
- \type Score_engraver;
- \name Score;
+ \type Score_engraver
+ \name Score
- \consists "Repeat_acknowledge_engraver";
- \consists "Timing_engraver";
- \consists "Output_property_engraver";
- \consists "System_start_delimiter_engraver";
- \consists "Mark_engraver";
- \consists "Break_align_engraver";
- \consists "Spacing_engraver";
- \consists "Vertical_align_engraver";
-
- \consists "Lyric_phrasing_engraver";
- \consists "Bar_number_engraver";
- \consists "Span_arpeggio_engraver";
-
- \accepts "Staff";
- \accepts "StaffContainer";
- \accepts "StaffGroup";
- \accepts "RhythmicStaff";
- \accepts "Lyrics";
- \accepts "ChordNames";
- \accepts "GrandStaff";
- \accepts "ChoirStaff";
- \accepts "PianoStaff";
- \accepts "NoteNames";
+ \consists "Repeat_acknowledge_engraver"
+ \consists "Timing_engraver"
+ \consists "Output_property_engraver"
+ \consists "System_start_delimiter_engraver"
+ \consists "Mark_engraver"
+ \consists "Break_align_engraver"
+ \consists "Spacing_engraver"
+ \consists "Vertical_align_engraver"
+
+ \consists "Lyric_phrasing_engraver"
+ \consists "Bar_number_engraver"
+ \consists "Span_arpeggio_engraver"
+
+ \accepts "Staff"
+ \accepts "StaffContainer"
+ \accepts "StaffGroup"
+ \accepts "RhythmicStaff"
+ \accepts "Lyrics"
+ \accepts "ChordNames"
+ \accepts "GrandStaff"
+ \accepts "ChoirStaff"
+ \accepts "PianoStaff"
+ \accepts "NoteNames"
soloText = #"Solo"
soloIIText = #"Solo II"
clefGlyph = #"clefs-G"
clefPosition = #-2
- automaticPhrasing = ##t;
- alignmentReference = \down;
+ automaticPhrasing = ##t
+ alignmentReference = #-1 % \down
defaultBarType = #"|"
explicitClefVisibility = #all-visible
Staff_bar
Time_signature
Custos
- Stanza_number
)
% Toplevel initialisation file.
-\version "1.3.120";
+\version "1.3.146"
\include "declarations.ly"
-\include "paper16.ly";
+\include "paper16.ly"
\paper {
\paperSixteen
- linewidth = -1.0\cm;
- castingalgorithm = \Wordwrap;
- "unusedentry" = "}\\def\\nolilyfooter{";
+ linewidth = -1.0\cm
+ castingalgorithm = \Wordwrap
+ "unusedentry" = "}\\def\\nolilyfooter{"
}
+\version "1.3.146"
%
% Running LilyPond on this file generates the documentation
--- /dev/null
+
+%
+% Running LilyPond on this file generates the short interface doc
+%
+#(eval-string (ly-gulp-file "generate-interface-doc.scm"))
+\version "1.3.146"
\paper {
- texsetting = "";
- pssetting = "";
- scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse;\n";% UGH.
+ texsetting = ""
+ pssetting = ""
+ scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"% UGH.
}
+\version "1.3.146"
% german-chords.ly:
% german/norwegian/danish?
% Toplevel AsciiScript initialisation file.
-\version "1.3.110";
+\version "1.3.146"
\include "declarations-as.ly"
}
\paper {
\paper_as_nine
- %linewidth=-1.0;
- %indent = 0.0;
- \translator { \StaffContext barSize = \staffheight; }
+ %linewidth=-1.0
+ %indent = 0.0
+ \translator { \StaffContext barSize = \staffheight }
% no beam-slope
- %\translator { \VoiceContext beamHeight = #0; }
+ %\translator { \VoiceContext beamHeight = #0 }
}
%\midi{ }
}
% Toplevel initialisation file.
-\version "1.3.110";
+\version "1.3.146"
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.3.110";
+\version "1.3.146"
-\include "declarations.ly";
+\include "declarations.ly"
\maininput
% Toplevel initialisation file.
-\version "1.3.110";
+\version "1.3.146"
\include "declarations.ly"
}
\paper {
- % indent = 0.0;
+ % indent = 0.0
}
\midi{ }
}
(sidd . ,(make-pitch -1 6 2 ))
)
-\version "1.3.110";
+\version "1.3.146"
+\version "1.3.146"
% ledger.ly
-hsize = 11.0 \in;
-vsize = 17.0 \in;
+hsize = 11.0 \in
+vsize = 17.0 \in
+\version "1.3.146"
% legal.ly
-hsize = 8.5 \in;
-vsize = 14.0 \in;
+hsize = 8.5 \in
+vsize = 14.0 \in
+\version "1.3.146"
% letter.ly
-hsize = 8.5 \in;
-vsize = 11.0 \in;
+hsize = 8.5 \in
+vsize = 11.0 \in
+\version "1.3.146"
\midi {
- \tempo 4=60;
+ \tempo 4=60
\include "performer.ly"
-% unfold_all = "1";
+% unfold_all = "1"
}
+\version "1.3.146"
%{
common dutch names for notes. es means flat, is means sharp
%}
-% $Id: norsk.ly,v 1.1 1998/03/25 11:38:28 arvidg Exp arvidg $
+% Idx norsk.ly,v 1.1 1998/03/25 11:38:28 arvidg Exp arvidg $
%{
duplicated all lines containing at least one "is" or "es", changed
every other "is" into an "iss" and every other "es" into an "ess",
added "ass" et al, and made some b->h-related changes. There may be
- bugs in here; please tell me (or send patches) if you find any.
+ bugs in here please tell me (or send patches) if you find any.
Arvid Gr=F8tting <arvidg@ifi.uio.no>
-\version "1.3.110";
+\version "1.3.146"
% paper-as5.ly
-\version "1.3.120";
+\version "1.3.146"
paperAsFive = \paper {
- staffheight = 5.\char;
+ staffheight = 5.\char
\stylesheet #(as-make-style-sheet 'as5)
- \translator { \StaffContext barSize = \staffheight; }
+ \translator { \StaffContext barSize = #5 }
% no beam-slope
- %\translator { \VoiceContext beamHeight = #0; }
- \include "params-as.ly";
+ %\translator { \VoiceContext beamHeight = #0 }
+ \include "params-as.ly"
}
\paper { \paperAsFive }
% paper-as9.ly
-\version "1.3.120";
+\version "1.3.146"
paperAsNine = \paper {
- staffheight = 9.\char;
+ staffheight = 9.\char
- %\translator { \StaffContext barSize = \staffheight; }
+ %\translator { \StaffContext barSize = \staffheight }
\stylesheet #(as-make-style-sheet 'as9)
- \include "params-as.ly";
+ \include "params-as.ly"
}
+\version "1.3.146"
% paper.ly
%% Why som complicated? /MB
-%linewidth20 = \hsize - 2.5 * \staffheight;
-%textheight20 = \vsize - 5.0 * \staffheight;
-%linewidth = \staffheight/20.0 * \linewidth20;
-%textheight = \staffheight/20.0 * \textheight20;
+%linewidth20 = \hsize - 2.5 * \staffheight
+%textheight20 = \vsize - 5.0 * \staffheight
+%linewidth = \staffheight/20.0 * \linewidth20
+%textheight = \staffheight/20.0 * \textheight20
-linewidth = \hsize - 2.\cm;
+linewidth = \hsize - 2.\cm
% Leave the textheight calculation to the geometry package. /MB
-%textheight = \vsize - 4.\cm;
+%textheight = \vsize - 4.\cm
-indent = \linewidth / 14.0;
+indent = \linewidth / 14.0
% paper11.ly
-\version "1.3.120";
+\version "1.3.146"
paperEleven = \paper {
- staffheight = 11.0\pt;
+ staffheight = 11.0\pt
\stylesheet #(make-style-sheet 'paper11)
- \include "params.ly";
+ \include "params.ly"
}
\paper { \paperEleven }
% paper13.ly
-\version "1.3.120";
+\version "1.3.146"
paperThirteen = \paper {
- staffheight = 13.0\pt;
+ staffheight = 13.0\pt
\stylesheet #(make-style-sheet 'paper13)
- \include "params.ly";
+ \include "params.ly"
}
\paper { \paperThirteen }
% paper16.ly
-\version "1.3.120";
+\version "1.3.146"
paperSixteen = \paper {
- staffheight = 16.0\pt;
+ staffheight = 16.0\pt
\stylesheet #(make-style-sheet 'paper16)
- \include "params.ly";
+ \include "params.ly"
}
\paper {\paperSixteen }
% paper20.ly
-\version "1.3.120";
+\version "1.3.146"
paperTwenty = \paper {
- staffheight = 20.0\pt;
+ staffheight = 20.0\pt
\stylesheet #(make-style-sheet 'paper20)
- \include "params.ly";
+ \include "params.ly"
}
\paper { \paperTwenty }
% paper23.ly
-\version "1.3.120";
+\version "1.3.146"
paperTwentythree = \paper {
- staffheight = 23.0\pt;
+ staffheight = 23.0\pt
\stylesheet #(make-style-sheet 'paper23)
- \include "params.ly";
+ \include "params.ly"
}
\paper { \paperTwentythree }
% paper26.ly
-\version "1.3.120";
+\version "1.3.146"
paperTwentysix = \paper {
- staffheight = 26.0\pt;
+ staffheight = 26.0\pt
\stylesheet #(make-style-sheet 'paper26)
- \include "params.ly";
+ \include "params.ly"
}
\paper { \paperTwentysix }
+\version "1.3.146"
% params-as.ly
% generic paper parameters
-outputscale = \staffheight / 4.0;
+outputscale = \staffheight / 4.0
-linewidth = 60.0 \char;
-textheight = 60.0 \char;
-indent = 8.0\char;
+linewidth = 60.0 \char
+textheight = 60.0 \char
+indent = 8.0\char
-staffspace = (\staffheight - 1.0 ) / 4.0;
-stafflinethickness = \staffspace / 2.0;
+staffspace = (\staffheight - 1.0 ) / 4.0
+stafflinethickness = \staffspace / 2.0
\translator { \NoteNamesContext }
\translator { \ScoreContext }
+\version "1.3.146"
% JUNKME.
-papersizename = \papersize ;
+papersizename = \papersize
-paperfile = \papersize + ".ly";
-% paperfile = "a4.ly";
-\include \paperfile;
-\include "paper.ly";
+paperfile = \papersize + ".ly"
-staffspace = \staffheight / 4.0;
-stafflinethickness = \staffspace / 10.0;
-outputscale = \staffheight / 4.0;
+% paperfile = "a4.ly"
+
+\include \paperfile
+\include "paper.ly"
+
+staffspace = \staffheight / 4.0
+stafflinethickness = \staffspace / 10.0
+outputscale = \staffheight / 4.0
\translator { \NoteNamesContext }
\translator { \ScoreContext }
+\version "1.3.146"
% JUNKME
%part-paper.ly
\paper {
\translator { \OrchestralPartStaffContext }
- \translator { \ScoreContext skipBars = ##t; }
+ \translator { \ScoreContext skipBars = ##t }
}
+\version "1.3.146"
%
% setup for Request->Element conversion. Guru-only
%
StaffContext = \translator {
- \type "Staff_performer";
- \name Staff;
- \accepts Voice;
+ \type "Staff_performer"
+ \name Staff
+ \accepts Voice
- \consists "Key_performer";
- \consists "Tempo_performer";
- \consists "Time_signature_performer";
+ \consists "Key_performer"
+ \consists "Tempo_performer"
+ \consists "Time_signature_performer"
dynamicStyle = #"dynamic"
-};
+}
\translator { \StaffContext }
\translator { \StaffContext
- \name RhythmicStaff;
+ \name RhythmicStaff
}
VoiceContext = \translator {
- \type "Performer_group_performer";
- \name Voice;
+ \type "Performer_group_performer"
+ \name Voice
% All notes fall to Grace if you leave Thread out (huh?)
- \consists "Dynamic_performer";
- \consists "Span_dynamic_performer";
- \consists "Piano_pedal_performer";
- \consists "Grace_position_performer";
- \accepts Thread;
- \accepts Grace;
-};
+ \consists "Dynamic_performer"
+ \consists "Span_dynamic_performer"
+ \consists "Piano_pedal_performer"
+ \consists "Grace_position_performer"
+ \accepts Thread
+ \accepts Grace
+}
\translator { \VoiceContext }
ThreadContext = \translator {
- \type "Performer_group_performer";
- \name Thread;
- \consists "Note_performer";
- \consists "Tie_performer";
-};
+ \type "Performer_group_performer"
+ \name Thread
+ \consists "Note_performer"
+ \consists "Tie_performer"
+}
\translator { \ThreadContext }
\translator {
- \type "Grace_performer_group";
- \name Grace;
- \consists "Note_performer";
- \consists "Tie_performer";
- \consists "Swallow_performer";
+ \type "Grace_performer_group"
+ \name Grace
+ \consists "Note_performer"
+ \consists "Tie_performer"
+ \consists "Swallow_performer"
weAreGraceContext = #t
}
\translator
{
- \type "Performer_group_performer";
- \name VoiceTwo;\consists "Note_performer";
+ \type "Performer_group_performer"
+ \name VoiceTwo\consists "Note_performer"
}
GrandStaffContext = \translator {
- \type "Performer_group_performer";
- \name GrandStaff;
- \accepts RhythmicStaff;
- \accepts Staff;
-};
+ \type "Performer_group_performer"
+ \name GrandStaff
+ \accepts RhythmicStaff
+ \accepts Staff
+}
\translator { \GrandStaffContext }
PianoStaffContext = \translator {
- \type "Performer_group_performer";
- \name "PianoStaff";
- \accepts Staff;
-};
+ \type "Performer_group_performer"
+ \name "PianoStaff"
+ \accepts Staff
+}
\translator { \PianoStaffContext }
\translator {
- \type "Performer_group_performer";
- \consists "Lyric_performer";
- \name LyricsVoice;
+ \type "Performer_group_performer"
+ \consists "Lyric_performer"
+ \name LyricsVoice
}
\translator{
- \type "Performer_group_performer";
- \name ChoirStaff;
- \accepts Staff;
+ \type "Performer_group_performer"
+ \name ChoirStaff
+ \accepts Staff
}
\translator {
- \type "Staff_performer";
- \accepts LyricsVoice;
- \name Lyrics;
- \consists "Time_signature_performer";
- \consists "Tempo_performer";
+ \type "Staff_performer"
+ \accepts LyricsVoice
+ \name Lyrics
+ \consists "Time_signature_performer"
+ \consists "Tempo_performer"
}
\translator {
- \type "Staff_performer";
- \accepts ChordNameVoice;
- \name ChordNames;
+ \type "Staff_performer"
+ \accepts ChordNameVoice
+ \name ChordNames
}
\translator {
- \type Performer_group_performer;
- \consists Note_performer;
- \name ChordNameVoice;
+ \type Performer_group_performer
+ \consists Note_performer
+ \name ChordNameVoice
}
\translator {
- \type Performer_group_performer;
+ \type Performer_group_performer
- \name StaffGroup;
- \accepts Staff;
+ \name StaffGroup
+ \accepts Staff
}
ScoreContext = \translator {
- \type "Score_performer";
-
- \name Score;
- instrument = "bright acoustic";
- \accepts Staff;
- \accepts GrandStaff;
- \accepts PianoStaff;
- \accepts Lyrics;
- \accepts StaffGroup;
- \accepts ChoirStaff;
- \accepts RhythmicStaff;
- \accepts ChordNames;
- \consists "Swallow_performer";
+ \type "Score_performer"
+
+ \name Score
+ instrument = #"bright acoustic"
+ \accepts Staff
+ \accepts GrandStaff
+ \accepts PianoStaff
+ \accepts Lyrics
+ \accepts StaffGroup
+ \accepts ChoirStaff
+ \accepts RhythmicStaff
+ \accepts ChordNames
+ \consists "Swallow_performer"
dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
instrumentEqualizer = #default-instrument-equaliser
-};
+}
\translator { \ScoreContext }
% property.ly
-\version "1.3.110";
+\version "1.3.146"
stemUp = \property Voice.Stem \override #'direction = #1
stemDown = \property Voice.Stem \override #'direction = #-1
% End the incipit and print a ``normal line start''.
endincipit = \notes{
- \partial 16; s16 % Hack to handle e.g. \bar ".|"; \endincipit
+ \partial 16 s16 % Hack to handle e.g. \bar ".|" \endincipit
\context Staff \outputproperty #(make-type-checker 'clef-interface) #'full-size-change = ##t
\context Staff \outputproperty #(make-type-checker 'clef-interface) #'non-default = ##t
- \bar "";
+ \bar ""
}
autoBeamOff = \property Voice.noAutoBeaming = ##t
+\version "1.3.146"
major = #'(
+\version "1.3.146"
"dash-hat" = "marcato"
+\version "1.3.146"
cr = \spanrequest \start "crescendo"
decr = \spanrequest \start "decrescendo"
rced = \spanrequest \stop "decrescendo"
cresc = \notes {
- \commandspanrequest \start "crescendo" ;
+ \commandspanrequest \start "crescendo"
\property Voice.crescendoText = "cresc."
\property Voice.crescendoSpanner = "dashed-line"
}
% ah, this is handy: maybe drop resetting of properties in
% dynamic-engraver ?
endcresc = \notes {
- \commandspanrequest \stop "crescendo";
+ \commandspanrequest \stop "crescendo"
\property Voice.crescendoText = ##f
\property Voice.crescendoSpanner = ##f
}
dim = \notes {
- \commandspanrequest \start "decrescendo" ;
+ \commandspanrequest \start "decrescendo"
\property Voice.decrescendoText = "dim."
\property Voice.decrescendoSpanner = "dashed-line"
}
enddim = \notes {
- \commandspanrequest \stop "decrescendo";
+ \commandspanrequest \stop "decrescendo"
\property Voice.decrescendoText = ##f
\property Voice.decrescendoSpanner = ##f
}
(hiss . ,(make-pitch -1 6 1 ))
(hississ . ,(make-pitch -1 6 2 ))
)
-\version "1.3.110";
+\version "1.3.146"
CONVERT_LY = $(script-dir)/convert-ly.py
LILYPOND = $(depth)/$(builddir)/lily/$(outconfbase)/lilypond
LILYPOND_BOOK = $(script-dir)/lilypond-book.py
-LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ -I $(input-dir)/tutorial/
+LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(outdir) -I$(input-dir) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ -I $(input-dir)/tutorial/
LY2DVI = $(script-dir)/ly2dvi.py
PS_TO_GIFS = $(buildscript-dir)/ps-to-gifs.sh
PS_TO_PNGS = $(buildscript-dir)/ps-to-pngs.sh
%{_prefix}/bin/ly2dvi
%{_prefix}/bin/midi2ly
%{_prefix}/bin/lilypond-book
+%{_prefix}/bin/mup2ly
%{_prefix}/bin/musedata2ly
%{_prefix}/bin/pmx2ly
%else
%{_prefix}/man/man1/midi2ly.1.gz
%{_prefix}/man/man1/lilypond-book.1.gz
%{_prefix}/man/man1/musedata2ly.1.gz
+%{_prefix}/man/man1/mup2ly.1.gz
%{_prefix}/man/man1/pmx2ly.1.gz
%{_prefix}/share/lilypond/
# nfo: info from non-lily texi
#$(outdir)/%.nfo: $(outdir)/%.nexi
# $(MAKEINFO) --output=$(outdir)/$(*F).info $<
+
+
+#
+# Timothy's booklet
+#
+$(outdir)/%-book.ps: $(outdir)/%.ps
+ psbook $< $<.tmp
+ pstops '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@
#
mutopia-examples=$(name) $(parts)
-#
+# moved to ly-rules.make
# Timothy's booklet
#
-$(outdir)/%-book.ps: $(outdir)/%.ps
- psbook $< $<.tmp
-# pstops '2:0L(11.45in,0.25in)+1L(11.45in,5.6in)' $<.tmp $@
- pstops '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@
+#$(outdir)/%-book.ps: $(outdir)/%.ps
+# psbook $< $<.tmp
+# pstops '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@
#
# Catch-all target: type `make foo' to make out/foo.ps,
$(PYTHON) $(ABC2LY) -o $@ $<
$(outdir)/%.dvi: $(outdir)/%.ly
- $(PYTHON) $(LY2DVI) --outdir=$(outdir) --dependencies $<
+ $(PYTHON) $(LY2DVI) --output=$@ --dependencies $<
# don't junk intermediate .dvi files. They're easier to view than
# .ps or .png
.PRECIOUS: $(outdir)/%.dvi
$(outdir)/%.dvi: %.ly
- $(PYTHON) $(LY2DVI) --outdir=$(outdir) --dependencies $<
+ $(PYTHON) $(LY2DVI) --output=$@ --dependencies $<
$(outdir)-$(PAPERSIZE)/%.dvi: %.ly
- $(PYTHON) $(LY2DVI) --outdir=$(outdir)-$(PAPERSIZE) --dependencies --set=papersize=$(PAPERSIZE) $<
+ $(PYTHON) $(LY2DVI) --output=$@ --dependencies --set=papersize=$(PAPERSIZE) $<
+
Begin3
Title: LilyPond
-Version: 1.3.145
-Entered-date: 01APR01
+Version: 1.3.146
+Entered-date: 05APR01
Description: @BLURB@
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.145.tar.gz
+ 1000k lilypond-1.3.146.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.145.tar.gz
+ 1000k lilypond-1.3.146.tar.gz
Copying-policy: GPL
End
%define info yes
Name: lilypond
-Version: 1.3.145
+Version: 1.3.146
Release: 1
License: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.145.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.146.tar.gz
# music notation software for.. ?
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
%{_prefix}/bin/ly2dvi
%{_prefix}/bin/midi2ly
%{_prefix}/bin/lilypond-book
+%{_prefix}/bin/mup2ly
%{_prefix}/bin/musedata2ly
%{_prefix}/bin/pmx2ly
%else
%{_prefix}/man/man1/midi2ly.1.gz
%{_prefix}/man/man1/lilypond-book.1.gz
%{_prefix}/man/man1/musedata2ly.1.gz
+%{_prefix}/man/man1/mup2ly.1.gz
%{_prefix}/man/man1/pmx2ly.1.gz
%{_prefix}/share/lilypond/
fet_endchar;
fet_beginchar("X-Circled notehead", "2xcircle", "xcircledhead")
- set_char_box(0, noteheight#+stafflinethickness#,
- noteheight#/2+stafflinethickness#/2,noteheight#/2+stafflinethickness#/2);
- pickup pencircle scaled 1.2stafflinethickness;
- draw fullcircle scaled 2h shifted (h,0);
- pos := h/sqrt2;
- draw (-pos+h,-pos) -- (pos+h,pos);
- draw (-pos+h,pos) -- (pos+h,-pos);
+ wid# := black_notehead_width#;
+ hei# := noteheight#+stafflinethickness#;
+ set_char_box(0, wid#,hei#/2,hei#/2);
+ cthick := 1.2stafflinethickness;
+ cxr := w/2-cthick/2;
+ cyr := h-cthick/2;
+ pickup pencircle scaled cthick;
+ draw fullcircle xscaled 2cxr yscaled 2cyr shifted (w/2,0);
+ xpos := cxr/sqrt2;
+ ypos := cyr/sqrt2;
+ draw (-xpos+w/2,-ypos) -- (xpos+w/2,ypos);
+ draw (-xpos+w/2,ypos) -- (xpos+w/2,-ypos);
fet_endchar;
fet_endgroup("noteheads");
else:
% input feta-bolletjes;
% input feta-banier;
- input feta-eindelijk;
+% input feta-eindelijk;
% input feta-klef;
% input feta-toevallig;
% input feta-schrift;
% input feta-haak;
-% input feta-timesig;
+ input feta-timesig;
% input feta-pendaal;
% input feta-accordion;
fi
%
% source file of the Feta (not an abbreviation of Font-En-Tja) music font
%
-% (c) 1998--1999 Mats Bengtsson <matsb@s3.kth.se>,
-% Christian Mondrup <scancm@biobase.dk>
+% (c) 1998--2001 Mats Bengtsson <matsb@s3.kth.se>,
+% Christian Mondrup <scancm@biobase.dk>
fet_begingroup("timesig");
def set_C_width =
save left_width, right_width;
- left_width# := 0.9 staff_space#;
- right_width# := .7 staff_space#;
+ left_width# := 1.0 staff_space#;
+ right_width# := 0.8 staff_space#;
define_pixels(left_width,right_width);
enddef;
z4 = (0, -staff_space);
z5r = (right_width - stafflinethickness, -0.4 staff_space);
- penpos1(hair, 0);
+ penpos1(hair, 10);
penpos2(stafflinethickness, 90);
penpos3(left_fatness * staff_space, 180);
penpos4(stafflinethickness, -90);
penpos5(hair, -5);
+ z6l = z1l;
+ penpos6(hair, 0);
- draw_bulb(-1, z1l, z1r, bulb_rad, .8);
+ draw_bulb(-1, z6l, z6r, bulb_rad, .8);
- fill z1l{up} .. z2l{left} .. z3l{down} .. z4l{right} ..
+ fill z1l{dir (100)} .. z2l{left} .. z3l{down} .. z4l{right} ..
simple_serif(z5l, z5r, -90) ..
- z4r{left} .. z3r{up} .. z2r{right} .. z1r -- cycle;
+ z4r{left} .. z3r{up} .. z2r{right} .. {dir (-80)}z1r -- cycle;
-% labels(1,2,3,4,5);
- penlabels(1,2,3,4,5);
+ penlabels(1,2,3,4,5,6);
enddef;
fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
set_C_width;
set_char_box(left_width# + staff_space#, right_width# + staff_space#,
staff_space#, staff_space#);
-
+
draw_C;
fet_endchar;
if (accidentals_i)
notename_str += String (accname [accidentals_i + 2]);
- return "\\key " + notename_str + (minor_i_ ? "\\minor" : "\\major") + ";\n";
+ return "\\key " + notename_str + (minor_i_ ? "\\minor" : "\\major") + "\n";
}
String
{
String str = "\\time "
+ to_str (num_i_) + "/" + to_str (1 << den_i_)
- + ";\n";
+ + "\n";
return str;
}
{
String str = "\\tempo 4=";
str += to_str (get_tempo_i (Rational (1, 4)));
- str += ";\n";
+ str += "\n";
return str;
}
int p = n->pitch_i_;
if (p < 56)
- return "\\clef \"bass\";\n";
+ return "\\clef \"bass\"\n";
else if (p > 67)
- return "\\clef \"treble\";\n";
+ return "\\clef \"treble\"\n";
else
return "";
}
\header {
- filename = "petite-ouverture-a-danser.ly";
- title = "Petite Ouverture \\`a danser";
- subtitle = "4";
- source = "";
- composer = "Erik Satie (1866-1925)";
- enteredby = "jcn";
- copyright = "Public Domain";
+ filename = "petite-ouverture-a-danser.ly"
+ title = "Petite Ouverture \\`a danser"
+ subtitle = "4"
+ source = ""
+ composer = "Erik Satie (1866-1925)"
+ enteredby = "jcn"
+ copyright = "Public Domain"
}
%{
Tested Features:
%}
-\version "1.3.117";
+\version "1.3.146"
\include "nederlands.ly"
global = \notes {
- \key a \minor;
- \time 2/4;
+ \key a \minor
+ \time 2/4
s2*10
- \bar "||";
+ \bar "||"
s2*11
- \bar "||";
- \time 3/4;
+ \bar "||"
+ \time 3/4
s2.
- \bar "||";
- \time 2/4;
+ \bar "||"
+ \time 2/4
s2*4
- \bar "||";
- \time 3/4;
+ \bar "||"
+ \time 3/4
s2.*2
- \bar "||";
- \time 2/4;
+ \bar "||"
+ \time 2/4
s2*18
- \bar "|.";
+ \bar "|."
}
i = \context Staff \notes\relative c''{
\context GrandStaff <
\context Staff = treble <
\global
- \clef violin;
+ \clef violin
\i
\ii
>
\context Staff = bass <
\global
- \clef bass;
+ \clef bass
\lower
>
>
\paper {
- gourlay_maxmeasures = 5.;
- textheight = 295.\mm;
+ gourlay_maxmeasures = 5.
+ textheight = 295.\mm
\translator{ \OrchestralScoreContext }
\translator{
\VoiceContext
}
}
\midi {
- \tempo 4 = 60;
+ \tempo 4 = 60
}
}
instrument = "Piano"
\header {
- title = "Ständchen";
- subtitle = "(Serenade)";
- subsubtitle = "Leise flehen meine Lieder";
- opus = "D. 957 No. 4";
- date = "August 1828";
- composer = "Franz Schubert (1797-1828)";
- poet = "Text by Ludwig Rellstab (1799-1860)";
- enteredby = "JCN";
- copyright = "public domain";
- instrument = \instrument;
+ title = "Ständchen"
+ subtitle = "(Serenade)"
+ subsubtitle = "Leise flehen meine Lieder"
+ opus = "D. 957 No. 4"
+ date = "August 1828"
+ composer = "Franz Schubert (1797-1828)"
+ poet = "Text by Ludwig Rellstab (1799-1860)"
+ enteredby = "JCN"
+ copyright = "public domain"
+ instrument = \instrument
% mutopia headers.
- mutopiatitle = "Standchen";
- mutopiasubtitle = "Leise flehen meine Lieder";
- mutopiacomposer = "Franz Schubert (1797-1828)";
- mutopiapoet = "Ludwig Rellstab (1799-1860)";
- mutopiaopus = "D957.4";
- mutopiainstrument = \instrument;
- date = "1828/08";
- style = "Romantic";
- source = "Schubert-Lieder; Edition Schott No. 608, (Not dated).
- Jubilaeums-Ausgabe zum 100. Todestage (~1928).";
-
- copyright = "Public Domain";
- maintainer = "Jan Nieuwenhuizen";
- maintainer_email = "janneke@gnu.org";
- lastupdated = "2001/Mar/26";
+ mutopiatitle = "Standchen"
+ mutopiasubtitle = "Leise flehen meine Lieder"
+ mutopiacomposer = "Franz Schubert (1797-1828)"
+ mutopiapoet = "Ludwig Rellstab (1799-1860)"
+ mutopiaopus = "D957.4"
+ mutopiainstrument = \instrument
+ date = "1828/08"
+ style = "Romantic"
+ source = "Schubert-Lieder Edition Schott No. 608, (Not dated).
+ Jubilaeums-Ausgabe zum 100. Todestage (~1928)."
+
+ copyright = "Public Domain"
+ maintainer = "Jan Nieuwenhuizen"
+ maintainer_email = "janneke@gnu.org"
+ lastupdated = "2001/Mar/26"
mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
\\\\This music is part of the Mutopia project,
\\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
and placed in the public domain by " + \maintainer +
".\\\\Unrestricted modification and redistribution is permitted
- and encouraged---copy this music and share it.}";
- tagline = \mutopiapublicdomain;
- footer = "Mutopia-2001/03/26-xx";
+ and encouraged---copy this music and share it.}"
+ tagline = \mutopiapublicdomain
+ footer = "Mutopia-2001/03/26-xx"
}
-\version "1.3.141";
+\version "1.3.146"
dynamicUp = \property Voice.DynamicLineSpanner \override #'direction = #1
dynamicRevert = \property Voice.DynamicLineSpanner \revert #'direction
lyricVerseOne = \lyrics{
Lei- se fleh- en mei- ne Lie- der
- Durch die Nacht zu dir;
+ Durch die Nacht zu dir
In den stil- len Hain her- nie- der
Lieb- chen, komm zu mir!
Fl\"us- ternd schlan- ke Wip- fel rau- schen
In des Mon- des Licht,
- In des Mon- des Licht;
+ In des Mon- des Licht
Des Ver- r\"a- ters feind- lich Lau- schen
F\"urch- te, Hol- de, nicht,
}
bassVerseOne = \notes\relative c{
-% \clef bass;
+% \clef bass
\dynamicUp
%5
<c,2 c'> r4 |
}
global = \notes{
- \time 3/4;
- \key es \major;
- \skip 4 * 12;
+ \time 3/4
+ \key es \major
+ \skip 4 * 12
\break
- \skip 4 * 234;
- \bar "|.";
+ \skip 4 * 234
+ \bar "|."
}
allLyrics = \lyrics {
}
vocals = \context Voice {
- \clef treble;
+ \clef treble
% certainly no auto-beaming for vocals
\property Voice.noAutoBeaming = ##t
\property Staff.automaticMelismata= ##t
\dynamicUp
- \skip 4 * 12;
+ \skip 4 * 12
\vocalVerse
- \skip 4 * 24;
+ \skip 4 * 24
\vocalVerse
\vocalThrough
}
>
treble = {
- \clef treble;
+ \clef treble
\property Voice.autoBeamSettings \override #'(begin * * * *) = #(make-moment 0 1)
\trebleIntro
\trebleVerseOne
\treble
>
bass = {
- \clef bass;
+ \clef bass
\bassIntro
\bassVerseOne
\bassEentje
\translator { \HaraKiriStaffContext }
}
\midi{
- \tempo 4 = 54;
+ \tempo 4 = 54
}
}
-\version "1.3.122"
+\version "1.3.146"
\header {
- filename = "pa.ly";
- title = "Wachet auf, ruft uns die Stimme";
- opus = "BWV";
- composer = "Johann Sebastian Bach 1685-1750 ";
- enteredby = "JCN";
- copyright = "public domain";
+ filename = "pa.ly"
+ title = "Wachet auf, ruft uns die Stimme"
+ opus = "BWV"
+ composer = "Johann Sebastian Bach 1685-1750 "
+ enteredby = "JCN"
+ copyright = "public domain"
}
commands = \notes {
- \time 4/4;
+ \time 4/4
\property Staff.TimeSignature \override #'style = #'C
- \key es \major;
- \partial 8;
+ \key es \major
+ \partial 8
}
right = \notes \relative c' {
\commands
%if urtekst
- \clef "alto";
-% \clef "violin";
+ \clef "alto"
+% \clef "violin"
%if stable
% \property Voice."beamAutoEnd_8" = "1/4"
as16 d, es f es d c bes bes'8 es, g16 f es d |
es as g f g8 es \grace d()c8. d16 d8. es16|
es1|
- \bar "|.";
+ \bar "|."
}
clefs = \notes{
- \clef "alto";
- \partial 8;
- \skip 8;
+ \clef "alto"
+ \partial 8
+ \skip 8
%testin'
-% \clef "violin";
- \skip 1;
-% \clef "alto";
- \repeat "volta" 2 { \skip 1*19; }
+% \clef "violin"
+ \skip 1
+% \clef "alto"
+ \repeat "volta" 2 { \skip 1*19 }
\alternative {
- { \skip 1*2; }
- { \skip 1*1; } }
- \skip 1*11;
- s4 \clef "violin";
+ { \skip 1*2 }
+ { \skip 1*1 } }
+ \skip 1*11
+ s4 \clef "violin"
s4 s2
s1
- s4 s8 \clef "alto"; s8 s2
- \skip 1*12;
- s4 r8 \clef "violin"; s8 s2 \clef "alto";
+ s4 s8 \clef "alto" s8 s2
+ \skip 1*12
+ s4 r8 \clef "violin" s8 s2 \clef "alto"
}
left = \notes \relative c {
\commands
%if urtekst
- \clef "tenor";
-% \clef "bass";
+ \clef "tenor"
+% \clef "bass"
%if stable
% \property Staff.noVoltaBraces = 1
c g as8 g f4\trill|
es1|
R1*4
- \bar "|.";
+ \bar "|."
}
pedal = \notes \relative c, {
% \property Staff.noVoltaBraces = 1
% \property Staff.noVoltaBraces = ##t
\property Staff.VoltaBracket = \turnOff
- \clef "bass";
+ \clef "bass"
r8 |
es4 es es g
\repeat "volta" 2 {
bes8 c bes as g c as bes|
c d es g as f bes bes,|
es1
- \bar "|.";
+ \bar "|."
}
>
\paper {
- %textheight = 280.0 \mm;
+ %textheight = 280.0 \mm
% landscape:
-% textheight = 160.0 \mm;
- orientation = "landscape";
- linewidth = 280.0 \mm;
+% textheight = 160.0 \mm
+ orientation = "landscape"
+ linewidth = 280.0 \mm
%{
\translator {
\OrchestralScoreContext
- minVerticalAlign = 4.0*\staffheight;
- maxVerticalAlign = 4.0*\staffheight;
+ minVerticalAlign = 4.0*\staffheight
+ maxVerticalAlign = 4.0*\staffheight
}
%}
\translator {
\StaffGroupContext
- minVerticalAlign = 4.0*\staffheight;
- maxVerticalAlign = 4.0*\staffheight;
+ minVerticalAlign = 4.0*\staffheight
+ maxVerticalAlign = 4.0*\staffheight
}
\translator {
\PianoStaffContext
- minVerticalAlign = 2.5*\staffheight;
- maxVerticalAlign = 2.5*\staffheight;
+ minVerticalAlign = 2.5*\staffheight
+ maxVerticalAlign = 2.5*\staffheight
}
}
\midi {
- \tempo 4 = 69;
+ \tempo 4 = 69
}
}
\header{
-title = "Fuga a 4";
-opus = "BWV 846";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "Shay Rojansky";
+title = "Fuga a 4"
+opus = "BWV 846"
+composer = "Johann Sebastian Bach (1685-1750)"
+enteredby = "Shay Rojansky"
% mutopia headers.
- mutopiatitle = "Das Wohltemperierte Clavier I, Fuga 1 (c-major)";
- mutopiacomposer = "J.S.Bach";
- mutopiaopus = "BWV846";
- style = "baroque";
- copyright = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
- maintainer = "hanwen@cs.uu.nl";
- lastupdated = "1999/Oct/14";
+ mutopiatitle = "Das Wohltemperierte Clavier I, Fuga 1 (c-major)"
+ mutopiacomposer = "J.S.Bach"
+ mutopiaopus = "BWV846"
+ style = "baroque"
+ copyright = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!"
+ maintainer = "hanwen@cs.uu.nl"
+ lastupdated = "1999/Oct/14"
}
%{
TODO: use autobeaming.
%}
-\version "1.3.117";
+\version "1.3.146"
tenor =
\context Voice = tenor \notes \relative c' {
- \clef "violin";
+ \clef "violin"
\stemDown
r8 [c8 d e] [f8. g32 f] [e8 a] |
alt =
\context Voice = alt \notes \relative c {
- \clef "bass";
+ \clef "bass"
\stemUp
bass = \context Voice = bassvoice
\notes \relative c {
- \clef "bass";
+ \clef "bass"
\stemDown
\score {
\notes \context PianoStaff <
\context Staff = one {
- \time 4/4;
+ \time 4/4
<
\soprane
\tenor
- > \bar "|."; }
+ > \bar "|." }
\context Staff = two { <
\alt
\bass
- > \bar "|."; }
+ > \bar "|." }
>
\paper{
- linewidth = 18.0 \cm;
+ linewidth = 18.0 \cm
}
- \midi { \tempo 4 = 84; }
+ \midi { \tempo 4 = 84 }
}
\header {
- title = "Fuga a 3 voci";
- opus = "BWV 847-Fuga";
- source = "Henle's Urtext";
- composer = "Johann Sebastian Bach (1685-1750)";
- enteredby = "hwn, wl, jcn";
+ title = "Fuga a 3 voci"
+ opus = "BWV 847-Fuga"
+ source = "Henle's Urtext"
+ composer = "Johann Sebastian Bach (1685-1750)"
+ enteredby = "hwn, wl, jcn"
% mutopia headers.
- mutopiatitle = "Das Wohltemperierte Clavier I, Fuga II (c-minor)";
- mutopiacomposer = "J. S. Bach (1685-1750)";
- mutopiainstrument = "Piano";
- mutopiaopus = "BWV847";
- style = "baroque";
- copyright = "Public Domain";
- tagline = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
- maintainer = "hanwen@cs.uu.nl";
- lastupdated = "2000/Feb/14";
+ mutopiatitle = "Das Wohltemperierte Clavier I, Fuga II (c-minor)"
+ mutopiacomposer = "J. S. Bach (1685-1750)"
+ mutopiainstrument = "Piano"
+ mutopiaopus = "BWV847"
+ style = "baroque"
+ copyright = "Public Domain"
+ tagline = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!"
+ maintainer = "hanwen@cs.uu.nl"
+ lastupdated = "2000/Feb/14"
}
% It would be nice to squeeze this onto two pages, but I am not sure
% if it would work with US paper.
-\version "1.3.117";
+\version "1.3.146"
dux = \context Voice=two \notes \relative c''{
\voiceTwo
- \clef violin;
+ \clef violin
r8 c16 b c8 g as c16 b c8 d |
g, c16 b c8 d f,16 g as4 g16 f |
}
bassdux = \context Voice=three \notes \relative c' {
- \clef bass;
+ \clef bass
R1 |
R |
R |
\notes \context PianoStaff <
\context Staff = treble <
- \key c \minor;
-% \key es \major;
+ \key c \minor
+% \key es \major
\dux
- { \comes \bar "|."; }
- \time 4/4;
+ { \comes \bar "|." }
+ \time 4/4
>
\context Staff = bass <
- \key c \minor;
+ \key c \minor
\bassdux
>
>
\paper {
- linewidth = 18.0 \cm;
+ linewidth = 18.0 \cm
\translator{ \OrchestralScoreContext
timeSignatureStyle \override #'style = #"C"
}
\header{
- opus = "BWV 847";
+ opus = "BWV 847"
}
\midi {
- \tempo 4 =84;
+ \tempo 4 =84
}
}
\header{
-title = "Preludium";
-opus = "BWV 846";
-composer = "Johann Sebastian Bach (1685-1750)";
-enteredby = "Shay Rojansky";
+title = "Preludium"
+opus = "BWV 846"
+composer = "Johann Sebastian Bach (1685-1750)"
+enteredby = "Shay Rojansky"
% mutopia headers.
- mutopiatitle = "Das Wohltemperierte Clavier I, Prelude 1 (c-major)";
- mutopiacomposer = "J.S.Bach";
- mutopiaopus = "BWV846";
- style = "baroque";
- copyright = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!";
- maintainer = "hanwen@cs.uu.nl";
- lastupdated = "1999/Oct/14";
+ mutopiatitle = "Das Wohltemperierte Clavier I, Prelude 1 (c-major)"
+ mutopiacomposer = "J.S.Bach"
+ mutopiaopus = "BWV846"
+ style = "baroque"
+ copyright = "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!"
+ maintainer = "hanwen@cs.uu.nl"
+ lastupdated = "1999/Oct/14"
}
-\version "1.3.117";
+\version "1.3.146"
% should do programmable input.
soprane =
\context Staff <
% Real soprane
\context Voice = uVoice {
- \time 4/4;
- \clef "violin";
+ \time 4/4
+ \clef "violin"
\stemUp
r8 [g16 c'] [e' g c' e'] r8 [g16 c'] [e' g c' e'] |
r8 [f,16 a,] [c f c a,] [c a, f, a,] [f, d, f, d,] |
r8 [g16 b] [d' f' d' b] [d' b g b] [d f e d] |
- <e1 g c'> \bar "|.";
+ <e1 g c'> \bar "|."
}
bass =
\notes {
- \clef "bass";
+ \clef "bass"
\stemDown
c, c, |
c, c, |
- c,1 \bar "|."; }>
+ c,1 \bar "|." }>
}
\bass
>
\midi {
- \tempo 4 = 80;
+ \tempo 4 = 80
}
}
;; TODO
;;
-;; * clean split of base/banter/american stuff
+;; * clean split of bass/banter/american stuff
;; * text definition is rather ad-hoc
;; * do without format module
;; * finish and check american names
)
chord::names-alist-banter))
+;;;;;;;;;;
+
+
+(define (accidental->text acc)
+ (if (= acc 0)
+ '()
+ (list '(music (font-relative-size . -2))
+ (string-append "accidentals-" (number->string acc)))))
+
+(define (accidental->text-super acc)
+ (if (= acc 0)
+ '()
+ (cons 'super (list (accidental->text acc)))))
+
+(define (accidental->text-sub acc)
+ (if (= acc 0)
+ '()
+ (cons sub (list accidental->text acc))))
+
+
+(define (pitch->note-name pitch)
+ (cons (cadr pitch) (caddr pitch)))
+
+(define (pitch->text pitch)
+ (cons
+ (make-string 1 (integer->char (+ (modulo (+ (cadr pitch) 2) 7) 65)))
+ (accidental->text-super (caddr pitch))))
+
+
+;;; Hooks to override chord names and note names,
+;;; see input/tricks/german-chords.ly
+
+(define (pitch->text-banter pitch)
+ (pitch->text pitch))
+
+;; We need also steps, to allow for Cc name override,
+;; see input/test/Cc-chords.ly
+(define (pitch->chord-name-text-banter pitch steps)
+ (pitch->text-banter pitch))
+
+(define (pitch->note-name-text-banter pitch)
+ (pitch->text-banter pitch))
+
+(define (step->text pitch)
+ (list (string-append
+ (number->string (+ (cadr pitch) (if (= (car pitch) 0) 1 8)))
+ (case (caddr pitch)
+ ((-2) "--")
+ ((-1) "-")
+ ((0) "")
+ ((1) "+")
+ ((2) "++")))))
+
+(define (step->text-banter pitch)
+ (if (= (cadr pitch) 6)
+ (case (caddr pitch)
+ ((-2) '("7-"))
+ ((-1) '("7"))
+ ((0) '("maj7"))
+ ((1) '("7+"))
+ ((2) '("7+")))
+ (step->text pitch)))
+
+(define pitch::semitone-vec (list->vector '(0 2 4 5 7 9 11)))
+
+(define (pitch::semitone pitch)
+ (+ (* (car pitch) 12)
+ (vector-ref pitch::semitone-vec (modulo (cadr pitch) 7))
+ (caddr pitch)))
+
+(define (pitch::transpose pitch delta)
+ (let ((simple-octave (+ (car pitch) (car delta)))
+ (simple-notename (+ (cadr pitch) (cadr delta))))
+ (let ((octave (+ simple-octave (quotient simple-notename 7)))
+ (notename (modulo simple-notename 7)))
+ (let ((accidental (- (+ (pitch::semitone pitch) (pitch::semitone delta))
+ (pitch::semitone `(,octave ,notename 0)))))
+ `(,octave ,notename ,accidental)))))
+
+(define (pitch::diff pitch tonic)
+ (let ((simple-octave (- (car pitch) (car tonic)))
+ (simple-notename (- (cadr pitch) (cadr tonic))))
+ (let ((octave (+ simple-octave (quotient simple-notename 7)
+ (if (< simple-notename 0) -1 0)))
+ (notename (modulo simple-notename 7)))
+ (let ((accidental (- (pitch::semitone pitch)
+ (pitch::semitone tonic)
+ (pitch::semitone `(,octave ,notename 0)))))
+ `(,octave ,notename ,accidental)))))
+
+(define (pitch::note-pitch pitch)
+ (+ (* (car pitch) 7) (cadr pitch)))
+
+
+(define (write-me n x)
+ (display n)
+ (write x)
+ (newline)
+ x)
+
+(define (empty? x)
+ (equal? x '()))
+
+(define (chord::text? text)
+ (not (or (not text) (empty? text) (unspecified? text))))
+
+;; recursively remove '() #f, and #<unspecified> from text
+(define (chord::text-cleanup dirty)
+ (if (pair? dirty)
+ (let ((r (car dirty)))
+ (if (chord::text? r)
+ (cons (if (pair? r) (chord::text-cleanup r) r)
+ (chord::text-cleanup (cdr dirty)))
+ (chord::text-cleanup (cdr dirty))))
+ (if (chord::text? dirty)
+ dirty
+ '())))
+
+(define (chord::text-append l . r)
+ (if (not (chord::text? r))
+ l
+ (if (not (chord::text? l))
+ r
+ (cons l r))))
+
+(define (chord::step tonic pitch)
+ (- (pitch::note-pitch pitch) (pitch::note-pitch tonic)))
+
+;; text: list of word
+;; word: string + optional list of property
+;; property: align, kern, font (?), size
+
+(define chord::minor-major-vec (list->vector '(0 -1 -1 0 -1 -1 0)))
+
+;; compute the relative-to-tonic pitch that goes with 'step'
+(define (chord::step-pitch tonic step)
+ ;; urg, we only do this for thirds
+ (if (= (modulo step 2) 0)
+ '(0 0 0)
+ (let loop ((i 1) (pitch tonic))
+ (if (= i step) pitch
+ (loop (+ i 2)
+ (pitch::transpose
+ pitch `(0 2 ,(vector-ref chord::minor-major-vec
+ ;; -1 (step=1 -> vector=0) + 7 = 6
+ (modulo (+ i 6) 7)))))))))
+
+;; find the pitches that are not part of `normal' chord
+(define (chord::additions chord-pitches)
+ (let ((tonic (car chord-pitches)))
+ ;; walk the chord steps: 1, 3, 5
+ (let loop ((step 1) (pitches chord-pitches) (additions '()))
+ (if (pair? pitches)
+ (let* ((pitch (car pitches))
+ (p-step (+ (- (pitch::note-pitch pitch)
+ (pitch::note-pitch tonic))
+ 1)))
+ ;; pitch is an addition if
+ (if (or
+ ;; it comes before this step or
+ (< p-step step)
+ ;; its step is even or
+ (= (modulo p-step 2) 0)
+ ;; has same step, but different accidental or
+ (and (= p-step step)
+ (not (equal? pitch (chord::step-pitch tonic step))))
+ ;; is the last of the chord and not one of base thirds
+ (and (> p-step 5)
+ (= (length pitches) 1)))
+ (loop step (cdr pitches) (cons pitch additions))
+ (if (= p-step step)
+ (loop step (cdr pitches) additions)
+ (loop (+ step 2) pitches additions))))
+ (reverse additions)))))
+
+;; find the pitches that are missing from `normal' chord
+(define (chord::subtractions chord-pitches)
+ (let ((tonic (car chord-pitches)))
+ (let loop ((step 1) (pitches chord-pitches) (subtractions '()))
+ (if (pair? pitches)
+ (let* ((pitch (car pitches))
+ (p-step (+ (- (pitch::note-pitch pitch)
+ (pitch::note-pitch tonic))
+ 1)))
+ ;; pitch is an subtraction if
+ ;; a step is missing or
+ (if (> p-step step)
+ (loop (+ step 2) pitches
+ (cons (chord::step-pitch tonic step) subtractions))
+ ;; there are no pitches left, but base thirds are not yet done and
+ (if (and (<= step 5)
+ (= (length pitches) 1))
+ ;; present pitch is not missing step
+ (if (= p-step step)
+ (loop (+ step 2) pitches subtractions)
+ (loop (+ step 2) pitches
+ (cons (chord::step-pitch tonic step) subtractions)))
+ (if (= p-step step)
+ (loop (+ step 2) (cdr pitches) subtractions)
+ (loop step (cdr pitches) subtractions)))))
+ (reverse subtractions)))))
+
+
+(define (chord::additions->text-banter additions subtractions)
+ (if (pair? additions)
+ (cons (apply append
+ (chord::text-cleanup
+ (list
+ (cons 'super (step->text-banter (car additions)))
+ (if (or (pair? (cdr additions))
+ (pair? subtractions))
+ '(super "/")))))
+ (chord::additions->text-banter (cdr additions) subtractions))
+ '()))
+
+(define (chord::subtractions->text-banter subtractions)
+ (if (pair? subtractions)
+ (cons (apply append
+ (chord::text-cleanup
+ (list
+ '(super "no")
+ (cons 'super (step->text-banter (car subtractions)))
+ (if (pair? (cdr subtractions))
+ '(super "/")))))
+ (chord::subtractions->text-banter (cdr subtractions)))
+ '()))
+
+
+(define (chord::bass-and-inversion->text-banter bass-and-inversion)
+ (if (and (pair? bass-and-inversion)
+ (or (car bass-and-inversion)
+ (cdr bass-and-inversion)))
+ (list "/" (if (car bass-and-inversion)
+ (pitch->note-name-text-banter
+ (car bass-and-inversion))
+ (pitch->note-name-text-banter
+ (cdr bass-and-inversion)))
+ '())
+ '()))
+
+;; Banter style
+;; Combine tonic, exception-part of chord name,
+;; additions, subtractions and bass or inversion into chord name
+(define (chord::inner-name-banter tonic exception-part additions subtractions
+ bass-and-inversion steps)
+ ;; ugh
+ (apply
+ append
+ (chord::text-cleanup
+ (list '(rows)
+ (pitch->chord-name-text-banter tonic steps)
+ exception-part
+ ;; why does list->string not work, format seems only hope...
+ (if (and (string-match "super" (format "~s" exception-part))
+ (or (pair? additions)
+ (pair? subtractions)))
+ '((super "/")))
+ (chord::additions->text-banter additions subtractions)
+ (chord::subtractions->text-banter subtractions)
+ (chord::bass-and-inversion->text-banter bass-and-inversion)))))
+
+(define (chord::name-banter tonic exception-part unmatched-steps
+ bass-and-inversion steps)
+ (let ((additions (chord::additions unmatched-steps))
+ (subtractions (chord::subtractions unmatched-steps)))
+ (chord::inner-name-banter tonic exception-part additions subtractions
+ bass-and-inversion steps)))
+
+
+(define (c++-pitch->scm p)
+ (if (pitch? p)
+ (list (pitch-octave p) (pitch-notename p) (pitch-alteration p))
+ #f))
+
+(define (chord::name-banter tonic exception-part unmatched-steps
+ bass-and-inversion steps)
+ (let ((additions (chord::additions unmatched-steps))
+ (subtractions (chord::subtractions unmatched-steps)))
+ (chord::inner-name-banter tonic exception-part additions subtractions
+ bass-and-inversion steps)))
+
+(define (chord::restyle name style)
+ (ly-eval (string->symbol
+ (string-append (symbol->string name)
+ (symbol->string style)))))
+
+;; check exceptions-alist for biggest matching part of try-steps
+;; return (MATCHED-EXCEPTION . UNMATCHED-STEPS)
+(define (chord::exceptions-lookup-helper
+ exceptions-alist try-steps unmatched-steps exception-part)
+ (if (pair? try-steps)
+ ;; FIXME: junk '(0 . 0) from exceptions lists
+ ;;
+ ;; FIXME: either format exceptions list as real pitches, ie,
+ ;; including octave '((0 2 -1) ..), or drop octave
+ ;; from rest of calculations,
+ (let ((entry (assoc
+ (map (lambda (x) (pitch->note-name x))
+ (append '((0 0 0)) try-steps))
+ exceptions-alist)))
+ (if entry
+ (chord::exceptions-lookup-helper
+ #f '() unmatched-steps (cdr entry))
+ (let ((r (reverse try-steps)))
+ (chord::exceptions-lookup-helper
+ exceptions-alist
+ (reverse (cdr r))
+ (cons (car r) unmatched-steps) #f))))
+ (cons exception-part unmatched-steps)))
+
+;; return (MATCHED-EXCEPTION . BASE-CHORD-WITH-UNMATCHED-STEPS)
+;; BASE-CHORD-WITH-UNMATCHED-STEPS always includes (tonic 3 5)
+(define (chord::exceptions-lookup style steps)
+ (let* ((result (chord::exceptions-lookup-helper
+ (chord::restyle 'chord::names-alist- style)
+ steps '() #f))
+ (exception-part (car result))
+ (unmatched-steps (cdr result))
+ (matched-steps (if (= (length unmatched-steps) 0)
+ 3
+ (+ 1 (- (length steps)
+ (length unmatched-steps)))))
+ (unmatched-with-1-3-5
+ (append (do ((i matched-steps (- i 1))
+ (base '() (cons `(0 ,(* (- i 1) 2) 0) base)))
+ ((= i 0) base)
+ ())
+ unmatched-steps)))
+ (list exception-part unmatched-with-1-3-5)))
+
+
+(define (chord::name->text style tonic steps bass-and-inversion)
+ (let* ((lookup (chord::exceptions-lookup style steps))
+ (exception-part (car lookup))
+ (unmatched-steps (cadr lookup)))
+ ((chord::restyle 'chord::name- style)
+ tonic exception-part unmatched-steps bass-and-inversion steps)))
+
+;; C++ entry point
+;;
+;; Check for each subset of chord, full chord first, if there's a
+;; user-override. Split the chord into user-overridden and to-be-done
+;; parts, complete the missing user-override matched part with normal
+;; chord to be name-calculated.
+;;
+;; CHORD: (pitches (bass . inversion))
+(define (default-chord-name-function style chord)
+ (let* ((pitches (map c++-pitch->scm (car chord)))
+ (modifiers (cdr chord))
+ (bass-and-inversion (if (pair? modifiers)
+ (cons (c++-pitch->scm (car modifiers))
+ (c++-pitch->scm (cdr modifiers)))
+ '(() . ())))
+ (diff (pitch::diff '(0 0 0) (car pitches)))
+ (steps (if (cdr pitches) (map (lambda (x)
+ (pitch::transpose x diff))
+ (cdr pitches))
+ '())))
+ (chord::name->text style (car pitches) steps bass-and-inversion)))
+
+
+
+;;;
+;;; American style
+;;;
+
;; NOTE: Duplicates of chord names defined elsewhere occur in this list
;; in order to prevent spurious superscripting of various chord names,
;; Common seventh chords
(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" (super "o") "7"))
(((0 . 0) (2 . 0) (4 . 0) (6 . 0)) . ("maj7"))
+ ;; urg! should use (0 . 0 2 . -1) -> "m", and add "7" to that!!
(((0 . 0) (2 . -1) (4 . 0) (6 . -1)) . ("m7"))
(((0 . 0) (2 . 0) (4 . 0) (6 . -1)) . ("7"))
(((0 . 0) (2 . -1) (4 . 0) (6 . 0)) . ("m(maj7)"))
)
chord::names-alist-american))
+
+;; American style chordnames use no "no",
+;; but otherwise very similar to banter for now
+(define (chord::name-american tonic exception-part unmatched-steps
+ bass-and-inversion steps)
+ (let ((additions (chord::additions unmatched-steps))
+ (subtractions #f))
+ (chord::inner-name-banter tonic exception-part additions subtractions
+ bass-and-inversion steps)))
+
+
+
+;;;
+;;; Jazz style
+;;;
+
+
+
;; Jazz chords, by Atte Andr'e Jensen <atte@post.com>
-;; NBs: This uses the american list as a base.
+;; NBs: This uses the american list as a bass.
;; Some defs take up more than one line,
;; be carefull when messing with ;'s!!
)
chord::names-alist-american))
-;;;;;;;;;;
-
-
-(define (pitch->note-name pitch)
- (cons (cadr pitch) (caddr pitch)))
-
-(define (accidental->text acc)
- (if (= acc 0)
- '()
- (list
- (append '(music)
- (list
- (append '(named)
- (list
- (append '((font-relative-size . -2))
- (list (append '((raise . 0.6))
- (list
- (string-append "accidentals-"
- (number->string acc))))))))))))
-)
-
-(define (pitch->text pitch)
+(define (step->text-alternate-jazz pitch)
(cons
- (make-string 1 (integer->char (+ (modulo (+ (cadr pitch) 2) 7) 65)))
- (accidental->text (caddr pitch))
- )
-)
-
-;;; Hooks to override chord names and note names,
-;;; see input/tricks/german-chords.ly
-
-(define (pitch->text-banter pitch)
- (pitch->text pitch))
-
-(define (pitch->chord-name-text-banter pitch)
- (pitch->text-banter pitch))
+ (accidental->text (caddr pitch))
+ (list (number->string (+ (cadr pitch) (if (= (car pitch) 0) 1 8))))))
-(define (pitch->note-name-text-banter pitch)
- (pitch->text-banter pitch))
-
-(define (step->text pitch)
- (string-append
- (number->string (+ (cadr pitch) (if (= (car pitch) 0) 1 8)))
- (case (caddr pitch)
- ((-2) "--")
- ((-1) "-")
- ((0) "")
- ((1) "+")
- ((2) "++"))))
-
-(define (step->text-banter pitch)
+(define (step->text-jazz pitch)
(if (= (cadr pitch) 6)
(case (caddr pitch)
- ((-2) "7-")
- ((-1) "7")
- ((0) "maj7")
- ((1) "7+")
- ((2) "7+"))
- (step->text pitch)))
-
-(define pitch::semitone-vec (list->vector '(0 2 4 5 7 9 11)))
-
-(define (pitch::semitone pitch)
- (+ (* (car pitch) 12)
- (vector-ref pitch::semitone-vec (modulo (cadr pitch) 7))
- (caddr pitch)))
-
-(define (pitch::transpose pitch delta)
- (let ((simple-octave (+ (car pitch) (car delta)))
- (simple-notename (+ (cadr pitch) (cadr delta))))
- (let ((octave (+ simple-octave (quotient simple-notename 7)))
- (notename (modulo simple-notename 7)))
- (let ((accidental (- (+ (pitch::semitone pitch) (pitch::semitone delta))
- (pitch::semitone `(,octave ,notename 0)))))
- `(,octave ,notename ,accidental)))))
-
-(define (pitch::diff pitch tonic)
- (let ((simple-octave (- (car pitch) (car tonic)))
- (simple-notename (- (cadr pitch) (cadr tonic))))
- (let ((octave (+ simple-octave (quotient simple-notename 7)
- (if (< simple-notename 0) -1 0)))
- (notename (modulo simple-notename 7)))
- (let ((accidental (- (pitch::semitone pitch)
- (pitch::semitone tonic)
- (pitch::semitone `(,octave ,notename 0)))))
- `(,octave ,notename ,accidental)))))
-
-(define (pitch::note-pitch pitch)
- (+ (* (car pitch) 7) (cadr pitch)))
-
-(define (chord::step tonic pitch)
- (- (pitch::note-pitch pitch) (pitch::note-pitch tonic)))
-
-;; text: list of word
-;; word: string + optional list of property
-;; property: align, kern, font (?), size
-
-(define chord::minor-major-vec (list->vector '(0 -1 -1 0 -1 -1 0)))
-
-;; compute the relative-to-tonic pitch that goes with 'step'
-(define (chord::step-pitch tonic step)
- ;; urg, we only do this for thirds
- (if (= (modulo step 2) 0)
- '(0 0 0)
- (let loop ((i 1) (pitch tonic))
- (if (= i step) pitch
- (loop (+ i 2)
- (pitch::transpose
- pitch `(0 2 ,(vector-ref chord::minor-major-vec
- ;; -1 (step=1 -> vector=0) + 7 = 6
- (modulo (+ i 6) 7)))))))))
-
-;; find the pitches that are not part of `normal' chord
-(define (chord::additions chord-pitches)
- (let ((tonic (car chord-pitches)))
- ;; walk the chord steps: 1, 3, 5
- (let loop ((step 1) (pitches chord-pitches) (additions '()))
- (if (pair? pitches)
- (let* ((pitch (car pitches))
- (p-step (+ (- (pitch::note-pitch pitch)
- (pitch::note-pitch tonic))
- 1)))
- ;; pitch is an addition if
- (if (or
- ;; it comes before this step or
- (< p-step step)
- ;; its step is even or
- (= (modulo p-step 2) 0)
- ;; has same step, but different accidental or
- (and (= p-step step)
- (not (equal? pitch (chord::step-pitch tonic step))))
- ;; is the last of the chord and not one of base thirds
- (and (> p-step 5)
- (= (length pitches) 1)))
- (loop step (cdr pitches) (cons pitch additions))
- (if (= p-step step)
- (loop step (cdr pitches) additions)
- (loop (+ step 2) pitches additions))))
- (reverse additions)))))
-
-;; find the pitches that are missing from `normal' chord
-(define (chord::subtractions chord-pitches)
- (let ((tonic (car chord-pitches)))
- (let loop ((step 1) (pitches chord-pitches) (subtractions '()))
- (if (pair? pitches)
- (let* ((pitch (car pitches))
- (p-step (+ (- (pitch::note-pitch pitch)
- (pitch::note-pitch tonic))
- 1)))
- ;; pitch is an subtraction if
- ;; a step is missing or
- (if (> p-step step)
- (loop (+ step 2) pitches
- (cons (chord::step-pitch tonic step) subtractions))
- ;; there are no pitches left, but base thirds are not yet done and
- (if (and (<= step 5)
- (= (length pitches) 1))
- ;; present pitch is not missing step
- (if (= p-step step)
- (loop (+ step 2) pitches subtractions)
- (loop (+ step 2) pitches
- (cons (chord::step-pitch tonic step) subtractions)))
- (if (= p-step step)
- (loop (+ step 2) (cdr pitches) subtractions)
- (loop step (cdr pitches) subtractions)))))
- (reverse subtractions)))))
-
-;; combine tonic, user-specified chordname,
-;; additions, subtractions and base or inversion to chord name
-;;
-(define (chord::inner-name-banter tonic user-name additions subtractions base-and-inversion)
- (apply append
- '(rows)
- (pitch->chord-name-text-banter tonic)
- (if user-name user-name '())
- ;; why does list->string not work, format seems only hope...
- (if (and (string-match "super" (format "~s" user-name))
- (or (pair? additions)
- (pair? subtractions)))
- '((super "/"))
- '())
- (let loop ((from additions) (to '()))
- (if (pair? from)
- (let ((p (car from)))
- (loop (cdr from)
- (append to
- (cons
- (list 'super (step->text-banter p))
- (if (or (pair? (cdr from))
- (pair? subtractions))
- '((super "/"))
- '())))))
- to))
- (let loop ((from subtractions) (to '()))
- (if (pair? from)
- (let ((p (car from)))
- (loop (cdr from)
- (append to
- (cons '(super "no")
- (cons
- (list 'super (step->text-banter p))
- (if (pair? (cdr from))
- '((super "/"))
- '())))))) ; nesting?
- to))
- (if (and (pair? base-and-inversion)
- (or (car base-and-inversion)
- (cdr base-and-inversion)))
- (cons "/" (append
- (if (car base-and-inversion)
- (pitch->note-name-text-banter
- (car base-and-inversion))
- (pitch->note-name-text-banter
- (cdr base-and-inversion)))
- '()))
- '())
- '()))
-
-(define (chord::name-banter tonic user-name pitches base-and-inversion)
- (let ((additions (chord::additions pitches))
- (subtractions (chord::subtractions pitches)))
- (chord::inner-name-banter tonic user-name additions subtractions base-and-inversion)))
-
-;; american chordnames use no "no",
-;; but otherwise very similar to banter for now
-(define (chord::name-american tonic user-name pitches base-and-inversion)
- (let ((additions (chord::additions pitches))
- (subtractions #f))
- (chord::inner-name-banter tonic user-name additions subtractions base-and-inversion)))
+ ;; sharp 7 only included for completeness?
+ ((-2) (cons (accidental->text -1) '("7")))
+ ((-1) '("7"))
+ ((0) '("maj7"))
+ ((1) (cons (accidental->text-super 1) '("7")))
+ ((2) (cons (accidental->text-super 2) '("7"))))
+ (step->text-alternate-jazz pitch)))
+
+(define (chord::additions->text-jazz additions subtractions)
+ (if (pair? additions)
+ (cons (apply append
+ (chord::text-cleanup
+ (list
+ (cons 'super (step->text-jazz (car additions)))
+ (if (or (pair? (cdr additions))
+ (pair? subtractions))
+ '(super "/")))))
+ (chord::additions->text-jazz (cdr additions) subtractions))
+ '()))
+
+(define (chord::subtractions->text-jazz subtractions)
+ (if (pair? subtractions)
+ (cons (apply append
+ (chord::text-cleanup
+ (list
+ '(super "omit")
+ (cons 'super (step->text-jazz (car subtractions)))
+ (if (pair? (cdr subtractions))
+ '(super "/")))))
+ (chord::subtractions->text-jazz (cdr subtractions)))
+ '()))
+
+
+;; TODO: maybe merge with inner-name-banter
+;; Combine tonic, exception-part of chord name,
+;; additions, subtractions and bass or inversion into chord name
+(define (chord::inner-name-jazz tonic exception-part additions subtractions
+ bass-and-inversion steps)
+
+ ;; ugh
+ (apply
+ append
+
+ (chord::text-cleanup
+ (list '(rows)
+ (pitch->chord-name-text-banter tonic steps)
+ exception-part
+ ;; why does list->string not work, format seems only hope...
+ (if (and (string-match "super" (format "~s" exception-part))
+ (or (pair? additions)
+ (pair? subtractions)))
+ '((super "/")))
+ (chord::additions->text-jazz additions subtractions)
+ (chord::subtractions->text-jazz subtractions)
+ (chord::bass-and-inversion->text-banter bass-and-inversion)))))
;; Jazz style--basically similar to american with minor changes
-(define (chord::name-jazz tonic user-name pitches base-and-inversion)
- (let ((additions (chord::additions pitches))
- (subtractions #f))
- (chord::inner-name-banter tonic user-name additions subtractions base-and-inversion)))
-
-(define (new-to-old-pitch p)
- (if (pitch? p)
- (list (pitch-octave p) (pitch-notename p) (pitch-alteration p))
- #f
- ))
-
-
-
-;; C++ entry point
-;;
-;; Check for each subset of chord, full chord first, if there's a
-;; user-override. Split the chord into user-overridden and to-be-done
-;; parts, complete the missing user-override matched part with normal
-;; chord to be name-calculated.
-;;
-;; CHORD: (pitches (base . inversion))
-(define (default-chord-name-function style chord)
- (let* ((style-string (symbol->string style))
- (pitches (map new-to-old-pitch (car chord)))
- (modifiers (cdr chord))
- (base-and-inversion (if (pair? modifiers)
- (cons (new-to-old-pitch (car modifiers))
- (new-to-old-pitch (cdr modifiers)))
- '(() . ())))
- (diff (pitch::diff '(0 0 0) (car pitches)))
- (name-func
- (ly-eval (string->symbol (string-append "chord::name-" style-string))))
- (names-alist
- (ly-eval (string->symbol (string-append "chord::names-alist-" style-string)))))
- (let loop ((note-names (reverse pitches))
- (chord '())
- (user-name #f))
- (if (pair? note-names)
- (let ((entry (assoc
- (reverse
- (map (lambda (x)
- (pitch->note-name (pitch::transpose x diff)))
- note-names))
- names-alist)))
- (if entry
- ;; urg? found: break loop
- (loop '() chord (cdr entry))
- (loop (cdr note-names) (cons (car note-names) chord) #f)))
- (let* ((transposed (if pitches
- (map (lambda (x) (pitch::transpose x diff)) chord)
- '()))
- (matched (if (= (length chord) 0)
- 3
- (- (length pitches) (length chord))))
- (completed
- (append (do ((i matched (- i 1))
- (base '() (cons `(0 ,(* (- i 1) 2) 0) base)))
- ((= i 0) base)
- ())
- transposed)))
- (name-func (car pitches) user-name completed base-and-inversion))))))
-
-
+(define (chord::name-jazz tonic exception-part unmatched-steps
+ bass-and-inversion steps)
+ (let ((additions (chord::additions unmatched-steps))
+ ;; get no 'omit' or 'no'
+ ;; (subtractions #f))
+ (subtractions (chord::subtractions unmatched-steps)))
+ (chord::inner-name-jazz tonic exception-part additions subtractions
+ bass-and-inversion steps)))
+
+;; wip (set! chord::names-alist-jazz
+(define amy-chord::names-alist-jazz
+ (append
+ '(
+ (((0 . 0) (2 . -1)) . ("m"))
+ )
+ chord::names-alist-american))
;; prepend GNU for dir, must be unique
"\n* GNU " name ": (" file-name "). " name "."
"\n@end direntry"
- (node "Top") ",(lilypond)Index,(lilypond)Development," top
+ ;; ugh, prev and next should be settable, of course
+ (node "Top") ",(lilypond)Index,(lilypond)Full Grob interface list," top
"\n@top"
(texi-section 1 name #f)
(texi-menu items-alist)
"\n@contents"
))
+(define (itexi-file-head name file-name top items-alist)
+ (string-append
+ "@c -*-texinfo-*-"
+ (node name) ",,," top
+ (texi-section 1 name #f)
+ (texi-menu items-alist)
+ "\n@contents"
+ ))
+
(define (context-name name)
name)
--- /dev/null
+
+;;; generate-interface-doc.scm -- Generate list of all intefaces, for refman
+;;;
+;;; source file of the GNU LilyPond music typesetter
+;;;
+;;; (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+;;; Jan Nieuwenhuizen <janneke@gnu.org>
+
+;;; File entry point for generated documentation
+
+;;; Running LilyPond on this file generates the documentation
+
+
+
+;; We use ly-gulp because these files live in
+;;
+;; PATH=$LILYPONDPREFIX/scm:<datadir>/scm
+;;
+(eval-string (ly-gulp-file "documentation-lib.scm"))
+(eval-string (ly-gulp-file "engraver-documentation-lib.scm"))
+(eval-string (ly-gulp-file "backend-documentation-lib.scm"))
+
+;;(define no-copies #t) ; from 490 to 410K, but doesn't look nice yet
+;;
+;; Also, copies of interfaces use up lots more space, but that's
+;; functional because the default property values of the interfaces
+;; are described...
+(define no-copies #f)
+
+(let* ((doc (string-append
+ (document-all-interfaces "Full Grob interface list")
+ )
+ )
+ (name "interfaces")
+ (outname (string-append name ".itexi"))
+ (out (open-output-file outname)))
+
+ (writing-wip outname)
+ (display
+ (string-append
+ ;;(itexi-file-head
+ ;;
+ ;; ;; we can't use (dir) and top if we're included by lilypond.tely
+ ;; "Grob interfaces" name ""
+ ;; '(
+ ;; ("Grob interfaces" . "Grob Interfaces")
+ ;; ))
+ doc
+ "\n")
+ out))
+
+(newline (current-error-port))
(if (< duration 0) "mensural" "")))
((default) (number->string duration))
(else
- (string-append (number->string duration) (symbol->string style)))))
+ (string-append (number->string (max 0 duration)) (symbol->string style)))))
(define (note-head-style->attachment-coordinates style)
centered, X==1 is at the right, X == -1 is at the left."
(case style
- ((default) '(1.0 . 0.8))
- ((cross) '(1.0 . -1.0))
- ((mensural) '(0.0 . 1.0))
+ ((default) '(1.0 . 0.5))
+ ((cross) '(1.0 . 0.75))
+ ((mensural) '(0.0 . 0.6))
((diamond) '(1.0 . 0.8))
((transparent) '(1.0 . 1.0))
((slash) '(1.0 . 1.0))
# about this we'll support that.
s = s[4:]
state.base_octave = -1
- voices_append("\\clef \"G_8\";\n")
+ voices_append("\\clef \"G_8\"\n")
elif re.match('^treble', s):
s = s[6:]
if re.match ('^-8', s):
s = s[2:]
state.base_octave = -2
- voices_append("\\clef \"G_8\";\n")
+ voices_append("\\clef \"G_8\"\n")
else:
state.base_octave = 0
- voices_append("\\clef treble;\n")
+ voices_append("\\clef treble\n")
elif re.match('^alto', s):
s = s[4:]
state.base_octave = -1
- voices_append ("\\clef alto;\n" )
+ voices_append ("\\clef alto\n" )
elif re.match('^bass',s ):
s = s[4:]
state.base_octave = -2
- voices_append ("\\clef bass;\n" )
+ voices_append ("\\clef bass\n" )
return s
def select_voice (name, rol):
ks = hdr.keys ()
ks.sort ()
for k in ks:
- outf.write ('\t%s = "%s";\n'% (k,hdr[k]))
+ outf.write ('\t%s = "%s"\n'% (k,hdr[k]))
outf.write ('}')
def dump_lyrics (outf):
if part_names:
outf.write ("\t \\translator \n\t {\n")
outf.write ("\t\t\\StaffContext\n")
- outf.write ("\t\t\\consists Staff_margin_engraver;\n")
+ outf.write ("\t\t\\consists Staff_margin_engraver\n")
outf.write ("\t }\n")
outf.write ("\t}\n\t\\midi {}\n}\n")
set_default_len_from_time_sig (a)
else:
length_specified = 0
- voices_append ('\\time %s;' % a)
+ voices_append ('\\time %s' % a)
state.next_bar = ''
if g == 'K': # KEY
a = check_clef(a)
key_info = m.group(1)
clef_info = m.group(2)
__main__.global_key = compute_key (key_info)# ugh.
- voices_append ('\\key %s;' % lily_key(key_info))
+ voices_append ('\\key %s' % lily_key(key_info))
check_clef(clef_info)
else:
__main__.global_key = compute_key (a)# ugh.
- voices_append ('\\key %s \\major;' % lily_key(a))
+ voices_append ('\\key %s \\major' % lily_key(a))
if g == 'N': # Notes
header ['footnotes'] = header['footnotes'] + '\\\\\\\\' + a
if g == 'O': # Origin
state.next_bar = ''
select_voice (voice, rest)
if g == 'W': # Words
- lyrics_append(a);
+ lyrics_append(a)
if g == 'w': # vocals
- slyrics_append (a);
+ slyrics_append (a)
return ''
return ln
str = str[1:]
while str[0] == '>':
str = str [1:]
- current_dots = current_dots + 1;
+ current_dots = current_dots + 1
parser_state.next_den = parser_state.next_den * 2
while str[0] == '<':
'|' : '|'
}
bar_dict = {
- '|]' : '\\bar "|.";',
- '||' : '\\bar "||";',
- '[|' : '\\bar "||";',
+ '|]' : '\\bar "|."',
+ '||' : '\\bar "||"',
+ '[|' : '\\bar "||"',
':|' : '}',
'|:' : '\\repeat volta 2 {',
'::' : '} \\repeat volta 2 {',
'|1' : '} \\alternative{{',
'|2' : '} {',
':|2' : '} {',
- '|' : '\\bar "|";'
+ '|' : '\\bar "|"'
}
if str[:trylen] and bar_dict.has_key (str[:trylen]):
s = str[:trylen]
if using_old:
- bs = "\\bar \"%s\";" % old_bar_dict[s]
+ bs = "\\bar \"%s\"" % old_bar_dict[s]
else:
bs = "%s" % bar_dict[s]
str = str[trylen:]
if s in alternative_opener:
if not in_repeat[current_voice_idx]:
using_old = 't'
- bs = "\\bar \"%s\";" % old_bar_dict[s]
+ bs = "\\bar \"%s\"" % old_bar_dict[s]
else:
doing_alternative[current_voice_idx] = 't'
if doing_alternative[current_voice_idx]:
do_curly = 't'
if using_old:
- bs = "\\bar \"%s\";" % old_bar_dict[s]
+ bs = "\\bar \"%s\"" % old_bar_dict[s]
else:
bs = bar_dict[s]
doing_alternative[current_voice_idx] = ''
if s in repeat_opener:
in_repeat[current_voice_idx] = 't'
if using_old:
- bs = "\\bar \"%s\";" % old_bar_dict[s]
+ bs = "\\bar \"%s\"" % old_bar_dict[s]
else:
bs = bar_dict[s]
break
str = str[1:]
- voices_append ("\\spanrequest \\stop \"slur\"" * end);
+ voices_append ("\\spanrequest \\stop \"slur\"" * end)
voices_append (ch)
return str
# lilypond_version_re_str = '\\\\version *\"(.*)\"'
lilypond_version_re_str = '\\\\(mudela-)?version *\"(.*)\"'
lilypond_version_re = re.compile (lilypond_version_re_str)
+add_version = 1
+
def program_id ():
return '%s (GNU LilyPond) %s' %(program_name, version);
-a, --assume-old apply all conversions to unversioned files
-h, --help print this help
-e, --edit in place edit
- -f, --from=VERSION start from version
+ -f, --from=VERSION start from version. Overrides \version found in file.
-s, --show-rules print all rules.
-t, --to=VERSION target version
+ -n, --no-version don't add new version stamp.
--version print program version
Report bugs to bugs-gnu-music@gnu.org
conversions.append (((1,3,145), conv,
'ContextNameXxxxVerticalExtent -> XxxxVerticalExtent'))
+if 1:
+ def conv (str):
+ str = re.sub ('\\\\key[ \t]*;', '\\key \\default;', str)
+ str = re.sub ('\\\\mark[ \t]*;', '\\mark \\default;', str)
+
+ # only remove ; that are directly after words.
+ # otherwise we interfere with Scheme comments, which is badbadbad.
+ str = re.sub ("([^ \t]);", "\\1", str)
+
+ return str
+ conversions.append (((1,3,146), conv, 'semicolons removed'))
+
################################
# END OF CONVERSIONS
################################
if last_conversion:
sys.stderr.write ('\n')
new_ver = '\\version \"%s\"' % tup_to_str (last_conversion)
- # JUNKME?
- # ugh: this all really doesn't help
- # esp. as current conversion rules are soo incomplete
+
if re.search (lilypond_version_re_str, str):
str = re.sub (lilypond_version_re_str,'\\'+new_ver , str)
- #else:
- # str = new_ver + '\n' + str
+ elif add_version:
+ str = new_ver + '\n' + str
outfile.write(str)
outfile_name = ''
(options, files) = getopt.getopt (
- sys.argv[1:], 'ao:f:t:seh', ['assume-old', 'version', 'output', 'show-rules', 'help', 'edit', 'from=', 'to='])
+ sys.argv[1:], 'ao:f:t:senh', ['no-version', 'assume-old', 'version', 'output', 'show-rules', 'help', 'edit', 'from=', 'to='])
for opt in options:
o = opt[0]
outfile_name = a
elif o == '--assume-old' or o == '-a':
assume_old = 1
+ elif o == '--no-version' or o == '-n':
+ add_version = 0
else:
print o
raise getopt.error
1: '.',
3: '>',
18: '"arp"' , # arpeggio
-};
+}
class Articulation:
def __init__ (self, a,b, finale):
g = m.global_measure
e = ''
if g and last_key <> g.keysignature:
- e = e + "\\key %s \\major; " % lily_notename (g.keysignature)
+ e = e + "\\key %s \\major " % lily_notename (g.keysignature)
last_key = g.keysignature
if g and last_time <> g.timesig :
- e = e + "\\time %d/%d; " % g.timesig
+ e = e + "\\time %d/%d " % g.timesig
last_time = g.timesig
if last_clef <> m.clef :
- e = e + '\\clef "%s";' % lily_clef (m.clef)
+ e = e + '\\clef "%s"' % lily_clef (m.clef)
last_clef = m.clef
if e:
if gap <> (0,1):
#!@PYTHON@
# vim: set noexpandtab:
# TODO:
-# * Figure out clean set of options. Hmm, isn't it pretty ok now?
-# * add support for .lilyrc
+# * junk --outdir for --output
+# * Figure out clean set of options.
+# *
# * EndLilyPondOutput is def'd as vfil. Causes large white gaps.
# * texinfo: add support for @pagesize
%% Generated automatically by: lilypond-book.py
%% options are %s %%ughUGH not original options
\include "paper%d.ly"
-\paper { linewidth = %f \pt; }
+\paper { linewidth = %f \pt }
""" % (optstring, music_size, l) + body
return body
if track_dependencies_p:
opts = opts + " --dependencies"
if dep_prefix:
- opts = ' --dep_prefix=%s' % dep_prefix
+ opts = opts + ' --dep-prefix=%s' % dep_prefix
fs = string.join (files)
+ if not verbose_p:
+ progress ( _("Running %s...") % 'LilyPond')
+ # cmd = cmd + ' 1> /dev/null 2> /dev/null'
+ else:
+ opts = opts + ' --verbose'
+
system ('lilypond %s %s ' % (opts, fs))
def analyse_lilypond_output (filename, extra):
if not output:
output = os.path.basename (files[0])
+ for i in ('.dvi', '.latex', '.ly', '.ps', '.tex'):
+ output = strip_extension (output, i)
+
files = map (compat_abspath, files)
if os.path.dirname (output) != '.':
# add DEP to targets?
if track_dependencies_p:
depfile = os.path.join (outdir, outbase + '.dep')
- generate_dependency_file (depfile, dest)
+ generate_dependency_file (depfile, depfile)
if os.path.isfile (depfile):
progress (_ ("dependencies output to %s...") % depfile)
sys.stdout.write ('\n')
sys.stdout.write (_ (r'''
Distributed under terms of the GNU General Public License. It comes with
-NO WARRANTY.'''))
+absolutely NO WARRANTY.'''))
sys.stdout.write ('\n')
def progress (s):
sys.stdout.write (_ ("Options:"))
sys.stdout.write ('\n')
sys.stdout.write (options_help_str (option_definitions))
- sys.stdout.write ('\n\n')
+ sys.stdout.write ('\n')
+ warning (_ ("%s is far from completed. Not all constructs are recognised.") % program_name)
+ sys.stdout.write ('\n')
sys.stdout.write (_ ("Report bugs to %s") % 'bug-gnu-music@gnu.org')
sys.stdout.write ('\n')
sys.exit (0)
self.type = cl
def dump (self):
- return '\\clef %s;' % self.type
+ return '\\clef %s' % self.type
key_sharps = ('c', 'g', 'd', 'a', 'e', 'b', 'fis')
key_flats = ('BUG', 'f', 'bes', 'es', 'as', 'des', 'ges')
def dump (self):
if self.sharps and self.flats:
- k = '\\keysignature %s ;' % 'TODO'
+ k = '\\keysignature %s ' % 'TODO'
elif self.sharps:
- k = '\\notes\\key %s \major;' % key_sharps[self.sharps]
+ k = '\\notes\\key %s \major' % key_sharps[self.sharps]
elif self.flats:
- k = '\\notes\\key %s \major;' % key_flats[self.flats]
+ k = '\\notes\\key %s \major' % key_flats[self.flats]
return k
class Time:
self.frac = frac
def dump (self):
- return '\\time %d/%d;' % (self.frac[0], self.frac[1])
+ return '\\time %d/%d' % (self.frac[0], self.frac[1])
clef_table = {
def parse_context_score (self, line):
debug ('score: ' + line)
line = string.lstrip (line)
- #ugh, these should also be matche in context_staff
+ # ugh: these (and lots more) should also be parsed in
+ # context staff. we should have a class Staff_properties
+ # and parse/set all those.
m = re.match ('^(time[ \t]*=[ \t]*([0-9]+)[ \t]*/[ \t]*([0-9]+))', line)
if m:
line = line[len (m.group (1)):]
s = ''
return s
+ # duh: mup is strictly line-based, except for `define',
+ # which is `@' terminated and may span several lines
def process_macro_define (self, line):
global macros
# don't define new macros in unactive areas
def dump( self):
str = ''
for (k,v) in self.dict.items ():
- str = str +' %s = "%s";\n' % (k,v)
+ str = str +' %s = "%s"\n' % (k,v)
str = '\\header {\n%s}' % str
return str
return ''
def get_timesig (s):
- return '\\time %s;\n' % s
+ return '\\time %s\n' % s
divisions = 4
def __init__ (self, cl):
self.type = cl
def dump(self):
- return '\\clef %s;' % self.type
+ return '\\clef %s' % self.type
clef_table = {
'b':'bass' ,
import find
+import fnmatch
import sys
import os
+import re
import string
import getopt
import pipes
+
topdir = ''
def gulp_file(f):
try:
cleanup ()
sys.exit (1)
- dirs = map (lambda d: find.find ('out', d), dirnames)
+ dirs = map (lambda d: find.find ('out*', d), dirnames)
dirs = reduce (lambda x,y: x + y, dirs)
- print dirs
+ #print dirs
+
for d in dirs:
- files = files + find.find ('*', d)
+ if os.path.isdir (d):
+ files = files + find.find ('*', d)
for f in files:
try: