From f988425624a6f6d1a48aea0ac0c1c84ff0857e56 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 4 Oct 2000 01:07:05 +0200 Subject: [PATCH] release: 1.3.93 =========== * Added some error messages for toplevel and stray string parse errors. * Don't start more than one slur at a time. * Set direction of Slur too in a2-engraver. 1.3.92.h --- CHANGES | 28 +- Documentation/bibliography/engraving.bib | 2 +- Documentation/faq.texi | 825 ----------------------- Documentation/index.texi | 2 +- Documentation/user/glossary.tely | 6 - Documentation/user/properties.itely | 4 +- VERSION | 4 +- aclocal.m4 | 8 +- config.make.in | 2 - configure | 235 +++---- configure.in | 10 - dstreamrc | 157 ----- input/trip.ly | 18 +- lily/a2-engraver.cc | 5 + lily/all-font-metrics.cc | 45 +- lily/audio-column.cc | 11 - lily/audio-element.cc | 13 - lily/audio-item.cc | 11 +- lily/bar.cc | 18 +- lily/break-align-item.cc | 8 +- lily/breathing-sign.cc | 5 +- lily/change-translator.cc | 6 - lily/chord-name.cc | 20 +- lily/clef-engraver.cc | 3 +- lily/clef-item.cc | 2 +- lily/command-request.cc | 20 - lily/dots.cc | 4 +- lily/dynamic-performer.cc | 43 +- lily/global-translator.cc | 1 - lily/identifier.cc | 31 - lily/include/audio-element.hh | 3 +- lily/include/audio-item.hh | 2 - lily/include/change-translator.hh | 1 - lily/include/command-request.hh | 6 +- lily/include/engraver-group-engraver.hh | 3 + lily/include/identifier.hh | 4 +- lily/include/lily-guile.hh | 11 +- lily/include/lyric-combine-music.hh | 2 +- lily/include/lyric-performer.hh | 2 +- lily/include/music-output-def.hh | 2 +- lily/include/music-sequence.hh | 2 +- lily/include/music-wrapper.hh | 2 +- lily/include/music.hh | 2 +- lily/include/musical-pitch.hh | 2 +- lily/include/musical-request.hh | 14 +- lily/include/note-performer.hh | 2 +- lily/include/paper-def.hh | 2 +- lily/include/part-combine-music.hh | 2 +- lily/include/relative-music.hh | 2 +- lily/include/request.hh | 4 +- lily/include/scope.hh | 3 + lily/include/score.hh | 1 - lily/include/staff-symbol-referencer.hh | 2 + lily/include/symbol-cache.hh | 79 +++ lily/include/tempo-performer.hh | 2 +- lily/include/time-signature-performer.hh | 2 +- lily/include/translator-group.hh | 2 +- lily/include/translator.hh | 4 +- lily/include/transposed-music.hh | 2 +- lily/key-engraver.cc | 10 +- lily/lily-guile.cc | 15 +- lily/line-group-group-engraver.cc | 1 - lily/lookup.cc | 4 + lily/lyric-combine-music.cc | 6 - lily/lyric-performer.cc | 8 - lily/moment.cc | 2 +- lily/music-output-def.cc | 10 +- lily/music-sequence.cc | 8 - lily/music-wrapper.cc | 6 +- lily/music.cc | 9 +- lily/musical-pitch.cc | 7 - lily/musical-request.cc | 61 -- lily/my-lily-lexer.cc | 7 +- lily/note-head.cc | 14 +- lily/note-performer.cc | 10 +- lily/paper-def.cc | 17 +- lily/part-combine-music.cc | 7 +- lily/performance.cc | 13 - lily/property-engraver.cc | 24 +- lily/relative-octave-music.cc | 6 - lily/request.cc | 5 +- lily/scope.cc | 6 + lily/score-element.cc | 7 +- lily/score-engraver.cc | 2 +- lily/score.cc | 13 +- lily/scores.cc | 2 - lily/script-engraver.cc | 7 +- lily/side-position-interface.cc | 2 +- lily/slur-bezier-bow.cc | 13 - lily/staff-symbol-referencer.cc | 13 + lily/stanza-number-engraver.cc | 4 +- lily/symbol-cache.cc | 77 +++ lily/tempo-performer.cc | 8 - lily/tfm-reader.cc | 26 - lily/time-signature-performer.cc | 8 - lily/translator-group.cc | 16 +- lily/translator.cc | 16 - lily/transposed-music.cc | 6 - lily/unfolded-repeat-iterator.cc | 4 +- lily/volta-engraver.cc | 2 +- lily/volta-spanner.cc | 7 +- ly/engraver.ly | 26 +- ly/performer.ly | 3 + ly/property.ly | 72 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- make/toplevel.make.in | 2 +- mutopia/J.S.Bach/wtk1-fugue2.ly | 22 +- scm/accordion-script.scm | 56 -- scm/basic-properties.scm | 84 ++- scm/chord-names.scm | 2 +- scm/lily.scm | 74 +- scm/midi.scm | 4 +- scm/script.scm | 56 +- scripts/etf2ly.py | 70 +- stepmake/aclocal.m4 | 6 - stepmake/configure | 27 +- 117 files changed, 788 insertions(+), 1931 deletions(-) delete mode 100644 Documentation/faq.texi delete mode 100644 dstreamrc create mode 100644 lily/include/symbol-cache.hh create mode 100644 lily/symbol-cache.cc delete mode 100644 scm/accordion-script.scm diff --git a/CHANGES b/CHANGES index 06efe0291b..7165bea587 100644 --- a/CHANGES +++ b/CHANGES @@ -7,8 +7,32 @@ * Set direction of Slur too in a2-engraver. -1.3.91.uu1 -========== +1.3.92.hwn1 +=========== +* Removed calls to global GUILE namespace. + +* Added \property: scriptDefinitions, explicitClefVisibility, +explicitKeySignatureVisibility, instrumentEqualizer, +dynamicAbsoluteVolumeFunction + +* Added element properties Bar::break-glyph-function, +Break_align_item::space-alist, Chord_name::chord-name-function + +* Added \property combineParts: part combiner switched off by default. + + +* Remove all print methods. + +* Use Scope::try_retrieve if possible. + +* Remove FAQ in favor of URL. + +* etf2ly.py robustness fixes. + +* Don't compensate for left edge in broken volta spanner. + +1.3.92 +====== * RPM .spec fixes. diff --git a/Documentation/bibliography/engraving.bib b/Documentation/bibliography/engraving.bib index 743b93f3fd..7d65243b3b 100644 --- a/Documentation/bibliography/engraving.bib +++ b/Documentation/bibliography/engraving.bib @@ -31,7 +31,7 @@ title = {Music notation}, year = 1991, publisher={Hal Leonard Publishing Corporation}, -isbn ={0793508479} +isbn ={0793508479}, note={HWN writes: `Book' edition of lecture notes from XXX school of music. The book looks like it is xeroxed from bad printouts. The content has nothing you won't find in other books like\cite{read} or diff --git a/Documentation/faq.texi b/Documentation/faq.texi deleted file mode 100644 index ad43f36b35..0000000000 --- a/Documentation/faq.texi +++ /dev/null @@ -1,825 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@setfilename faq.info -@settitle FAQ - GNU LilyPond FAQs - -@node Top, , , (dir) -@top -@menu -* Miscellaneous:: Miscellaneous -* Installing:: Installing -* Documentation:: Documentation -* Language- mudela:: Language- mudela -* Do you support -:: Do you support - -* How do I -:: How do I - -* Development:: Development -* Running:: Running -* Copyright:: Copyright -* Windows32:: Windows32 -@end menu -@chapter FAQ - GNU LilyPond FAQs - - -@node Miscellaneous, ,,top -@section Miscellaneous - -[FIXME: rewrite FAQ, include general questions] - -@subsubsection HELP! I'm stuck! - -Please read this document carefully. If you are still at loss, send -your questions to the @strong{mailing list}, and not to authors -directly. - -Note: relative paths are meant to be relative to the source directory - -@subsubsection I've got a simple question, but this FAQ doesn't help! - -Please have a look in the searchable mail archives of gnu-music-discuss -and help-gnu-music (see next FAQ entry). Your question may well have -been answered before. - -@subsubsection Are there archives of the mailing list? - -Yes. Currently, all information on the mailing lists is available at -gnu.org: - -@itemize -@item @uref{http://mail.gnu.org/mailman/listinfo/gnu-music-discuss} -@item @uref{http://mail.gnu.org/mailman/listinfo/info-gnu-music} -@item @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-music} -@item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music} -@end itemize - -Archives of mail before September 12, 2000 are at -@code{mail-archive.com}: - -@itemize -@item @uref{http://www.mail-archive.com/info-gnu-music@@gnu.org} -@item @uref{http://www.mail-archive.com/help-gnu-music@@gnu.org} -@item @uref{http://www.mail-archive.com/bug-gnu-music@@gnu.org}) -@item @uref{http://www.mail-archive.com/gnu-music-discuss@@gnu.org} -@end itemize - -@node Installing,, ,top -@section Installing - - -@subsubsection If I install the .exe file on my DOS/windows 3.11 machine, it doesn't work - -The NT port is done with the Cygnus GNU/Windows32 port of the GNU utils. -It does @emph{not} work with windows 3.x; you need Windows-NT (95/98?). - -@subsubsection Where is guile-config - -Old RedHat RPMS don't include guile-config. You need guile-config as it -was produced during the RPM build run. Build the RPM from source -(@file{.src.rpm}), and use the guile-config that is in -@file{/usr/src/redhat/BUILD/guile-1.3/guile-config/}. - -@subsubsection I get all kinds of errors while compiling @file{parser.cc} - -LilyPond uses features of bison version 1.25. Please confirm that -you are using a version 1.25 or better, that is @strong{GNU} bison -@strong{1.25}. Don't forget to do "make clean" after installing it. Don't -forget to remove the stale @file{bison.simple} as well. - -If the problem persists, then please send a bug report to the mailing list. - -@subsubsection I upgraded by applying a patch, and now my configure/build breaks. - -Patches don't include automatically generated files, i.e. -@file{configure} and files generated by @file{configure}. Regenerate them -yourself: -@example - - autoconf - configure - -@end example - - -@subsubsection Is there an emacs mode? - -Yes. It is included with the source archive as @file{lilypond-mode.el}. -If you have an RPM it is in @file{/usr/doc/lilypond-X/}. You have to -install it yourself. - -@subsubsection How do I create the @file{.tfm} files? - -You don't. The @file{.tfm} files should be generated automatically by -Metafont when you run TeX. Check your TeX installation, or ask -your local TeX guru. The supplied @file{.afm} files are intended to -be used by LilyPond, not by any other programs. - -@node Documentation,, ,top -@section Documentation - -@subsubsection What a sober website/manual you have there! - -LilyPond development is moving fast, so the documentation will often be out -of date. But don't hesitate to point out inaccuracies. Whip up your -mail reader and write to the mailing list. - -@subsubsection Please take me off your mailing list, I get so much mail! - -Don't ask Han-wen, don't ask David. Instead, read about -@uref{../../index.html#mailing-lists, the mailing lists} here. - - - -@node Language- mudela,, ,top -@section Language: mudela - -@subsubsection Why do I have to type the accidentals to the note if I -specified them in the keysignature? - -Take this example -@example - - cis cis - -@end example - -Independently of how it was written and what the current key was, you -would say that you are playing and reading "two C-sharp" notes, so you -have to enter C-sharp twice. - -@subsubsection What is @code{cis} anyway - -@code{cis} is the dutch naming for C-sharp. The notes are named -a, b,.., g. The suffix -is means sharp, and -es flat. This system is -common in a number of languages (such as swedish, dutch, german.) -Certain other languages (such as English, French and Italian) just add -the word for "sharp" to the notename. - -We chose the Dutch system, because we're dutch. You are free to chose -whatever names you like; they are user definable. - -@subsubsection Why are [] around the notes, and () inbetween? - -[] designate beams, a note can only be in one beam at the same -time. () is a slur, which connects notes. You need to be able to -specify -@example - - a()a()a - -@end example - -@subsubsection I want to insert some TeX commands. - -You shouldn't: it's against LilyPond philosophy to have typesetting -commands in the mudela source. Moreover, this would be difficult. -LilyPond uses TeX like a glorified output engine: the output consists -of (x,y) positions and symbols. You can only sensibly do TeX stuff in -the symbol string. You can access the symbol string easily for some -symbols (notably lyrics and @code{^"text"} commands). - -@node Do you support -,, ,top -@section Do you support ... - -@subsubsection Do you support pop songs (chords, single staff, lyrics)? - -Yes, see the @file{twinkle-pop} example. - -@subsubsection Do you support guitar fret diagrams? - -No. We ourselves don't play guitar, and don't know the fine points of -this notation. We would welcome anyone who could give this a try. - -@subsubsection Do you support TAB notation? - -No. The same as for the previous question goes. - -@subsubsection Do you support multiple staff-sizes? - -Yes. At this time you can choose between 11, 13, 16, 19, 20, 23 and 20 -pt staff-size. Use the @code{staffSpace} property for setting the -size of the staff, and @code{fontSize} for setting the size of the -glyphs. - -@subsubsection Do you support Gregorian chant notation? - -No. - - -@subsubsection Do you support grace notes? - -Yes. See @file{input/test/grace.ly}. - -@node How do I -,, ,top -@section How do I .... - -@subsubsection How do I change the page layout? - -The height and width of the music on each page is set -using the paper variables @code{textheight} and @code{linewidth} in -the input file. -If you want to change the placement of the page number or the -layout of the title, you could run @code{lilypond infile.ly} and -include the generated @file{infile.tex} file in your own LaTeX -wrapper file. The easiest way is to start from the ly2dvi default -layout, using the following steps (assuming that the input file -is @file{infile.ly}: - -@itemize @bullet - - @item @code{ly2dvi -kK infile.ly} - - @item Edit the generated LaTeX file @file{infile_lyN.tex} (@code{N} is - some number) to get the desired layout. Some aspects are determined in - the file titledefs.tex. - - @item Run @code{latex infile_lyN.tex} - - @item If you update the Mudela file, run @code{lilypond infile.ly} - and then @code{latex infile_lyN.tex}. -@end itemize -Another alternative is to use @command{mudela-book}, where smaller or -larger music examples can be included in a LaTeX or Texinfo file. - -@subsubsection The tagline is visible in the .dvi file but is not printed on paper. - -The default page size is A4. If you use letter sized papers, -add the following at the top of your Mudela file. -@example -\paper@{ - papersize="letter"; -@} -\include "paper20.ly" -@end example -(Note that setting the papersize in the ordinary paper section inside -a score declaration will not have the desired effect.) -The default paper size can be set globally for the installation -in the file @file{declarations.ly}. - -@subsubsection How do I place lyrics under @emph{each} of the staves in a score, as choral music. I can work out how to put lyrics for each line all under the top line, or at the bottom but not between! - -You change the order lyrics and staves. You have to name all -staves (lyric and melodic), otherwise they will end up in the same -staff/lyricline -@example - \score @{ - < \melodic \type Staff = "treble" \trebleMelody - \lyric \type Lyrics = "tlyrics" \trebtext - \type Staff = "bass" \melodic \bassMelody - \lyric \type Lyrics = "blyrics" \basstext - > - \paper @{ @} - @} - -@end example - -@subsubsection How do I put more than one marking on a note? - -You can stack them -@example - - c4^"a"^"b" - -@end example - -or use spacing-notes to put markings at different horizontal positions -@example - - < c1 - @{ s4\ff s4^"text" s4-\marcato s4 @} - > - -@end example - -This also works for crescendi, eg, -@example - - < c1 - @{ s4\< s2 \! s4 @} - > - -@end example - -@subsubsection How do I get a fermata on a barline - -The trick is to specify the fermata as a \mark. Use the following macro -before the bar line where you want the fermata: - -@example -barFermata = \mark "\\font\\fetafont=feta20\\fetafont\\char40"; -@end example - -The problem is that marks that occur at a line break are typeset only at -the beginning of the next line, opposite to what you want for the -fermata. This can be corrected by the following code - -@example - \property basicMarkProperties \push #'visibility-lambda = #begin-of-line-i\nvisible -@end example - -You can use a similar trick to put coda signs and comma's on barline. - -@subsubsection How do I combine multiple pieces into one document? - -There are several solutions: - -@itemize @bullet -@item -@example - - ly2dvi foo.ly bar.ly - -@end example - -produces one combined @file{foo.dvi} -@item make a toplevel @file{.ly} file that contains al pieces: -@example - - % booklet.ly - \input "piece-1.ly" - \input "piece-2.ly" - \input "piece-3.ly" - -@end example - -@item make a hybrid TeX/LilyPond @file{.doc} document (see the - @file{Documentation/tex} directory). -@end itemize - -For the first two solutions, you will need to move @code{\header} info -in each individual piece from toplevel into the @code{\paper} block. - -There are several examples in the @file{mutopia} directory. - -@subsubsection How do I change the tagline 'Lily was here'? - -In the @code{\header} field, add a @code{tagline} entry, e.g. -@example - -tagline="Typeset by GNU LilyPond" - -@end example - -@subsubsection Can I make blank manuscript paper with LilyPond? - -Theoretically, yes but it is easier to do with (La)TeX. This LaTeX file -will do the trick for you: - - -@example -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% notepaper.tex -% Mats Bengtsson, 18/5 2000 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\documentclass[a4paper]@{article@} - -\usepackage@{ifthen@} -\usepackage[noheadfoot,hmargin=15mm,vmargin=20mm]@{geometry@} - -\pagestyle@{empty@} - -\newcounter@{staffnumber@} -\newlength@{\interstaffline@} - -\newcommand@{\drawline@}@{\hbox@{\rule@{\textwidth@}@{0.5pt@}@} - \nointerlineskip\vskip\interstaffline\nointerlineskip@} - -\newcommand@{\printstaff@}@{\vfill - \vbox@{\drawline\drawline\drawline\drawline\drawline@} - \vfill@} - -\begin@{document@} -\typeout@{@}\typeout@{@} -\typein[\staffsize]@{Type in the staff size (20pt is a common value):@} -\setlength@{\interstaffline@}@{\staffsize@} -\setlength@{\interstaffline@}@{.25\interstaffline@} -\typeout@{@} -\typein[\num]@{Type in the number of staffs:@} -\setcounter@{staffnumber@}@{\num@} - -\mbox@{@} % To get a starting point for the \vfill -\whiledo@{\value@{staffnumber@}>0@}@{% - \printstaff \addtocounter@{staffnumber@}@{-1@}@} - -\end@{document@} -@end example - - -@node Development,, ,top -@section Development - -@subsubsection Could you implement feature XXXX? It is really easy, just extend the syntax to allow YYYY! - -In general finding a cute syntax (such as YYYY) isn't very hard. The -complicated issue how to adapt the internals to do XXXX. The parser is -really a simple front end to the complicated internals. - -@subsubsection Can I join in on LilyPond development? How do I do this? - -Yes, we do frequent releases, you are welcome to send in a patch or do -suggestions. Join the list @email{gnu-music-discuss@@gnu.org} to -participate. - - -@subsubsection Is there a GUI frontend? Should I start building one? - -Matthew Hiller has extended Midiscore and Koobase to handle mudela, He -is now working on @uref{http://denemo.sourceforge.net/,Denemo}, a GTK -based notation program. This is the most advanced LilyPond front-end -currently available. - -Chris Cannam is working a rewrite of Rosegarden. The new design should -be more modular, and could conceivably be used to output -mudela. However, the not much seems to have happened the past year. See -@uref{http://www.all-day-breakfast.com/rosegarden/development.html}. - -@subsubsection I want to implement XXXX! How should I do this? - -Your best bet of getting us to include code, is to present it as a -"fait accompli", i.e., to send a patch to the mailing list. - -Please use the diff command to generate a patch, and don't send complete -files, even if the diff is larger than the whole file. - -Don't forget to put your name and e-mail address in the file -@file{Documentation/topdocs/AUTHORS.texi}, or you won't get credits -:-) - - -@subsubsection Your make system does not adhere to GNU coding standards, could you please fix it? - -No. We have evaluated the standard GNU combination for compiling -programs (autoconf, automake, libtool) and found to be inadequate for -our needs. - -@subsubsection How do I inspect @code{String}s and @code{SCM} values in GDB? - -Use the following command definitions, which can be put in -the file ~/.gdbinit. - -@example -define printstr - print $arg0->ch_C() -end - -define printscm - call gh_display($arg0) - call gh_newline() -end -@end example - -@subsubsection GDB crashes when I debug! - -Upgrade/downgrade to 4.17. - -@node Running,, ,top -@section Running - -@subsubsection LilyPond takes ages to run, what am I doing wrong? - -LilyPond uses a lot CPU time, and insane amounts of memory. The amount -of memory it requires is proportional to the size of the score, in other -words. For a moderately complex piano scores of 5 pages, the footprint -can easily become 20 megs. (Our favorite test is the coriolan: -approx. 100 megs for a 50 page orchestral score). If your system has not -got enough memory, it can easily start swapping. - -A part of the memory is used as temporary storage, and is reclaimed -through GUILE's garbage collection. A way to trade in CPU time for -storage is by decreasing the environment variable -@var{GUILE_MAX_SEGMENT_SIZE} (default 8388608, which is 8 megs). - - -@subsubsection Correcting errors is so tedious. Is there a better way? - -As of 1.3.73, lilypond provides support for the xdvi @code{src:} -special. This can be used with Xdvik (22.16 or better) and xdvi (22.28 -or better) to go to the place in the input that corresponds to a symbol -in the output: click on the note, and your editor jumps to the place -where it was defined - -lilypond: - -Decide if you want column positioning, and edit @file{lily.scm} -according to the comments at the function @code{define-origin}. - -emacs: - -Put this in @file{~/.emacs}: -@example -(server-start) -@end example - -For column positioning, apply -@uref{http://www.cs.uu.nl/~hanwen/software/emacsclient-column, this -patch} to @code{emacsclient.c} and @code{server.el}. Stick the compiled -emacsclient into a bin directory, and put @code{server.el} into a elisp -directory (eg. @file{~/usr/share/emacs/}). Add the following to your -@file{.emacs} init file, before invoking server-start. -@example -(setq load-path (cons (concat (getenv "HOME") "/usr/share/emacs") - load-path)) -@end example - -Xdvik: - -Warning: @uref{Xdvik,ftp://ftp.cs.uu.nl/pub/tex-archive/dviware/xdvik/}, -which is shipped with most TeX distributions, doesn't work very well for -src specials. You're better off using plain xdvi. -@example - xdvi -srcmode -srcvisibility output.dvi -@end example - -Click control-mouse button 2 for making emacs jump to the appropriate place. - -For column positioning you must install -@uref{http://www.cs.uu.nl/~hanwen/software/xdvik-src, this patch} to -make Xdvik emit column numbers. Add the command line option -@code{-srceditorcommand "emacsclient --no-wait +%l:%c %f"} - -Xdvi - -@uref{Xdvi,ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz} has -better support for src specials. Apply -@uref{http://www.cs.uu.nl/~hanwen/software/xdvi-src, this patch}. Before -starting, set the environment variable @code{XEDITOR} to -@code{"emacsclient --no-wait +%d %s"}. When viewing, -control-mousebutton 1 will take you to the correct -line/column. Control-mousebutton 2 will show all clickable boxes. - -dvips: - -dvips will complain about the specials, but the complaints are harmless. - - -@subsubsection I use dvilj4, and there are lots of warning messages for the printing - -You should use dvips and ghostscript to print the @code{dvi} output: the -slurs and beams are PS @code{\special} commands. - - -@subsubsection My symbols are all messed up after I upgraded, I get the wrong symbols and dvi-checksum errors! - -We obviously mucked with the fonts in the upgrade. Remove @emph{all} -previous fonts, including the @file{.pk} and @file{.tfm} fonts in -@file{/var/lib/texmf}. A script automating this has been included, see -@file{buildscripts/clean-fonts.sh}. - -@subsubsection all the pk and tfm fonts are created in the directory where the mudela file is, not in "/var/spool/texmf" where I think they should be. - -Mats Bengtsson writes: - -The simple solution used by Anthony Fok in the Debian distribution of -Lilypond is to link the mf/ directory to -/usr/lib/texmf/fonts/source/public/lilypond Depending on what -distribution of teTeX and Linux you have installed, there might also -be other places like /usr/local/lib/texmf/fonts/source/public/lilypond -or /var/spool/texmf//fonts/source/public/lilypond - -Wherever you put it, don't forget to run mktexlsr (or texhash for -older installations) afterwards, so that TeX will find the files. -Also, don't forget to remove all old .tfm and .*pk files when the font -is updated (as it will be in version 1.1.40, for example). - -@subsubsection Are there scalable versions of the font? - -Yes, they are type-3 fonts. In the @file{mf/} -subdirectory, issue: -@example - - make pfa - -@end example - in the mf/ subdirectory. This will also make @file{mfplain} for metapost. -The @file{pfa}s will be in the subdirectory @file{out/}. - -@subsubsection How does PS output work? - -@itemize @bullet - @item -Generate the PostScript Type-3 fonts. -@item -Run lilypond with option @code{-f ps}: -@example - - lilypond -fps foo.ly - -@end example - -@item To view the @file{.ps} output with GhostView, set GS_FONTPATH to the -directory containing the @file{pfa}s. In the source tree, this is @file{mf/out/}. - -i.e. do something like: -@example - - export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out - gv foo.ps & - -@end example - -@end itemize - -Direct PS output is not used often, and therefore likely to exhibit -bugs. For creating nice looking ps output, use TeX and @code{dvips}. - - -@subsubsection The beams and slurs are gone when using the XDvi magnifying glass!? - -Various dynamic symbols, such as beams, crescendi, slurs are done in -PostScript. XDvi doesn't show PostScript in the magnifying glass. -Complain to the XDvi maintainers. - - -@subsubsection Beams, slurs and crescendi are not displayed at all! - -See previous answer. XDvi uses GhostScript for displaying PostScript, -check that you have GhostScript installed. If you use a different -DVI viewer, check if it will display embedded PostScript. Don't worry, -the symbols should appear on the printout. - -@subsubsection A lot of musical stuff doesn't make it to the MIDI file, eg. dynamics, articulation, etc. - -The MIDI output was originally put in as a proof that MIDI could be -done, and as a method of proof"reading" the input. The MIDI support -is by no means finished. Patches appreciated. - -@node Copyright,, ,top -@section Copyright - -@subsubsection What is Urtext? Critical Edition? - -Werner Lemberg: - -It may be translated best as `that what the composer intended to tell -the reader' - -Peter Chubb writes: - -An Urtext is a reconstruction of the earliest form of a text, -including mistakes the original author wrote. Where there is no -available facsimile of the original, creating this can involve some -inspired detective work (in comparing various later editions and -trying to deduce what the original form was). As far as copyright -goes, my guess is that, for works that are otherwise out of copyright, -an Urtext is copyright to the person who reconstructed it, as a -derived work from the editions s/he consulted. If the edition is -created directly from a facsimile, as would be the case for most -Urtext editions of music, then the amount of new (copyright) material -is minimal. - -A critical edition is an edition that is designed for critical -study of a text. It'll usually have lots of footnotes, alternative -readings, possible realisations of bass parts and harmonies, etc. It -aims to elucidate the author's original intentions, as opposed to -reproduce exactly what was written. The critical apparatus will be -copyright to its author. - -A playing edition is one that has been edited for modern usage. -It'll have fewer or no alternative readings, it'll be in modern -notation, it may have additional editorial marks (phrase marks, slurs, -etc.) will often have a fully realised basso continuo part (if oone -was present in the original) and may have had key changes, time -signature changes, time compression (original in 4/1, playing edition -in 4/4, for example, with all semibreves replaced with crotchets) -Copyright is in the arranger/editor. - -@subsubsection How does copyright for sheet music work? Can I enter and spread my newly bought Bach urtext? - -Silas S. Brown : - -@quotation - -There are several aspects to sheet music copyright: - -1. The music itself - copyright for the composer's life plus 70 years (so -not applicable to Bach). - -2. If the music is an arrangement, then the arranger holds copyright on -that arrangement. However, you can produce your own arrangement using -that arrangement as a reference point. Obviously your arrangement must be -sufficently different to be called your own arrangement - you need to do -more than change one note! - -3. In some countries, the same applies for editions. This could be -relevant to the Bach example. If a modern person has edited the music, -then they hold the copyright on the edition. This does not stop you from -removing the editorial features - remove all editorial slurs, phrasemarks, -ornaments etc and only leave those that you know to be original. You can -then add some of your own if you want to be your own editor. - -4. If there are lyrics, then the lyricist also holds copyright. This -does not stop you from using the music without the lyrics if it is -otherwise out of copyright. - -5. The copyright of the printed page is held by the publisher for 30 -years after printing (25 in some countries). This stops you from -photocopying (unless it's "fair use" eg. you're partially sighted and need -to enlarge the music) or otherwise reproducing the typesetting that is -used on it. But the copyright is only held over the typesetting work, not -the music itself. Since Mudela specifies the notes, independently of any -typesetting work that went into your reference copy, you are not -duplicating any of the publisher's work. - -6. If you want to violate copyright, there are two main cases where you -may do so: fair use, and with permission. The former is rather fuzzily -defined, but it includes such things as including small extracts of a -score in a critique, and making a large print or Braille copy for a blind -or partially-sighted performer (many people argue that in this case it -should always be kept with the original copy and/or destroyed after it is -no longer needed). The latter is obvious: You can always write to the -composer, arranger, editor, lyricist or publisher in subsubsection and ask if -you can do whatever it is you're trying to do. Some will respond more -readily than others, but anything that they say will override any copying -restrictions imposed on you. - -References - best one I know is the UK-based Performing Right Society, -@uref{http://www.prs.co.uk/} (especially "membership") and their links to other -international equivalents. -@end quotation - -Werner Lemberg @email{wl@@gnu.org} writes: - -@quotation - -Typesetting [at least in Austria or Germany, but not in France] [..] -isn't copyrighted -- typesetting is a handcraft, not an -art. - -What's copyrighted in an Urtext edition is the editor's comment or -the revision remarks, cadenzas added by the editor, etc. - -Urtext editions per se are @emph{not} copyrighted -- if you print -exactly what the composer has written, how can there some copyright be -added? Copyrighted are usually only the `Critical notes', the foreword, -and the cadenzas some editors have added. - -This means that the `Photocopying forbidden' sign in many scores is not -always correct for e.g. J.S. Bach -- you are allowed to copy the pages -which don't contain editorial stuff which is probably copyrighted. - -A very unfortunate situation for the publishers. - -@end quotation - - -Glen Prideaux, @email{glenprideaux@@MailAndNews.com}: - -@quotation -One has to be careful. In Australia typesetting IS covered by copyright, but -only for 25 years (as opposed to 50 years from the death of the -author/composer/artist for virtually any other copyright). If the -typesetting originates in a country that does not protect typesetting then -there may indeed be no copyright protection available to control the use of -mudela files. -@end quotation - -Juergen Reuter @email{reuterj@@ira.uka.de} - -[More information can be had at: ] - -@uref{http://lcweb.loc.gov/copyright/} -(USA copyright law) - -@uref{http://fairuse.stanford.edu/} -(meta site about copyright with many links to other resources) - -@uref{http://host.mpa.org/crc.html} -(copyright from the viewpoint of the USA music publishers' association) - -@uref{http://www.wipo.int} -(World Intellectual Property Organization (a UNO agency); with -information about international copyright) - -John Sankey: - -See @uref{http://www.geocities.com/Vienna/Studio/1714/harpsichord.html} -for a summary of copyright relative to old music, also for the -expert forum for such subsubsections. - -Benjy (benjy@@indiansprings.org) - -@quotation -(In the UK, the typesetting of a piece of music goes out of copyright 25 year\s -after it is published. Maybe you can tell me what copyright law says in othe\r -countries.) -@end quotation - -The US has had several schemes over the last century meaning that -anything published after January 1, 1923 and before 1964 requires that -you put in some work to determine its status. However, anything -published before 1923 is fair game in the US. See -@uref{http://www.loc.gov/copyright/circs/circ22.html} for the whole -twisted tale. - - -@node Windows32,, ,top -@section Windows32 - -@subsubsection I downloaded the windows32 port, and it doesn't match the website! - -The website is usually made from the latest snapshots. Binary releases, -in particular the windows32 binaries, are only made every once in a while. -They may lag several versions behind the latest version. - -@subsubsection But i want a native DOS/Windows-NT/95 port - -Reconsider. Try Linux. It's fun! - -@bye diff --git a/Documentation/index.texi b/Documentation/index.texi index 27708ff5eb..3b1f3e2258 100644 --- a/Documentation/index.texi +++ b/Documentation/index.texi @@ -14,7 +14,7 @@ @item @uref{../topdocs/out-www/README.html, Readme file} @item @uref{../topdocs/out-www/INSTALL.html, Installation instructions} @item @uref{CHANGES.html, Things recently done} -@item @uref{faq.html,FAQ: Frequently asked questions}, with answers +@item @uref{http://appel.lilypond.org/wiki/index.php3?LilyPondFaqs,Frequently asked questions}, with answers @end itemize @unnumberedsubsec Manuals diff --git a/Documentation/user/glossary.tely b/Documentation/user/glossary.tely index 96f04614f2..056942f976 100644 --- a/Documentation/user/glossary.tely +++ b/Documentation/user/glossary.tely @@ -1003,7 +1003,6 @@ enharmonisk, S: enharmonisk, N: . Two notes, intervals, or scales are enharmonic if they have different names but equal pitch. -@ @mudela[13pt,eps] \property Score.barNonAuto = ##t @@ -1044,9 +1043,7 @@ clef symbol indicates that the notes must be played an octave higher (for example bass recorder) while 8 below the clef symbol indicates playing an octave lower (for example on double bass @w{@ar{}@strong{strings}}). -@ -@c @ignore @mudela[13pt,eps] \property Score.barNonAuto = ##t \property Staff.clefStyle = #"fullSizeChanges" @@ -1075,14 +1072,12 @@ octave lower (for example on double bass @w{@ar{}@strong{strings}}). "octaved down" } @end mudela -@c @end ignore @item fermata I: corona, F: pause, D: Fermate, NL: fermate, DK: fermat, S: fermat, N: . Prolonged note or rest of indefinite duration. -@ @mudela[13pt,eps] \time 4/4; @@ -1112,7 +1107,6 @@ DK: fane, S: flagga, N: . Ornament at the end of the stem of a note used for notes with values less than a quarter note. The number of flags determines the @w{@ar{}@strong{note value}}. -@ @mudela[13pt,eps] \property Score.barNonAuto = ##t diff --git a/Documentation/user/properties.itely b/Documentation/user/properties.itely index 6bb4426d22..9d8e5c1bf1 100644 --- a/Documentation/user/properties.itely +++ b/Documentation/user/properties.itely @@ -56,7 +56,7 @@ TODO: longa notes which are square shaped as in the @code{'mensural} style. - @mudela[center,verbatim] +@mudela[center,verbatim] \score { \notes { \property Staff.barNonAuto = 1 @@ -540,7 +540,7 @@ no clef is printed upon creation. The different time signature characters are shown below with its names: - @mudela[center,verbatim] +@mudela[center,verbatim] \score { \notes\relative c'' { diff --git a/VERSION b/VERSION index 9e33a40e75..95d13cc813 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=92 -MY_PATCH_LEVEL=jcn1 +PATCH_LEVEL=93 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/aclocal.m4 b/aclocal.m4 index d1220794a6..a32e3bc02a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,5 +1,7 @@ dnl WARNING WARNING WARNING WARNING dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4 +dnl WARNING WARNING WARNING WARNING +dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4 dnl aclocal.m4 -*-shell-script-*- dnl StepMake subroutines for configure.in @@ -292,12 +294,6 @@ AC_DEFUN(AC_STEPMAKE_INIT, [ AUTOGENERATE="This file was automatically generated by configure" AC_SUBST(AUTOGENERATE) - STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null` - if test "x$STATE_VECTOR" != "x"; then - STATE_VECTOR="\$(depth)/$STATE_VECTOR" - fi - AC_SUBST(STATE_VECTOR) - CONFIGSUFFIX= AC_ARG_ENABLE(config, [ enable-config=FILE put configure settings in config-FILE.make], diff --git a/config.make.in b/config.make.in index bd7a13c042..0676f025c0 100644 --- a/config.make.in +++ b/config.make.in @@ -16,7 +16,6 @@ PACKAGE = @PACKAGE@ package = @package@ PACKAGE_NAME = @PACKAGE_NAME@ stepmake = @stepmake@ -state-vector = @STATE_VECTOR@ CONFIGSUFFIX = @CONFIGSUFFIX@ MAKEINFO = @MAKEINFO@ ICFLAGS = @ICFLAGS@ @@ -42,7 +41,6 @@ EXTRA_LIBES = @EXTRA_LIBES@ @LIBS@ TFM_PATH = @TFM_PATH@ RANLIB = @RANLIB@ DEFS = @DEFS@ -#SET_MAKE = @SET_MAKE@ DEFINES = @DEFS@ @DEFINES@ COMPILEINFO = @COMPILEINFO@ DOTEXE = @DOTEXE@ diff --git a/configure b/configure index 488d2dcbd7..6f9cf86255 100755 --- a/configure +++ b/configure @@ -76,8 +76,6 @@ ac_help="$ac_help enable-debugging set debug info. Default: on" ac_help="$ac_help enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)" -ac_help="$ac_help - enable-printing turn on debug printing. Default: off" ac_help="$ac_help with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale " ac_help="$ac_help @@ -629,7 +627,7 @@ fi fi echo $ac_n "checking Package""... $ac_c" 1>&6 -echo "configure:633: checking Package" >&5 +echo "configure:631: checking Package" >&5 if test "x$PACKAGE" = "xSTEPMAKE"; then echo "$ac_t""Stepmake package!" 1>&6 @@ -681,7 +679,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. fi echo $ac_n "checking for stepmake""... $ac_c" 1>&6 -echo "configure:685: checking for stepmake" >&5 +echo "configure:683: checking for stepmake" >&5 # Check for installed stepmake if test -d $stepmake; then echo "$ac_t""$stepmake" 1>&6 @@ -779,12 +777,6 @@ EOF AUTOGENERATE="This file was automatically generated by configure" - STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null` - if test "x$STATE_VECTOR" != "x"; then - STATE_VECTOR="\$(depth)/$STATE_VECTOR" - fi - - CONFIGSUFFIX= # Check whether --enable-config or --disable-config was given. if test "${enable_config+set}" = set; then @@ -803,7 +795,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:807: checking host system type" >&5 +echo "configure:799: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -828,7 +820,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:832: checking for $ac_word" >&5 +echo "configure:824: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -863,7 +855,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:867: checking for $ac_word" >&5 +echo "configure:859: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -900,7 +892,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:904: checking for $ac_word" >&5 +echo "configure:896: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -935,7 +927,7 @@ test -n "$TAR" || TAR="error" # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:939: checking for $ac_word" >&5 +echo "configure:931: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -975,7 +967,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:979: checking for $ac_word" >&5 +echo "configure:971: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1012,7 +1004,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1016: checking for $ac_word" >&5 +echo "configure:1008: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1053,7 +1045,7 @@ fi # Extract the first word of "${PYTHON:-python}", so it can be a program name with args. set dummy ${PYTHON:-python}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1057: checking for $ac_word" >&5 +echo "configure:1049: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1278,7 +1270,7 @@ EOF # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1282: checking for $ac_word" >&5 +echo "configure:1274: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1308,7 +1300,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1312: checking for $ac_word" >&5 +echo "configure:1304: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1359,7 +1351,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1363: checking for $ac_word" >&5 +echo "configure:1355: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1391,7 +1383,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1395: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1387: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1402,12 +1394,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1406 "configure" +#line 1398 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1433,12 +1425,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1437: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1429: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1442: checking whether we are using GNU C" >&5 +echo "configure:1434: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1447,7 +1439,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1443: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1466,7 +1458,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1470: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1462: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1512,7 +1504,7 @@ fi # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1516: checking how to run the C preprocessor" >&5 +echo "configure:1508: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1527,13 +1519,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1544,13 +1536,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1554: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1561,13 +1553,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1595,17 +1587,17 @@ for ac_hdr in assert.h sys/stat.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1599: checking for $ac_hdr" >&5 +echo "configure:1591: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1632,12 +1624,12 @@ fi done echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:1636: checking whether stat file-mode macros are broken" >&5 +echo "configure:1628: checking whether stat file-mode macros are broken" >&5 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1688,14 +1680,6 @@ EOF fi -printing_b=no -# Check whether --enable-printing or --disable-printing was given. -if test "${enable_printing+set}" = set; then - enableval="$enable_printing" - printing_b=$enableval -fi - - if test "$optimise_b" = yes; then DEFINES="$DEFINES -DSTRING_UTILS_INLINED" cat >> confdefs.h <<\EOF @@ -1704,17 +1688,9 @@ EOF fi -if test "$printing_b" = no; then - # ugh - cat >> confdefs.h <<\EOF -#define NPRINT 1 -EOF - - DEFINES="$DEFINES -DNPRINT" -fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1718: checking how to run the C++ preprocessor" >&5 +echo "configure:1694: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1727,12 +1703,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1712: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1769,7 +1745,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1773: checking for $ac_word" >&5 +echo "configure:1749: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1801,7 +1777,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1805: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1781: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1812,12 +1788,12 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext << EOF -#line 1816 "configure" +#line 1792 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:1821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1843,12 +1819,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1847: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1823: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1852: checking whether we are using GNU C++" >&5 +echo "configure:1828: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1857,7 +1833,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1861: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1837: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -1876,7 +1852,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}" ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1880: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1856: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1910,17 +1886,17 @@ fi ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1914: checking for FlexLexer.h" >&5 +echo "configure:1890: checking for FlexLexer.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1924: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1971,12 +1947,12 @@ fi echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 -echo "configure:1975: checking whether explicit instantiation is needed" >&5 +echo "configure:1951: checking whether explicit instantiation is needed" >&5 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < struct foo { static int baz; }; @@ -1986,7 +1962,7 @@ int main() { return foo::baz; ; return 0; } EOF -if { (eval echo configure:1990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lily_cv_need_explicit_instantiation=no else @@ -2013,7 +1989,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2017: checking for $ac_word" >&5 +echo "configure:1993: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2056,7 +2032,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2060: checking for $ac_word" >&5 +echo "configure:2036: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2091,7 +2067,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2095: checking for $ac_word" >&5 +echo "configure:2071: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2159,7 +2135,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2163: checking for $ac_word" >&5 +echo "configure:2139: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2192,7 +2168,7 @@ test -n "$AR" || AR="error" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2196: checking for $ac_word" >&5 +echo "configure:2172: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2248,7 +2224,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:2252: checking language" >&5 +echo "configure:2228: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -2284,7 +2260,7 @@ EOF echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:2288: checking for gettext in -lintl" >&5 +echo "configure:2264: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2292,7 +2268,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2336,12 +2312,12 @@ fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2340: checking for $ac_func" >&5 +echo "configure:2316: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2399,7 +2375,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2403: checking for $ac_word" >&5 +echo "configure:2379: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2430,7 +2406,7 @@ done test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh " echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6 -echo "configure:2434: checking whether msgfmt accepts -o" >&5 +echo "configure:2410: checking whether msgfmt accepts -o" >&5 msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" if test "$msgfmt_output" = ""; then echo "$ac_t""yes" 1>&6 @@ -2458,7 +2434,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2462: checking for $ac_word" >&5 +echo "configure:2438: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2494,7 +2470,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2498: checking for $ac_word" >&5 +echo "configure:2474: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2532,7 +2508,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2536: checking for $ac_word" >&5 +echo "configure:2512: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2568,7 +2544,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2572: checking for $ac_word" >&5 +echo "configure:2548: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2607,7 +2583,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2611: checking for $ac_word" >&5 +echo "configure:2587: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2643,7 +2619,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2647: checking for $ac_word" >&5 +echo "configure:2623: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2681,7 +2657,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2685: checking for $ac_word" >&5 +echo "configure:2661: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2717,7 +2693,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2721: checking for $ac_word" >&5 +echo "configure:2697: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2751,7 +2727,7 @@ test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost" fi echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6 -echo "configure:2755: checking for working metafont mode" >&5 +echo "configure:2731: checking for working metafont mode" >&5 modelist='ljfour lj4 lj3 lj2 ljet laserjet' for MFMODE in $modelist; do $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1 @@ -2762,7 +2738,7 @@ echo "configure:2755: checking for working metafont mode" >&5 echo "$ac_t""$MFMODE" 1>&6 echo $ac_n "checking for mfplain.mp""... $ac_c" 1>&6 -echo "configure:2766: checking for mfplain.mp" >&5 +echo "configure:2742: checking for mfplain.mp" >&5 # # For now let people define these in their environments # @@ -2770,7 +2746,7 @@ echo "configure:2766: checking for mfplain.mp" >&5 echo "$ac_t""$MFPLAIN_MP" 1>&6 echo $ac_n "checking for inimetapost flags""... $ac_c" 1>&6 -echo "configure:2774: checking for inimetapost flags" >&5 +echo "configure:2750: checking for inimetapost flags" >&5 if test ${INIMETAPOST} = "inimp" ; then : ${INIMETAPOST_FLAGS=''} else @@ -2803,7 +2779,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2807: checking for $ac_word" >&5 +echo "configure:2783: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2834,7 +2810,7 @@ done test -n "$KPSEWHICH" || KPSEWHICH="no" echo $ac_n "checking for tfm path""... $ac_c" 1>&6 -echo "configure:2838: checking for tfm path" >&5 +echo "configure:2814: checking for tfm path" >&5 TFM_FONTS="cmr msam" @@ -2862,13 +2838,13 @@ echo "configure:2838: checking for tfm path" >&5 ## First, let's just see if we can find Guile at all. echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6 -echo "configure:2866: checking "for guile-config"" >&5 +echo "configure:2842: checking "for guile-config"" >&5 for guile_config in guile-config $target-guile-config $build-guile-config; do echo "$ac_t"""$guile_config"" 1>&6 if ! $guile_config --version > /dev/null 2>&1 ; then echo "configure: warning: "cannot execute $guile_config"" 1>&2 echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6 -echo "configure:2872: checking "if we are cross compiling"" >&5 +echo "configure:2848: checking "if we are cross compiling"" >&5 guile_config=error else break @@ -2879,7 +2855,7 @@ echo "configure:2872: checking "if we are cross compiling"" >&5 exit 1 fi echo $ac_n "checking "Guile version"""... $ac_c" 1>&6 -echo "configure:2883: checking "Guile version"" >&5 +echo "configure:2859: checking "Guile version"" >&5 need_guile_version="1.3.4" guile_version=`expr "\`$guile_config --version 2>&1\`" : ".*\($need_guile_version\).*"` echo "$ac_t"""$guile_version"" 1>&6 @@ -2892,7 +2868,7 @@ echo "configure:2883: checking "Guile version"" >&5 ## The GUILE_FLAGS macro. echo $ac_n "checking for Guile""... $ac_c" 1>&6 -echo "configure:2896: checking for Guile" >&5 +echo "configure:2872: checking for Guile" >&5 if ! $guile_config link > /dev/null ; then echo "$ac_t"""cannot execute $guile_config"" 1>&6 { echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; } @@ -2907,7 +2883,7 @@ echo "configure:2896: checking for Guile" >&5 # Extract the first word of "guile", so it can be a program name with args. set dummy guile; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2911: checking for $ac_word" >&5 +echo "configure:2887: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2957,17 +2933,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2961: checking for $ac_hdr" >&5 +echo "configure:2937: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2971: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2994,7 +2970,7 @@ fi done echo $ac_n "checking for kpse_find_file in -lkpathsea""... $ac_c" 1>&6 -echo "configure:2998: checking for kpse_find_file in -lkpathsea" >&5 +echo "configure:2974: checking for kpse_find_file in -lkpathsea" >&5 ac_lib_var=`echo kpathsea'_'kpse_find_file | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3002,7 +2978,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lkpathsea $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3049,12 +3025,12 @@ fi for ac_func in kpse_find_file do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3053: checking for $ac_func" >&5 +echo "configure:3029: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3109,7 +3085,7 @@ done fi echo $ac_n "checking whether to use kpathsea""... $ac_c" 1>&6 -echo "configure:3113: checking whether to use kpathsea" >&5 +echo "configure:3089: checking whether to use kpathsea" >&5 if test $kpathsea_b = yes; then echo "$ac_t""yes" 1>&6 KPATHSEA=1 @@ -3127,7 +3103,7 @@ EOF echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3131: checking for 8-bit clean memcmp" >&5 +echo "configure:3107: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3135,7 +3111,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -3166,12 +3142,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:3170: checking for vprintf" >&5 +echo "configure:3146: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -3221,12 +3197,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:3225: checking for _doprnt" >&5 +echo "configure:3201: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -3279,12 +3255,12 @@ fi for ac_func in memmem snprintf vsnprintf gettext isinf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3283: checking for $ac_func" >&5 +echo "configure:3259: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3349,7 +3325,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3353: checking for $ac_word" >&5 +echo "configure:3329: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3382,7 +3358,7 @@ test -n "$MAKEINFO" || MAKEINFO="error" # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3386: checking for $ac_word" >&5 +echo "configure:3362: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3556,7 +3532,6 @@ s%@PACKAGE@%$PACKAGE%g s%@PACKAGE_NAME@%$PACKAGE_NAME%g s%@package_depth@%$package_depth%g s%@AUTOGENERATE@%$AUTOGENERATE%g -s%@STATE_VECTOR@%$STATE_VECTOR%g s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g s%@host@%$host%g s%@host_alias@%$host_alias%g diff --git a/configure.in b/configure.in index aa3f16f08f..c4cf39588c 100644 --- a/configure.in +++ b/configure.in @@ -17,21 +17,11 @@ AC_STEPMAKE_COMPILE AC_HAVE_HEADERS(assert.h sys/stat.h) AC_HEADER_STAT -printing_b=no -AC_ARG_ENABLE(printing, - [ enable-printing turn on debug printing. Default: off], - [printing_b=$enableval]) - if test "$optimise_b" = yes; then DEFINES="$DEFINES -DSTRING_UTILS_INLINED" AC_DEFINE(STRINGS_UTILS_INLINED) fi -if test "$printing_b" = no; then - # ugh - AC_DEFINE(NPRINT) - DEFINES="$DEFINES -DNPRINT" -fi AC_STEPMAKE_CXX AC_STEPMAKE_GXX diff --git a/dstreamrc b/dstreamrc deleted file mode 100644 index 479e6c5915..0000000000 --- a/dstreamrc +++ /dev/null @@ -1,157 +0,0 @@ -# This file controls which classes produce debugging output -# rename to .dstreamrc and place in the directory where you're doing -# the debugging. - -# Set this to 1 to get default silence for unlisted classes -Dstream_default_silence 0 - -# In any case: for listed classes: -# 0: verbose -# 1: silent - -# class name silence? - -Dstream 0 - -# yydebug -InitParser 1 -Parser 1 -InitDeclarations 1 -Declarations 1 -yyparse 1 -# FlexLexer debug -InitLexer 1 -Lexer 1 - -My_lily_lexer 1 - -walking 1 - -# flower lib -File_path 1 -Matrix 1 -Vector 1 - -# lily -Absolute_dynamic_req 1 -Atom 1 -Axis_group_administration 1 -Axis_group_spanner 1 -Articulation_req 1 -Auto_beam_engraver 1 -Audio_column 1 -Audio_element 1 -Audio_item 1 -Audio_note 1 -Bar 1 -Bar_req 1 -Beam 1 -Bezier 1 -Bezier_bow 1 -Bezier_bow_controls 1 -Bezier_controls 1 -Bow 1 -Change_iterator 1 -Change_translator 1 -Chord 1 -Chord_iterator 1 -Clef_item 1 -Clef_change_req 1 -Col_configuration 1 -Col_hpositions 1 -Collision 1 -Column_info 1 -Column_rod 1 -Duration_identifier 1 -Engraver 1 -Engraver_group_engraver 1 -General_script_def 1 -Global_translator 1 -Graphical_element 1 -Graphical_axis_group 1 -Group_change_req 1 -Guile 1 -Head_column 1 -Horizontal_align_item 1 -Horizontal_group_item 1 -Idealspacing 1 -Identifier 1 -Ineq_constrained_qp 1 -Input_translator 1 -int_identifier 1 -Item 1 -Key_item 1 -Lookup 1 -Line_spacer 1 -Melodic_req 1 -Midi_def 1 -Midistrings 1 -Mixed_qp 1 -Music 1 -Musical_pitch 1 -Music_iterator 1 -Music_output_def 1 -Note_column 1 -Note_head 1 -Note_performer 1 -Note_req 1 -Paper_column 1 -Paper_outputter 1 -Paper_score 1 -Paper_def 1 -Partial_measure_req 1 -Performance 1 -Performer 1 -Performer_group_performer 1 -Real_identifier 1 -Request 1 -Request_iterator 1 -Rest_collision 1 -Rest_collision_engraver 1 -Rest_req 1 -Rhythmic_head 1 -Rhythmic_req 1 -Scope 1 -Score 1 -Score_column 1 -Score_element 1 -Score_engraver 1 -Score_performer 1 -Script_column 1 -Script_def 1 -Script_req 1 -Single_malt_grouping_item 1 -Slur 1 -Spacer_rod 1 -Spacing_problem 1 -Span_req 1 -Span_dynamic_req 1 -Spanner 1 -Spring_spacer 1 -Skip_req 1 -Staff_commands 1 -Staff_symbol 1 -Stem 1 -Stem_info 0 -Stem_req 1 -String_identifier 1 -Relative_octave_music 1 -Symtable 1 -Symtables 1 - -Text_def 1 -Text_item 1 -Text_req 1 -Text_script_req 1 -Time_description 1 -Time_signature_change_req 1 -Translation_property 1 -Translator 1 -Translator_group 1 -Voice 1 -Voice_iterator 1 -Word_wrap 1 - -delete_identifiers 1 -parse_duration 1 -parse_pitchmod 1 diff --git a/input/trip.ly b/input/trip.ly index ed3e877acd..7f55ece974 100644 --- a/input/trip.ly +++ b/input/trip.ly @@ -67,7 +67,7 @@ praeludiumLeft = \notes \relative c { dis2 cis4 r8 cis } \context Voice = one { \stemup bis2 } \context Voice = three { - \property Voice.dynamicDirection = \down + \property Voice.basicDynamicLineSpannerProperties \push #'direction = #-1 \stemup \shifton r4 gis ~ [gis8 \< @@ -98,23 +98,23 @@ fugaIIRight = \notes \relative c'' { \context Staff \notes\relative c''< \context Voice=one { - \property Voice.horizontalNoteShift=0 - \property Voice.verticalDirection=1 + \shiftoff + \stemup e4 } \context Voice=two { - \property Voice.verticalDirection=1 - \property Voice.horizontalNoteShift=1 + \shifton + \stemup cis } \context Voice=three { - \property Voice.horizontalNoteShift=2 - \property Voice.verticalDirection=1 + \shiftonn + \stemup ais } \context Voice=four { - \property Voice.verticalDirection=-1 - \property Voice.horizontalNoteShift=-1 + \shiftonnn + \stemup fis } > diff --git a/lily/a2-engraver.cc b/lily/a2-engraver.cc index 88d86648c6..34039b43ea 100644 --- a/lily/a2-engraver.cc +++ b/lily/a2-engraver.cc @@ -43,6 +43,8 @@ A2_engraver::A2_engraver () void A2_engraver::do_process_music () { + if (!to_boolean (get_property ("combineParts"))) + return ; if (!text_p_) { SCM unison = get_property ("unison"); @@ -89,6 +91,9 @@ A2_engraver::do_process_music () void A2_engraver::acknowledge_element (Score_element_info i) { + if (!to_boolean (get_property ("combineParts"))) + return ; + if (text_p_) { if (Note_head::has_interface (i.elem_l_)) diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index d7ec2a94fb..ab4d17759c 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -44,7 +44,10 @@ Adobe_font_metric * All_font_metrics::find_afm (String name) { SCM sname = ly_symbol2scm (name.ch_C ()); - if (!afm_p_dict_->elem_b (sname)) + + SCM val; + + if (!afm_p_dict_->try_retrieve (sname, &val)) { String path; @@ -63,17 +66,19 @@ All_font_metrics::find_afm (String name) if (verbose_global_b) progress_indication ("[" + path); - SCM afm = read_afm_file (path); + val = read_afm_file (path); - unsmob_metrics (afm)->name_ = sname; + unsmob_metrics (val)->name_ = sname; if (verbose_global_b) progress_indication ("]"); - afm_p_dict_->set (sname,afm); + afm_p_dict_->set (sname,val); + + } - return dynamic_cast (unsmob_metrics (afm_p_dict_->get (sname))); + return dynamic_cast (unsmob_metrics (val)); } Scaled_font_metric * @@ -82,25 +87,26 @@ All_font_metrics::find_scaled (String nm, int m) String index = nm + "@" + to_str (m); SCM sname = ly_symbol2scm (index.ch_C ()); - Font_metric *fm =0; - if (!scaled_p_dict_->elem_b (sname)) + SCM val; + + if (!scaled_p_dict_->try_retrieve (sname, &val)) { Font_metric *f = find_font (nm); - SCM s = Scaled_font_metric::make_scaled_font_metric (f, m); - scaled_p_dict_->set (sname, s); - fm = unsmob_metrics (s); + val = Scaled_font_metric::make_scaled_font_metric (f, m); + scaled_p_dict_->set (sname, val); } - else - fm = unsmob_metrics (scaled_p_dict_->get (sname)); + - return dynamic_cast (fm); + return dynamic_cast (unsmob_metrics (val)); } Tex_font_metric * All_font_metrics::find_tfm (String name) { - SCM sname = ly_symbol2scm (name.ch_C ()); - if (!tfm_p_dict_->elem_b (sname)) + SCM sname = ly_symbol2scm (name.ch_C ()); + + SCM val; + if (!tfm_p_dict_->try_retrieve (sname, &val)) { String path; @@ -118,17 +124,16 @@ All_font_metrics::find_tfm (String name) if (verbose_global_b) progress_indication ("[" + path); - SCM tfm = Tex_font_metric::make_tfm (path); + val = Tex_font_metric::make_tfm (path); if (verbose_global_b) progress_indication ("]"); - Font_metric *fm = unsmob_metrics (tfm); - fm->name_ = sname; - tfm_p_dict_->set (sname, tfm); + unsmob_metrics (val)->name_ = sname; + tfm_p_dict_->set (sname, val); } return - dynamic_cast (unsmob_metrics (tfm_p_dict_->get(sname))); + dynamic_cast (unsmob_metrics (val)); } diff --git a/lily/audio-column.cc b/lily/audio-column.cc index 1dde79a5e9..b29f09982c 100644 --- a/lily/audio-column.cc +++ b/lily/audio-column.cc @@ -31,15 +31,4 @@ Audio_column::at_mom() const return at_mom_; } -void -Audio_column::print() const -{ -#ifndef NPRINT - DEBUG_OUT << "Audio_column {"; - DEBUG_OUT << "at: " << at_mom_ << ". Contains:"; - for (int i =0; i < audio_item_l_arr_.size (); i++) - DEBUG_OUT << classname (audio_item_l_arr_[i]) << ", "; - DEBUG_OUT << "\n}\n"; -#endif -} diff --git a/lily/audio-element.cc b/lily/audio-element.cc index 39fbe8f178..9eff747eb4 100644 --- a/lily/audio-element.cc +++ b/lily/audio-element.cc @@ -18,17 +18,4 @@ Audio_element::~Audio_element() { } -void -Audio_element::print () const -{ -#ifndef NPRINT - DEBUG_OUT << classname (this) << "{ "; - do_print (); - DEBUG_OUT << "}"; -#endif -} -void -Audio_element::do_print ()const -{ -} diff --git a/lily/audio-item.cc b/lily/audio-item.cc index 4e771ca08e..b4d358c7f7 100644 --- a/lily/audio-item.cc +++ b/lily/audio-item.cc @@ -83,14 +83,5 @@ Audio_tie::set_note (Direction d, Audio_note* note_l) // add_dependency (head_l); } -void -Audio_item::do_print () const -{ -#ifndef NPRINT - if (audio_column_l_) - { - DEBUG_OUT << "at: "<< audio_column_l_->at_mom (); - } -#endif -} + diff --git a/lily/bar.cc b/lily/bar.cc index 721c807da4..80dad453c0 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -133,22 +133,12 @@ Bar::before_line_breaking (SCM smob) SCM g = me->get_elt_property ("glyph"); SCM orig = g; Direction bsd = item->break_status_dir (); - if (gh_string_p (g)) + if (gh_string_p (g) && bsd) { - if (bsd) - { - SCM breakdir = gh_int2scm (bsd); - g = scm_eval2 (gh_list (ly_symbol2scm ("break-barline"), - g, - breakdir, - SCM_UNDEFINED), - SCM_EOL); - } - } - else - { - g = SCM_EOL; + SCM proc = me->get_elt_property ("break-glyph-function"); + g = gh_call2 (proc, g, gh_int2scm (bsd)); } + if (!gh_string_p (g)) { diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index d8c5f6d2b2..ad1f1cbb47 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -110,12 +110,12 @@ Break_align_interface::do_alignment (Score_element *me) } else next_origin = ly_symbol2scm ("begin-of-note"); - + + SCM alist = me->get_elt_property ("space-alist"); SCM e = scm_assoc (scm_listify (current_origin, next_origin, - SCM_UNDEFINED), - scm_eval2 (ly_symbol2scm ("space-alist"), SCM_EOL)); - + SCM_UNDEFINED), alist); + SCM extra_space; if (e != SCM_BOOL_F) { diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index f6225e51e1..4810dec72e 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -42,7 +42,6 @@ Breathing_sign::offset_callback (Score_element * b, Axis a) { Score_element * me = (Score_element*)b; - Real space = Staff_symbol_referencer::staff_space (b); Direction d = Directional_element_interface::get (b); if (!d) { @@ -50,7 +49,9 @@ Breathing_sign::offset_callback (Score_element * b, Axis a) Directional_element_interface::set (me, d); } - return 2.0 * space * d; + Real inter_f = Staff_symbol_referencer::staff_space (me)/2; + int sz = Staff_symbol_referencer::line_count (me)-1; + return inter_f * sz * d; } void diff --git a/lily/change-translator.cc b/lily/change-translator.cc index b0144488be..144aefd229 100644 --- a/lily/change-translator.cc +++ b/lily/change-translator.cc @@ -11,9 +11,3 @@ -void -Change_translator::do_print () const -{ - DEBUG_OUT << "change " << change_to_type_str_ << " to " << change_to_id_str_ ; -} - diff --git a/lily/chord-name.cc b/lily/chord-name.cc index 3d786acc81..80955b20d7 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -152,27 +152,23 @@ MAKE_SCHEME_CALLBACK (Chord_name, brew_molecule); SCM Chord_name::brew_molecule (SCM smob) { - Score_element *sc = unsmob_element (smob); - SCM style = sc->get_elt_property ("style"); + Score_element *me = unsmob_element (smob); + SCM style = me->get_elt_property ("style"); if (!gh_string_p (style)) style = ly_str02scm ("banter"); - SCM inversion = sc-> get_elt_property ("inversion"); + SCM inversion = me-> get_elt_property ("inversion"); if (inversion == SCM_EOL) inversion = SCM_BOOL_F; - SCM bass = sc->get_elt_property ("bass"); + SCM bass = me->get_elt_property ("bass"); if (bass == SCM_EOL) bass = SCM_BOOL_F; - SCM pitches = sc->get_elt_property ("pitches"); - SCM text = scm_eval2 (gh_list (ly_symbol2scm ("chord::user-name"), - style, - ly_quote_scm (pitches), - ly_quote_scm (gh_cons (inversion, bass)), - SCM_UNDEFINED), - SCM_EOL); + SCM pitches = me->get_elt_property ("pitches"); + SCM func = me->get_elt_property (ly_symbol2scm ("chord-name-function")); + SCM text = gh_call3 (func, style, ly_quote_scm (pitches), ly_quote_scm (gh_cons (inversion, bass))); - return ly_text2molecule (sc, text).create_scheme (); + return ly_text2molecule (me, text).create_scheme (); } diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index d448e71648..64443eb18b 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -219,8 +219,7 @@ Clef_engraver::do_pre_move_processing() SCM vis = 0; if(to_boolean (clef_p_->get_elt_property("non-default"))) { - vis = ly_symbol2scm ("all-visible"); - vis = scm_eval2 (vis, SCM_EOL); + vis = get_property ("explicitClefVisibility"); } if (vis) diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 1b3adc4d4c..b3ce53051e 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -13,7 +13,7 @@ #include "item.hh" /* -FIXME: should use symbol. +FIXME: should use symbol for #'style. */ MAKE_SCHEME_CALLBACK(Clef,before_line_breaking); diff --git a/lily/command-request.cc b/lily/command-request.cc index 1aaaea84ea..8ea0ef54dd 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -23,13 +23,6 @@ Barcheck_req::do_equal_b (Request const *r) const return b; } -void -Clef_change_req::do_print () const -{ -#ifndef NPRINT - DEBUG_OUT << clef_str_ ; -#endif -} Clef_change_req::Clef_change_req (String s) { @@ -37,14 +30,6 @@ Clef_change_req::Clef_change_req (String s) } -void -Time_signature_change_req::do_print () const -{ -#ifndef NPRINT - DEBUG_OUT << beats_i_ << "/" << one_beat_i_; -#endif -} - bool Time_signature_change_req::do_equal_b (Request const *r) const { @@ -68,11 +53,6 @@ Tempo_req::Tempo_req () dur_. durlog_i_ = 2; } -void -Tempo_req::do_print () const -{ - DEBUG_OUT << dur_.str () << " = " << metronome_i_; -} bool diff --git a/lily/dots.cc b/lily/dots.cc index c249d6a1cf..25e4cec7dd 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -26,9 +26,7 @@ Dots::quantised_position_callback (Score_element * me, Axis a) if (!Directional_element_interface::get (me)) Directional_element_interface::set (me, UP); - - int pos = int (Staff_symbol_referencer::position_f (me)); - if (!(pos % 2)) + if (Staff_symbol_referencer::on_staffline (me)) return Staff_symbol_referencer::staff_space (me) / 2.0 * Directional_element_interface::get (me); } diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index 1a7ac9e2c6..2ab1550fdb 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -28,7 +28,6 @@ public: ~Dynamic_performer (); protected: - void do_print () const; virtual bool do_try_music (Music* req_l); virtual void do_process_music (); virtual void do_pre_move_processing (); @@ -50,31 +49,24 @@ Dynamic_performer::~Dynamic_performer () { } -void -Dynamic_performer::do_print () const -{ -#ifndef NPRINT - if (text_script_req_l_) - text_script_req_l_->print (); -#endif -} void Dynamic_performer::do_process_music () { if (text_script_req_l_) { - - SCM s = scm_eval2 - (gh_list - (ly_symbol2scm ("dynamic-absolute-volume"), - ly_quote_scm (ly_str02scm (text_script_req_l_->text_str_.ch_C ())), - SCM_UNDEFINED), - SCM_EOL); - Real volume = gh_scm2double (scm_eval2 (ly_symbol2scm ("dynamic-default-volume"), SCM_EOL)); - if (gh_number_p (s)) - volume = gh_scm2double (s); - + SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); + + SCM svolume = SCM_EOL; + if (gh_procedure_p (proc)) + { + svolume = gh_call1 (proc, ly_str02scm (text_script_req_l_->text_str_.ch_C ())); + } + + Real volume = 0.5; + if (gh_number_p (svolume)) + volume = gh_scm2double (svolume); + /* properties override default equaliser setting */ @@ -94,7 +86,7 @@ Dynamic_performer::do_process_music () /* urg, code duplication:: staff_performer */ - s = get_property ("midiInstrument"); + SCM s = get_property ("midiInstrument"); if (!gh_string_p(s)) s = get_property ("instrument"); @@ -103,9 +95,12 @@ Dynamic_performer::do_process_music () s = ly_str02scm ("piano"); - s = scm_eval2 (gh_list (ly_symbol2scm ("instrument-equaliser"), - s, SCM_UNDEFINED), - SCM_EOL); + SCM eq = get_property ("instrumentEqualizer"); + if (gh_procedure_p (eq)) + { + s = gh_call1 (eq, s); + } + if (gh_pair_p (s)) { Interval iv; diff --git a/lily/global-translator.cc b/lily/global-translator.cc index 1713ce3736..ad3b7d0a8a 100644 --- a/lily/global-translator.cc +++ b/lily/global-translator.cc @@ -92,7 +92,6 @@ Global_translator::run_iterator_on_me (Music_iterator * iter) { w = iter->pending_moment(); - DEBUG_OUT << "proccing: " << w << '\n'; } w = sneaky_insert_extra_moment (w); diff --git a/lily/identifier.cc b/lily/identifier.cc index bedc2f9dfd..d46460f71b 100644 --- a/lily/identifier.cc +++ b/lily/identifier.cc @@ -61,28 +61,6 @@ Identifier::do_str () const return ""; } -void -Identifier::print () const -{ - DEBUG_OUT << "identifier "; - do_print (); -} -void -Identifier::do_print () const -{ -} - -/* ugh. */ -#define DEFAULT_PRINT(Class) \ -void \ -Class ## _identifier::do_print () const { \ - Class *cl = ((Class ## _identifier *)this)->access_content_ ## Class(false);\ - cl->print (); \ -} - - -DEFAULT_PRINT(Score); -DEFAULT_PRINT(Music_output_def); /* ugh. */ #define DUMMY_STR(Class) \ @@ -95,15 +73,6 @@ DUMMY_STR(Score); DUMMY_STR(Music_output_def); DUMMY_STR(Duration); -#define STRING_PRINT(Class) \ -void \ -Class ## _identifier::do_print () const\ -{\ - DEBUG_OUT << do_str () << '\n';\ -}\ - - -STRING_PRINT(Duration); #define DEFAULT_STR(Class) \ String \ diff --git a/lily/include/audio-element.hh b/lily/include/audio-element.hh index 6dff0e01f7..a8d79fc0e5 100644 --- a/lily/include/audio-element.hh +++ b/lily/include/audio-element.hh @@ -19,13 +19,12 @@ public: Audio_element (); virtual ~Audio_element (); - void print () const; + // should we use a scm list? bool grace_b_; protected: - virtual void do_print () const; }; #endif // AUDIO_ELEMENT_HH diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index b06ab920c9..e8ced6a64b 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -29,8 +29,6 @@ public: Audio_column* audio_column_l_; -protected: - virtual void do_print () const; private: Audio_item (Audio_item const&); diff --git a/lily/include/change-translator.hh b/lily/include/change-translator.hh index af18db7eb3..7dc774ca37 100644 --- a/lily/include/change-translator.hh +++ b/lily/include/change-translator.hh @@ -20,7 +20,6 @@ public: protected: VIRTUAL_COPY_CONS(Music); - void do_print () const; }; diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index 875024650c..078e02dd2f 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -48,7 +48,7 @@ public: Tempo_req(); protected: - virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); bool do_equal_b (Request const *) const; }; @@ -64,7 +64,7 @@ public: Time_signature_change_req(); protected: - virtual void do_print () const; + bool do_equal_b (Request const *) const; VIRTUAL_COPY_CONS(Music); }; @@ -111,7 +111,7 @@ public: String clef_str_; Clef_change_req (String); protected: - virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); }; diff --git a/lily/include/engraver-group-engraver.hh b/lily/include/engraver-group-engraver.hh index dffbfd18ef..dd378bf0e0 100644 --- a/lily/include/engraver-group-engraver.hh +++ b/lily/include/engraver-group-engraver.hh @@ -27,6 +27,9 @@ class Engraver_group_engraver : public Engraver, { protected: Array announce_info_arr_; + + + public: VIRTUAL_COPY_CONS(Translator); diff --git a/lily/include/identifier.hh b/lily/include/identifier.hh index 2e39b1ff47..7f87c08b8f 100644 --- a/lily/include/identifier.hh +++ b/lily/include/identifier.hh @@ -49,7 +49,7 @@ struct Identifier : public Input { DECLARE_SMOBS(Identifier, foo); protected: - virtual void do_print () const; + virtual String do_str () const; }; @@ -62,7 +62,7 @@ struct Class ## _identifier : Identifier {\ VIRTUAL_COPY_CONS(Identifier);\ virtual Class* access_content_ ## Class (bool copy_b) const;\ ~Class ## _identifier();\ - virtual void do_print () const; \ + \ virtual String do_str () const; \ }\ diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 7d5bef2265..bc9287c763 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -33,8 +33,6 @@ */ SCM ly_str02scm (char const*c); SCM ly_deep_copy (SCM); - - SCM ly_symbol2scm (char const *); String ly_scm2string (SCM s); String ly_symbol2string (SCM); @@ -83,6 +81,13 @@ SCM index_set_cell (SCM cellp, Direction d, SCM val); void add_scm_init_func (void (*)()); +typedef SCM(*Scheme_function_unknown)(); + +#if __GNUC_MINOR__ >= 96 +typedef SCM(*Scheme_function_1)(SCM); +#else +typedef SCM(*Scheme_function_1)(...); +#endif #define MAKE_SCHEME_CALLBACK(TYPE, FUNC) \ static SCM TYPE ## _ ## FUNC ## _proc;\ @@ -90,7 +95,7 @@ void \ TYPE ## _ ## FUNC ## _init_functions () \ { \ TYPE ## _ ## FUNC ## _proc = gh_new_procedure1_0 (#TYPE "::" #FUNC, \ - (SCM(*)(SCM))TYPE :: FUNC); \ + ((Scheme_function_1)TYPE :: FUNC)); \ } \ \ ADD_SCM_INIT_FUNC(TYPE ## _ ## FUNC ## _callback, TYPE ## _ ## FUNC ## _init_functions); \ diff --git a/lily/include/lyric-combine-music.hh b/lily/include/lyric-combine-music.hh index a4a47c2a43..9b121ff0d7 100644 --- a/lily/include/lyric-combine-music.hh +++ b/lily/include/lyric-combine-music.hh @@ -20,7 +20,7 @@ public: Lyric_combine_music (Music*, Music*); virtual void transpose (Musical_pitch); - virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); virtual Moment length_mom () const; virtual Musical_pitch to_relative_octave (Musical_pitch); diff --git a/lily/include/lyric-performer.hh b/lily/include/lyric-performer.hh index 89890b4982..9bb48d0b74 100644 --- a/lily/include/lyric-performer.hh +++ b/lily/include/lyric-performer.hh @@ -20,7 +20,7 @@ public: Lyric_performer (); protected: - void do_print() const; + virtual bool do_try_music (Music* req_l); virtual void do_process_music(); virtual void do_pre_move_processing (); diff --git a/lily/include/music-output-def.hh b/lily/include/music-output-def.hh index a5c5c8d152..e60743cb25 100644 --- a/lily/include/music-output-def.hh +++ b/lily/include/music-output-def.hh @@ -29,7 +29,7 @@ public: Music_output_def (); virtual ~Music_output_def (); virtual int get_next_default_count () const; - virtual void print () const; + Global_translator *get_global_translator_p (); Translator_group *get_group_translator_p (String type) const; diff --git a/lily/include/music-sequence.hh b/lily/include/music-sequence.hh index 736d4abf98..6e88236e33 100644 --- a/lily/include/music-sequence.hh +++ b/lily/include/music-sequence.hh @@ -34,7 +34,7 @@ public: protected: virtual Musical_pitch to_relative_octave (Musical_pitch); - virtual void do_print() const; + }; #endif diff --git a/lily/include/music-wrapper.hh b/lily/include/music-wrapper.hh index 76987deac5..d5227830a7 100644 --- a/lily/include/music-wrapper.hh +++ b/lily/include/music-wrapper.hh @@ -25,7 +25,7 @@ public: Music_wrapper (Music*); Music * element () const; virtual void transpose (Musical_pitch); - virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); virtual Moment length_mom () const; diff --git a/lily/include/music.hh b/lily/include/music.hh index 9e50aa0998..dbcfccf687 100644 --- a/lily/include/music.hh +++ b/lily/include/music.hh @@ -59,7 +59,7 @@ public: Music (Music const &m); Music(); protected: - virtual void do_print() const; + DECLARE_SMOBS(Music,); SCM immutable_property_alist_; SCM mutable_property_alist_; diff --git a/lily/include/musical-pitch.hh b/lily/include/musical-pitch.hh index 079de76c8f..ed9f63857a 100644 --- a/lily/include/musical-pitch.hh +++ b/lily/include/musical-pitch.hh @@ -46,7 +46,7 @@ struct Musical_pitch : public Input void up_to (int); void down_to (int); String str () const; - void print () const; + SCM to_scm () const; }; diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index ee5728441c..0c2d6f928d 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -23,7 +23,7 @@ class Rhythmic_req : public virtual Request { public: Duration duration_; - virtual void do_print () const; + bool do_equal_b (Request const*) const; void compress (Moment); @@ -42,7 +42,7 @@ struct Tremolo_req : public Request { VIRTUAL_COPY_CONS (Music); Tremolo_req (); int type_i_; - virtual void do_print () const; + }; @@ -50,7 +50,7 @@ struct Tremolo_req : public Request { */ class Lyric_req : public Rhythmic_req { public: - virtual void do_print () const; + String text_str_; VIRTUAL_COPY_CONS(Music); }; @@ -62,7 +62,7 @@ public: String articulation_str_; protected: virtual bool do_equal_b (Request const*) const; - virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); }; @@ -75,7 +75,7 @@ public: protected: VIRTUAL_COPY_CONS(Music); virtual bool do_equal_b (Request const*)const; - virtual void do_print () const; + }; @@ -90,7 +90,7 @@ protected: /// transpose. #delta# is relative to central c. virtual void transpose (Musical_pitch delta); virtual bool do_equal_b (Request const*) const; - virtual void do_print () const; + VIRTUAL_COPY_CONS(Music); }; @@ -122,7 +122,7 @@ public: bool cautionary_b_; Note_req(); protected: - virtual void do_print () const; + bool do_equal_b (Request const*) const; VIRTUAL_COPY_CONS(Music); }; diff --git a/lily/include/note-performer.hh b/lily/include/note-performer.hh index 6b0f607ade..574e695224 100644 --- a/lily/include/note-performer.hh +++ b/lily/include/note-performer.hh @@ -23,7 +23,7 @@ public: protected: virtual void do_process_music (); virtual bool do_try_music (Music *req_l) ; - virtual void do_print () const; + virtual void do_pre_move_processing (); virtual void process_acknowledged (); Global_translator* global_translator_l (); diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index 3898a1ae18..17847564c6 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -66,7 +66,7 @@ public: Paper_def (Paper_def const&); Interval line_dimensions_int (int) const; - void print () const; + Lookup const * lookup_l (int sz) const; // TODO naming virtual int get_next_default_count () const; static void reset_default_count(); diff --git a/lily/include/part-combine-music.hh b/lily/include/part-combine-music.hh index 102de3ad06..1c91b340f2 100644 --- a/lily/include/part-combine-music.hh +++ b/lily/include/part-combine-music.hh @@ -23,7 +23,7 @@ public: Music * second_l () const; virtual void transpose (Musical_pitch); - virtual void do_print () const; + virtual Moment length_mom () const; virtual Musical_pitch to_relative_octave (Musical_pitch); virtual void compress (Moment); diff --git a/lily/include/relative-music.hh b/lily/include/relative-music.hh index 53e770f76a..a861d451bc 100644 --- a/lily/include/relative-music.hh +++ b/lily/include/relative-music.hh @@ -17,7 +17,7 @@ class Relative_octave_music : public Music_wrapper public: Musical_pitch last_pitch_; - void do_print () const; + Relative_octave_music (Music*, Musical_pitch); VIRTUAL_COPY_CONS(Music); diff --git a/lily/include/request.hh b/lily/include/request.hh index 35401d75d7..f1cd68f483 100644 --- a/lily/include/request.hh +++ b/lily/include/request.hh @@ -30,7 +30,7 @@ public: bool equal_b (Request const*) const; protected: virtual bool do_equal_b (Request const*) const; - virtual void do_print() const; + }; @@ -60,7 +60,7 @@ public: Span_req(); protected: virtual bool do_equal_b (Request const*) const; - virtual void do_print() const; + VIRTUAL_COPY_CONS(Music); }; diff --git a/lily/include/scope.hh b/lily/include/scope.hh index f1f4d8a1dc..cf16c0564b 100644 --- a/lily/include/scope.hh +++ b/lily/include/scope.hh @@ -20,6 +20,9 @@ public: SCM to_alist () const; bool elem_b (String ) const; bool elem_b (SCM s) const; + + bool try_retrieve (SCM key, SCM *val) const; + Identifier *elem (String) const; Identifier *elem (SCM) const; diff --git a/lily/include/score.hh b/lily/include/score.hh index b7515dc32a..b315574933 100644 --- a/lily/include/score.hh +++ b/lily/include/score.hh @@ -32,7 +32,6 @@ public: void process(); void add_output (Music_output_def *def_p); - void print() const; private: void run_translator (Music_output_def*); }; diff --git a/lily/include/staff-symbol-referencer.hh b/lily/include/staff-symbol-referencer.hh index 82c84cfc6a..129848172b 100644 --- a/lily/include/staff-symbol-referencer.hh +++ b/lily/include/staff-symbol-referencer.hh @@ -33,6 +33,8 @@ public: static Real staff_space (Score_element*); static Score_element * staff_symbol_l (Score_element*); + static bool on_staffline (Score_element*); + static bool on_staffline (Score_element*,int); static int line_count (Score_element*); static Real position_f (Score_element*); static Real staff_radius (Score_element*); diff --git a/lily/include/symbol-cache.hh b/lily/include/symbol-cache.hh new file mode 100644 index 0000000000..e07b603d3c --- /dev/null +++ b/lily/include/symbol-cache.hh @@ -0,0 +1,79 @@ +/* + symbol-cache.hh -- declare Symbol cacher. + + source file of the GNU LilyPond music typesetter + + (c) 2000 Han-Wen Nienhuys + + */ + +#ifndef SYMBOL_CACHE_HH +#define SYMBOL_CACHE_HH + +#if 1 + +/* + A per file cache: for each compilation unit, there is a separate + cache that maps the address of a string directly to a SCM value + + */ +struct Symbol_cache_pair{ + const char * key; + SCM val ; +}; + +static Symbol_cache_pair *private_symbol_cache; +static Symbol_cache_pair *private_symbol_cache_end; + +static SCM +symbol (const char *ch) __attribute__ ((unused)); + + SCM +symbol (const char *ch) +{ + Symbol_cache_pair * lo = private_symbol_cache; + Symbol_cache_pair * hi = private_symbol_cache_end -1; + + if (lo) + { + do + { + Symbol_cache_pair * mid = lo + (hi - lo) / 2 ; + if (mid->key > ch) + hi = mid; + else + lo = mid; + } + while ((hi - lo) > 1); + if (lo->key== ch) + return lo->val; + } + + + Symbol_cache_pair * p = private_symbol_cache; + for (; p < private_symbol_cache_end + && p->key < ch ; p++) + ; + + int idx = p - private_symbol_cache; + + SCM sym = gh_symbol2scm ((char*) ch); + scm_permanent_object (sym); + + int sz = private_symbol_cache_end - private_symbol_cache; + sz ++ ; + private_symbol_cache + = (Symbol_cache_pair*) realloc (private_symbol_cache, + sizeof (Symbol_cache_pair)* sz); + private_symbol_cache_end = private_symbol_cache + sz; + for (p = private_symbol_cache_end -1; + p != private_symbol_cache + idx; p --) + *p = *(p - 1); + + p->key = ch; + p->val = sym; + + return sym; +} +#endif /* SYMBOL_CACHE_HH */ +#endif diff --git a/lily/include/tempo-performer.hh b/lily/include/tempo-performer.hh index 086b731cd3..c4a6d0f7c8 100644 --- a/lily/include/tempo-performer.hh +++ b/lily/include/tempo-performer.hh @@ -21,7 +21,7 @@ public: ~Tempo_performer(); protected: - void do_print() const; + virtual bool do_try_music (Music* req_l); virtual void do_process_music(); virtual void do_pre_move_processing (); diff --git a/lily/include/time-signature-performer.hh b/lily/include/time-signature-performer.hh index 7226d1c086..ef3d20bb27 100644 --- a/lily/include/time-signature-performer.hh +++ b/lily/include/time-signature-performer.hh @@ -21,7 +21,7 @@ public: ~Time_signature_performer(); protected: - void do_print() const; + virtual bool do_try_music (Music* req_l); virtual void do_process_music(); virtual void do_pre_move_processing (); diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index 507ff124b4..5d24929d5b 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -69,7 +69,7 @@ public: protected: bool try_music_on_nongroup_children (Music *m); - virtual void do_print () const; + virtual void do_process_music (); virtual void do_add_processing (); virtual bool do_try_music (Music* req_l); diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 74a46a1fd2..2eb5023cc3 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -37,7 +37,7 @@ public: Translator_group * daddy_trans_l_ ; - void print () const; + /** try to fit the request in this engraver @@ -96,7 +96,7 @@ protected: */ virtual void do_add_processing (); virtual bool do_try_music (Music *req_l); - virtual void do_print () const; + virtual void do_pre_move_processing(); virtual void do_post_move_processing(); virtual void do_process_music () ; diff --git a/lily/include/transposed-music.hh b/lily/include/transposed-music.hh index 7ae1db5595..a559feb2bb 100644 --- a/lily/include/transposed-music.hh +++ b/lily/include/transposed-music.hh @@ -18,7 +18,7 @@ class Transposed_music : public Music_wrapper public: Musical_pitch transpose_to_pitch_; - void do_print () const; + Transposed_music (Music*, Musical_pitch); VIRTUAL_COPY_CONS(Music); diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 104687dbd5..110e6717e1 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -84,11 +84,13 @@ Key_engraver::create_key (bool def) announce_element (item_p_,keyreq_l_); } - if (!def) - item_p_->set_elt_property ("visibility-lambda", - scm_eval2 (ly_symbol2scm ("all-visible"), - SCM_EOL)); + if (!def) + { + SCM vis = get_property ("explicitKeySignatureVisibility"); + if (gh_procedure_p (vis)) + item_p_->set_elt_property ("visibility-lambda",vis); + } } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 69fef2e645..4a6e26d5d1 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -53,7 +53,7 @@ ly_parse_scm (char const* s, int* n) /* Read expression from port */ if (!SCM_EOF_OBJECT_P (form = scm_read (port))) - answer = scm_eval_3 (form, 1, SCM_EOL); + answer = scm_eval_3 (form, 1, SCM_EOL); // guh? /* After parsing @@ -100,6 +100,7 @@ ly_symbol2scm(const char *s) return gh_symbol2scm ((char *)s); } + String ly_symbol2string (SCM s) { @@ -345,7 +346,7 @@ ly_number2string (SCM s) { assert (gh_number_p (s)); - char str[100]; // ugh. + char str[400]; // ugh. if (scm_integer_p (s) == SCM_BOOL_F) { @@ -399,11 +400,11 @@ undefd () static void init_functions () { - scm_make_gsubr ("ly-warn", 1, 0, 0, (SCM(*)())ly_warning); - scm_make_gsubr ("ly-gulp-file", 1,0, 0, (SCM(*)())ly_gulp_file); - scm_make_gsubr ("dir?", 1,0, 0, (SCM(*)())ly_isdir_p); - scm_make_gsubr ("undefd", 0,0, 0, (SCM(*)())undefd); - scm_make_gsubr ("ly-number->string", 1, 0,0, (SCM(*)()) ly_number2string); + scm_make_gsubr ("ly-warn", 1, 0, 0, (Scheme_function_unknown)ly_warning); + scm_make_gsubr ("ly-gulp-file", 1,0, 0, (Scheme_function_unknown)ly_gulp_file); + scm_make_gsubr ("dir?", 1,0, 0, (Scheme_function_unknown)ly_isdir_p); + scm_make_gsubr ("undefd", 0,0, 0, (Scheme_function_unknown)undefd); + scm_make_gsubr ("ly-number->string", 1, 0,0, (Scheme_function_unknown) ly_number2string); #ifdef TEST_GC diff --git a/lily/line-group-group-engraver.cc b/lily/line-group-group-engraver.cc index a03c8b6a06..a705daddb6 100644 --- a/lily/line-group-group-engraver.cc +++ b/lily/line-group-group-engraver.cc @@ -37,7 +37,6 @@ Line_group_engraver_group::do_removal_processing() Score_element * it = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn"))); - staffline_p_->set_bound(RIGHT,it); Engraver_group_engraver::typeset_element (staffline_p_); staffline_p_ = 0; diff --git a/lily/lookup.cc b/lily/lookup.cc index ab81aa4284..62ad7fbb91 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -266,6 +266,10 @@ Lookup::text (String style, String text, Paper_def *paper_l) font_mag = (int)paper_l->get_var ("magnification_" + style); } + /* + FIXME ! + */ + SCM l = scm_assoc (ly_str02scm (style.ch_C()), scm_eval2 (ly_symbol2scm ("cmr-alist"), SCM_EOL)); diff --git a/lily/lyric-combine-music.cc b/lily/lyric-combine-music.cc index 0b1f86b332..2059314b25 100644 --- a/lily/lyric-combine-music.cc +++ b/lily/lyric-combine-music.cc @@ -24,12 +24,6 @@ Lyric_combine_music::transpose (Musical_pitch p) lyrics_l () ->transpose (p); } -void -Lyric_combine_music::do_print () const -{ - music_l ()->print(); - lyrics_l () ->print (); -} Moment Lyric_combine_music::length_mom () const diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc index e07fe0f4fe..4569505c4a 100644 --- a/lily/lyric-performer.cc +++ b/lily/lyric-performer.cc @@ -17,14 +17,6 @@ Lyric_performer::Lyric_performer () audio_p_ = 0; } -void -Lyric_performer::do_print () const -{ -#ifndef NPRINT - if (lreq_arr_.size ()) - lreq_arr_[0]->print (); -#endif -} void Lyric_performer::do_process_music () diff --git a/lily/moment.cc b/lily/moment.cc index b2f588e4af..c3ebbf02c9 100644 --- a/lily/moment.cc +++ b/lily/moment.cc @@ -66,7 +66,7 @@ make_rational (SCM n, SCM d) void init_moments () { - scm_make_gsubr ("make-moment", 2 , 0, 0, (SCM(*)()) make_rational); + scm_make_gsubr ("make-moment", 2 , 0, 0, (Scheme_function_unknown) make_rational); } ADD_SCM_INIT_FUNC(moms,init_moments); diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc index 438ea4cca6..d2ddb4a9af 100644 --- a/lily/music-output-def.cc +++ b/lily/music-output-def.cc @@ -56,10 +56,11 @@ SCM Music_output_def::find_translator_l (SCM name) const { String s = ly_scm2string (name); + + SCM val =SCM_EOL; if (translator_p_dict_p_->elem_b (s)) return translator_p_dict_p_->scm_elem (s); - - return SCM_EOL; + return val; } @@ -77,10 +78,7 @@ Music_output_def::get_global_translator_p () return dynamic_cast (tg); } -void -Music_output_def::print () const -{ -} + String Music_output_def::get_default_output () const diff --git a/lily/music-sequence.cc b/lily/music-sequence.cc index 3ff7f4a235..2e5243f6b5 100644 --- a/lily/music-sequence.cc +++ b/lily/music-sequence.cc @@ -63,14 +63,6 @@ Music_sequence::transpose (Musical_pitch rq) unsmob_music (gh_car (s))->transpose (rq); } -void -Music_sequence::do_print() const -{ -#ifndef NPRINT - for (SCM s = music_list (); gh_pair_p (s); s = gh_cdr (s)) - unsmob_music (gh_car (s))->print(); -#endif -} diff --git a/lily/music-wrapper.cc b/lily/music-wrapper.cc index 8a2d66f5bd..ffcba96336 100644 --- a/lily/music-wrapper.cc +++ b/lily/music-wrapper.cc @@ -11,11 +11,7 @@ #include "music-wrapper.hh" -void -Music_wrapper::do_print () const -{ - element ()->print (); -} + void Music_wrapper::transpose (Musical_pitch p) diff --git a/lily/music.cc b/lily/music.cc index 8ce821e012..c9e001482c 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -64,10 +64,7 @@ Music::compress (Moment) { } -void -Music::do_print() const -{ -} + Moment Music::length_mom () const @@ -177,10 +174,6 @@ Music::origin () const } -void -Music::print ()const -{ -} diff --git a/lily/musical-pitch.cc b/lily/musical-pitch.cc index bb22b41291..5a834db780 100644 --- a/lily/musical-pitch.cc +++ b/lily/musical-pitch.cc @@ -55,13 +55,6 @@ Musical_pitch::Musical_pitch (int n, int a, int o) octave_i_ = o; } -void -Musical_pitch::print () const -{ -#ifndef NPRINT - DEBUG_OUT << str (); -#endif -} int Musical_pitch::compare (Musical_pitch const &m1, Musical_pitch const &m2) diff --git a/lily/musical-request.cc b/lily/musical-request.cc index cdcda7ac01..dccf2e3fd5 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -11,26 +11,12 @@ #include "debug.hh" #include "music-list.hh" -void -Span_req::do_print () const -{ -#ifndef NPRINT - DEBUG_OUT << span_dir_; -#endif -} Tremolo_req::Tremolo_req () { type_i_ = 0; } -void -Tremolo_req::do_print () const -{ -#ifndef NPRINT - DEBUG_OUT << "type " << type_i_ << '\n'; -#endif -} void Melodic_req::transpose (Musical_pitch delta) @@ -59,11 +45,6 @@ Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2) return Musical_pitch::compare (m1.pitch_, m2.pitch_); } -void -Melodic_req::do_print () const -{ - pitch_.print (); -} @@ -82,13 +63,6 @@ Rhythmic_req::do_equal_b (Request const* r) const return rh && !compare (*this, *rh); } -void -Rhythmic_req::do_print () const -{ -#ifndef NPRINT - DEBUG_OUT << "duration { " <0) - for(int i=0;iprint (); -#endif -} + void Note_performer::do_process_music () diff --git a/lily/paper-def.cc b/lily/paper-def.cc index fb01b67785..7300edd6a6 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -56,12 +56,13 @@ Paper_def::get_scmvar (String s) const Real Paper_def::get_realvar (SCM s) const { - if (!scope_p_->elem_b (s)) + SCM val ; + if (!scope_p_->try_retrieve (s, &val)) { programming_error ("unknown paper variable: " + ly_symbol2string (s)); return 0.0; } - SCM val = scope_p_->scm_elem (s); + if (gh_number_p (val)) { return gh_scm2double (val); @@ -93,18 +94,6 @@ Paper_def::set_lookup (int i, SCM l) lookup_alist_ = scm_assq_set_x(lookup_alist_, gh_int2scm (i), l); } - - -void -Paper_def::print () const -{ -#ifndef NPRINT - Music_output_def::print (); - if (flower_dstream) - gh_display (lookup_alist_); -#endif -} - Lookup const * Paper_def::lookup_l (int i) const { diff --git a/lily/part-combine-music.cc b/lily/part-combine-music.cc index d9e98329b3..c6ee771304 100644 --- a/lily/part-combine-music.cc +++ b/lily/part-combine-music.cc @@ -27,12 +27,7 @@ Part_combine_music::transpose (Musical_pitch p) second_l () ->transpose (p); } -void -Part_combine_music::do_print () const -{ - first_l ()->print(); - second_l () ->print (); -} + Moment Part_combine_music::length_mom () const diff --git a/lily/performance.cc b/lily/performance.cc index f6ff1cb5c7..9da4c7dc38 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -137,23 +137,10 @@ Performance::add_element (Audio_element *p) audio_elem_p_list_ = new Killing_cons (p, audio_elem_p_list_); } -void -Performance::print() const -{ -#ifndef NPRINT - DEBUG_OUT << "Performance { "; - DEBUG_OUT << "Items: "; - for (Cons* i =audio_elem_p_list_; i; i = i->next_) - i->car_->print (); - DEBUG_OUT << "}"; -#endif -} void Performance::process() { - print (); - String out = midi_l_->get_default_output (); if (out.empty_b ()) { diff --git a/lily/property-engraver.cc b/lily/property-engraver.cc index 1e5a16b931..312e1022be 100644 --- a/lily/property-engraver.cc +++ b/lily/property-engraver.cc @@ -12,6 +12,7 @@ #include "dictionary.hh" #include "score-element.hh" #include "scm-hash.hh" +#include "translator-group.hh" /* JUNKME: should use pushproperty everywhere. @@ -23,7 +24,7 @@ class Property_engraver : public Engraver UGH. Junk Dictionary */ Scheme_hash_table *prop_dict_; // junkme - void apply_properties (SCM, Score_element*); + void apply_properties (SCM, Score_element*, Translator_group *origin); protected: virtual void acknowledge_element (Score_element_info ei); @@ -58,7 +59,7 @@ Property_engraver::do_creation_processing () { prop_dict_ = new Scheme_hash_table; - SCM plist = get_property ("Generic_property_list"); + SCM plist = get_property (ly_symbol2scm ("Generic_property_list")); for (; gh_pair_p (plist); plist = gh_cdr (plist)) { SCM elt_props = gh_car (plist); @@ -75,19 +76,19 @@ Property_engraver::acknowledge_element (Score_element_info i) { if (prop_dict_->try_retrieve (gh_car (ifs), &props)) { - apply_properties (props,i.elem_l_); + apply_properties (props,i.elem_l_, i.origin_trans_l_->daddy_trans_l_); } } if (prop_dict_->try_retrieve (ly_symbol2scm ("all"), &props)) { - apply_properties (props, i.elem_l_); + apply_properties (props, i.elem_l_, i.origin_trans_l_->daddy_trans_l_); } } void -Property_engraver::apply_properties (SCM p, Score_element *e) +Property_engraver::apply_properties (SCM p, Score_element *e, Translator_group*origin) { for (; gh_pair_p (p); p = gh_cdr (p)) { @@ -112,7 +113,18 @@ Property_engraver::apply_properties (SCM p, Score_element *e) ; // Not defined in context. else if (gh_apply (type_p, scm_listify (val, SCM_UNDEFINED)) == SCM_BOOL_T) // defined and right type: do it - e->set_elt_property (elt_prop_sym, val); + { + e->set_elt_property (elt_prop_sym, val); + + String msg = "Property_engraver is deprecated. Use\n \\property " + + origin->type_str_ + + ".basicXXXXProperties" + + " \\push #'" + + ly_symbol2string (elt_prop_sym) + + " = #"; + warning (msg); + scm_display (val, scm_current_error_port ()); + } else /* diff --git a/lily/relative-octave-music.cc b/lily/relative-octave-music.cc index f786e7b0ed..5f8081afa0 100644 --- a/lily/relative-octave-music.cc +++ b/lily/relative-octave-music.cc @@ -23,11 +23,5 @@ Relative_octave_music::Relative_octave_music(Music*p,Musical_pitch def) last_pitch_ = element ()->to_relative_octave (def); } -void -Relative_octave_music::do_print () const -{ - Music_wrapper::do_print (); - DEBUG_OUT << "default pitch: " << last_pitch_.str (); -} diff --git a/lily/request.cc b/lily/request.cc index 14eb23856c..ad9223d274 100644 --- a/lily/request.cc +++ b/lily/request.cc @@ -9,10 +9,7 @@ #include "request.hh" #include "debug.hh" -void -Request::do_print() const -{ -} + bool Request::equal_b (Request const* r) const diff --git a/lily/scope.cc b/lily/scope.cc index 85837e5d09..ba18c1f44c 100644 --- a/lily/scope.cc +++ b/lily/scope.cc @@ -80,3 +80,9 @@ Scope::to_alist () const { return id_dict_->to_alist (); } + +bool +Scope::try_retrieve (SCM k , SCM *v)const +{ + return id_dict_->try_retrieve (k, v); +} diff --git a/lily/score-element.cc b/lily/score-element.cc index f1974fe63a..c4d43ca0b8 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -832,15 +832,14 @@ spanner_get_bound (SCM slur, SCM dir) static SCM interfaces_sym; -#define UNDEFINED_ARG static void init_functions () { interfaces_sym = scm_permanent_object (ly_symbol2scm ("interfaces")); - scm_make_gsubr ("ly-get-elt-property", 2, 0, 0, (SCM(*)(UNDEFINED_ARG))ly_get_elt_property); - scm_make_gsubr ("ly-set-elt-property", 3, 0, 0, (SCM(*)(UNDEFINED_ARG))ly_set_elt_property); - scm_make_gsubr ("ly-get-spanner-bound", 2 , 0, 0, (SCM(*)(UNDEFINED_ARG)) spanner_get_bound); + scm_make_gsubr ("ly-get-elt-property", 2, 0, 0, (Scheme_function_unknown)ly_get_elt_property); + scm_make_gsubr ("ly-set-elt-property", 3, 0, 0, (Scheme_function_unknown)ly_set_elt_property); + scm_make_gsubr ("ly-get-spanner-bound", 2 , 0, 0, (Scheme_function_unknown) spanner_get_bound); } bool diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 66b759e7d2..e2fa641da3 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -269,7 +269,7 @@ Score_engraver::do_add_processing () pscore_p_ = new Paper_score; pscore_p_->paper_l_ = dynamic_cast(output_def_l_); - SCM props = get_property(ly_symbol2scm ("basicLineOfScoreProperties")); + SCM props = get_property (ly_symbol2scm ("basicLineOfScoreProperties")); pscore_p_->typeset_line (new Line_of_score (props)); } diff --git a/lily/score.cc b/lily/score.cc index 4f33c853f1..ed53e2b0d1 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -121,7 +121,7 @@ Score::process() if (!unsmob_music (music_)) return; - print(); + for (int i=0; i < def_p_arr_.size (); i++) { if (no_paper_global_b @@ -133,17 +133,6 @@ Score::process() -void -Score::print() const -{ -#ifndef NPRINT - DEBUG_OUT << "score {\n"; - // music_p_ -> print (); - for (int i=0; i < def_p_arr_.size (); i++) - def_p_arr_[i]->print(); - DEBUG_OUT << "}\n"; -#endif -} void Score::add_output (Music_output_def *pap_p) diff --git a/lily/scores.cc b/lily/scores.cc index 0a075e5bc7..7d611e494a 100644 --- a/lily/scores.cc +++ b/lily/scores.cc @@ -81,8 +81,6 @@ do_scores() } else { - if (flower_dstream && !flower_dstream->silent_b ("do_scores")) - is_p->print (); is_p->process(); } } diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index bac852ce55..059d14dd08 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -57,10 +57,9 @@ Script_engraver::do_process_music() { Articulation_req* l=script_req_l_arr_[i]; - SCM list = scm_assoc (ly_str02scm (l->articulation_str_.ch_C ()), - scm_eval2 (ly_symbol2scm ("script-alist"), - SCM_EOL)); - + SCM alist = get_property ("scriptDefinitions"); + SCM list = scm_assoc (ly_str02scm (l->articulation_str_.ch_C ()), alist); + if (list == SCM_BOOL_F) { l->origin ()->warning (_f ("Don't know how to interpret articulation `%s'", diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 7c2c974c7e..efbaf14844 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -166,7 +166,7 @@ Side_position::quantised_position (Score_element *me, Axis ) Real rad = Staff_symbol_referencer::staff_radius (me) *2 ; int ip = int (rp); - if (abs (ip) < rad && (ip % 2) == 0) + if (abs (ip) < rad && Staff_symbol_referencer::on_staffline (me,ip)) { ip += d; rp += d; diff --git a/lily/slur-bezier-bow.cc b/lily/slur-bezier-bow.cc index 0240e99f87..b9f3396206 100644 --- a/lily/slur-bezier-bow.cc +++ b/lily/slur-bezier-bow.cc @@ -149,10 +149,6 @@ Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, Real beauty) Real length = curve_.control_[3][X_AXIS]; Real beautiful = beauty * length * slur_height (length, h_inf_, r_0_); - DEBUG_OUT << to_str ("Beautiful: %f\n", beautiful); - DEBUG_OUT << to_str ("Length: %f\n", length); - // DEBUG_OUT << to_str ("D-height: %f\n", default_height); - DEBUG_OUT << to_str ("FitFac: %f\n", fit_factor ()); if (fit_factor () > 1.0) blow_fit (); @@ -186,20 +182,11 @@ Slur_bezier_bow::minimise_enclosed_area (Paper_def* paper_l, Real beauty) has_interface (ly_symbol2scm ("lyric-syllable-interface"))) +// if (i.elem_l_->has_interface (symbol ("lyric-syllable-interface"))) // Tried catching lyric items to generate stanza numbers, but it spoils lyric spacing. if (Bar::has_interface (i.elem_l_) || now_mom() == Moment(0)) // Works, but requires bar_engraver in LyricVoice context apart from at beginning. // Is there any score element we can catch that will do the trick? -// if (! i.elem_l_->has_interface (ly_symbol2scm ("lyric-syllable-interface")) || +// if (! i.elem_l_->has_interface (symbol ("lyric-syllable-interface")) || // now_mom() == Moment(0)) // What happens if we try anything at all EXCEPT a lyric? Is there anything else? // Not sure what it's catching, but it still mucks up lyrics. diff --git a/lily/symbol-cache.cc b/lily/symbol-cache.cc new file mode 100644 index 0000000000..ed801f2fef --- /dev/null +++ b/lily/symbol-cache.cc @@ -0,0 +1,77 @@ +/* + symbol-cache.cc -- implement a cache for literal symbols, eg + symbol("foo-bar") + + + source file of the GNU LilyPond music typesetter + + (c) 2000 Han-Wen Nienhuys + + */ + +#include +#include "lily-guile.hh" + +#if 0 + +typedef map Literal_symbol_map; +Literal_symbol_map literal_map; + + +SCM +symbol (const char*s) +{ + Literal_symbol_map::const_iterator i = literal_map.find (s); + if (i != literal_map.end()) + return (*i).second; + + SCM sym = gh_symbol2scm ((char*)s); + scm_permanent_object (sym); + literal_map[s] = sym; + return sym; +} + + +/* + This is a gory trick to cache the value gh_symbol2scm (), without + cluttering up the C code with snarf macros. + + You should *ONLY* use symbol() for arguments that are literal + strings! + + without (wtk1-fugue2) + + real 0m20.157s + user 0m19.800s + sys 0m0.140s + + with: (per file.) + + real 0m19.284s + user 0m18.630s + sys 0m0.190s + + + global with STL map + + real 0m20.616s + user 0m19.360s + sys 0m0.080s + + global with binsearch. + + + real 0m19.352s + user 0m18.710s + sys 0m0.230s + local binsearch + + user 18.8 + + local with binsearch, and other optimizations. + + 17.7 +*/ +#endif + + diff --git a/lily/tempo-performer.cc b/lily/tempo-performer.cc index b728730947..e4066580ca 100644 --- a/lily/tempo-performer.cc +++ b/lily/tempo-performer.cc @@ -22,14 +22,6 @@ Tempo_performer::~Tempo_performer () { } -void -Tempo_performer::do_print () const -{ -#ifndef NPRINT - if (tempo_req_l_) - tempo_req_l_->print (); -#endif -} void Tempo_performer::do_process_music () diff --git a/lily/tfm-reader.cc b/lily/tfm-reader.cc index 176ecd195a..70472b8020 100644 --- a/lily/tfm-reader.cc +++ b/lily/tfm-reader.cc @@ -113,10 +113,6 @@ Tex_font_metric_reader::read_header () info_.coding_scheme = header_length > 2 ? get_bcpl_str () : "unspecified"; - DEBUG_OUT << format_str ("TFM checksum = %u, design_size = %fpt, coding scheme = `%s'.\n", - info_.checksum, - info_.design_size, - info_.coding_scheme.ch_C ()); } /* Although TFM files are only usable by TeX if they have at least seven @@ -154,10 +150,6 @@ Tex_font_metric_reader::read_params () for (Char_code i = 2; i <= header_.param_word_count; i++) info_.parameters[i - 1] = get_U32_fix_scaled_f (); -#ifdef PRINT - for (Char_code i = 1; i <= header_.param_word_count; i++) - DEBUG_OUT << format_str ("TFM parameter %d: %.3f", i, info_.parameters[i - 1]); -#endif } /* Read every character in the TFM file, storing the result in the @@ -246,13 +238,6 @@ Tex_font_metric_reader::read_char () `char_info_word'). */ tfm_char.exists_b_ = width_index != 0; -#ifdef PRINT - DEBUG_OUT << format_str (" width = %f, height = %f, ", - tfm_char.width_, tfm_char.height_); - DEBUG_OUT << format_str ("depth = %f, ic = %f.\n", - tfm_char.depth, tfm_char.italic_correction); -#endif - if (tag == 1) { input_.seek_ch_C (header_.lig_kern_pos + remainder * 4); @@ -283,9 +268,6 @@ Tex_font_metric_reader::read_lig_kern_program (Array * ligature_ar bool kern_step_b = input_.get_U8 () >= KERN_FLAG; U8 remainder = input_.get_U8 (); -#ifdef PRINT - DEBUG_OUT << format_str (" if next = %u (%c), ", next_char, next_char); -#endif if (kern_step_b) { @@ -299,9 +281,6 @@ Tex_font_metric_reader::read_lig_kern_program (Array * ligature_ar kern_arr_p->push (kern_element); -#ifdef PRINT - DEBUG_OUT << format_str ("kern %f.\n", kern_element.kern); -#endif } else { @@ -310,11 +289,6 @@ Tex_font_metric_reader::read_lig_kern_program (Array * ligature_ar ligature_element.ligature = remainder; ligature_arr_p->push (ligature_element); -#ifdef PRINT - DEBUG_OUT format_str ("ligature %d (hex %x).\n", - ligature_element.ligature, - ligature_element.ligature); -#endif } } while (!end_b); } diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc index aeed66b806..709087e42b 100644 --- a/lily/time-signature-performer.cc +++ b/lily/time-signature-performer.cc @@ -22,14 +22,6 @@ Time_signature_performer::~Time_signature_performer () { } -void -Time_signature_performer::do_print () const -{ -#ifndef NPRINT - if (time_signature_req_l_) - time_signature_req_l_->print (); -#endif -} void Time_signature_performer::do_process_music () diff --git a/lily/translator-group.cc b/lily/translator-group.cc index a13eb4901b..24416817d0 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -272,12 +272,7 @@ Translator_group::each (Method_pointer method) static_each (trans_group_list_, method); } -void -Translator_group::do_print() const -{ -#ifndef NPRINT -#endif -} + void Translator_group::do_add_processing () @@ -307,15 +302,14 @@ Translator_group::where_defined (SCM sym) const SCM Translator_group::get_property (SCM sym) const { - if (properties_dict ()->elem_b (sym)) - { - return properties_dict ()->get (sym); - } + SCM val =SCM_UNDEFINED; + if (properties_dict ()->try_retrieve (sym, &val)) + return val; if (daddy_trans_l_) return daddy_trans_l_->get_property (sym); - return SCM_UNDEFINED; + return val; } void diff --git a/lily/translator.cc b/lily/translator.cc index 90edc46fbb..905266cbea 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -88,22 +88,6 @@ Translator::do_add_processing () { } -void -Translator::print () const -{ -#ifndef NPRINT - DEBUG_OUT << classname (this) << " {"; - if (classname (this) != type_str_) - DEBUG_OUT << "type = " << type_str_; - do_print (); - DEBUG_OUT << "}\n"; -#endif -} - -void -Translator::do_print () const -{ -} diff --git a/lily/transposed-music.cc b/lily/transposed-music.cc index 2bcb370865..7c7f38ac2d 100644 --- a/lily/transposed-music.cc +++ b/lily/transposed-music.cc @@ -17,12 +17,6 @@ Transposed_music::Transposed_music (Music *p, Musical_pitch pit) p->transpose (pit); } -void -Transposed_music::do_print () const -{ - Music_wrapper::do_print (); - DEBUG_OUT << "transposition pitch: " << transpose_to_pitch_.str (); -} Musical_pitch Transposed_music::to_relative_octave (Musical_pitch p) diff --git a/lily/unfolded-repeat-iterator.cc b/lily/unfolded-repeat-iterator.cc index 6e6b665f01..f9ac9ea0c4 100644 --- a/lily/unfolded-repeat-iterator.cc +++ b/lily/unfolded-repeat-iterator.cc @@ -71,7 +71,7 @@ Unfolded_repeat_iterator::next_element (bool side_effect) String repstr = to_str (done_count_ + 1); if (do_repcommands) add_repeat_command (gh_list (ly_symbol2scm ("volta"), - gh_str02scm (repstr.ch_C()), SCM_UNDEFINED)); + ly_str02scm (repstr.ch_C()), SCM_UNDEFINED)); } } else if (done_count_ < repmus->repeats_i_ && !repmus->volta_fold_b_) @@ -125,7 +125,7 @@ Unfolded_repeat_iterator::next_element (bool side_effect) { String repstr = to_str (done_count_ + 1); add_repeat_command (gh_list (ly_symbol2scm ("volta"), - gh_str02scm (repstr.ch_C()), SCM_UNDEFINED)); + ly_str02scm (repstr.ch_C()), SCM_UNDEFINED)); add_repeat_command (ly_symbol2scm ("end-repeat")); } diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc index 4f5baf6b24..ed97955f7c 100644 --- a/lily/volta-engraver.cc +++ b/lily/volta-engraver.cc @@ -105,7 +105,7 @@ Volta_engraver::do_process_music () volta_span_p_ = 0; } - volta_span_p_ = new Spanner (get_property ("basicVoltaSpannerProperties")); + volta_span_p_ = new Spanner (get_property ("basicVoltaBracketProperties")); Volta_spanner::set_interface (volta_span_p_); announce_element (volta_span_p_,0); volta_span_p_->set_elt_property ("text", str); diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index 1ce8128d9d..34a4016c28 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -66,7 +66,12 @@ Volta_spanner::brew_molecule (SCM smob) Real staff_space = me->paper_l ()->get_var ("staffspace"); Real staff_thick = me->paper_l ()->get_var ("stafflinethickness"); Real half_space = staff_space / 2; - Real left = dynamic_cast(me)->get_broken_left_end_align (); + + /* + the volta spanner is attached to the bar-line, which is moved + to the right. We don't need to compensate for the left edge. + */ + Real left = 0.0; Real w = dynamic_cast(me)->spanner_length () - left - half_space; Real h = staff_space * gh_scm2double (me->get_elt_property ("height")); Real t = staff_thick * gh_scm2double (me->get_elt_property ("thickness")); diff --git a/ly/engraver.ly b/ly/engraver.ly index b3fa68374f..d5b947bf3d 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -397,7 +397,10 @@ ScoreContext = \translator { defaultClef = #"treble" defaultBarType = #"|" systemStartDelimiterGlyph = #'bar-line - + explicitClefVisibility = #all-visible + explicitKeySignatureVisibility = #all-visible + + scriptDefinitions = #default-script-alist % % what order to print accs. We could compute this, % but computing is more work than putting it here. @@ -432,6 +435,7 @@ ScoreContext = \translator { (interfaces . (bar-interface staff-bar-interface)) (break-align-symbol . Staff_bar) (glyph . "|") + (break-glyph-function . ,default-break-barline) (barsize-procedure . ,Bar::get_staff_bar_size) (molecule-callback . ,Bar::brew_molecule) (visibility-lambda . ,all-visible) @@ -462,6 +466,7 @@ ScoreContext = \translator { (interfaces . (break-align-interface)) (stacking-dir . 1) (axes 0) + (space-alist . ,default-break-align-space-alist) (name . "break alignment") ) basicBreakAlignGroupProperties = #`( @@ -490,6 +495,7 @@ ScoreContext = \translator { (molecule-callback . ,Chord_name::brew_molecule) (interfaces . (chord-name-interface)) (after-line-breaking-callback . ,Chord_name::after_line_breaking) + (chord-name-function . ,default-chord-name-function) (name . "chord name") ) basicCollisionProperties = #`( @@ -784,13 +790,6 @@ ScoreContext = \translator { (name . "sostenuto pedal") ) - basicStemTremoloProperties = #`( - (molecule-callback . ,Stem_tremolo::brew_molecule) - (beam-width . 2.0) ; staff-space - (beam-thickness . 0.42) ; staff-space - (beam-space-function . ,default-beam-space-function) - (name . "stem tremolo") - ) basicStemProperties = #`( (interfaces . (stem-interface)) (before-line-breaking-callback . ,Stem::before_line_breaking) @@ -809,6 +808,14 @@ ScoreContext = \translator { (default-neutral-direction . 1) (name . "stem") ) + + basicStemTremoloProperties = #`( + (molecule-callback . ,Stem_tremolo::brew_molecule) + (beam-width . 2.0) ; staff-space + (beam-thickness . 0.42) ; staff-space + (beam-space-function . ,default-beam-space-function) + (name . "stem tremolo") + ) basicSeparationItemProperties = #`( (interfaces . (separation-item-interface)) (name . "separation item") @@ -832,8 +839,7 @@ ScoreContext = \translator { (self-alignment-X . 0) (name . "una chorda pedal") ) - - basicVoltaSpannerProperties = #`( + basicVoltaBracketProperties = #`( (molecule-callback . ,Volta_spanner::brew_molecule) (interfaces . (volta-spanner-interface side-position-interface)) (direction . 1) diff --git a/ly/performer.ly b/ly/performer.ly index 0ad41e658f..2b731e183c 100644 --- a/ly/performer.ly +++ b/ly/performer.ly @@ -120,6 +120,9 @@ ScoreContext = \translator { \accepts RhythmicStaff; \accepts ChordNames; \consists "Swallow_performer"; + + dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume + instrumentEqualizer = #default-instrument-equaliser }; \translator { \ScoreContext } diff --git a/ly/property.ly b/ly/property.ly index 0ac31ec8c6..3c255916de 100644 --- a/ly/property.ly +++ b/ly/property.ly @@ -1,31 +1,23 @@ % property.ly -% list of properties that lily recognises -% and some shorthands (ugh) - -%{ - -SEE THE REFERENCE MANUAL FOR EXPLANATIONS. - -%} \version "1.3.59"; - -%{ -stemup = \property Voice.verticalDirection = \up -stemboth= \property Voice.verticalDirection = \center -stemdown = \property Voice.verticalDirection = \down -%} - stemup = \property Voice.basicStemProperties \push #'direction = #1 stemdown = \property Voice.basicStemProperties \push #'direction = #-1 stemboth= \property basicStemProperties \pop #'direction -slurup = \property Voice.slurVerticalDirection = \up -slurboth = \property Voice.slurVerticalDirection = \center -slurdown = \property Voice.slurVerticalDirection = \down -shifton = \property Voice.horizontalNoteShift = #1 -shiftoff = \property Voice.horizontalNoteShift = #0 +slurup = \property Voice.basicSlurProperties \push #'direction = #1 +slurboth = \property basicSlurProperties \pop #'direction +slurdown = \property Voice.basicSlurProperties \push #'direction = #-1 +shifton = \property Voice.basicNoteColumnProperties \push #'horizontal-shift = #1 +shiftonn = \property Voice.basicNoteColumnProperties \push #'horizontal-shift = #2 +shiftonnn = \property Voice.basicNoteColumnProperties \push #'horizontal-shift = #3 +shiftoff = \property basicNoteColumnProperties \pop #'horizontal-shift + + +tieUp = \property Voice.basicTieProperties \push #'direction = #1 +tieDown = \property Voice.basicTieProperties \push #'direction = #-1 +tieBoth = \property basicTieProperties \pop #'direction cadenzaOn = \property Score.timing = ##f cadenzaOff = { \property Score.timing = ##t @@ -34,11 +26,17 @@ cadenzaOff = { \property Score.timing = ##t onevoice = { - \stemboth \shiftoff + \stemboth + \tieBoth } -voiceone = \stemup -voicetwo = \stemdown +voiceone = { \stemup + \tieUp +} +voicetwo = { \stemdown + \tieDown + } + voicethree = { \stemup \shifton @@ -53,31 +51,7 @@ voicefour = { % ugh2. infinity=10000 - -beamslopeproportional = - \property Score.beamSlopedamping = 0 - -beamslopedamped = - \property Score.beamSlopedamping = 1 - - -beamslopezero = - \property Score.beamSlopedamping = \infinity - - -% this sucks, you'd want to pass an array, at least -% (or embedded code: you still can't dictate the slope / stemlength) -beamposfree = - \property Score.beamQuantisation = 0 - - -beamposnormal = - \property Score.beamQuantisation = 1 - - -beampostraditional = - \property Score.beamQuantisation = 2 - +%{ slurnormal = \property Voice.slurDash = ##f @@ -92,7 +66,9 @@ tupletoff = tupleton = \property Voice.tupletVisibility = 3 +%} + tiny = \property Voice.fontSize= -2 diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index ab443a8d2b..86774d55b9 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.92 -Entered-date: 01OCT00 +Version: 1.3.93 +Entered-date: 04OCT00 Description: Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.92.tar.gz + 1000k lilypond-1.3.93.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.92.tar.gz + 1000k lilypond-1.3.93.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 317cbcf18d..6951325425 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.3.92 +Version: 1.3.93 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.92.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.93.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # Icon: lilypond-icon.gif diff --git a/make/toplevel.make.in b/make/toplevel.make.in index 59d033d477..13019ee8f2 100644 --- a/make/toplevel.make.in +++ b/make/toplevel.make.in @@ -17,7 +17,7 @@ SCRIPTS = configure aclocal.m4 README_FILES = DEDICATION COPYING NEWS CHANGES ROADMAP README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt IN_FILES := $(wildcard *.in) -EXTRA_DIST_FILES = dstreamrc lilypond-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES) +EXTRA_DIST_FILES = lilypond-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES) NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES) # bootstrap stepmake: diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly index fe76c48871..56393684cf 100644 --- a/mutopia/J.S.Bach/wtk1-fugue2.ly +++ b/mutopia/J.S.Bach/wtk1-fugue2.ly @@ -50,14 +50,21 @@ dux = \context Voice=two \notes \relative c''{ %%15 g8 g'16 fis g8 c, - es \translator Staff = treble \stemdown g16 fis! g8 a | + es \translator Staff = treble + \stemboth + \stemdown + g16 fis! g8 a | d, g16 fis g8 a! c,16 d es4 d16 c | % forced accident! bes8 r8 r16 d e fis g a bes8 ~ bes16 e, f g | a bes c8 ~ c16 fis,16 g a bes8 es,!16 d es8 g, | as f'16 es f8 a,8 bes g'16 f g8 b, | %%20 - c16 f \translator Staff = bass \stemup es d c bes! as g - f8 \translator Staff = treble \stemdown as' g f | + c16 f \translator Staff = bass + \stemboth \stemup + es d c bes! as g + f8 \translator Staff = treble + \stemboth \stemdown + as' g f | es d es f b, c d b | c4 r8 e8 f f16 e f8 c | d4 r8 d8 es8 es16 d es8 bes | @@ -142,7 +149,7 @@ bassdux = \context Voice=three \notes \relative c' { c16 d es8~ es16 a, bes c d es f8~ f16 b, c d | %%20 % es8 r r e f f, es! d | % -> \classic_accidentals - es8 r r e \stemdown f f, es! d \stemboth | + es8 r r e \stemboth \stemdown f f, es! d \stemboth | r as' g f g f16 es f8 g | c16 d es d c bes as g f bes' as g f es d c | bes c d c bes as g f es as' g f es d c bes | @@ -169,7 +176,6 @@ bassdux = \context Voice=three \notes \relative c' { \dux { \comes \bar "|."; } \time 4/4; - \property Score.timeSignatureStyle = "C" > \context Staff = bass < \key c \minor; @@ -179,7 +185,11 @@ bassdux = \context Voice=three \notes \relative c' { \paper { linewidth = 18.0 \cm; - \translator{ \OrchestralScoreContext } + \translator{ \OrchestralScoreContext + timeSignatureStyle \push #'style = #"C" + + } + } \header{ opus = "BWV 847"; diff --git a/scm/accordion-script.scm b/scm/accordion-script.scm deleted file mode 100644 index 63877537ec..0000000000 --- a/scm/accordion-script.scm +++ /dev/null @@ -1,56 +0,0 @@ -;; (name . '((downindexstring . upindexstring) -;; follow-into-staff :: bool -;; dir-relative-to-stem :: int -;; force-dir :: int -;; priority :: int - - -(set! script-alist - (append - '(("accDiscant" . ((accordion "Discant" "") #f 0 1 0)) - ("accDiscantF" . ((accordion "Discant" "F") #f 0 1 0)) - ("accDiscantE" . ((accordion "Discant" "E") #f 0 1 0)) - ("accDiscantEh" . ((accordion "Discant" "Eh") #f 0 1 0)) - ("accDiscantFE" . ((accordion "Discant" "FE") #f 0 1 0)) - ("accDiscantFEh" . ((accordion "Discant" "FEh") #f 0 1 0)) - ("accDiscantEE" . ((accordion "Discant" "EE") #f 0 1 0)) - ("accDiscantFEE" . ((accordion "Discant" "FEE") #f 0 1 0)) - ("accDiscantEEE" . ((accordion "Discant" "EEE") #f 0 1 0)) - ("accDiscantFEEE" . ((accordion "Discant" "FEEE") #f 0 1 0)) - ("accDiscantS" . ((accordion "Discant" "S") #f 0 1 0)) - ("accDiscantFS" . ((accordion "Discant" "FS") #f 0 1 0)) - ("accDiscantES" . ((accordion "Discant" "ES") #f 0 1 0)) - ("accDiscantEhS" . ((accordion "Discant" "EhS") #f 0 1 0)) - ("accDiscantFES" . ((accordion "Discant" "FES") #f 0 1 0)) - ("accDiscantFEhS" . ((accordion "Discant" "FEhS") #f 0 1 0)) - ("accDiscantEES" . ((accordion "Discant" "EES") #f 0 1 0)) - ("accDiscantFEES" . ((accordion "Discant" "FEES") #f 0 1 0)) - ("accDiscantEEES" . ((accordion "Discant" "EEES") #f 0 1 0)) - ("accDiscantFEEES" . ((accordion "Discant" "FEEES") #f 0 1 0)) - ("accDiscantSS" . ((accordion "Discant" "SS") #f 0 1 0)) - ("accDiscantESS" . ((accordion "Discant" "ESS") #f 0 1 0)) - ("accDiscantEESS" . ((accordion "Discant" "EESS") #f 0 1 0)) - ("accDiscantEEESS" . ((accordion "Discant" "EEESS") #f 0 1 0)) - ("accFreebase" . ((accordion "Freebase" "") #f 0 -1 0)) - ("accFreebaseF" . ((accordion "Freebase" "F") #f 0 -1 0)) - ("accFreebaseE" . ((accordion "Freebase" "E") #f 0 -1 0)) - ("accFreebaseFE" . ((accordion "Freebase" "FE") #f 0 -1 0)) - ("accBayanbase" . ((accordion "Bayanbase" "") #f 0 -1 0)) - ("accBayanbaseT" . ((accordion "Bayanbase" "T") #f 0 -1 0)) - ("accBayanbaseE" . ((accordion "Bayanbase" "E") #f 0 -1 0)) - ("accBayanbaseTE" . ((accordion "Bayanbase" "TE") #f 0 -1 0)) - ("accBayanbaseEE" . ((accordion "Bayanbase" "EE") #f 0 -1 0)) - ("accBayanbaseTEE" . ((accordion "Bayanbase" "TEE") #f 0 -1 0)) - ("accStdbase" . ((accordion "Stdbase" "") #f 0 -1 0)) - ("accStdbaseFE" . ((accordion "Stdbase" "FE") #f 0 -1 0)) - ("accStdbaseTFE" . ((accordion "Stdbase" "TFE") #f 0 -1 0)) - ("accStdbaseMES" . ((accordion "Stdbase" "MES") #f 0 -1 0)) - ("accStdbaseTFMES" . ((accordion "Stdbase" "TFMES") #f 0 -1 0)) - - ("accSB" . ((accordion "SB" "") #f 0 -1 0)) - ("accBB" . ((accordion "BB" "") #f 0 -1 0)) - ("accOldEE" . ((accordion "OldEE" "") #f 0 -1 0)) - ("accOldEES" . ((accordion "OldEES" "") #f 0 -1 0))) - script-alist) - ) - diff --git a/scm/basic-properties.scm b/scm/basic-properties.scm index 3dadb920c0..d07db3311e 100644 --- a/scm/basic-properties.scm +++ b/scm/basic-properties.scm @@ -129,10 +129,6 @@ ;; ;; We have our doubts, so we simply provide all sensible alternatives. - - - - ;; array index multiplicity, last if index>size ;; beamed stems @@ -141,9 +137,6 @@ ;; - take #forced stems into account (now done in C++)? ;; - take y-position of chord or beam into account -;;;;;;;;;;;;;;;;;;;;;;; - - ; ; todo: clean this up a bit: the list is getting rather long. ; @@ -167,3 +160,80 @@ (name . "beam") ) ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Bar lines. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; +; How should a bar line behave at a break? +; +(define (default-break-barline glyph dir) + (let ((result (assoc glyph + '((":|:" . (":|" . "|:")) + ("|" . ("|" . "")) + ("|s" . (nil . "|")) + ("|:" . ("|" . "|:")) + ("|." . ("|." . nil)) + (".|" . (nil . ".|")) + (":|" . (":|" . nil)) + ("||" . ("||" . nil)) + (".|." . (".|." . nil)) + ("brace" . (nil . "brace")) + ("bracket" . (nil . "bracket")) + ) + ))) + + (if (equal? result #f) + (ly-warn (string-append "Unknown bar glyph: `" glyph "'")) + (index-cell (cdr result) dir)) + ) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Prefatory matter: break align item. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Spacing constants +;; +;; rules for this spacing are much more complicated than this. +;; See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147 +;; + +;; (Measured in staff space) +(define default-break-align-space-alist + '( + ((none Instrument_name) . (extra-space 1.0)) + ((Instrument_name Left_edge_item) . (extra-space 1.0)) + ((Left_edge_item Clef_item) . (extra-space 1.0)) + ((Left_edge_item Key_item) . (extra-space 0.0)) + ((Left_edge_item begin-of-note) . (extra-space 1.0)) + ((none Left_edge_item) . (extra-space 0.0)) + ((Left_edge_item Staff_bar) . (extra-space 0.0)) +; ((none Left_edge_item) . (extra-space -15.0)) +; ((none Left_edge_item) . (extra-space -15.0)) + ((none Clef_item) . (minimum-space 1.0)) + ((none Staff_bar) . (minimum-space 0.0)) + ((none Clef_item) . (minimum-space 1.0)) + ((none Key_item) . (minimum-space 0.5)) + ((none Time_signature) . (extra-space 0.0)) + ((none begin-of-note) . (minimum-space 1.5)) + ((Clef_item Key_item) . (minimum-space 4.0)) + ((Key_item Time_signature) . (extra-space 1.0)) + ((Clef_item Time_signature) . (minimum-space 3.5)) + ((Staff_bar Clef_item) . (minimum-space 1.0)) + ((Clef_item Staff_bar) . (minimum-space 3.7)) + ((Time_signature Staff_bar) . (minimum-space 2.0)) + ((Key_item Staff_bar) . (extra-space 1.0)) + ((Staff_bar Time_signature) . (minimum-space 1.5)) + ((Time_signature begin-of-note) . (extra-space 2.0)) + ((Key_item begin-of-note) . (extra-space 2.5)) + ((Staff_bar begin-of-note) . (extra-space 1.0)) + ((Clef_item begin-of-note) . (minimum-space 5.0)) + ((none Breathing_sign) . (minimum-space 0.0)) + ((Breathing_sign Key_item) . (minimum-space 1.5)) + ((Breathing_sign begin-of-note) . (minimum-space 1.0)) + ((Breathing_sign Staff_bar) . (minimum-space 1.5)) + ((Breathing_sign Clef_item) . (minimum-space 2.0)) + ) +) diff --git a/scm/chord-names.scm b/scm/chord-names.scm index ce6e539944..27f4314bfb 100644 --- a/scm/chord-names.scm +++ b/scm/chord-names.scm @@ -330,7 +330,7 @@ ;; parts, complete the missing user-override matched part with normal ;; chord to be name-calculated. ;; -(define (chord::user-name style pitches base-and-inversion) +(define (default-chord-name-function style pitches base-and-inversion) ;(display "pitches:") (display pitches) (newline) ;(display "style:") (display style) (newline) ;(display "b&i:") (display base-and-inversion) (newline) diff --git a/scm/lily.scm b/scm/lily.scm index 2ac90b2155..d15c8bd11a 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -85,49 +85,6 @@ (define security-paranoia #f) -;; Spacing constants for prefatory matter. -;; -;; rules for this spacing are much more complicated than this. See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147 -;; -;; - -;; (Measured in staff space) -(define space-alist - '( - ((none Instrument_name) . (extra-space 1.0)) - ((Instrument_name Left_edge_item) . (extra-space 1.0)) - ((Left_edge_item Clef_item) . (extra-space 1.0)) - ((Left_edge_item Key_item) . (extra-space 0.0)) - ((Left_edge_item begin-of-note) . (extra-space 1.0)) - ((none Left_edge_item) . (extra-space 0.0)) - ((Left_edge_item Staff_bar) . (extra-space 0.0)) -; ((none Left_edge_item) . (extra-space -15.0)) -; ((none Left_edge_item) . (extra-space -15.0)) - ((none Clef_item) . (minimum-space 1.0)) - ((none Staff_bar) . (minimum-space 0.0)) - ((none Clef_item) . (minimum-space 1.0)) - ((none Key_item) . (minimum-space 0.5)) - ((none Time_signature) . (extra-space 0.0)) - ((none begin-of-note) . (minimum-space 1.5)) - ((Clef_item Key_item) . (minimum-space 4.0)) - ((Key_item Time_signature) . (extra-space 1.0)) - ((Clef_item Time_signature) . (minimum-space 3.5)) - ((Staff_bar Clef_item) . (minimum-space 1.0)) - ((Clef_item Staff_bar) . (minimum-space 3.7)) - ((Time_signature Staff_bar) . (minimum-space 2.0)) - ((Key_item Staff_bar) . (extra-space 1.0)) - ((Staff_bar Time_signature) . (minimum-space 1.5)) ;double check this. - ((Time_signature begin-of-note) . (extra-space 2.0)) ;double check this. - ((Key_item begin-of-note) . (extra-space 2.5)) - ((Staff_bar begin-of-note) . (extra-space 1.0)) - ((Clef_item begin-of-note) . (minimum-space 5.0)) - ((none Breathing_sign) . (minimum-space 0.0)) - ((Breathing_sign Key_item) . (minimum-space 1.5)) - ((Breathing_sign begin-of-note) . (minimum-space 1.0)) - ((Breathing_sign Staff_bar) . (minimum-space 1.5)) - ((Breathing_sign Clef_item) . (minimum-space 2.0)) - ) -) ;; silly, use alist? (define (find-notehead-symbol duration style) @@ -194,7 +151,7 @@ ) ) -(define script-alist '()) +(define default-script-alist '()) (define font-name-alist '()) (define (font-command name-mag) @@ -393,6 +350,8 @@ ; line numbers only: ;(string-append "\\special{src:" (number->string line) " " file "}") ) + ; no origin info: return empty string + ; "" ; no-origin not yet supported by Xdvi (define (no-origin) "") @@ -948,33 +907,6 @@ (cdr cell) (car cell))) -; -; How should a bar line behave at a break? -; -(define (break-barline glyph dir) - (let ((result (assoc glyph - '((":|:" . (":|" . "|:")) - ("|" . ("|" . "")) - ("|s" . (nil . "|")) - ("|:" . ("|" . "|:")) - ("|." . ("|." . nil)) - (".|" . (nil . ".|")) - (":|" . (":|" . nil)) - ("||" . ("||" . nil)) - (".|." . (".|." . nil)) - ("scorebar" . (nil . "scorepostbreak")) - ("brace" . (nil . "brace")) - ("bracket" . (nil . "bracket")) - ) - ))) - - (if (equal? result #f) - (ly-warn (string-append "Unknown bar glyph: `" glyph "'")) - (index-cell (cdr result) dir)) - ) - ) - - (define major-scale '( (0 . 0) diff --git a/scm/midi.scm b/scm/midi.scm index 94ceeb50e2..fbfdff6cd7 100644 --- a/scm/midi.scm +++ b/scm/midi.scm @@ -23,7 +23,7 @@ ) absolute-volume-alist)) -(define (dynamic-absolute-volume s) +(define (default-dynamic-absolute-volume s) (let ((entry (assoc s absolute-volume-alist))) (if entry (cdr entry)))) @@ -47,7 +47,7 @@ ) instrument-equaliser-alist)) -(define (instrument-equaliser s) +(define (default-instrument-equaliser s) (let ((entry (assoc s instrument-equaliser-alist))) (if entry (cdr entry)))) diff --git a/scm/script.scm b/scm/script.scm index 534cffef89..47d61ab91c 100644 --- a/scm/script.scm +++ b/scm/script.scm @@ -6,7 +6,7 @@ ;;TODO? extra padding :: Real (given in staff spaces) -(set! script-alist +(set! default-script-alist (append '(("thumb" . ((feta . ("thumb" . "thumb")) #f 0 1 0)) ("accent" . ((feta . ("sforzato" . "sforzato")) #f -1 0 0)) @@ -36,6 +36,58 @@ ("downprall" . ((feta . ("downprall" . "downprall")) #f 0 1 0)) ("segno" . ((feta . ("segno" . "segno")) #f 0 1 0)) ("coda" . ((feta . ("coda" . "coda")) #f 0 1 0))) - script-alist) + default-script-alist) + ) + + + + +(set! default-script-alist + (append + '(("accDiscant" . ((accordion "Discant" "") #f 0 1 0)) + ("accDiscantF" . ((accordion "Discant" "F") #f 0 1 0)) + ("accDiscantE" . ((accordion "Discant" "E") #f 0 1 0)) + ("accDiscantEh" . ((accordion "Discant" "Eh") #f 0 1 0)) + ("accDiscantFE" . ((accordion "Discant" "FE") #f 0 1 0)) + ("accDiscantFEh" . ((accordion "Discant" "FEh") #f 0 1 0)) + ("accDiscantEE" . ((accordion "Discant" "EE") #f 0 1 0)) + ("accDiscantFEE" . ((accordion "Discant" "FEE") #f 0 1 0)) + ("accDiscantEEE" . ((accordion "Discant" "EEE") #f 0 1 0)) + ("accDiscantFEEE" . ((accordion "Discant" "FEEE") #f 0 1 0)) + ("accDiscantS" . ((accordion "Discant" "S") #f 0 1 0)) + ("accDiscantFS" . ((accordion "Discant" "FS") #f 0 1 0)) + ("accDiscantES" . ((accordion "Discant" "ES") #f 0 1 0)) + ("accDiscantEhS" . ((accordion "Discant" "EhS") #f 0 1 0)) + ("accDiscantFES" . ((accordion "Discant" "FES") #f 0 1 0)) + ("accDiscantFEhS" . ((accordion "Discant" "FEhS") #f 0 1 0)) + ("accDiscantEES" . ((accordion "Discant" "EES") #f 0 1 0)) + ("accDiscantFEES" . ((accordion "Discant" "FEES") #f 0 1 0)) + ("accDiscantEEES" . ((accordion "Discant" "EEES") #f 0 1 0)) + ("accDiscantFEEES" . ((accordion "Discant" "FEEES") #f 0 1 0)) + ("accDiscantSS" . ((accordion "Discant" "SS") #f 0 1 0)) + ("accDiscantESS" . ((accordion "Discant" "ESS") #f 0 1 0)) + ("accDiscantEESS" . ((accordion "Discant" "EESS") #f 0 1 0)) + ("accDiscantEEESS" . ((accordion "Discant" "EEESS") #f 0 1 0)) + ("accFreebase" . ((accordion "Freebase" "") #f 0 -1 0)) + ("accFreebaseF" . ((accordion "Freebase" "F") #f 0 -1 0)) + ("accFreebaseE" . ((accordion "Freebase" "E") #f 0 -1 0)) + ("accFreebaseFE" . ((accordion "Freebase" "FE") #f 0 -1 0)) + ("accBayanbase" . ((accordion "Bayanbase" "") #f 0 -1 0)) + ("accBayanbaseT" . ((accordion "Bayanbase" "T") #f 0 -1 0)) + ("accBayanbaseE" . ((accordion "Bayanbase" "E") #f 0 -1 0)) + ("accBayanbaseTE" . ((accordion "Bayanbase" "TE") #f 0 -1 0)) + ("accBayanbaseEE" . ((accordion "Bayanbase" "EE") #f 0 -1 0)) + ("accBayanbaseTEE" . ((accordion "Bayanbase" "TEE") #f 0 -1 0)) + ("accStdbase" . ((accordion "Stdbase" "") #f 0 -1 0)) + ("accStdbaseFE" . ((accordion "Stdbase" "FE") #f 0 -1 0)) + ("accStdbaseTFE" . ((accordion "Stdbase" "TFE") #f 0 -1 0)) + ("accStdbaseMES" . ((accordion "Stdbase" "MES") #f 0 -1 0)) + ("accStdbaseTFMES" . ((accordion "Stdbase" "TFMES") #f 0 -1 0)) + + ("accSB" . ((accordion "SB" "") #f 0 -1 0)) + ("accBB" . ((accordion "BB" "") #f 0 -1 0)) + ("accOldEE" . ((accordion "OldEE" "") #f 0 -1 0)) + ("accOldEES" . ((accordion "OldEES" "") #f 0 -1 0))) + default-script-alist) ) diff --git a/scripts/etf2ly.py b/scripts/etf2ly.py index d469cc1775..44ca2adec6 100644 --- a/scripts/etf2ly.py +++ b/scripts/etf2ly.py @@ -38,10 +38,17 @@ import re import string import os -finale_clefs= ['treble', 'alto', 'tenor', 'bass', 'percussion', 'treble8vb', 'bass8vb', 'baritone'] +finale_clefs= ['treble', 'alto', 'tenor', 'bass', 'percussion', 'treble_8', 'bass_8', 'baritone'] def lily_clef (fin): - return finale_clefs[fin] + try: + return finale_clefs[fin] + except IndexError: + sys.stderr.write ( '\nHuh? Found clef number %d\n' % fin) + + return 'treble' + + def gulp_file(f): return open (f).read () @@ -289,6 +296,7 @@ class Articulation: a = articulation_dict[self.type] except KeyError: sys.stderr.write ("\nUnknown articulation no. %d on note no. %d" % (self.type, self.notenumber)) + sys.stderr.write ("\nPlease add an entry to articulation_dict in the Python source") a = '"art"' c.note_suffix = '-' + a + c.note_suffix @@ -457,22 +465,25 @@ class Staff: g = m.global_measure e = '' - if last_key <> g.keysignature: + if g and last_key <> g.keysignature: e = e + "\\key %s \\major; " % lily_notename (g.keysignature) last_key = g.keysignature - if last_time <> g.timesig : + if g and last_time <> g.timesig : e = e + "\\time %d/%d; " % g.timesig last_time = g.timesig + + if last_clef <> m.clef : - e = e + '\\clef %s;' % lily_clef (m.clef) + e = e + '\\clef "%s";' % lily_clef (m.clef) last_clef = m.clef if e: if gap <> (0,1): k = k +' ' + rat_to_lily_duration (gap) + '\n' gap = (0,1) k = k + e - - gap = rat_add (gap, g.length ()) + + if g: + gap = rat_add (gap, g.length ()) k = '%sglobal = \\notes { %s }\n\n ' % (self.staffid (), k) @@ -505,8 +516,12 @@ class Staff: gap = (0,1) laystr = laystr + fr.dump () else: - gap = rat_add (gap, m.global_measure.length ()) - + if m.global_measure : + gap = rat_add (gap, m.global_measure.length ()) + else: + sys.stderr.write ( \ + "No global measure for staff %d measure %d\n" + % (self.number, m.number)) if first_frame: l = self.layerid (x) laystr = '%s = \\notes { { %s } }\n\n' % (l, laystr) @@ -756,14 +771,13 @@ class Etf_file: = tuple (map (string.atoi, [no,prev,next,dur,pos,extended,follow])) entryflag = string.atol (entryflag,16) - if no > len (self.entries): - sys.stderr.write ("\nHuh? Entry number to large,\nexpected %d got %d. Filling with void entries.\n" % (len(self.entries), no )) - while len (self.entries) <> no: - c = ((len (self.entries), 0, 0, 0, 0, 0L, 0, 0), []) - self.entries.append (c) + if len (self.entries) <= no: + # missing entries seem to be quite common. + # we fill'em up with None. + self.entries = self.entries + [None] * (no - len (self.entries) + 1) current_entry = ((no, prev, next, dur, pos, entryflag, extended, follow), []) - self.entries.append (current_entry) + self.entries[no] = current_entry return m def try_Sx(self,l): @@ -801,14 +815,13 @@ class Etf_file: if m: (frameno, startnote, endnote, foo, bar) = m.groups () (frameno, startnote, endnote) = tuple (map (string.atoi, [frameno, startnote, endnote])) - if frameno > len (self.frames): - sys.stderr.write ("Frame no %d missing, filling up to %d\n" % (len(self.frames), frameno)) - while frameno <> len (self.frames): - self.frames.append (Frame ((len (self.frames), 0,0) )) + if len (self.frames) <= frameno: + self.frames = self.frames + [None] * (frameno - len(self.frames) + 1) - self.frames.append (Frame ((frameno, startnote, endnote))) + self.frames[frameno] = Frame ((frameno, startnote, endnote)) return m + def try_MS (self, l): m = MSre.match (l) if m: @@ -878,7 +891,7 @@ class Etf_file: try: m.global_measure = self.measures[mno] except IndexError: - sys.stderr.write ("non-existent global measure %d" % mno) + sys.stderr.write ("Non-existent global measure %d" % mno) continue frame_obj_list = [None] @@ -899,10 +912,12 @@ class Etf_file: mno = mno + 1 for c in self.chords[1:]: - c.calculate() + if c: + c.calculate() for f in self.frames[1:]: - f.calculate () + if f: + f.calculate () for t in self.tuplets[1:]: t.calculate (self.chords) @@ -962,9 +977,14 @@ class Etf_file: def unthread_entries (self): self.chords = [None] for e in self.entries[1:]: - self.chords.append (Chord (e)) - + ch = None + if e: + ch = Chord (e) + self.chords.append (ch) + for e in self.chords[1:]: + if not e: + continue e.prev = self.chords[e.finale[0][1]] e.next = self.chords[e.finale[0][2]] diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index d1220794a6..35ffdbd78f 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -292,12 +292,6 @@ AC_DEFUN(AC_STEPMAKE_INIT, [ AUTOGENERATE="This file was automatically generated by configure" AC_SUBST(AUTOGENERATE) - STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null` - if test "x$STATE_VECTOR" != "x"; then - STATE_VECTOR="\$(depth)/$STATE_VECTOR" - fi - AC_SUBST(STATE_VECTOR) - CONFIGSUFFIX= AC_ARG_ENABLE(config, [ enable-config=FILE put configure settings in config-FILE.make], diff --git a/stepmake/configure b/stepmake/configure index 8af41ada79..3414e05b34 100755 --- a/stepmake/configure +++ b/stepmake/configure @@ -763,12 +763,6 @@ EOF AUTOGENERATE="This file was automatically generated by configure" - STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null` - if test "x$STATE_VECTOR" != "x"; then - STATE_VECTOR="\$(depth)/$STATE_VECTOR" - fi - - CONFIGSUFFIX= # Check whether --enable-config or --disable-config was given. if test "${enable_config+set}" = set; then @@ -787,7 +781,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:791: checking host system type" >&5 +echo "configure:785: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -812,7 +806,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:816: checking for $ac_word" >&5 +echo "configure:810: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -847,7 +841,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:851: checking for $ac_word" >&5 +echo "configure:845: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -884,7 +878,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:888: checking for $ac_word" >&5 +echo "configure:882: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -919,7 +913,7 @@ test -n "$TAR" || TAR="error" # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:923: checking for $ac_word" >&5 +echo "configure:917: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -959,7 +953,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:963: checking for $ac_word" >&5 +echo "configure:957: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -996,7 +990,7 @@ fi # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1000: checking for $ac_word" >&5 +echo "configure:994: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1037,7 +1031,7 @@ fi # Extract the first word of "${PYTHON:-python}", so it can be a program name with args. set dummy ${PYTHON:-python}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1041: checking for $ac_word" >&5 +echo "configure:1035: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1204,7 +1198,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:1208: checking language" >&5 +echo "configure:1202: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -1239,7 +1233,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1243: checking for $ac_word" >&5 +echo "configure:1237: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1410,7 +1404,6 @@ s%@PACKAGE@%$PACKAGE%g s%@PACKAGE_NAME@%$PACKAGE_NAME%g s%@package_depth@%$package_depth%g s%@AUTOGENERATE@%$AUTOGENERATE%g -s%@STATE_VECTOR@%$STATE_VECTOR%g s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g s%@host@%$host%g s%@host_alias@%$host_alias%g -- 2.39.2