From: Han-Wen Nienhuys Date: Mon, 19 Jan 1998 22:56:08 +0000 (+0100) Subject: release: 0.1.41 X-Git-Tag: release/0.1.41 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c24b8835be7d548804a94f6caceadcf914bb8198;p=lilypond.git release: 0.1.41 --- diff --git a/.dstreamrc b/.dstreamrc index 69b2d30c72..03a97fa3a4 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -37,7 +37,7 @@ Engraver_group_engraver 0 Group_change_req 0 Head_column 0 Idealspacing 0 -Ineq_constrained_qp 0 +Ineq_constrained_qp 1 Input_translator 0 Item 0 Key_item 0 @@ -55,7 +55,7 @@ Note_performer 0 Note_req 0 Paper_col 1 Paper_score 1 -Paper_def 0 +Paper_def 1 Paperdef 0 Performer 0 Performer_group_performer 0 @@ -65,7 +65,7 @@ Rest_collision 0 Rest_collision_engraver 0 Rest_req 0 Rhythmic_req 0 -Score 0 +Score 1 Score_column 0 Score_elem 0 Score_engraver 0 diff --git a/ANNOUNCE b/ANNOUNCE index 6bdaf16333..f21190a248 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -4,31 +4,27 @@ Subject: LilyPond 0.2 released - The GNU Project music typesetter GNU LilyPond - The GNU Project Music Typesetter -``WHAT IS GNU LilyPond?'' +WHAT IS LilyPond? GNU LilyPond is the GNU Project Music typesetter: it reads a music definition file and outputs formatted sheet music to a TeX file or (mechanical) performances to MIDI files. -WHY ? +WHAT'S NEW SINCE VERSION 0.1? -We want to create tools to produce production quality scores and parts -of public domain music. - - -WHAT'S NEW - -* LilyPond now includes a completely rewritten font: the Feta font. -We did our best to copy the best symbol designs available and We're -proud of the result. We hope you agree, so go check it out! +* LilyPond now includes a completely new music font: the Feta font. + We were quite disappointed with available music fonts, so we rolled + our own. We did our best to copy the best symbol designs available, + and we think that we've succeeded in doing so. We're proud of the + result, and we hope you agree, so go check it out! * More elegant output due to * better spacing - * better breaking + * better line breaking * better font design - * PostScript output for variable symbols. + * PostScript output for variable symbols * Lots of bugfixes @@ -36,7 +32,7 @@ proud of the result. We hope you agree, so go check it out! * Better MIDI importing -* Easier to use due to better scripts and input format enhancements. +* Easier to use due to better scripts and input format enhancements * MusixTeX not needed anymore @@ -49,10 +45,11 @@ customizable notenames. MIDI output lets you check if you have entered the correct notes. MIDI to Mudela conversion through the mi2mu program. -Multiple staffs in one score. Each staff can have a different meters. -Multiple voices within one staff (up to four handled graciously); -beams optionally shared between voices. Multiple scores within one -input file. Each score is output to a different file. +Font size selectable (26pt, 20pt, 16pt staffsize) for each score. +Multiple staffs in one score. Each staff may have various different +meters. Multiple voices within one staff (up to four handled +graciously); beams optionally shared between voices. Multiple scores +within one input file. Each score is output to a different file. Beams, slurs, chords, super/subscripts (accents and text), general n-plet (triplet, quadruplets, etc.), lyrics, transposition, diff --git a/AUTHORS.text b/AUTHORS.text index ab8f2d8e3e..ed25a63d43 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,7 +61,7 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -5/Jan/98 LilyPond 0.1.39 1 +5/Jan/98 LilyPond 0.1.41 1 @@ -127,6 +127,6 @@ AUTHORS(1) LilyPond documentation AUTHORS(1) -5/Jan/98 LilyPond 0.1.39 2 +5/Jan/98 LilyPond 0.1.41 2 diff --git a/BUGS b/BUGS index 3f88eb3e38..810766b46e 100644 --- a/BUGS +++ b/BUGS @@ -1,6 +1,13 @@ Document Really Ugly Bugs (coredumps, assert fails, etc) +[GNU libc] + +The GNU extension memmem() is known to be buggy on linux libc 5.0.9 +and before. Glibc upto 2.0.5 also has problems with memmem (), but +these should not affect LilyPond. + + [Linux Intel] LilyPond occasionally crashes while parsing the initialisation files. diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index c15658f917..bca2cc23f9 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -25,7 +25,7 @@ For compilation you need. =item * A GNU system: GNU LilyPond is known to run on these GNU systems: -Linux, AIX, Digital Unix and Solaris. +Linux, FreeBSD, AIX, Digital Unix and Solaris. If you have the Cygnus WINDOWS32 port of the GNU utils, it will even work in Windows NT/95, but we don't promise to support it. @@ -62,7 +62,9 @@ TeX =item * -A PostScript printer and/or viewer (such as Ghostscript). +A PostScript printer and/or viewer (such as Ghostscript) is strongly +recommended. Xdvi will show all embedded PostScript too if you have +Ghostscript installed. =back @@ -226,7 +228,11 @@ If you have done a successful C, then a simple make install -should do the trick. +should do the trick. + +If you are doing an upgrade, please remember to remove obsolete .pk +and .tfm files of the fonts. A script has been provided to do the +work, see F. =head1 CAVEATS @@ -308,8 +314,8 @@ is unpacked correctly, in particular the empty out directories Previous versions (before 0.1.39) used fonts from the TeX macro package "MusixTeX". You can still use these, but they are not supported. Since LilyPond's Feta font is much prettier, you'd be -stupid to use them, but anyway, here are the installation instructions -for those deprecated fonts. +seriously misguided if you used them, but anyway, here are the +installation instructions for those deprecated fonts. [obsolete] I use the MusixTeX fonts those found in MusixTeX diff --git a/Documentation/faq.pod b/Documentation/faq.pod index 15487142b0..efe7fd548c 100644 --- a/Documentation/faq.pod +++ b/Documentation/faq.pod @@ -4,7 +4,8 @@ FAQ - GNU LilyPond FAQs =head1 DESCRIPTION -Some questions that have been answered before. +Some questions that have been answered before. (note: relative paths +are meant to be relative to the source directory) =head2 Installing @@ -21,7 +22,8 @@ Q: Some of your neat scripts fail, what directories do you use: A: [This only applies if you don't do C, and develop out of the source directory] - +I have a directory which contains all music related stuff, + ~/something/ which contains: @@ -29,10 +31,14 @@ which contains: lilypond/ # the directory as unpacked from the tarball releases/ # directory for .tar.gz releases patches/ # directory for patches between different releases - test/ + test/ # create tarballs and do diffs from this directory ~/something/lilypond/bin is in the PATH, and contains symlinks to the -compiled executables. +compiled executables. For some of the scripts to work, you have to set + + LILYPOND_SOURCEDIR=/home/myself/something/lilypond + +in the environment. If you don't use patches, you'd probably want to symlink @@ -50,7 +56,7 @@ We're not sure on leaving out this feature. If you think this is a good idea, please let us know. Be warned we will I allow you to leave out the C<#> if the note -already has an accidental. We won't allow +already has an accidental, or if the key has a C-sharp. We won't allow c# c % no way! @@ -126,26 +132,6 @@ specify a()a()a -Q: How do I place lyrics under I of the staves in a score, as in -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! - -A: 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 - - - \score { - < \melodic \type Staff = "treble" \trebleMelody - \lyric \type Lyrics = "tlyrics" \trebtext - \type Staff = "bass" \melodic \bassMelody - \lyric \type Lyrics = "blyrics" \basstext - > - \paper { } - } - - - Q: I want to insert some TeX commands @@ -159,11 +145,11 @@ As a further notice, we want to move away from TeX (and perhaps output PostScript or render to an X window too), so using TeX will make sources non-portable at some time. -=head2 Miscellaneous +=head2 Do you support ... Q: Do you support pop songs (chords, single staff, lyrics)? -A: Yes, see the F example +A: Yes, see the F example. Q: Do you support guitar chord diagrams? @@ -171,17 +157,58 @@ A: No, not yet. 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. -Q: Do you support TAB notation +Q: Do you support TAB notation? A: No. The same as for the previous question goes, but TAB is a lot more work than diagrams (TAB needs modification of Parser, Lexer, Staff, Notehead, Stem code and all the code that creates these graphic elements.) +Q: Do you support multiple staff-sizes? + +A: Yes and no. At this time you can choose between 16 or 20 pt +staff-size (you can have other sizes, but you need to tinker with the +fonts to get those). The sizes can't be changed per staff (yet). +Look at F for an example. + + +=head2 How do I .... + Q: How do I change the TeX layout? A: See F, it has some comments. +Q: How do I place lyrics under I of the staves in a score, as in +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! + +A: 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 + + + \score { + < \melodic \type Staff = "treble" \trebleMelody + \lyric \type Lyrics = "tlyrics" \trebtext + \type Staff = "bass" \melodic \bassMelody + \lyric \type Lyrics = "blyrics" \basstext + > + \paper { } + } + + +Q: How do I put more than one marking on a note. + +A: You can stack them + + c4^"a"^"b" + +or use spacing-notes to put markings at different horizontal positions + + < c1 + { s4\ff s4^"text" s4-\marcato s4 } + > + =head2 Development @@ -220,6 +247,17 @@ A: Your best bet of getting me to include code, is to present it as a "fait accompli", ie., to send me a patch. +Q: I made some code, how do I get you to include it? + +A: Send in a patch: + + diff -urN old-file new-file > patch + +or + + diff -urN old-directory/ new-directory/ > patch + +Alternatively, you can use bin/make-patch.py Q: How do I learn the C++ code? @@ -258,7 +296,23 @@ saves us a I of trouble. =head2 Running -Q: I don't get midi-output, even if I use B<-M> +Q: There are lots of warning messages for the printing, all +beginning with: + + dvilj4l: warning: Invalid keyword or value in \special - + +A: You should use dvips and ghostscript to print it: the slurs and +beams are PS C<\special> commands + + +Q: My symbols are all messed up after I upgraded, and I get +dvi-checksum errors! + +A: We mucked with the fonts in the upgrade. Remove I previous +fonts, including the .pk and .tfm fonts in F. A +script automating this has been included, see F + +Q: I don't get midi-output, even if I use B<-M>! A: Your \score should include a \midi block, eg. diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index 26a6664150..f735161a52 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -61,9 +61,15 @@ Add F to the search path for input files. Make incompatible mudela version non-fatal. -=item B<--postscript, -p>, +=item B<--no-postscript, -P>, -Try to use PostScript where possible. +Don't generate embedded PostScript (or MetaFont) symbols, but resort to +less beautiful fixed-size versions. + +LilyPond uses PostScript for variable symbols where possible. (For some +of these symbols runtime MetaFont source will be genarated too. These are +not used unless you also include the appropriate TeX file too. See +F.) =back @@ -142,8 +148,8 @@ Jan Nieuwenhuizen , http://www.digicash.com/~jan. =head1 PROBLEMS -There is an extensive list of todoes and bugs. See F. In -general, try to find out +There is an extensive list of todoes and bugs. See F. If you +have a problem you should try to find out =over 4 @@ -175,7 +181,8 @@ compile/configure options please). Send a description of the bug itself. =item * -Send it to bug-gnu-music@gnu.org. +Send it to bug-gnu-music@gnu.org (you don't have to subscribe +to this mailinglist). =back diff --git a/Documentation/links.pod b/Documentation/links.pod index 26a0026b5c..e6444f8ef5 100644 --- a/Documentation/links.pod +++ b/Documentation/links.pod @@ -55,7 +55,9 @@ These development releases will also be at =item ftp://pcnov095.win.tue.nl/pub/lilypond/development -=item ftp://alpha.gnu.org/gnu/lilypond/development +=item ftp://sca.uwaterloo.ca/pub/lilypond + +=item [your mirror here] =back diff --git a/Documentation/mudela-course.doc b/Documentation/mudela-course.doc index f6ab5083eb..a24d2f382a 100644 --- a/Documentation/mudela-course.doc +++ b/Documentation/mudela-course.doc @@ -21,26 +21,21 @@ \section{Who is who} -This document describes two different things +This document describes various things, but let's first point out the +different parts of the package, and their names. \begin{description} \item[Mudela] A language for defining music. - \item[LilyPond] A package (the only one existing :-) which can read a mudela file and interpret it. - - The name ``LilyPond'' does not have much to do with the purpose of - the package, but we have a special emotional attachment with the - name. (Of course we are not telling why we chose it; this is an - excercise for the reader, most of the vital clues are contained in - the documentation and the source code. If you have guess, then let - me know) +\item[Feta] A (Meta)Font of musical symbols. LilyPond uses it to + render sheet music. \end{description} \section{Overview} - -Let's start with a very simple example, we will enter ``twinkle twinkle -little star.'' We start with the most important part: the notes. +Let's start with a very simple example, we will enter ``twinkle +twinkle little star.'' We start with the most important part: the +notes. Imagine being in a music-lesson, and that you made an error playing ``twinkle twinkle''. Your teacher asks you to read out loud the diff --git a/Documentation/mudela-man.doc b/Documentation/mudela-man.doc index 6dc1cd805f..6895a30e1f 100644 --- a/Documentation/mudela-man.doc +++ b/Documentation/mudela-man.doc @@ -1,7 +1,16 @@ % -*-latex-*- % this document should be run through the mudela-book script after lilypond -% has been installed. +% has been installed. The rules have been precooked into the +% Documentation/Rules.make file; do +% +% make out/mudela-man.dvi +% +% or +% +% mudela-book --outdir=out/ --outname=mudela-course.mudtex mudela-course.doc +% latex '\nonstopmode \input out/mudela-course.mudtex' + \documentclass{article} \usepackage{a4wide} diff --git a/INSTALL.text b/INSTALL.text index 12cb41dfd7..d0d7ea2626 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -24,7 +24,8 @@ PPPPRRRREEEERRRREEEEQQQQUUUUIIIISSSSIIIITTTTEE For compilation you need. +o A GNU system: GNU LilyPond is known to run on these - GNU systems: Linux, AIX, Digital Unix and Solaris. + GNU systems: Linux, FreeBSD, AIX, Digital Unix and + Solaris. If you have the Cygnus WINDOWS32 port of the GNU utils, it will even work in Windows NT/95, but we @@ -46,7 +47,9 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG +o TeX +o A PostScript printer and/or viewer (such as - Ghostscript). + Ghostscript) is strongly recommended. Xdvi will show + all embedded PostScript too if you have Ghostscript + installed. RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD Although not strictly necessary, these are recommended to @@ -55,13 +58,10 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD +o Perl-5. Most documentation was created with the perl's Plain Old Documentation. (I use 5.003) - +o Python. Although perl is nice, python is better. We - will shift towards python for build scripts - -5/Jan/98 LilyPond 0.1.39 1 +11/Jan/98 LilyPond 0.1.41 1 @@ -70,6 +70,9 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD INSTALL(1) LilyPond documentation INSTALL(1) + +o Python. Although perl is nice, python is better. We + will shift towards python for build scripts + +o GNU find +o A fast computer (a full page of music typically takes @@ -122,12 +125,9 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf - Since GNU LilyPond currently is beta, you are advised to - also use - -5/Jan/98 LilyPond 0.1.39 2 +11/Jan/98 LilyPond 0.1.41 2 @@ -136,6 +136,9 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a INSTALL(1) LilyPond documentation INSTALL(1) + Since GNU LilyPond currently is beta, you are advised to + also use + --enable-debugging --enable-checking @@ -188,12 +191,9 @@ INSTALL(1) LilyPond documentation INSTALL(1) source-tree, by overriding the setting for the output directory. - Example: on my system, I do debugging and lots compiling. - For this I use the configuration as follows: - -5/Jan/98 LilyPond 0.1.39 3 +11/Jan/98 LilyPond 0.1.41 3 @@ -202,6 +202,9 @@ INSTALL(1) LilyPond documentation INSTALL(1) INSTALL(1) LilyPond documentation INSTALL(1) + Example: on my system, I do debugging and lots compiling. + For this I use the configuration as follows: + configure --prefix=~ --enable-debugging --enable-printing --enable-checking make all @@ -226,6 +229,10 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG should do the trick. + If you are doing an upgrade, please remember to remove + obsolete .pk and .tfm files of the fonts. A script has + been provided to do the work, see _b_i_n_/_c_l_e_a_n_-_f_o_n_t_s_._s_h. + CCCCAAAAVVVVEEEEAAAATTTTSSSS +o The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You should turn off this flag for this @@ -243,6 +250,24 @@ EEEEXXXXAAAAMMMMPPPPLLLLEEEE This is what the output looks like over here: + + + + + + + + + +11/Jan/98 LilyPond 0.1.41 4 + + + + + +INSTALL(1) LilyPond documentation INSTALL(1) + + GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0 Parsing ... [/home/hw/share/lilypond/init// <..etc..> @@ -257,17 +282,6 @@ EEEEXXXXAAAAMMMMPPPPLLLLEEEE hw:~/musix/spacer$ xdvi someinput& [1] 855 - - -5/Jan/98 LilyPond 0.1.39 4 - - - - - -INSTALL(1) LilyPond documentation INSTALL(1) - - Check out the input files, some of them have comments Please refer to the man page for more information. @@ -305,34 +319,33 @@ MMMMUUUUSSSSIIIIXXXXTTTTEEEEXXXX Previous versions (before 0.1.39) used fonts from the TeX macro package "MusixTeX". You can still use these, but they are not supported. Since LilyPond's Feta font is - much prettier, you'd be stupid to use them, but anyway, - here are the installation instructions for those - deprecated fonts. - - [obsolete] I use the MusixTeX fonts those found in - MusixTeX T.73. Beware, the clef symbol seems to have - changed its position in some versions, (notably Egler's, - a.k.a. OpusTeX). The MusixTeX fonts are included in - MusixTeX (T73 or better), which can be had from any CTAN - site, e.g. at + much prettier, you'd be seriously misguided if you used + them, but anyway, here are the installation instructions + for those deprecated fonts. - ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin - ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin - ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin +11/Jan/98 LilyPond 0.1.41 5 -5/Jan/98 LilyPond 0.1.39 5 +INSTALL(1) LilyPond documentation INSTALL(1) + [obsolete] I use the MusixTeX fonts those found in + MusixTeX T.73. Beware, the clef symbol seems to have + changed its position in some versions, (notably Egler's, + a.k.a. OpusTeX). The MusixTeX fonts are included in + MusixTeX (T73 or better), which can be had from any CTAN + site, e.g. at + ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin -INSTALL(1) LilyPond documentation INSTALL(1) + ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin + ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin You only need the contents of the _m_f_/ subdirectory of the package. The primary site of the Taupin version is @@ -378,19 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS - - - - - - - - - - - - - -5/Jan/98 LilyPond 0.1.39 6 +11/Jan/98 LilyPond 0.1.41 6 diff --git a/NEWS b/NEWS index bb0e37a02d..b00a6f01e3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,49 @@ +pl 41 + - warn for score with multiple Music blocks + - bf: \plet (MB) + - \textsharp in 16pt + - malloc frobnifying + - more fontsizes: 26pt, 11pt, 13pt + - \textstyle "bold" + - .rpm: remove old fonts + +pl 40.jcn2 + - bf: typo scores.cc + - bfs: non-default base constructor calls + - bfs: virtual destructors + - standje.ly: the real standchen (first bit) + - gcc 2.8 compile + - nicer scsii-menuetto + +pl 40.jcn1 + - bf: breaking of :| bar + - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem + - no slope=0 beams between stafflines + - bf: tex without lily-ps-defs + - bf: embedded mf shift: added '%' to \embeddedps + - doos compile + +****** +jan 12 +pl 40 + - some doco fixes + - debian diffs (AF) + +pl 39.jcn2 + - bf: bit smarter atan() for feta-sleur (thanks wendy) + - bf: y quantise of multiple down beams (typo) + - minor doc fixes + - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep + - some changes to ANNOUNCE + - fixes for simple slur/tie placement + - embedded MF fonts identified by parameters -> reusable runtime fonts + - clean-embeds.sh + - runtime MF beams: feta-beum.mf + - bf: enable switching PS off + - updated runtime MF feta-sleur.mf with new PS slur algorithm + +****** +jan 5 1998 pl 39 - 0.2 ANNOUNCE sketch - unix style paths for LILYINCLUDE env diff --git a/TODO b/TODO index a9b64f1dd9..f62af6ca90 100644 --- a/TODO +++ b/TODO @@ -7,8 +7,9 @@ Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr 0.2: + * forced breakpoints - * beam quanting + * --metafont * disable spaces in TeX stuff @@ -78,6 +79,8 @@ STUFF * Fix profiling. gprof bugreport? + * GS: /undefined in draw_beam after XDVI magnification. + PROJECTS * Unicode support? @@ -180,6 +183,7 @@ languages: * Documentation - Doc Mutopia (Music To The People) - Doc (C) stuff of sheet music + - a better format? SGML? TeX? Info? - a tutorial * TeX spanners , use texbeam.cc as an example (smallish) diff --git a/VERSION b/VERSION index 1cb7a136d9..11280fe443 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 39 +TOPLEVEL_PATCH_LEVEL = 41 TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/clean-diaper.sh b/bin/clean-diaper.sh index e02b17ddf9..06be9040ae 100644 --- a/bin/clean-diaper.sh +++ b/bin/clean-diaper.sh @@ -8,8 +8,8 @@ rm -vf `grep -li "%Creator: dvipsk" *.ps` rm -vf `grep -li "Creator: GNU LilyPond" *.midi` rm -vf `grep -li "Creator: ly2dvi" *.tex` rm -vf `find -name 'core'` -rm -vf `find -name *.orig` -rm -vf `find -name *.rej` +rm -vf `find -name '*.orig'` +rm -vf `find -name '*.rej'` # docxx mess diff --git a/bin/clean-embeds.sh b/bin/clean-embeds.sh new file mode 100644 index 0000000000..1b53f85ecb --- /dev/null +++ b/bin/clean-embeds.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +rm -f feta-sleur-[0-9x\-]*.mf +rm -f feta-sleur-[0-9x\-]*.log +rm -f feta-beum-[0-9x\-]*.mf +rm -f feta-beum-[0-9x\-]*.log +rm -f feta-embed.aux +rm -f missfont.log +clean-fonts sleur +clean-fonts beum diff --git a/bin/clean-fonts.sh b/bin/clean-fonts.sh index 07814d664e..3421ca41e8 100644 --- a/bin/clean-fonts.sh +++ b/bin/clean-fonts.sh @@ -6,10 +6,27 @@ case $# in 1) WHAT=$1;; esac + +if [ X$LILYPOND_SOURCEDIR = X ]; +then + LILYPOND_SOURCEDIR=.. +fi + +if [ -d /var/lib/texmf ]; then + TEXDIR=/var/lib/texmf +elif [ -d /var/texfonts ]; then + TEXDIR=/var/texfonts +else + TEXDIR=/var/ +fi + +#if [ -f $LILYPOND_SOURCEDIR/config.status ]; then +#TEXDIR=`awk -F % '/TEXPREFIX/ {print $3}' $LILYPOND_SOURCEDIR/config.status` + # remove possibly stale .pk/.tfm files echo> /tmp/cleaning-font-dummy -FILES=`find /var/lib/texmf/ -name "feta*$WHAT*"` +FILES=`find $TEXDIR -name "feta*$WHAT*tfm" -or -name "feta*$WHAT*pk"` echo removing $FILES rm $FILES /tmp/cleaning-font-dummy diff --git a/bin/flower.py b/bin/flower.py new file mode 100644 index 0000000000..5625599e7a --- /dev/null +++ b/bin/flower.py @@ -0,0 +1,35 @@ +#!@PYTHON@ + +# +# flower.py -- python flower lib +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1997 Han-Wen Nienhuys +# + +class File: + """silly wrapper for Python file object.""" + def __init__ (self,nm, mode='r'): + if nm: + self.file_ = open (nm, mode); + elif mode == 'w': + self.file_ = sys.stdout + else: + self.file_ = sys.stdin + + self.eof_ = 0; + def readline (self): + l= self.file_.readline (); + if not l: + self.eof_ = 1; + return l; + def write (self, str): + self.file_.write (str) + def eof (self): + return self.eof_ + def close (self): + self.file_.close () + def __del__ (self): + self.close (); + diff --git a/bin/genheader.py b/bin/genheader.py index 07bd450772..4a68b3b80d 100644 --- a/bin/genheader.py +++ b/bin/genheader.py @@ -111,11 +111,14 @@ def do_file(nm): def extension(ext,nm): - ext = '\.' + ext + ext = '\\.' + ext return regex.search(ext, nm) <> -1 +def c_extension(nm): + return extension('hh',nm) or extension('cc',nm) \ + or extension('icc', nm) or extension('tcc',nm) def select_commentification(nm): - if extension('hh',nm) or extension('cc',nm): + if c_extension (nm): return c_commentify elif extension('py',nm) or extension('pl',nm) or extension('sh',nm): return sh_commentify @@ -125,7 +128,7 @@ def select_commentification(nm): raise 'help' for nm in files: - if extension('hh', nm): + if extension('hh', nm) or extension('icc', nm) or extension('tcc', nm): my_options.add_hdr_def = 1 if my_options.commentify == None: my_options.commentify = select_commentification(nm) diff --git a/bin/make-docxx.sh b/bin/make-docxx.sh index 17abe50efb..ba04446924 100644 --- a/bin/make-docxx.sh +++ b/bin/make-docxx.sh @@ -5,4 +5,4 @@ then fi p1=`find $LILYTOP -name '*.hh' |egrep -v out/` p2=`find $LILYTOP -name '*.cc' |egrep -v out/` -doc++ -d docxx/ -S -k -p $p1 $p2 +doc++ -d docxx/ -S -k -p $BANNEROPT $p1 $p2 diff --git a/bin/make-patch.py b/bin/make-patch.py index 30e870f16c..360d5d70a4 100644 --- a/bin/make-patch.py +++ b/bin/make-patch.py @@ -1,10 +1,23 @@ #!@PYTHON@ + +import sys +import os + +lilypath ='' +try: + lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' +except IndexError: + lilypath = os.environ['HOME'] + 'musix/current' +lilypath = lilypath + '/bin/' +sys.path.append(lilypath) + + from lilypython import * import getopt import pipes -mp_version = '2' +mp_version = '0.3' class Options: def __init__(self): diff --git a/bin/make-website.py b/bin/make-website.py index 52bc149378..e0f8480ac1 100644 --- a/bin/make-website.py +++ b/bin/make-website.py @@ -13,13 +13,24 @@ The WWW site is my test-suite for LilyPond, I usually don't distribute versions that fail to complete this script """ +import sys +import os + +lilypath ='' +try: + lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' +except IndexError: + lilypath = os.environ['HOME'] + 'musix/current' +lilypath = lilypath + '/bin/' +sys.path.append(lilypath) + from lilypython import * import __main__ import glob depth = '' makewebsite_id = ""; -id_str = "make-website 0.6"; +id_str = "make-website 0.7"; tar = "tar"; make = "make"; mailaddress = "unknown" @@ -79,7 +90,7 @@ examples=["twinkle-pop", "gallina", "twinkle", "collisions", - "font", + "font16", "font20", #"scales", "rhythm", diff --git a/bin/mf-deps.py b/bin/mf-deps.py index c17e5d949a..6d022fff45 100644 --- a/bin/mf-deps.py +++ b/bin/mf-deps.py @@ -22,9 +22,15 @@ from regsub import * ; import sys; import os; + +version = "0.2" input_re = compile('^[ \t]*input *\([^;]+\);') postfixes = ['log', 'dvi', '2602gf', 'tfm'] +def identify (): + return "mf-deps.py %s" % version + + def print_one(x): print x @@ -73,7 +79,7 @@ class Targetdeps: return reduce(line_concat, dependencies) - +print "# Automatically generated by %s\n" % identify () for file in sys.argv[1:]: # skip programname t = Targetdeps(file) diff --git a/bin/mf-to-table.py b/bin/mf-to-table.py index 08ded81adf..927ccbbeb1 100644 --- a/bin/mf-to-table.py +++ b/bin/mf-to-table.py @@ -15,36 +15,12 @@ import regsub import os import sys import time +from flower import * begin_autometric_re = regex.compile('@{') end_autometric_re = regex.compile('@}') autometric_re = regex.compile('@{\(.*\)@}') -version = '0.4' - -class File: - """silly wrapper for Python file object.""" - def __init__(self,nm, mode='r'): - if nm: - self.file_ = open(nm, mode); - elif mode == 'w': - self.file_ = sys.stdout - else: - self.file_ = sys.stdin - - self.eof_ = 0; - def readline(self): - l= self.file_.readline(); - if not l: - self.eof_ = 1; - return l; - def write(self, str): - self.file_.write(str) - def eof(self): - return self.eof_ - def close(self): - self.file_.close() - def __del__(self): - self.close(); +version = '0.5' class Feta_file(File): """Read Feta metrics from a metafont log-file.""" @@ -181,8 +157,8 @@ class Log_reader: self.texfile = Indentable_file(texfile_nm, 'w') - headerstr = '%% Creator: %s\n%% Automatically generated on %s\n%% Do not edit' % \ - (program_id(), today_str()) + headerstr = '%% Creator: %s\n%% Automatically generated on\n%% Do not edit' % \ + (program_id() ) self.lyfile.write(headerstr) self.texfile.write(headerstr) diff --git a/bin/ps-to-gifs.sh b/bin/ps-to-gifs.sh old mode 100644 new mode 100755 diff --git a/bin/release.py b/bin/release.py index 604e1779f0..26519263e2 100644 --- a/bin/release.py +++ b/bin/release.py @@ -1,5 +1,16 @@ #!@PYTHON@ +import sys +import os + +lilypath ='' +try: + lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' +except IndexError: + lilypath = os.environ['HOME'] + 'musix/current' +lilypath = lilypath + '/bin/' +sys.path.append(lilypath) + from lilypython import * os.chdir(lilydirs.topdir) diff --git a/bin/show-latest.pl b/bin/show-latest.pl index a75250b54f..1c3d14dd0e 100644 --- a/bin/show-latest.pl +++ b/bin/show-latest.pl @@ -2,7 +2,7 @@ # -*-Perl-*- -$reldir="/home/hw/musix/releases"; +$reldir="/home/hanwen/musix/releases"; use FileHandle; use Getopt::Long; diff --git a/debian/changelog b/debian/changelog index 0158a62afe..dcc446cf8f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,48 @@ +lilypond (0.1.39-2) unstable; urgency=low + + * debian/control: + - Description: Remove the note about installing musixtex or + musixtex-fonts. + - Added "Conflicts: musixtex-fonts". + + -- Anthony Fok Tue, 6 Jan 1998 02:42:56 -0700 + +lilypond (0.1.39-1) unstable; urgency=low + + * New upstream LilyPond '98 "New Year Gift" release. + * debian/control: + - No longer Recommends: "musixtex" or "musixtex-fonts" because + LilyPond no longer needs them. + - Therefore, Section: is changed from "contrib/tex" to "tex". + LilyPond can finally go into the main distribution. Hurray! + * debian/rules: Now also dh_installdocs ANNOUNCE-0.1 and ONEWS. + * preinst, postinst, postrm: Added #DEBHELPER#. + * preinst, postrm: Changed #!/bin/bash to #!/bin/sh. + + -- Anthony Fok Mon, 5 Jan 1998 18:42:30 -0700 + +lilypond (0.1.38-1) unstable; urgency=low + + * New upstream Xmas release. + * Applied patch patch-0.1.38.jcn1 from Jan Nieuwenhuizen. + * Have fun, Merry Christmas and a Happy 1998. -- Han-Wen Nienhuys + + -- Anthony Fok Wed, 24 Dec 1997 16:38:14 -0700 + +lilypond (0.1.37-1) unstable; urgency=low + + * New upstream release + * Minor modifications to debian/rules due to changes in + debhelper 0.32. + + -- Anthony Fok Fri, 12 Dec 1997 11:11:12 -0700 + +lilypond (0.1.36-1) unstable; urgency=low + + * New upstream release + + -- Anthony Fok Tue, 9 Dec 1997 18:33:50 -0700 + lilypond (0.1.35-1) unstable; urgency=low * New upstream release diff --git a/debian/control b/debian/control index 13de513c09..5da70c7c86 100644 --- a/debian/control +++ b/debian/control @@ -1,5 +1,5 @@ Source: lilypond -Section: contrib/tex +Section: tex Priority: optional Maintainer: Anthony Fok Standards-Version: 2.3.0.1 @@ -7,15 +7,13 @@ Standards-Version: 2.3.0.1 Package: lilypond Architecture: any Depends: ${shlibs:Depends} -Recommends: tetex-base, musixtex | musixtex-fonts +Recommends: tetex-base +Conflicts: musixtex-fonts Description: A music typesetting program. GNU LilyPond is a program which converts a music-script (mudela) into TeX output, or MIDI to produce multi-staff scores. Features include multiple meters, clefs, keys, lyrics, versatile input-language, cadenzas beams, slurs, triplets, multiple voices. - . - Note: LilyPond uses the fonts from MusiXTeX. Please install the package - musixtex or musixtex-fonts when you install lilypond. . URL: http://www.stack.nl/~hanwen/lilypond/ Authors: Han-Wen Nienhuys diff --git a/debian/copyright b/debian/copyright index b5489572be..613a8d3967 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,8 +1,9 @@ -This package was debianized by Anthony Fok foka@debian.org on +This package was debianized by Anthony Fok on Wed, 6 Aug 1997 04:30:28 -0600 It was downloaded from - ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-0.1.35.tar.gz + ftp://pcnov095.win.tue.nl/pub/lilypond/development/ + lilypond-0.1.39.tar.gz It is also available from: ftp://alpha.gnu.org/gnu/ @@ -16,7 +17,7 @@ Authors: Copyright: - GNU LilyPond is Copyright (C) 1996,1997 + GNU LilyPond is Copyright (C) 1996-1998 Jan Nieuwenhuizen & Han-Wen Nienhuys This program is free software; you can redistribute it and/or modify diff --git a/debian/postinst b/debian/postinst index 2e1f5e0d0c..ddcc40e520 100644 --- a/debian/postinst +++ b/debian/postinst @@ -4,7 +4,7 @@ # # by Anthony Fok # Initial release: Sun, 26 Oct 1997 03:23:00 -0700 -# Last modified: Sun, 23 Nov 1997 03:04:16 -0700 +# Last modified: Mon, 5 Jan 1998 18:36:51 -0700 use strict; use File::Copy; @@ -238,3 +238,7 @@ check_specialmap(); print " $pkg_name configuration completed.\n"; print " Please read /usr/doc/$package/README.Debian to get started.\n"; + +print << `EOF` +#DEBHELPER# +EOF diff --git a/debian/postrm b/debian/postrm index 86d5a93535..e3d606b1e6 100644 --- a/debian/postrm +++ b/debian/postrm @@ -1,16 +1,20 @@ -#!/bin/bash -e +#!/bin/sh # # postrm script for the Debian GNU/Linux lilypond package # by Anthony Fok # This is free software; see the GNU General Public Licence # version 2 or later for copying conditions. There is NO warranty. -# Last modified: Mon, 10 Nov 1997 22:44:37 -0700 +# Last modified: Mon, 5 Jan 1998 18:38:11 -0700 + +set -e package=lilypond font_supplier=public font_typeface=lilypond std_TEXMF=/usr/lib/texmf +#DEBHELPER# + if [ "`which kpsetool`" ]; then TEXMF=`kpsetool -v '$TEXMF'` fi diff --git a/debian/preinst b/debian/preinst index 71a9d645e6..fff81f284c 100644 --- a/debian/preinst +++ b/debian/preinst @@ -1,16 +1,20 @@ -#!/bin/bash -e +#!/bin/sh # # preinst script for the Debian GNU/Linux lilypond package # by Anthony Fok # This is free software; see the GNU General Public Licence # version 2 or later for copying conditions. There is NO warranty. -# Last modified: Tue, 11 Nov 1997 01:25:15 -0700 +# Last modified: Mon, 5 Jan 1998 18:39:30 -0700 + +set -e package=lilypond font_supplier=public font_typeface=lilypond std_TEXMF=/usr/lib/texmf +#DEBHELPER# + if [ "`which kpsetool`" ]; then TEXMF=`kpsetool -v '$TEXMF'` fi diff --git a/debian/rules b/debian/rules index 722ba550ac..f0d60cfc7c 100644 --- a/debian/rules +++ b/debian/rules @@ -44,7 +44,8 @@ binary-arch: build dh_installdirs usr/lib/texmf/doc $(MAKE) prefix=`pwd`/debian/tmp/usr install ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond - dh_installdocs BUGS TODO NEWS DEDICATION ANNOUNCE README \ + dh_installdocs ANNOUNCE ANNOUNCE-0.1 README NEWS ONEWS DEDICATION \ + BUGS TODO \ Documentation/out/*.text Documentation/*.doc \ Documentation/lelie_logo.xpm bin/ly2dvi.sh dh_installexamples input/*.ly input/*.tex @@ -57,7 +58,9 @@ binary-arch: build dh_compress dh_fixperms dh_suidregister - dh_installdebfiles + dh_installdeb + dh_shlibdeps + dh_gencontrol # dh_makeshlibs dh_du dh_md5sums diff --git a/flower/NEWS b/flower/NEWS index f7db23a49c..0629855834 100644 --- a/flower/NEWS +++ b/flower/NEWS @@ -1,3 +1,13 @@ +pl 34.jcn2 + - memmem optimise + +pl 35 + - bf: libc-extension: memmem + +pl 34 + - string.icc + - String_convert::precision_str: double to string with fixed precision + pl 33 - String naming - unix style paths diff --git a/flower/VERSION b/flower/VERSION index 636df4b25f..fb9bbfb6d6 100644 --- a/flower/VERSION +++ b/flower/VERSION @@ -1,6 +1,6 @@ MAJOR_VERSION = 1 MINOR_VERSION = 1 -PATCH_LEVEL = 33 +PATCH_LEVEL = 35 # use to send patches, always empty for released version: MY_PATCH_LEVEL = # include separator: "-1" or ".a" # diff --git a/flower/choleski.cc b/flower/choleski.cc index 187fb26901..989a042603 100644 --- a/flower/choleski.cc +++ b/flower/choleski.cc @@ -24,23 +24,23 @@ Choleski_decomposition::full_matrix_solve (Vector &out, Vector const &rhs) const // forward substitution for (int i=0; i < n; i++) { - Real sum (0.0); - for (int j=0; j < i; j++) - sum += y (j) * L(i,j); - y (i) = (rhs (i) - sum)/L(i,i); + Real sum (0.0); + for (int j=0; j < i; j++) + sum += y (j) * L(i,j); + y (i) = (rhs (i) - sum)/L(i,i); } for (int i=0; i < n; i++) - y (i) /= D(i); + y (i) /= D(i); // backward subst Vector &x (out); // using input as return val. for (int i=n-1; i >= 0; i--) { - Real sum (0.0); - for (int j=i+1; j < n; j++) - sum += L(j,i)*x (j); - x (i) = (y (i) - sum)/L(i,i); + Real sum (0.0); + for (int j=i+1; j < n; j++) + sum += L(j,i)*x (j); + x (i) = (y (i) - sum)/L(i,i); } } @@ -51,7 +51,7 @@ Choleski_decomposition::band_matrix_solve (Vector &out, Vector const &rhs) const int b = L.band_i(); assert (n == L.dim()); - out.set_dim (n); + out.set_dim (n); Vector y; y.set_dim (n); @@ -59,22 +59,22 @@ Choleski_decomposition::band_matrix_solve (Vector &out, Vector const &rhs) const // forward substitution for (int i=0; i < n; i++) { - Real sum (0.0); - for (int j= 0 >? i - b; j < i; j++) - sum += y (j) * L(i,j); - y (i) = (rhs (i) - sum)/L(i,i); + Real sum (0.0); + for (int j= 0 >? i - b; j < i; j++) + sum += y (j) * L(i,j); + y (i) = (rhs (i) - sum)/L(i,i); } for (int i=0; i < n; i++) - y (i) /= D(i); + y (i) /= D(i); // backward subst Vector &x (out); // using input as return val. for (int i=n-1; i >= 0; i--) { - Real sum (0.0); - for (int j=i+1; j <= i + b&&j < n ; j++) - sum += L(j,i)*x (j); - x (i) = (y (i) - sum)/L(i,i); + Real sum (0.0); + for (int j=i+1; j <= i + b&&j < n ; j++) + sum += L(j,i)*x (j); + x (i) = (y (i) - sum)/L(i,i); } } @@ -83,10 +83,10 @@ Choleski_decomposition::solve (Vector &x, Vector const &rhs) const { if (L.band_b()) { - band_matrix_solve (x,rhs); + band_matrix_solve (x,rhs); } else - full_matrix_solve (x,rhs); + full_matrix_solve (x,rhs); } Vector @@ -101,23 +101,23 @@ void Choleski_decomposition::full_matrix_decompose (Matrix const & P) { - int n = P.dim(); + int n = P.dim(); L.unit(); for (int k= 0; k < n; k++) { - for (int j = 0; j < k; j++) - { - Real sum (0.0); - for (int l=0; l < j; l++) - sum += L(k,l)*L(j,l)*D(l); - L(k,j) = (P(k,j) - sum)/D(j); - } - Real sum=0.0; + for (int j = 0; j < k; j++) + { + Real sum (0.0); + for (int l=0; l < j; l++) + sum += L(k,l)*L(j,l)*D(l); + L(k,j) = (P(k,j) - sum)/D(j); + } + Real sum=0.0; - for (int l=0; l < k; l++) - sum += sqr (L(k,l))*D(l); - Real d = P(k,k) - sum; - D(k) = d; + for (int l=0; l < k; l++) + sum += sqr (L(k,l))*D(l); + Real d = P(k,k) - sum; + D(k) = d; } } @@ -131,19 +131,19 @@ Choleski_decomposition::band_matrix_decompose (Matrix const &P) for (int i= 0; i < n; i++) { - for (int j = 0 >? i - b; j < i; j++) - { - Real sum (0.0); - for (int l=0 >? i - b; l < j; l++) - sum += L(i,l)*L(j,l)*D(l); - L(i,j) = (P(i,j) - sum)/D(j); - } - Real sum=0.0; + for (int j = 0 >? i - b; j < i; j++) + { + Real sum (0.0); + for (int l=0 >? i - b; l < j; l++) + sum += L(i,l)*L(j,l)*D(l); + L(i,j) = (P(i,j) - sum)/D(j); + } + Real sum=0.0; - for (int l=0 >? i - b; l < i; l++) - sum += sqr (L(i,l))*D(l); - Real d = P(i,i) - sum; - D(i) = d; + for (int l=0 >? i - b; l < i; l++) + sum += sqr (L(i,l))*D(l); + Real d = P(i,i) - sum; + D(i) = d; } L.try_set_band(); assert (L.band_i() == P.band_i ()); @@ -157,15 +157,15 @@ Choleski_decomposition::band_matrix_decompose (Matrix const &P) */ Choleski_decomposition::Choleski_decomposition (Matrix const & P) - : L(P.dim()), D(P.dim ()) + : L(P.dim()), D(P.dim ()) { #ifdef PARANOID assert ((P-P.transposed()).norm ()/P.norm () < EPS); #endif if (P.band_b()) - band_matrix_decompose (P); + band_matrix_decompose (P); else - full_matrix_decompose (P); + full_matrix_decompose (P); #ifdef PARANOID @@ -190,10 +190,10 @@ Choleski_decomposition::inverse() const Vector inv (n); for (int i = 0; i < n; i++) { - e_i.set_unit (i); - solve (inv, e_i); - for (int j = 0 ; j - edge_in_l_arr_.find_l (this)); + assert (edge_out_l_arr_[i]-> + edge_in_l_arr_.find_l (this)); } for (int i=0; i < edge_in_l_arr_.size(); i++) - assert (edge_in_l_arr_[i]->contains_b (this)); + assert (edge_in_l_arr_[i]->contains_b (this)); #endif } @@ -87,10 +87,10 @@ Directed_graph_node::remove_edge_out (Directed_graph_node *d_l) PARANOID_OK(); for (int i=0; i < edge_out_l_arr_.size();) { - if (edge_out_l_arr_[i]== d_l) - remove_edge_out_idx (i); - else - i++; + if (edge_out_l_arr_[i]== d_l) + remove_edge_out_idx (i); + else + i++; } PARANOID_OK(); } @@ -112,21 +112,21 @@ void Directed_graph_node::unlink() { #ifdef PARANOID - PARANOID_OK(); + PARANOID_OK(); - Link_array t = edge_out_l_arr_; - t.concat (edge_in_l_arr_); + Link_array t = edge_out_l_arr_; + t.concat (edge_in_l_arr_); #endif - while (edge_out_l_arr_.size()) - remove_edge_out_idx (0); + while (edge_out_l_arr_.size()) + remove_edge_out_idx (0); - while (edge_in_l_arr_.size()) - remove_edge_in (edge_in_l_arr_[0]); + while (edge_in_l_arr_.size()) + remove_edge_in (edge_in_l_arr_[0]); #ifdef PARANOID - for (int i =0; i < t.size(); i++) - t[i]->OK(); + for (int i =0; i < t.size(); i++) + t[i]->OK(); #endif } @@ -141,7 +141,7 @@ Directed_graph_node::add (Directed_graph_node* dep_l) { PARANOID_OK(); if (!dep_l) - return ; + return ; dep_l->edge_in_l_arr_.push (this); edge_out_l_arr_.push (dep_l); PARANOID_OK(); diff --git a/flower/flower-debug.cc b/flower/flower-debug.cc index 5728b8a95c..f3131c8254 100644 --- a/flower/flower-debug.cc +++ b/flower/flower-debug.cc @@ -14,7 +14,7 @@ void set_flower_debug (Dstream&ds, bool b) { #ifdef NPRINT if (b) - cout << _("Debug printout disabled, see the installation guide.") << endl; + cout << _("Debug printout disabled. Compiled with NPRINT.") << endl; #endif flower_check_debug = b; diff --git a/flower/include/cursor.tcc b/flower/include/cursor.tcc index 84c60d836a..ea204e1dc6 100644 --- a/flower/include/cursor.tcc +++ b/flower/include/cursor.tcc @@ -79,7 +79,7 @@ template int Cursor::operator-(Cursor rhs) const { - assert (rhs.list == list); + assert (&rhs.list_ == &list_); int dif = 0; // search from *this on further up (positive difference) diff --git a/flower/include/fproto.hh b/flower/include/fproto.hh index e09f03e3c1..694f63fed6 100644 --- a/flower/include/fproto.hh +++ b/flower/include/fproto.hh @@ -44,6 +44,7 @@ struct Directed_graph_node; struct Getopt_long; struct Matrix; struct String_data; +struct FlowerString; struct String_handle; struct String_convert; struct String; diff --git a/flower/include/plist.hh b/flower/include/plist.hh index f30c98ca5a..03432c927e 100644 --- a/flower/include/plist.hh +++ b/flower/include/plist.hh @@ -55,7 +55,7 @@ class Pointer_list : public Link_list { public: void junk(); - Pointer_list (Pointer_list const &) { set_empty(); } + Pointer_list (Pointer_list const& l) : Link_list (l) { set_empty(); } Pointer_list() { } ~Pointer_list() { junk (); } }; diff --git a/flower/include/string-convert.hh b/flower/include/string-convert.hh index 1d3f5d0300..72149f78ec 100644 --- a/flower/include/string-convert.hh +++ b/flower/include/string-convert.hh @@ -36,6 +36,7 @@ public: static String i2dec_str (int i, int length_i, char ch); static String rational_str (Rational); static String pointer_str (void const *); + static String precision_str (double x, int n); static String i64_str (I64, char const * fmt = 0); }; diff --git a/flower/include/string.hh b/flower/include/string.hh index 067ea3358e..fcec32ae89 100644 --- a/flower/include/string.hh +++ b/flower/include/string.hh @@ -17,13 +17,20 @@ #include "string-handle.hh" -/** +/* technically incorrect, but lets keep it here: this is a catch all place for this stuff. */ #include "international.hh" +/* Libg++ also has a String class. Programming errors can lead to + confusion about which String is in use. Uncomment the following if you have + unexplained crashes after mucking with String + */ + +// #define String FlowerString + /** Intuitive string class. provides @@ -62,13 +69,13 @@ class String protected: String_handle strh_; - bool null_terminated(); + bool null_terminated (); public: /** init to empty string. This is needed because other constructors are provided.*/ - String() { } + String (); String (Rational); /// String s = "abc"; @@ -84,12 +91,12 @@ public: String (bool); /// return a "new"-ed copy of contents - Byte* copy_byte_p() const; // return a "new"-ed copy of contents + Byte* copy_byte_p () const; // return a "new"-ed copy of contents - char const* ch_C() const; - Byte const* byte_C() const; - char* ch_l(); - Byte* byte_l(); + char const* ch_C () const; + Byte const* byte_C () const; + char* ch_l (); + Byte* byte_l (); String &operator =(String const & source); @@ -97,21 +104,25 @@ public: void operator += (char const* s) { strh_ += s; } void operator += (String s); - bool empty_b () const; + bool empty_b () const; #if 0 /** is the string empty? Ugh-ugh-thank-you-cygnus. W32 barfs on this */ - operator bool () const; + operator bool () const; { - return length_i (); + return length_i (); } #endif void append (String); void prepend (String); - char operator [](int n) const { return strh_[n]; } + /** + Return a char. UNSAFE because it may change strlen () result + */ + char &operator [](int n); + char operator [](int n) const; /// return n leftmost chars String left_str (int n) const; @@ -120,13 +131,13 @@ public: String right_str (int n) const; /// return uppercase of *this - String upper_str() const; + String upper_str () const; /// return lowercase of *this - String lower_str() const; + String lower_str () const; /// return the "esrever" of *this - String reversed_str() const; + String reversed_str () const; /// return a piece starting at index_i (first char = index_i 0), length n @@ -152,32 +163,41 @@ public: int index_i (String) const; int index_any_i (String) const; - void to_upper(); - void to_lower(); + void to_upper (); + void to_lower (); /// provide Stream output void print_on (ostream& os) const; /// the length of the string - int length_i() const; + int length_i () const; // ***** depreciated - int len() const { - return length_i(); + int len () const { + return length_i (); } /// convert to an integer - int value_i() const; + int value_i () const; /// convert to a double - double value_f() const; + double value_f () const; }; #include "compare.hh" - INSTANTIATE_COMPARE(String const &, String::compare_i); +#ifdef STRING_UTILS_INLINED +#ifndef INLINE +#define INLINE inline +#endif +#include "string.icc" +/* we should be resetting INLINE. oh well. */ +#endif + + // because char const* also has an operator ==, this is for safety: -inline bool operator==(String s1, char const* s2){ +inline bool operator==(String s1, char const* s2) +{ return s1 == String (s2); } inline bool operator==(char const* s1, String s2) @@ -206,4 +226,6 @@ operator << (ostream& os, String d) return os; } + + #endif diff --git a/flower/include/string.icc b/flower/include/string.icc new file mode 100644 index 0000000000..8a03288c04 --- /dev/null +++ b/flower/include/string.icc @@ -0,0 +1,35 @@ +/* + string.icc -- implement String inlines + + source file of the Flower Library + + (c) 1997 Han-Wen Nienhuys + + */ + +#ifndef STRING_ICC +#define STRING_ICC + + +INLINE +char & +String::operator [](int n) +{ + return (char &) strh_[n]; +} + +INLINE +char +String::operator [](int n) const +{ + return strh_[n]; +} + +INLINE +String::String () +{ +} + + + +#endif /* STRING_ICC */ diff --git a/flower/interval.cc b/flower/interval.cc index 433ca727aa..f425bfd295 100644 --- a/flower/interval.cc +++ b/flower/interval.cc @@ -6,10 +6,12 @@ (c) 1997 Han-Wen Nienhuys */ + #include "interval.hh" #include "real.hh" #include "interval.tcc" + template INTERVAL__INSTANTIATE(Real); Real diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc index b380b1fd2d..d8a9fcd6e4 100644 --- a/flower/libc-extension.cc +++ b/flower/libc-extension.cc @@ -15,69 +15,73 @@ char* strnlwr (char* start_l ,int n) { - char * p = start_l + n; - while (--p >= start_l) + char * p = start_l + n; + while (--p >= start_l) { - *p = tolower (*p); /* a macro on some compilers */ + *p = tolower (*p); /* a macro on some compilers */ } - return start_l; + return start_l; } char* strnupr (char* start_l, int n) { - char * p = start_l + n; - while (--p >= start_l) + char * p = start_l + n; + while (--p >= start_l) { - *p = toupper (*p); /* a macro on some compilers */ + *p = toupper (*p); /* a macro on some compilers */ } - return start_l; + return start_l; } #if !HAVE_MEMMEM /** locate a substring. #memmem# finds the first occurrence of - #needle# in #haystack# - */ + #needle# in #haystack#. This is not ANSI-C. -char * -memmem (Byte const * haystack, int haystack_len, - Byte const *needle,int needle_len) + The prototype is not in accordance with the Linux Programmer's + Manual v1.15, but it is with /usr/include/string.h */ + +Byte * +memmem (Byte const *needle,int needle_len, + Byte const *haystack, int haystack_len) { - Byte const * end_haystack = haystack + haystack_len - needle_len; - Byte const * end_needle = needle + needle_len ; + Byte const * end_haystack = haystack + haystack_len - needle_len + 1; + Byte const * end_needle = needle + needle_len ; - /* Ahhh ... Some minimal lowlevel stuff. This *is* nice; Varation - is the spice of life */ - while (haystack < end_haystack) + /* Ahhh ... Some minimal lowlevel stuff. This *is* nice; Varation + is the spice of life */ + while (haystack < end_haystack) { - Byte const *subneedle_l = needle; - Byte const *subhaystack_l = haystack; - while (subneedle_l < end_needle) + Byte const *subneedle_l = needle; + Byte const *subhaystack_l = haystack; + while (subneedle_l < end_needle) { - if (*subneedle_l++ != *subhaystack_l++) - goto next; // yeah. I should be prosecuted. + if (*subneedle_l++ != *subhaystack_l++) + { + haystack ++; + continue; + } } - // completed the needle. Gotcha. - return (char*) haystack; - next: - haystack++; + // completed the needle. Gotcha. + return (Byte *) haystack; } - return 0; + return 0; } + #endif Byte * memrchr (Byte const * p, int n, char c) { - const Byte * q = p+n; - while (q > p) + const Byte * q = p+n; + while (q > p) { - if (*--q == c) - return (Byte*)q; + if (*--q == c) + return (Byte*)q; } - return 0; + return 0; } @@ -85,34 +89,34 @@ template inline void my_swap (T &t1, T &t2, T &tmp) { - tmp = t1; - t1 = t2; - t2 = tmp; + tmp = t1; + t1 = t2; + t2 = tmp; } Byte* strrev (Byte* byte_l, int length_i) { - Byte tmp_byte; + Byte tmp_byte; - Byte* left_l = byte_l; - Byte* right_l = byte_l + length_i; + Byte* left_l = byte_l; + Byte* right_l = byte_l + length_i; - while (right_l > left_l) + while (right_l > left_l) { - my_swap (*right_l-- , *left_l++ , tmp_byte); + my_swap (*right_l-- , *left_l++ , tmp_byte); } - return byte_l; + return byte_l; } #if ! HAVE_SNPRINTF int snprintf (char *str, size_t, - char const *format, ...) + char const *format, ...) { - va_list ap; - va_start (ap, format); - int i = vsprintf (str, format, ap); - va_end (ap); - return i; + va_list ap; + va_start (ap, format); + int i = vsprintf (str, format, ap); + va_end (ap); + return i; } #endif diff --git a/flower/string-convert.cc b/flower/string-convert.cc index a8f6619048..23ab488cf3 100644 --- a/flower/string-convert.cc +++ b/flower/string-convert.cc @@ -221,7 +221,7 @@ String_convert::double_str (double f, char const* fmt) } /** - Make a string from a single character. +Make a string from a single character. @param #n# is a repetition count, default value is 1 @@ -261,3 +261,41 @@ String_convert::pointer_str (void const *l) snprintf (buffer, STRING_BUFFER_LEN, "%p", l); // assume radix 10 return String (buffer); } + +/** + Convert a double to a string. + + @param + #n# is the number of nonzero digits + */ +String +String_convert::precision_str (double x, int n) +{ + String format = "%." + String (0 >? n - 1) + "e"; + String str = double_str (abs (x), format.ch_C ()); + + int exp = str.right_str (3).value_i (); + str = str.left_str (str.len () - 4); + + while (str[str.len () - 1] == '0') + str = str.left_str (str.len () - 1); + if (str[str.len () - 1] == '.') + str = str.left_str (str.len () - 1); + + if (exp == 0) + return (sign (x) > 0 ? str : "-" + str); + + str = str.left_str (1) + str.cut (2, INT_MAX); + int dot = 1 + exp; + if (dot <= 0) + str = "0." + String ('0', -dot) + str; + else if (dot >= str.len ()) + str += String ('0', dot - str.len ()); + else if (( dot > 0) && (dot < str.len ())) + str = str.left_str (dot) + '.' + str.cut (dot, INT_MAX); + else + assert (0); + + return (sign (x) > 0 ? str : "-" + str); +} + diff --git a/flower/string.cc b/flower/string.cc index 2076a2a19b..504ba9811b 100644 --- a/flower/string.cc +++ b/flower/string.cc @@ -170,7 +170,7 @@ String::index_last_i (char const c) const return -1; char const* me = strh_.ch_C(); - char const* p = memrchr (me, length_i(), c); + char const* p = memrchr ((Byte*)me, length_i(), c); if (p) return p - me; return -1; @@ -216,7 +216,7 @@ String::index_i (char c) const } /** - find the substring. + find a substring. @return 1 index of leftmost occurrence of #searchfor# @@ -225,8 +225,9 @@ int String::index_i (String searchfor) const { char const* me = strh_.ch_C(); - char const* p = (char const *) memmem ( - me, length_i(), searchfor.ch_C(), searchfor.length_i ()); + + char const* p = (char const *) + memmem (me, length_i(), searchfor.ch_C(), searchfor.length_i ()); if (p) return p - me; @@ -369,4 +370,3 @@ String::value_f() const return String_convert::dec2_f (*this); } - diff --git a/flower/stringutil.cc b/flower/stringutil.cc index d1db31b160..f8332672f0 100644 --- a/flower/stringutil.cc +++ b/flower/stringutil.cc @@ -1,19 +1,14 @@ /* stringutil.cc -- generate non-inline members. + This should be in a separate file, because one can include the .icc + only once. + source file of the LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys -*/ + (c) 1997 Han-Wen Nienhuys */ #ifdef STRING_DEBUG -#include -#include -void* -mymemmove (void* dest, void const* src, size_t n) -{ - return memcpy (dest, src, n); // wohltempererit: 69006 -} #define memmove mymemmove #endif @@ -29,5 +24,17 @@ mymemmove (void* dest, void const* src, size_t n) #include "string-handle.hh" #include "string-data.hh" +#include "string.hh" #include "string-data.icc" #include "string-handle.icc" +#include "string.icc" + +#ifdef STRING_DEBUG +#include +#include +void* +mymemmove (void* dest, void const* src, size_t n) +{ + return memcpy (dest, src, n); +} +#endif diff --git a/flower/test/Makefile b/flower/test/Makefile index 207bcd10ce..eccb972ad3 100644 --- a/flower/test/Makefile +++ b/flower/test/Makefile @@ -36,7 +36,7 @@ EXTRA_DISTFILES = result # MODULE_LIBDEPS=check-flower-deps -MODULE_LIBES = -lflower +MODULE_LIBES = -lflower # diff --git a/flower/test/main.cc b/flower/test/main.cc index 85c4cbce27..5d2e6db18f 100644 --- a/flower/test/main.cc +++ b/flower/test/main.cc @@ -5,16 +5,16 @@ Array< fptr > *test_arr_p; void reg_test (fptr f) { - if (!test_arr_p) - test_arr_p = new Array; - test_arr_p->push(f); + if (!test_arr_p) + test_arr_p = new Array; + test_arr_p->push(f); } int main() { - if (test_arr_p) { - for (int i=0; i < test_arr_p->size(); i++) - (*test_arr_p)[i] (); - } + if (test_arr_p) { + for (int i=0; i < test_arr_p->size(); i++) + (*test_arr_p)[i] (); + } } diff --git a/flower/test/mat-test.cc b/flower/test/mat-test.cc index 8fdc7d794e..1ad7af49ce 100644 --- a/flower/test/mat-test.cc +++ b/flower/test/mat-test.cc @@ -15,50 +15,50 @@ void matrix() { - int N=10; - Matrix m(N,N), q(N,N); - Vector v(N); + int N=10; + Matrix m(N,N), q(N,N); + Vector v(N); - for (int i=0; i < N; i++) { - v(i) =i; - for (int j=0; j < N; j++) { - m(i,j) = i+j; - q(i,j) = (abs(i-j) > 3) ?0 :i-j; - } + for (int i=0; i < N; i++) { + v(i) =i; + for (int j=0; j < N; j++) { + m(i,j) = i+j; + q(i,j) = (abs(i-j) > 3) ?0 :i-j; } + } - cout << "v: " << String(v); - cout << "m: " << String(m ); - cout << "q: " << String(q); - cout << "m*q; " << String(m*q); - cout << "m*m: " << String(m*m); - m.OK(); - cout << "m: " << String(m); - cout << "q.band " << q.band_i() << endl; - q.try_set_band(); - cout << "q(B): " << q; - q.OK(); - Matrix sum(q+q); - cout << "q + q " << sum; - q.OK(); - cout << "q*q: " << q*q; - q.OK(); + cout << "v: " << String(v); + cout << "m: " << String(m ); + cout << "q: " << String(q); + cout << "m*q; " << String(m*q); + cout << "m*m: " << String(m*m); + m.OK(); + cout << "m: " << String(m); + cout << "q.band " << q.band_i() << endl; + q.try_set_band(); + cout << "q(B): " << q; + q.OK(); + Matrix sum(q+q); + cout << "q + q " << sum; + q.OK(); + cout << "q*q: " << q*q; + q.OK(); - Matrix hilbert(N,N), h2(hilbert); - for (int i=0; i < N; i++) { - for (int j=0; j < N; j++) { - hilbert(i,j) = 1/Real(i+j+1); - h2 (i,j) = (abs(i-j) > 3) ?0 : hilbert(i,j); - } + Matrix hilbert(N,N), h2(hilbert); + for (int i=0; i < N; i++) { + for (int j=0; j < N; j++) { + hilbert(i,j) = 1/Real(i+j+1); + h2 (i,j) = (abs(i-j) > 3) ?0 : hilbert(i,j); } - h2.try_set_band(); - Choleski_decomposition ch(h2); - cout << "red Hilbert " << h2; - cout << "choleski " << ch.L; - Matrix T =ch.L.transposed(); - cout << "L^T " << T; - cout << "L * L^T" << ch.L * T; - cout << "H2^{-1} * H2" << h2 * ch.inverse(); + } + h2.try_set_band(); + Choleski_decomposition ch(h2); + cout << "red Hilbert " << h2; + cout << "choleski " << ch.L; + Matrix T =ch.L.transposed(); + cout << "L^T " << T; + cout << "L * L^T" << ch.L * T; + cout << "H2^{-1} * H2" << h2 * ch.inverse(); } ADD_TEST(matrix); diff --git a/flower/test/pqtest.cc b/flower/test/pqtest.cc index 0e086ab0ef..66838d4180 100644 --- a/flower/test/pqtest.cc +++ b/flower/test/pqtest.cc @@ -4,23 +4,23 @@ int compare(int i, int j) { - return i-j; + return i-j; } void pqtest() { - PQueue pq; + PQueue pq; - for (int i=0; i < 10; i++) { - int r = rand()/10000; - pq.insert(r); - cout << "adding: " << r<< endl; - } - while (pq.size()) { - cout << "getting : "<< flush; - cout << pq.get() << "\n"; - } + for (int i=0; i < 10; i++) { + int r = rand()/10000; + pq.insert(r); + cout << "adding: " << r<< endl; + } + while (pq.size()) { + cout << "getting : "<< flush; + cout << pq.get() << "\n"; + } } ADD_TEST(pqtest); diff --git a/flower/test/stringtest.cc b/flower/test/stringtest.cc index 163b3bbb9c..79ec1e443a 100644 --- a/flower/test/stringtest.cc +++ b/flower/test/stringtest.cc @@ -10,51 +10,57 @@ void ctors() { - cout << "constructors"< a; - a.push("abcd"); - a.push("zxy"); - a.push("abc"); - a.push(""); - a.sort(String::compare_i); - cout << "compares: "< a; + a.push("abcd"); + a.push("zxy"); + a.push("abc"); + a.push(""); + a.sort(String::compare_i); + cout << "compares: "< + \stemboth + c4 g c' a' \bar ":|"; + a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata | + a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill| + a\fp a4.\sf a4.\sfz | % a\fz a\rf + [c8 c] [a' a'] + [c a'] [a' c] | + [c \< d e f] [as' ges' f' e'] + [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] | + \clef "bass"; + r1 r2 r4 r8 r16 r32 r64 r128 r128 | + \multi 2 < { \stemup r2 r2} {\stemdown c c }> + \multi 2 < { \stemup ''c1 } {\stemdown r1}> + \stemboth + \clef "violin"; + e8_. g'8-> e16^^ g'16_^ + e32 _| g'32^| g''32-\ltoe g''32-\lheel + e64 g'64 c4... | + + \octave c''; + \meter 4/4; + \textstyle "finger"; + c4^"1" d^"2" e^"3" f^"4" g^"5" + + % Music to the Martians! + < bes4^"6" e_"7" c_"8" > + a^"0"_"9" + + a'^\flageolet + \textstyle "roman"; +%{ % default abbreviations + c4 c4: c4:32 c4: c4 c2. + 'a1 + 'a1:32 + 'c4:8 c': 'c4:16 c': +% [ 'c8:16 'c 'c 'c ] [ a a a a ] +% [ 'c 'f 'b e ] +% [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ] +%% % there's still some hairy beam bugfixing todo +%% [ c'8:16 g d 'a ] +%% [ c'16:32 g d 'a ] +%% [ 'c8:32 'f 'b e ] + [:32 c16 e] + [:32 c16 e] + [:16 c8 e] + [:16 e4 g] + [:16 e2 g] + [:16 e1 g] +%} + \meter 1/2; a2 | + \meter 3/2; < a1. + { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} > + | + \meter 2/4; a2 | + \meter 5/4; a1.. | + \meter 6/8; a2. | + \meter 7/8; a2.. | + \meter 9/8; a1... | + \meter 12/8; a1. | + \meter 12/4; + r1. r2. r4. r8. r16. r32. r64. r64. | + } diff --git a/input/font.ly b/input/font.ly index f1f1e8a006..7ec3ada723 100644 --- a/input/font.ly +++ b/input/font.ly @@ -9,78 +9,8 @@ description = "This file tests the Feta music font"; \version "0.1.7"; +\include "font-body.ly"; \score{ - \melodic{ - \octave c'; - \bar "|:"; - \meter 4/4; - \multi 2 < { \stemup e'\longa a\breve | } - { \stemdown - c1 \clef "bass"; ''b \clef "violin"; c' a' - c2 \clef "alto"; g c' \clef "violin"; a' - } > - \stemboth - c4 g c' a' \bar ":|"; - a\ppp-\upbow a\pp-\downbow a\p^\turn a\mp^\fermata | - a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill| - a\fp a4.\sf a4.\sfz | % a\fz a\rf - [c8 c] [a' a'] - [c a'] [a' c] | - [c \< d e f] [as' ges' f' e'] - [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] | - \clef "bass"; - r1 r2 r4 r8 r16 r32 r64 r128 r128 | - \multi 2 < { \stemup r2 r2} {\stemdown c c }> - \multi 2 < { \stemup ''c1 } {\stemdown r1}> - \stemboth - \clef "violin"; - e8_. g'8-> e16^^ g'16_^ - e32 _| g'32^| g''32-\ltoe g''32-\lheel - e64 g'64 c4... | - - \octave c''; - \meter 4/4; - \textstyle "finger"; - c4^"1" d^"2" e^"3" f^"4" g^"5" - - % Music to the Martians! - < bes4^"6" e_"7" c_"8" > - a^"0"_"9" - - a'^\flageolet - \textstyle "roman"; -%{ % default abbreviations - c4 c4: c4:32 c4: c4 c2. - 'a1 - 'a1:32 - 'c4:8 c': 'c4:16 c': -% [ 'c8:16 'c 'c 'c ] [ a a a a ] -% [ 'c 'f 'b e ] -% [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ] -%% % there's still some hairy beam bugfixing todo -%% [ c'8:16 g d 'a ] -%% [ c'16:32 g d 'a ] -%% [ 'c8:32 'f 'b e ] - [:32 c16 e] - [:32 c16 e] - [:16 c8 e] - [:16 e4 g] - [:16 e2 g] - [:16 e1 g] -%} - \meter 1/2; a2 | - \meter 3/2; < a1. - { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} > - | - \meter 2/4; a2 | - \meter 5/4; a1.. | - \meter 6/8; a2. | - \meter 7/8; a2.. | - \meter 9/8; a1... | - \meter 12/8; a1. | - \meter 12/4; - r1. r2. r4. r8. r16. r32. r64. r64. | - } \paper{ % don't change this. % otherwise 16pt and 20pt layouts differ. diff --git a/input/font11.ly b/input/font11.ly new file mode 100644 index 0000000000..9530ebe19d --- /dev/null +++ b/input/font11.ly @@ -0,0 +1,22 @@ + +\header{ +title= "The Feta Font"; +subtitle = "proofsheet"; +enteredby = "jcn & hwn"; +copyright = "public domain"; +description = "This file tests the Feta music font, 11pt"; +% "(Feta definitively is not an abbreviation of Font-En-TjA)"; +} + + +\include "paper11.ly" +\include "font-body.ly" +\score{ + \FontBody + \paper{ + \paper_eleven + linewidth = 17.5 \cm; + gourlay_maxmeasures =5.; + } +} + diff --git a/input/font13.ly b/input/font13.ly new file mode 100644 index 0000000000..d4e2d4d71d --- /dev/null +++ b/input/font13.ly @@ -0,0 +1,22 @@ + +\header{ +title= "The Feta Font"; +subtitle = "proofsheet"; +enteredby = "jcn & hwn"; +copyright = "public domain"; +description = "This file tests the Feta music font, 11pt"; +% "(Feta definitively is not an abbreviation of Font-En-TjA)"; +} + + +\include "paper13.ly" +\include "font-body.ly" +\score{ + \FontBody + \paper{ + \paper_thirteen + linewidth = 17.5 \cm; + gourlay_maxmeasures =5.; + } +} + diff --git a/input/font16.ly b/input/font16.ly new file mode 100644 index 0000000000..42b4cfe103 --- /dev/null +++ b/input/font16.ly @@ -0,0 +1,22 @@ +\header{ +title= "The Feta Font"; +subtitle = "proofsheet"; +enteredby = "jcn & hwn"; +copyright = "public domain"; +description = "This file tests the Feta music font"; +% "(Feta definitively is not an abbreviation of Font-En-TjA)"; +} + +\version "0.1.7"; +\include "font-body.ly" + +\score{ + \FontBody + \paper{ + % don't change this. + % otherwise 16pt and 20pt layouts differ. + linewidth = 12.5 \cm; + gourlay_maxmeasures =5.; + } +} + diff --git a/input/font20.ly b/input/font20.ly index c83989e8e0..e78f752bd4 100644 --- a/input/font20.ly +++ b/input/font20.ly @@ -1,16 +1,20 @@ -% "This file is a stub to fool make-website" - \header{ title= "The Feta font"; subtitle = "proofsheet"; enteredby = "jcn"; copyright = "public domain"; -description = "This file tests the Feta music-font"; +description = "This file tests the Feta music-font in the 20pt version"; TestedFeatures = "(Feta definitively is not an abbreviation of Font-En-TjA)"; } - - - - +\include "paper20.ly" +\include "font-body.ly" +\score{ + \FontBody + \paper{ + \paper_twenty + linewidth = 17.5 \cm; + gourlay_maxmeasures =5.; + } + } diff --git a/input/font26.ly b/input/font26.ly new file mode 100644 index 0000000000..535383d46e --- /dev/null +++ b/input/font26.ly @@ -0,0 +1,20 @@ +\header{ +title= "The Feta Font"; +subtitle = "proofsheet"; +enteredby = "jcn & hwn"; +copyright = "public domain"; +description = "This file tests the Feta music font"; +% "(Feta definitively is not an abbreviation of Font-En-TjA)"; +} + +\include "paper26.ly"; +\include "font-body.ly" +\score{ + \FontBody + \paper{ + \paper_twentysix + linewidth = 17.5 \cm; + gourlay_maxmeasures =5.; + } +} + diff --git a/input/gallina.tex b/input/gallina.tex index 01d95b9f79..21bbf4dbd4 100644 --- a/input/gallina.tex +++ b/input/gallina.tex @@ -8,7 +8,6 @@ \addtolength{\topmargin}{-1cm} \setlength{\textwidth}{15cm} \input lilyponddefs -\musixsixteendefs \input titledefs \begin{document} diff --git a/input/scsii-menuetto.ly b/input/scsii-menuetto.ly index febd0720e6..363390eb8c 100644 --- a/input/scsii-menuetto.ly +++ b/input/scsii-menuetto.ly @@ -6,7 +6,7 @@ instrument = "Menuetto I"; % duh description = "Cello suite transcribed for Viola"; source = "?"; opus = "BWV 1008 no. 5"; -composer = "Johann Sebastian Bach (1685-1750)"; +composer = "Johann Sebastian Bach(1685-1750)"; enteredby = "JCN"; copyright = "public domain"; } @@ -22,13 +22,13 @@ copyright = "public domain"; % \tempo{Moderato} % \metron{4=120} % -% \key\F % \key is F ( f-major ) +% \key\F % \key is F( f-major ) % % \slope{30} % Fool MusiXTeX into 30 / 10 steeper beam % % because piece is set very tightly IImenuetto = \melodic{ - \property Voice.beamslopedamping = \infinity +% \property Voice.beamslopedamping = \infinity \clef"alto"; \property Staff.instrument = cello \meter 3/4; @@ -40,19 +40,30 @@ IImenuetto = \melodic{ %%2 \textstyle "finger"; % ugh. - < [ bes8^"1"( e8 c8_"2"_"4" > - )a8 bes8-. g8-. ] a4-.^"4" | - + \multi 2 < + { \stemup; [ bes8^"1"( )a8 bes8-. g8-. ] a4-.^"4" } + + { \stemdown; < e8_"2" c8_"4" > } + > | + \stemboth; %%3 - \property Voice.beamslopedamping = \normal +% \property Voice.beamslopedamping = \normal < d4 'bes4-. > g4-. [ f8-. e8-. ] | - \property Voice.beamslopedamping = \infinity +% \property Voice.beamslopedamping = \infinity %%4 - < [ f8( 'a > e8 )d8 cis8-. 'b8-. 'a8-. ] + \multi 2 < + { \stemup; [ f8( e8 )d8 cis8-. 'b8-. 'a8-. ] } + { \stemdown; 'a } + > | + \stemboth; %%5 < a2 f2 d2 > bes!4-. | %%6 - < [ bes8 e8 > a8 bes8-. g8-. ] + \multi 2 < + { \stemup; [ bes8 a8 bes8-. g8-. ] } + { \stemdown; e8 } + > + \stemboth; c'!4-. | %%7 < a4-. f4> @@ -60,58 +71,83 @@ IImenuetto = \melodic{ < e'4-.-\downbow g4 'g4 > | %%8 < cis'2.-\upbow e2. 'a2. > - \bar ":|:"; + \bar ":|:"; %%9 \clef "violin"; < e'2 a2 \f > - \property Voice.beamslopedamping = \normal +% \property Voice.beamslopedamping = \normal [ d'8( e'16 )f'16 ] | - \property Voice.beamslopedamping = \infinity +% \property Voice.beamslopedamping = \infinity %%10 - < [ e'8( g8 > d' cis'_"2" )e' a () g8 ] | + \multi 2 < + { \stemup; [ e'8( d' cis'_"2" )e' a( )g8 ] } + { \stemdown; g8 } + > | + \stemboth; %%11 - \multi 2 < - {\stemup a4() d'4 cis'4-. } - { \stemdown f2 e4 } > | - \stemboth + \multi 2 < + { \stemup; a4( )d'4 cis'4-. } + { \stemdown; f2 e4 } + > | + \stemboth; %%12 - % oeps: slur gets attached at d8 iso g'8! -% < [ g'8^"4"( d8 > f' e' )f' d'^"3"() c' ] | - % wrong still... - < { [ g'8^"4"( f' e' )f' d'^"3"() c' ] } { [ d8 ] } > | + \multi 2 < + { \stemup; [ g'8^"4"( f' e' )f' d'^"3"( ) c' ] } + { \stemdown; d8 } + > | + \stemboth; %%13 \clef "alto"; \multi 2 < - { \stemup bes2 c'4 } - { \stemdown g4() f4 e4 }% ugh + + { \stemup; bes2 c'4 } + { \stemdown; g4( )f4 e4 }% ugh > | - \stemboth + \stemboth; %%14 - < [ a8 f8 > g8 a8 f8 ] < d'4-\upbow e4 'bes4 > | + \multi 2 < + { \stemup; [ a8 g8 a8 f8 ] } + { \stemdown; f8 } + > + \stemboth; + < d'4-\upbow e4 'bes4 > | %%15 - < c'4-\downbow f4 'a4 > [ bes8() a8 g8 a8 ] | + < c'4-\downbow f4 'a4 > [ bes8( )a8 g8 a8 ] | %%16 [ f( e8 )f a8-. g8-. bes8-. ] | %%17 < a2^"0"^\trill fis2_"3" > bes4 | %%18 - < { [ c'8 () bes8 c' a8 ] } es8 > fis4^\trill | + \multi 2 < + { \stemup; [ c'8( )bes8 c' a8 ] } + { \stemdown; es8 } + > + \stemboth; + fis4^\trill | %%19 < d'4-\downbow g4 'bes4 > < c'4-\upbow g4 c4 > < [ bes8 d8 > a8 ] | %%20 - < { [ c'8 ( bes8 a8 )bes g() bes8 ] } d8 g8 > | + \multi 2 < + { \stemup; [ c'8( bes8 a8 )bes g( )bes8 ] } + { \stemdown; < d8 g8 > } + > | + \stemboth; %%21 \multi 2 < - {\stemup d'4( \stemup )cis'4 d'4 } - { \stemdown g2 f4 } + { \stemup; d'4( )cis'4 d'4 } + { \stemdown; g2 f4 } > | - \stemboth + \stemboth; %%22 - < { [ g8 () f8 g8 e8 ] } cis8 > < f4 d4 > | + \multi 2 < + { \stemup; [ g8( )f8 g8 e8 ] f4 } + { \stemdown; cis8 d4 } + > | + \stemboth; %%23 - \property Voice.beamslopedamping = \normal +% \property Voice.beamslopedamping = \normal [ 'g8 g8 ] < e4.^\trill 'a4. > d8-\upbow | - \property Voice.beamslopedamping = \infinity +% \property Voice.beamslopedamping = \infinity %%24 \textstyle "roman"; % ugh < d2.^"fine" 'a2. 'd2._"3 mins."> @@ -124,6 +160,11 @@ IImenuetto = \melodic{ } \paper{ linewidth= 150.0\mm; + % how does this work? + % why does space not have dim? + arithmetic_basicspace = 3.2; + % how can multiplier have dim? + arithmetic_mulitplier = 9.\pt; \output "scsii-menuetto.out"; } \midi{ diff --git a/input/scsii-menuetto.tex b/input/scsii-menuetto.tex index be358aa063..d6628ae59f 100644 --- a/input/scsii-menuetto.tex +++ b/input/scsii-menuetto.tex @@ -5,7 +5,6 @@ \advance\textwidth30mm \begin{document} \input lilyponddefs -\musixsixteendefs \input titledefs \def\interscoreline{\vskip6pt} \title{Solo Cello Suites\normalsize\\[2ex]Suite II} diff --git a/input/sleur.ly b/input/sleur.ly index c712abda2c..bcb6e45846 100644 --- a/input/sleur.ly +++ b/input/sleur.ly @@ -5,16 +5,37 @@ TestedFeatures = "This file tests Feta embedded slurs" "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -%{ remember to: -rm `find /var/lib/texmf -name "feta-sleur-*"` -%} - \version "0.1.7"; +shortlong = \melodic{ + c4()c( c c | + c c c c | + c c c c | + c c c )c | +} + +dirs = \melodic { + \octave c'; + c'1() g' () c () g () c | +} + +complex = \melodic{ + \octave c'; + 'c16( 'e( 'g( 'b( d( f( a( c'~ )))))))c4 c4 | + \octave c'''; + 'c16( a( f( d( 'b( 'g( 'e( 'c~ )))))))c4 c4 | +} + +beum = \melodic{ + [c8 c] c4 c4 c4 | +} + \score{ \melodic{ - \octave c' - ;c'1() g' () c () g () c + \shortlong + \dirs + \complex + \beum } \paper{ } } diff --git a/input/slurs.ly b/input/slurs.ly index 26ff241da3..caf87a3f4c 100644 --- a/input/slurs.ly +++ b/input/slurs.ly @@ -4,6 +4,7 @@ \score{ \melodic{\octave c'; \duration "last"; + 'c4 ~ 'c c'' ~ c'' ~ g ~ c ~ d ~ e ~ f ~ g ~ a ~ b ~ 'c ~ c @@ -16,10 +17,24 @@ < { c ~ d } { e ~ f } > - \multi 2 < - { \stemup c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c } - { \stemdown c (e g )c'~( [b a g )d] r2 } - > +% \multi 2 < +% { \stemup c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c } +% { \stemdown c (e g )c'~( [b a g )d] r2 } +% > + + { +% \octave c'; +% 'c16( 'e( 'g( 'b( d( f( a( c'~ )))))))c4 c4 | +% \octave c'''; +% 'c16( a( f( d( 'b( 'g( 'e( 'c~ )))))))c4 c4 | +% \octave c'; +% c'1() g' () c () g () c | + c4()c( c c | + c c c c | + c c c c | + c c c )c | + } + } } } diff --git a/input/standchen-16.tex b/input/standchen-16.tex index 9ad6f3a77d..e22d627ae9 100644 --- a/input/standchen-16.tex +++ b/input/standchen-16.tex @@ -7,7 +7,6 @@ \input titledefs %\pagestyle{empty} \begin{document} -\musixsixteendefs \def\interscoreline{\vskip3mm} \title{St\"andchen\normalsize\\[2ex](Serenade)} \composer{Franz Schubert (1797-1828)} diff --git a/input/standchen-20.tex b/input/standchen-20.tex index 9d0f09b67d..d295d2f834 100644 --- a/input/standchen-20.tex +++ b/input/standchen-20.tex @@ -10,7 +10,6 @@ \pagestyle{empty} \begin{document} \input lilyponddefs -\musixtwentydefs \input titledefs \def\interscoreline{\vskip3mm} \title{St\"andchen\normalsize\\[2ex](Serenade)} diff --git a/input/standchen.ly b/input/standchen.ly index 739d06d3be..04cbe817cb 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -13,6 +13,7 @@ copyright = "public domain"; multiple \paper{}s in one \score %} +\include "paper20.ly" \version "0.1.7"; commands = \melodic{ diff --git a/input/standje.ly b/input/standje.ly new file mode 100644 index 0000000000..5d3481ece6 --- /dev/null +++ b/input/standje.ly @@ -0,0 +1,201 @@ +\header{ +filename = "standchen.ly"; +title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; +opus = "D. 957 No. 4"; +composer = "Franz Schubert (1797-1828)" + "Text by Ludwig Rellstab (1799-1860)"; +enteredby = "JCN"; +copyright = "public domain"; +} + +%{ + Tested Features: multivoice, accents, lyrics, chords, piano music, +multiple \paper{}s in one \score +%} + +\version "0.1.7"; + +$vocal_verse1 = \melodic{ + \octave c'; + % ugh: treble/bass +% \clef treble; + \clef violin; + % ugh: '3' of plet should hang over middle note + % ugh: barcheck fails if i write 'g8' below: +% [2/3 g8( )as]1/1 \plet 2/3; g8 \plet 1/1; c'4. g8 | + % anyway, for typping this plet stuff sucks + [2/3 g8( )as]1/1 \plet 2/3; g \plet 1/1; c'4. g8 | + [2/3 f8( )g]1/1 \plet 2/3; f \plet 1/1; c'4 f8 r | + g4.-> f8 [2/3 f( )es]1/1 \plet 2/3; d \plet 1/1; | + es2 r4 | + % ugh: a whole should be a measure + %r1 | + r2. | + r2. | + [2/3 g8( )as]1/1 \plet 2/3; g \plet 1/1; es'4. g8 | + [2/3 f8( )g]1/1 \plet 2/3; f \plet 1/1; d'4. c'8 | + bes4. as8 [2/3 as( )g]1/1 \plet 2/3; f \plet 1/1; | + g2 r4 | + r2. | + r2. | + g8. b16 es'4. d'8 | + c'8. g16 es4. c8 | + % [as32\grace( bes32\grace] ) + [2/3 as8( )g]1/1 \plet 2/3; as \plet 1/1; c'4. as8 | + g2. | + %[f32\grace( g] ) + [2/3 f8( )e]1/1 \plet 2/3; f \plet 1/1; as4. f8 | + es!2. | + g8. b16 es'4. d'8 | + c'8. g16 e4. c8 | + % [a32\grace b] ) + [2/3 a!8( ) gis]1/1 \plet 2/3; a \plet 1/1; c'4. a8 | + g!2. | + [2/3 d'8\f cis']1/1 \plet 2/3; d \plet 1/1; f'4. b8 | + c'2. | + r2. | + r2. | +} + +$lyric_verse1 = \lyric{ +% 5 + [2/3 Lei-4 se8 ]1/1 fleh-4. en8 | + [2/3 mei-4 ne8 ]1/1 Lie-4 der8 _8 | + Durch4. die8 [2/3 Nacht4 zu8 ]1/1 | + dir;2 _4 | + _4 _ _ | + _ _ _ | +% 11 + [2/3 In4 den8 ]1/1 stil-4. len8 | + [2/3 Hainr4 her-8 ]1/1 nie-4. der,8 | + Lieb4. chen,8 [2/3 komm4 zu8 ]1/1 | + mir!2 _4 | + _4 _ _ | + _ _ _ | +% 17 + Fl\"us-8. ternd16 schlan-4. ke8 | + Wip-8. fel16 rau-4. schen8 | + [2/3 In4 des8 ]1/1 Mon-4. des8 | + Licht;2. | + _4 _ _ | + _4 _ _ | +% 23 + Des8. Ver-16 r\"a-4. ters8 | + feind-8. lich16 Lau-4. schen8 | + [2/3 F\"urch-4 te,8 ]1/1 Hol-4. de,8 | + nicht,2. | + [2/3 f\"urch-4 te,8 ]1/1 Hol-4. de,8 | + nicht.2. | + _4 _ _ + _ _ _ +} + +$treble_intro = \melodic{ + \octave c'; + \clef violin; + % ugh: i'd like to type this! + %r8 [<'g-. c-.> <'g-. c-.> <'g-. c-.>] | + r8 <['g-. c-.> <'g-. c-.> <'g-. c-.]> | + r8 <['as-. c-.> <'as-. c-.> <'as-. c-.]> | + r8 <['as-. c-.> <'as-. c-.> <'as-. c-.]> | + r8 <['g-. 'b-.> <'b-. d-.> <'g-. 'b-.> <'b-. d-.> <'g-. 'b-.]> | + +} + +$treble_verse1 = \melodic{ + \octave c'; + \clef violin; + r8 <['g c> <'g c> <'g c]> | + r8 <['f c> <'f c> <'f c]> | + r8 <['f 'g b> <'g b d> <'f 'g b> <'g b d> <'f 'g b]> | + r8 <['es 'g c> <'g c es> <'es 'g c> <'g c es> <'es 'g c]> | + <)f'8 d'> <[2/3 f' d'> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | + r8 <['g c> <'g c> <'g c]> | +} + +$bass_intro = \melodic{ + \octave c; + \clef bass; + <'c2 c> r4 | + <''as2 'as> r4 | + <''f2 'f> r4 | + <''g2 g> r4 | +} + +$bass_verse1 = \melodic{ + \octave c; + \clef bass; + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | + <'c2 c> r4 | +} + + +global= \melodic {\meter 3/4; \key bes es as; } + + +\score{ + \melodic< + \type Lyrics { \skip 4 * 12; \$lyric_verse1 } + \type Staff + { \skip 4 * 12; \$vocal_verse1 } + + % i want a (grand) staff!!! + + \type Grandstaff < + < { \$treble_intro \$treble_verse1 } + \global + > + < \global + { \$bass_intro \$bass_verse1 } + > + > + > + \paper{ + % how does this work? + % previously we had the clear 'ideal whole note space' setting? + arithmetic_multiplier = 6.\pt; + % ugh: the *first* (intro) line may only have four measures... + gourlay_maxmeasures = 4.; + } +} + diff --git a/lily/VERSION b/lily/VERSION index 15ba649ddb..0c90d98cb4 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,4 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 39 +PATCH_LEVEL = 41 MY_PATCH_LEVEL = diff --git a/lily/bar.cc b/lily/bar.cc index 14b5310099..87a654100e 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -36,7 +36,7 @@ Bar::brew_molecule_p() const { Paper_def *p = paper(); Atom s = p->lookup_l()->bar (type_str_, - p->get_var ("bar_size")); + p->get_var ("barsize")); Molecule*output = new Molecule (Atom (s)); return output; diff --git a/lily/beam.cc b/lily/beam.cc index 450c12db14..ebda7c1ccd 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -317,28 +317,34 @@ Beam::quantise_left_y (Beam::Pos pos, bool extend_b) Real staffline_thickness = paper ()->rule_thickness (); Real beam_thickness = 0.48 * (interline_f - staffline_thickness); - const int QUANTS = 6; - Real qy[QUANTS] = { + const int QUANTS = 7; + Real qy[QUANTS] = + { 0, beam_thickness / 2, beam_thickness, interline_f / 2 + beam_thickness / 2 + staffline_thickness / 2, interline_f, interline_f + beam_thickness / 2, + interline_f + beam_thickness }; /* ugh, using i triggers gcc 2.7.2.1 internal compiler error (far down): for (int i = 0; i < QUANTS; i++) */ + + // fixme! for (int ii = 0; ii < QUANTS; ii++) - qy[ii] -= beam_thickness / 2; - Pos qpos[QUANTS] = { + qy[ii] -= 0.5 *beam_thickness; + Pos qpos[QUANTS] = + { HANG, STRADDLE, SIT, INTER, HANG, - STRADDLE + STRADDLE, + SIT }; // y-values traditionally use internote dimension @@ -384,7 +390,7 @@ Beam::quantise_left_y (Beam::Pos pos, bool extend_b) if (extend_b) left_y_ = (dir_ > 0 ? upper_y : lower_y); else - left_y_ = (upper_y - left_y_ < y - lower_y ? upper_y : lower_y); + left_y_ = (upper_y - y < y - lower_y ? upper_y : lower_y); } void @@ -436,6 +442,8 @@ Beam::set_stemlens () for (int j=0; j < stems_.size (); j++) { Stem *s = stems_[j]; + if (s->transparent_b_) + continue; Real x = s->hpos_f () - x0; s->set_stemend (left_y_ + slope_f_ * x); diff --git a/lily/debug.cc b/lily/debug.cc index d4082d494b..39b40c7764 100644 --- a/lily/debug.cc +++ b/lily/debug.cc @@ -1,3 +1,12 @@ +/* + debug.cc -- implement debugging routines + + source file of the GNU LilyPond music typesetter + + (c) 1996,98 Han-Wen Nienhuys + + */ +#include #include #include #include @@ -6,7 +15,7 @@ #include "dstream.hh" #include "flower-debug.hh" #include "moment.hh" - +#include "main.hh" Dstream *monitor=0; ostream * nulldev =0; @@ -60,9 +69,42 @@ debug_init() bool check_debug=false; + +bool check_malloc_b = false; + +// #define MEMORY_PARANOID + +#ifdef MEMORY_PARANOID + + +void * +operator new (size_t size) +{ + void *result; + result = malloc (size); + if (check_malloc_b) + memfrob (result, size); + return result; +} + + +void +operator delete (void *p) +{ + if (!p) + return ; + if (check_malloc_b) + memfrob (p, 8); // ugh. Need the blocksize. 8 is sysdependant + + free (p); +} +#endif // MEMORY_PARANOID + void set_debug (bool b) { check_debug =b; set_flower_debug (*monitor, check_debug); + check_malloc_b = experimental_features_global_b; } + diff --git a/lily/include/axes.hh b/lily/include/axes.hh index 3e0284b68d..b273f6b102 100644 --- a/lily/include/axes.hh +++ b/lily/include/axes.hh @@ -16,7 +16,7 @@ enum Axis { NO_AXES=2, }; -class String; +#include "string.hh" // ugh String axis_name_str (Axis); diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 1b9710034c..3729be625c 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -16,9 +16,13 @@ beam and that point in the correct direction */ class Beam: public Directional_spanner { public: + /** The beams (especially at small slopes) should be prevented to + conflict with the stafflines. This necessitates some quantisation + of start and end posititons of the beam. + */ enum Pos { NONE, SIT = 1, STRADDLE = 2, HANG = 4, INTER = 8 }; - // ugh, silly C++ - enum Quantise { NUN, NORMAL, TRADITIONAL }; + // ugh, silly C++ (Pos::NONE vs Quantise::NONE) + enum Quantise { NUNE, NORMAL, TRADITIONAL }; Link_array stems_; /// the slope of the beam in posns / point (dimension) diff --git a/lily/include/break.hh b/lily/include/break.hh index 851aa726cf..dcc3f63908 100644 --- a/lily/include/break.hh +++ b/lily/include/break.hh @@ -14,6 +14,7 @@ #include "colhpos.hh" + /** Statistics for the number of columns calced. */ diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh index c422e04db8..4df2a4744b 100644 --- a/lily/include/midi-item.hh +++ b/lily/include/midi-item.hh @@ -20,6 +20,7 @@ struct Midi_item { DECLARE_MY_RUNTIME_TYPEINFO; Midi_item (Audio_item* audio_item_l); + virtual ~Midi_item (); static String i2varint_str (int i); void output (Midi_stream* midi_stream_l) const; virtual String str() const = 0; diff --git a/lily/include/qlpsolve.hh b/lily/include/qlpsolve.hh index 9098a02238..6c018c5a9f 100644 --- a/lily/include/qlpsolve.hh +++ b/lily/include/qlpsolve.hh @@ -26,49 +26,49 @@ */ class Active_constraints { - friend class Inactive_iter; + friend class Inactive_iter; - Matrix A,H; - Array active; - Array inactive; // actually this is a set, not an array. - Ineq_constrained_qp const *opt; + Matrix A,H; + Array active; + Array inactive; // actually this is a set, not an array. + Ineq_constrained_qp const *opt; public: - String status() const; + String status() const; - Vector vec (int k) const { return opt->cons[k]; } - Real rhs (int k) const { return opt->consrhs[k]; } + Vector vec (int k) const { return opt->cons[k]; } + Real rhs (int k) const { return opt->consrhs[k]; } - /** drop constraint. drop constraint k from the active set. k is the index of the + /** drop constraint. drop constraint k from the active set. k is the index of the constraint in #active# */ - void drop (int k); + void drop (int k); - /** add constraint j. + /** add constraint j. add constraint j to the active set j is the index of the constraint in #inactive# */ - void add (int j); + void add (int j); - /// exchange in and out. - void exchange (int in, int out) { add (in); drop (out); } + /// exchange in and out. + void exchange (int in, int out) { add (in); drop (out); } - Vector find_active_optimum (Vector g); + Vector find_active_optimum (Vector g); - /// get lagrange multipliers. - Vector get_lagrange (Vector v); + /// get lagrange multipliers. + Vector get_lagrange (Vector v); - Active_constraints (Ineq_constrained_qp const *op); - /** construct: no constraints active, n vars. Put the equalities - into the constraints. */ + Active_constraints (Ineq_constrained_qp const *op); + /** construct: no constraints active, n vars. Put the equalities + into the constraints. */ - /// check invariants - void OK(); + /// check invariants + void OK(); }; @@ -76,16 +76,16 @@ public: loop through the inactive constraints. */ class Inactive_iter { - int j; - Active_constraints const* ac; + int j; + Active_constraints const* ac; public: - Inactive_iter (Active_constraints const &c) { ac=&c; j=0; } - int idx() const { return j; } - void operator ++(int) { j++; } - int constraint_id() const { return ac->inactive[j]; } - Vector vec() const { return ac->vec (constraint_id ()); } - Real rhs() const { return ac->rhs (constraint_id ()); } - bool ok() const { return j < ac->inactive.size (); } + Inactive_iter (Active_constraints const &c) { ac=&c; j=0; } + int idx() const { return j; } + void operator ++(int) { j++; } + int constraint_id() const { return ac->inactive[j]; } + Vector vec() const { return ac->vec (constraint_id ()); } + Real rhs() const { return ac->rhs (constraint_id ()); } + bool ok() const { return j < ac->inactive.size (); } }; #endif // QLPSOLVE_HH diff --git a/lily/main.cc b/lily/main.cc index 4bed727ec5..17d1997dc5 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -38,7 +38,7 @@ Long_option_init theopts[] = { {0, "debug", 'd'}, {1, "init", 'i'}, {1, "include", 'I'}, - {0, "no-midi", 'M'}, + {0, "no-paper", 'M'}, {0, "no-postscript", 'P'}, {0, "ignore-version", 'V'}, {0,0,0} diff --git a/lily/midi-def.cc b/lily/midi-def.cc index 480e0a7969..e7da659d19 100644 --- a/lily/midi-def.cc +++ b/lily/midi-def.cc @@ -62,7 +62,7 @@ Midi_def::print() const #ifndef NPRINT Music_output_def::print (); DOUT << "Midi {"; - DOUT << "4/min: " << Real (60) / (whole_in_seconds_mom_ * 4); + DOUT << "4/min: " << Moment (60) / (whole_in_seconds_mom_ * Moment (4)); DOUT << "}\n"; #endif } diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 18736a92db..a23919f509 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -265,7 +265,11 @@ Midi_instrument::Midi_instrument (int channel_i, String instrument_str) instrument_str_.to_lower(); channel_i_ = channel_i; } - + +Midi_item::~Midi_item () +{ +} + String Midi_instrument::str() const { diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 052f0c48d9..c3568f1b4d 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -116,7 +116,7 @@ Paper_def::interline_f() const Real Paper_def::rule_thickness() const { - return get_var ("rule_thickness"); + return get_var ("rulethickness"); } Real @@ -164,9 +164,9 @@ String Paper_def::TeX_output_settings_str () const { String s("\n "); - s += lookup_p_->texsetting + "%(Tex id)\n"; for (Assoc_iter i (*real_vars_p_); i.ok(); i++) s += String ("\\def\\mudelapaper") + i.key () + "{" + i.val () + "}\n"; + s += lookup_p_->texsetting + "%(Tex id)\n"; return s; } diff --git a/lily/parser.y b/lily/parser.y index b4f85ba14c..051fb72c50 100644 --- a/lily/parser.y +++ b/lily/parser.y @@ -429,6 +429,8 @@ score_body: { $$->header_p_ = $2; } | score_body Music { + if ($$->music_p_) + $2->warning ("More than one music block"); $$->music_p_ = $2; } | score_body output_def { @@ -542,6 +544,7 @@ Voice: Voice_body: /**/ { $$ = new Voice; + $$->set_spot (THIS->here_input ()); } | Voice_body Music { $$->add ($2); @@ -587,6 +590,7 @@ translator_change: t-> change_to_id_str_ = *$4; $$ = t; + $$->set_spot (THIS->here_input ()); delete $2; delete $4; } @@ -599,6 +603,7 @@ property_def: t-> var_str_ = *$4; t-> value_ = *$6; $$ = t; + $$->set_spot (THIS->here_input ()); delete $2; delete $4; delete $6; @@ -623,6 +628,7 @@ Chord_body: /**/ { $$ = new Chord; $$-> multi_level_i_ = 1; + $$->set_spot (THIS->here_input ()); } | Chord_body Music { $$->add ($2); @@ -633,6 +639,7 @@ transposed_music: TRANSPOSE steno_melodic_req Music { $$ = $3; $$ -> transpose ($2); + delete $2; } ; @@ -963,7 +970,8 @@ pre_request: voice_command: PLET INT '/' INT { - THIS->default_duration_.set_plet ($2,$4); + THIS->plet_.type_i_ = $4; + THIS->plet_.iso_i_ = $2; } | DURATION STRING { THIS->set_duration_mode (*$2); diff --git a/lily/score.cc b/lily/score.cc index a32773e433..97203dec9c 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -22,6 +22,7 @@ Score::Score() + : Input() { header_p_ = 0; music_p_ = 0; diff --git a/lily/scores.cc b/lily/scores.cc index a5081a25b3..5badc05fb0 100644 --- a/lily/scores.cc +++ b/lily/scores.cc @@ -25,7 +25,8 @@ do_scores() { for (int i=0; i < global_score_array.size(); i++) { - Score *&is_p = global_score_array[i]; +// Score *&is_p = global_score_array[i]; + Score* is_p = global_score_array[i]; if (!is_p->header_p_) is_p->header_p_ = new Header; diff --git a/lily/slur.cc b/lily/slur.cc index c7be481d4c..cc2471bec7 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -86,7 +86,23 @@ Slur::do_post_processing() encompass_arr_.sort (Note_column_compare); if (!dir_) set_default_dir(); - Real inter_f = paper()->internote_f (); + Real interline_f = paper ()->interline_f (); + Real inter_f = interline_f / 2; + + /* + [OSU]: slur and tie placement + + slurs: + * x = centre of head (upside-down: inner raakpunt stem) - d * gap + + * y = length < 5ss : horizontal raakpunt + d * 0.25 ss + y = length >= 5ss : y next interline - d * 0.25 ss + --> height <= 5 length ?? we use <= 3 length, now... + + * suggested gap = ss / 5; + */ + // jcn: 1/5 seems so small? + Real gap_f = interline_f / 2; // 5; Drul_array extrema; extrema[LEFT] = encompass_arr_[0]; @@ -103,10 +119,16 @@ Slur::do_post_processing() *(spanned_drul_[d]->width ().length () -0.5*nw_f); } else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_) - dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height()[dir_]); + { + dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height()[dir_]); + /* normal slur from notehead centre to notehead centre, minus gap */ + dx_f_drul_[d] += -d * gap_f; + } else - dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval()[dir_])* inter_f; - dy_f_drul_[d] += dir_ * inter_f; + { + dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval()[dir_])* inter_f; + } + dy_f_drul_[d] += dir_ * interline_f; } while ((d *= -1) != LEFT); } diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc index 4cd214b79b..ea4576e59b 100644 --- a/lily/staff-sym.cc +++ b/lily/staff-sym.cc @@ -42,7 +42,7 @@ Molecule* Staff_symbol::brew_molecule_p() const { Paper_def * p = paper(); - Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rule_thickness"), + Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rulethickness"), width ().length ()); Real height = (no_lines_i_-1) * inter_note_f(); Molecule * m = new Molecule; diff --git a/lily/tex-beam.cc b/lily/tex-beam.cc index d756461a6f..f13ab2e94d 100644 --- a/lily/tex-beam.cc +++ b/lily/tex-beam.cc @@ -19,6 +19,8 @@ #include "debug.hh" #include "lookup.hh" #include "misc.hh" +#include "paper-def.hh" +#include "string-convert.hh" #include "main.hh" Atom @@ -42,7 +44,7 @@ Lookup::beam_element (int sidx, int widx, Real slope) const Atom Lookup::rule_symbol (Real height, Real width) const { - Atom bs=(*symtables_p_)("beamslopes")->lookup ("horizontal"); + Atom bs=(*symtables_p_)("param")->lookup ("rule"); Array args; args.push (print_dimen (height)); args.push (print_dimen (width)); @@ -55,24 +57,51 @@ Lookup::rule_symbol (Real height, Real width) const Atom Lookup::beam(Real &slope, Real width, Real y_thick) const { - if (postscript_global_b) - { - return ps_beam (slope, width, y_thick); - } - else - return tex_beam(slope, width); + Atom a( postscript_global_b + ? ps_beam (slope, width, y_thick) + : tex_beam (slope, width)); + + Real slope_y =slope * width; + Real min_y = (0 ? slope_y) + y_thick/2; + + a.dim_[X_AXIS] = Interval(0, width); + a.dim_[Y_AXIS] = Interval(min_y, max_y); + return a; } Atom -Lookup::ps_beam (Real slope, Real width, Real y_thickness)const +Lookup::ps_beam (Real slope, Real width, Real y_thickness)const { - Atom ret; - String ps(String (width) + " "+ String(slope) - + " " + String(y_thickness) + " draw_beam"); - ret.tex_ = String("\\embeddedps{" + ps + "}"); - ret.dim_[X_AXIS] = Interval(0, width); - ret.dim_[Y_AXIS] = Interval(0, slope * width + y_thickness); - return ret; + String ps = "\\embeddedps{\n"; + ps += String (width) + " "+ String (slope) + " " + String (y_thickness) + + " draw_beam}"; + + /* + beam parts are rarely wider than 100pt: + precision of 4 yields maximum (half beam spanning half a page) + error of: 1%% * 3*72pt === 0.2pt = 0.07mm + */ + String width_str = String_convert::precision_str (width, 4); + String slope_str = String_convert::precision_str (slope, 4); + String thick_str = String_convert::precision_str (y_thickness, 3); + String name = "feta-beum-" + width_str + "-" + slope_str + "-" + thick_str; + + int i; + while ((i = name.index_i ('.')) != -1) + name[i]= 'x'; + + + String mf = "\\embeddedmf{" + name + "}{\n"; + mf += "input feta-beum;\n"; + mf += "drawbeam(" + width_str + "," + slope_str + "," + thick_str + ");\n"; + mf += "end.\n"; + mf += "}\n"; + + Atom s; + s.tex_ = ps + mf; + + return s; } Atom @@ -129,8 +158,6 @@ Lookup::tex_beam (Real &slope, Real width) const Atom ret; ret.tex_ = m.TeX_string(); - ret.dim_.y() = Interval (0,width*slope); - ret.dim_.x() = Interval (0,width); return ret; } diff --git a/lily/tex-slur.cc b/lily/tex-slur.cc index eb140c4768..b0c67cf95b 100644 --- a/lily/tex-slur.cc +++ b/lily/tex-slur.cc @@ -127,7 +127,6 @@ Lookup::half_slur (int dy, Real &dx, Direction dir, int xpart) const assert (idx < 256); f+=String ("{") + String (idx) + "}"; - s.tex_ = f; return s; @@ -143,12 +142,28 @@ Lookup::ps_slur (Real dy , Real dx, Real dir) const + String_convert::double_str (dir) + " draw_slur}"; - String mf = "\\embeddedmf{\n"; + /* + slurs are rarely wider than 100pt: + precision of 3 yields maximum (slur spanning page) + error of: 1%% * 6*72pt === 0.4pt = 0.14 mm + */ + String dx_str = String_convert::precision_str (dx, 4); + String dy_str = String_convert::precision_str (dy, 3); + String dir_str = String_convert::int_str ((int)dir); + String name = "feta-sleur-" + dx_str + "-" + dy_str + "-" + dir_str; + int i = name.index_i ('.'); + while (i != -1) + { + *(name.ch_l () + i) = 'x'; + i = name.index_i ('.'); + } + + String mf = "\\embeddedmf{" + name + "}{\n"; + mf += "staffsize\\#:=" + + String_convert::int_str ((int)paper_l_->get_var ("barsize"), "%d") + + "pt\\#;\n"; mf += "input feta-sleur;\n"; - mf += "draw_slur((0,0),"; - mf += "(" + String_convert::double_str (dx) + "," - + String_convert::double_str (dy) + "),"; - mf += String_convert::double_str (dir) + ");\n"; + mf += "drawslur(" + dx_str + "," + dy_str + "," + dir_str + ");\n"; mf += "end.\n"; mf += "}\n"; diff --git a/lily/tie.cc b/lily/tie.cc index a181bedde3..fb929047e6 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -60,15 +60,29 @@ Tie::do_add_processing() void Tie::do_post_processing() { - Real nw_f = paper()->note_width (); - Real space_f = paper()->interline_f (); + Real nw_f = paper ()->note_width (); + Real interline_f = paper ()->interline_f (); assert (head_l_drul_[LEFT] || head_l_drul_[RIGHT]); + /* + [OSU]: slur and tie placement + + ties: + * x = inner raakpunt - d * gap + + * y = length < 5ss : horizontal raakpunt + y = length >= 5ss : y next interline - d * 0.25 ss + --> height <= 5 length ?? we use <= 3 length, now... + + * suggested gap = ss / 5; + */ + // jcn: 1/5 seems so small? + Real gap_f = interline_f / 2; // 5; + Direction d = LEFT; do { - dy_f_drul_[d] = - .5 *space_f * (head_l_drul_[d] + dy_f_drul_[d] = .5 * interline_f * (head_l_drul_[d] ? head_l_drul_[d]->position_i_ : head_l_drul_[(Direction)-d]->position_i_); } @@ -78,23 +92,25 @@ Tie::do_post_processing() { if (head_l_drul_[d] && head_l_drul_[d]->extremal_i_) { - dy_f_drul_[d] += dir_ * space_f; - dx_f_drul_[d] += d * 0.25 * nw_f; + /* normal tie between noteheads, with gap of space */ + dx_f_drul_[d] += -d * (0.5 * nw_f + gap_f); + /* attach to outer 3/4 end of head */ + dy_f_drul_[d] += dir_ * 0.25 * interline_f; } else if (head_l_drul_[d]) - dx_f_drul_[d] += d*0.5 * nw_f; + { + dx_f_drul_[d] += d*0.5 * nw_f; + } else { dy_f_drul_[d] = dy_f_drul_[(Direction) -d]; - dx_f_drul_[d] = -d *(spanned_drul_[d]->width ().length () - -0.5* nw_f); + dx_f_drul_[d] = -d * (spanned_drul_[d]->width ().length () + -0.5 * nw_f); } } while ((d *= -1) != LEFT); } - - void Tie::do_substitute_dependency (Score_elem*o, Score_elem*n) { diff --git a/make/Variables.make b/make/Variables.make index 83a4a29e03..0d2d6795b5 100644 --- a/make/Variables.make +++ b/make/Variables.make @@ -146,9 +146,9 @@ CFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS) # huh, but still, no warnings even provoced with linux's gcc 2.7.2.1? # -pipe makes it go faster, but is not supported on all platforms. +# EXTRA_CXXFLAGS= -fno-rtti -fno-exceptions -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion - CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS) INCLUDES = -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout) CXX_OUTPUT_OPTION = $< -o $@ diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index 999574b297..99db45d956 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.39 -Inschrijf datum: 05JAN98 +Versie: 0.1.41 +Inschrijf datum: 19JAN98 Beschrijving: LilyPond is de muziek typesetter van het GNU Project. Het programma genereert muziek in zichtbare of hoorbare vorm uit uit een muzikale definitie file: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 395k lilypond-0.1.39.tar.gz + 395k lilypond-0.1.41.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.39.tar.gz + 395k lilypond-0.1.41.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 1461f9666e..38a1ff5d74 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.39 -Entered-date: 05JAN98 +Version: 0.1.41 +Entered-date: 19JAN98 Description: LilyPond is the GNU Project music typesetter. The program generates visual or auditive output from a music definition file: it can typeset formatted sheet music @@ -15,8 +15,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 470k lilypond-0.1.39.tar.gz + 470k lilypond-0.1.41.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 470k lilypond-0.1.39.tar.gz + 470k lilypond-0.1.41.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index b4f4b9e0b7..1ba3275d60 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.39 +Version: 0.1.41 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.39.tar.gz +Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.41.tar.gz Summary: A program for typesetting music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -31,7 +31,7 @@ make -C Documentation gifs make prefix="$RPM_BUILD_ROOT/usr" install %files %doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/internals.text Documentation/out/language.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/literature.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/mutopia.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README -%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font.ly input/font20.ly input/gallina.ly input/gallina.tex input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/spacing.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc +%doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gallina.ly input/gallina.tex input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/sleur.ly input/slurs.ly input/spacing.ly input/standchen-16.ly input/standchen-16.tex input/standchen-20.ly input/standchen-20.tex input/standchen.ly input/standje.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly input/wtk1-fugue1.ly input/wtk1-fugue2.ly input/wtk1-prelude1.ly Documentation/mudela-course.doc Documentation/mudela-man.doc %doc Documentation/out/lelie_logo.gif /usr/bin/convert-mudela /usr/bin/mudela-book @@ -48,4 +48,5 @@ make prefix="$RPM_BUILD_ROOT/usr" install %post texhash # takes some time... +rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'` diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in index 9f9ac9b447..799b8758b8 100644 --- a/make/lilypond.spec.in +++ b/make/lilypond.spec.in @@ -48,4 +48,5 @@ make prefix="$RPM_BUILD_ROOT/usr" install %post texhash # takes some time... +rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'` diff --git a/mf/Makefile b/mf/Makefile index 68ebc72621..00b46f2f99 100644 --- a/mf/Makefile +++ b/mf/Makefile @@ -12,7 +12,8 @@ include ./$(depth)/make/Include.make # TEXFILES = $(wildcard *.tex) MFFILES = $(wildcard *.mf) -EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) TODO README +MFDEPS = mf.dep +EXTRA_DISTFILES = $(MFFILES) $(TEXFILES) $(MFDEPS) TODO README # FONT_FILES = $(wildcard *[0-9].mf) @@ -27,7 +28,7 @@ TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex)) all: $(LYTABLES) $(TEXTABLES) localclean: - rm -f $(LYTABLES) $(TEXTABLES) $(outdir)/mfdeps + rm -f $(LYTABLES) $(TEXTABLES) $(MFDEPS) $(outdir)/%.dvi: %.mf mf $< @@ -41,7 +42,7 @@ $(outdir)/%.log: %.mf rm $(basename $< ).*gf $(lyout)/%.ly $(texout)/%.tex: $(outdir)/%.log - $(depth)/bin/$(outdir)/mf-to-table --ly $(lyout)/$( $@ - $(depth)/bin/$(outdir)/mf-deps $^ >> $@ + $(PYTHON) $(depth)/bin/mf-deps.py $^ >> $@ # dependencies: # -include $(outdir)/mfdeps +include $(MFDEPS) # - - - diff --git a/mf/README b/mf/README index 9724af42b2..bbbfa3a021 100644 --- a/mf/README +++ b/mf/README @@ -34,7 +34,8 @@ Staffsize Numbers Name This table is partially taken from [Ross]. Most music is set in No.3, but the papersizes usually are bigger than standard printer paper -(such as A4). +(such as A4). If you plot these, you'll notice that the sizes (With +exception of 26) almost (but not quite) form a arithmetic progression. [Ross] states that the dies (the stamps to make the symbols) come in 12 different sizes. diff --git a/mf/TODO b/mf/TODO index b1e9c59a82..4607752e69 100644 --- a/mf/TODO +++ b/mf/TODO @@ -13,3 +13,4 @@ - 128th flags - include important spacing dims in fetalog + - more sizes, see readme diff --git a/mf/dimen.tex b/mf/dimen.tex index b900b40e55..8ab57c66f6 100644 --- a/mf/dimen.tex +++ b/mf/dimen.tex @@ -4,7 +4,7 @@ \font\black=black %\font\taupin=musix16 -%\font\fet=font-en-tja16 + %\font\vet=vette-beams16 %\font\slurs=xslhd16 %\font\specfont=musixspx diff --git a/mf/feta-autometric.mf b/mf/feta-autometric.mf index 3b1b798684..8d53d52150 100644 --- a/mf/feta-autometric.mf +++ b/mf/feta-autometric.mf @@ -43,8 +43,6 @@ enddef; def hround_pixels(expr sharped) = hround(sharped * hppp) enddef; def vround_pixels(expr sharped) = vround(sharped * vppp) enddef; - - def tand(expr alpha) = (sind alpha/cosd alpha) enddef; diff --git a/mf/feta-beams16.mf b/mf/feta-beams16.mf index 62eff27315..27968efe98 100644 --- a/mf/feta-beams16.mf +++ b/mf/feta-beams16.mf @@ -1,8 +1,6 @@ % vette-beams16.mf % part of LilyPond's pretty-but-neat music font -% font_identifier:="font-en-tja16"; -% font_size 16pt#; font_identifier:="vette-beams16"; font_size 16; mode_setup; diff --git a/mf/feta-beams26.mf b/mf/feta-beams26.mf new file mode 100644 index 0000000000..4cb1defc32 --- /dev/null +++ b/mf/feta-beams26.mf @@ -0,0 +1,14 @@ +% (this was vette-beams16.mf) +% part of LilyPond's pretty-but-neat music font + +% +% + +font_identifier:="feta-beams26"; +font_size 26; +mode_setup; + +staffsize#:=26pt#; + +input feta-watzieik; +end. diff --git a/mf/feta-black16.mf b/mf/feta-black16.mf new file mode 100644 index 0000000000..beb6b070d4 --- /dev/null +++ b/mf/feta-black16.mf @@ -0,0 +1,22 @@ +% feta-test16 +% part of LilyPond's pretty-but-neat music font + + +input feta-autometric; +fet_beginfont("feta-test", 16); +staffsize#:=16pt#; +test:=1; + +% smoked cheese +test := -1; + + +% dem piksels. +%test := 1; + +input feta-generic; + +fet_endfont("feta"); + +end. + diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index 69f7eb9af2..402de0420c 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -56,7 +56,10 @@ def draw_brevis(expr brevwid) = -- z4l -- z4r -- z3r{left} .. z2r{up} -- cycle; addto currentpicture also currentpicture yscaled -1; - addto currentpicture also currentpicture reflectedabout(z4r, z4l); + show z4r; show z4l; + addto currentpicture also currentpicture + shifted (-x4r,0) xscaled -1 shifted (x4l,0); + enddef; save uitsteek; diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 98390a6713..9891168c1e 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -28,7 +28,7 @@ else: % input feta-bolletjes; % input feta-banier; % input feta-eindelijk; -% input feta-klef; + input feta-klef; % input feta-toevallig; - input feta-schrift; +% input feta-schrift; fi diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf index d65822695e..2cf10ca788 100644 --- a/mf/feta-klef.mf +++ b/mf/feta-klef.mf @@ -176,7 +176,6 @@ fet_endchar; % % Inspired by Baerenreiter % -% FIXME top should be thinner at z8, % FIXME bulb should curve (see bass clef) % FIXME start (inside) should be little thinner % FIXME parametrise. @@ -260,7 +259,7 @@ def draw_gclef (expr exact_center, reduction)= center - z10= whatever * downstroke_dir; center - z11 = whatever * downstroke_dir; - + center - z14 = .8 (center - z11); penpos1(thinnib, inner_start_angle); penpos2(thickness, 90); penpos3(thinnib, -90 + inner_thick_end); @@ -272,10 +271,10 @@ def draw_gclef (expr exact_center, reduction)= penpos9(1.4 thickness, -80); % ugh penpos10(whatever, downstroke_angle + 10); penpos11(thinnib, downstroke_angle + 90); + penpos14(thinnib, downstroke_angle + 90); penpos12(thinnib, -90); penpos13(3 thinnib, 180); - filldraw z2l{right} .. z3l.. z4l{left} .. z5l{up} .. z7l{up} %.. z8l .. tension 1.2 @@ -297,7 +296,7 @@ def draw_gclef (expr exact_center, reduction)= draw_bulb(-1, z13l, lft z13r, 6/14 reduced_il, 1.0); pickup pencircle scaled (thinpen); - draw z10 --- z11 .. z12{left}; + draw z10 --- z14 .. z11 .. tension 0.85 .. z12{left}; penlabels(range 1 thru 15); enddef; diff --git a/mf/feta-nummer12.mf b/mf/feta-nummer12.mf new file mode 100644 index 0000000000..fe599fdbdc --- /dev/null +++ b/mf/feta-nummer12.mf @@ -0,0 +1,9 @@ +% feta-nummer10.mf +% part of LilyPond's pretty-but-neat music font + +size:=12; + +input feta-nummer-generic; + +end. + diff --git a/mf/feta-nummer3.mf b/mf/feta-nummer3.mf new file mode 100644 index 0000000000..d9c79640cb --- /dev/null +++ b/mf/feta-nummer3.mf @@ -0,0 +1,10 @@ +% feta-nummer4.mf +% part of LilyPond's pretty-but-neat music font + +% size:=4; +size:=16*3/15; + +input feta-nummer-generic.mf; + +end. + diff --git a/mf/feta-nummer6.mf b/mf/feta-nummer6.mf new file mode 100644 index 0000000000..3daff78c4e --- /dev/null +++ b/mf/feta-nummer6.mf @@ -0,0 +1,10 @@ +% feta-nummer5.mf +% part of LilyPond's pretty-but-neat music font + +% size:=5; +size:=20*6/15; + +input feta-nummer-generic.mf; + +end. + diff --git a/mf/feta-nummer7.mf b/mf/feta-nummer7.mf new file mode 100644 index 0000000000..a098d0f62a --- /dev/null +++ b/mf/feta-nummer7.mf @@ -0,0 +1,10 @@ +% feta-nummer5.mf +% part of LilyPond's pretty-but-neat music font + +% size:=5; +size:=26*4/15; + +input feta-nummer-generic.mf; + +end. + diff --git a/mf/feta-sleur.mf b/mf/feta-sleur.mf index 8c411fb382..8ee650e9ad 100644 --- a/mf/feta-sleur.mf +++ b/mf/feta-sleur.mf @@ -1,61 +1,85 @@ -% feta-sleur.mf +% +% feta-sleur.mf -- implement runtime MF slurs +% +% source file of LilyPond's pretty-but-neat music font +% +% (c) 1997 Jan Nieuwenhuizen +% & Han-Wen Nienhuys +% + mode_setup; -thin:=.2pt; -thick:=5thin; -ybow:=.2; -abow:=1.5; -def draw_slur(expr a,b,d) = - beginchar(0,0,0,0) "Embedded mf"; - % huh, factor 8? - z1=8a; - z2=8b; - save alpha; alpha=angle(z2-z1); - save len; len=length(z2-z1); - z3=(0,0); - z4=(len/2,len*ybow*d); - z5=(len,0); - save beta; beta=abow*angle(z4-z3); - penpos3(thin,90+beta); - penpos4(thick,90); - penpos5(thin,90-beta); - pickup pencircle; - path boogje; - boogje = z3l{dir(beta)}..z4l{right}..z5l{dir(-beta)} - ..z5r{dir(180-beta)}..z4r{left} - ..z3r{dir(180+beta)}..cycle; - penlabels(1,2,3,4,5); - boogje := boogje rotated alpha; - % silly mo*tex convenction -% boogje := boogje shifted ((x1-x2)/2,0); - fill boogje; - endchar; - enddef; +% staffsize#=16pt#; + +pi:=3.14159; -def sign(expr a) = - ((abs(a))/(a)) +def atan(expr x) = + (angle(1,x)*pi/180) enddef; -def xdraw_slur(expr a,b,d) = +%breapth, width, depth, height + +% urgh +% having mf would be nice if only from a "use the source" point of view. +% +% getslurcontrol: +% slurhtlimit 90 div /slur_alpha exch def +% slurratio 60 div slur_alpha div /slur_beta exch def +% slur_beta mul 1 atan slur_alpha mul +% +% draw_slur: +% slur_b getslurcontrol +% slur_dir mul /slur_ht exch def +% slur_b getslurcontrol /slur_indent exch def +% + +interline#:=staffsize#/4; +stafflinethickness#:=0.1interline#; +sleur_pen#:=stafflinethickness#; +slurheightlimit#:=staffsize#/2; +% staffrulethickness 1.5 mul /slur_thick exch def +slurthick#:=3/2stafflinethickness#; + +define_pixels(staffsize,interline,stafflinethickness); +define_pixels(sleur_pen,slurheightlimit,slurthick); + +sluralpha:=slurheightlimit#*pi/2; +% slurratio:=1/3; +slurratio:=0.3333; +slurbeta:=3/4*pi*slurratio/sluralpha; + +def drawslur(expr dxs,dys,d) = beginchar(0,0,0,0) "Embedded mf"; - % huh, factor 8? - z1=8a; - z3=8b; - save alpha; alpha=angle(z3-z1); - z2=(1/2[x1,x3],1/2[y1,y3])+d*ybow*(x3-x1)*dir(alpha+90); - save beta; beta=d*sign(y3-y1)*abow*angle(z2-z1)-alpha; -% message "d: "&decimal d; -% message "dy: "& decimal sign(y3-y1); -% message "alpha: "&decimal alpha; -% message "beta: "&decimal beta; - penpos1(thin,alpha+beta+90); - penpos2(thick,alpha+90); - penpos3(thin,alpha-beta+90); - pickup pencircle; - fill z1l{dir(alpha+beta)}..z2l{dir(alpha)} - ..z3l{dir(alpha-beta)}..z3r{dir(180+alpha-beta)} - ..z2r{dir(180+alpha)}..z1r{dir(180+alpha+beta)} - ..cycle; - penlabels(1,2,3); + dx#:=dxs*1pt#; + dy#:=dys*1pt#; + define_pixels(dx,dy); + b#:=length(dx#,dy#); +% message "sluralpha: "&decimal (sluralpha); +% message "slurbeta: "&decimal (slurbeta); +% message "s*b: "&decimal (slurbeta*b#); +% indent#:=sluralpha*atan(slurbeta*b#); + % ugh: huh? 2/5 + indent#:=2/5*sluralpha*atan(slurbeta*b#); + define_pixels(b,indent); + height:=indent*d; + z1=(0,0); + z2=(b,0); + z3=(indent,height); + z4=(b-indent,height); + z5=z4-(0,d*slurthick); + z6=z3-(0,d*slurthick); + path boogje; + boogje=z1..controls z3 and z4..z2..controls z5 and z6..cycle; + boogje:=boogje rotated angle(dxs,dys); + pickup pencircle scaled sleur_pen; + filldraw boogje; + show z1; + show z2; + show z3; + show z4; + show z5; + show z6; endchar; enddef; + +% draw_slur(10,10,1); diff --git a/mf/feta-test16.mf b/mf/feta-test16.mf index c7c8db872b..3d2ed3cea2 100644 --- a/mf/feta-test16.mf +++ b/mf/feta-test16.mf @@ -1,9 +1,6 @@ % feta-test16 % part of LilyPond's pretty-but-neat music font -% font_identifier:="font-en-tja16"; -% font_size 16pt#; - input feta-autometric; fet_beginfont("feta-test", 16); staffsize#:=16pt#; @@ -18,7 +15,7 @@ test:=1; input feta-generic; -fet_endfont("font-en-tja"); +fet_endfont("feta"); end. diff --git a/mf/feta-test20.mf b/mf/feta-test20.mf index b70e54a4f6..72f9a87758 100644 --- a/mf/feta-test20.mf +++ b/mf/feta-test20.mf @@ -1,8 +1,6 @@ % feta-test20 % part of LilyPond's pretty-but-neat music font -% font_identifier:="font-en-tja20"; -% font_size 20pt#; input feta-autometric; fet_beginfont("feta-test", 20); @@ -18,7 +16,7 @@ test:=1; input feta-generic; -fet_endfont("font-en-tja"); +fet_endfont("feta"); end. diff --git a/mf/feta11.mf b/mf/feta11.mf new file mode 100644 index 0000000000..95785f3595 --- /dev/null +++ b/mf/feta11.mf @@ -0,0 +1,16 @@ +% feta16.mf +% part of LilyPond's pretty-but-neat music font + + +input feta-autometric; +fet_beginfont("feta", 11); +staffsize#:=11pt#; +test:=0; + + +input feta-generic; + +fet_endfont("feta"); + +end. + diff --git a/mf/feta13.mf b/mf/feta13.mf new file mode 100644 index 0000000000..161d9d9fb6 --- /dev/null +++ b/mf/feta13.mf @@ -0,0 +1,16 @@ +% feta16.mf +% part of LilyPond's pretty-but-neat music font + + +input feta-autometric; +fet_beginfont("feta", 13); +staffsize#:=13pt#; +test:=0; + + +input feta-generic; + +fet_endfont("feta"); + +end. + diff --git a/mf/feta16.mf b/mf/feta16.mf index bcc8c41c7f..8d7d9538ab 100644 --- a/mf/feta16.mf +++ b/mf/feta16.mf @@ -1,9 +1,6 @@ -% font-en-tja16.mf +% feta16.mf % part of LilyPond's pretty-but-neat music font -% font_identifier:="font-en-tja16"; -% font_size 16pt#; - input feta-autometric; fet_beginfont("feta", 16); staffsize#:=16pt#; diff --git a/mf/feta19.mf b/mf/feta19.mf new file mode 100644 index 0000000000..ef9a48cfd2 --- /dev/null +++ b/mf/feta19.mf @@ -0,0 +1,18 @@ +% feta16.mf +% part of LilyPond's pretty-but-neat music font + +% font_identifier:="feta16"; +% font_size 16pt#; + +input feta-autometric; +fet_beginfont("feta", 19); +staffsize#:=19pt#; +test:=0; + + +input feta-generic; + +fet_endfont("feta"); + +end. + diff --git a/mf/feta20.mf b/mf/feta20.mf index f4cbfaa95f..e2dfa7dd06 100644 --- a/mf/feta20.mf +++ b/mf/feta20.mf @@ -1,4 +1,4 @@ -% font-en-tja20.mf +% feta20.mf % part of LilyPond's pretty-but-neat music font staffsize#:=20pt#; diff --git a/mf/feta23.mf b/mf/feta23.mf new file mode 100644 index 0000000000..b4dcaea7ad --- /dev/null +++ b/mf/feta23.mf @@ -0,0 +1,18 @@ +% feta16.mf +% part of LilyPond's pretty-but-neat music font + +% font_identifier:="feta16"; +% font_size 16pt#; + +input feta-autometric; +fet_beginfont("feta", 22.5); +staffsize#:=22.5pt#; +test:=0; + + +input feta-generic; + +fet_endfont("feta"); + +end. + diff --git a/mf/feta26.mf b/mf/feta26.mf new file mode 100644 index 0000000000..add32d85f9 --- /dev/null +++ b/mf/feta26.mf @@ -0,0 +1,16 @@ +% feta16.mf +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; +fet_beginfont("feta", 26); +staffsize#:=26pt#; +test:=0; + + +input feta-generic; + +fet_endfont("feta"); + +end. + + diff --git a/mf/mf.dep b/mf/mf.dep new file mode 100644 index 0000000000..590fb527e3 --- /dev/null +++ b/mf/mf.dep @@ -0,0 +1,99 @@ + +# Automatically generated by mf-deps.py 0.2 + +out/feta-beams16.log: feta-beams16.mf feta-watzieik.mf feta-params.mf +out/feta-beams16.dvi: feta-beams16.mf feta-watzieik.mf feta-params.mf +out/feta-beams16.2602gf: feta-beams16.mf feta-watzieik.mf feta-params.mf +out/feta-beams16.tfm: feta-beams16.mf feta-watzieik.mf feta-params.mf +out/feta-beams20.log: feta-beams20.mf feta-watzieik.mf feta-params.mf +out/feta-beams20.dvi: feta-beams20.mf feta-watzieik.mf feta-params.mf +out/feta-beams20.2602gf: feta-beams20.mf feta-watzieik.mf feta-params.mf +out/feta-beams20.tfm: feta-beams20.mf feta-watzieik.mf feta-params.mf +out/feta-beams26.log: feta-beams26.mf feta-watzieik.mf feta-params.mf +out/feta-beams26.dvi: feta-beams26.mf feta-watzieik.mf feta-params.mf +out/feta-beams26.2602gf: feta-beams26.mf feta-watzieik.mf feta-params.mf +out/feta-beams26.tfm: feta-beams26.mf feta-watzieik.mf feta-params.mf +out/feta-black16.log: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-black16.dvi: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-black16.2602gf: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-black16.tfm: feta-black16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-braces16.log: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces16.dvi: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces16.2602gf: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces16.tfm: feta-braces16.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces20.log: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces20.dvi: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces20.2602gf: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-braces20.tfm: feta-braces20.mf feta-beugel.mf feta-macros.mf feta-params.mf +out/feta-din10.log: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf +out/feta-din10.dvi: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf +out/feta-din10.2602gf: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf +out/feta-din10.tfm: feta-din10.mf feta-autometric.mf feta-ital-f.mf feta-ital-p.mf feta-ital-m.mf feta-ital-r.mf feta-ital-s.mf feta-ital-z.mf +out/feta-nummer10.log: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer10.dvi: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer10.2602gf: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer10.tfm: feta-nummer10.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer12.log: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer12.dvi: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer12.2602gf: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer12.tfm: feta-nummer12.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer3.log: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer3.dvi: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer3.2602gf: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer3.tfm: feta-nummer3.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer4.log: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer4.dvi: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer4.2602gf: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer4.tfm: feta-nummer4.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer5.log: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer5.dvi: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer5.2602gf: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer5.tfm: feta-nummer5.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer6.log: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer6.dvi: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer6.2602gf: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer6.tfm: feta-nummer6.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer7.log: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer7.dvi: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer7.2602gf: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer7.tfm: feta-nummer7.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer8.log: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer8.dvi: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer8.2602gf: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-nummer8.tfm: feta-nummer8.mf feta-nummer-generic.mf feta-autometric.mf feta-macros.mf feta-params.mf feta-nummer.mf +out/feta-test16.log: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test16.dvi: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test16.2602gf: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test16.tfm: feta-test16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test20.log: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test20.dvi: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test20.2602gf: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta-test20.tfm: feta-test20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta11.log: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta11.dvi: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta11.2602gf: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta11.tfm: feta11.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta13.log: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta13.dvi: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta13.2602gf: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta13.tfm: feta13.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta16.log: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta16.dvi: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta16.2602gf: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta16.tfm: feta16.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta19.log: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta19.dvi: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta19.2602gf: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta19.tfm: feta19.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta20.log: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta20.dvi: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta20.2602gf: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta20.tfm: feta20.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta23.log: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta23.dvi: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta23.2602gf: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta23.tfm: feta23.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta26.log: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta26.dvi: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta26.2602gf: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf +out/feta26.tfm: feta26.mf feta-autometric.mf feta-generic.mf feta-macros.mf feta-params.mf feta-eindelijk.mf feta-toevallig.mf feta-puntje.mf feta-bolletjes.mf feta-schrift.mf feta-banier.mf feta-klef.mf diff --git a/mi2mu/include/mudela-item.hh b/mi2mu/include/mudela-item.hh index 9423959b6d..76754ebc80 100644 --- a/mi2mu/include/mudela-item.hh +++ b/mi2mu/include/mudela-item.hh @@ -22,6 +22,7 @@ class Mudela_item { public: Mudela_item (Mudela_column* mudela_column_l); + virtual ~Mudela_item (); virtual Moment at_mom(); virtual Moment duration_mom(); diff --git a/mi2mu/mudela-item.cc b/mi2mu/mudela-item.cc index b4b1d46b29..d70200e3c5 100644 --- a/mi2mu/mudela-item.cc +++ b/mi2mu/mudela-item.cc @@ -17,6 +17,10 @@ Mudela_item::Mudela_item (Mudela_column* mudela_column_l) mudela_column_l_ = mudela_column_l; } +Mudela_item::~Mudela_item () +{ +} + Moment Mudela_item::at_mom () { diff --git a/tex/feta11.tex b/tex/feta11.tex new file mode 100644 index 0000000000..cc41d5b43d --- /dev/null +++ b/tex/feta11.tex @@ -0,0 +1,78 @@ +% Creator: mf-to-table.py version 0.5 +% Automatically generated on +% Do not edit +% input from out/feta11.log +% name +% rests +\fetdef\wholerest{0} +\fetdef\halfrest{1} +\fetdef\outsidewholerest{2} +\fetdef\outsidehalfrest{3} +\fetdef\quartrest{4} +\fetdef\eighthrest{5} +\fetdef\sixteenthrest{6} +\fetdef\thirtysecondrest{7} +\fetdef\sixtyfourthrest{8} +\fetdef\hundredtwentyeighthrest{9} + +% accidentals +\fetdef\sharp{10} +\fetdef\natural{11} +\fetdef\flat{12} +\fetdef\flatflat{13} +\fetdef\sharpsharp{14} + +% dots +\fetdef\dot{15} +\fetdef\repeatcolon{16} + +% balls +\fetdef\brevisball{17} +\fetdef\brevisledger{18} +\fetdef\longaball{19} +\fetdef\longaledger{20} +\fetdef\wholeball{21} +\fetdef\wholeledger{22} +\fetdef\halfball{23} +\fetdef\halfledger{24} +\fetdef\quartball{25} +\fetdef\quartledger{26} + +% scripts +\fetdef\ufermata{27} +\fetdef\dfermata{28} +\fetdef\sforzatoaccent{29} +\fetdef\staccato{30} +\fetdef\ustaccatissimo{31} +\fetdef\dstaccatissimo{32} +\fetdef\tenuto{33} +\fetdef\umarcato{34} +\fetdef\dmarcato{35} +\fetdef\ouvert{36} +\fetdef\plusstop{37} +\fetdef\upbow{38} +\fetdef\downbow{39} +\fetdef\turn{40} +\fetdef\trill{41} +\fetdef\pedalheel{42} +\fetdef\pedaltoe{43} +\fetdef\flageolet{44} + +% flags +\fetdef\eighthflag{45} +\fetdef\sixteenthflag{46} +\fetdef\thirtysecondflag{47} +\fetdef\sixtyfourthflag{48} +\fetdef\deighthflag{49} +\fetdef\dsixteenthflag{50} +\fetdef\dthirtysecondflag{51} +\fetdef\dsixtyfourthflag{52} + +% clefs +\fetdef\altoclef{53} +\fetdef\caltoclef{54} +\fetdef\bassclef{55} +\fetdef\cbassclef{56} +\fetdef\violinclef{57} +\fetdef\cviolinclef{58} + diff --git a/tex/feta13.tex b/tex/feta13.tex new file mode 100644 index 0000000000..72412742d6 --- /dev/null +++ b/tex/feta13.tex @@ -0,0 +1,78 @@ +% Creator: mf-to-table.py version 0.5 +% Automatically generated on +% Do not edit +% input from out/feta13.log +% name +% rests +\fetdef\wholerest{0} +\fetdef\halfrest{1} +\fetdef\outsidewholerest{2} +\fetdef\outsidehalfrest{3} +\fetdef\quartrest{4} +\fetdef\eighthrest{5} +\fetdef\sixteenthrest{6} +\fetdef\thirtysecondrest{7} +\fetdef\sixtyfourthrest{8} +\fetdef\hundredtwentyeighthrest{9} + +% accidentals +\fetdef\sharp{10} +\fetdef\natural{11} +\fetdef\flat{12} +\fetdef\flatflat{13} +\fetdef\sharpsharp{14} + +% dots +\fetdef\dot{15} +\fetdef\repeatcolon{16} + +% balls +\fetdef\brevisball{17} +\fetdef\brevisledger{18} +\fetdef\longaball{19} +\fetdef\longaledger{20} +\fetdef\wholeball{21} +\fetdef\wholeledger{22} +\fetdef\halfball{23} +\fetdef\halfledger{24} +\fetdef\quartball{25} +\fetdef\quartledger{26} + +% scripts +\fetdef\ufermata{27} +\fetdef\dfermata{28} +\fetdef\sforzatoaccent{29} +\fetdef\staccato{30} +\fetdef\ustaccatissimo{31} +\fetdef\dstaccatissimo{32} +\fetdef\tenuto{33} +\fetdef\umarcato{34} +\fetdef\dmarcato{35} +\fetdef\ouvert{36} +\fetdef\plusstop{37} +\fetdef\upbow{38} +\fetdef\downbow{39} +\fetdef\turn{40} +\fetdef\trill{41} +\fetdef\pedalheel{42} +\fetdef\pedaltoe{43} +\fetdef\flageolet{44} + +% flags +\fetdef\eighthflag{45} +\fetdef\sixteenthflag{46} +\fetdef\thirtysecondflag{47} +\fetdef\sixtyfourthflag{48} +\fetdef\deighthflag{49} +\fetdef\dsixteenthflag{50} +\fetdef\dthirtysecondflag{51} +\fetdef\dsixtyfourthflag{52} + +% clefs +\fetdef\altoclef{53} +\fetdef\caltoclef{54} +\fetdef\bassclef{55} +\fetdef\cbassclef{56} +\fetdef\violinclef{57} +\fetdef\cviolinclef{58} + diff --git a/tex/feta16.tex b/tex/feta16.tex index c7d3d10960..db0adac5e9 100644 --- a/tex/feta16.tex +++ b/tex/feta16.tex @@ -1,5 +1,5 @@ -% Creator: mf-to-table.py version 0.4 -% Automatically generated on Mon Jan 5 15:23:51 1998 +% Creator: mf-to-table.py version 0.5 +% Automatically generated on % Do not edit % input from out/feta16.log % name diff --git a/tex/feta19.tex b/tex/feta19.tex new file mode 100644 index 0000000000..992b3bfc10 --- /dev/null +++ b/tex/feta19.tex @@ -0,0 +1,78 @@ +% Creator: mf-to-table.py version 0.5 +% Automatically generated on +% Do not edit +% input from out/feta19.log +% name +% rests +\fetdef\wholerest{0} +\fetdef\halfrest{1} +\fetdef\outsidewholerest{2} +\fetdef\outsidehalfrest{3} +\fetdef\quartrest{4} +\fetdef\eighthrest{5} +\fetdef\sixteenthrest{6} +\fetdef\thirtysecondrest{7} +\fetdef\sixtyfourthrest{8} +\fetdef\hundredtwentyeighthrest{9} + +% accidentals +\fetdef\sharp{10} +\fetdef\natural{11} +\fetdef\flat{12} +\fetdef\flatflat{13} +\fetdef\sharpsharp{14} + +% dots +\fetdef\dot{15} +\fetdef\repeatcolon{16} + +% balls +\fetdef\brevisball{17} +\fetdef\brevisledger{18} +\fetdef\longaball{19} +\fetdef\longaledger{20} +\fetdef\wholeball{21} +\fetdef\wholeledger{22} +\fetdef\halfball{23} +\fetdef\halfledger{24} +\fetdef\quartball{25} +\fetdef\quartledger{26} + +% scripts +\fetdef\ufermata{27} +\fetdef\dfermata{28} +\fetdef\sforzatoaccent{29} +\fetdef\staccato{30} +\fetdef\ustaccatissimo{31} +\fetdef\dstaccatissimo{32} +\fetdef\tenuto{33} +\fetdef\umarcato{34} +\fetdef\dmarcato{35} +\fetdef\ouvert{36} +\fetdef\plusstop{37} +\fetdef\upbow{38} +\fetdef\downbow{39} +\fetdef\turn{40} +\fetdef\trill{41} +\fetdef\pedalheel{42} +\fetdef\pedaltoe{43} +\fetdef\flageolet{44} + +% flags +\fetdef\eighthflag{45} +\fetdef\sixteenthflag{46} +\fetdef\thirtysecondflag{47} +\fetdef\sixtyfourthflag{48} +\fetdef\deighthflag{49} +\fetdef\dsixteenthflag{50} +\fetdef\dthirtysecondflag{51} +\fetdef\dsixtyfourthflag{52} + +% clefs +\fetdef\altoclef{53} +\fetdef\caltoclef{54} +\fetdef\bassclef{55} +\fetdef\cbassclef{56} +\fetdef\violinclef{57} +\fetdef\cviolinclef{58} + diff --git a/tex/feta20.tex b/tex/feta20.tex index f45420f5c0..7b3b459a2a 100644 --- a/tex/feta20.tex +++ b/tex/feta20.tex @@ -1,5 +1,5 @@ -% Creator: mf-to-table.py version 0.4 -% Automatically generated on Mon Jan 5 15:23:56 1998 +% Creator: mf-to-table.py version 0.5 +% Automatically generated on % Do not edit % input from out/feta20.log % name diff --git a/tex/feta23.tex b/tex/feta23.tex new file mode 100644 index 0000000000..031ebf9b61 --- /dev/null +++ b/tex/feta23.tex @@ -0,0 +1,78 @@ +% Creator: mf-to-table.py version 0.5 +% Automatically generated on +% Do not edit +% input from out/feta23.log +% name +% rests +\fetdef\wholerest{0} +\fetdef\halfrest{1} +\fetdef\outsidewholerest{2} +\fetdef\outsidehalfrest{3} +\fetdef\quartrest{4} +\fetdef\eighthrest{5} +\fetdef\sixteenthrest{6} +\fetdef\thirtysecondrest{7} +\fetdef\sixtyfourthrest{8} +\fetdef\hundredtwentyeighthrest{9} + +% accidentals +\fetdef\sharp{10} +\fetdef\natural{11} +\fetdef\flat{12} +\fetdef\flatflat{13} +\fetdef\sharpsharp{14} + +% dots +\fetdef\dot{15} +\fetdef\repeatcolon{16} + +% balls +\fetdef\brevisball{17} +\fetdef\brevisledger{18} +\fetdef\longaball{19} +\fetdef\longaledger{20} +\fetdef\wholeball{21} +\fetdef\wholeledger{22} +\fetdef\halfball{23} +\fetdef\halfledger{24} +\fetdef\quartball{25} +\fetdef\quartledger{26} + +% scripts +\fetdef\ufermata{27} +\fetdef\dfermata{28} +\fetdef\sforzatoaccent{29} +\fetdef\staccato{30} +\fetdef\ustaccatissimo{31} +\fetdef\dstaccatissimo{32} +\fetdef\tenuto{33} +\fetdef\umarcato{34} +\fetdef\dmarcato{35} +\fetdef\ouvert{36} +\fetdef\plusstop{37} +\fetdef\upbow{38} +\fetdef\downbow{39} +\fetdef\turn{40} +\fetdef\trill{41} +\fetdef\pedalheel{42} +\fetdef\pedaltoe{43} +\fetdef\flageolet{44} + +% flags +\fetdef\eighthflag{45} +\fetdef\sixteenthflag{46} +\fetdef\thirtysecondflag{47} +\fetdef\sixtyfourthflag{48} +\fetdef\deighthflag{49} +\fetdef\dsixteenthflag{50} +\fetdef\dthirtysecondflag{51} +\fetdef\dsixtyfourthflag{52} + +% clefs +\fetdef\altoclef{53} +\fetdef\caltoclef{54} +\fetdef\bassclef{55} +\fetdef\cbassclef{56} +\fetdef\violinclef{57} +\fetdef\cviolinclef{58} + diff --git a/tex/feta26.tex b/tex/feta26.tex new file mode 100644 index 0000000000..a8d47ee860 --- /dev/null +++ b/tex/feta26.tex @@ -0,0 +1,78 @@ +% Creator: mf-to-table.py version 0.5 +% Automatically generated on +% Do not edit +% input from out/feta26.log +% name +% rests +\fetdef\wholerest{0} +\fetdef\halfrest{1} +\fetdef\outsidewholerest{2} +\fetdef\outsidehalfrest{3} +\fetdef\quartrest{4} +\fetdef\eighthrest{5} +\fetdef\sixteenthrest{6} +\fetdef\thirtysecondrest{7} +\fetdef\sixtyfourthrest{8} +\fetdef\hundredtwentyeighthrest{9} + +% accidentals +\fetdef\sharp{10} +\fetdef\natural{11} +\fetdef\flat{12} +\fetdef\flatflat{13} +\fetdef\sharpsharp{14} + +% dots +\fetdef\dot{15} +\fetdef\repeatcolon{16} + +% balls +\fetdef\brevisball{17} +\fetdef\brevisledger{18} +\fetdef\longaball{19} +\fetdef\longaledger{20} +\fetdef\wholeball{21} +\fetdef\wholeledger{22} +\fetdef\halfball{23} +\fetdef\halfledger{24} +\fetdef\quartball{25} +\fetdef\quartledger{26} + +% scripts +\fetdef\ufermata{27} +\fetdef\dfermata{28} +\fetdef\sforzatoaccent{29} +\fetdef\staccato{30} +\fetdef\ustaccatissimo{31} +\fetdef\dstaccatissimo{32} +\fetdef\tenuto{33} +\fetdef\umarcato{34} +\fetdef\dmarcato{35} +\fetdef\ouvert{36} +\fetdef\plusstop{37} +\fetdef\upbow{38} +\fetdef\downbow{39} +\fetdef\turn{40} +\fetdef\trill{41} +\fetdef\pedalheel{42} +\fetdef\pedaltoe{43} +\fetdef\flageolet{44} + +% flags +\fetdef\eighthflag{45} +\fetdef\sixteenthflag{46} +\fetdef\thirtysecondflag{47} +\fetdef\sixtyfourthflag{48} +\fetdef\deighthflag{49} +\fetdef\dsixteenthflag{50} +\fetdef\dthirtysecondflag{51} +\fetdef\dsixtyfourthflag{52} + +% clefs +\fetdef\altoclef{53} +\fetdef\caltoclef{54} +\fetdef\bassclef{55} +\fetdef\cbassclef{56} +\fetdef\violinclef{57} +\fetdef\cviolinclef{58} + diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex index ab31cb344f..0552dd37ae 100644 --- a/tex/fetdefs.tex +++ b/tex/fetdefs.tex @@ -1,40 +1,61 @@ % fetdefs.tex -% encapsulating tex backend for auto-generated font-en-tja definitions +% encapsulating tex backend for auto-generated feta definitions \def\fetsixteendefs{ - \font\fontentja=feta16 + \font\feta=feta16 \font\vetfont=feta-beams16 \font\fetanummer=feta-nummer8 \font\dynfont=feta-din10 scaled \magstep1 \font\bracefont=feta-braces16 \font\fingerfont=feta-nummer4 - \interlinedist=4pt } \def\fettwentydefs{ - \interlinedist=5pt - \font\fontentja=feta20 + \font\feta=feta20 \font\vetfont=feta-beams20 \font\fetanummer=feta-nummer10 \font\dynfont=feta-din10 scaled \magstep2 \font\bracefont=feta-braces20 \font\fingerfont=feta-nummer5 } +\def\fettwentysixdefs{ + \font\feta=feta26 + \font\vetfont=feta-beams26 + \font\fetanummer=feta-nummer12 + \font\dynfont=feta-din10 scaled \magstep3 + \font\bracefont=feta-braces16 + \font\fingerfont=feta-nummer7 +} +\def\fetthirteendefs{ + \font\feta=feta13 + \font\vetfont=feta-beams26 + \font\fetanummer=feta-nummer5 + \font\dynfont=feta-din10 scaled \magstep0 + \font\bracefont=feta-braces16 + \font\fingerfont=feta-nummer3 +} +\def\fetelevendefs{ + \font\feta=feta11 + \font\vetfont=feta-beams26 + \font\fetanummer=feta-nummer5 + \font\dynfont=feta-din10 %scaled \magstep-1 + \font\bracefont=feta-braces16 + \font\fingerfont=feta-nummer3 +} + \def\sixteenfonts{\fetsixteendefs\cmrsixteen} \def\twentyfonts{\fettwentydefs\cmrtwenty} - +\def\twentysixfonts{\fettwentysixdefs\cmrtwenty} +\def\elevenfonts{\fetelevendefs\cmreleven} +\def\thirteenfonts{\fetthirteendefs\cmrthirteen} \def\fetdef#1#2{\def#1{% \hbox{\fetchar{#2}}}} -\def\fetchar#1{\fontentja\char#1} +\def\fetchar#1{\feta\char#1} %\input feta16 \input feta20 -\def\beamslope#1#2{{\count0=#2\advance\count0 by#1 - \advance\count0by128 - {\vetfont\char\count0}}} - % stacked numbers; overrules def in lilyponddefs % widest num should be .40 balkheight % oeps: \meter 12/8; @@ -47,62 +68,19 @@ \def\pianobrace#1{{\bracefont\char #1}} -\newcount\embedcount\embedcount=0 -\newwrite\checkexists -\newwrite\embedfile -\def\inputifexists#1{% - \openin\checkexists #1 - \ifeof\checkexists - \closein\checkexists - \else - \closein\checkexists - \input #1 - \fi -} -\def\embedcountid{feta-embed} -\inputifexists{\embedcountid.aux} -% -% let's not overwrite -- and be sure to create new -\def\storeembedcount{% - \immediate\openout\embedfile=\embedcountid.aux - \immediate\write\embedfile{\embedcount=\the\embedcount} - \immediate\closeout\embedfile -} - - - +\def\embeddedtex#1{} +\def\embeddedps#1{} +\def\embeddedmf#1#2{} +\def\embedclose{} \input lily-ps-defs -\def\embeddedtex#1{#1} - -\def\embeddedmf#1{ - \edef\embedid{feta-sleur-\number\embedcount} - \immediate\openout\embedfile=\embedid.mf - \global\advance\embedcount by 1 - -% should write ``automatically generated.'' -% \immediate\write\embedfile{\def\ -% -% } - \immediate\write\embedfile{#1} - - \immediate\closeout\embedfile - \font\expandafter\embedid\expandafter=\embedid - \embedid\char0 -} - -\def\notex{\def\embeddedtex##1{}} -\def\nopostscript{\def\embeddedps##1{}} -\def\nometafont{\def\embeddedmf##1{}} - -% dat heb je handig gedaan, lieverd! -\nometafont -%\nopostscript -\notex +% uncomment to use runtime MF +% +% \input lily-mf-defs \def\EndLilyPondOutput{ - \storeembedcount + \embedclose \csname bye\endcsname } diff --git a/tex/lily-mf-defs.tex b/tex/lily-mf-defs.tex new file mode 100644 index 0000000000..b30ba9fd5d --- /dev/null +++ b/tex/lily-mf-defs.tex @@ -0,0 +1,39 @@ +\newcount\embedcount\embedcount=0 +\newwrite\checkexists +\newwrite\embedfile +\def\inputifexists#1{% + \openin\checkexists #1 + \ifeof\checkexists + \closein\checkexists + \else + \closein\checkexists + \input #1 + \fi +} + +\def\embedcountid{feta-embed} +\inputifexists{\embedcountid.aux} +% +% let's not overwrite -- and be sure to create new +\def\embedclose{% + \immediate\openout\embedfile=\embedcountid.aux + \immediate\write\embedfile{\embedcount=\the\embedcount} + \immediate\closeout\embedfile +} + + +% let's keep embedcount to see how many embedded mf's clutter your system +\def\embeddedmf#1#2{% + \edef\embedid{#1}% + \immediate\openout\embedfile=\embedid.mf% + \global\advance\embedcount by 1% + \immediate\write\embedfile{\%Automatically generated by TeX (fetdefs.tex +)}% + \immediate\write\embedfile{\%Do not edit}% + \immediate\write\embedfile{#2}% + \immediate\closeout\embedfile% + \font\expandafter\embedid\expandafter=\embedid% + \embedid\char0% +} + + diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index 9b0ed425a5..92d9825afe 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -37,14 +37,14 @@ 1 setlinecap /draw_beam { - /beam_thick exch def + 2 div /beam_thick exch def /beam_slope exch def /beam_wd exch def beam_slope beam_wd mul /beam_ht exch def - 0 0 moveto + 0 beam_thick neg moveto beam_wd beam_ht rlineto - 0 beam_thick rlineto - 0 beam_thick lineto + 0 beam_thick 2 mul rlineto + 0 beam_thick lineto closepath fill } bind def % PS helper: convert (0.2pt) to the token 0.2 @@ -125,7 +125,6 @@ def slur_indent slur_ht slur_b slur_indent sub slur_ht slur_b 0 - % pstack rcurveto % slur_indent neg slur_ht slur_dir slur_thick mul sub diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 02116e998c..8a03396e18 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -64,9 +64,6 @@ % set fonts and primary dimensions % ugh \def\musixtwentydefs{ - \staffheight=20pt - \notewidth=7.15pt - \noteheight=5pt \twentyfonts \musixcalc } @@ -77,6 +74,8 @@ \font\musicmathfont=cmsy10 \font\normaltextfont=cmr10 %\textfont is a primitive \font\smalltextfont=cmr8 + \font\boldfont=cmbx10 + \font\textmusic=cmmi12 } \def\cmrsixteen{ \font\smalltextfont=cmr6 @@ -84,18 +83,45 @@ \font\meterfont=cmbx12 \font\italicfont=cmti8 \font\textmusic=cmmi10 + \font\boldfont=cmbx8 +} +\def\cmreleven{ + \font\smalltextfont=cmr5 + \font\normaltextfont=cmr6 + \font\meterfont=cmbx8 + \font\italicfont=cmti6 + \font\textmusic=cmmi8 + \font\boldfont=cmbx6 +} + +\def\cmrthirteen{ + \font\smalltextfont=cmr6 + \font\normaltextfont=cmr7 + \font\meterfont=cmbx9 + \font\italicfont=cmti7 + \font\textmusic=cmmi9 + \font\boldfont=cmbx7 } \def\musixsixteendefs{ - \staffheight=16pt - \notewidth=5.93pt - \noteheight=4pt \sixteenfonts \musixcalc } +\def\musixtwentysixdefs{ + \twentysixfonts + \musixcalc +} +\def\musixthirteendefs{ + \thirteenfonts + \musixcalc +} +\def\musixelevendefs{ + \elevendefs + \musixcalc +} \def\textsharp{\raise.4ex\hbox{\textmusic\char"5D}} \def\textnatural{\raise.4ex\hbox{\textmusic\char"5C}} -\def\textflat{\raise.2ex\hbox{\mus\char"5B}} +\def\textflat{\raise.2ex\hbox{\textmusic\char"5B}} @@ -103,18 +129,17 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % do derivative calcs -% FIXME: should read from TFM/AFM/fetalog -% - % this has to be synced with the font definition \def\musixcalc{ + \staffheight=\mudelapaperbarsize pt + \interlinedist=\staffheight + \divide\interlinedist by 4 + \notewidth=\mudelapapernotewidth pt + \smallspace=.3\interlinedist \interstaffrule=\staffheight \divide\interstaffrule by 4 - - % [D.K.Roush & J.S.Gourlay] say this should be 0.072 - % We know better - \staffrulethickness=0.1\interlinedist + \staffrulethickness=\mudelapaperrulethickness pt \stemthickness=\staffrulethickness } @@ -183,12 +208,6 @@ \def\startbar#1{\leftalign{\thickbar{#1}\kern\smallspace\thinbar{#1}}} \def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}} -\def\slurcharh#1{{\slurhfont\char#1}} -\def\slurcharu#1{{\slurufont\char#1}} -\def\slurchard#1{{\slurdfont\char#1}} -\def\hslurcharh#1{{\hslurhfont\char#1}} -\def\hslurcharu#1{{\hslurufont\char#1}} -\def\hslurchard#1{{\hslurdfont\char#1}} \def\stem#1#2{\hbox{\kern -.5\stemthickness \vrule width\stemthickness height#2 depth-#1}} @@ -198,13 +217,11 @@ } -\def\brace#1{\count0=148\advance\count0 by #1\musicdraw\char\count0} -\def\crescendosym#1{\count0=84\advance\count0 by #1\musicdraw\char\count0} -\def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0} \def\rulesym#1#2{\dimen0=#1% \vrule height .5\dimen0 depth .5\dimen0 width #2} \def\settext#1{\normaltextfont #1} \def\setitalic#1{\italicfont #1} +\def\setbold#1{\boldfont #1} \def\setdynamic#1{\dynfont #1} \def\setfinger#1{\fingerfont #1} diff --git a/tex/taupindefs.tex b/tex/taupindefs.tex index a6aa7c70fb..3c5921c4f1 100644 --- a/tex/taupindefs.tex +++ b/tex/taupindefs.tex @@ -129,3 +129,17 @@ % \musicfnt\char\count0}} + +\def\beamslope#1#2{{\count0=#2\advance\count0 by#1 + \advance\count0by128 + {\vetfont\char\count0}}} + +\def\slurcharh#1{{\slurhfont\char#1}} +\def\slurcharu#1{{\slurufont\char#1}} +\def\slurchard#1{{\slurdfont\char#1}} +\def\hslurcharh#1{{\hslurhfont\char#1}} +\def\hslurcharu#1{{\hslurufont\char#1}} +\def\hslurchard#1{{\hslurdfont\char#1}} +\def\brace#1{\count0=148\advance\count0 by #1\musicdraw\char\count0} +\def\crescendosym#1{\count0=84\advance\count0 by #1\musicdraw\char\count0} +\def\decrescendosym#1{\count0=116\advance\count0 by #1\musicdraw\char\count0}