-
-
-1.4.3.jcn2
-==========
-
-* Included documentatioon and post-flex lexer.cc patch for
-Debian/unstable gcc-3.0.
-
-* Enhanced gcc autoconf and make messages.
-
-* Added -mieee to CFLAGS for alpha.
-
-* Fixed help and documentation of new LilyPond command line.
-
-* Redirected SuSE download to ftp.lilypond.org (where mirror script runs).
-
-1.4.3
-=====
-
-1.4.2.jcn4
-==========
-
-* Windows: bugfix for tex-wrappers, added tex wrapper for dvips.
-LilyPond (read: ly2dvi) should now work right out of the box.
-
-Amazing; it seems that ly2dvi won't generate PK files without this
-dvips wrapper. We had over 200 downloads of setup.exe, yet only one
-`call for help'. Did all the others give up, or did none of them
-bother to share their fix/file a bug report? Urg.
-
-* Included mktexnam.patch (again?).
-
-* Documentation fix (Mark Hindley).
-
-* Debian patch and bashism fix (Anthony).
-
-* Bugfix: local-install should depend on $(INSTALLATION_FILES). This fixes
-./configure; make install in buildscripts/ (Michael Vanier).
-
-* Removed les-nereides from short-examples, as it is tweaked a lot,
-contrary to what the webpage claims (didn't know that).
-
-1.4.2.mb1
-==========
-
-* ly2dvi, titledefs.tex: Typeset copyright notice at the bottom of the
-first page. Make separate page styles for first and last page.
-
-* Bugfix: Default RehearsalMark font-family changed to roman (only
-affects Scheme text markups).
-
-1.4.2.hwn1
-==========
-
-* Added support for Q: statement to abc2ly. (Laura Conrad)
-
-* Tie shape bugfix (Mark Hindley).
-
-* Bugfix: lilypond-book LatexPaper.__setattr__()
-
-* Bugfix: make Hyphen_spanner::brew_molecule() more robust.
-
-* Don't use stdin when no argument specified.
-
-* Naming smobs -> grobs
-
-* Bugfix: ledger lines on easy-notation note heads.
-
-1.4.2
+1.5.0
=====
-* Glossary fixes (Thanks Jean-Pierre Coulon).
-
-1.4.1.jcn3
-==========
-
-* Updated les-nereides.
+* experimental grace notes:
+ - add grace timing to Moment
+ - hack to Sequential_music_iterator to use the correct timing for
+the note before a grace
+ - change the implementation of \grace construct
+ - property set/unset (eg. font size) is done through startGraceMusic
+and stopGraceMusic
+ - various engraver fixes to deal with the fact that the
+main-time-moment may remain the same during several steps.
+ - Change column creation logic in score-engraver.
-* Added \newpage command.
+* Bugfix: don't crash when \name not set in \translator block.
-* Doco fixes.
+* rename ly/*.ly to ly/*-init.ly (except language files) to avoid
+name clashes
-* Debian make fix.
+* deprecate Property_engraver, add Font_size_engraver to Staff, Voice
+and Thread.
-* Fix for index, small doco fixes.
+* Change mailing list address: *gnu-music*@gnu.org becomes
+*lilypond*@gnu.org
-* Bugfix: use roman font (instead of feta) for unacorda pedal.
+* Put span-bar lines only between the other barlines, not on top of
+them (thanks to Juergen Reuter)
-* Don't use cyclic symlinks for web doc.
-
-* Don't create `empty pngs' with touch, make symlinks instead.
-
-* Added extra header titling fields to ly2dvi too.
-
-1.4.1.mb2
-=========
-
-* documentation fixes
-
-* Add make rule to avoid problems building dvi documentation
-
-* Documentation fixes
-
-* Bugfix: tuplet-number-visibility
-
-1.4.1.hwn1
-==========
-
-* Do not lengthen the stem in case of a collision with the flag, but
-move dots to the right.
-
-* Debian patches (Thanks, Anthony!)
-
-1.4.1
-=====
-
-1.4.0.jcn7
+1.4.4.jcn3
==========
+
+TODO: look at other filledbox'es (stafflines and barlines don't match up).
-* Added \tupletUp, \tupletDown, \tupletBoth.
-
-* Bugfix convert-ly: treCorde.
-
-* Slur attachment and extremity offsets taken relative to slur
-direction; so that
-
- Slur \override #'attachment-offset = #'((0 . 1) . (0 . 1))
-
-will always make the slur move away from the note head.
-
-* Bugfix: slurs on dotted or flagged notes.
-
-* Added @reng, @rgrob, and @rint macros for referencing engravers,
-grobs and interfaces in documentation.
-
-* Bugfix for configure.
-
-* text2html: use python script, use <pre> instead of <xmp>.
-
-* Fixed pa.ly.
-
-* Bugfix: lilypond mode: make view messages scroll by.
-
-* configure: check for splitting makeinfo; small fixes for
-non-splitting makeinfo doc.
-
-* Added some missing titling (dedication, translator) and fixed ps titling
-(Thanks David Arnold).
-
-* More doco fixes. Added a small legend.
-
-* Bugfix: trend of broken slurs with user-overridden stem attachments.
-
-* Bugfix redhat.spec: use root attributes on files.
-
-* Bugfix: typo in update-lily, re-set download url to /development.
-
-* Removed some empty files.
-
-* Merged tutorials. Simplified the text.
-
-* Small doco fixes.
-
-1.4.0.uu1
-=========
-
-* Bugfix: percussion clef
-
-* Bugfix: multiple scripts.
+* Testing code off by default. On: -e "(define ps-testing 1)" -fps
-* Bugfix: read TeX's afm files. Metrics are still messed up (too small), but no
-crash.
+* Output via TeX/dvips still gives problems. Use direct postscript
+output for real testing.
-* Bugfix: fixed the problem where dots clash with other notes (Timothy S.
-Nelson)
+* Beam and stem fixes:
+ - Stems drawn in PostScript (should do all filledbox'es in PS?).
+ - Fixes for draw_box and draw_beam PostScript routines.
+ - Stems reach to top (or bottom) of beam.
+ - Beam uses correct stem thickness (only right beams, left TODO).
+ - testing code in effect: only outlines are drawn.
met through music.
- Those deserving special mentioning (in no particular order):
-Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn,
-Maartje, Suzanne, Ilse (gee, again?), Marieke, Irene, Martine, and
-last (but certainly not least) Janneke!
+ Those deserving special mentioning (in no particular order): Esther,
+Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, Maartje, Suzanne,
+Ilse (gee, again?), Marieke, Irene, Martine, Idwine and last (but certainly not
+least) Janneke!
HWN
* PO updates.
* petite-ouverture-a-danser.ly bugfix, twinkle.ly bugfix
-V
+
1.3.153
=======
* Add a check for regular identifiers to parser.
-1.3.145
+1.3.146
=======
* Make and ly2dvi fixes.
--- /dev/null
+1.4.2.jcn4
+==========
+
+* Windows: bugfix for tex-wrappers, added tex wrapper for dvips.
+LilyPond (read: ly2dvi) should now work right out of the box.
+
+Amazing; it seems that ly2dvi won't generate PK files without this
+dvips wrapper. We had over 200 downloads of setup.exe, yet only one
+`call for help'. Did all the others give up, or did none of them
+bother to share their fix/file a bug report? Urg.
+
+* Included mktexnam.patch (again?).
+
+* Documentation fix (Mark Hindley).
+
+* Debian patch and bashism fix (Anthony).
+
+* Bugfix: local-install should depend on $(INSTALLATION_FILES). This fixes
+./configure; make install in buildscripts/ (Michael Vanier).
+
+* Removed les-nereides from short-examples, as it is tweaked a lot,
+contrary to what the webpage claims (didn't know that).
+
+1.4.2.mb1
+==========
+
+* ly2dvi, titledefs.tex: Typeset copyright notice at the bottom of the
+first page. Make separate page styles for first and last page.
+
+* Bugfix: Default RehearsalMark font-family changed to roman (only
+affects Scheme text markups).
+
+1.4.2.hwn1
+==========
+
+* Added support for Q: statement to abc2ly. (Laura Conrad)
+
+* Tie shape bugfix (Mark Hindley).
+
+* Bugfix: lilypond-book LatexPaper.__setattr__()
+
+* Bugfix: make Hyphen_spanner::brew_molecule() more robust.
+
+* Don't use stdin when no argument specified.
+
+* Naming smobs -> grobs
+
+* Bugfix: ledger lines on easy-notation note heads.
+
+1.4.2
+=====
+
+* Glossary fixes (Thanks Jean-Pierre Coulon).
+
+1.4.1.jcn3
+==========
+
+* Updated les-nereides.
+
+* Added \newpage command.
+
+* Doco fixes.
+
+* Debian make fix.
+
+* Fix for index, small doco fixes.
+
+* Bugfix: use roman font (instead of feta) for unacorda pedal.
+
+* Don't use cyclic symlinks for web doc.
+
+* Don't create `empty pngs' with touch, make symlinks instead.
+
+* Added extra header titling fields to ly2dvi too.
+
+1.4.1.mb2
+=========
+
+* documentation fixes
+
+* Add make rule to avoid problems building dvi documentation
+
+* Documentation fixes
+
+* Bugfix: tuplet-number-visibility
+
+1.4.1.hwn1
+==========
+
+* Do not lengthen the stem in case of a collision with the flag, but
+move dots to the right.
+
+* Debian patches (Thanks, Anthony!)
+
+1.4.1
+=====
+
+1.4.0.jcn7
+==========
+
+* Added \tupletUp, \tupletDown, \tupletBoth.
+
+* Bugfix convert-ly: treCorde.
+
+* Slur attachment and extremity offsets taken relative to slur
+direction; so that
+
+ Slur \override #'attachment-offset = #'((0 . 1) . (0 . 1))
+
+will always make the slur move away from the note head.
+
+* Bugfix: slurs on dotted or flagged notes.
+
+* Added @reng, @rgrob, and @rint macros for referencing engravers,
+grobs and interfaces in documentation.
+
+* Bugfix for configure.
+
+* text2html: use python script, use <pre> instead of <xmp>.
+
+* Fixed pa.ly.
+
+* Bugfix: lilypond mode: make view messages scroll by.
+
+* configure: check for splitting makeinfo; small fixes for
+non-splitting makeinfo doc.
+
+* Added some missing titling (dedication, translator) and fixed ps titling
+(Thanks David Arnold).
+
+* More doco fixes. Added a small legend.
+
+* Bugfix: trend of broken slurs with user-overridden stem attachments.
+
+* Bugfix redhat.spec: use root attributes on files.
+
+* Bugfix: typo in update-lily, re-set download url to /development.
+
+* Removed some empty files.
+
+* Merged tutorials. Simplified the text.
+
+* Small doco fixes.
+
+1.4.0.uu1
+=========
+
+* Bugfix: percussion clef
+
+* Bugfix: multiple scripts.
+
+* Bugfix: read TeX's afm files. Metrics are still messed up (too small), but no
+crash.
+
+* Bugfix: fixed the problem where dots clash with other notes (Timothy S.
+Nelson)
+
@lilypondfile[printfilename]{bar-number.ly}
+@lilypondfile[printfilename]{span-bar.ly}
+
@lilypondfile[printfilename]{bar-scripts.ly}
@lilypondfile[printfilename]{staff-margin.ly}
@subsection I'm stuck, HELP!
Please read the
-@uref{http://appel.lilypond.org/wiki?LilyPondFaqs, full online
+@uref{http://lilypond.org/wiki?LilyPondFaqs, full online
FAQs}. Also, please look in the searchable mailinglist archives:
@itemize @bullet
@section Problems
-For help and questions use @email{help-gnu-music@@gnu.org} and
-@email{gnu-music-discuss@@gnu.org}. Please consult the FAQ before
-mailing your problems. If you find bugs, please send bug reports to
-@email{bug-gnu-music@@gnu.org}.
+For help and questions use @email{lilypond-user@@gnu.org}. Please
+consult the FAQ before mailing your problems. If you find bugs, please
+send bug reports to @email{bug-lilypond@@gnu.org}.
Bugs that are not fault of LilyPond are documented here.
We have the following mailing lists:
@itemize @bullet
-@item @uref{http://mail.gnu.org/mailman/listinfo/info-gnu-music,info-gnu-music@@gnu.org}
+@item @uref{http://mail.gnu.org/mailman/listinfo/info-lilypond,info-lilypond@@gnu.org}
is a low-volume list for information on the GNU Music project.
This list is moderated; ask
@email{drl@@gnu.org, David R. Linn} or
@email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this
list.
@item
-@uref{http://mail.gnu.org/mailman/listinfo/gnu-music-discuss,gnu-music-discuss@@gnu.org}
- For general discussions concerning LilyPond.
+@uref{http://mail.gnu.org/mailman/listinfo/lilypond-devel,lilypond-devel@@gnu.org}
+ For discussions about developing lilypond, in particular the unstable series.
-@item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music,help-gnu-music@@gnu.org}
- For help with using LilyPond.
-@item @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-music,bug-gnu-music@@gnu.org}
+@item @uref{http://mail.gnu.org/mailman/listinfo/help-lilypond,help-lilypond@@gnu.org}
+ For discussions about using lilypond, in particular the stable series.
+
+@item @uref{http://mail.gnu.org/mailman/listinfo/bug-lilypond,bug-lilypond@@gnu.org}
If you have bugreports, you should send them to this list.
@end itemize
@section Bugs
-Send bug reports to @email{bug-gnu-music@@gnu.org}. For help and
-questions use @email{help-gnu-music@@gnu.org} and
-@email{gnu-music-discuss@@gnu.org}. Please consult the FAQ and
+Send bug reports to @email{bug-lilypond@@gnu.org}. For help and
+questions use @email{help-lilypond@@gnu.org} and
+@email{lilypond-discuss@@gnu.org}. Please consult the FAQ and
installation instructions before mailing your problems.
@end itemize
-You can send the report to @email{bug-gnu-music@@gnu.org}. This is a
+You can send the report to @email{bug-lilypondg@@gnu.org}. This is a
mailinglist, but you don't have to be subscribed to it. You may also
enter the bug in the LilyPond wiki, at
@uref{http://www.lilypond.org/wiki?LilyPondBugs}.
@code{convert-ly} is written in @uref{http://www.python.org,Python}. It
was written by @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}. Report bugs
-to @code{bug-gnu-music@@gnu.org}
+to @code{bug-lilypond@@gnu.org}
@end table
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
Written by @email{Jan Nieuwenhuizen, janneke@@gnu.org}.
Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
@node abc2ly
@section abc2ly
Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
@c How about Laura? /MB
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
@node pmx2ly
@section pmx2ly
PMX is a MusiXTeX preprocessor written by Don Simons, see
@uref{http://icking-music-archive.sunsite.dk/Misc/Music/musixtex/software/pmx/}.
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
@subsection Invoking pmx2ly
version information
@end table
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
@var{REFFILE}
@end table
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
Written by @email{Jan Nieuwenhuizen,janneke@@gnu.org}, based on pmx2ly.
-Report bugs to @email{bug-gnu-music@@gnu.org}.
+Report bugs to @email{bug-lilypond@@gnu.org}.
@unnumberedsubsec Bugs
Cannot generate @TeX{} or @code{PostScript} only. Send bugreports to to
-@email{bug-gnu-music@@gnu.org}.
+@email{bug-lilypond@@gnu.org}.
@unnumberedsubsec Authors
@example
\property Staff.clefGlyph = @var{glyph associated with clefname}
\property Staff.clefPosition = @var{clef Y-position for clefname}
+ \property Staff.centralCPosition = @var{position for central C}
\property Staff.clefOctavation = @var{extra transposition of clefname}
@end example
@refbugs
+
There is no mechanism to select magnification of particular fonts,
meaning that you don't have access to continuously scaled fonts.
included in LilyPond's source distribution.
@end table
+@subsection Cross compiling
+
These binaries are cross compiled for Windows on a GNU/Linux box. You
may want to check out the
@uref{http://www.lilypond.org/gnu-windows/cross.tar.gz,cross compilation
scripts}.
+@subsection Compiling on Windows
+
+Compiling on Windows should be possible, but how should we now? If you
+have any experiences you want to share, please do so at
+@uref{http://lilypond.org/wiki?CompilingOnWindows,Compiling on Windows}.
+Or write to one of the mailing lists.
@section Windows installation specifics
@subsection Trouble
For problems and solutions see
-@uref{Troubleshooting Windows,http://lilypond.org/TroubleshootingWindows}.
+@uref{http://lilypond.org/wiki?TroubleshootingWindows,Troubleshooting
+Windows}
@subsection Additional software
----------------
Please read the full online FAQs
-(http://appel.lilypond.org/wiki?LilyPondFaqs). Also, please look in
-the searchable mailinglist archives:
+(http://lilypond.org/wiki?LilyPondFaqs). Also, please look in the
+searchable mailinglist archives:
* help-gnu-music (http://www.mail-archive.com/help-gnu-music@gnu.org)
Problems
========
- For help and questions use <help-gnu-music@gnu.org> and
-<gnu-music-discuss@gnu.org>. Please consult the FAQ before mailing
-your problems. If you find bugs, please send bug reports to
-<bug-gnu-music@gnu.org>.
+ For help and questions use <lilypond-user@gnu.org>. Please consult
+the FAQ before mailing your problems. If you find bugs, please send
+bug reports to <bug-lilypond@gnu.org>.
Bugs that are not fault of LilyPond are documented here.
We have the following mailing lists:
- * info-gnu-music@gnu.org
- (http://mail.gnu.org/mailman/listinfo/info-gnu-music) is a
+ * info-lilypond@gnu.org
+ (http://mail.gnu.org/mailman/listinfo/info-lilypond) is a
low-volume list for information on the GNU Music project.
This list is moderated; ask David R. Linn <drl@gnu.org> or
Han-Wen <hanwen@cs.uu.nl> to send announcements for this list.
- * gnu-music-discuss@gnu.org
- (http://mail.gnu.org/mailman/listinfo/gnu-music-discuss) For
- general discussions concerning LilyPond.
+ * lilypond-devel@gnu.org
+ (http://mail.gnu.org/mailman/listinfo/lilypond-devel) For
+ discussions about developing lilypond, in particular the unstable
+ series.
- * help-gnu-music@gnu.org
- (http://mail.gnu.org/mailman/listinfo/help-gnu-music) For help
- with using LilyPond.
+ * help-lilypond@gnu.org
+ (http://mail.gnu.org/mailman/listinfo/help-lilypond) For
+ discussions about using lilypond, in particular the stable series.
- * bug-gnu-music@gnu.org
- (http://mail.gnu.org/mailman/listinfo/bug-gnu-music) If you have
+ * bug-lilypond@gnu.org
+ (http://mail.gnu.org/mailman/listinfo/bug-lilypond) If you have
bugreports, you should send them to this list.
Windows 32
Bugs
====
- Send bug reports to <bug-gnu-music@gnu.org>. For help and questions
-use <help-gnu-music@gnu.org> and <gnu-music-discuss@gnu.org>. Please
+ Send bug reports to <bug-lilypond@gnu.org>. For help and questions
+use <help-lilypond@gnu.org> and <lilypond-discuss@gnu.org>. Please
consult the FAQ and installation instructions before mailing your
problems.
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
-MINOR_VERSION=4
-PATCH_LEVEL=4
+MINOR_VERSION=5
+PATCH_LEVEL=0
MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# strange shell, this C
set datadir="@datadir@"
-setenv GS_FONTPATH "$datadir/afm:@datadir@/pfa:$GS_FONTPATH"
-setenv GS_LIB "$datadir/ps:$GS_LIB"
+if ( $?GS_FONTPATH ) then
+ setenv GS_FONTPATH "$datadir/afm:/usr/share/lilypond/pfa:$GS_FONTPATH"
+ else
+ setenv GS_FONTPATH "$datadir/afm:/usr/share/lilypond/pfa"
+ endif
+ if ( $?GS_LIB ) then
+ setenv GS_LIB "$datadir/ps:$GS_LIB"
+ else
+ setenv GS_LIB "$datadir/ps"
+ endif
+
# setenv LILYPONDPREFIX "$datadir"
void invert ();
int num () const { return sign_ * num_; }
int den () const { return den_; }
- int num_i () const { return sign_ * num_; }
- int den_i () const { return den_; }
+
Rational trunc_rat () const;
Rational div_rat (Rational) const;
Rational mod_rat (Rational) const;
--- /dev/null
+\header {
+ texidoc="beam-stem attachment test"
+}
+
+\score {
+ \context RhythmicStaff \notes {
+ \stemUp [c8 c]
+ \stemDown [c8 c]
+ \stemUp [c8. c16]
+ }
+ \paper {
+ linewidth = -1.0
+ magnification = 64
+ }
+}
\ No newline at end of file
--- /dev/null
+\score { \notes {
+ \clef bass
+ <{
+ \grace { [c16 ] }
+ \relative b, b2
+ } >
+}
+}
--- /dev/null
+\header {
+
+texidoc = "Bar line should come before the grace note.";
+}
+
+
+
+
+
+\score {\notes \relative c' \context Staff {
+ f1 \ngrace { [a'16 f] } g1 }
+ \paper { linewidth = -1. }
+ }
--- /dev/null
+\header {
+texidoc = "Pieces may begin with grace notes."
+}
+\score {\notes \relative c' \context Staff {
+ \grace { [a'16 f] } g1
+ \grace { [a16 bes] } c1
+ }
+ \paper { linewidth = -1. }
+}
--- /dev/null
+\header {
+ texidoc = "grace notes in different voices/staffs are synchronized."
+}
+
+\score {\notes < \context Staff { c2
+ \ngrace c8
+ c2 c4 }
+ \context Staff = SB { c2 \clef bass
+ %\ngrace { [dis8 ( d8] }
+
+ ) c2 c4 }
+ \context Staff = SC { c2 c2 c4 }
+ >
+ \paper { linewidth = -1. }
+ }
--- /dev/null
+\header {
+texidoc = "Span bars draw only in between staff bar lines, so setting those to transparent shows bar lines between systems only.
+"
+}
+
+\score {
+ \notes \relative c' \context StaffGroup = groupie <
+ \context Staff = SA { c1 c1 c1}
+ \context Lyrics = LA \lyrics <
+ { bla1 die bla }
+ >
+ \context Staff = SB { a1 a1 a1}
+ \context Lyrics = LB \lyrics <
+ { bla1 die bla }
+ { foo bar foo }
+ >
+ \context Staff = SC { f1 f1 f1}
+ \context Lyrics = LC \lyrics <
+ { bla1 die bla }
+ { foo bar foo }
+ { foo bar foo }
+ >
+ \context Staff = SD { d1 d1 d1}
+ \context Lyrics = LD \lyrics <
+ { bla1 die bla }
+ { foo bar foo }
+ { foo bar foo }
+ { foo bar foo }
+ >
+ >
+ \paper {
+ \translator {
+ \StaffContext
+ BarLine \override #'transparent = ##t
+ }
+ }
+}
--- /dev/null
+\header {
+ texidoc="Document trills, pralls and turns"
+ title="Marques des agr\'ements et leur signification"
+ copyright="(1689)"
+}
+
+\score {
+ <
+ \property Score.TimeSignature = \turnOff
+ \context GrandStaff <
+ \context Staff=upper \notes\relative c'' {
+ \time 1/4
+ c4-\prallprall
+ \time 3/8
+ c4.^"TODO"
+ c4.-\downprall
+ c4.-\upprall
+ \time 5/8
+ c4-\turn c4.-\upprall
+ }
+ \context Lyrics=one \lyrics {
+ "Tremblement"4
+ "Tremblement"4.
+ "Cadence"
+ "autre"
+ "Double"4 "cadence"4.
+ }
+ \context Lyrics=two \lyrics {
+ "simple"4
+ "appuy\'e"4.
+ }
+ \context Staff=lower \notes\relative c'' {
+ % autobeamer has som problems here
+ [\repeat unfold 4 { d32 c }]
+ d8~[\repeat unfold 4 { d32 c }]
+ d32 c b c \repeat unfold 4 { d32 c }
+ b32 c d c \repeat unfold 4 { d32 c }
+ [c32( b a16 b )c] [b32 c d c \repeat unfold 4 { d32 c }]
+ }
+ >
+ >
+}
\ No newline at end of file
Moment one_beat = *unsmob_moment (get_property ("beatLength"));
int num = *unsmob_moment (get_property ("measureLength")) / one_beat;
- int den = one_beat.den_i ();
+ int den = one_beat.den ();
SCM time = gh_list (gh_int2scm (num), gh_int2scm (den), SCM_UNDEFINED);
- SCM type = gh_list (gh_int2scm (test_mom.num_i ()),
- gh_int2scm (test_mom.den_i ()), SCM_UNDEFINED);
+ SCM type = gh_list (gh_int2scm (test_mom.num ()),
+ gh_int2scm (test_mom.den ()), SCM_UNDEFINED);
SCM settings = get_property ("autoBeamSettings");
Moment length = * unsmob_moment (get_property ("measureLength"));
pos = length - pos;
}
- r = pos.mod_rat (moment);
+ r = pos.main_part_.mod_rat (moment.main_part_);
}
else
{
durlog - 2);
stem_l_arr_p_->push (stem_l);
last_add_mom_ = now;
- extend_mom_ = extend_mom_ >? now + rhythmic_req->length_mom ();
+ extend_mom_ = (extend_mom_ >? now) + rhythmic_req->length_mom ();
}
}
{
where_dir_ = s;
String to_id = (s >= 0) ? "up" : "down";
- String wh = ly_scm2string (music_l_->get_mus_property ("what"));
+ String wh = ly_scm2string (music_l ()->get_mus_property ("what"));
change_to (child_iter_p_, wh, to_id);
}
}
}
/*
- Bar_engraver should come *after* any engravers that expect bars to
- modify whichBar in deprecated_process_music () be typeset
+ Bar_engraver should come *after* any engravers that
+ modify whichBar
*/
void
Bar_engraver::create_grobs ()
if (beam_p_)
{
prev_start_req_->origin ()->warning (_ ("unterminated beam"));
-#if 0
- finished_beam_p_ = beam_p_;
- finished_beam_info_p_ = beam_info_p_;
- typeset_beam ();
-#else
+
+ /*
+ we don't typeset it, (we used to, but it was commented
+ out. Reason unknown) */
beam_p_->suicide ();
delete beam_info_p_;
-#endif
}
}
Real stem_y = calc_stem_y_f (me, s, y, dy);
+ stem_y += Stem::get_direction (s)
+ * gh_scm2double (me->get_grob_property ("thickness")) / 2;
+
/* caution: stem measures in staff-positions */
Real id = me->relative_coordinate (common, Y_AXIS)
- stems[i]->relative_coordinate (common, Y_AXIS);
(prev && ! (prev->relative_coordinate (0, X_AXIS) < here->relative_coordinate (0, X_AXIS))))
programming_error ("Beams are not left-to-right");
- Real staffline_f = me->paper_l ()->get_var ("stafflinethickness");
int multiplicity = get_multiplicity (me);
SCM space_proc = me->get_grob_property ("space-function");
Real interbeam_f = gh_scm2double (space) ;
Real bdy = interbeam_f;
- Real stemdx = staffline_f;
-
+
#if 0
// ugh -> use commonx
Real dx = visible_stem_count (me) ?
Half beam should be one note-width,
but let's make sure two half-beams never touch
*/
- Real w = here->relative_coordinate (0, X_AXIS) - prev->relative_coordinate (0, X_AXIS);
+
+ // FIXME: TODO (check) stem width / sloped beams
+ Real w = here->relative_coordinate (0, X_AXIS)
+ - prev->relative_coordinate (0, X_AXIS);
+ Real stem_w = gh_scm2double (prev->get_grob_property ("thickness"))
+ // URG
+ * me->paper_l ()->get_var ("stafflinethickness");
+
w = w/2 <? nw_f;
Molecule a;
if (lhalfs) // generates warnings if not
- a = Lookup::beam (dydx, w, thick);
+ a = Lookup::beam (dydx, w + stem_w, thick);
a.translate (Offset (-w, -w * dydx));
+ //a.translate_axis (stem_w/2, X_AXIS);
for (int j = 0; j < lhalfs; j++)
{
Molecule b (a);
if (next)
{
- int rhalfs = Stem::beam_count (here,RIGHT) - Stem::beam_count (next,LEFT);
- int rwholebeams= Stem::beam_count (here,RIGHT) <? Stem::beam_count (next,LEFT) ;
+ int rhalfs = Stem::beam_count (here,RIGHT)
+ - Stem::beam_count (next,LEFT);
+ int rwholebeams= Stem::beam_count (here,RIGHT)
+ <? Stem::beam_count (next,LEFT) ;
- Real w = next->relative_coordinate (0, X_AXIS) - here->relative_coordinate (0, X_AXIS);
- Molecule a = Lookup::beam (dydx, w + stemdx, thick);
- a.translate_axis (- stemdx/2, X_AXIS);
+ Real w = next->relative_coordinate (0, X_AXIS)
+ - here->relative_coordinate (0, X_AXIS);
+
+ Real stem_w = gh_scm2double (next->get_grob_property ("thickness"))
+ // URG
+ * me->paper_l ()->get_var ("stafflinethickness");
+
+ Molecule a = Lookup::beam (dydx, w + stem_w, thick);
+ a.translate_axis (- stem_w/2, X_AXIS);
int j = 0;
Real gap_f = 0;
-
+
SCM gap = me->get_grob_property ("gap");
if (gh_number_p (gap))
{
else
gap_f = nw_f / 2;
w -= 2 * gap_f;
- a = Lookup::beam (dydx, w + stemdx, thick);
+ a = Lookup::beam (dydx, w + stem_w, thick);
}
for (; j < rwholebeams; j++)
for (int i=1; i < infos_.size (); i++)
{
- if (infos_[i].start_mom_.den_i () < minden)
+ if (infos_[i].start_mom_.den () < minden)
{
minidx = i;
- minden = infos_[i].start_mom_.den_i ();
+ minden = infos_[i].start_mom_.den ();
}
}
void
Change_iterator::error (String reason)
{
- String to_type = ly_scm2string (music_l_->get_mus_property ("change-to-type"));
- String to_id = ly_scm2string (music_l_->get_mus_property ("change-to-id"));
+ String to_type = ly_scm2string (music_l ()->get_mus_property ("change-to-type"));
+ String to_id = ly_scm2string (music_l ()->get_mus_property ("change-to-id"));
String warn1 = _f ("can't change `%s' to `%s'", to_type, to_id)
+ ": " + reason;
+ report_to_l ()->type_str_ + " = `"
+ report_to_l ()->id_str_ + "': ";
warning (warn2);
- music_l_->origin ()->warning (warn1);
+ music_l ()->origin ()->warning (warn1);
}
/*
Translator_group * current = report_to_l ();
Translator_group * last = 0;
- String to_type = ly_scm2string (music_l_->get_mus_property ("change-to-type"));
- String to_id = ly_scm2string (music_l_->get_mus_property ("change-to-id"));
+ String to_type = ly_scm2string (music_l ()->get_mus_property ("change-to-type"));
+ String to_id = ly_scm2string (music_l ()->get_mus_property ("change-to-id"));
/* find the type of translator that we're changing.
void
Chord_tremolo_iterator::construct_children ()
{
- Repeated_music * rep = dynamic_cast<Repeated_music*> (music_l_);
+ Repeated_music * rep = dynamic_cast<Repeated_music*> (music_l ());
factor_ = Moment (1, rep->repeat_count ());
child_iter_p_ = get_iterator_p (rep->body ());
}
{
if (!m)
{
- Music_iterator *yeah = try_music (music_l_);
+ Music_iterator *yeah = try_music (music_l ());
if (yeah)
set_translator (yeah->report_to_l ());
else
- music_l_->origin ()->warning (_ ("no one to print a tremolos"));
+ music_l ()->origin ()->warning (_ ("no one to print a tremolos"));
}
child_iter_p_->process (factor_ * m);
clef_p_->set_grob_property ("non-default", SCM_BOOL_T);
- prev_cpos_ = clefpos;
- prev_glyph_ = glyph;
- prev_octavation_ = octavation;
-
+ prev_cpos_ = clefpos;
+ prev_glyph_ = glyph;
+ prev_octavation_ = octavation;
}
if (to_boolean (force_clef))
{
durlog_i_ = 0;
dots_i_ = 0;
- factor_ = Moment (1,1);
+ factor_ = Rational (1,1);
}
Duration::Duration (int l, int d)
{
durlog_i_ = l;
dots_i_ = d;
- factor_ = Moment (1,1);
+ factor_ = Rational (1,1);
}
Duration
Rational mom (1 << abs (durlog_i_));
if (durlog_i_> 0)
- mom = Moment (1)/mom;
+ mom = Rational (1)/mom;
Rational delta = mom;
for (int d = dots_i_; d; d--)
{
- delta /= Moment (2);
+ delta /= Rational (2);
mom += delta;
}
void
Folded_repeat_iterator::construct_children ()
{
- Repeated_music * mus = dynamic_cast<Repeated_music*> (music_l_);
+ Repeated_music * mus = dynamic_cast<Repeated_music*> (music_l ());
main_iter_p_ = get_iterator_p (mus->body ());
if (!main_iter_p_->ok ())
{
{
if (!m)
{
- bool success = try_music (music_l_);
+ bool success = try_music (music_l ());
if (!success)
- music_l_->origin ()->warning (_ ("no one to print a repeat brace"));
+ music_l ()->origin ()->warning (_ ("no one to print a repeat brace"));
}
if (main_iter_p_)
void
Folded_repeat_iterator::leave_body ()
{
- Repeated_music * mus = dynamic_cast<Repeated_music *> (music_l_);
+ Repeated_music * mus = dynamic_cast<Repeated_music *> (music_l ());
delete main_iter_p_;
main_iter_p_ = 0;
main_length_mom_ += mus->body ()->length_mom ();
void
Folded_repeat_iterator::enter_alternative ()
{
- Repeated_music * mus = dynamic_cast<Repeated_music *> (music_l_);
+ Repeated_music * mus = dynamic_cast<Repeated_music *> (music_l ());
if (mus->alternatives ())
{
Simultaneous_music_iterator * s = new Simultaneous_music_iterator;
--- /dev/null
+/*
+ font-size-engraver.cc -- implement
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "grob.hh"
+#include "engraver.hh"
+
+class Font_size_engraver : public Engraver
+{
+public:
+ VIRTUAL_COPY_CONS(Translator);
+ Font_size_engraver ();
+protected:
+ virtual void acknowledge_grob (Grob_info gi);
+private:
+};
+
+
+Font_size_engraver::Font_size_engraver ()
+{
+
+}
+
+void
+Font_size_engraver::acknowledge_grob (Grob_info gi)
+{
+ SCM sz = get_property ("fontSize");
+
+ if (gh_number_p (sz)
+ && gh_scm2int (sz)
+ && !gh_number_p (gi.elem_l_->get_grob_property ("font-relative-size")))
+ {
+ gi.elem_l_->set_grob_property ("font-relative-size", sz);
+ }
+}
+
+ADD_THIS_TRANSLATOR(Font_size_engraver);
void
Global_translator::run_iterator_on_me (Music_iterator * iter)
{
+ if (iter-> ok ())
+ prev_mom_ = now_mom_ = iter->pending_moment ();
+
while (iter->ok () || moments_left_i ())
{
Moment w;
if (iter->ok ())
{
w = iter->pending_moment ();
-
}
w = sneaky_insert_extra_moment (w);
Moment
Grace_iterator::pending_moment () const
{
- return 0;
+ return 0;
}
for (int i=1; i < notes_.size (); i++)
shortest_mom = shortest_mom <? notes_[i]->length_mom_;
- Rational grace_fraction_rat (1, 2);
+ Moment grace_fraction_rat (1, 2);
SCM prop = get_property ("graceFraction");
if (unsmob_moment (prop))
grace_fraction_rat = *unsmob_moment (prop);
for (int i=0; i < graces_.size (); i++)
grace_length_mom += graces_[i]->length_mom_;
- Rational grace_factor_rat = delay_mom / grace_length_mom;
+ Moment grace_factor_rat = delay_mom / grace_length_mom;
for (int i=0; i < graces_.size (); i++)
{
int durlog_i_;
int dots_i_;
- Moment factor_;
+ Rational factor_;
};
virtual Moment length_mom () const;
};
+class New_grace_music : public Music_wrapper
+{
+public:
+ VIRTUAL_COPY_CONS (Music);
+ New_grace_music (SCM);
+ New_grace_music ();
+protected:
+ virtual void compress (Moment);
+ virtual Moment length_mom () const;
+};
+
#endif /* GRACE_MUSIC_HH */
/**
Rationals with glue for Guilification;
-
- FIXME: remove self_scm_ and then remove this class */
-class Moment : public Rational
+*/
+class Moment
{
DECLARE_SIMPLE_SMOBS (Moment,);
public:
- Moment () { }
- Moment (int m) : Rational (m) { }
- Moment (int m, int n) : Rational (m,n) { }
- Moment (Rational m) : Rational (m) { }
+ Moment ();
+ Moment (int m);
+ Moment (int m, int n);
+
+ Moment (Rational m);
+
+
+ void operator += (Moment const &m);
+ void operator -= (Moment const &m);
+ void operator *= (Moment const &m);
+ void operator /= (Moment const &m);
+
+ Rational main_part_;
+ Rational grace_mom_;
+
+ void set_infinite (int k);
+
+ operator bool ();
+ int den () const;
+ int num () const;
/*
Deliver a copy of THIS as a smobified SCM
*/
- SCM smobbed_copy () const;
+ SCM smobbed_copy () const;
+ String str () const;
+ static int compare (Moment const&, Moment const&);
};
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + );
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - );
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / );
+IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * );
Moment * unsmob_moment (SCM);
+int compare (Moment const&,Moment const&);
+INSTANTIATE_COMPARE (Moment const&, Moment::compare);
#if 0
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + );
-IMPLEMENT_ARITHMETIC_OPERATOR (Moment, - );
IMPLEMENT_ARITHMETIC_OPERATOR (Moment, % );
-INSTANTIATE_COMPARE (Moment const&, Rational::compare);
#endif
#endif /* MOMENT_HH */
{
protected:
Moment music_length_;
-
+ Moment start_mom_;
public:
VIRTUAL_COPY_CONS (Music_iterator);
Moment music_length_mom () const;
+ Moment music_start_mom () const;
Music_iterator ();
Music_iterator (Music_iterator const&);
virtual ~Music_iterator ();
virtual void construct_children ();
static SCM constructor_cxx_function;
-protected:
- Music * music_l_;
-
/**
Get an iterator for MUS, inheriting the translation unit from THIS.
*/
virtual Music_iterator* try_music_in_children (Music *) const;
+ Music * music_l () const;
private:
Interpretation_context_handle handle_;
+ Music * music_l_;
};
Simultaneous_music (SCM);
virtual Pitch to_relative_octave (Pitch);
virtual Moment length_mom () const;
-
+ virtual Moment start_mom () const;
Simultaneous_music ();
};
public:
VIRTUAL_COPY_CONS (Music);
virtual Pitch to_relative_octave (Pitch);
+ virtual Moment start_mom () const;
Request_chord (SCM list);
Request_chord ();
VIRTUAL_COPY_CONS (Music);
Sequential_music (SCM);
virtual Moment length_mom () const;
-
+ virtual Moment start_mom () const;
+
Sequential_music ();
};
int length_i () const;
Moment cumulative_length () const;
Moment maximum_length () const;
+
+ Moment first_start () const;
+ Moment minimum_start () const;
protected:
virtual Pitch to_relative_octave (Pitch);
VIRTUAL_COPY_CONS (Music);
virtual Moment length_mom () const;
+ virtual Moment start_mom () const;
virtual Pitch to_relative_octave (Pitch);
virtual void compress (Moment);
};
/// The duration of this piece of music
virtual Moment length_mom () const;
-
+ virtual Moment start_mom () const;
void print () const;
/// Transpose, with the interval central C to #p#
virtual void transpose (Pitch p);
--- /dev/null
+/*
+ new-grace-iterator.hh -- declare New-Grace_iterator
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef NEWGRACE_ITERATOR_HH
+#define NEWGRACE_ITERATOR_HH
+
+#include "music-wrapper-iterator.hh"
+
+class New_grace_iterator : public Music_wrapper_iterator
+{
+public:
+ VIRTUAL_COPY_CONS (Music_iterator);
+ ~New_grace_iterator ();
+ virtual void construct_children () ;
+ virtual void process (Moment);
+ static SCM constructor_cxx_function;
+ Moment pending_moment () const;
+};
+
+
+
+#endif /* GRACE_ITERATOR_HH */
+
+
--- /dev/null
+/*
+ grace-music.hh -- declare Grace_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef NGRACE_MUSIC_HH
+#define NGRACE_MUSIC_HH
+
+#include "music-wrapper.hh"
+
+class New_grace_music : public Music_wrapper
+{
+public:
+ VIRTUAL_COPY_CONS (Music);
+ New_grace_music (SCM);
+ New_grace_music ();
+protected:
+ virtual void compress (Moment);
+ virtual Moment length_mom () const;
+ virtual Moment start_mom () const;
+};
+
+#endif /* GRACE_MUSIC_HH */
+
Paper_column* command_column_l_;
Paper_column* musical_column_l_;
- void make_columns (Moment);
+ void make_columns ();
void set_columns (Paper_column*,Paper_column*);
void typeset_all ();
#include "music-iterator.hh"
+
+struct Grace_skip
+{
+ Moment start_;
+ Rational length_;
+ Rational grace_length_;
+ Grace_skip *next_;
+};
+
/** Sequential_music iteration: walk each element in turn, and
construct an iterator for every element.
class Sequential_music_iterator : public Music_iterator
{
public:
+ Grace_skip * grace_skips_;
+
VIRTUAL_COPY_CONS (Music_iterator);
static SCM constructor_cxx_function;
Sequential_music_iterator ();
-/*
- spaceable-grob.hh -- declare Spaceable_grob
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-#ifndef SPACEABLE_GROB_HH
-#define SPACEABLE_GROB_HH
-
-#include "lily-guile.hh"
-#include "lily-proto.hh"
-
-struct Spaceable_grob
-{
- /// set a minimum distance
- static void add_rod (Grob*me, Grob * to, Real distance);
- static void add_spring (Grob*me,Grob * to, Real dist, Real strength);
- static void set_interface (Grob*);
- static void remove_interface (Grob*);
- static SCM get_minimum_distances (Grob*);
- static SCM get_ideal_distances (Grob*);
-};
-
-#endif /* SPACEABLE_GROB_HH */
+#error
--- /dev/null
+/*
+ spaceable-grob.hh -- declare Spaceable_grob
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef SPACEABLE_GROB_HH
+#define SPACEABLE_GROB_HH
+
+#include "lily-guile.hh"
+#include "lily-proto.hh"
+
+struct Spaceable_grob
+{
+ /// set a minimum distance
+ static void add_rod (Grob*me, Grob * to, Real distance);
+ static void add_spring (Grob*me,Grob * to, Real dist, Real strength);
+ static void set_interface (Grob*);
+ static void remove_interface (Grob*);
+ static SCM get_minimum_distances (Grob*);
+ static SCM get_ideal_distances (Grob*);
+};
+
+#endif /* SPACEABLE_GROB_HH */
+
public:
Moment measure_position () const;
- Moment measure_length () const;
-
+ Rational measure_length () const;
};
#endif // TIMING_TRANSLATOR_HH
void
Lyric_combine_music_iterator::construct_children ()
{
- Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (music_l_);
+ Lyric_combine_music const * m = dynamic_cast<Lyric_combine_music const*> (music_l ());
music_iter_p_ = get_iterator_p (m->music_l ());
lyric_iter_p_ = get_iterator_p (m->lyrics_l ());
follow regular localisation guidelines).
*/
static Long_option_init options_static[] = {
+ /* print example usage: lilypond -e "(set-lily-option 'help 0)" ? */
{_i ("EXPR"), "evaluate", 'e',_i ("evalute EXPR as Scheme after .scm init is read")},
/* another bug in option parser: --output=foe is taken as an abbreviation
for --output-format */
cout << endl;
- cout << _f ("Report bugs to %s", "bug-gnu-music@gnu.org") << endl;
+ cout << _f ("Report bugs to %s", "bug-lilypond@gnu.org") << endl;
}
void
String
Midi_time_signature::str () const
{
- int num_i = audio_l_->beats_i_;
- int den_i = audio_l_->one_beat_i_;
+ int num = audio_l_->beats_i_;
+ int den = audio_l_->one_beat_i_;
String str = "ff5804";
- str += String_convert::i2hex_str (num_i, 2, '0');
- str += String_convert::i2hex_str (intlog2 (den_i) , 2, '0');
+ str += String_convert::i2hex_str (num, 2, '0');
+ str += String_convert::i2hex_str (intlog2 (den) , 2, '0');
str += String_convert::i2hex_str (clocks_per_1_i_, 2, '0');
str += String_convert::i2hex_str (8, 2, '0');
return String_convert::hex2bin_str (str);
#include "string.hh"
#include "molecule.hh"
#include "debug.hh"
-#include "killing-cons.tcc"
+
#include "ly-smobs.icc"
return (*m1 == *m2) ? SCM_BOOL_T : SCM_BOOL_F;
}
+/****************************************************************/
+
+int
+compare (Moment const &a, Moment const &b)
+{
+ return Moment::compare (a,b);
+}
+
+int
+Moment::compare (Moment const &a, Moment const &b)
+{
+ int c = Rational::compare (a.main_part_,b.main_part_);
+ if (c)
+ return c;
+
+ return Rational::compare (a.grace_mom_, b.grace_mom_);
+}
+
+Moment::Moment ()
+{
+
+}
+
+Moment::Moment (int m)
+{
+ main_part_ = Rational(m);
+ grace_mom_ = Rational( 0);
+}
+
+Moment::Moment (int m, int n)
+{
+ main_part_ = Rational (m,n);
+ grace_mom_ = Rational (0);
+}
+
+Moment::Moment (Rational m)
+{
+ main_part_ = m;
+ grace_mom_ = Rational (0);
+}
+
+void
+Moment::operator += (Moment const &src)
+{
+ main_part_ +=src.main_part_ ;
+ grace_mom_ += src.grace_mom_;
+}
+void
+Moment::operator -= (Moment const &src)
+{
+ main_part_ -= src.main_part_ ;
+ grace_mom_ -= src.grace_mom_;
+}
+
+/*
+ only take the main part of SRC for multiplication.
+ */
+void
+Moment::operator *= (Moment const &src)
+{
+ main_part_ *= src.main_part_ ;
+ grace_mom_ *= src.main_part_;
+}
+
+/*
+ only take the main part of SRC for multiplication.
+ */
+void
+Moment::operator /= (Moment const &src)
+{
+ main_part_ /= src.main_part_ ;
+ grace_mom_ /= src.main_part_;
+}
+
+
+#if 0
+Moment::operator Rational()
+{
+ return main_part_;
+}
+#endif
+
+int
+Moment::den () const { return main_part_.den (); }
+
+int
+Moment::num () const { return main_part_.num (); }
+
+
+Moment::operator bool ()
+{
+ return main_part_ || grace_mom_;
+}
+
+void
+Moment::set_infinite (int k)
+{
+ main_part_.set_infinite (k);
+}
+
+
+String
+Moment::str () const
+{
+ return main_part_.str ();
+}
handle_ = *src.handle_.clone ();
music_l_ = src.music_l_;
music_length_ = src.music_length_;
+ start_mom_ = src.start_mom_;
}
Music_iterator::~Music_iterator ()
return 0;
}
-
void
Music_iterator::process (Moment)
{
}
p->music_l_ = m;
+ assert (m);
p->music_length_ = m->length_mom ();
-
+ p->start_mom_ = m->start_mom ();
return p;
}
Music_iterator::music_length_mom () const
{
return music_length_;
+
+}
+
+Moment
+Music_iterator::music_start_mom ()const
+{
+ return start_mom_;
}
void
Music_iterator::init_translator (Music *m, Translator_group *report_l)
{
music_l_ = m;
+ assert (m);
if (Context_specced_music * csm =dynamic_cast<Context_specced_music *> (m))
{
SCM ct = csm->get_mus_property ("context-type");
}
IMPLEMENT_CTOR_CALLBACK (Music_iterator);
+
+Music *
+Music_iterator::music_l () const
+{
+ return music_l_;
+}
-/*
- music-list.cc -- implement Music_sequence, Simultaneous_music, Sequential_music
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "music-list.hh"
-#include "music-wrapper.hh"
-#include "pitch.hh"
-#include "request.hh"
-#include "musical-request.hh"
-#include "music-iterator.hh"
-#include "main.hh"
-#include "killing-cons.tcc"
-#include "simultaneous-music-iterator.hh"
-#include "sequential-music-iterator.hh"
-#include "request-chord-iterator.hh"
-
-Moment
-Simultaneous_music::length_mom () const
-{
- return maximum_length ();
-}
-
-Simultaneous_music::Simultaneous_music (SCM head)
- : Music_sequence (head)
-{
- set_mus_property ("iterator-ctor",
- Simultaneous_music_iterator::constructor_cxx_function);
-}
-
-Simultaneous_music::Simultaneous_music ()
- : Music_sequence ()
-{
- set_mus_property ("iterator-ctor",
- Simultaneous_music_iterator::constructor_cxx_function);
-
-}
-
-Sequential_music::Sequential_music (SCM head)
- : Music_sequence (head)
-{
- set_mus_property ("iterator-ctor",
- Sequential_music_iterator::constructor_cxx_function);
-}
-Sequential_music::Sequential_music ()
- : Music_sequence ()
-{
- set_mus_property ("iterator-ctor",
- Sequential_music_iterator::constructor_cxx_function);
-}
-
-
-Moment
-Sequential_music::length_mom () const
-{
- return cumulative_length ();
-}
-
-Pitch
-Simultaneous_music::to_relative_octave (Pitch p)
-{
- return do_relative_octave (p, true);
-}
-
-Request_chord::Request_chord (SCM s)
- : Simultaneous_music (s)
-{
- set_mus_property ("iterator-ctor",
- Request_chord_iterator::constructor_cxx_function);
-}
-
-Request_chord::Request_chord ()
-{
- set_mus_property ("iterator-ctor",
- Request_chord_iterator::constructor_cxx_function);
-}
-
-Pitch
-Request_chord::to_relative_octave (Pitch last)
-{
- for (SCM s = music_list (); gh_pair_p (s); s = gh_cdr (s))
- {
- Music * mus = unsmob_music (gh_car (s));
- if (Melodic_req *m= dynamic_cast <Melodic_req *> (mus))
- {
- Pitch pit = *unsmob_pitch (m->get_mus_property ("pitch"));
-
- pit.to_relative_octave (last);
- m->set_mus_property ("pitch", pit.smobbed_copy ());
-
- return pit;
- }
- }
- return last;
-}
-
-
-
-ADD_MUSIC (Simultaneous_music);
-ADD_MUSIC (Sequential_music);
-ADD_MUSIC (Request_chord);
Translator_def *tp = unsmob_translator_def (transdef);
assert (tp);
- String s = ly_scm2string (tp->type_name_);
+
+ String s;
+ if (gh_string_p (tp->type_name_))
+ s = ly_scm2string (tp->type_name_);
+
translator_p_dict_p_->set (s, transdef);
}
int
Music_output_def::print_smob (SCM s, SCM p, scm_print_state *)
{
- scm_puts ("#<Music_output_def>", p);
+ Translator_def * def = unsmob_translator_def (s);
+ scm_puts ("#<Music_output_def ", p);
+ scm_write (def->type_name_, p);
+ scm_puts (">", p);
return 1;
}
Moment
Music_sequence::cumulative_length () const
{
- Moment last=0;
+ Moment cumulative;
+
+ Moment last_len ;
for (SCM s = music_list (); gh_pair_p (s); s = gh_cdr (s))
- last += unsmob_music (gh_car (s))->length_mom ();
- return last;
+ {
+ Moment l = unsmob_music (gh_car (s))->length_mom ();
+ if (last_len.grace_mom_ && l.main_part_)
+ {
+ last_len.grace_mom_ = Rational (0);
+ }
+ cumulative += last_len;
+ last_len = l;
+ }
+
+ last_len.grace_mom_ = Rational (0);
+ cumulative += last_len;
+
+ return cumulative;
}
Pitch
{
}
+
+Moment
+Music_sequence::minimum_start () const
+{
+ Moment m;
+
+ for (SCM s = music_list (); gh_pair_p (s); s = gh_cdr (s))
+ {
+ m = m <? unsmob_music (gh_car (s))->start_mom ();
+ }
+ return m;
+}
+
+Moment
+Music_sequence::first_start () const
+{
+ Moment m;
+
+ for (SCM s = music_list (); gh_pair_p (s); s = gh_cdr (s))
+ {
+ Music * mus = unsmob_music (gh_car (s));
+ Moment l = mus->length_mom ();
+
+ if (l.main_part_)
+ return mus->start_mom ();
+ else if (l.grace_mom_)
+ {
+ m.grace_mom_ = - l.grace_mom_;
+ return m;
+ }
+ }
+ return m;
+}
+
Music_wrapper_iterator::construct_children ()
{
child_iter_p_ =
- get_iterator_p (dynamic_cast<Music_wrapper const*> (music_l_)->element ());
+ get_iterator_p (dynamic_cast<Music_wrapper const*> (music_l ())->element ());
}
bool
{
}
+
+Moment
+Music_wrapper::start_mom () const
+{
+ return element ()->start_mom ();
+}
return 0;
}
+Moment
+Music::start_mom () const
+{
+ Moment m ;
+ return m;
+}
+
void
print_alist (SCM a, SCM port)
{
{
Duration *d = unsmob_duration (get_mus_property ("duration"));
- set_mus_property ("duration", d ->compressed (m).smobbed_copy ());
+ set_mus_property ("duration", d ->compressed (m.main_part_).smobbed_copy ());
}
bool
{"elementdescriptions", ELEMENTDESCRIPTIONS},
{"font", FONT},
{"grace", GRACE},
+ {"ngrace", NGRACE},
{"glissando", GLISSANDO},
{"header", HEADER},
{"in", IN_T},
--- /dev/null
+/*
+ new-grace-music.cc -- implement New-Grace_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "new-grace-music.hh"
+#include "new-grace-iterator.hh"
+
+#include "grace-iterator.hh"
+#include "global-translator.hh"
+#include "warn.hh"
+
+
+New_grace_iterator::~New_grace_iterator ()
+{
+ // child_iter_p_ = 0;
+}
+
+
+void
+New_grace_iterator::process (Moment m )
+{
+ Moment main ;
+ main.main_part_ = m.grace_mom_;
+ Music_wrapper_iterator::process (main);
+}
+
+void
+New_grace_iterator::construct_children ()
+{
+ Music_wrapper_iterator::construct_children ();
+}
+
+
+
+Moment
+New_grace_iterator::pending_moment () const
+{
+ Moment cp =Music_wrapper_iterator::pending_moment();
+
+ Moment pending;
+ pending.grace_mom_ = - music_length_.main_part_ + cp.main_part_;
+
+ return pending;
+}
+
+
+IMPLEMENT_CTOR_CALLBACK (New_grace_iterator);
--- /dev/null
+/*
+ grace-music.cc -- implement New_grace_music
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "new-grace-music.hh"
+#include "new-grace-iterator.hh"
+
+void
+New_grace_music::compress (Moment m)
+{
+ Music_wrapper::compress (m);
+}
+
+Moment
+New_grace_music::length_mom () const
+{
+ Moment l = Music_wrapper::length_mom ();
+ Moment gl;
+ gl.grace_mom_ = l.main_part_ + l.grace_mom_ ;
+ return gl;
+}
+
+
+Moment
+New_grace_music::start_mom () const
+{
+ return Music::start_mom ();
+}
+
+New_grace_music::New_grace_music ()
+{
+ set_mus_property ("iterator-ctor",
+ New_grace_iterator::constructor_cxx_function);
+}
+
+New_grace_music::New_grace_music (SCM p)
+ : Music_wrapper (p)
+{
+ set_mus_property ("iterator-ctor",
+ New_grace_iterator::constructor_cxx_function);
+}
+
+ADD_MUSIC (New_grace_music);
{
if (last_processed_mom_ < Moment (0))
{
- bool accepted = try_music (music_l_);
+ bool accepted = try_music (music_l ());
if (!accepted)
- music_l_->origin ()->warning (_f ("Junking request: `%s'",
- classname (music_l_)));
+ music_l ()->origin ()->warning (_f ("Junking request: `%s'",
+ classname (music_l ())));
}
skip (m);
#include "paper-score.hh"
#include "debug.hh"
#include "axis-group-interface.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
void
Paper_column::do_break_processing ()
%token EXTENDER
%token FONT
%token GLISSANDO
-%token GRACE
+%token GRACE NGRACE
%token HEADER
%token HYPHEN
%token IN_T
chm->set_spot (*$3->origin ());
}
| GRACE Music {
- $$ = new Grace_music (SCM_EOL);
+#if 1
+ /*
+ The other version is for easier debugging of
+ Sequential_music_iterator in combination with grace notes.
+ */
+
+ SCM start = THIS->lexer_p_->lookup_identifier ("startGraceMusic");
+ SCM stop = THIS->lexer_p_->lookup_identifier ("stopGraceMusic");
+ Music *startm = unsmob_music (start);
+ Music *stopm = unsmob_music (stop);
+
+ SCM ms = SCM_EOL;
+ if (stopm) {
+ stopm = stopm->clone ();
+ ms = gh_cons (stopm->self_scm (), ms);
+ scm_unprotect_object (stopm->self_scm ());
+ }
+ ms = gh_cons ($2->self_scm (), ms);
+ scm_unprotect_object ($2->self_scm());
+ if (startm) {
+ startm = startm->clone ();
+ ms = gh_cons (startm->self_scm () , ms);
+ scm_unprotect_object (startm->self_scm ());
+ }
+
+ Music* seq = new Sequential_music (SCM_EOL);
+ seq->set_mus_property ("elements", ms);
+
+ $$ = new New_grace_music (SCM_EOL);
+ $$->set_mus_property ("element", seq->self_scm ());
+ scm_unprotect_object (seq->self_scm ());
+#else
+ $$ = new New_grace_music (SCM_EOL);
$$->set_mus_property ("element", $2->self_scm ());
scm_unprotect_object ($2->self_scm ());
+#endif
+
}
| CONTEXT string '=' string Music {
$$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
}
| multiplied_duration '*' FRACTION {
- Moment m (gh_scm2int (gh_car ($3)), gh_scm2int (gh_cdr ($3)));
+ Rational m (gh_scm2int (gh_car ($3)), gh_scm2int (gh_cdr ($3)));
$$ = unsmob_duration ($$)->compressed (m).smobbed_copy ();
}
void
Part_combine_music_iterator::construct_children ()
{
- Part_combine_music const * m = dynamic_cast<Part_combine_music const*> (music_l_);
+ Part_combine_music const * m = dynamic_cast<Part_combine_music const*> (music_l ());
first_iter_p_ = get_iterator_p (m->first_l ());
second_iter_p_ = get_iterator_p (m->second_l ());
Part_combine_music_iterator::get_state (Moment)
{
int state = UNKNOWN;
- Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
+ Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l ());
String w = ly_scm2string (p->get_mus_property ("what"));
Moment now = pending_moment ();
- if (!now.mod_rat (change_mom))
+ if (!now.main_part_.mod_rat (change_mom.main_part_))
{
SCM interval = SCM_BOOL_F;
if (first_until_ < now)
else
state = state_;
- Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l_);
+ Part_combine_music const *p = dynamic_cast<Part_combine_music const* > (music_l ());
bool previously_combined_b = first_iter_p_->report_to_l ()->daddy_trans_l_
meas_len = *unsmob_moment (m);
if (body_length_ < meas_len &&
- meas_len.mod_rat (body_length_) == Moment (0,0))
+ meas_len.main_part_.mod_rat (body_length_.main_part_) == Moment (0,0))
repeat_sign_type_ = BEAT;
else if (meas_len == body_length_)
repeat_sign_type_ = MEASURE;
void
Percent_repeat_iterator::construct_children ()
{
- Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l_);
+ Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l ());
finish_mom_ = mus->length_mom ();
child_iter_p_ = get_iterator_p (mus->body ());
}
{
if (!m)
{
- Music_iterator *yeah = try_music (music_l_);
+ Music_iterator *yeah = try_music (music_l ());
if (yeah)
set_translator (yeah->report_to_l ());
else
- music_l_->origin ()->warning ( _ ("no one to print a percent"));
+ music_l ()->origin ()->warning ( _ ("no one to print a percent"));
}
if (child_iter_p_->ok ())
void
Property_iterator::process (Moment m)
{
- SCM sym = music_l_->get_mus_property ("symbol");
+ SCM sym = music_l ()->get_mus_property ("symbol");
if (gh_symbol_p (sym))
{
- SCM val = music_l_->get_mus_property ("value");
+ SCM val = music_l ()->get_mus_property ("value");
bool ok= true;
if (val != SCM_EOL)
ok = type_check_assignment (val, sym, ly_symbol2scm ("translation-type?"));
void
Property_unset_iterator::process (Moment m)
{
- SCM sym = music_l_->get_mus_property ("symbol");
+ SCM sym = music_l ()->get_mus_property ("symbol");
if (gh_symbol_p (sym))
{
report_to_l ()->unset_property (sym);
void
Push_property_iterator::process (Moment m)
{
- SCM syms = music_l_->get_mus_property ("symbols");
- SCM eprop = music_l_->get_mus_property ("grob-property");
- SCM val = music_l_->get_mus_property ("grob-value");
+ SCM syms = music_l ()->get_mus_property ("symbols");
+ SCM eprop = music_l ()->get_mus_property ("grob-property");
+ SCM val = music_l ()->get_mus_property ("grob-value");
- if (to_boolean (music_l_->get_mus_property ("pop-first")))
+ if (to_boolean (music_l ()->get_mus_property ("pop-first")))
Translator_def::apply_pushpop_property (report_to_l (),
syms, eprop, SCM_UNDEFINED);
void
Pop_property_iterator::process (Moment m)
{
- SCM syms = music_l_->get_mus_property ("symbols");
- SCM eprop = music_l_->get_mus_property ("grob-property");
+ SCM syms = music_l ()->get_mus_property ("symbols");
+ SCM eprop = music_l ()->get_mus_property ("grob-property");
Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED);
Simple_music_iterator::process (m);
Request_chord*
Request_chord_iterator::elt_l () const
{
- return (Request_chord*) music_l_;
+ return (Request_chord*) music_l ();
}
SCM
SCM s = SCM_EOL;
if (last_processed_mom_ < Moment (0))
{
- Music_sequence * ms = dynamic_cast<Music_sequence*> (music_l_);
+ Music_sequence * ms = dynamic_cast<Music_sequence*> (music_l ());
for (SCM m = ms->music_list (); gh_pair_p (m); m = gh_cdr (m))
{
{
if (last_processed_mom_ < Moment (0))
{
- for (SCM s = dynamic_cast<Music_sequence *> (music_l_)->music_list ();
+ for (SCM s = dynamic_cast<Music_sequence *> (music_l ())->music_list ();
gh_pair_p (s); s = gh_cdr (s))
{
Music *mus = unsmob_music (gh_car (s));
--- /dev/null
+#include "pitch.hh"
+#include "request-chord-iterator.hh"
+#include "music-list.hh"
+#include "musical-request.hh"
+
+Request_chord::Request_chord (SCM s)
+ : Simultaneous_music (s)
+{
+ set_mus_property ("iterator-ctor",
+ Request_chord_iterator::constructor_cxx_function);
+}
+
+Request_chord::Request_chord ()
+{
+ set_mus_property ("iterator-ctor",
+ Request_chord_iterator::constructor_cxx_function);
+}
+
+
+
+Pitch
+Request_chord::to_relative_octave (Pitch last)
+{
+ for (SCM s = music_list (); gh_pair_p (s); s = gh_cdr (s))
+ {
+ Music * mus = unsmob_music (gh_car (s));
+ if (Melodic_req *m= dynamic_cast <Melodic_req *> (mus))
+ {
+ Pitch pit = *unsmob_pitch (m->get_mus_property ("pitch"));
+
+ pit.to_relative_octave (last);
+ m->set_mus_property ("pitch", pit.smobbed_copy ());
+
+ return pit;
+ }
+ }
+ return last;
+}
+
+Moment
+Request_chord::start_mom () const
+{
+ return Music::start_mom ();
+}
+
+
+
+ADD_MUSIC (Request_chord);
#include "paper-column.hh"
#include "debug.hh"
#include "dimensions.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
Rod::Rod ()
{
SCM
set_lily_option (SCM var, SCM val)
{
+ /*
+ Scheme option usage:
+ lilypond -e "(set-lily-option 'help 0)"
+ */
if (var == ly_symbol2scm ("help"))
{
cout << '\n';
cout << _ ("Scheme options:");
- cout << "help";
- cout << "midi-debug (boolean)";
- cout << "testing-level (int)";
+ cout << '\n';
+ cout << " help (any-symbol)";
+ cout << '\n';
+ cout << " midi-debug (boolean)";
+ cout << '\n';
+ cout << " testing-level (int)";
cout << '\n';
exit (0);
}
#include "translator-def.hh"
+/*
+ TODO: the column creation logic is rather hairy. Revise it.
+ */
Score_engraver::Score_engraver ()
{
scoreline_l_ =0;
}
void
-Score_engraver::make_columns (Moment w)
+Score_engraver::make_columns ()
{
/*
ugh.
*/
- if (!command_column_l_
- || *unsmob_moment (command_column_l_->get_grob_property ("when")) != w)
+ if (!command_column_l_)
+ // || *unsmob_moment (command_column_l_->get_grob_property ("when")) != w)
{
set_columns (new Paper_column (get_property (ly_symbol2scm ("NonMusicalPaperColumn"))),
new Paper_column (get_property (ly_symbol2scm ("PaperColumn"))));
- command_column_l_->set_grob_property ("when", w.smobbed_copy ());
- musical_column_l_->set_grob_property ("when", w.smobbed_copy ());
command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
Grob_info i1 (command_column_l_, 0), i2 (musical_column_l_,0);
Score_engraver::prepare (Moment w)
{
Global_translator::prepare (w);
- make_columns (w);
+ make_columns ();
start_translation_timestep ();
}
check_removal ();
removal_processing ();
+
}
/*
pscore_p_->typeset_line (new Line_of_score (props));
- make_columns (Moment (0));
+ make_columns ();
scoreline_l_ = pscore_p_->line_l_;
-
scoreline_l_->set_bound (LEFT, command_column_l_);
-
command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
Engraver_group_engraver::initialize ();
Score_engraver::finalize ()
{
Engraver_group_engraver::finalize ();
- scoreline_l_->set_bound (RIGHT,command_column_l_);
- command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
+
+ Grob * cc
+ = unsmob_grob (get_property (ly_symbol2scm ("currentCommandColumn")));
+ scoreline_l_->set_bound (RIGHT, cc);
+ cc->set_grob_property ("breakable", SCM_BOOL_T);
typeset_all ();
-
- set_columns (0,0);
}
void
if (! (breaks_i_%8))
progress_indication ("[" + to_str (breaks_i_) + "]");
}
+
+ command_column_l_->set_grob_property ("when", now_mom_.smobbed_copy ());
+ musical_column_l_->set_grob_property ("when", now_mom_.smobbed_copy ());
+
+ scoreline_l_->add_column (command_column_l_);
+ scoreline_l_->add_column (musical_column_l_);
+
+ command_column_l_ = 0;
+ musical_column_l_ = 0;
}
void
Score_engraver::set_columns (Paper_column *new_command_l,
Paper_column *new_musical_l)
{
- Paper_column * news[] = {new_command_l, new_musical_l};
- Paper_column **current[] = {&command_column_l_, &musical_column_l_};
-
- for (int i=00; i< 2; i++)
- {
- if (*current[i])
- {
- scoreline_l_->add_column ((*current[i]));
- }
- if (news[i])
- *current[i] = news[i];
- }
-
+ assert (!command_column_l_ && !musical_column_l_);
+ command_column_l_ = new_command_l;
+ musical_column_l_ = new_musical_l;
+
if (new_musical_l)
set_property ("currentMusicalColumn", new_musical_l->self_scm ());
if (new_command_l)
{
cursor_ = SCM_EOL;
here_mom_ = Moment (0);
-
+ grace_skips_ = 0;
iter_p_ =0;
}
Sequential_music_iterator::Sequential_music_iterator (Sequential_music_iterator const &src)
: Music_iterator (src)
{
+ grace_skips_ = src.grace_skips_;
cursor_ = src.cursor_;
here_mom_ = src.here_mom_;
if (src.iter_p_)
delete iter_p_;
}
+
+Grace_skip *
+get_grace_skips (SCM cursor)
+{
+ Moment here (0);
+ Moment last (here);
+ Grace_skip *head = 0;
+ Grace_skip **tail = &head;
+ bool first = true;
+
+
+ for (; gh_pair_p (cursor); cursor = gh_cdr (cursor))
+ {
+ Music * mus = unsmob_music (gh_car (cursor));
+ Moment l =mus->length_mom ();
+ if (l.main_part_)
+ {
+ first = false;
+ last = here;
+ here += l;
+ }
+ else if(l.grace_mom_ && !first)
+ {
+ assert (!l.main_part_);
+ Grace_skip *p =new Grace_skip;
+ p->start_ = last;
+ p->length_ = (here - last).main_part_;
+ p->grace_length_ = l.grace_mom_;
+ p->next_ = 0;
+ *tail = p;
+ tail = &(*tail)->next_;
+ }
+ }
+ return head;
+}
+
void
Sequential_music_iterator::construct_children ()
{
- cursor_ = dynamic_cast<Music_sequence const*> (music_l_)->music_list ();
+ cursor_ = dynamic_cast<Music_sequence const*> (music_l ())->music_list ();
iter_p_ = gh_pair_p (cursor_) ? get_iterator_p (unsmob_music (gh_car (cursor_))) : 0;
while (iter_p_ && !iter_p_->ok ())
next_element ();
}
+ grace_skips_ = get_grace_skips (cursor_);
+
+ here_mom_ = music_l ()->start_mom ();
+
/*
iter_p_->ok () is tautology, but what the heck.
*/
if (iter_p_ && iter_p_->ok ())
descend_to_child ();
-
}
void
Sequential_music_iterator::next_element ()
{
- here_mom_ += iter_p_->music_length_mom ();
+ Moment len =iter_p_->music_length_mom ();
+ Moment start = iter_p_->music_start_mom ();
+ assert (!grace_skips_ || grace_skips_->start_ >= here_mom_);
+
+ if (len.main_part_ && grace_skips_ && grace_skips_->start_ == here_mom_)
+ {
+ Moment sk;
+ sk.main_part_ = grace_skips_->length_;
+ here_mom_ += sk;
+ here_mom_.grace_mom_ = - grace_skips_->grace_length_;
+
+ Grace_skip * n =grace_skips_->next_;
+ delete grace_skips_;
+ grace_skips_ = n;
+ }
+ else if (len.grace_mom_)
+ {
+ here_mom_.grace_mom_ =0;
+ }
+ else
+ {
+ here_mom_ += len - start;
+ }
+
delete iter_p_;
cursor_ = gh_cdr (cursor_);
return s;
}
/*
- Skip events till UNTIL. We don't do any other side effects (such as
- moving descending to child iterator contexts, because they might
- depend on \context specs and \translator changes being executed
+ Skip events till UNTIL. We don't do any other side effects such as
+ descending to child iterator contexts, because they might depend on
+ \context specs and \translator changes being executed
*/
void
{
while (iter_p_)
{
- iter_p_->process (until - here_mom_);
+ if (grace_skips_ &&
+ grace_skips_->start_ == here_mom_
+ && (grace_skips_->start_ + grace_skips_->length_).main_part_ ==
+ until.main_part_)
+ {
+ /*
+ do the stuff/note/rest preceding a grace.
+ */
+ Moment u = until;
+ u.grace_mom_ = 0;
+ iter_p_->process (u - here_mom_);
+ }
+ else
+ iter_p_->process (until - here_mom_ + iter_p_->music_start_mom ());
/*
if the iter is still OK, there must be events left that have
Moment
Sequential_music_iterator::pending_moment () const
{
- return iter_p_->pending_moment () + here_mom_;
+ Moment cp = iter_p_->pending_moment ();
+
+ if (grace_skips_
+ && here_mom_ == grace_skips_->start_
+ && cp.main_part_ >= grace_skips_->length_)
+ {
+ cp += here_mom_ ;
+ cp.grace_mom_ = - grace_skips_->grace_length_;
+ return cp;
+ }
+ else
+ return cp + here_mom_ - iter_p_->music_start_mom ();
}
--- /dev/null
+
+#include "music-list.hh"
+#include "sequential-music-iterator.hh"
+
+Sequential_music::Sequential_music (SCM head)
+ : Music_sequence (head)
+{
+ set_mus_property ("iterator-ctor",
+ Sequential_music_iterator::constructor_cxx_function);
+}
+Sequential_music::Sequential_music ()
+ : Music_sequence ()
+{
+ set_mus_property ("iterator-ctor",
+ Sequential_music_iterator::constructor_cxx_function);
+}
+
+
+Moment
+Sequential_music::length_mom () const
+{
+ return cumulative_length ();
+}
+ADD_MUSIC (Sequential_music);
+
+Moment
+Sequential_music::start_mom () const
+{
+ return first_start ();
+}
void
Simple_music_iterator::skip (Moment m)
{
- music_l_ = 0;
+ /*
+ docme??!!
+ */
+ // music_l_ = 0;
+
last_processed_mom_ = m;
}
#include "rod.hh"
#include "warn.hh"
#include "column-x-positions.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
#include "dimensions.hh"
Simple_spacer::Simple_spacer ()
for (int i=0; i < cols.size () - 1; i++)
{
SCM spring_params = SCM_UNDEFINED;
- for (SCM s = Spaceable_grob::get_ideal_distances (cols[i]);
+ for (SCM s = cols[i]->get_grob_property ("ideal-distances");
spring_params == SCM_UNDEFINED && gh_pair_p (s);
s = gh_cdr (s))
{
#include "music-list.hh"
#include "killing-cons.tcc"
+
Simultaneous_music_iterator::Simultaneous_music_iterator ()
{
separate_contexts_b_ = false;
Simultaneous_music_iterator::construct_children ()
{
int j = 0;
- Music_sequence const *sim = dynamic_cast<Music_sequence const*> (music_l_);
+ Music_sequence const *sim = dynamic_cast<Music_sequence const*> (music_l ());
SCM i = sim->music_list ();
for (; gh_pair_p (i); i = gh_cdr (i), j++)
--- /dev/null
+
+#include "moment.hh"
+#include "pitch.hh"
+#include "simultaneous-music-iterator.hh"
+#include "music-list.hh"
+
+Moment
+Simultaneous_music::length_mom () const
+{
+ return maximum_length ();
+}
+
+Moment
+Simultaneous_music::start_mom () const
+{
+ return minimum_start ();
+}
+
+
+
+Simultaneous_music::Simultaneous_music (SCM head)
+ : Music_sequence (head)
+{
+ set_mus_property ("iterator-ctor",
+ Simultaneous_music_iterator::constructor_cxx_function);
+}
+
+Simultaneous_music::Simultaneous_music ()
+ : Music_sequence ()
+{
+ set_mus_property ("iterator-ctor",
+ Simultaneous_music_iterator::constructor_cxx_function);
+
+}
+
+Pitch
+Simultaneous_music::to_relative_octave (Pitch p)
+{
+ return do_relative_octave (p, true);
+}
+ADD_MUSIC (Simultaneous_music);
+++ /dev/null
-/*
- spaceable-element.cc -- implement Spaceable_grob
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#include "spaceable-element.hh"
-#include "grob.hh"
-#include "warn.hh"
-
-SCM
-Spaceable_grob::get_minimum_distances (Grob*me)
-{
- return me->get_grob_property ("minimum-distances");
-}
-
-/*todo: merge code of spring & rod?
- */
-void
-Spaceable_grob::add_rod (Grob *me , Grob * p, Real d)
-{
- SCM mins = get_minimum_distances (me);
- SCM newdist = gh_double2scm (d);
- for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
- {
- SCM dist = gh_car (s);
- if (gh_car (dist) == p->self_scm ())
- {
- gh_set_cdr_x (dist, scm_max (gh_cdr (dist),
- newdist));
- return ;
- }
- }
-
- mins = gh_cons (gh_cons (p->self_scm (), newdist), mins);
- me->set_grob_property ("minimum-distances", mins);
-}
-
-void
-Spaceable_grob::add_spring (Grob*me, Grob * p, Real d, Real strength)
-{
- SCM mins = get_ideal_distances (me);
- SCM newdist= gh_double2scm (d);
- for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
- {
- SCM dist = gh_car (s);
- if (gh_car (dist) == p->self_scm ())
- {
- programming_error ("already have that spring");
- return ;
- }
- }
- SCM newstrength= gh_double2scm (strength);
-
- mins = gh_cons (gh_cons (p->self_scm (), gh_cons (newdist, newstrength)), mins);
- me->set_grob_property ("ideal-distances", mins);
-}
-
-SCM
-Spaceable_grob::get_ideal_distances (Grob*me)
-{
- return me->get_grob_property ("ideal-distances");
-}
-
-
-void
-Spaceable_grob::remove_interface (Grob*me)
-{
- me->remove_grob_property ("minimum-distances");
- me->remove_grob_property ("ideal-distances");
- me->remove_grob_property ("dir-list");
-}
-
-
-void
-Spaceable_grob::set_interface (Grob*me)
-{
- me->set_interface (ly_symbol2scm ("spaceable-element-interface"));
-}
--- /dev/null
+/*
+ spaceable-grob.cc -- implement Spaceable_grob
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "spaceable-grob.hh"
+#include "grob.hh"
+#include "warn.hh"
+
+SCM
+Spaceable_grob::get_minimum_distances (Grob*me)
+{
+ return me->get_grob_property ("minimum-distances");
+}
+
+/*todo: merge code of spring & rod?
+ */
+void
+Spaceable_grob::add_rod (Grob *me , Grob * p, Real d)
+{
+ SCM mins = get_minimum_distances (me);
+ SCM newdist = gh_double2scm (d);
+ for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
+ {
+ SCM dist = gh_car (s);
+ if (gh_car (dist) == p->self_scm ())
+ {
+ gh_set_cdr_x (dist, scm_max (gh_cdr (dist),
+ newdist));
+ return ;
+ }
+ }
+
+ mins = gh_cons (gh_cons (p->self_scm (), newdist), mins);
+ me->set_grob_property ("minimum-distances", mins);
+}
+
+void
+Spaceable_grob::add_spring (Grob*me, Grob * p, Real d, Real strength)
+{
+ SCM mins = me->get_grob_property ("ideal-distances");
+ SCM newdist= gh_double2scm (d);
+ for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
+ {
+ SCM dist = gh_car (s);
+ if (gh_car (dist) == p->self_scm ())
+ {
+ programming_error ("already have that spring");
+ return ;
+ }
+ }
+ SCM newstrength= gh_double2scm (strength);
+
+ mins = gh_cons (gh_cons (p->self_scm (), gh_cons (newdist, newstrength)), mins);
+ me->set_grob_property ("ideal-distances", mins);
+}
+
+
+
+void
+Spaceable_grob::remove_interface (Grob*me)
+{
+ me->remove_grob_property ("minimum-distances");
+ me->remove_grob_property ("ideal-distances");
+ me->remove_grob_property ("dir-list");
+}
+
+
+void
+Spaceable_grob::set_interface (Grob*me)
+{
+ me->set_interface (ly_symbol2scm ("spaceable-grob-interface"));
+}
Rhythmic_tuple::time_compare (Rhythmic_tuple const &h1,
Rhythmic_tuple const &h2)
{
- return (h1.end_ - h2.end_).sign ();
+ return (h1.end_ - h2.end_).main_part_.sign ();
}
Spacing_engraver::Spacing_engraver ()
{
if (dynamic_cast<Paper_column*> (cols[i])->musical_b ())
{
+ Moment *when = unsmob_moment (cols[i]->get_grob_property ("when"));
+
+ /*
+ ignore grace notes for shortest notes.
+ */
+ if (when && when->grace_mom_)
+ continue;
+
SCM st = cols[i]->get_grob_property ("shortest-starter-duration");
Moment this_shortest = *unsmob_moment (st);
shortest = shortest <? this_shortest;
- if (!mean_shortest.infty_b ())
+ if (!mean_shortest.main_part_.infty_b ())
{
n++;
mean_shortest += this_shortest;
}
mean_shortest /= n;
-
for (int i= 0; i < cols.size () - 1; i++)
{
Item * l = dynamic_cast<Item*> (cols[i]);
Real dist = get_duration_space (me, shortest_playing_len, shortest);
dist *= (double) (delta_t / shortest_playing_len);
+
+
/*
UGH: KLUDGE!
*/
if (delta_t > Moment (1,32))
dist += stem_dir_correction (me, lc,rc);
+
+
+ Moment *lm = unsmob_moment (lc->get_grob_property ("when"));
+ Moment *rm = unsmob_moment (rc->get_grob_property ("when"));
+
+ if (lm && rm)
+ {
+ if (lm->grace_mom_ && rm->grace_mom_)
+ dist *= 0.5;
+ else if (!rm->grace_mom_ && lm->grace_mom_)
+ dist *= 0.7;
+ }
+
+
return dist;
}
{
spanbar_p_ = new Item (get_property ("SpanBar"));
Span_bar::set_interface (spanbar_p_);
-
- spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
announce_grob (spanbar_p_,0);
me->add_dependency (b);
}
+MAKE_SCHEME_CALLBACK (Span_bar,brew_molecule,1);
+
+/**
+ * Limitations/Bugs:
+ *
+ * (1) Elements from 'me->get_grob_property ("elements")' must be
+ * ordered according to their y coordinates relative to their common
+ * axis group parent. Otherwise, the computation goes mad. (TODO:
+ * apply a sort algorithm that ensures this precondition.) However,
+ * until now, I have seen no case where lily has not fulfilled this
+ * precondition.
+ *
+ * (2) This method depends on bar_engraver not being removed from
+ * staff context. If bar_engraver is removed, the size of the staff
+ * lines is evaluated as 0, which results in a solid span bar line
+ * with faulty y coordinate.
+ */
+
+/*
+ This routine was originally by Juergen Reuter, but it was a on the
+ bulky side. Rewritten by Han-Wen.
+ */
+SCM
+Span_bar::brew_molecule (SCM smobbed_me)
+{
+ Grob *me = unsmob_grob (smobbed_me);
+ SCM first_elt = me->get_grob_property ("elements");
+
+ // compute common refpoint of elements
+ Grob *refp = me;
+ for (SCM elts = first_elt; gh_pair_p (elts); elts = gh_cdr (elts))
+ {
+ SCM smobbed_staff_bar = gh_car (elts);
+ Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
+ refp = staff_bar->common_refpoint (refp, Y_AXIS);
+ }
+
+ // evaluate glyph
+ Span_bar::evaluate_glyph(me);
+ SCM glyph = me->get_grob_property (ly_symbol2scm ("glyph"));
+ String glyph_str = ly_scm2string (glyph);
+
+ // compose span_bar_mol
+ Molecule span_bar_mol;
+ Grob *prev_staff_bar = 0;
+ for (SCM elts = first_elt; gh_pair_p (elts); elts = gh_cdr (elts))
+ {
+ SCM smobbed_staff_bar = gh_car (elts);
+ Grob *staff_bar = unsmob_grob (smobbed_staff_bar);
+ if (prev_staff_bar)
+ {
+ Interval l(prev_staff_bar->extent (refp, Y_AXIS)[UP],
+ staff_bar->extent (refp, Y_AXIS)[DOWN]);
+
+ Molecule interbar
+ = Bar::compound_barline (staff_bar, glyph_str, l.length());
+ interbar.translate_axis (l.center (), Y_AXIS);
+ span_bar_mol.add_molecule (interbar);
+ }
+ prev_staff_bar = staff_bar;
+ }
+
+ span_bar_mol.translate_axis (- me->relative_coordinate (refp, Y_AXIS), Y_AXIS);
+
+ return span_bar_mol.smobbed_copy ();
+}
+
MAKE_SCHEME_CALLBACK (Span_bar,width_callback,2);
SCM
Span_bar::width_callback (SCM element_smob, SCM scm_axis)
/*
urg.
- */
+ */
Molecule m = Bar::compound_barline (se, gl, 40 PT);
return ly_interval2scm (m.extent (X_AXIS));
/*
no need to call Bar::before_line_breaking (), because the info
in ELEMENTS already has been procced by Bar::before_line_breaking ().
- */
+ */
return SCM_UNSPECIFIED;
}
{
/*
This happens if the bars are hara-kiried from under us.
- */
+ */
me->suicide ();
return gh_double2scm (-1);
}
#include "spring.hh"
#include "debug.hh"
#include "item.hh"
-#include "spaceable-element.hh"
+#include "spaceable-grob.hh"
#include "paper-column.hh"
Spring::Spring ()
Interval stem_y (y1,y2);
stem_y.unite (Interval (y2,y1));
+ // dy?
Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
if (Grob *hed = support_head (me))
if (!invisible_b (me))
{
- Real stem_width = gh_scm2double (me->get_grob_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness");
+ Real stem_width = gh_scm2double (me->get_grob_property ("thickness"))
+ // URG
+ * me->paper_l ()->get_var ("stafflinethickness");
+
Molecule ss =Lookup::filledbox (Box (Interval (-stem_width/2, stem_width/2),
Interval (stem_y[DOWN]*dy, stem_y[UP]*dy)));
mol.add_molecule (ss);
CHead_melodic_tuple::time_compare (CHead_melodic_tuple const&h1,
CHead_melodic_tuple const &h2)
{
- return (h1.end_ - h2.end_).sign ();
+ return Moment::compare(h1.end_, h2.end_);
}
CNote_melodic_tuple::time_compare (CNote_melodic_tuple const&h1,
CNote_melodic_tuple const &h2)
{
- return (h1.end_ - h2.end_).sign ();
+ return (h1.end_ - h2.end_).main_part_.sign ();
}
{
if (!m)
{
- Music_iterator *yeah = try_music (music_l_);
+ Music_iterator *yeah = try_music (music_l ());
if (yeah)
set_translator (yeah->report_to_l ());
else
- music_l_->origin ()->warning (_ ("no one to print a tuplet start bracket"));
+ music_l ()->origin ()->warning (_ ("no one to print a tuplet start bracket"));
}
Music_wrapper_iterator::process (m);
Do time bookkeeping
*/
class Timing_engraver : public Timing_translator, public Engraver
-{
+{
protected:
+ /*
+ Needed to know whether we're advancing in grace notes, or not.
+ */
+ Moment last_moment_;
+
virtual void start_translation_timestep ();
virtual void stop_translation_timestep ();
virtual void process_music ();
+
public:
+ Timing_engraver ();
VIRTUAL_COPY_CONS (Translator);
};
+
+Timing_engraver::Timing_engraver ()
+{
+ last_moment_.main_part_ = Rational (-1);
+}
+
ADD_THIS_TRANSLATOR (Timing_engraver);
void
Timing_translator::start_translation_timestep ();
SCM nonauto = get_property ("barNonAuto");
-
+ Moment now = now_mom ();
SCM which = get_property ("whichBar");
+
+ /*
+ Set the first bar of the score?
+ */
if (!gh_string_p (which))
- which = now_mom ()
+ which
+ = (now.main_part_ || now.main_part_ == last_moment_.main_part_)
? SCM_EOL : ly_str02scm ("|");
if (!gh_string_p (which) && !to_boolean (nonauto))
{
SCM always = get_property ("barAlways");
- if (!measure_position ()
- || (to_boolean (always)))
+ Moment mp = measure_position ();
+ if ( (last_moment_.main_part_ != now.main_part_
+ && !mp.main_part_)
+ || (to_boolean (always)))
{
/* should this work, or be junked? See input/bugs/no-bars.ly */
- which=get_property ("defaultBarType");
+ which = get_property ("defaultBarType");
}
}
Timing_engraver::stop_translation_timestep ()
{
Timing_translator::stop_translation_timestep ();
- daddy_trans_l_->set_property ("whichBar", SCM_EOL);
+ daddy_trans_l_->set_property ("whichBar", SCM_EOL);
+ last_moment_ = now_mom ();
}
TODO: change the rest of lily, so communication with
Timing_translator is only done through properties. This means the
class declaration can go here. */
-
bool
Timing_translator::try_music (Music*r)
{
void
Timing_translator::process_music ()
{
- if (check_ && measure_position ())
+ if (check_ && measure_position ().main_part_)
{
check_->origin ()->warning (_f ("barcheck failed at: %s",
measure_position ().str ()));
}
}
-
void
Timing_translator::stop_translation_timestep ()
{
daddy_trans_l_->set_property ("beatLength", Moment (1,4).smobbed_copy ());
}
-Moment
+Rational
Timing_translator::measure_length () const
{
SCM l = get_property ("measureLength");
if (unsmob_moment (l))
- return *unsmob_moment (l);
+ return unsmob_moment (l)->main_part_;
else
- return Moment (1);
+ return Rational (1);
}
-
-
Timing_translator::Timing_translator ()
{
-
}
-
Moment
Timing_translator::measure_position () const
{
if (unsmob_moment (sm))
{
m = *unsmob_moment (sm);
- while (m < Moment (0))
- m += measure_length ();
+ while (m.main_part_ < Rational (0))
+ m.main_part_ += measure_length ();
}
return m;
void
Timing_translator::start_translation_timestep ()
{
- check_ =00;
+ check_ = 0;
Translator *t = this;
Global_translator *global_l =0;
do
SCM cad = get_property ("timing");
bool c= to_boolean (cad);
- Moment len = measure_length ();
- while (c && measposp >= len)
+ Rational len = measure_length ();
+ while (c && measposp.main_part_ >= len)
{
- measposp -= len;
+ measposp.main_part_ -= len;
b ++;
}
#include "debug.hh"
#include "moment.hh"
#include "scm-hash.hh"
-#include "killing-cons.tcc"
#include "translator-def.hh"
Translator_group::Translator_group (Translator_group const&s)
void
Unfolded_repeat_iterator::next_element (bool side_effect)
{
- Repeated_music * repmus =dynamic_cast<Repeated_music *> (music_l_);
+ Repeated_music * repmus =dynamic_cast<Repeated_music *> (music_l ());
delete current_iter_p_;
current_iter_p_ =0;
void
Unfolded_repeat_iterator::construct_children ()
{
- Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l_);
+ Repeated_music * mus =dynamic_cast<Repeated_music *> (music_l ());
alternative_cons_ = (mus->alternatives ())
? mus->alternatives ()->music_list ()
--- /dev/null
+\version "1.3.146"
+% a4.ly
+
+hsize = 210.0 \mm
+vsize = 296.9 \mm
+++ /dev/null
-\version "1.3.146"
-% a4.ly
-
-hsize = 210.0 \mm
-vsize = 296.9 \mm
--- /dev/null
+\version "1.3.146"
+% Symbols needed to print accordion music
+%
+% 2' = T
+% 4' = F
+% 8' = E
+% 16' = S
+%
+
+accDiscant = \script "accDiscant"
+accDiscantF = \script "accDiscantF"
+accDiscantE = \script "accDiscantE"
+accDiscantEh = \script "accDiscantEh"
+accDiscantFE = \script "accDiscantFE"
+accDiscantFEh = \script "accDiscantFEh"
+accDiscantEE = \script "accDiscantEE"
+accDiscantFEE = \script "accDiscantFEE"
+accDiscantEEE = \script "accDiscantEEE"
+accDiscantFEEE = \script "accDiscantFEEE"
+accDiscantS = \script "accDiscantS"
+accDiscantFS = \script "accDiscantFS"
+accDiscantES = \script "accDiscantES"
+accDiscantEhS = \script "accDiscantEhS"
+accDiscantFES = \script "accDiscantFES"
+accDiscantFEhS = \script "accDiscantFEhS"
+accDiscantEES = \script "accDiscantEES"
+accDiscantFEES = \script "accDiscantFEES"
+accDiscantEEES = \script "accDiscantEEES"
+accDiscantFEEES = \script "accDiscantFEEES"
+accDiscantSS = \script "accDiscantSS"
+accDiscantESS = \script "accDiscantESS"
+accDiscantEESS = \script "accDiscantEESS"
+accDiscantEEESS = \script "accDiscantEEESS"
+
+accFreebase = \script "accFreebase"
+accFreebaseF = \script "accFreebaseF"
+accFreebaseE = \script "accFreebaseE"
+accFreebaseFE = \script "accFreebaseFE"
+
+accBayanbase = \script "accBayanbase"
+accBayanbaseT = \script "accBayanbaseT"
+accBayanbaseE = \script "accBayanbaseE"
+accBayanbaseTE = \script "accBayanbaseTE"
+accBayanbaseEE = \script "accBayanbaseEE"
+accBayanbaseTEE = \script "accBayanbaseTEE"
+
+accStdbase = \script "accStdbase"
+accStdbaseFE = \script "accStdbaseFE"
+accStdbaseTFE = \script "accStdbaseTFE"
+accStdbaseMES = \script "accStdbaseMES"
+accStdbaseTFMES = \script "accStdbaseTFMES"
+
+accSB = \script "accSB"
+accBB = \script "accBB"
+accOldEE = \script "accOldEE"
+accOldEES = \script "accOldEES"
+++ /dev/null
-\version "1.3.146"
-% Symbols needed to print accordion music
-%
-% 2' = T
-% 4' = F
-% 8' = E
-% 16' = S
-%
-
-accDiscant = \script "accDiscant"
-accDiscantF = \script "accDiscantF"
-accDiscantE = \script "accDiscantE"
-accDiscantEh = \script "accDiscantEh"
-accDiscantFE = \script "accDiscantFE"
-accDiscantFEh = \script "accDiscantFEh"
-accDiscantEE = \script "accDiscantEE"
-accDiscantFEE = \script "accDiscantFEE"
-accDiscantEEE = \script "accDiscantEEE"
-accDiscantFEEE = \script "accDiscantFEEE"
-accDiscantS = \script "accDiscantS"
-accDiscantFS = \script "accDiscantFS"
-accDiscantES = \script "accDiscantES"
-accDiscantEhS = \script "accDiscantEhS"
-accDiscantFES = \script "accDiscantFES"
-accDiscantFEhS = \script "accDiscantFEhS"
-accDiscantEES = \script "accDiscantEES"
-accDiscantFEES = \script "accDiscantFEES"
-accDiscantEEES = \script "accDiscantEEES"
-accDiscantFEEES = \script "accDiscantFEEES"
-accDiscantSS = \script "accDiscantSS"
-accDiscantESS = \script "accDiscantESS"
-accDiscantEESS = \script "accDiscantEESS"
-accDiscantEEESS = \script "accDiscantEEESS"
-
-accFreebase = \script "accFreebase"
-accFreebaseF = \script "accFreebaseF"
-accFreebaseE = \script "accFreebaseE"
-accFreebaseFE = \script "accFreebaseFE"
-
-accBayanbase = \script "accBayanbase"
-accBayanbaseT = \script "accBayanbaseT"
-accBayanbaseE = \script "accBayanbaseE"
-accBayanbaseTE = \script "accBayanbaseTE"
-accBayanbaseEE = \script "accBayanbaseEE"
-accBayanbaseTEE = \script "accBayanbaseTEE"
-
-accStdbase = \script "accStdbase"
-accStdbaseFE = \script "accStdbaseFE"
-accStdbaseTFE = \script "accStdbaseTFE"
-accStdbaseMES = \script "accStdbaseMES"
-accStdbaseTFMES = \script "accStdbaseTFMES"
-
-accSB = \script "accSB"
-accBB = \script "accBB"
-accOldEE = \script "accOldEE"
-accOldEES = \script "accOldEES"
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.3.146"
+
+
+\include "declarations-init.ly"
+\include "paper16-init.ly"
+
+ \paper{
+ \paperSixteen
+}
+
+
+\maininput
+++ /dev/null
-% Toplevel initialisation file.
-
-\version "1.3.146"
-
-
-\include "declarations.ly"
-\include "paper16.ly"
-
- \paper{
- \paperSixteen
-}
-
-
-\maininput
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.3.146"
+
+
+\include "declarations-init.ly"
+\include "paper16-init.ly"
+
+ \paper {
+ \paperSixteen
+% linewidth = 7.\cm
+ linewidth = 11.\cm
+}
+
+\maininput
+++ /dev/null
-% Toplevel initialisation file.
-
-\version "1.3.146"
-
-
-\include "declarations.ly"
-\include "paper16.ly"
-
- \paper {
- \paperSixteen
-% linewidth = 7.\cm
- linewidth = 11.\cm
-}
-
-\maininput
--- /dev/null
+\version "1.3.146"
+
+% urg!
+%
+\chordmodifiers #`(
+ (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 2 -1 ))
+ ;; urg, not actually a chord-modifier, but it works
+ ;; c7 -> <c bes>, c 7+ -> c b
+ (maj . ,(make-pitch 0 6 1 ))
+ ;; sus4 should delete 2 too...
+ (sus . ,(make-pitch 0 3 0 ))
+)
+
+++ /dev/null
-\version "1.3.146"
-
-% urg!
-%
-\chordmodifiers #`(
- (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 2 -1 ))
- ;; urg, not actually a chord-modifier, but it works
- ;; c7 -> <c bes>, c 7+ -> c b
- (maj . ,(make-pitch 0 6 1 ))
- ;; sus4 should delete 2 too...
- (sus . ,(make-pitch 0 3 0 ))
-)
-
--- /dev/null
+
+\version "1.3.146"
+breve = \duration #(make-duration -1 0)
+longa = \duration #(make-duration -2 0 )
+maxima = \duration #(make-duration -3 0)
+
+\include "nederlands.ly" % dutch
+\include "chord-modifiers-init.ly"
+\include "script-init.ly"
+
+% declarations for standard directions
+left = -1
+right = 1
+up = 1
+down = -1
+start = -1
+stop = 1
+smaller = -1
+bigger = 1
+center=0
+
+break = \penalty #-10000
+noBreak = \penalty #10000
+\include "scale-definitions-init.ly"
+
+melisma = \property Staff.melismaBusy = ##t
+melismaEnd = \property Staff.melismaBusy = ##f
+
+
+\include "engraver-init.ly"
+\include "grace-init.ly"
+
+singleLine = \paper { linewidth = 1. }
+
+% ugh
+\include "midi-init.ly"
+
+papersize = "a4"
+paperfile = \papersize + "-init.ly"
+
+\include "generic-paper-init.ly"
+\include "paper20-init.ly"
+
+
+\include "dynamic-scripts-init.ly"
+\include "spanners-init.ly"
+
+\include "property-init.ly"
+
+
+
+% reset default duration
+unusedEntry = \notes { c4 }
+
+% music = "\melodic\relative c"
+
+++ /dev/null
-
-\version "1.3.146"
-breve = \duration #(make-duration -1 0)
-longa = \duration #(make-duration -2 0 )
-maxima = \duration #(make-duration -3 0)
-
-\include "nederlands.ly" % dutch
-\include "chord-modifiers.ly"
-\include "script.ly"
-
-% declarations for standard directions
-left = -1
-right = 1
-up = 1
-down = -1
-start = -1
-stop = 1
-smaller = -1
-bigger = 1
-center=0
-
-break = \penalty #-10000
-noBreak = \penalty #10000
-\include "scale-definitions.ly"
-
-melisma = \property Staff.melismaBusy = ##t
-melismaEnd = \property Staff.melismaBusy = ##f
-
-
-\include "engraver.ly"
-
-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"
-
-
-
-% reset default duration
-unusedEntry = \notes { c4 }
-
-% music = "\melodic\relative c"
-
--- /dev/null
+% 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.
+
+% 2001/03/25 Rune Zedeler <rune@zedeler.dk>
+
+
+%% TODO: don't pollute global namespace in this way .
+
+
+#(define drum-pitch-names `(
+ (acousticbassdrum bda ,(make-pitch -3 6 0 ))
+ (bassdrum bd ,(make-pitch -2 0 0 ))
+ (hisidestick ssh ,(make-pitch -3 6 2))
+ (sidestick ss ,(make-pitch -2 0 1))
+ (losidestick ssl ,(make-pitch -2 1 -1))
+ (acousticsnare sna ,(make-pitch -2 1 0))
+ (snare sn ,(make-pitch -2 2 -2))
+ (handclap hc ,(make-pitch -2 1 1))
+ (electricsnare sne ,(make-pitch -2 2 0))
+ (lowfloortom tomfl ,(make-pitch -2 3 0))
+ (closedhihat hhc ,(make-pitch -2 3 1))
+ (hihat hh ,(make-pitch -2 4 -1))
+ (highfloortom tomfh ,(make-pitch -2 4 0))
+ (pedalhihat hhp ,(make-pitch -2 4 1))
+ (lowtom toml ,(make-pitch -2 5 0))
+ (openhihat hho ,(make-pitch -2 5 1))
+ (halfopenhihat hhho ,(make-pitch -2 5 1))
+ (lowmidtom tomml ,(make-pitch -2 6 0))
+ (himidtom tommh ,(make-pitch -1 0 0))
+ (crashcymbala cymca ,(make-pitch -1 0 1))
+ (crashcymbal cymc ,(make-pitch -1 1 -1))
+ (hightom tomh ,(make-pitch -1 1 0))
+ (ridecymbala cymra ,(make-pitch -1 1 1))
+ (ridecymbal cymr ,(make-pitch -1 2 -1))
+ (chinesecymbal cymch ,(make-pitch -1 2 0))
+ (ridebell rb ,(make-pitch -1 3 0))
+ (tambourine tamb ,(make-pitch -1 3 1))
+ (splashcymbal cyms ,(make-pitch -1 4 0))
+ (cowbell cb ,(make-pitch -1 4 1))
+ (crashcymbalb cymcb ,(make-pitch -1 5 0))
+ (vibraslap vibs ,(make-pitch -1 5 1))
+ (ridecymbalb cymrb ,(make-pitch -1 6 0))
+ (hibongo boh ,(make-pitch 0 0 0))
+ (lobongo bol ,(make-pitch 0 0 1))
+ (mutehiconga cghm ,(make-pitch 0 1 0))
+ (openhiconga cgho ,(make-pitch 0 1 1))
+ (hiconga cgh ,(make-pitch 0 2 -1))
+ (openloconga cglo ,(make-pitch 0 1 2))
+ (loconga cgl ,(make-pitch 0 2 0))
+ (hitimbale timh ,(make-pitch 0 3 0))
+ (lotimbale timl ,(make-pitch 0 3 1))
+ (hiagogo agh ,(make-pitch 0 4 0))
+ (loagogo agl ,(make-pitch 0 4 1))
+ (cabasa cab ,(make-pitch 0 5 0))
+ (maracas mar ,(make-pitch 0 5 1))
+ (shortwhistle whs ,(make-pitch 0 6 0))
+ (longwhistle whl ,(make-pitch 1 0 0))
+ (shortguiro guis ,(make-pitch 1 0 1))
+ (longguiro guil ,(make-pitch 1 1 0))
+ (guiro gui ,(make-pitch 1 0 2))
+ (claves cl ,(make-pitch 1 1 1))
+ (hiwoodblock wbh ,(make-pitch 1 2 0))
+ (lowoodblock wbl ,(make-pitch 1 3 0))
+ (mutecuica cuim ,(make-pitch 1 3 1))
+ (opencuica cuio ,(make-pitch 1 4 0))
+ (mutetriangle trim ,(make-pitch 1 4 1))
+ (triangle tri ,(make-pitch 1 4 2))
+ (opentriangle trio ,(make-pitch 1 5 0))
+ ;; "transposing" pitches:
+ (oneup ua ,(make-pitch 0 1 0))
+ (twoup ub ,(make-pitch 0 2 0))
+ (threeup uc ,(make-pitch 0 3 0))
+ (fourup ud ,(make-pitch 0 4 0))
+ (fiveup ue ,(make-pitch 0 5 0))
+ (onedown da ,(make-pitch -1 6 0))
+ (twodown db ,(make-pitch -1 5 0))
+ (threedown dc ,(make-pitch -1 4 0))
+ (fourdown dd ,(make-pitch -1 3 0))
+ (fivedown de ,(make-pitch -1 2 0))
+))
+
+#(define drums `(
+ (acousticbassdrum default ,#f ,(make-pitch -1 4 0))
+ (bassdrum default ,#f ,(make-pitch -1 4 0))
+ (sidestick cross ,#f ,(make-pitch 0 1 0))
+ (acousticsnare default ,#f ,(make-pitch 0 1 0))
+ (snare default ,#f ,(make-pitch 0 1 0))
+ (handclap triangle ,#f ,(make-pitch 0 1 0))
+ (electricsnare default ,#f ,(make-pitch 0 1 0))
+ (lowfloortom default ,#f ,(make-pitch -1 3 0))
+ (closedhihat cross "stopped" ,(make-pitch 0 3 0))
+ (hihat cross ,#f ,(make-pitch 0 3 0))
+ (highfloortom default ,#f ,(make-pitch -1 5 0))
+ (pedalhihat cross ,#f ,(make-pitch -1 2 0))
+ (lowtom default ,#f ,(make-pitch 0 0 0))
+ (openhihat cross "open" ,(make-pitch 0 3 0))
+ (halfopenhihat xcircle ,#f ,(make-pitch 0 3 0))
+ (lowmidtom default ,#f ,(make-pitch 0 1 0))
+ (himidtom default ,#f ,(make-pitch 0 2 0))
+ (crashcymbala xcircle ,#f ,(make-pitch 0 5 0))
+ (crashcymbal xcircle ,#f ,(make-pitch 0 5 0))
+ (hightom default ,#f ,(make-pitch 0 4 0))
+ (ridecymbala cross ,#f ,(make-pitch 0 5 0))
+ (ridecymbal cross ,#f ,(make-pitch 0 5 0))
+ (chinesecymbal mensural ,#f ,(make-pitch 0 5 0))
+ (ridebell default ,#f ,(make-pitch 0 5 0))
+ (splashcymbal diamond ,#f ,(make-pitch 0 5 0))
+ (cowbell triangle ,#f ,(make-pitch 0 5 0))
+ (crashcymbalb cross ,#f ,(make-pitch 0 5 0))
+ (vibraslap diamond ,#f ,(make-pitch 0 4 0))
+ (ridecymbalb cross ,#f ,(make-pitch 0 5 0))
+ ))
+
+#(define timbales `(
+ (losidestick cross ,#f ,(make-pitch -1 6 0))
+ (lotimbale default ,#f ,(make-pitch -1 6 0))
+ (cowbell triangle ,#f ,(make-pitch 0 0 0))
+ (hisidestick cross ,#f ,(make-pitch 0 1 0))
+ (hitimbale default ,#f ,(make-pitch 0 1 0))
+ ))
+
+#(define congas `(
+ (losidestick cross ,#f ,(make-pitch -1 6 0))
+ (loconga default ,#f ,(make-pitch -1 6 0))
+ (openloconga default ,"open" ,(make-pitch -1 6 0))
+ (hisidestick cross ,#f ,(make-pitch 0 1 0))
+ (hiconga default ,#f ,(make-pitch 0 1 0))
+ (openhiconga default "open" ,(make-pitch 0 1 0))
+ (mutehiconga default "stopped" ,(make-pitch 0 1 0))
+
+ ))
+
+#(define bongos `(
+ (lobongo default ,#f ,(make-pitch -1 6 0))
+ (hibongo default ,#f ,(make-pitch 0 1 0))
+ ))
+
+#(define guiro `(
+ (shortguiro default "staccato",(make-pitch 0 0 0))
+ (longguiro default "tenuto" ,(make-pitch 0 0 0))
+ (guiro default ,#f ,(make-pitch 0 0 0))
+ ))
+
+#(define triangle `(
+ (opentriangle cross "open" ,(make-pitch 0 0 0))
+ (mutetriangle cross "stopped" ,(make-pitch 0 0 0))
+ (triangle cross ,#f ,(make-pitch 0 0 0))
+ ))
+
+
+
+\pitchnames
+#(append (map (lambda (x) (cons (car x) (caddr x))) drum-pitch-names)
+ (map (lambda (x) (cons (cadr x) (caddr x))) drum-pitch-names)
+ )
+
+
+\version "1.3.146"
+++ /dev/null
-% 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.
-
-% 2001/03/25 Rune Zedeler <rune@zedeler.dk>
-
-
-%% TODO: don't pollute global namespace in this way .
-
-
-#(define drum-pitch-names `(
- (acousticbassdrum bda ,(make-pitch -3 6 0 ))
- (bassdrum bd ,(make-pitch -2 0 0 ))
- (hisidestick ssh ,(make-pitch -3 6 2))
- (sidestick ss ,(make-pitch -2 0 1))
- (losidestick ssl ,(make-pitch -2 1 -1))
- (acousticsnare sna ,(make-pitch -2 1 0))
- (snare sn ,(make-pitch -2 2 -2))
- (handclap hc ,(make-pitch -2 1 1))
- (electricsnare sne ,(make-pitch -2 2 0))
- (lowfloortom tomfl ,(make-pitch -2 3 0))
- (closedhihat hhc ,(make-pitch -2 3 1))
- (hihat hh ,(make-pitch -2 4 -1))
- (highfloortom tomfh ,(make-pitch -2 4 0))
- (pedalhihat hhp ,(make-pitch -2 4 1))
- (lowtom toml ,(make-pitch -2 5 0))
- (openhihat hho ,(make-pitch -2 5 1))
- (halfopenhihat hhho ,(make-pitch -2 5 1))
- (lowmidtom tomml ,(make-pitch -2 6 0))
- (himidtom tommh ,(make-pitch -1 0 0))
- (crashcymbala cymca ,(make-pitch -1 0 1))
- (crashcymbal cymc ,(make-pitch -1 1 -1))
- (hightom tomh ,(make-pitch -1 1 0))
- (ridecymbala cymra ,(make-pitch -1 1 1))
- (ridecymbal cymr ,(make-pitch -1 2 -1))
- (chinesecymbal cymch ,(make-pitch -1 2 0))
- (ridebell rb ,(make-pitch -1 3 0))
- (tambourine tamb ,(make-pitch -1 3 1))
- (splashcymbal cyms ,(make-pitch -1 4 0))
- (cowbell cb ,(make-pitch -1 4 1))
- (crashcymbalb cymcb ,(make-pitch -1 5 0))
- (vibraslap vibs ,(make-pitch -1 5 1))
- (ridecymbalb cymrb ,(make-pitch -1 6 0))
- (hibongo boh ,(make-pitch 0 0 0))
- (lobongo bol ,(make-pitch 0 0 1))
- (mutehiconga cghm ,(make-pitch 0 1 0))
- (openhiconga cgho ,(make-pitch 0 1 1))
- (hiconga cgh ,(make-pitch 0 2 -1))
- (openloconga cglo ,(make-pitch 0 1 2))
- (loconga cgl ,(make-pitch 0 2 0))
- (hitimbale timh ,(make-pitch 0 3 0))
- (lotimbale timl ,(make-pitch 0 3 1))
- (hiagogo agh ,(make-pitch 0 4 0))
- (loagogo agl ,(make-pitch 0 4 1))
- (cabasa cab ,(make-pitch 0 5 0))
- (maracas mar ,(make-pitch 0 5 1))
- (shortwhistle whs ,(make-pitch 0 6 0))
- (longwhistle whl ,(make-pitch 1 0 0))
- (shortguiro guis ,(make-pitch 1 0 1))
- (longguiro guil ,(make-pitch 1 1 0))
- (guiro gui ,(make-pitch 1 0 2))
- (claves cl ,(make-pitch 1 1 1))
- (hiwoodblock wbh ,(make-pitch 1 2 0))
- (lowoodblock wbl ,(make-pitch 1 3 0))
- (mutecuica cuim ,(make-pitch 1 3 1))
- (opencuica cuio ,(make-pitch 1 4 0))
- (mutetriangle trim ,(make-pitch 1 4 1))
- (triangle tri ,(make-pitch 1 4 2))
- (opentriangle trio ,(make-pitch 1 5 0))
- ;; "transposing" pitches:
- (oneup ua ,(make-pitch 0 1 0))
- (twoup ub ,(make-pitch 0 2 0))
- (threeup uc ,(make-pitch 0 3 0))
- (fourup ud ,(make-pitch 0 4 0))
- (fiveup ue ,(make-pitch 0 5 0))
- (onedown da ,(make-pitch -1 6 0))
- (twodown db ,(make-pitch -1 5 0))
- (threedown dc ,(make-pitch -1 4 0))
- (fourdown dd ,(make-pitch -1 3 0))
- (fivedown de ,(make-pitch -1 2 0))
-))
-
-#(define drums `(
- (acousticbassdrum default ,#f ,(make-pitch -1 4 0))
- (bassdrum default ,#f ,(make-pitch -1 4 0))
- (sidestick cross ,#f ,(make-pitch 0 1 0))
- (acousticsnare default ,#f ,(make-pitch 0 1 0))
- (snare default ,#f ,(make-pitch 0 1 0))
- (handclap triangle ,#f ,(make-pitch 0 1 0))
- (electricsnare default ,#f ,(make-pitch 0 1 0))
- (lowfloortom default ,#f ,(make-pitch -1 3 0))
- (closedhihat cross "stopped" ,(make-pitch 0 3 0))
- (hihat cross ,#f ,(make-pitch 0 3 0))
- (highfloortom default ,#f ,(make-pitch -1 5 0))
- (pedalhihat cross ,#f ,(make-pitch -1 2 0))
- (lowtom default ,#f ,(make-pitch 0 0 0))
- (openhihat cross "open" ,(make-pitch 0 3 0))
- (halfopenhihat xcircle ,#f ,(make-pitch 0 3 0))
- (lowmidtom default ,#f ,(make-pitch 0 1 0))
- (himidtom default ,#f ,(make-pitch 0 2 0))
- (crashcymbala xcircle ,#f ,(make-pitch 0 5 0))
- (crashcymbal xcircle ,#f ,(make-pitch 0 5 0))
- (hightom default ,#f ,(make-pitch 0 4 0))
- (ridecymbala cross ,#f ,(make-pitch 0 5 0))
- (ridecymbal cross ,#f ,(make-pitch 0 5 0))
- (chinesecymbal mensural ,#f ,(make-pitch 0 5 0))
- (ridebell default ,#f ,(make-pitch 0 5 0))
- (splashcymbal diamond ,#f ,(make-pitch 0 5 0))
- (cowbell triangle ,#f ,(make-pitch 0 5 0))
- (crashcymbalb cross ,#f ,(make-pitch 0 5 0))
- (vibraslap diamond ,#f ,(make-pitch 0 4 0))
- (ridecymbalb cross ,#f ,(make-pitch 0 5 0))
- ))
-
-#(define timbales `(
- (losidestick cross ,#f ,(make-pitch -1 6 0))
- (lotimbale default ,#f ,(make-pitch -1 6 0))
- (cowbell triangle ,#f ,(make-pitch 0 0 0))
- (hisidestick cross ,#f ,(make-pitch 0 1 0))
- (hitimbale default ,#f ,(make-pitch 0 1 0))
- ))
-
-#(define congas `(
- (losidestick cross ,#f ,(make-pitch -1 6 0))
- (loconga default ,#f ,(make-pitch -1 6 0))
- (openloconga default ,"open" ,(make-pitch -1 6 0))
- (hisidestick cross ,#f ,(make-pitch 0 1 0))
- (hiconga default ,#f ,(make-pitch 0 1 0))
- (openhiconga default "open" ,(make-pitch 0 1 0))
- (mutehiconga default "stopped" ,(make-pitch 0 1 0))
-
- ))
-
-#(define bongos `(
- (lobongo default ,#f ,(make-pitch -1 6 0))
- (hibongo default ,#f ,(make-pitch 0 1 0))
- ))
-
-#(define guiro `(
- (shortguiro default "staccato",(make-pitch 0 0 0))
- (longguiro default "tenuto" ,(make-pitch 0 0 0))
- (guiro default ,#f ,(make-pitch 0 0 0))
- ))
-
-#(define triangle `(
- (opentriangle cross "open" ,(make-pitch 0 0 0))
- (mutetriangle cross "stopped" ,(make-pitch 0 0 0))
- (triangle cross ,#f ,(make-pitch 0 0 0))
- ))
-
-
-
-\pitchnames
-#(append (map (lambda (x) (cons (car x) (caddr x))) drum-pitch-names)
- (map (lambda (x) (cons (cadr x) (caddr x))) drum-pitch-names)
- )
-
-
-\version "1.3.146"
--- /dev/null
+\version "1.3.146"
+
+%
+% declare the standard dynamic identifiers.
+%
+ppppp = \dynamicscript #"ppppp"
+pppp = \dynamicscript #"pppp"
+ppp = \dynamicscript #"ppp"
+pp = \dynamicscript #"pp"
+p = \dynamicscript #"p"
+mp = \dynamicscript #"mp"
+mf = \dynamicscript #"mf"
+f = \dynamicscript #"e" % see feta-din layout
+ff = \dynamicscript #"ff"
+fff = \dynamicscript #"fff"
+ffff = \dynamicscript #"ffff"
+fp = \dynamicscript #"fp"
+
+sf = \dynamicscript #"sf"
+sfp = \dynamicscript #"sfp"
+sff = \dynamicscript #"sff"
+sfz = \dynamicscript #"sfz"
+fz = \dynamicscript #"fz"
+sp = \dynamicscript #"sp"
+spp = \dynamicscript #"spp"
+rfz = \dynamicscript #"rfz"
+
+++ /dev/null
-\version "1.3.146"
-
-%
-% declare the standard dynamic identifiers.
-%
-ppppp = \dynamicscript #"ppppp"
-pppp = \dynamicscript #"pppp"
-ppp = \dynamicscript #"ppp"
-pp = \dynamicscript #"pp"
-p = \dynamicscript #"p"
-mp = \dynamicscript #"mp"
-mf = \dynamicscript #"mf"
-f = \dynamicscript #"e" % see feta-din layout
-ff = \dynamicscript #"ff"
-fff = \dynamicscript #"fff"
-ffff = \dynamicscript #"ffff"
-fp = \dynamicscript #"fp"
-
-sf = \dynamicscript #"sf"
-sfp = \dynamicscript #"sfp"
-sff = \dynamicscript #"sff"
-sfz = \dynamicscript #"sfz"
-fz = \dynamicscript #"fz"
-sp = \dynamicscript #"sp"
-spp = \dynamicscript #"spp"
-rfz = \dynamicscript #"rfz"
-
--- /dev/null
+\version "1.3.146"
+
+%
+% setup for Request->Element conversion. Guru-only
+%
+
+StaffContext=\translator {
+ \type "Engraver_group_engraver"
+ \name Staff
+ \consists "Output_property_engraver"
+ Generic_property_list = #generic-staff-properties
+
+ \consists "Bar_engraver"
+ % Bar_engraver must be first so default bars aren't overwritten
+% with empty ones.
+ \consists "Font_size_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 "Instrument_name_engraver"
+
+ \consistsend "Axis_group_engraver"
+
+ MinimumVerticalExtent = #'(-4 . 4)
+ ExtraVerticalExtent = ##f
+ VerticalExtent = ##f
+
+ % explicitly set instrument, so we don't get
+ % weird effects when doing instrument names for
+ % piano staffs
+
+ instrument = ##f
+ instr = ##f
+
+ \accepts "Voice"
+}
+
+
+StaffContainerContext = \translator {
+ \type Engraver_group_engraver
+ \consists "Axis_group_engraver"
+ MinimumVerticalExtent = ##f
+ ExtraVerticalExtent = ##f
+ VerticalExtent = ##f
+
+ \accepts Staff
+ \name StaffContainer
+}
+
+InnerChoirStaffContext = \translator {
+ \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"
+}
+ChoirStaffContext = \translator {
+ \InnerChoirStaffContext
+ \name ChoirStaff
+ \accepts "InnerChoirStaff"
+ \accepts "InnerStaffGroup"
+}
+
+
+RhythmicStaffContext=\translator{
+ \type "Engraver_group_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"
+
+ 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"
+}
+
+
+VoiceContext = \translator {
+ \type "Engraver_group_engraver"
+ \name Voice
+
+ Generic_property_list = #generic-voice-properties
+ \consists "Font_size_engraver"
+
+ % must come before all
+ \consists "Voice_devnull_engraver"
+ \consists "Output_property_engraver"
+ \consists "Arpeggio_engraver"
+ \consists "Multi_measure_rest_engraver"
+ \consists "Text_spanner_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"
+
+%{
+ 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 "A2_engraver"
+
+ \consists "Skip_req_swallow_translator"
+ \accepts Thread % bug if you leave out this!
+}
+
+ThreadContext = \translator{
+ \type Engraver_group_engraver
+ \name Thread
+
+ \consists "Font_size_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
+}
+
+GrandStaffContext=\translator{
+ \type "Engraver_group_engraver"
+ \name GrandStaff
+ \consists "Span_bar_engraver"
+ \consists "Span_arpeggio_engraver"
+ \consists "System_start_delimiter_engraver"
+ SystemStartDelimiter \override #'glyph = #'brace
+
+ Generic_property_list = #generic-grand-staff-properties
+ \accepts "Staff"
+}
+
+PianoStaffContext = \translator{
+ \GrandStaffContext
+ \name "PianoStaff"
+
+ \consists "Vertical_align_engraver"
+ \consists "Instrument_name_engraver"
+
+ instrument = ##f
+ instr = ##f
+
+ verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
+ VerticalAlignment \override #'forced-distance = #12
+ VerticalAlignment \override #'self-alignment-Y = #0
+% \consistsend "Axis_group_engraver"
+}
+
+InnerStaffGroupContext= \translator {
+ \type "Engraver_group_engraver"
+ \name InnerStaffGroup
+
+ \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"
+
+ \accepts "Lyrics"
+ \accepts "ChordNames"
+}
+StaffGroupContext = \translator {
+ \InnerStaffGroupContext
+ \name StaffGroup
+ \accepts "InnerChoirStaff"
+ \accepts "ChoirStaff"
+ \accepts "InnerStaffGroup"
+}
+
+
+% UGH! JUNKME
+LyricsVoiceContext= \translator{
+ \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 = #".,:!?\""
+
+}
+NoteNamesContext = \translator {
+ \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"
+}
+
+LyricsContext = \translator {
+ \type "Engraver_group_engraver"
+ \name Lyrics
+ \consists Vertical_align_engraver %need this for getting folded repeats right.
+ Generic_property_list = #generic-lyrics-properties
+
+ \consistsend "Axis_group_engraver"
+ MinimumVerticalExtent = ##f
+ ExtraVerticalExtent = ##f
+ VerticalExtent = ##f
+
+ \accepts "LyricsVoice"
+}
+
+
+ChordNamesContext = \translator {
+ \type "Engraver_group_engraver"
+ \name ChordNames
+
+ Generic_property_list = #generic-chord-staff-properties
+
+
+ \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
+
+ VerticalAxisGroup \override #'invisible-staff = ##t
+ }
+
+
+
+StupidScore = \translator {
+ \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"
+}
+%{
+ The HaraKiriStaffContexts doesn't override \name,
+ so it is still named `Staff'.
+
+ %\translator { \HaraKiriStaffContext }
+%}
+
+
+
+
+ScoreContext = \translator {
+ \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"
+
+ soloText = #"Solo"
+ soloIIText = #"Solo II"
+ aDueText = #"a2"
+ soloADue = ##t
+ splitInterval = #'(0 . 1)
+ changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
+
+ barAuto = ##t
+ voltaVisibility = ##t
+ % name, glyph id, clef position
+ % where is c0 in this clef?
+
+ clefGlyph = #"clefs-G"
+ clefPosition = #-2
+ centralCPosition = #-6
+
+ automaticPhrasing = ##t
+ alignmentReference = #-1 % \down
+ defaultBarType = #"|"
+
+ explicitClefVisibility = #all-visible
+ explicitKeySignatureVisibility = #all-visible
+
+ scriptDefinitions = #default-script-alist
+
+ verticalAlignmentChildCallback = #Align_interface::alignment_callback
+
+ pedalSustainStrings = #'("Ped." "*Ped." "*")
+ pedalUnaCordaStrings = #'("una corda" "" "tre corde")
+ pedalSostenutoStrings = #'() % FIXME
+
+ tupletNumberFormatFunction = #denominator-tuplet-formatter
+
+ keyAccidentalOrder = #'(
+ (6 . -1) (2 . -1) (5 . -1 ) (1 . -1) (4 . -1) (0 . -1) (3 . -1)
+ (3 . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
+ )
+ breakAlignOrder = #'(
+ Instrument_name
+ Left_edge_item
+ Span_bar
+ Breathing_sign
+ Clef_item
+ Key_item
+ Staff_bar
+ Time_signature
+ Custos
+ )
+
+
+ \elementdescriptions #all-grob-descriptions
+}
+
+OrchestralScoreContext= \translator {
+ \ScoreContext
+}
+EasyNotation = \translator {
+ \ScoreContext
+ NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
+ easyPlay = ##t
+}
+
+% retain for compatibility reasons.
+GraceContext = \translator {
+ \type "Engraver_group_engraver"
+}
+++ /dev/null
-\version "1.3.146"
-
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-StaffContext=\translator {
- \type "Engraver_group_engraver"
- \name Staff
- \consists "Output_property_engraver"
- Generic_property_list = #generic-staff-properties
- \consists "Property_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 "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 "Instrument_name_engraver"
-
- \consistsend "Axis_group_engraver"
-
- MinimumVerticalExtent = #'(-4 . 4)
- ExtraVerticalExtent = ##f
- VerticalExtent = ##f
-
- % explicitly set instrument, so we don't get
- % weird effects when doing instrument names for
- % piano staffs
-
- instrument = ##f
- instr = ##f
-
- \accepts "Voice"
-}
-
-
-StaffContainerContext = \translator {
- \type Engraver_group_engraver
- \consists "Axis_group_engraver"
- MinimumVerticalExtent = ##f
- ExtraVerticalExtent = ##f
- VerticalExtent = ##f
-
- \accepts Staff
- \name StaffContainer
-}
-
-InnerChoirStaffContext = \translator {
- \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"
-}
-ChoirStaffContext = \translator {
- \InnerChoirStaffContext
- \name ChoirStaff
- \accepts "InnerChoirStaff"
- \accepts "InnerStaffGroup"
-}
-
-
-RhythmicStaffContext=\translator{
- \type "Engraver_group_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"
-
- 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"
-}
-
-
-VoiceContext = \translator {
- \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 "Multi_measure_rest_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 "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
-}
-
-GraceContext=\translator {
- \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 "Auto_beam_engraver"
- \consists "Align_note_column_engraver"
-
- \consists "Rhythmic_column_engraver"
-
- \consists "Dynamic_engraver"% in Grace ???
- \consists "Text_engraver" % in Grace ???
-
- \consists "Property_engraver"
-
- Stem \override #'flag-style = #"grace"
- Stem \override #'stem-length = #6.0
- Stem \override #'direction = #1
-
- NoteHead \override #'font-relative-size = #-1
- Stem \override #'font-relative-size = #-1
- Stem \override #'stem-shorten = #'(0)
- Beam \override #'font-relative-size = #-1
- TextScript \override #'font-relative-size = #-1
- Slur \override #'font-relative-size = #-1
- Accidentals \override #'font-relative-size = #-1
- Beam \override #'thickness = #0.3
- Beam \override #'space-function = #(lambda (x) 0.5)
-
- Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
- Stem \override #'beamed-lengths =
- #'(0.0 2.5 2.0 1.5)
- Stem \override #'beamed-minimum-lengths
- = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
-
- weAreGraceContext = ##t
- graceAccidentalSpace= #1.5 % in staff space
-}
-
-ThreadContext = \translator{
- \type Engraver_group_engraver
- \name Thread
-
- \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"
-}
-
-GrandStaffContext=\translator{
- \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"
- Generic_property_list = #generic-grand-staff-properties
- \accepts "Staff"
-}
-
-PianoStaffContext = \translator{
- \GrandStaffContext
- \name "PianoStaff"
-
- \consists "Vertical_align_engraver"
- \consists "Instrument_name_engraver"
-
- instrument = ##f
- instr = ##f
-
- verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
- VerticalAlignment \override #'forced-distance = #12
- VerticalAlignment \override #'self-alignment-Y = #0
-% \consistsend "Axis_group_engraver"
-}
-
-InnerStaffGroupContext= \translator {
- \type "Engraver_group_engraver"
- \name InnerStaffGroup
-
- \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"
-
- \accepts "Lyrics"
- \accepts "ChordNames"
-}
-StaffGroupContext = \translator {
- \InnerStaffGroupContext
- \name StaffGroup
- \accepts "InnerChoirStaff"
- \accepts "ChoirStaff"
- \accepts "InnerStaffGroup"
-}
-
-
-% UGH! JUNKME
-LyricsVoiceContext= \translator{
- \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 = #".,:!?\""
-
-}
-NoteNamesContext = \translator {
- \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"
-}
-
-LyricsContext = \translator {
- \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"
- MinimumVerticalExtent = ##f
- ExtraVerticalExtent = ##f
- VerticalExtent = ##f
-
- \accepts "LyricsVoice"
-}
-
-
-ChordNamesContext = \translator {
- \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"
- MinimumVerticalExtent = ##f
- ExtraVerticalExtent = ##f
- VerticalExtent = ##f
-
- VerticalAxisGroup \override #'invisible-staff = ##t
- }
-
-
-
-StupidScore = \translator {
- \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"
-}
-%{
- The HaraKiriStaffContexts doesn't override \name,
- so it is still named `Staff'.
-
- %\translator { \HaraKiriStaffContext }
-%}
-
-
-
-
-ScoreContext = \translator {
- \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"
-
- soloText = #"Solo"
- soloIIText = #"Solo II"
- aDueText = #"a2"
- soloADue = ##t
- splitInterval = #'(0 . 1)
- changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
-
- barAuto = ##t
- voltaVisibility = ##t
- % name, glyph id, clef position
- % where is c0 in this clef?
-
- clefGlyph = #"clefs-G"
- clefPosition = #-2
- centralCPosition = #-6
-
- automaticPhrasing = ##t
- alignmentReference = #-1 % \down
- defaultBarType = #"|"
-
- explicitClefVisibility = #all-visible
- explicitKeySignatureVisibility = #all-visible
-
- scriptDefinitions = #default-script-alist
-
- verticalAlignmentChildCallback = #Align_interface::alignment_callback
-
- pedalSustainStrings = #'("Ped." "*Ped." "*")
- pedalUnaCordaStrings = #'("una corda" "" "tre corde")
- pedalSostenutoStrings = #'() % FIXME
-
- tupletNumberFormatFunction = #denominator-tuplet-formatter
-
- keyAccidentalOrder = #'(
- (6 . -1) (2 . -1) (5 . -1 ) (1 . -1) (4 . -1) (0 . -1) (3 . -1)
- (3 . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1)
- )
- breakAlignOrder = #'(
- Instrument_name
- Left_edge_item
- Span_bar
- Breathing_sign
- Clef_item
- Key_item
- Staff_bar
- Time_signature
- Custos
- )
-
-
- \elementdescriptions #all-grob-descriptions
-}
-
-OrchestralScoreContext= \translator {
- \ScoreContext
-}
-EasyNotation = \translator {
- \ScoreContext
- NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
- easyPlay = ##t
-}
-
--- /dev/null
+
+%
+% Running LilyPond on this file generates the short interface doc
+%
+#(eval-string (ly-gulp-file "generate-interface-doc.scm"))
+++ /dev/null
-
-%
-% Running LilyPond on this file generates the short interface doc
-%
-#(eval-string (ly-gulp-file "generate-interface-doc.scm"))
--- /dev/null
+\version "1.3.146"
+
+\paper {
+ texsetting = ""
+ pssetting = ""
+ scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"% UGH.
+
+}
+++ /dev/null
-\version "1.3.146"
-
-\paper {
- texsetting = ""
- pssetting = ""
- scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"% UGH.
-
-}
--- /dev/null
+\version "1.3.148"
+
+% german-chords.ly:
+% german/norwegian/danish?
+
+% To get Bb instead of B, use
+% \include "german-chords.ly"
+% #(set! german-Bb #t)
+
+#(define german-Bb #f)
+
+#(define (pitch->chord-name-text-banter pitch steps)
+ (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
+ (list 7 (+ (if german-Bb 0 1) (caddr pitch)))
+ (cdr pitch)
+ )))
+ (cons
+ (list-ref '("C" "D" "E" "F" "G" "A" "H" "B") (car dopitch))
+ (accidental->text-super (cadr dopitch))
+ )
+ )
+ )
+
+
+
+#(define (pitch->note-name-text-banter pitch)
+ (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
+ (list 7 (+ 1 (caddr pitch)))
+ (cdr pitch)
+ )))
+ (list
+ (string-append
+ (list-ref '("c" "d" "e" "f" "g" "a" "h" "b") (car dopitch))
+ (if (or (equal? (car dopitch) 2) (equal? (car dopitch) 5))
+ (list-ref '( "ses" "s" "" "is" "isis") (+ 2 (cadr dopitch)))
+ (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cadr dopitch)))
+ )
+ )
+ )
+ )
+ )
+++ /dev/null
-\version "1.3.148"
-
-% german-chords.ly:
-% german/norwegian/danish?
-
-% To get Bb instead of B, use
-% \include "german-chords.ly"
-% #(set! german-Bb #t)
-
-#(define german-Bb #f)
-
-#(define (pitch->chord-name-text-banter pitch steps)
- (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
- (list 7 (+ (if german-Bb 0 1) (caddr pitch)))
- (cdr pitch)
- )))
- (cons
- (list-ref '("C" "D" "E" "F" "G" "A" "H" "B") (car dopitch))
- (accidental->text-super (cadr dopitch))
- )
- )
- )
-
-
-
-#(define (pitch->note-name-text-banter pitch)
- (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
- (list 7 (+ 1 (caddr pitch)))
- (cdr pitch)
- )))
- (list
- (string-append
- (list-ref '("c" "d" "e" "f" "g" "a" "h" "b") (car dopitch))
- (if (or (equal? (car dopitch) 2) (equal? (car dopitch) 5))
- (list-ref '( "ses" "s" "" "is" "isis") (+ 2 (cadr dopitch)))
- (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cadr dopitch)))
- )
- )
- )
- )
- )
--- /dev/null
+
+
+ #(define (grace-beam-space-function multiplicity)
+ (* (if (<= multiplicity 3) 0.816 0.844) 0.8))
+
+
+ #(define (make-text-checker text)
+ (lambda (elt) (equal? text (ly-get-grob-property elt 'text))))
+
+
+startGraceMusic = {
+
+%{
+from GraceContext
+ Stem \override #'flag-style = #"grace"
+ Stem \override #'stem-length = #6.0
+ Stem \override #'direction = #1
+
+ NoteHead \override #'font-relative-size = #-1
+ Stem \override #'font-relative-size = #-1
+ Stem \override #'stem-shorten = #'(0)
+ Beam \override #'font-relative-size = #-1
+ TextScript \override #'font-relative-size = #-1
+ Slur \override #'font-relative-size = #-1
+ Accidentals \override #'font-relative-size = #-1
+ Beam \override #'thickness = #0.3
+ Beam \override #'space-function = #(lambda (x) 0.5)
+
+ Stem \override #'lengths = #(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0))
+ Stem \override #'beamed-lengths =
+ #'(0.0 2.5 2.0 1.5)
+ Stem \override #'beamed-minimum-lengths
+ = #(map (lambda (x) (* 0.8 x)) '(0.0 2.5 2.0 1.5))
+%}
+
+
+ \property Voice.NoteHead \override #'font-relative-size = #-1
+ \property Voice.Stem \override #'length = #6
+ \property Voice.Stem \override #'beamed-lengths =
+ #(map (lambda (x) (* 1.25 x)) '(0.0 2.5 2.0 1.5))
+ \property Voice.Stem \override #'beamed-minimum-lengths =
+ #(map (lambda (x) (* 1.25 x)) '(0.0 1.5 1.25 1.0))
+ \property Voice.Beam \override #'space-function = #grace-beam-space-function
+ \property Voice.fontSize = #-2
+ \property Voice.Stem \override #'no-stem-extend = ##t
+
+% \property Voice.Stem \override #'flag-style = #"grace"
+}
+
+stopGraceMusic = {
+% \property Voice.Stem \revert #'flag-style
+ \property Voice.Stem \override #'no-stem-extend = ##f
+ \property Voice.Stem \revert #'length
+ \property Voice.Stem \revert #'beamed-lengths
+ \property Voice.Stem \revert #'beamed-minimum-lengths
+ \property Voice.Beam \revert #'space-function
+ \property Voice.fontSize \unset
+}
+++ /dev/null
-% Toplevel initialisation file.
-
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\score {
- \context Voice \notes\relative c {
- \maininput
- }
- \paper { }
- \midi { }
-}
\version "1.3.146"
-\include "declarations.ly"
+\include "declarations-init.ly"
\maininput
+++ /dev/null
-% Toplevel initialisation file.
-
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\score {
- \context Voice \notes\relative c {
- \maininput
- }
- \paper {
-
- % indent = 0.0
- }
- \midi{ }
-}
--- /dev/null
+\version "1.3.146"
+
+% ledger.ly
+
+hsize = 11.0 \in
+vsize = 17.0 \in
+
+
+++ /dev/null
-\version "1.3.146"
-
-% ledger.ly
-
-hsize = 11.0 \in
-vsize = 17.0 \in
-
-
--- /dev/null
+\version "1.3.146"
+% legal-init.ly
+
+hsize = 8.5 \in
+vsize = 14.0 \in
+++ /dev/null
-\version "1.3.146"
-% legal.ly
-
-hsize = 8.5 \in
-vsize = 14.0 \in
--- /dev/null
+\version "1.3.146"
+% letter-init.ly
+
+hsize = 8.5 \in
+vsize = 11.0 \in
+
+
+++ /dev/null
-\version "1.3.146"
-% letter.ly
-
-hsize = 8.5 \in
-vsize = 11.0 \in
-
-
--- /dev/null
+\version "1.3.146"
+\midi {
+ \tempo 4=60
+ \include "performer-init.ly"
+% unfold_all = "1"
+}
+
+++ /dev/null
-\version "1.3.146"
-\midi {
- \tempo 4=60
- \include "performer.ly"
-% unfold_all = "1"
-}
-
--- /dev/null
+% paper-as5-init.ly
+
+\version "1.3.146"
+
+paperAsFive = \paper {
+ staffheight = 5.\char
+
+ \stylesheet #(as-make-style-sheet 'as5)
+
+ \translator { \StaffContext barSize = #5 }
+
+ % no beam-slope
+ %\translator { \VoiceContext beamHeight = #0 }
+ \include "params-as-init.ly"
+}
+
+\paper { \paperAsFive }
+++ /dev/null
-% paper-as5.ly
-
-\version "1.3.146"
-
-paperAsFive = \paper {
- staffheight = 5.\char
-
- \stylesheet #(as-make-style-sheet 'as5)
-
- \translator { \StaffContext barSize = #5 }
-
- % no beam-slope
- %\translator { \VoiceContext beamHeight = #0 }
- \include "params-as.ly"
-}
-
-\paper { \paperAsFive }
--- /dev/null
+% paper-as9-init.ly
+
+\version "1.3.146"
+
+paperAsNine = \paper {
+ staffheight = 9.\char
+
+ %\translator { \StaffContext barSize = \staffheight }
+
+ \stylesheet #(as-make-style-sheet 'as9)
+
+ \include "params-as-init.ly"
+
+}
+
+\paper { \paperAsNine }
+++ /dev/null
-% paper-as9.ly
-
-\version "1.3.146"
-
-paperAsNine = \paper {
- staffheight = 9.\char
-
- %\translator { \StaffContext barSize = \staffheight }
-
- \stylesheet #(as-make-style-sheet 'as9)
-
- \include "params-as.ly"
-
-}
-
-\paper { \paperAsNine }
--- /dev/null
+\version "1.3.146"
+% paper-init.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
+
+linewidth = \hsize - 2.\cm
+% Leave the textheight calculation to the geometry package. /MB
+%textheight = \vsize - 4.\cm
+
+indent = \linewidth / 14.0
+
+++ /dev/null
-\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
-
-linewidth = \hsize - 2.\cm
-% Leave the textheight calculation to the geometry package. /MB
-%textheight = \vsize - 4.\cm
-
-indent = \linewidth / 14.0
-
--- /dev/null
+% paper11-init.ly
+
+\version "1.3.146"
+
+paperEleven = \paper {
+ staffheight = 11.0\pt
+ \stylesheet #(make-style-sheet 'paper11)
+
+ \include "params-init.ly"
+}
+
+\paper { \paperEleven }
+++ /dev/null
-% paper11.ly
-
-\version "1.3.146"
-
-paperEleven = \paper {
- staffheight = 11.0\pt
- \stylesheet #(make-style-sheet 'paper11)
-
- \include "params.ly"
-}
-
-\paper { \paperEleven }
--- /dev/null
+% paper13-init.ly
+
+\version "1.3.146"
+
+paperThirteen = \paper {
+ staffheight = 13.0\pt
+
+ \stylesheet #(make-style-sheet 'paper13)
+
+ \include "params-init.ly"
+}
+
+\paper { \paperThirteen }
+++ /dev/null
-% paper13.ly
-
-\version "1.3.146"
-
-paperThirteen = \paper {
- staffheight = 13.0\pt
-
- \stylesheet #(make-style-sheet 'paper13)
-
- \include "params.ly"
-}
-
-\paper { \paperThirteen }
--- /dev/null
+% paper16-init.ly
+
+\version "1.3.146"
+
+paperSixteen = \paper {
+ staffheight = 16.0\pt
+ \stylesheet #(make-style-sheet 'paper16)
+
+ \include "params-init.ly"
+}
+
+\paper {\paperSixteen }
-% paper16.ly
-\version "1.3.146"
-
-paperSixteen = \paper {
- staffheight = 16.0\pt
- \stylesheet #(make-style-sheet 'paper16)
-
- \include "params.ly"
-}
-
-\paper {\paperSixteen }
+\include "paper16-init.ly"
--- /dev/null
+% paper20-init.ly
+
+
+\version "1.3.146"
+
+paperTwenty = \paper {
+ staffheight = 20.0\pt
+ \stylesheet #(make-style-sheet 'paper20)
+
+ \include "params-init.ly"
+}
+
+\paper { \paperTwenty }
+++ /dev/null
-% paper20.ly
-
-
-\version "1.3.146"
-
-paperTwenty = \paper {
- staffheight = 20.0\pt
- \stylesheet #(make-style-sheet 'paper20)
-
- \include "params.ly"
-}
-
-\paper { \paperTwenty }
--- /dev/null
+% paper23-init.ly
+
+
+\version "1.3.146"
+
+paperTwentythree = \paper {
+ staffheight = 23.0\pt
+ \stylesheet #(make-style-sheet 'paper23)
+ \include "params-init.ly"
+}
+
+\paper { \paperTwentythree }
+++ /dev/null
-% paper23.ly
-
-
-\version "1.3.146"
-
-paperTwentythree = \paper {
- staffheight = 23.0\pt
- \stylesheet #(make-style-sheet 'paper23)
- \include "params.ly"
-}
-
-\paper { \paperTwentythree }
--- /dev/null
+% paper26-init.ly
+
+\version "1.3.146"
+
+paperTwentysix = \paper {
+ staffheight = 26.0\pt
+ \stylesheet #(make-style-sheet 'paper26)
+
+ \include "params-init.ly"
+}
+
+\paper { \paperTwentysix }
-% paper26.ly
-\version "1.3.146"
-
-paperTwentysix = \paper {
- staffheight = 26.0\pt
- \stylesheet #(make-style-sheet 'paper26)
-
- \include "params.ly"
-}
-
-\paper { \paperTwentysix }
+\include "paper26-init.ly"
--- /dev/null
+\version "1.3.146"
+% params-as-init.ly
+% generic paper parameters
+
+outputscale = \staffheight / 4.0
+
+linewidth = 60.0 \char
+textheight = 60.0 \char
+indent = 8.0\char
+
+staffspace = (\staffheight - 1.0 ) / 4.0
+stafflinethickness = \staffspace / 2.0
+
+\translator { \NoteNamesContext }
+\translator { \ScoreContext }
+\translator { \ChoirStaffContext }
+\translator { \GraceContext }
+\translator { \RhythmicStaffContext}
+\translator { \StaffContext }
+\translator { \VoiceContext }
+\translator { \StaffGroupContext }
+\translator { \ChordNamesContext }
+\translator { \GrandStaffContext }
+\translator { \LyricsContext }
+\translator { \ThreadContext }
+\translator { \PianoStaffContext }
+\translator { \LyricsVoiceContext }
+\translator { \StaffContainerContext }
+
+
+++ /dev/null
-\version "1.3.146"
-% params-as.ly
-% generic paper parameters
-
-outputscale = \staffheight / 4.0
-
-linewidth = 60.0 \char
-textheight = 60.0 \char
-indent = 8.0\char
-
-staffspace = (\staffheight - 1.0 ) / 4.0
-stafflinethickness = \staffspace / 2.0
-
-\translator { \NoteNamesContext }
-\translator { \ScoreContext }
-\translator { \ChoirStaffContext }
-\translator { \GraceContext }
-\translator { \RhythmicStaffContext}
-\translator { \StaffContext }
-\translator { \VoiceContext }
-\translator { \StaffGroupContext }
-\translator { \ChordNamesContext }
-\translator { \GrandStaffContext }
-\translator { \LyricsContext }
-\translator { \ThreadContext }
-\translator { \PianoStaffContext }
-\translator { \LyricsVoiceContext }
-\translator { \StaffContainerContext }
-
-
--- /dev/null
+\version "1.3.146"
+% JUNKME.
+
+%% deprecated
+papersizename = \papersize
+
+% ly2dvi now uses `papersize' internally (and on cmd line)
+papersize = \papersize
+
+% FIXME
+% direct PostScript line height for single line staffs
+lineheight = 14
+
+paperfile = \papersize + "-init.ly"
+
+% paperfile = "a4-init.ly"
+
+\include \paperfile
+\include "paper-init.ly"
+
+staffspace = \staffheight / 4.0
+stafflinethickness = \staffspace / 10.0
+outputscale = \staffheight / 4.0
+
+\translator { \NoteNamesContext }
+\translator { \ScoreContext }
+\translator { \ChoirStaffContext}
+\translator { \InnerChoirStaffContext}
+
+\translator { \RhythmicStaffContext}
+\translator { \StaffContext }
+\translator { \VoiceContext}
+\translator { \StaffGroupContext }
+\translator { \InnerStaffGroupContext }
+\translator { \ChordNamesContext }
+\translator { \GrandStaffContext}
+\translator { \LyricsContext }
+\translator { \ThreadContext}
+\translator { \PianoStaffContext}
+\translator { \LyricsVoiceContext }
+\translator { \StaffContainerContext }
+
+
+
+
+
+++ /dev/null
-\version "1.3.146"
-% JUNKME.
-
-%% deprecated
-papersizename = \papersize
-
-% ly2dvi now uses `papersize' internally (and on cmd line)
-papersize = \papersize
-
-% FIXME
-% direct PostScript line height for single line staffs
-lineheight = 14
-
-paperfile = \papersize + ".ly"
-
-% paperfile = "a4.ly"
-
-\include \paperfile
-\include "paper.ly"
-
-staffspace = \staffheight / 4.0
-stafflinethickness = \staffspace / 10.0
-outputscale = \staffheight / 4.0
-
-\translator { \NoteNamesContext }
-\translator { \ScoreContext }
-\translator { \ChoirStaffContext}
-\translator { \InnerChoirStaffContext}
-\translator { \GraceContext}
-\translator { \RhythmicStaffContext}
-\translator { \StaffContext }
-\translator { \VoiceContext}
-\translator { \StaffGroupContext }
-\translator { \InnerStaffGroupContext }
-\translator { \ChordNamesContext }
-\translator { \GrandStaffContext}
-\translator { \LyricsContext }
-\translator { \ThreadContext}
-\translator { \PianoStaffContext}
-\translator { \LyricsVoiceContext }
-\translator { \StaffContainerContext }
-
-
-
-
-
--- /dev/null
+\version "1.3.146"
+
+% JUNKME
+%part-paper-init.ly
+
+\paper {
+ \translator { \OrchestralPartStaffContext }
+ \translator { \ScoreContext skipBars = ##t }
+}
+
+++ /dev/null
-\version "1.3.146"
-
-% JUNKME
-%part-paper.ly
-
-\paper {
- \translator { \OrchestralPartStaffContext }
- \translator { \ScoreContext skipBars = ##t }
-}
-
--- /dev/null
+\version "1.3.146"
+%
+% setup for Request->Element conversion. Guru-only
+%
+StaffContext = \translator {
+ \type "Staff_performer"
+ \name Staff
+ \accepts Voice
+
+ \consists "Key_performer"
+ \consists "Tempo_performer"
+ \consists "Time_signature_performer"
+ dynamicStyle = #"dynamic"
+}
+\translator { \StaffContext }
+\translator { \StaffContext
+ \name RhythmicStaff
+}
+
+
+VoiceContext = \translator {
+ \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
+}
+\translator { \VoiceContext }
+
+ThreadContext = \translator {
+ \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"
+
+ weAreGraceContext = #t
+}
+
+\translator
+{
+ \type "Performer_group_performer"
+ \name VoiceTwo\consists "Note_performer"
+
+}
+
+GrandStaffContext = \translator {
+ \type "Performer_group_performer"
+ \name GrandStaff
+ \accepts RhythmicStaff
+ \accepts Staff
+}
+\translator { \GrandStaffContext }
+
+PianoStaffContext = \translator {
+ \type "Performer_group_performer"
+ \name "PianoStaff"
+ \accepts Staff
+}
+\translator { \PianoStaffContext }
+
+\translator {
+ \type "Performer_group_performer"
+ \consists "Lyric_performer"
+ \name LyricsVoice
+}
+
+\translator{
+ \type "Performer_group_performer"
+ \name ChoirStaff
+ \accepts Staff
+}
+\translator {
+ \type "Staff_performer"
+ \accepts LyricsVoice
+ \name Lyrics
+ \consists "Time_signature_performer"
+ \consists "Tempo_performer"
+}
+
+\translator {
+ \type "Staff_performer"
+ \accepts ChordNameVoice
+ \name ChordNames
+}
+
+\translator {
+ \type Performer_group_performer
+ \consists Note_performer
+ \name ChordNameVoice
+}
+
+\translator {
+ \type Performer_group_performer
+
+ \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"
+
+ dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
+ instrumentEqualizer = #default-instrument-equalizer
+}
+\translator { \ScoreContext }
+
+++ /dev/null
-\version "1.3.146"
-%
-% setup for Request->Element conversion. Guru-only
-%
-StaffContext = \translator {
- \type "Staff_performer"
- \name Staff
- \accepts Voice
-
- \consists "Key_performer"
- \consists "Tempo_performer"
- \consists "Time_signature_performer"
- dynamicStyle = #"dynamic"
-}
-\translator { \StaffContext }
-\translator { \StaffContext
- \name RhythmicStaff
-}
-
-
-VoiceContext = \translator {
- \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
-}
-\translator { \VoiceContext }
-
-ThreadContext = \translator {
- \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"
-
- weAreGraceContext = #t
-}
-
-\translator
-{
- \type "Performer_group_performer"
- \name VoiceTwo\consists "Note_performer"
-
-}
-
-GrandStaffContext = \translator {
- \type "Performer_group_performer"
- \name GrandStaff
- \accepts RhythmicStaff
- \accepts Staff
-}
-\translator { \GrandStaffContext }
-
-PianoStaffContext = \translator {
- \type "Performer_group_performer"
- \name "PianoStaff"
- \accepts Staff
-}
-\translator { \PianoStaffContext }
-
-\translator {
- \type "Performer_group_performer"
- \consists "Lyric_performer"
- \name LyricsVoice
-}
-
-\translator{
- \type "Performer_group_performer"
- \name ChoirStaff
- \accepts Staff
-}
-\translator {
- \type "Staff_performer"
- \accepts LyricsVoice
- \name Lyrics
- \consists "Time_signature_performer"
- \consists "Tempo_performer"
-}
-
-\translator {
- \type "Staff_performer"
- \accepts ChordNameVoice
- \name ChordNames
-}
-
-\translator {
- \type Performer_group_performer
- \consists Note_performer
- \name ChordNameVoice
-}
-
-\translator {
- \type Performer_group_performer
-
- \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"
-
- dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
- instrumentEqualizer = #default-instrument-equalizer
-}
-\translator { \ScoreContext }
-
--- /dev/null
+% property-init.ly
+
+\version "1.3.146"
+
+stemUp = \property Voice.Stem \set #'direction = #1
+stemDown = \property Voice.Stem \set #'direction = #-1
+stemBoth= \property Voice.Stem \revert #'direction
+
+slurUp = \property Voice.Slur \override #'direction = #1
+slurDown = \property Voice.Slur \override #'direction = #-1
+slurBoth = \property Voice.Slur \revert #'direction
+shiftOn = \property Voice.NoteColumn \override #'horizontal-shift = #1
+shiftOnn = \property Voice.NoteColumn \override #'horizontal-shift = #2
+shiftOnnn = \property Voice.NoteColumn \override #'horizontal-shift = #3
+shiftOff = \property Voice.NoteColumn \revert #'horizontal-shift
+
+tieUp = \property Voice.Tie \override #'direction = #1
+tieDown = \property Voice.Tie \override #'direction = #-1
+tieBoth = \property Voice.Tie \revert #'direction
+
+dynamicUp = {
+ \property Voice.DynamicText \override #'direction = #1
+ \property Voice.DynamicLineSpanner \override #'direction = #1
+}
+dynamicDown = {
+ \property Voice.DynamicText \override #'direction = #-1
+ \property Voice.DynamicLineSpanner \override #'direction = #-1
+}
+dynamicBoth = {
+ \property Voice.DynamicText \revert #'direction
+ \property Voice.DynamicLineSpanner \revert #'direction
+}
+
+scriptUp = {
+ \property Voice.TextScript \override #'direction = #1
+ \property Voice.Script \override #'direction = #1
+}
+scriptDown = {
+ \property Voice.TextScript \override #'direction = #-1
+ \property Voice.Script \override #'direction = #-1
+}
+scriptBoth = {
+ \property Voice.TextScript \revert #'direction
+ \property Voice.Script \revert #'direction
+}
+
+tupletUp = {
+ \property Voice.TupletBracket \override #'direction = #1
+ \property Voice.TupletBracket \override #'direction = #1
+}
+tupletDown = {
+ \property Voice.TupletBracket \override #'direction = #-1
+ \property Voice.TupletBracket \override #'direction = #-1
+}
+tupletBoth = {
+ \property Voice.TupletBracket \revert #'direction
+ \property Voice.TupletBracket \revert #'direction
+}
+
+
+
+cadenzaOn = \property Score.timing = ##f
+cadenzaOff = {
+ \property Score.timing = ##t
+ \property Score.measurePosition = #(make-moment 0 1)
+}
+
+newpage = {
+ \break
+ % urg, only works for TeX output
+ \context Score \outputproperty #(make-type-checker 'paper-column-interface)
+ #'between-system-string = #"\\newpage"
+}
+
+% dynamic dir? text script, articulation script dir?
+oneVoice = {
+ \stemBoth
+ \slurBoth
+ \tieBoth
+ \shiftOff
+}
+
+voiceOne = {
+ \stemUp
+ \slurUp
+ \tieUp
+}
+
+voiceTwo = {
+ \stemDown
+ \slurDown
+ \tieDown
+}
+
+voiceThree = {
+ \stemUp
+ \slurUp
+ \tieUp
+ \shiftOn
+}
+
+voiceFour = {
+ \stemDown
+ \slurDown
+ \tieDown
+ \shiftOn
+}
+
+% There's also dash, but setting dash period/length should be fixed.
+slurDotted = \property Voice.Slur \override #'dashed = #1
+slurSolid = \property Voice.Slur \revert #'dashed
+tieDotted = \property Voice.Tie \override #'dashed = #1
+tieSolid = \property Voice.Tie \revert #'dashed
+
+
+tiny =
+ \property Voice.fontSize= -2
+
+
+small =
+ \property Voice.fontSize= -1
+
+
+normalsize = {
+ \property Voice.fontSize= 0
+}
+
+normalkey = {
+ \property Staff.keyOctaviation = ##f
+}
+
+specialkey = {
+ \property Staff.keyOctaviation = ##t
+}
+
+% End the incipit and print a ``normal line start''.
+endincipit = \notes{
+ \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 ""
+}
+
+autoBeamOff = \property Voice.noAutoBeaming = ##t
+autoBeamOn = \property Voice.noAutoBeaming = ##f
+
+emptyText = \property Voice.textNonEmpty = ##f
+fatText = \property Voice.textNonEmpty = ##t
+
+showStaffSwitch = \property PianoStaff.followVoice = ##t
+hideStaffSwitch = \property PianoStaff.followVoice = ##f
+
+
+% To remove a Volta bracet or some other graphical object,
+% set it to turnOff. Example: \property Staff.VoltaBracket = \turnOff
+
+turnOff = #'((meta . ((interfaces . ()))))
+++ /dev/null
-% property.ly
-
-\version "1.3.146"
-
-stemUp = \property Voice.Stem \set #'direction = #1
-stemDown = \property Voice.Stem \set #'direction = #-1
-stemBoth= \property Voice.Stem \revert #'direction
-
-slurUp = \property Voice.Slur \override #'direction = #1
-slurDown = \property Voice.Slur \override #'direction = #-1
-slurBoth = \property Voice.Slur \revert #'direction
-shiftOn = \property Voice.NoteColumn \override #'horizontal-shift = #1
-shiftOnn = \property Voice.NoteColumn \override #'horizontal-shift = #2
-shiftOnnn = \property Voice.NoteColumn \override #'horizontal-shift = #3
-shiftOff = \property Voice.NoteColumn \revert #'horizontal-shift
-
-tieUp = \property Voice.Tie \override #'direction = #1
-tieDown = \property Voice.Tie \override #'direction = #-1
-tieBoth = \property Voice.Tie \revert #'direction
-
-dynamicUp = {
- \property Voice.DynamicText \override #'direction = #1
- \property Voice.DynamicLineSpanner \override #'direction = #1
-}
-dynamicDown = {
- \property Voice.DynamicText \override #'direction = #-1
- \property Voice.DynamicLineSpanner \override #'direction = #-1
-}
-dynamicBoth = {
- \property Voice.DynamicText \revert #'direction
- \property Voice.DynamicLineSpanner \revert #'direction
-}
-
-scriptUp = {
- \property Voice.TextScript \override #'direction = #1
- \property Voice.Script \override #'direction = #1
-}
-scriptDown = {
- \property Voice.TextScript \override #'direction = #-1
- \property Voice.Script \override #'direction = #-1
-}
-scriptBoth = {
- \property Voice.TextScript \revert #'direction
- \property Voice.Script \revert #'direction
-}
-
-tupletUp = {
- \property Voice.TupletBracket \override #'direction = #1
- \property Voice.TupletBracket \override #'direction = #1
-}
-tupletDown = {
- \property Voice.TupletBracket \override #'direction = #-1
- \property Voice.TupletBracket \override #'direction = #-1
-}
-tupletBoth = {
- \property Voice.TupletBracket \revert #'direction
- \property Voice.TupletBracket \revert #'direction
-}
-
-
-
-cadenzaOn = \property Score.timing = ##f
-cadenzaOff = {
- \property Score.timing = ##t
- \property Score.measurePosition = #(make-moment 0 1)
-}
-
-newpage = {
- \break
- % urg, only works for TeX output
- \context Score \outputproperty #(make-type-checker 'paper-column-interface)
- #'between-system-string = #"\\newpage"
-}
-
-% dynamic dir? text script, articulation script dir?
-oneVoice = {
- \stemBoth
- \slurBoth
- \tieBoth
- \shiftOff
-}
-
-voiceOne = {
- \stemUp
- \slurUp
- \tieUp
-}
-
-voiceTwo = {
- \stemDown
- \slurDown
- \tieDown
-}
-
-voiceThree = {
- \stemUp
- \slurUp
- \tieUp
- \shiftOn
-}
-
-voiceFour = {
- \stemDown
- \slurDown
- \tieDown
- \shiftOn
-}
-
-% There's also dash, but setting dash period/length should be fixed.
-slurDotted = \property Voice.Slur \override #'dashed = #1
-slurSolid = \property Voice.Slur \revert #'dashed
-tieDotted = \property Voice.Tie \override #'dashed = #1
-tieSolid = \property Voice.Tie \revert #'dashed
-
-
-tiny =
- \property Voice.fontSize= -2
-
-
-small =
- \property Voice.fontSize= -1
-
-
-normalsize = {
- \property Voice.fontSize= 0
-}
-
-normalkey = {
- \property Staff.keyOctaviation = ##f
-}
-
-specialkey = {
- \property Staff.keyOctaviation = ##t
-}
-
-% End the incipit and print a ``normal line start''.
-endincipit = \notes{
- \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 ""
-}
-
-autoBeamOff = \property Voice.noAutoBeaming = ##t
-autoBeamOn = \property Voice.noAutoBeaming = ##f
-
-emptyText = \property Voice.textNonEmpty = ##f
-fatText = \property Voice.textNonEmpty = ##t
-
-showStaffSwitch = \property PianoStaff.followVoice = ##t
-hideStaffSwitch = \property PianoStaff.followVoice = ##f
-
-
-% To remove a Volta bracet or some other graphical object,
-% set it to turnOff. Example: \property Staff.VoltaBracket = \turnOff
-
-turnOff = #'((meta . ((interfaces . ()))))
--- /dev/null
+\version "1.3.146"
+
+
+major = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . 0)
+ (3 . 0)
+ (4 . 0)
+ (5 . 0)
+ (6 . 0)
+ )
+
+minor = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . -1)
+ (3 . 0)
+ (4 . 0)
+ (5 . -1)
+ (6 . -1)
+ )
+
+
+ionian = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . 0)
+ (3 . 0)
+ (4 . 0)
+ (5 . 0)
+ (6 . 0)
+ )
+
+
+locrian = #'(
+ (0 . 0)
+ (1 . -1)
+ (2 . -1)
+ (3 . 0)
+ (4 . -1)
+ (5 . -1)
+ (6 . -1)
+ )
+
+
+aeolian = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . -1)
+ (3 . 0)
+ (4 . 0)
+ (5 . -1)
+ (6 . -1)
+ )
+
+
+mixolydian = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . 0)
+ (3 . 0)
+ (4 . 0)
+ (5 . 0)
+ (6 . -1)
+ )
+
+
+lydian = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . 0)
+ (3 . 1)
+ (4 . 0)
+ (5 . 0)
+ (6 . 0)
+ )
+
+
+phrygian = #'(
+ (0 . 0)
+ (1 . -1)
+ (2 . -1)
+ (3 . 0)
+ (4 . 0)
+ (5 . -1)
+ (6 . -1)
+)
+
+
+dorian = #'(
+ (0 . 0)
+ (1 . 0)
+ (2 . -1)
+ (3 . 0)
+ (4 . 0)
+ (5 . 0)
+ (6 . -1)
+ )
+
+++ /dev/null
-\version "1.3.146"
-
-
-major = #'(
- (0 . 0)
- (1 . 0)
- (2 . 0)
- (3 . 0)
- (4 . 0)
- (5 . 0)
- (6 . 0)
- )
-
-minor = #'(
- (0 . 0)
- (1 . 0)
- (2 . -1)
- (3 . 0)
- (4 . 0)
- (5 . -1)
- (6 . -1)
- )
-
-
-ionian = #'(
- (0 . 0)
- (1 . 0)
- (2 . 0)
- (3 . 0)
- (4 . 0)
- (5 . 0)
- (6 . 0)
- )
-
-
-locrian = #'(
- (0 . 0)
- (1 . -1)
- (2 . -1)
- (3 . 0)
- (4 . -1)
- (5 . -1)
- (6 . -1)
- )
-
-
-aeolian = #'(
- (0 . 0)
- (1 . 0)
- (2 . -1)
- (3 . 0)
- (4 . 0)
- (5 . -1)
- (6 . -1)
- )
-
-
-mixolydian = #'(
- (0 . 0)
- (1 . 0)
- (2 . 0)
- (3 . 0)
- (4 . 0)
- (5 . 0)
- (6 . -1)
- )
-
-
-lydian = #'(
- (0 . 0)
- (1 . 0)
- (2 . 0)
- (3 . 1)
- (4 . 0)
- (5 . 0)
- (6 . 0)
- )
-
-
-phrygian = #'(
- (0 . 0)
- (1 . -1)
- (2 . -1)
- (3 . 0)
- (4 . 0)
- (5 . -1)
- (6 . -1)
-)
-
-
-dorian = #'(
- (0 . 0)
- (1 . 0)
- (2 . -1)
- (3 . 0)
- (4 . 0)
- (5 . 0)
- (6 . -1)
- )
-
--- /dev/null
+\version "1.3.146"
+
+
+dashHat= "marcato"
+dashPlus= "stopped"
+dashDash= "tenuto"
+dashBar= "staccatissimo"
+dashLarger= "accent"
+dashDot= "staccato"
+
+
+thumb = \script "thumb"
+accent = \script "accent"
+marcato = \script "marcato"
+staccatissimo = \script "staccatissimo"
+
+% portato is indicated
+% either by
+% * slurred & dotted notes.
+%or by
+% * slur and dash notes.
+% Neither are really supported, but c4-.-- should work.
+% portato = \script "portato"
+
+fermata = \script "fermata"
+stopped = \script "stopped"
+staccato = \script "staccato"
+tenuto = \script "tenuto"
+upbow = \script "upbow"
+downbow = \script "downbow"
+lheel = \script "lheel"
+rheel = \script "rheel"
+ltoe = \script "ltoe"
+rtoe = \script "rtoe"
+turn = \script "turn"
+open = \script "open"
+flageolet = \script "flageolet"
+reverseturn = \script "reverseturn"
+trill = \script "trill"
+prall = \script "prall"
+mordent = \script "mordent"
+prallprall = \script "prallprall"
+prallmordent = \script "prallmordent"
+upprall = \script "upprall"
+downprall = \script "downprall"
+segno = \script "segno"
+coda = \script "coda"
+++ /dev/null
-\version "1.3.146"
-
-
-dashHat= "marcato"
-dashPlus= "stopped"
-dashDash= "tenuto"
-dashBar= "staccatissimo"
-dashLarger= "accent"
-dashDot= "staccato"
-
-
-thumb = \script "thumb"
-accent = \script "accent"
-marcato = \script "marcato"
-staccatissimo = \script "staccatissimo"
-
-% portato is indicated
-% either by
-% * slurred & dotted notes.
-%or by
-% * slur and dash notes.
-% Neither are really supported, but c4-.-- should work.
-% portato = \script "portato"
-
-fermata = \script "fermata"
-stopped = \script "stopped"
-staccato = \script "staccato"
-tenuto = \script "tenuto"
-upbow = \script "upbow"
-downbow = \script "downbow"
-lheel = \script "lheel"
-rheel = \script "rheel"
-ltoe = \script "ltoe"
-rtoe = \script "rtoe"
-turn = \script "turn"
-open = \script "open"
-flageolet = \script "flageolet"
-reverseturn = \script "reverseturn"
-trill = \script "trill"
-prall = \script "prall"
-mordent = \script "mordent"
-prallprall = \script "prallprall"
-prallmordent = \script "prallmordent"
-upprall = \script "upprall"
-downprall = \script "downprall"
-segno = \script "segno"
-coda = \script "coda"
--- /dev/null
+\version "1.3.146"
+
+cr = \spanrequest \start "crescendo"
+decr = \spanrequest \start "decrescendo"
+rc = \spanrequest \stop "crescendo"
+rced = \spanrequest \stop "decrescendo"
+
+cresc = \notes {
+ \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"
+ \property Voice.crescendoText \unset
+ \property Voice.crescendoSpanner \unset
+}
+
+dim = \notes {
+ \commandspanrequest \start "decrescendo"
+ \property Voice.decrescendoText = #"dim."
+ \property Voice.decrescendoSpanner = #'dashed-line
+}
+
+enddim = \notes {
+ \commandspanrequest \stop "decrescendo"
+ \property Voice.decrescendoText \unset
+ \property Voice.decrescendoSpanner \unset
+}
+
+%{
+
+cresc = \spanrequest \start "crescendo"
+endcresc = \spanrequest \stop "crescendo"
+
+%}
+
+% better name sustainstart/stop?
+sustainDown = \spanrequest \start "Sustain"
+sustainUp = \spanrequest \stop "Sustain"
+
+unaCorda = \spanrequest \start "UnaCorda"
+treCorde = \spanrequest \stop "UnaCorda"
+
+sostenutoDown = \spanrequest \start "Sostenuto"
+sostenutoUp = \spanrequest \stop "Sostenuto"
+
+%crescpoco = \property Voice.crescendoText = "cresc. poco a poco"
+%decresc = \property Voice.crescendoText = "decr."
+%dim = \property Voice.crescendoText = "dim."
+++ /dev/null
-\version "1.3.146"
-
-cr = \spanrequest \start "crescendo"
-decr = \spanrequest \start "decrescendo"
-rc = \spanrequest \stop "crescendo"
-rced = \spanrequest \stop "decrescendo"
-
-cresc = \notes {
- \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"
- \property Voice.crescendoText \unset
- \property Voice.crescendoSpanner \unset
-}
-
-dim = \notes {
- \commandspanrequest \start "decrescendo"
- \property Voice.decrescendoText = #"dim."
- \property Voice.decrescendoSpanner = #'dashed-line
-}
-
-enddim = \notes {
- \commandspanrequest \stop "decrescendo"
- \property Voice.decrescendoText \unset
- \property Voice.decrescendoSpanner \unset
-}
-
-%{
-
-cresc = \spanrequest \start "crescendo"
-endcresc = \spanrequest \stop "crescendo"
-
-%}
-
-% better name sustainstart/stop?
-sustainDown = \spanrequest \start "Sustain"
-sustainUp = \spanrequest \stop "Sustain"
-
-unaCorda = \spanrequest \start "UnaCorda"
-treCorde = \spanrequest \stop "UnaCorda"
-
-sostenutoDown = \spanrequest \start "Sostenuto"
-sostenutoUp = \spanrequest \stop "Sostenuto"
-
-%crescpoco = \property Voice.crescendoText = "cresc. poco a poco"
-%decresc = \property Voice.crescendoText = "decr."
-%dim = \property Voice.crescendoText = "dim."
Begin3
Title: LilyPond
-Version: 1.4.4
-Entered-date: 27JUN01
+Version: 1.5.0
+Entered-date: 29JUN01
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.4.4.tar.gz
+ 1000k lilypond-1.5.0.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.4.4.tar.gz
+ 1000k lilypond-1.5.0.tar.gz
Copying-policy: GPL
End
%define info yes
Name: lilypond
-Version: 1.4.4
+Version: 1.5.0
Release: 1
License: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.4.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.0.tar.gz
Summary: Create and print music notation
URL: http://www.cs.uu.nl/~hanwen/lilypond
BuildRoot: /tmp/lilypond-install
Distribution: SuSE Linux 7.0 (i386)
Name: lilypond
-Version: 1.4.4
+Version: 1.5.0
Release: 2
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.4.4.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.0.tar.gz
# music notation software for.. ?
Summary: A program for printing sheet music.
URL: http://www.lilypond.org/
void
Duration::compress (Rational m)
{
- plet_.iso_i_ *= m.num_i ();
- plet_.type_i_ *= m.den_i ();
+ plet_.iso_i_ *= m.num ();
+ plet_.type_i_ *= m.den ();
}
Rational
grestore
} bind def
-%
-% FIXME. translate to middle of box.
-%
-
-/draw-box % breapth width depth height
-{
- /h exch def
- /d exch def
- /w exch def
- /b exch def
- gsave
-
- 0 setlinewidth
- b neg d neg rmoveto
- b w add 0 rlineto
- 0 d h add rlineto
- b w add neg 0 rlineto
- closepath % 0 d h add neg rlineto
- fill
-
- grestore
-} bind def
-
/start-line % height
{
dup base-line-skip gt {
-%!PS-Adobe-1.0: lily.ps
+%!PS-Adobe-1.0: music-drawing-routines.ps
%
% Functions for direct and embedded PostScript
+
+% FIXME: set with individual symbols
% round cappings
1 setlinecap
1 copy mul exch 1 copy mul add sqrt
} bind def
-/draw_beam % width slope thick
-{
- 2 div /beam_thick exch def
- /beam_slope exch def
- /beam_wd exch def
- beam_slope beam_wd mul /beam_ht exch def
- 0 beam_thick neg moveto
- beam_wd beam_ht rlineto
- 0 beam_thick 2 mul rlineto
- 0 beam_thick lineto
- closepath fill
+% FIXME. translate to middle of box.
+% Nice rectangle with rounded corners
+% FIXME: linewidth hardcoded. check: too round?
+/draw_box % breapth width depth height
+{
+ %% FIXME: hardcoded
+ currentdict /testing known {
+ %% real thin lines for testing
+ /l 0.005 def
+ }{
+ /l 0.05 def
+ } ifelse
+
+ 0 setlinecap
+ l setlinewidth
+ 1 setlinejoin
+
+ l 2 div sub /h exch def
+ l 2 div sub /d exch def
+
+ %% UGH huh?
+ %% Where does this correction come from?
+ %% Why don't we need this in x direction?
+ h l 2 div sub /h exch def
+ d l 2 div sub /d exch def
+
+ l 2 div sub /w exch def
+ l 2 div sub /b exch def
+
+ b neg d neg moveto
+ b w add 0 rlineto
+ 0 d h add rlineto
+ b w add neg 0 rlineto
+ 0 d h add neg rlineto
+
+ currentdict /testing known {
+ %% outline only, for testing:
+ stroke
+ }{
+ closepath gsave stroke grestore fill
+ } ifelse
+} bind def
+
+% Nice beam with rounded corners
+% FIXME: linewidth hardcoded. check: too round?
+/draw_beam % slope width thick
+{
+ %% FIXME: hardcoded
+ currentdict /testing known {
+ %% real thin lines for testing
+ /l 0.01 def
+ }{
+ /l 0.1 def
+ } ifelse
+ l 2 div setlinewidth
+
+ 0 setlinecap
+ 1 setlinejoin
+
+ l sub /t exch def
+ l sub /w exch def
+ w mul /h exch def
+
+ l 2 div t 2 div neg moveto
+ w h rlineto
+ 0 t rlineto
+ w neg h neg rlineto
+ 0 t neg rlineto
+
+ currentdict /testing known {
+ %% outline only, for testing:
+ stroke
+ }{
+ closepath gsave stroke grestore fill
+ } ifelse
} bind def
/draw_repeat_slash % width slope thick
(SpanBar . (
(break-align-symbol . Staff_bar)
(bar-size-procedure . ,Span_bar::get_bar_size)
- (molecule-callback . ,Bar::brew_molecule)
+ (molecule-callback . ,Span_bar::brew_molecule)
(visibility-lambda . ,begin-of-line-invisible)
(X-extent-callback . ,Span_bar::width_callback)
- (Y-offset-callbacks . (,Span_bar::center_on_spanned_callback))
-
(breakable . #t)
(glyph . "|")
(before-line-breaking-callback . ,Span_bar::before_line_breaking)
;;;; (c) 1998--2001 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
-;;; Library funtions
+;;; Library functions
(use-modules (ice-9 regex))
"lilypondpaperoutputscale div scalefont setfont } bind def "
"\n"))
-
(define (beam width slope thick)
(string-append
- (numbers->string (list width slope thick)) " draw_beam" ))
+ (numbers->string (list slope width thick)) " draw_beam" ))
(define (comment s)
(string-append "% " s))
(define (filledbox breapth width depth height)
(string-append (numbers->string (list breapth width depth height))
- " draw-box" ))
+ " draw_box" ))
;; obsolete?
(define (font-def i s)
" {exch pop //systemdict /run get exec} "
(ly-gulp-file "music-drawing-routines.ps")
"{ exch pop //systemdict /run get exec } "
+ (if (defined? 'ps-testing) "\n /testing true def" "")
))
(define (lily-def key val)
(define (stem breapth width depth height)
(string-append (numbers->string (list breapth width depth height))
- " draw-box" ))
+ " draw_box" ))
(define (stop-line)
"}\nstop-line\n")
(define (header-end)
(string-append
"\\special{\\string! "
-
+
;; URG: ly-gulp-file: now we can't use scm output without Lily
(if use-regex
;; fixed in 1.3.4 for powerpc -- broken on Windows
(regexp-substitute/global #f "\n"
(ly-gulp-file "music-drawing-routines.ps") 'pre " %\n" 'post)
(ly-gulp-file "music-drawing-routines.ps"))
+ (if (defined? 'ps-testing) "/testing true def%\n" "")
"}"
"\\input lilyponddefs\\newdimen\\outputscale \\outputscale=\\lilypondpaperoutputscale pt\\turnOnPostScript"))
"}\\vss}\\interscoreline\n")
(define (stop-last-line)
"}\\vss}")
- (define (filledbox breapth width depth height)
+ (define (xfilledbox breapth width depth height)
(string-append
"\\kern" (number->dim (- breapth))
"\\vrule width " (number->dim (+ breapth width))
"depth " (number->dim depth)
"height " (number->dim height) " "))
+ (define (filledbox breapth width depth height)
+ (embedded-ps
+ (string-append (numbers->string (list breapth width depth height))
+ " draw_box" )))
+
(define (text s)
(string-append "\\hbox{" (output-tex-string s) "}"))
(translator-property-description 'followVoice boolean?
"if set, note heads are tracked across staff switches by a thin line")
+(translator-property-description 'fontSize integer?
+ "Used to set the relative size of all grobs
+in a context. This is done using the @code{Font_size_engraver}.")
+
(translator-property-description 'forceClef boolean? "Show clef symbol, even if it hasn't changed. Only active for the first clef after the property is set, not for the full staff.")
(translator-property-description 'forgetAccidentals boolean? "do
not set localKeySignature when a note alterated differently from