diff options
author | Han-Wen Nienhuys <hanwen@xs4all.nl> | 1997-07-29 19:43:44 +0200 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@xs4all.nl> | 1997-07-29 19:43:44 +0200 |
commit | 48bdd9154a32245a075494b403639181615864e2 (patch) | |
tree | 05ed2406f692c06eef2803c0f7ae8b1ab69aab10 | |
parent | 6ce61146edb1c36647b514778c29cdc9beedab6a (diff) |
release: 0.0.77.jcn1
173 files changed, 1024 insertions, 757 deletions
diff --git a/.dstreamrc b/.dstreamrc index fbad82a93c..0bf620df03 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -1,21 +1,6 @@ # class name silence? Dstream 1 -File_path 1 -My_lily_lexer 1 -PCol 0 -Score_column 0 -Script_column 0 -# E l b e ment? search/replace typo. -# Yeah. kind of. Looks cute though -Elbement_group 1 -Ineq_constrained_qp 1 -Spacing_problem 1 -Colinfo 1 -Mixed_qp 1 -PScore 1 -Idealspacing 0 - # yydebug InitParser 1 Parser 1 @@ -26,64 +11,81 @@ InitLexer 1 Lexer 1 Matrix 1 -parse_duration 1 -parse_pitchmod 1 -Col_configuration 1 -Request 1 -Note_req 1 -Rhythmic_req 1 -Rest_req 1 -delete_identifiers 1 -Command 1 -Staff_commands 1 -Stem 1 -Staff 1 -Score 1 -Voice 1 -Voice_element 1 -Spanner 1 + + Atom 1 +Bar 1 +Beam 1 Change_iterator 1 +Chord 0 Chord_iterator 1 -Music_iterator 1 -Request_iterator 1 -Score_performer 0 -Voice_element_iterator 1 -Voice_iterator 1 -Chord 1 -Collision 1 -Rest_collision 1 -Stem 1 -Key_item 1 Clef_item 1 -Bar 1 -Slur 1 -Music 1 -Paper_def 1 -Lookup 1 -Input_translator 0 -Score_elem 1 -Item 1 -Note_head 1 +Col_configuration 1 +Colinfo 1 +Colinfo 1 +Collision 1 +Command 1 + +# E l b e ment? search/replace typo. +# Yeah. kind of. Looks cute though +Elbement_group 1 Engraver 1 -Rest_collision_engraver 1 -Score_engraver 0 Engraver_group_engraver 1 -Time_description 1 -Melodic_req 1 +File_path 1 +Group_change_req 1 +Head_column 1 +Idealspacing 0 +Ineq_constrained_qp 1 +Input_translator 0 +Item 1 +Key_item 1 +Lookup 1 +Melodic_req 0 Midi_def 1 +Mixed_qp 1 +Music 0 +Music_iterator 1 +My_lily_lexer 1 +Note_head 1 Note_performer 0 +Note_req 0 +PCol 0 +PScore 1 +Paper_def 1 +Paperdef 1 Performer 0 -Stem_req 1 -Group_change_req 1 -Script_req 1 -Colinfo 1 -Word_wrap 1 -Text_req 1 +Request 0 +Request_iterator 1 +Rest_collision 1 +Rest_collision_engraver 1 +Rest_req 1 +Rhythmic_req 0 +Score 1 +Score_column 0 +Score_elem 1 +Score_engraver 0 +Score_performer 0 +Script_column 0 Script_def 0 -Text_def 0 -Paperdef 1 +Script_req 0 +Slur 1 +Spacing_problem 1 +Spanner 1 +Staff 1 +Staff_commands 1 +Stem 1 +Stem 1 +Stem_req 1 Symtable 1 Symtables 1 -Beam 1 -Head_column 1 +Text_def 0 +Text_req 0 +Time_description 1 +Voice 0 +Voice_element 0 +Voice_element_iterator 1 +Voice_iterator 1 +Word_wrap 1 +delete_identifiers 1 +parse_duration 1 +parse_pitchmod 1 @@ -1,7 +1,7 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 0 -TOPLEVEL_PATCH_LEVEL = 76 +TOPLEVEL_PATCH_LEVEL = 77 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf -TOPLEVEL_MY_PATCH_LEVEL = +TOPLEVEL_MY_PATCH_LEVEL = .jcn1 @@ -11,8 +11,9 @@ Lily is a healthy, bouncing baby weighing 335 kilobytes Visiting hours: 24hrs a day at - ftp://pcnov095.win.tue.nl/pub/lilypond/lilypond-0.1.tar.gz - ftp://prep.gnu.ai.mit.edu/pub/gnu/lilypond-0.1.tar.gz + + ftp://pcnov095.win.tue.nl/pub/lilypond/lilypond-0.1.0.tar.gz (Europe) + ftp://alpha.gnu.ai.mit.edu/pub/lilypond/lilypond-0.1.0.tar.gz (US) you can see some babyfood, diapers and pictures at @@ -56,9 +57,9 @@ It isn't flashy, but then I wasn't born to be a webartist. WHAT IS GNU LilyPond? -GNU LilyPond which converts music definition files into visual or -audio output: it can typeset formatted sheet music to a TeX file and -and (mechanical) performances to MIDI files. +GNU LilyPond is a program which converts music definition files into +visual or auditive output: it can typeset formatted sheet music to a +TeX file and and (mechanical) performances to MIDI files. WHY? @@ -66,13 +67,15 @@ We want to create tools which can produce production quality scores and parts of public music. We haven't quite reached that goal: * The quality of the output isn't good enough yet due to -some (still) insophisticated algorithms +some (still) unsophisticated algorithms * A number of features haven't been implemented (although they can be quite simple) -We Want You! You can become a user, but we'd really appreciate to -have some Hackers to help advance our project more quickly. +WE WANT YOU! + +You can become a user, but we'd really appreciate it you would start +hacking at Lily, and help us advance our project more quickly. WHAT IS NEEDED? @@ -90,7 +93,7 @@ for running you need MusiXTeX fonts The MusiXTeX fonts are part of the MusiXTeX package version T.73, -available at http://www.gmd.de/Misc/Music/ +available at any CTAN mirror, or http://www.gmd.de/Misc/Music/ WHAT CAN LILYPOND DO? diff --git a/AUTHORS.text b/AUTHORS.text index ffea060633..a8c72e7a12 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -26/Jul/97 LilyPond 0.0.76 1 +26/Jul/97 LilyPond 0.0.77 1 @@ -1,2 +1,20 @@ [document reintroduced deficiencies.] + +midi instrument? +******************* + '.' -> lilypond: lexer.l:258: int My_lily_lexer::yylex(): Assertion `cnv == 1' failed. + +*********************** + +2nd staff takes too long. + +\score { < + \melodic { \id "Staff" ""; c'4 g'4 } + \lyric { \id "Lyric" ""; hello4 bye4 < a chord > } + \lyric { \id "Lyric" ""; bye4 hello4 } + \melodic { \id "Staff" ""; c'4 g'4 } + > +} + +******************* diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index 9d86ae3641..7d7ee4127d 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -55,13 +55,21 @@ TeX The MusixTeX fonts (I included 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 T.73, which can be had from any CTAN site, eg at +MusixTeX (T73 or better), which can be had from any CTAN site, e.g. at - 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 +=over 4 + +=item ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin + +=item ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin + +=item ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin + +=back -You only need the contents of the F<mf/> subdirectory of the package. +You only need the contents of the F<mf/> subdirectory of the +package. The primary site of the Taupin version is +ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip =head1 RECOMMENDED @@ -78,7 +86,6 @@ with the perl's Plain Old Documentation. (GNU) find - =item * A fast computer (a full page of music typically takes 1 minute @@ -199,8 +206,6 @@ have a symlink pointing to that in F</usr/lib/texmf/texmf/fonts/source/public/>. After I copied the files, I ran "texhash" -ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip - =head1 CAVEATS diff --git a/Documentation/Makefile b/Documentation/Makefile index 79934bc758..a44206b652 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -16,8 +16,10 @@ NAME = Documentation include ./$(depth)/make/Variables.make include ./$(depth)/make/Version.make include ./$(depth)/make/Files.make +include ./Rules.make # + # DOCFILES = $(wildcard *.doc) OUTPODFILES = $(addprefix $(outdir)/,$(PODFILES)) @@ -32,7 +34,8 @@ DVIFILES = $(addprefix $(outdir)/, $(DOCFILES:.doc=.dvi)) EXTRA_DISTFILES = lelie_icon.gif lelie_logo.gif $(DOCFILES) default: do-doc -do-doc: $(TEXTFILES) $(DVIFILES) +# don't do DVI files. They can only be made if lily is installed +do-doc: $(TEXTFILES) html: $(HTMLFILES) diff --git a/Documentation/Rules.make b/Documentation/Rules.make new file mode 100644 index 0000000000..9f1be188b4 --- /dev/null +++ b/Documentation/Rules.make @@ -0,0 +1,55 @@ +# special rules for the documentation section. +# There are too many to add to the general rules + +.SUFFIXES: .pod .text .1 .html + + +$(outdir)/%.xpm: %.gif + giftopnm $< | ppmtoxpm > $@ + +$(outdir)/%.ps: $(outdir)/%.dvi + dvips -o $@ $< + +$(outdir)/%.dvi: $(outdir)/%.mudtex + latex '\nonstopmode \input $<' + mv $(notdir $@) $(outdir) + +$(outdir)/%.mudtex: %.doc + $(depth)/bin/mudela-book --outdir=$(outdir)/ --outname=$(notdir $@) $< + + +$(outdir)/%.text: $(outdir)/%.1 + groff -man -Tascii $< > $@ + +$(depth)/%.text: $(outdir)/%.text + cp $< $@ + +$(outdir)/%.html: %.pod + $(pod2html) $< + mv $(notdir $@) $(outdir)/ + +$(outdir)/%.5: %.pod + $(pod2groff) + +$(outdir)/%.1: %.pod + $(pod2groff) + +$(outdir)/%.gz: $(outdir)/% + gzip -c9 $< > $@ + +$(outdir)/%.dvi: $(depth)/input/%.ly + (cd $(outdir); lilypond ../$< ;\ + if [ -f ../$(basename $< ).tex ]; \ + then \ + latex ../$(basename $< ) ;\ + else \ + tex '\nonstopmode \input lelie' ;\ + mv lelie.dvi ../$@ ; \ + fi) + +# generate the pixmap at twice the size, then rescale (for antialiasing) +$(outdir)/%.gif: $(outdir)/%.ps + gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $< -c quit |pnmscale 0.5| ppmtogif > $@ + +$(outdir)/%.ly.txt: $(depth)/input/%.ly + ln -f $< $@ diff --git a/Documentation/index.pod b/Documentation/index.pod index 54b509ee33..10fdd592d0 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -6,13 +6,13 @@ Excuse me for this poor page. I don't really have time for doing this.. =head1 DESCRIPTION -GNU LilyPond is a program to typeset music: it generates TeX (or -LaTeX) output from file input. -As a bonus, you can also output a MIDI file of what you typed. -=head2 Examples +GNU LilyPond is a program which converts music definition files into +visual or auditive output: it can typeset formatted sheet music to a +TeX file and and (mechanical) performances to MIDI files. +=head2 Examples <a href=example_output.html > @@ -117,6 +117,20 @@ The GNU Music project </a > +=item * +<a href=ANNOUNCE.txt +> +The announce of 0.1 +</a +> + +=item * +<a href=DEDICATION.txt +> +DEDICATION +</a +> + =back @@ -126,6 +140,8 @@ The GNU Music project =over 5 + + =item * <a href=TODO.txt > @@ -193,13 +209,20 @@ Get LilyPond at ftp://pcnov095.win.tue.nl/pub/lilypond ! =item * +<a href=links.html +> +B<download LilyPond> and other interesting links +</a +> + + +=item * <a href=sconstat/stats.html > Stats on this page. </a > - =back diff --git a/Documentation/lilygut.pod b/Documentation/lilygut.pod index f84120b47b..71d0f8f566 100644 --- a/Documentation/lilygut.pod +++ b/Documentation/lilygut.pod @@ -206,7 +206,7 @@ C<Stem_beam_engraver> about the C<Notehead>, which will add the C<Notehead> to the C<Stem> it just created. To decide on merging, C<Complex_staff> has grouped several -engravers. Please check init/engraver.ini. +engravers. Please check F<init/engraver.ly>. =head1 ITEMS and SPANNERS diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index c0181bc645..e479ff5c19 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -8,9 +8,9 @@ lilypond - the GNU music typesetter =head1 DESCRIPTION -GNU LilyPond which converts music definition files into visual or -audio output: it can produce formatted sheet music in TeX and -and mechanical perfomances to MIDI files. +GNU LilyPond is a program which converts music definition files into +visual or auditive output: it can typeset formatted sheet music to a +TeX file and and (mechanical) performances to MIDI files. =head1 OPTIONS @@ -20,7 +20,6 @@ and mechanical perfomances to MIDI files. add F<FILE> to the search path for input files. - =item B<-M,--midi> do midi output only @@ -46,12 +45,16 @@ Show a summary of usage =item B<-i,--init=>F<FILE> -set init file to F<FILE> (default: F<symbol.ini>) +set init file to F<FILE> (default: F<symbol.ly>) =item B<--include, -I>=F<DIRECTORY> add F<DIRECTORY> to the search path for input files. +=item B<--ignore-version, -V> + +make incompatible mudela version non-fatal + =back =head1 FEATURES @@ -175,7 +178,7 @@ Than it would help if you send a dump of the Interval and the Item =over 5 -=item F<symbol.ini> +=item F<symbol.ly> The initialisation file with symbol tables etc. It includes files from the directory F<init/>. @@ -196,9 +199,9 @@ B<LILYINCLUDE> an (one) additional directory for finding lilypond data. On technical details of LilyPond -=item mudela(5) +=item mudela-man -On the input format +On the input format. This is a LilyPond-enhanced LaTeX document. =item MANIFESTO @@ -208,18 +211,12 @@ Goals of the GNU LilyPond project. The GNU LilyPond FAQ list -=item http:// - -The GNU Music project. GNU LilyPond is part of the GNU Music -project. For more information on the GNU Music project, - =item http://www.stack.nl/~hanwen/lilypond/index.html GNU LilyPond has her own webpage. This webpage contains the MIDI, GIF and PS files for some standard music files. It also has the complete LilyPond documentation - =back GNU LilyPond is diff --git a/Documentation/links.pod b/Documentation/links.pod new file mode 100644 index 0000000000..e9ffba63ef --- /dev/null +++ b/Documentation/links.pod @@ -0,0 +1,113 @@ +=head1 NAME + +links - Links to other related websites + +=head1 DESCRIPTION + +This page contains links to organisations and ftp-sites, which may be +of interest to LilyPond users. + +=head2 WWW + +=over 4 + +=item http://www.gnu.ai.mit.edu/ + +LilyPond is part of the GNU Project started by the Free Software +Foundation to create a system of free software for the world-community + +=item http://www.ssc.com/linux/ + +The Number One Free OS-Kernel: Linux + +=item http:// /linux_soundapps.html + +Dave Philips' Linux sound applications page + + +=back + +=head2 Ftp + +We will upload major releases to the following sites: + +=over 4 + +=item ftp://sunsite.unc.edu/pub/Linux/apps + +The GNU/Linux FTP site + +=item ftp://ftp.dante.de/tex-archive/support/lilypond + +An ftp site which is in CTAN. + +=item ftp://ftp.redhat.com/pub/contrib/ + +RedHat Software develops and markets a GNU/Linux distribution (of +which we are avid users) + +=back + +Beta releases will also be at + +=over 4 + +=item ftp://pcnov095.win.tue.nl/pub/lilypond + +=item ftp://alpha.gnu.ai.mit.edu/ + +=back + +=head2 News + + +=over 4 + +=item news:comp.music.research + +=item news:rec.music.compose + +=item news:gnu.announce + +=item news:comp.os.linux.announce + +=back + +=head2 Mailing lists + +For programs which are part of the GNU music project, the following +mailing list have been setup: + +=over 4 + +=item info-gnu-music@vuse.vanderbilt.edu + +For information on the GNU Music project, to subscribe: send mail with +subject "subscribe" to info-gnu-music-request@vuse.vanderbilt.edu + +=item help-gnu-music@vuse.vanderbilt.edu + +For help with programs from the GNU music project. To subscribe: send +mail with subject "subscribe" to +help-gnu-music-request@vuse.vanderbilt.edu + +=item bug-gnu-music@vuse.vanderbilt.edu + +If you have bugreports, you should send them to this list. If you want +to read all bugreports, you should subscribe to this list. To +subscribe: send mail with subject "subscribe" to +bug-gnu-music-request@vuse.vanderbilt.edu + +=item gnu-music-discuss@vuse.vanderbilt.edu, + +For discussions concerning the GNU Music project, to subscribe: send +mail with subject "subscribe" to +gnu-music-discuss-request@vuse.vanderbilt.edu, + + +=back + +Announces of new versions will be sent to info-gnu-music and +gnu-music-discuss. + + diff --git a/Documentation/mi2mu.pod b/Documentation/mi2mu.pod index a4aa186f3b..faf125bbfe 100644 --- a/Documentation/mi2mu.pod +++ b/Documentation/mi2mu.pod @@ -111,7 +111,9 @@ The GNU LilyPond music typesetter. On the LilyPond input format. -=item The GNU LilyPond FAQ list. +=item mudela-man + +On the input format. This is a LilyPond-enhanced LaTeX document. =back diff --git a/Documentation/mudela-man.doc b/Documentation/mudela-man.doc index f9405a5eee..c4e9c85398 100644 --- a/Documentation/mudela-man.doc +++ b/Documentation/mudela-man.doc @@ -14,22 +14,19 @@ \section{Introduction} This document describes the the GNU LilyPond input format, which is an -effective language for defining music. We call this language -(rather arrogantly) The Musical Definition Language (Mudela 0.1). - -[If anybody comes up with a better name, we'd gladly take -this. Gourlay already uses Musical Description Language, GSharp Score -Definition Language. We're not being original here] +effective language for defining music. We call this language (rather +arrogantly) The Musical Definition Language or Mudela, for +short.\footnote{If anybody comes up with a better name, we'd gladly + take this. Gourlay already uses Musical Description Language, + G-Sharp Score Definition Language. We're not being original here} The first aim of Mudela is to define a piece of music, being complete from both from a musical typesetting, as from a musical performing point of view. - -The Musical Definition Language (Mudela) version 2, has a logical -structure, making use of typing and naming (using identifiers), that -allows for flexible input, and definition reuse. See MANIFESTO for -reasons and design considerations. +The Musical Definition Language (Mudela), has a logical structure, +making use of identifiers, that allows for flexible input, and +definition reuse. See MANIFESTO for reasons and design considerations. The below included for explanatory purposes only (i.e., for a complete and up-to-date definition, see \file{lily/parser.y} and @@ -40,6 +37,8 @@ files, as this document does not cover every aspect of mudela yet, and may be out of date. +\section{Basic elements} + \subsection{Files} The de-facto extension of Mudela is \file{.ly}. Files may be included by @@ -52,8 +51,14 @@ entering \verb+include+ at the start of a line: \subsection{Comments} -Line comments are introduced by a \verb+%+. Block comments are delimited -by \verb+%{+ and \verb+%}+. They do not nest. +Line comments are introduced by a +\verb+%+. +Block comments are delimited +by +\verb+%{+ +and +\verb+%}+. +They do not nest. \subsection{Versions} @@ -75,7 +80,8 @@ alphabetic characters only. Identifiers in their normal form consist start with a backslash, a alpha character, followed by alpha-numerics. Identifiers can contain -any characters (except whitespace, \verb+$+ and \verb+%+), if you use this +any characters (except whitespace, +\verb+$+ and \verb+%+), if you use this construct: \begin{verbatim} @@ -283,7 +289,7 @@ error for this reason. \subsection{Slurs and Ties} -Ties connect the noteheads of adjecent notes. They are entered as follows: +Ties connect the noteheads of adjacent notes. They are entered as follows: \begin[fragment]{mudela} a4 ~ a4 @@ -348,7 +354,6 @@ octave, you can prevent having to type \verb+'+ all the time by using the \verb+\octave+ command: These two lines have the same pitch. \begin{verbatim} c'' d'' e'' c d e c d e - \octave c''; c d e ''c ''d ''e \octave c; c d e \end{verbatim} @@ -370,56 +375,73 @@ duration entry are bound together using an underscore He_could4 not4 \end{verbatim} -\subsection{ Music direction} +\section{Composition: forming bigger structures} -Mudela reads left to right, but you can still stack voices and -Voice\_elements which are produced in two directions: horizontal -(voice like) and vertical (chord like) +The previous examples tacitly assumed that a sequence of notes is +printed in a left to right manner. This is not entirely correct, you +will get the bigger picture in this section. -A note is a prime example of a Music-element is the note: -\begin{verbatim} -c4 -\end{verbatim} +In mathematics you can form expressions by combining expressions, +which are ultimately some kind of atom or terminal symbol. The same +goes for mudela: there are some basic building blocks, and by +combining those you create complex music. -If you enclose a sequence of Music-elements in braces ( { } ), then you form -another kind of Music-element (Voice) with those pieces +You can combine music in three ways: +\begin{itemize} +\item If you enclose a sequence of music-elements in braces ( \verb+{+ + and \verb+}+ ), then you form another kind of music called (Voice) with those pieces. + The duration of the Voice is the sum of the durations of its elements \begin{verbatim} - { c c g g a a g2 } % twinkle twinkle - { { c c g g} { a a g2 } } - - horOne = \melodic { c c g g } - horTwo = \melodic { a a g2 } - twinkle = \melodic { \horOne \horTwo } +{ c c g g a a g2 } % twinkle twinkle +{ { c c g g} { a a g2 } } \end{verbatim} - -You can stack Music-elements by enclosing a sequence Music-elements of -notes with < and >. Example: +\item You can stack music by enclosing a sequence of music elements + with \verb+<+ and \verb+>+. This is called a Chord. The duration of a Chord is + the union of the durations of its elements Example: \begin{verbatim} -<a cis e'> % a-major chord +<a4 {cis8 cis8} e'4> % a-major chord \end{verbatim} -You can also put vertical music inside horizontal music: +\item + You can form music by transposing music: \begin{verbatim} -{ c <c e> <c e g> <c e g c'> } % 4 increasing chords +\transpose + d % from c to the d that's one octave down + { e4 f4 } % the horizontal music \end{verbatim} -And vice versa +\end{itemize} + +Of course you can also combine these three mechanisms. \begin{verbatim} -< \multi 2; - {c c g g a a g2} - {r2 r2 c c g g a a g2} > % a canon +{ c <c e> <c e g> <c e g \transpose d' dis > } % 4 increasing chords \end{verbatim} -The duration of a chord equals the union of the durations of each of -its elements. The \verb+\multi 2+ is a construct which is explained -below. +The basic building block in Mudela is called Request. Examples of +Requests are: Timing (such as Meter), Rhythmic, Melodic, Note (which is a combination of +Rhythmic and Melodic), Musicscript (put an accent over a note or +rest), etc. For the actual up to date listing, you should consult the +LilyPond source code: the Request types form a big class hierarchy. -You can also create a Music-element by transposing a Music-element: +Normally you don't enter Requests directly, since that would be +tedious. Mudela has standard abbreviations for the most common +combination of Requests. If you enter \verb+c4+, this is an +abbreviation for: \begin{verbatim} -\transpose - d % from c to the d that's one octave down - { e4 f4 } % the horizontal music - +Request_chord{ + Note_req{ + notename: 0 acc: 0 oct: -1 + duration { 4} + } + Stem_req{ + duration { 4} + } +} \end{verbatim} +The \verb+Request_chord+ is a special kind of chord which only allows +Requests as its elements. The examples of the previous section were +processed with \verb+{+ and \verb+}+ enclosing the input. + + \subsection{Voicegroups} If more than one "voice" is in a staff, then you have the option of @@ -438,6 +460,8 @@ makes LilyPond try to form chords of all those lines. Putting different musical lines in to different voicegroups effectively makes LilyPond try to set those lines as independently as possible. +[adsolete. Has to be fixed in lily] + You can set the voicegroup of a voice with the command \verb+\group+, e.g., \begin{verbatim} oboeI = \melodic { @@ -460,6 +484,7 @@ You can set the voicegroup of a voice with the command \verb+\group+, e.g., \melodic { oboeII} } \end{verbatim} + In this example, the two oboe voices share one staff and are initially in the voicegroup called "oboes". They will share beams, dynamics etc. After two quavers, oboeI "pushes" its group: a new voicegroup is @@ -516,39 +541,19 @@ same syntax as grouping: \partial 16*3 4; \end{verbatim} -Make the piece start with a partial measure [transl?] lasting 1 3/4 -quaver. +Make the piece start with a partial measure [english translation?] +lasting 1 3/4 quaver. These commands are also "voice elements", and constitute simple mudela (consisting of stuff with duration 0). -\section{STRUCTURE} - -In concrete, a piece of Mudela has the following structure: -\begin{verbatim} -% declare pieces of music: - melody = \music{ <simple mudela> } - accompany = \music{ <simple mudela> } - - % instantiate (=create tex, midi output) the score: - \score{ - \melodic < - \multi 3; - \melody - \accompany - > - \midi{ <midi definitions> } - \paper{ <paper and layout definitions> } -} -\end{verbatim} - \subsection{Examples} Examples are included with the GNU LilyPond distribution. For the sake of maintenance no long examples are included in this document. -\section{HISTORY} +\section{History} This language has a number of roots. First and foremost, GNU LilyPond's predecessor mpp was the inspiration of simple Mudela. Secondly, the diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod index 7d6f3c0b4b..9da5f26af9 100644 --- a/Documentation/other-packages.pod +++ b/Documentation/other-packages.pod @@ -14,9 +14,9 @@ packages. Feel free to add info (and mail it to me). An alpha version notation editor for X in Scheme. Source available on request. -=item Rosegarden, http://www.math.bath.ac.uk/~masjpf/rose.html +=item Rosegarden, http://www.bath.ac.uk/~masjpf/rose.html -A Notation editor/Sequencer for X (win95 port underway). Outputs musictex. +A Notation editor/Sequencer for X (windows95 port underway). Outputs musictex. =item Common Notation, http://www-ccrma.stanford.edu/CCRMA/Software/cmn/cmn.html @@ -91,7 +91,7 @@ Described in Computer vol 29(6). Shareware Notation editor for W95 and Mac -=item Sibelius, http://www.acorn.co.uk/developers/sibelius +=item Sibelius, http://www.acorn.co.uk/developers/sibelius/Home Notation/engraving on Acorn machines. diff --git a/INSTALL.text b/INSTALL.text index d4ff1b1791..c4b84339f1 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -41,27 +41,27 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG 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 T.73, which can be had from any - CTAN site, eg at + 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 - ftp://ftp.tex.ac.uk/tex-archive/macros/musixtex/taupin - ftp://ftp.dante.de/tex-archive/macros/musixtex/taupin + ftp://ftp.shsu.edu/tex-archive/macros/musixtex/taupin - You only need the contents of the _m_f_/ subdirectory of - the package. + 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 ftp://hprib.lps.u- + psud.fr/pub/music_zips/musixtex.zip RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD Although not strictly necessary, these are recommended to have. - +o Perl. Most scripts are written in Perl. The - documentation was created with the perl's Plain - Old Documentation. - -28/Jul/97 LilyPond 0.0.76 1 +29/Jul/97 LilyPond 0.0.77 1 @@ -70,6 +70,10 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD INSTALL(1) LilyPond documentation INSTALL(1) + +o Perl. Most scripts are written in Perl. The + documentation was created with the perl's Plain + Old Documentation. + +o (GNU) find +o A fast computer (a full page of music typically @@ -121,13 +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 - - -28/Jul/97 LilyPond 0.0.76 2 +29/Jul/97 LilyPond 0.0.77 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 @@ -187,13 +190,10 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG Install the musixtex fonts in a directory which TeX and MF knows (if you are root, look for a directory which - contains the directories with AMS and CM source (*.mf) - files. Create a subdir lilypond or musixtex and copy the - fonts into that). Do not forget to rehash TeX (if -28/Jul/97 LilyPond 0.0.76 3 +29/Jul/97 LilyPond 0.0.77 3 @@ -202,6 +202,9 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG INSTALL(1) LilyPond documentation INSTALL(1) + contains the directories with AMS and CM source (*.mf) + files. Create a subdir lilypond or musixtex and copy the + fonts into that). Do not forget to rehash TeX (if applicable) Example: my fonts are in @@ -210,8 +213,6 @@ INSTALL(1) LilyPond documentation INSTALL(1) _/_u_s_r_/_l_i_b_/_t_e_x_m_f_/_t_e_x_m_f_/_f_o_n_t_s_/_s_o_u_r_c_e_/_p_u_b_l_i_c_/. After I copied the files, I ran "texhash" - ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip - CCCCAAAAVVVVEEEEAAAATTTTSSSS +o The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You should turn off this @@ -255,11 +256,10 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX file is in _m_a_k_e_/_o_u_t_/_l_i_l_y_p_o_n_d_._s_p_e_c. You should be able to create an rpm as a normal user. Be sure you have a ~/.rpmrc, and edit the RPM-dir in _V_a_r_i_a_b_l_e_s_._m_a_k_e. (If you - create the RPM as a normal user the permissions will not -28/Jul/97 LilyPond 0.0.76 4 +29/Jul/97 LilyPond 0.0.77 4 @@ -268,6 +268,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX INSTALL(1) LilyPond documentation INSTALL(1) + create the RPM as a normal user the permissions will not be set correctly, unfortunately) WWWWIIIINNNNDDDDOOOOZZZZEEEE @@ -324,7 +325,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS - -28/Jul/97 LilyPond 0.0.76 5 +29/Jul/97 LilyPond 0.0.77 5 @@ -1,3 +1,25 @@ +pl 77.jcn1 + - init/*.ly in dist + - bf: string-convert.cc: return local buf + - bf: debug.cc: <new.h> + - bf: template4.cc: #includes + +pl 77 + - some fixes for internal compiler errors +derive from Pointer_list with default dtor gives error with -O2 + - .ini -> .ly + - lyrics fix + - Performer beautification: got rid of set_track(), midi_output() + - pseudo RTTI for midi-items + - bf: Performer*::print() + - links.pod + - Voice_element -> Request_chord + - fixed flex problems: stdin input works again + - Documentation/Rules.make, make-website via make + - spacing: now add basicspace + +******* +july 28 pl 76 - mudela version bumped to 0.1 - mudela-book @@ -12,6 +12,8 @@ grep for TODO and ugh/ugr * dots into separate item. + * return status + * lyrics in chords still fuck up. * add to MIDI output: @@ -22,6 +24,8 @@ grep for TODO and ugh/ugr * rewire acknowledge_element() logic with a process_acknowledged() + * progress when creating MIDI elts. + * pushgroup/popgroup * whole head on ledger line diff --git a/bin/make-website b/bin/make-website index 3a38929684..8f00d4f9cc 100755 --- a/bin/make-website +++ b/bin/make-website @@ -6,7 +6,10 @@ use Getopt::Long; my $lily_version; my $footstr; my $mw_id = "<!make_website!>"; -my $id_str = "make-website 0.2"; +my $id_str = "make-website 0.3"; + +my $TAR="tar"; +my $MAKE="make"; sub get_version { @@ -72,7 +75,7 @@ sub my_system local $base="lilypond/"; -local @examples=("multi", "wohltemperirt" ,"standchen", "toccata-fuga-E", +local @examples=("twinkle", "multi", "wohltemperirt" ,"standchen", "toccata-fuga-E", "scsii-menuetto", "collisions", "cadenza", "scales"); # rhythm, scales, @@ -81,60 +84,18 @@ local @examples=("multi", "wohltemperirt" ,"standchen", "toccata-fuga-E", sub gen_html { print "generating HTML\n"; - my_system "make -kC .. html"; -} - -sub ps_to_gif -{ - my ($a)=@_; - - if (! -f "$a.ps" ) { - my_system("gunzip -c $a.ps.gz > $a.ps"); - } - my_system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif"; -} - - -sub ps_to_jpeg -{ - my ($a)=@_; - my $in = "$a.ps"; - - my_system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $in -c quit |pnmscale 0.5| cjpeg -grayscale > $a.jpeg"; + my_system "$MAKE -kC .. html"; } sub gen_examples { print "generating examples: \n"; + my @todo=(); foreach $a (@examples) { - $texfile="lelie"; - $tex = "tex $texfile"; - if ($a eq "standchen" || $a eq "scsii-menuetto" ) { - $tex = "latex $a"; - $texfile = "$a"; - } - - if ( ! -f "$a.ly.txt" ) { - my_system "ln $depth/input/$a.ly ./$a.ly.txt"; - } - if (! -f "$a.dvi" ) { - my_system "lilypond $a;", - "$tex", "-mv $texfile.dvi $a.dvi"; - } - if ( ! -f "$a.ps.gz" && ! -f "$a.ps" ) { - my_system "dvips -o $a.ps $a.dvi"; - } - - my_system "mv lelie.midi $a.midi; " if ( -f "lelie.midi" ); - - # generate the pixmap at twice the size, then rescale (for antialiasing) - if ( ! -f "$a.gif" ) { - ps_to_gif($a); - } - if ( ! -f "$a.ps.gz" ) { - my_system "gzip -f $a.ps"; - } + push @todo, "out/$a.ps.gz", "out/$a.gif", "out/$a.ly.txt"; } + + my_system ("$MAKE -C .. " . join(' ', @todo)); } my @texstuff = ("mudela-man", "mudela-course"); @@ -145,13 +106,15 @@ sub gen_manuals open HTMLLIST, ">tex_manuals.html"; print HTMLLIST "<html><body><title>LilyPond manuals in TeX</title>\n" . "<ul>\n"; + my @todo=(); foreach $a (@texstuff) { - my_system( "make -C $depth/Documentation out/$a.dvi"); - my_system( "dvips $a", "gzip -9f $a.ps"); + push @todo , "out/$a.ps.gz"; print HTMLLIST "<li><a href=$a.ps.gz>$a.ps.gz</a>"; } print HTMLLIST "</ul>"; close HTMLLIST; + + my_system( "$MAKE -C .. " . join(' ', @todo)); } sub gen_list @@ -233,12 +196,25 @@ sub edit_html } } +sub copy_txt_file +{ + my ($f) = @_; + my $d = $f; + $d =~ s!^.*\/!!; + if (! $f =~ /.txt$/) { + $d = "$f.txt"; + } + print $f, $d; +} + sub copy_files { print "copying files\n"; print `ln -s $depth/out ./docxx` if ( ! -x "docxx" ) ; my_system "cp $depth/TODO ./TODO.txt", + "cp $depth/ANNOUNCE ./ANNOUNCE.txt", "cp $depth/NEWS ./NEWS.txt", + "cp $depth/DEDICATION ./DEDICATION.txt", "cp ../lelie*gif ."; } @@ -258,7 +234,7 @@ sub set_images sub docxx_update { - my_system "make -C $depth doc++"; + my_system "$MAKE -C $depth doc++"; } sub do_tar @@ -266,8 +242,8 @@ sub do_tar print "tarring.\n"; $files = join (' ', < *.html *.$image *.ps.gz *.txt *.midi docxx/*>); my_system - "-tar vhcf website.tar $files;", - "gzip -f9 website.tar;"; + "-$TAR zvhcf website.tar.gz $files;", +# "gzip -f9 website.tar;"; } sub identify diff --git a/flower/.version b/flower/.version index a6d093ed41..6214501523 100644 --- a/flower/.version +++ b/flower/.version @@ -1,6 +1,6 @@ MAJOR_VERSION = 1 MINOR_VERSION = 1 -PATCH_LEVEL = 22 +PATCH_LEVEL = 23 # use to send patches, always empty for released version: MY_PATCH_LEVEL = # include separator: "-1" or ".a" # diff --git a/flower/NEWS b/flower/NEWS index e7aaaa390e..3b0cf5e684 100644 --- a/flower/NEWS +++ b/flower/NEWS @@ -1,5 +1,8 @@ version 1.1: +pl 23: + - virtual-methods : static_is_type_b + - Choleski checks no if PARANOID pl 22: - ACursor and PACursor to give array a List like interface. diff --git a/flower/TODO b/flower/TODO index b810fabd7a..169a0525e6 100644 --- a/flower/TODO +++ b/flower/TODO @@ -1,3 +1,7 @@ + * write a String_hash template + + * write a Pointer_hash template + * fix/junk ambiguous String constructor overloads, e.g.: String( int ) and String( char ) @@ -7,7 +11,7 @@ * disable this auto conv: const pointer -> bool -> string - * PointerVec ? + * Pointer_array * PCursor -> Pointer_cursor / PointerCursor ? diff --git a/flower/choleski.cc b/flower/choleski.cc index d10372fdfd..202e184440 100644 --- a/flower/choleski.cc +++ b/flower/choleski.cc @@ -1,3 +1,11 @@ +/* + choleski.cc -- implement Choleski_decomposition + + source file of the Flower Library + + (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> +*/ + #include "choleski.hh" const Real EPS = 1e-7; // so sue me. Hard coded @@ -31,14 +39,18 @@ Choleski_decomposition::solve(Vector rhs)const /* Standard matrix algorithm. + Should add support for banded matrices */ Choleski_decomposition::Choleski_decomposition(Matrix P) : L(P.dim()), D(P.dim()) { int n = P.dim(); - assert((P-P.transposed()).norm()/P.norm() < EPS); +#ifdef PARANOID + assert((P-P.transposed()).norm()/P.norm() < EPS); +#endif + L.unit(); for (int k= 0; k < n; k++) { for (int j = 0; j < k; j++){ @@ -55,7 +67,7 @@ Choleski_decomposition::Choleski_decomposition(Matrix P) D(k) = d; } -#ifndef NDEBUG +#ifdef PARANOID assert((original()-P).norm() / P.norm() < EPS); #endif } @@ -81,7 +93,7 @@ Choleski_decomposition::inverse() const invm(i,j) = inv(j); } -#ifndef NDEBUG +#ifdef PARANOID Matrix I1(n), I2(original()); I1.unit(); assert((I1-I2*invm).norm()/I2.norm() < EPS); diff --git a/flower/full-storage.cc b/flower/full-storage.cc index 0a7bf4efbe..1b5c05a392 100644 --- a/flower/full-storage.cc +++ b/flower/full-storage.cc @@ -211,7 +211,5 @@ Full_storage::try_right_multiply(Matrix_storage * dest, Matrix_storage const * r } -IMPLEMENT_STATIC_NAME(Full_storage); -IMPLEMENT_STATIC_NAME(Matrix_storage); IMPLEMENT_IS_TYPE_B(Matrix_storage); IMPLEMENT_IS_TYPE_B1(Full_storage,Matrix_storage); diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh index ea81cbbc99..b8933baa0e 100644 --- a/flower/include/virtual-methods.hh +++ b/flower/include/virtual-methods.hh @@ -16,7 +16,8 @@ */ #define NAME_MEMBERS() \ static char const *static_name();\ -virtual bool is_type_b(const char *)const; \ +static bool static_is_type_b(const char*s);\ +virtual bool is_type_b(const char *s)const { return static_is_type_b(s); } \ virtual char const *name() const{ return static_name(); } \ int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out() @@ -28,20 +29,23 @@ int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out() int yet_another_stupid_function_to_allow_semicolon() #define IMPLEMENT_IS_TYPE_B(D) \ - bool D::is_type_b(const char *s) const \ + IMPLEMENT_STATIC_NAME(D)\ + bool D::static_is_type_b(const char *s) \ { \ return s == static_name(); \ } #define IMPLEMENT_IS_TYPE_B1(D,B) \ - bool D::is_type_b(const char *s)const \ + IMPLEMENT_STATIC_NAME(D)\ + bool D::static_is_type_b(const char *s) \ { \ - return s == static_name() || B::is_type_b(s); \ + return s == static_name() || B::static_is_type_b(s); \ } #define IMPLEMENT_IS_TYPE_B2(D, BA, BB) \ - bool D::is_type_b(const char *s) const \ + IMPLEMENT_STATIC_NAME(D)\ + bool D::static_is_type_b(const char *s) \ { \ - return s == static_name() || BA::is_type_b(s) || BB::is_type_b(s); \ + return s == static_name() || BA::static_is_type_b(s) || BB::static_is_type_b(s); \ } #endif diff --git a/flower/string-convert.cc b/flower/string-convert.cc index feb793369f..f791e1f6c2 100644 --- a/flower/string-convert.cc +++ b/flower/string-convert.cc @@ -204,7 +204,7 @@ String_convert::int_str(int i, char const* fmt) String String_convert::double_str(double f, char const* fmt) { - char buf[STRING_BUFFER_LEN]; + static char buf[STRING_BUFFER_LEN]; snprintf(buf, STRING_BUFFER_LEN, fmt ? fmt : "%f", f); return buf; diff --git a/init/Makefile b/init/Makefile index ddf1ae7e02..32318e47c3 100644 --- a/init/Makefile +++ b/init/Makefile @@ -15,13 +15,13 @@ include ./$(depth)/make/Include.make # list of distribution files: # -INIFILES = $(wildcard *.ini) -DISTFILES = Makefile $(INIFILES) +INITFILES = $(wildcard *.ly) +DISTFILES = Makefile $(INITFILES) # localinstall: $(INSTALL) -d $(datadir)/lilypond/init - $(INSTALL) -m 644 $(INIFILES) $(datadir)/lilypond/init + $(INSTALL) -m 644 $(INITFILES) $(datadir)/lilypond/init localuninstall: for i in $(INIFILES) ; do rm -f $(datadir)/lilypond/init/$$i; done diff --git a/init/bare.ini b/init/bare.ini deleted file mode 100644 index be63e679eb..0000000000 --- a/init/bare.ini +++ /dev/null @@ -1,5 +0,0 @@ - -% enough for the parsing step - -include "init/dutch.ini" -include "init/table_sixteen.ini" diff --git a/init/bare.ly b/init/bare.ly new file mode 100644 index 0000000000..67963e1051 --- /dev/null +++ b/init/bare.ly @@ -0,0 +1,5 @@ + +% enough for the parsing step + +include "init/dutch.ly" +include "init/table_sixteen.ly" diff --git a/init/dutch.ini b/init/dutch.ly index b3d80dc62d..b3d80dc62d 100644 --- a/init/dutch.ini +++ b/init/dutch.ly diff --git a/init/dynamic.ini b/init/dynamic.ly index 4dcaf783c2..4dcaf783c2 100644 --- a/init/dynamic.ini +++ b/init/dynamic.ly diff --git a/init/english.ini b/init/english.ly index d876d29c6f..d876d29c6f 100644 --- a/init/english.ini +++ b/init/english.ly diff --git a/init/engraver.ini b/init/engraver.ly index 4d73ecf419..4d73ecf419 100644 --- a/init/engraver.ini +++ b/init/engraver.ly diff --git a/init/midi.ini b/init/midi.ly index 29f4c2d9da..f10856a128 100644 --- a/init/midi.ini +++ b/init/midi.ly @@ -1,5 +1,5 @@ default_midi = \midi { \tempo 4:60; - \include "performer.ini" + \include "performer.ly" } diff --git a/init/paper16.ini b/init/paper16.ly index c99b858d2c..fd19f6e03e 100644 --- a/init/paper16.ini +++ b/init/paper16.ly @@ -1,6 +1,6 @@ -\include "table16.ini" -\include "engraver.ini" +\include "table16.ly" +\include "engraver.ly" default_paper = \paper { linewidth = 15.0 \cm; @@ -10,6 +10,7 @@ default_paper = \paper { notewidth = 5.0\pt; wholewidth = 4.8\pt; unitspace = 30.\pt; + basicspace = 5.0\pt; % interbeam = 2.667\pt; diff --git a/init/performer.ini b/init/performer.ly index fa184d11e7..fa184d11e7 100644 --- a/init/performer.ini +++ b/init/performer.ly diff --git a/init/script.ini b/init/script.ly index 52395bf7ae..6a1c283df0 100644 --- a/init/script.ini +++ b/init/script.ly @@ -38,7 +38,7 @@ rftoe = \script { "ftoe" 0 0 1 0 0 } % back front back front % % -% heu, me thought for a moment that order in table_xxx.ini was +% heu, me thought for a moment that order in table_xxx.ly was % being translated into priority... back = \script { "back" 0 -1 -1 0 0 } front = \script { "front" 0 -1 1 0 0 } diff --git a/init/swedish.ini b/init/swedish.ly index 22f16645e0..22f16645e0 100644 --- a/init/swedish.ini +++ b/init/swedish.ly diff --git a/init/symbol.ini b/init/symbol.ini deleted file mode 100644 index d3f1d1bc29..0000000000 --- a/init/symbol.ini +++ /dev/null @@ -1,15 +0,0 @@ -\version "0.1.0"; - -\include "dynamic.ini" -\include "dutch.ini" -\include "script.ini" -\include "paper16.ini" - -% ugh -\include "midi.ini" - -left = -1 -right = 1 -up = 1 -down = -1 - diff --git a/init/symbol.ly b/init/symbol.ly new file mode 100644 index 0000000000..62baead466 --- /dev/null +++ b/init/symbol.ly @@ -0,0 +1,15 @@ +\version "0.1.0"; + +\include "dynamic.ly" +\include "dutch.ly" +\include "script.ly" +\include "paper16.ly" + +% ugh +\include "midi.ly" + +left = -1 +right = 1 +up = 1 +down = -1 + diff --git a/init/table16.ini b/init/table16.ly index c64b5fc399..c64b5fc399 100644 --- a/init/table16.ini +++ b/init/table16.ly diff --git a/init/table_twenty.ini b/init/table_twenty.ly index e4a5f78001..e4a5f78001 100644 --- a/init/table_twenty.ini +++ b/init/table_twenty.ly diff --git a/input/scsii-menuetto.ly b/input/scsii-menuetto.ly index a8a7b2c236..64e7a17ae0 100644 --- a/input/scsii-menuetto.ly +++ b/input/scsii-menuetto.ly @@ -101,9 +101,8 @@ IImenuetto = \melodic{ } \score{ - % huh? how to set id_str \melodic{ - \id "Staff" "Cello"; \IImenuetto + \id "Staff" "cello"; \IImenuetto } \paper{ unitspace= 9.0\mm ;% to get lily to use only three lines diff --git a/input/standchen.ly b/input/standchen.ly index 4f36f53182..34faff618c 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -466,8 +466,10 @@ tekstII = \lyric{ \score{ < - { \id "Lyric" "1"; \tekstI } % ugh - { \id "Lyric" "2"; \tekstII } + < \id "Lyric" "1"; + \tekstI + \tekstII + > < \id "Piano" ""; \multi 2; \melodic < \melodie \commands > diff --git a/input/twinkle.ly b/input/twinkle.ly index aae1ded22a..4835e7783a 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -114,9 +114,9 @@ textiii = \lyric{ } \score{ - < \multi 3; + < \melodic < - \id "Piano" "";\multi 3; + \id "Piano" "";\multi 2; < \global \melody > < \global @@ -124,9 +124,12 @@ textiii = \lyric{ > % ugh - \lyric < \id "Lyric" "1"; \global \tekst \hegedraagjetekst > -% \lyric < \id "Lyric" "2"; \global \texte > -% \lyric < \id "Lyric" "3"; \global \texti \textii \textiii > + \lyric < \id "Lyric" "1"; + \global \tekst \hegedraagjetekst > + \lyric < \id "Lyric" "2"; \global + \texte > + \lyric < \id "Lyric" "3"; \global + \texti \textii \textiii > > \paper{ diff --git a/input/wohltemperirt.ly b/input/wohltemperirt.ly index 08101712ad..5fa5b63007 100644 --- a/input/wohltemperirt.ly +++ b/input/wohltemperirt.ly @@ -175,7 +175,7 @@ bassdux = \paper{ % unitspace = 40.0\pt; geometric = 1.6; - geometric= 1.4; unitspace= 34.\pt; +% geometric= 1.4; unitspace= 34.\pt; } \midi { \tempo 4:84; diff --git a/lib/includable-lexer.cc b/lib/includable-lexer.cc index 792cbc46ae..6b4348d5f2 100644 --- a/lib/includable-lexer.cc +++ b/lib/includable-lexer.cc @@ -9,6 +9,10 @@ #include "source-file.hh" #include "source.hh" +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + Includable_lexer::Includable_lexer() { yy_current_buffer = 0; @@ -32,8 +36,17 @@ Includable_lexer::new_input(String s, Sources * global_sources) cout << "[" << s<<flush; include_stack_.push(sl); - // ugh. We'd want to create a buffer from the bytes directly. - yy_switch_to_buffer(yy_create_buffer( sl->istream_l(), sl->length_off() )); + /* + ugh. We'd want to create a buffer from the bytes directly. + + Whoops. The size argument to yy_create_buffer is not the + filelength but a BUFFERSIZE. Maybe this is why reading stdin fucks up. + + Maybe this is also the reason why LilyPond sometimes crashed + mysteriously in yy_create_buffer() with a libc-malloc error + + */ + yy_switch_to_buffer(yy_create_buffer( sl->istream_l(), YY_BUF_SIZE )); } /** pop the inputstack. conceptually this is a destructor, but it diff --git a/lily/.version b/lily/.version index 4f4f02184e..98ec990eb1 100644 --- a/lily/.version +++ b/lily/.version @@ -1,6 +1,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 0 -PATCH_LEVEL = 76 +PATCH_LEVEL = 77 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/lily/Stable.make b/lily/Stable.make index fb03ccca1d..57ea2528d1 100644 --- a/lily/Stable.make +++ b/lily/Stable.make @@ -4,7 +4,9 @@ stablecc=atom.cc command-request.cc musical-request.cc bar.cc boxes.cc \ keyword.cc leastsquares.cc \ lookup.cc meter.cc\ - parser.cc lexer.cc qlp.cc qlpsolve.cc\ + parser.cc \ +# lexer.cc \ + qlp.cc qlpsolve.cc\ template1.cc template2.cc template3.cc template4.cc\ template5.cc template6.cc version.cc tex-stream.cc tex.cc\ identifier.cc note.cc diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc index 8bcfd80ce7..3362ce0024 100644 --- a/lily/bar-grav.cc +++ b/lily/bar-grav.cc @@ -67,7 +67,7 @@ Bar_engraver::do_post_move_processing() bar_p_ =0; } -IMPLEMENT_STATIC_NAME(Bar_engraver); + IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver); ADD_THIS_ENGRAVER(Bar_engraver); diff --git a/lily/bar.cc b/lily/bar.cc index b4364e6cd5..b45d977b26 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -20,7 +20,7 @@ Bar::Bar() } -IMPLEMENT_STATIC_NAME(Bar); + IMPLEMENT_IS_TYPE_B1(Bar,Item); void diff --git a/lily/beam.cc b/lily/beam.cc index d09eb627f1..9079d277ba 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -370,7 +370,7 @@ Beam::brew_molecule_p() const return mol_p; } -IMPLEMENT_STATIC_NAME(Beam); + IMPLEMENT_IS_TYPE_B1(Beam, Spanner); void diff --git a/lily/bow.cc b/lily/bow.cc index de9269b2e4..46707624af 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -55,5 +55,5 @@ Bow::brew_molecule_p() const return output; } -IMPLEMENT_STATIC_NAME(Bow); + IMPLEMENT_IS_TYPE_B1(Bow,Directional_spanner); diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index 14ff34118b..d3c9e5df79 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -15,5 +15,5 @@ Break_align_item::do_pre_processing() align_i_ = break_status_i(); Horizontal_align_item::do_pre_processing(); } -IMPLEMENT_STATIC_NAME(Break_align_item); + IMPLEMENT_IS_TYPE_B1(Break_align_item, Horizontal_align_item); diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc index 5f7ad85a8c..e7126456e2 100644 --- a/lily/clef-grav.cc +++ b/lily/clef-grav.cc @@ -123,6 +123,6 @@ Clef_engraver::do_removal_processing() clef_p_ =0; } -IMPLEMENT_STATIC_NAME(Clef_engraver); + IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver); ADD_THIS_ENGRAVER(Clef_engraver); diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 7e399f37c3..15cc5687b2 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -63,5 +63,5 @@ Clef_item::brew_molecule_p()const return output; } -IMPLEMENT_STATIC_NAME(Clef_item); + IMPLEMENT_IS_TYPE_B1(Clef_item,Item); diff --git a/lily/collision-grav.cc b/lily/collision-grav.cc index 1cb0295a8b..2a4903d105 100644 --- a/lily/collision-grav.cc +++ b/lily/collision-grav.cc @@ -35,6 +35,6 @@ Collision_engraver::Collision_engraver() col_p_ =0; } -IMPLEMENT_STATIC_NAME(Collision_engraver); + IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver); ADD_THIS_ENGRAVER(Collision_engraver); diff --git a/lily/collision.cc b/lily/collision.cc index 7ba6c4c601..f9a15bc4fa 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -140,7 +140,7 @@ Collision::do_pre_processing() } } -IMPLEMENT_STATIC_NAME(Collision); + IMPLEMENT_IS_TYPE_B1(Collision, Item); void diff --git a/lily/command-request.cc b/lily/command-request.cc index a9539e28f7..0d44ccbd35 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -13,10 +13,10 @@ void Command_script_req::do_print() const {} -IMPLEMENT_STATIC_NAME(Command_script_req); + IMPLEMENT_IS_TYPE_B1(Command_script_req,Command_req); -IMPLEMENT_STATIC_NAME(Cadenza_req); + IMPLEMENT_IS_TYPE_B1(Cadenza_req, Timing_req); void @@ -38,7 +38,7 @@ Bar_req::compare(Bar_req const &c1)const return type_str_ == c1.type_str_; } -IMPLEMENT_STATIC_NAME(Bar_req); + IMPLEMENT_IS_TYPE_B1(Bar_req,Command_req); void @@ -58,33 +58,33 @@ Partial_measure_req::Partial_measure_req(Moment m) } /* *************** */ -IMPLEMENT_STATIC_NAME(Timing_req); + IMPLEMENT_IS_TYPE_B1(Timing_req,Command_req); void Timing_req::do_print()const{} -IMPLEMENT_STATIC_NAME(Command_req); + IMPLEMENT_IS_TYPE_B1(Command_req,Request); void Command_req::do_print()const{} IMPLEMENT_IS_TYPE_B1(Disallow_break_req,Command_req); -IMPLEMENT_STATIC_NAME(Disallow_break_req); + void Disallow_break_req::do_print()const { } /* *************** */ -IMPLEMENT_STATIC_NAME(Barcheck_req); + IMPLEMENT_IS_TYPE_B1(Barcheck_req,Timing_req); void Barcheck_req::do_print() const{} /* *************** */ -IMPLEMENT_STATIC_NAME(Clef_change_req); + IMPLEMENT_IS_TYPE_B1(Clef_change_req,Command_req); void @@ -100,7 +100,7 @@ Clef_change_req::Clef_change_req(String s) clef_str_ = s; } /* *************** */ -IMPLEMENT_STATIC_NAME(Group_feature_req); + IMPLEMENT_IS_TYPE_B1(Group_feature_req,Command_req); void @@ -113,7 +113,7 @@ Group_feature_req::do_print() const /* *************** */ -IMPLEMENT_STATIC_NAME(Partial_measure_req); + IMPLEMENT_IS_TYPE_B1(Partial_measure_req,Timing_req); void @@ -122,7 +122,7 @@ Partial_measure_req::do_print() const mtor << duration_; } -IMPLEMENT_STATIC_NAME(Meter_change_req); + IMPLEMENT_IS_TYPE_B1(Meter_change_req,Timing_req); void @@ -152,7 +152,7 @@ Meter_change_req::set(int b,int o) /* *************** */ -IMPLEMENT_STATIC_NAME(Measure_grouping_req); + IMPLEMENT_IS_TYPE_B1(Measure_grouping_req,Timing_req); void @@ -173,7 +173,7 @@ Key_change_req::transpose(Melodic_req const & d)const } } -IMPLEMENT_STATIC_NAME(Key_change_req); + IMPLEMENT_IS_TYPE_B1(Key_change_req,Command_req); void Key_change_req::squash_octaves() diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 1b25d8439f..8de7d68759 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -64,5 +64,5 @@ Crescendo::brew_molecule_p() const return m_p; } -IMPLEMENT_STATIC_NAME(Crescendo); + IMPLEMENT_IS_TYPE_B1(Crescendo,Spanner); diff --git a/lily/debug.cc b/lily/debug.cc index 3d046bd414..4b95a38519 100644 --- a/lily/debug.cc +++ b/lily/debug.cc @@ -1,6 +1,6 @@ #include <fstream.h> #include <signal.h> -#include <std/new.h> +#include <new.h> #include <stdlib.h> #include "debug.hh" #include "dstream.hh" diff --git a/lily/dynamic-grav.cc b/lily/dynamic-grav.cc index 09673c240d..8f99590581 100644 --- a/lily/dynamic-grav.cc +++ b/lily/dynamic-grav.cc @@ -116,7 +116,7 @@ Dynamic_engraver::set_feature(Feature i) dir_i_ = i.value_; } -IMPLEMENT_STATIC_NAME(Dynamic_engraver); + IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Engraver); ADD_THIS_ENGRAVER(Dynamic_engraver); diff --git a/lily/elem-group-item.cc b/lily/elem-group-item.cc index 2c174c6379..c1903ffcd0 100644 --- a/lily/elem-group-item.cc +++ b/lily/elem-group-item.cc @@ -14,8 +14,8 @@ Horizontal_vertical_group_item::do_print()const { Horizontal_vertical_group::do_print(); } -IMPLEMENT_STATIC_NAME(Horizontal_vertical_group_item); + IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_item,Horizontal_vertical_group,Item); IMPLEMENT_IS_TYPE_B2(Horizontal_group_item, Horizontal_group, Item); -IMPLEMENT_STATIC_NAME(Horizontal_group_item); + diff --git a/lily/elem-group.cc b/lily/elem-group.cc index 1bf661a271..e60570ed66 100644 --- a/lily/elem-group.cc +++ b/lily/elem-group.cc @@ -36,10 +36,10 @@ Horizontal_group::do_width()const return r; } -IMPLEMENT_STATIC_NAME(Horizontal_group); + IMPLEMENT_IS_TYPE_B1(Horizontal_group, Elbement_group); IMPLEMENT_IS_TYPE_B1(Vertical_group, Elbement_group); -IMPLEMENT_STATIC_NAME(Vertical_group); + void Elbement_group::add_element(Score_elem*i_l) @@ -80,7 +80,7 @@ Vertical_group::translate_y(Real y) elem_l_arr_[i]->translate_y(y); } -IMPLEMENT_STATIC_NAME(Elbement_group); + IMPLEMENT_IS_TYPE_B1(Elbement_group, Score_elem); void @@ -148,7 +148,7 @@ Elbement_group::Elbement_group() } IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group, Horizontal_group, Vertical_group); -IMPLEMENT_STATIC_NAME(Horizontal_vertical_group); + Horizontal_vertical_group::Horizontal_vertical_group() { diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index 224a86ac4f..50a3c60568 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -121,7 +121,7 @@ Engraver_group_engraver::do_try_request(Request*req_l) bool hebbes_b =false; for (int i =0; !hebbes_b && i < nongroup_l_arr_.size() ; i++) hebbes_b =nongroup_l_arr_[i]->try_request(req_l); - if (!hebbes_b) + if (!hebbes_b && daddy_grav_l_) hebbes_b = daddy_grav_l_->try_request(req_l); return hebbes_b ; } @@ -167,7 +167,7 @@ Engraver_group_engraver::terminate_engraver(Engraver*r_l) } IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator); -IMPLEMENT_STATIC_NAME(Engraver_group_engraver); + ADD_THIS_ENGRAVER(Engraver_group_engraver); void diff --git a/lily/engraver.cc b/lily/engraver.cc index 54518e6daf..4dea919eca 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -125,7 +125,7 @@ Engraver::print() const #endif } -IMPLEMENT_STATIC_NAME(Engraver); + IMPLEMENT_IS_TYPE_B(Engraver); void diff --git a/lily/general-script-def.cc b/lily/general-script-def.cc index 688e9cdd36..9bf570e5b8 100644 --- a/lily/general-script-def.cc +++ b/lily/general-script-def.cc @@ -67,5 +67,5 @@ General_script_def::get_atom(Paper_def*, int)const Symbol s; return Atom(s); } -IMPLEMENT_STATIC_NAME(General_script_def); + IMPLEMENT_IS_TYPE_B(General_script_def); diff --git a/lily/global-translator.cc b/lily/global-translator.cc index d53bc4eb6d..78fa0a0ff7 100644 --- a/lily/global-translator.cc +++ b/lily/global-translator.cc @@ -68,5 +68,5 @@ Global_translator::prepare(Moment) { } -IMPLEMENT_STATIC_NAME(Global_translator); + IMPLEMENT_IS_TYPE_B1(Global_translator, Translator); diff --git a/lily/head-column.cc b/lily/head-column.cc index 4a50701e63..d08519a891 100644 --- a/lily/head-column.cc +++ b/lily/head-column.cc @@ -47,7 +47,7 @@ Head_column::add(Note_head *n_l) } -IMPLEMENT_STATIC_NAME(Head_column); + IMPLEMENT_IS_TYPE_B1(Head_column,Script_column); void diff --git a/lily/head-grav.cc b/lily/head-grav.cc index f3bca51721..952f6d8670 100644 --- a/lily/head-grav.cc +++ b/lily/head-grav.cc @@ -64,6 +64,6 @@ Note_head_engraver::do_post_move_processing() note_req_l_ = 0; } -IMPLEMENT_STATIC_NAME(Note_head_engraver); + IMPLEMENT_IS_TYPE_B1(Note_head_engraver,Engraver); ADD_THIS_ENGRAVER(Note_head_engraver); diff --git a/lily/horizontal-align-item.cc b/lily/horizontal-align-item.cc index 46e2b67ee2..972b52f8e0 100644 --- a/lily/horizontal-align-item.cc +++ b/lily/horizontal-align-item.cc @@ -8,7 +8,7 @@ #include "horizontal-align-item.hh" -IMPLEMENT_STATIC_NAME(Horizontal_align_item); + IMPLEMENT_IS_TYPE_B1(Horizontal_align_item,Item); diff --git a/lily/identifier.cc b/lily/identifier.cc index 4eda207ca7..bbeea7ef78 100644 --- a/lily/identifier.cc +++ b/lily/identifier.cc @@ -20,7 +20,7 @@ #include "request.hh" #include "input-translator.hh" -IMPLEMENT_STATIC_NAME(Identifier); + IMPLEMENT_IS_TYPE_B(Identifier); Identifier::~Identifier() @@ -106,7 +106,6 @@ Idclass::accessor(bool copy) {\ #define implement_id_class(Idclass, Class, accessor) \ -IMPLEMENT_STATIC_NAME(Idclass)\ IMPLEMENT_IS_TYPE_B1(Idclass,Identifier)\ Idclass::~Idclass() { delete accessor(false); }\ Idclass::Idclass(String s, Class*st, int code):Identifier(s,code) { data = st; }\ diff --git a/lily/include/key-performer.hh b/lily/include/key-performer.hh index b2612147f0..a14c19cc56 100644 --- a/lily/include/key-performer.hh +++ b/lily/include/key-performer.hh @@ -20,7 +20,7 @@ public: protected: void do_print() const; - virtual bool try_request( Request* req_l ); + virtual bool do_try_request( Request* req_l ); virtual void process_requests(); private: diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 01c5731854..8760b560b1 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -192,7 +192,7 @@ struct Vertical_align_spanner; struct Vertical_align_engraver; struct Vertical_align_element; struct Voice; -struct Voice_element; +struct Request_chord; struct Voice_group_engravers; struct Voice_group_performer; struct Voice_list; diff --git a/lily/include/staff-gravs.hh b/lily/include/line-group-grav.hh index a51ffe4795..bb43f6d2d9 100644 --- a/lily/include/staff-gravs.hh +++ b/lily/include/line-group-grav.hh @@ -1,5 +1,5 @@ /* - staff-gravs.hh -- declare Line_group_engraver + line-group-grav.hh -- declare source file of the GNU LilyPond music typesetter @@ -7,17 +7,16 @@ */ -#ifndef STAFF_GRAVS_HH -#define STAFF_GRAVS_HH +#ifndef LINE_GROUP_GRAV_HH +#define LINE_GROUP_GRAV_HH -#include "engraver-group.hh" +#include "engraver.hh" /** - Engravers which manage a Staff (one 5-line linestaff) + Engravers put elements on the same or lowel level in a line */ class Line_group_engraver : public Engraver{ Line_of_staff *staffline_p_; - Link_array<Score_elem> staff_elem_l_arr_; protected: virtual void do_creation_processing(); @@ -29,4 +28,6 @@ public: Line_group_engraver(); }; -#endif // STAFF_GRAVS_HH + +#endif // LINE_GROUP_GRAV_HH + diff --git a/lily/include/lyric-performer.hh b/lily/include/lyric-performer.hh index e9bd22a2ee..cd07a96fde 100644 --- a/lily/include/lyric-performer.hh +++ b/lily/include/lyric-performer.hh @@ -22,7 +22,7 @@ public: protected: void do_print() const; - virtual bool try_request( Request* req_l ); + virtual bool do_try_request( Request* req_l ); virtual void process_requests(); private: diff --git a/lily/include/meter-performer.hh b/lily/include/meter-performer.hh index 13cbec5bd0..e72451d5b8 100644 --- a/lily/include/meter-performer.hh +++ b/lily/include/meter-performer.hh @@ -20,7 +20,7 @@ public: protected: void do_print() const; - virtual bool try_request( Request* req_l ); + virtual bool do_try_request( Request* req_l ); virtual void process_requests(); private: diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh index 2467318e46..b8e1a6b8b4 100644 --- a/lily/include/midi-item.hh +++ b/lily/include/midi-item.hh @@ -9,57 +9,57 @@ #include "lily-proto.hh" struct Midi_item { - /* *************** */ static String i2varint_str( int i ); virtual void output_midi( Midi_stream& midi_stream_r ) const; virtual String str() const = 0; + NAME_MEMBERS(); }; struct Midi_key : public Midi_item { - Midi_key( int accidentals_i, int minor_i ); - - virtual String str() const; + Midi_key( int accidentals_i, int minor_i ); - int accidentals_i_; - int minor_i_; + virtual String str() const; + NAME_MEMBERS(); + /* *************** */ + int accidentals_i_; + int minor_i_; }; struct Midi_note : public Midi_item { - /* *************** */ - int const c0_pitch_i_c_ = 60; - Byte dynamic_byte_; - /** Generate a note-event on a channel pitch. @param #melreq_l# is the pitch. */ Midi_note( Melodic_req* melreq_l, int channel_i, bool on_b ); - + NAME_MEMBERS(); virtual String str() const; + /* *************** */ + int const c0_pitch_i_c_ = 60; + Byte dynamic_byte_; + int channel_i_; int on_b_; int pitch_i_; }; struct Midi_duration : public Midi_item { - /* *************** */ Midi_duration( Real seconds_f ); virtual String str() const; - + NAME_MEMBERS(); + /* *************** */ Real seconds_f_; }; struct Midi_chunk : Midi_item { - /* *************** */ Midi_chunk(); void add( String str ); void set( String header_str, String data_str, String footer_str ); virtual String str() const; - + NAME_MEMBERS(); private: String data_str_; String footer_str_; @@ -69,46 +69,52 @@ private: struct Midi_header : Midi_chunk { /* *************** */ Midi_header( int format_i, int tracks_i, int clocks_per_4_i ); + NAME_MEMBERS(); }; struct Midi_text : Midi_item { + + enum Type { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + MARKER, CUE_POINT + }; + Midi_text( Midi_text::Type type, String text_str ); + NAME_MEMBERS(); + virtual String str() const; /* *************** */ - enum Type { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; - Midi_text( Midi_text::Type type, String text_str ); - - virtual String str() const; - - Type type_; - String text_str_; + Type type_; + String text_str_; + }; struct Midi_tempo : Midi_item { - /* *************** */ Midi_tempo( int per_minute_4_i ); + NAME_MEMBERS(); virtual String str() const; + /* *************** */ int per_minute_4_i_; }; struct Midi_time : Midi_item { - /* *************** */ + Midi_time( int num_i, int den_i, int clocks_per_1_i ); + NAME_MEMBERS(); virtual String str() const; + /* *************** */ int num_i_; int den_i_; int clocks_per_1_i_; }; struct Midi_track : Midi_chunk { - /* *************** */ int number_i_; - Midi_track( int number_i ); + /* *************** */ + Midi_track( ); + NAME_MEMBERS(); void add( int delta_time_i, String event ); // void add( Moment delta_time_moment, Midi_item& mitem_r ); diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index 143587be88..93d21e5c2a 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -69,12 +69,12 @@ protected: virtual bool ok()const; }; -class Voice_element_iterator : public Music_iterator { - const Voice_element * elt_l_; +class Request_chord_iterator : public Music_iterator { + const Request_chord * elt_l_; Moment elt_duration_; bool last_b_; public: - Voice_element_iterator(Voice_element*); + Request_chord_iterator(Request_chord*); NAME_MEMBERS(); protected: diff --git a/lily/include/music-list.hh b/lily/include/music-list.hh index 6ea2ae0f47..ad745eff28 100644 --- a/lily/include/music-list.hh +++ b/lily/include/music-list.hh @@ -53,11 +53,11 @@ public: virtual MInterval time_int()const; }; -class Voice_element : public Chord { +class Request_chord : public Chord { public: NAME_MEMBERS(); - Voice_element(); - VIRTUAL_COPY_CONS(Voice_element,Music); + Request_chord(); + VIRTUAL_COPY_CONS(Request_chord,Music); }; /** diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index 08cce94c9a..782541d689 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -16,7 +16,7 @@ /** - A request which is coupled to a #Voice_element# + A request which is coupled to a #Request_chord# Base class only */ class Musical_req : public virtual Request { diff --git a/lily/include/note-performer.hh b/lily/include/note-performer.hh index 0105fc4b35..cae7505685 100644 --- a/lily/include/note-performer.hh +++ b/lily/include/note-performer.hh @@ -20,25 +20,15 @@ public: Note_performer(); ~Note_performer(); +protected: virtual void process_requests(); - virtual bool /*do_*/try_request( Request *req_l ) ; -protected: + virtual bool do_try_request( Request *req_l ) ; virtual void do_print() const; -#if 0 - virtual void /*do_*/process_requests(); - virtual void /*do_*/pre_move_processing(); - virtual void /*do_*/post_move_processing(); -#endif - private: Melodic_req * note_req_l_; -// Rhythmic_req * note_req_l_; - -// Melodic_req* current_l_; Moment off_mom_; -// Moment on_mom_; }; #endif // NOTE_PERFORMER_HH diff --git a/lily/include/performer-group-performer.hh b/lily/include/performer-group-performer.hh index aeba3222fe..b3a1239d5a 100644 --- a/lily/include/performer-group-performer.hh +++ b/lily/include/performer-group-performer.hh @@ -26,11 +26,13 @@ public: Performer_group_performer(); ~Performer_group_performer(); - bool is_bottom_performer_b() const; - virtual Performer_group_performer* find_performer_l( String name, String id ); - virtual void add( Performer* perf_p ); - virtual bool try_request( Request* req_l ); + virtual void print()const { Performer::print() ; } + virtual Moment get_mom() const; + virtual bool do_try_request( Request* req_l ); + virtual bool try_request(Request*r) { return Performer::try_request(r) ; } + +protected: virtual Translator* find_get_translator_l( String name, String id ); virtual Translator* get_default_interpreter(); @@ -38,12 +40,14 @@ public: Translator * ancestor_l( int l = 1 ); virtual int depth_i() const; - virtual Moment get_mom() const; - - virtual void midi_output( Midi_stream* midi_stream_l ); virtual void process_requests(); - virtual void set_track( Midi_def* midi_l, int& track_i_r ); + virtual void do_removal_processing(); + virtual void do_creation_processing(); + bool is_bottom_performer_b() const; + virtual Performer_group_performer* find_performer_l( String name, String id ); + + virtual void do_print()const; private: Pointer_list<Performer*> perf_p_list_; diff --git a/lily/include/performer.hh b/lily/include/performer.hh index 4c6a8e2ec6..55a2660c43 100644 --- a/lily/include/performer.hh +++ b/lily/include/performer.hh @@ -15,6 +15,7 @@ #include "staff-info.hh" class Performer { + bool init_b_; public: NAME_MEMBERS(); Performer_group_performer* daddy_perf_l_; @@ -22,19 +23,24 @@ public: Performer(); virtual ~Performer(); - virtual void midi_output( Midi_stream* midi_stream_l_ ); + void print() const; virtual void process_requests(); virtual void set( Moment mom ); - virtual void set_track( Midi_def* midi_l, int& track_i_r ); - virtual bool try_request( Request* req_l ); + virtual void do_removal_processing(); + void creation_processing(); protected: + virtual void do_creation_processing(); + + virtual bool do_try_request(Request*); + virtual int get_tempo_i() const; virtual void do_print() const; virtual Moment get_mom() const; virtual void play_event( Midi_item* l ); + }; #include "global-performers.hh" diff --git a/lily/include/request.hh b/lily/include/request.hh index 62d5e73e8c..f130120cf6 100644 --- a/lily/include/request.hh +++ b/lily/include/request.hh @@ -24,7 +24,6 @@ class Request : public Music { public: - Voice * voice_l(); /* *************** */ @@ -33,7 +32,6 @@ public: NAME_MEMBERS(); VIRTUAL_COPY_CONS(Request,Music); - void print()const ; virtual MInterval time_int() const; virtual void transpose(Melodic_req const &){} virtual Moment duration() const { return 0; } diff --git a/lily/include/score-elem-info.hh b/lily/include/score-elem-info.hh index 6b97718562..05c1413ddf 100644 --- a/lily/include/score-elem-info.hh +++ b/lily/include/score-elem-info.hh @@ -18,7 +18,6 @@ struct Score_elem_info { Score_elem * elem_l_; Request*req_l_; - Voice const * voice_l_; Array<Engraver*> origin_grav_l_arr_; /* *** */ diff --git a/lily/include/score-performer.hh b/lily/include/score-performer.hh index 8ab61fe2ed..769edecec7 100644 --- a/lily/include/score-performer.hh +++ b/lily/include/score-performer.hh @@ -29,14 +29,17 @@ protected: virtual void process(); virtual void set_score( Score* score_l ); virtual void start(); - + virtual int get_tempo_i() const; + virtual void play_event(Midi_item*); private: - void header(); + void header(Midi_stream&); Midi_def* midi_l_; - Midi_stream* midi_stream_p_; + Moment prev_mom_; Moment now_mom_; + + Link_array<Midi_item> midi_item_p_arr_; }; #endif // SCORE_PERFORMER_HH diff --git a/lily/include/spring-spacer.hh b/lily/include/spring-spacer.hh index 2b540085f2..55864615a2 100644 --- a/lily/include/spring-spacer.hh +++ b/lily/include/spring-spacer.hh @@ -93,6 +93,7 @@ public: virtual void OK() const; virtual void print() const; virtual void prepare(); + virtual ~Spring_spacer(){} }; #endif // SPRING_SPACER_HH diff --git a/lily/include/staff-performer.hh b/lily/include/staff-performer.hh index 32f6572f34..f85c501915 100644 --- a/lily/include/staff-performer.hh +++ b/lily/include/staff-performer.hh @@ -21,16 +21,14 @@ public: String instrument_str(); protected: - virtual void midi_output( Midi_stream* midi_stream_l_ ); virtual void play_event( Midi_item* l ); - virtual void set_track( Midi_def* midi_l, int& track_i_r ); + virtual void do_removal_processing(); + virtual void do_creation_processing(); private: void header(); - Midi_def* midi_l_; Moment midi_mom_; - int track_i_; Midi_track* midi_track_p_; }; diff --git a/lily/include/swallow-perf.hh b/lily/include/swallow-perf.hh index 7c6ec8d4ae..eec24e9643 100644 --- a/lily/include/swallow-perf.hh +++ b/lily/include/swallow-perf.hh @@ -15,7 +15,8 @@ class Swallow_performer : public Performer { public: NAME_MEMBERS(); - virtual bool try_request (Request* ) { return true; } +protected: + virtual bool do_try_request (Request* ) { return true; } }; #endif // SWALLOW_PERF_HH diff --git a/lily/input-translator.cc b/lily/input-translator.cc index 1a652794a8..748f516bd5 100644 --- a/lily/input-translator.cc +++ b/lily/input-translator.cc @@ -6,7 +6,6 @@ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> */ -//#include "translator-admin.hh" #include "debug.hh" #include "engraver.hh" #include "input-translator.hh" diff --git a/lily/item.cc b/lily/item.cc index ab0290db9f..7919a3ec35 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -18,7 +18,7 @@ Item::Item() = broken_to_a_[1]=0; } -IMPLEMENT_STATIC_NAME(Item); + IMPLEMENT_IS_TYPE_B1(Item, Score_elem); void diff --git a/lily/key-grav.cc b/lily/key-grav.cc index ba07441885..84288bd101 100644 --- a/lily/key-grav.cc +++ b/lily/key-grav.cc @@ -111,6 +111,6 @@ Key_engraver::do_post_move_processing() default_key_b_ = false; } -IMPLEMENT_STATIC_NAME(Key_engraver); + IMPLEMENT_IS_TYPE_B1(Key_engraver,Engraver); ADD_THIS_ENGRAVER(Key_engraver); diff --git a/lily/key-item.cc b/lily/key-item.cc index ae15a95324..aa8401e005 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -71,7 +71,7 @@ Key_item::brew_molecule_p()const } return output; } -IMPLEMENT_STATIC_NAME(Key_item); + IMPLEMENT_IS_TYPE_B1(Key_item,Item); void diff --git a/lily/key-performer.cc b/lily/key-performer.cc index 0ed1f33afa..5e620ff7c9 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -11,7 +11,7 @@ #include "midi-item.hh" -IMPLEMENT_STATIC_NAME(Key_performer); + IMPLEMENT_IS_TYPE_B1(Key_performer,Performer); ADD_THIS_PERFORMER(Key_performer); @@ -49,7 +49,7 @@ Key_performer::process_requests() } bool -Key_performer::try_request( Request* req_l ) +Key_performer::do_try_request( Request* req_l ) { if ( key_req_l_ ) return false; diff --git a/lily/staff-gravs.cc b/lily/line-group-grav.cc index 55c148f471..843fa5b551 100644 --- a/lily/staff-gravs.cc +++ b/lily/line-group-grav.cc @@ -7,7 +7,7 @@ */ #include "staff-sym.hh" -#include "staff-gravs.hh" +#include "line-group-grav.hh" #include "command-request.hh" #include "bar.hh" #include "debug.hh" @@ -45,7 +45,7 @@ Line_group_engraver::do_creation_processing() } -IMPLEMENT_STATIC_NAME(Line_group_engraver); + IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver); ADD_THIS_ENGRAVER(Line_group_engraver); diff --git a/lily/local-key-grav.cc b/lily/local-key-grav.cc index 4c10dc50b6..78fbae2992 100644 --- a/lily/local-key-grav.cc +++ b/lily/local-key-grav.cc @@ -103,6 +103,6 @@ Local_key_engraver::do_process_requests() } } -IMPLEMENT_STATIC_NAME(Local_key_engraver); + IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Engraver); ADD_THIS_ENGRAVER(Local_key_engraver); diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 439f24f9fe..50f870c1cf 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -104,7 +104,7 @@ Local_acc::compare(Local_acc&a, Local_acc&b) return a.accidental_i_ - b.accidental_i_; }; -IMPLEMENT_STATIC_NAME(Local_key_item); + IMPLEMENT_IS_TYPE_B1(Local_key_item,Item); void diff --git a/lily/lyric-grav.cc b/lily/lyric-grav.cc index 08c81723a0..0ba2ae4896 100644 --- a/lily/lyric-grav.cc +++ b/lily/lyric-grav.cc @@ -55,6 +55,6 @@ Lyric_engraver::do_pre_move_processing() } } -IMPLEMENT_STATIC_NAME(Lyric_engraver); + IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Engraver); ADD_THIS_ENGRAVER(Lyric_engraver); diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc index 81014b9d5d..e623e5881c 100644 --- a/lily/lyric-performer.cc +++ b/lily/lyric-performer.cc @@ -12,7 +12,7 @@ #include "midi-item.hh" -IMPLEMENT_STATIC_NAME(Lyric_performer); + IMPLEMENT_IS_TYPE_B1(Lyric_performer,Performer); ADD_THIS_PERFORMER(Lyric_performer); @@ -45,7 +45,7 @@ Lyric_performer::process_requests() } bool -Lyric_performer::try_request( Request* req_l ) +Lyric_performer::do_try_request( Request* req_l ) { Musical_req* m_l = req_l->musical(); if ( !m_l || ! m_l->lreq_l() ) diff --git a/lily/main.cc b/lily/main.cc index 22f226d182..a87d9b2885 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -105,12 +105,14 @@ static File_path path; void do_one_file(String init_str, String file_str) { - if ( "" == path.find( init_str ) ) + if ( init_str != "" && "" == path.find( init_str ) ) { error ( "Can not find `" + init_str +"'"); - - if ( path.find( file_str ) == "" ) + return ; + } + if ( file_str!= "" && path.find( file_str ) == "" ) { error ( "Can not find `" + file_str + "'"); - + return ; + } Sources sources; source_l_g = &sources; @@ -142,7 +144,7 @@ main (int argc, char **argv) Getopt_long oparser(argc, argv,theopts); cout << get_version_str() << endl; - String init_str("symbol.ini"); + String init_str("symbol.ly"); while (Long_option_init * opt = oparser()) { switch ( opt->shortname){ diff --git a/lily/meter-grav.cc b/lily/meter-grav.cc index 28397bb198..3112f18556 100644 --- a/lily/meter-grav.cc +++ b/lily/meter-grav.cc @@ -121,6 +121,6 @@ Meter_engraver::do_post_move_processing() time_.add( get_staff_info().when() - time_.when_ ); } -IMPLEMENT_STATIC_NAME(Meter_engraver); + ADD_THIS_ENGRAVER(Meter_engraver); IMPLEMENT_IS_TYPE_B1(Meter_engraver,Engraver); diff --git a/lily/meter-performer.cc b/lily/meter-performer.cc index c04bf3bf56..ac5bb9f3b5 100644 --- a/lily/meter-performer.cc +++ b/lily/meter-performer.cc @@ -11,7 +11,7 @@ #include "midi-item.hh" -IMPLEMENT_STATIC_NAME(Meter_performer); + IMPLEMENT_IS_TYPE_B1(Meter_performer,Performer); ADD_THIS_PERFORMER(Meter_performer); @@ -44,7 +44,7 @@ Meter_performer::process_requests() } bool -Meter_performer::try_request( Request* req_l ) +Meter_performer::do_try_request( Request* req_l ) { if ( meter_req_l_ ) return false; diff --git a/lily/meter.cc b/lily/meter.cc index d56bc33869..e578cef5fe 100644 --- a/lily/meter.cc +++ b/lily/meter.cc @@ -16,6 +16,6 @@ Meter::brew_molecule_p()const return new Molecule(Atom(s)); } -IMPLEMENT_STATIC_NAME(Meter); + IMPLEMENT_IS_TYPE_B1(Meter,Item); diff --git a/lily/midi-def.cc b/lily/midi-def.cc index 5e76d11805..280b6304d1 100644 --- a/lily/midi-def.cc +++ b/lily/midi-def.cc @@ -1,10 +1,11 @@ -// -// midi-def.cc -- implement midi output -// -// source file of the GNU LilyPond music typesetter -// -// (c) 1997 Jan Nieuwenhuizen <jan@digicash.com> +/* + midi-def.cc -- implement Midi_def + source file of the GNU LilyPond music typesetter + + (c) 1997 Jan Nieuwenhuizen <jan@digicash.com> + +*/ #include <math.h> #include "misc.hh" #include "midi-def.hh" diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 404f06b5ca..2efb36aff1 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -1,9 +1,10 @@ -// -// midiitem.cc -// -// source file of the GNU LilyPond music typesetter -// -// (c) 1997 Jan Nieuwenhuizen <jan@digicash.com> +/* + midi-item.cc -- implement various midi items. + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> +*/ #include <limits.h> #include "proto.hh" @@ -19,6 +20,18 @@ #include "midi-item.hh" #include "midi-stream.hh" + +IMPLEMENT_IS_TYPE_B(Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_key,Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_note, Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_duration, Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_chunk, Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_header, Midi_chunk); +IMPLEMENT_IS_TYPE_B1(Midi_text, Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_tempo, Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_time, Midi_item); +IMPLEMENT_IS_TYPE_B1(Midi_track, Midi_chunk); + Midi_chunk::Midi_chunk() { } @@ -195,7 +208,7 @@ Midi_text::str() const return str; } -Midi_track::Midi_track( int number_i ) +Midi_track::Midi_track( ) { // 4D 54 72 6B MTrk // 00 00 00 3B chunk length (59) @@ -211,7 +224,7 @@ Midi_track::Midi_track( int number_i ) // mi = 0: major key // mi = 1: minor key - number_i_ = number_i; + number_i_ = 0; char const* data_ch_C = "" // "00" "ff58" "0404" "0218" "08" diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index b88271e158..bc6b717fda 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -12,7 +12,7 @@ #include "request.hh" #include "debug.hh" -IMPLEMENT_STATIC_NAME(Music_iterator); + IMPLEMENT_IS_TYPE_B(Music_iterator); Chord_iterator::~Chord_iterator(){} @@ -117,8 +117,8 @@ Music_iterator::static_get_iterator_p(Music *m, Music_iterator * p =0; if (m->is_type_b( Change_reg::static_name())) p = new Change_iterator((Change_reg*)m); - else if (m->is_type_b( Voice_element::static_name())) - p = new Voice_element_iterator( (Voice_element*) m); + else if (m->is_type_b( Request_chord::static_name())) + p = new Request_chord_iterator( (Request_chord*) m); else if (m->is_type_b( Chord::static_name())) p = new Chord_iterator( (Chord*) m); else if (m->is_type_b( Voice::static_name())) @@ -204,7 +204,7 @@ Chord_iterator::process_and_next(Moment until) // assert(!ok() || next_moment() > until); } -IMPLEMENT_STATIC_NAME(Chord_iterator); + IMPLEMENT_IS_TYPE_B1(Chord_iterator,Music_iterator); Moment @@ -266,7 +266,7 @@ Voice_iterator::~Voice_iterator() delete iter_p_; } -IMPLEMENT_STATIC_NAME(Voice_iterator); + IMPLEMENT_IS_TYPE_B1(Voice_iterator,Music_iterator); void @@ -309,7 +309,7 @@ Change_iterator::Change_iterator(Change_reg * ch) change_l_ = ch; } -IMPLEMENT_STATIC_NAME(Change_iterator); + IMPLEMENT_IS_TYPE_B1(Change_iterator,Music_iterator); /* @@ -336,16 +336,16 @@ Change_iterator::process_and_next(Moment mom) /* ******************** */ -IMPLEMENT_STATIC_NAME(Voice_element_iterator); -IMPLEMENT_IS_TYPE_B1(Voice_element_iterator,Music_iterator); + +IMPLEMENT_IS_TYPE_B1(Request_chord_iterator,Music_iterator); void -Voice_element_iterator::construct_children() +Request_chord_iterator::construct_children() { get_req_translator_l(); } -Voice_element_iterator::Voice_element_iterator(Voice_element*el_l) +Request_chord_iterator::Request_chord_iterator(Request_chord*el_l) { elt_l_ = el_l; elt_duration_ = el_l->time_int().length(); @@ -354,7 +354,7 @@ Voice_element_iterator::Voice_element_iterator(Voice_element*el_l) bool -Voice_element_iterator::ok()const +Request_chord_iterator::ok()const { return (elt_duration_ && !last_b_) || first_b_; } @@ -362,7 +362,7 @@ Voice_element_iterator::ok()const Moment -Voice_element_iterator::next_moment()const +Request_chord_iterator::next_moment()const { Moment m(0); if (!first_b_) @@ -371,14 +371,14 @@ Voice_element_iterator::next_moment()const } void -Voice_element_iterator::do_print() const +Request_chord_iterator::do_print() const { #ifndef NPRINT mtor << "duration: " << elt_duration_; #endif } void -Voice_element_iterator::process_and_next(Moment mom) +Request_chord_iterator::process_and_next(Moment mom) { if ( first_b_ ) { for (PCursor<Music*> i(elt_l_->music_p_list_); i.ok(); i++) { diff --git a/lily/music-list.cc b/lily/music-list.cc index 9008ddc27a..b169a74727 100644 --- a/lily/music-list.cc +++ b/lily/music-list.cc @@ -18,9 +18,9 @@ Music_list::Music_list(Music_list const&s) add(i->clone()); } -IMPLEMENT_STATIC_NAME(Music_list); -IMPLEMENT_STATIC_NAME(Chord); -IMPLEMENT_STATIC_NAME(Voice); + + + IMPLEMENT_IS_TYPE_B1(Music_list, Music); IMPLEMENT_IS_TYPE_B1(Voice,Music_list); IMPLEMENT_IS_TYPE_B1(Chord,Music_list); @@ -97,10 +97,10 @@ Music_list::do_print()const #endif } -IMPLEMENT_IS_TYPE_B1(Voice_element, Chord); -IMPLEMENT_STATIC_NAME(Voice_element); +IMPLEMENT_IS_TYPE_B1(Request_chord, Chord); + -Voice_element::Voice_element() +Request_chord::Request_chord() { multi_level_i_ =0; } diff --git a/lily/music.cc b/lily/music.cc index ca55e559ec..f42394b9e6 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -42,7 +42,7 @@ Music::do_print()const { } -IMPLEMENT_STATIC_NAME(Music); + IMPLEMENT_IS_TYPE_B(Music); @@ -54,4 +54,4 @@ Music::Music() } IMPLEMENT_IS_TYPE_B1(Change_reg,Music) -IMPLEMENT_STATIC_NAME(Change_reg); + diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 396870dd36..0d14c09c38 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -13,7 +13,7 @@ #include "text-def.hh" #include "music-list.hh" -IMPLEMENT_STATIC_NAME(Stem_req); + IMPLEMENT_IS_TYPE_B1(Stem_req,Rhythmic_req); void @@ -31,7 +31,7 @@ Stem_req::Stem_req() } /* ************** */ -IMPLEMENT_STATIC_NAME(Musical_req); + IMPLEMENT_IS_TYPE_B1(Musical_req,Request); void Musical_req::do_print()const{} @@ -43,7 +43,7 @@ Tie_req::do_print()const{} -IMPLEMENT_STATIC_NAME(Span_req); + IMPLEMENT_IS_TYPE_B1(Span_req,Musical_req); void @@ -60,7 +60,7 @@ Spacing_req::Spacing_req() distance = 0; strength = 0; } -IMPLEMENT_STATIC_NAME(Spacing_req); + IMPLEMENT_IS_TYPE_B1(Spacing_req,Request); void @@ -71,7 +71,7 @@ Spacing_req::do_print()const #endif } -IMPLEMENT_STATIC_NAME(Blank_req); + IMPLEMENT_IS_TYPE_B2(Blank_req,Spacing_req,Rhythmic_req); void @@ -107,7 +107,7 @@ Melodic_req::transpose(Melodic_req const & delta) } } -IMPLEMENT_STATIC_NAME(Melodic_req); + IMPLEMENT_IS_TYPE_B1(Melodic_req,Musical_req); int @@ -164,7 +164,7 @@ Rhythmic_req::Rhythmic_req() { } -IMPLEMENT_STATIC_NAME(Rhythmic_req); + IMPLEMENT_IS_TYPE_B1(Rhythmic_req,Musical_req); void @@ -189,7 +189,7 @@ Lyric_req::Lyric_req(Text_def* def_p) dir_i_ = -1; // lyrics below (invisible) staff } -IMPLEMENT_STATIC_NAME(Lyric_req); + IMPLEMENT_IS_TYPE_B2(Lyric_req,Musical_req,Rhythmic_req); void @@ -204,7 +204,7 @@ Note_req::Note_req() { forceacc_b_ = false; } -IMPLEMENT_STATIC_NAME(Note_req); + IMPLEMENT_IS_TYPE_B2(Note_req,Melodic_req,Rhythmic_req); void @@ -219,7 +219,7 @@ Note_req::do_print() const #endif } /* *************** */ -IMPLEMENT_STATIC_NAME(Rest_req); + IMPLEMENT_IS_TYPE_B1(Rest_req,Rhythmic_req); void @@ -233,12 +233,12 @@ Beam_req::Beam_req() { nplet = 0; } -IMPLEMENT_STATIC_NAME(Beam_req); + IMPLEMENT_IS_TYPE_B1(Beam_req,Span_req); void Beam_req::do_print()const{} /* *************** */ -IMPLEMENT_STATIC_NAME(Slur_req); + IMPLEMENT_IS_TYPE_B1(Slur_req,Span_req); void Slur_req::do_print()const{} @@ -274,7 +274,7 @@ Script_req::Script_req() scriptdef_p_ = 0; } -IMPLEMENT_STATIC_NAME(Script_req); + IMPLEMENT_IS_TYPE_B1(Script_req,Request); void @@ -292,7 +292,7 @@ Musical_script_req::do_print() const Script_req::do_print(); } -IMPLEMENT_STATIC_NAME(Musical_script_req); + IMPLEMENT_IS_TYPE_B2(Musical_script_req,Musical_req, Script_req); @@ -326,7 +326,7 @@ Text_req::Text_req(int dir_i, Text_def* tdef_p) tdef_p_ = tdef_p; } -IMPLEMENT_STATIC_NAME(Text_req); + IMPLEMENT_IS_TYPE_B1(Text_req,Musical_req); void @@ -341,7 +341,7 @@ Text_req::do_print() const /* *************** */ -IMPLEMENT_STATIC_NAME(Skip_req); + IMPLEMENT_IS_TYPE_B1(Skip_req,Musical_req); void @@ -353,17 +353,8 @@ Skip_req::do_print() const #endif } -Voice * -Request::voice_l() -{ - if (!parent_music_l_) - return 0; - else - return (Voice*)parent_music_l_; -} -/* *************** */ -IMPLEMENT_STATIC_NAME(Dynamic_req); + IMPLEMENT_IS_TYPE_B1(Dynamic_req,Musical_req); void @@ -372,7 +363,7 @@ Dynamic_req::do_print() const Musical_req::do_print(); } -IMPLEMENT_STATIC_NAME(Absolute_dynamic_req); + IMPLEMENT_IS_TYPE_B1(Absolute_dynamic_req,Musical_req); void @@ -412,7 +403,7 @@ Span_dynamic_req::Span_dynamic_req() dynamic_dir_i_ = 0; } -IMPLEMENT_STATIC_NAME(Span_dynamic_req); + IMPLEMENT_IS_TYPE_B1(Span_dynamic_req,Musical_req); void @@ -424,7 +415,7 @@ Span_dynamic_req::do_print()const #endif } -IMPLEMENT_STATIC_NAME(Tie_req); + IMPLEMENT_IS_TYPE_B1(Tie_req,Musical_req); diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 69be888d94..5c14442745 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -126,7 +126,7 @@ My_lily_parser::set_last_duration(Duration const *d) Chord* My_lily_parser::get_word_element(Text_def* tdef_p, Duration * duration_p) { - Chord* velt_p = new Voice_element; + Chord* velt_p = new Request_chord; Lyric_req* lreq_p = new Lyric_req(tdef_p); @@ -142,7 +142,7 @@ My_lily_parser::get_word_element(Text_def* tdef_p, Duration * duration_p) Chord * My_lily_parser::get_rest_element(String s, Duration * duration_p ) { - Chord* velt_p = new Voice_element; + Chord* velt_p = new Request_chord; velt_p->set_spot( here_input()); if (s=="s") { /* Space */ @@ -171,7 +171,7 @@ My_lily_parser::get_rest_element(String s, Duration * duration_p ) Chord * My_lily_parser::get_note_element(Note_req *rq, Duration * duration_p ) { - Chord*v = new Voice_element; + Chord*v = new Request_chord; v->set_spot( here_input()); v->add(rq); diff --git a/lily/note-column-grav.cc b/lily/note-column-grav.cc index 3cf96d2575..6761456558 100644 --- a/lily/note-column-grav.cc +++ b/lily/note-column-grav.cc @@ -130,6 +130,6 @@ Note_column_engraver::Note_column_engraver() do_post_move_processing(); } -IMPLEMENT_STATIC_NAME(Note_column_engraver); + IMPLEMENT_IS_TYPE_B1(Note_column_engraver,Engraver); ADD_THIS_ENGRAVER(Note_column_engraver); diff --git a/lily/note-column.cc b/lily/note-column.cc index 8d7d7f7e2b..e3bb6b1f52 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -11,7 +11,7 @@ #include "note-head.hh" #include "stem.hh" -IMPLEMENT_STATIC_NAME(Note_column); + IMPLEMENT_IS_TYPE_B1(Note_column,Head_column); void diff --git a/lily/note-performer.cc b/lily/note-performer.cc index 1543a56634..9caa676231 100644 --- a/lily/note-performer.cc +++ b/lily/note-performer.cc @@ -12,7 +12,7 @@ #include "debug.hh" IMPLEMENT_IS_TYPE_B1(Note_performer,Performer); -IMPLEMENT_STATIC_NAME(Note_performer); + ADD_THIS_PERFORMER(Note_performer); Note_performer::Note_performer() @@ -63,7 +63,7 @@ Note_performer::process_requests() } bool -Note_performer::try_request( Request* req_l ) +Note_performer::do_try_request( Request* req_l ) { if ( note_req_l_ ) return false; diff --git a/lily/notehead.cc b/lily/notehead.cc index bd7fa443ed..48b6b7ba6d 100644 --- a/lily/notehead.cc +++ b/lily/notehead.cc @@ -63,7 +63,7 @@ Note_head::set_rhythmic(Rhythmic_req*r_req_l) dots_i_ = r_req_l->duration_.dots_i_; } -IMPLEMENT_STATIC_NAME(Note_head); + IMPLEMENT_IS_TYPE_B1(Note_head,Item); void diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 9d784050cb..4cf44b1f8d 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -41,10 +41,8 @@ Paper_def::linewidth_f() const Real Paper_def::duration_to_dist(Moment d) { - if (!d) - return 0; - - return get_var("unitspace") * pow(get_var("geometric"), log_2(d)); + Real dur_f = (d) ?pow(get_var("geometric"), log_2(d)) : 0; + return get_var("basicspace") + get_var("unitspace") * dur_f; } diff --git a/lily/parser.y b/lily/parser.y index 4f074fb2dc..995d541ea8 100644 --- a/lily/parser.y +++ b/lily/parser.y @@ -573,7 +573,7 @@ simple_element: command_elt: /* empty */ { - $$ = new Voice_element; + $$ = new Request_chord; $$-> set_spot( THIS->here_input()); } /* cont: */ diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index 11e768585d..3e3a745c22 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -10,7 +10,7 @@ #include "debug.hh" IMPLEMENT_IS_TYPE_B2(Performer_group_performer,Performer, Translator); -IMPLEMENT_STATIC_NAME(Performer_group_performer); + ADD_THIS_PERFORMER(Performer_group_performer); Performer_group_performer::Performer_group_performer() @@ -124,12 +124,6 @@ Performer_group_performer::is_bottom_performer_b() const return !itrans_l_->get_default_itrans_l(); } -void -Performer_group_performer::midi_output( Midi_stream* midi_stream_l ) -{ - for ( PCursor<Performer*> i( perf_p_list_.top() ); i.ok(); i++ ) - i->midi_output( midi_stream_l ); -} void Performer_group_performer::process_requests() @@ -138,23 +132,36 @@ Performer_group_performer::process_requests() i->process_requests(); } -void -Performer_group_performer::set_track( Midi_def* midi_l, int& track_i_r ) -{ - for ( PCursor<Performer*> i( perf_p_list_.top() ); i.ok(); i++ ) - i->set_track( midi_l, track_i_r ); -} - bool -Performer_group_performer::try_request( Request* req_l ) +Performer_group_performer::do_try_request( Request* req_l ) { -// return Performer::try_request( req_l ); bool hebbes_b =false; for (int i =0; !hebbes_b && i < nongroup_l_arr_.size() ; i++) hebbes_b =nongroup_l_arr_[i]->try_request(req_l); -// if (!hebbes_b) if ( !hebbes_b && daddy_perf_l_ ) hebbes_b = daddy_perf_l_->try_request(req_l); return hebbes_b ; } +void +Performer_group_performer::do_print()const +{ +#ifndef NPRINT + for ( PCursor<Performer*> i( perf_p_list_.top() ); i.ok(); i++ ) + i->print(); +#endif +} + +void +Performer_group_performer::do_creation_processing() +{ + for ( PCursor<Performer*> i( perf_p_list_.top() ); i.ok(); i++ ) + i->creation_processing(); +} + +void +Performer_group_performer::do_removal_processing() +{ + for ( PCursor<Performer*> i( perf_p_list_.top() ); i.ok(); i++ ) + i->do_removal_processing(); +} diff --git a/lily/performer.cc b/lily/performer.cc index 76b9333253..e26f2ef2da 100644 --- a/lily/performer.cc +++ b/lily/performer.cc @@ -9,12 +9,13 @@ #include "performer-group-performer.hh" #include "debug.hh" -IMPLEMENT_STATIC_NAME(Performer); + IMPLEMENT_IS_TYPE_B(Performer); Performer::Performer() { daddy_perf_l_ = 0; + init_b_ =false; } Performer::~Performer() @@ -32,23 +33,24 @@ Performer::get_mom() const return daddy_perf_l_->get_mom(); } -void -Performer::midi_output( Midi_stream* ) -{ -} - void Performer::play_event( Midi_item* l ) { daddy_perf_l_->play_event( l ); } +int +Performer::get_tempo_i()const +{ + return daddy_perf_l_->get_tempo_i(); +} + void Performer::print() const { #ifndef NPRINT mtor << "\n" << name() << " {"; -// do_print(); + do_print(); mtor << "}"; #endif } @@ -63,16 +65,42 @@ Performer::set( Moment ) { } -void -Performer::set_track( Midi_def*, int& ) -{ -} - bool -Performer::try_request( Request* req_l ) +Performer::do_try_request( Request* req_l ) { -// huh? -// return daddy_perf_l_->try_request( req_l_ ); return false; } +bool +Performer::try_request(Request*r) +{ + if (!init_b_) { + creation_processing(); + } + return do_try_request(r); +} + +void +Performer::creation_processing() +{ + if (!init_b_) { +/* if ( daddy_perf_l_ ) { + init_b_ = true; // ugh. avoid recursion + daddy_perf_l_->creation_processing(); + init_b_ = false; + } + + */ + do_creation_processing(); + init_b_ = true; + } +} +void +Performer::do_creation_processing() +{ +} + +void +Performer::do_removal_processing() +{ +} diff --git a/lily/request.cc b/lily/request.cc index 545abcef83..15a90ca6e3 100644 --- a/lily/request.cc +++ b/lily/request.cc @@ -1,7 +1,15 @@ +/* + request.cc -- implement Request + + source file of the GNU LilyPond music typesetter + + (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl> +*/ + #include "request.hh" #include "debug.hh" -IMPLEMENT_STATIC_NAME(Request); + IMPLEMENT_IS_TYPE_B1(Request,Music); void @@ -15,13 +23,3 @@ Request::time_int() const return MInterval(0, duration()); } -void -Request::print() const -{ -#ifndef NPRINT - mtor << name() << " {"; - do_print(); - mtor << "}\n"; -#endif -} - diff --git a/lily/rest-collision-grav.cc b/lily/rest-collision-grav.cc index 296f856a8a..29fdac1a3d 100644 --- a/lily/rest-collision-grav.cc +++ b/lily/rest-collision-grav.cc @@ -13,7 +13,7 @@ #include "rest-column.hh" #include "note-column.hh" -IMPLEMENT_STATIC_NAME(Rest_collision_engraver); + IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver); ADD_THIS_ENGRAVER(Rest_collision_engraver); diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index 4529bbc4d6..7b3da49d41 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -15,7 +15,7 @@ #include "collision.hh" #include "paper-def.hh" -IMPLEMENT_STATIC_NAME(Rest_collision); + IMPLEMENT_IS_TYPE_B1(Rest_collision,Item); void diff --git a/lily/rest-column.cc b/lily/rest-column.cc index 9f811d39de..5a0d141777 100644 --- a/lily/rest-column.cc +++ b/lily/rest-column.cc @@ -12,7 +12,7 @@ #include "rest-column.hh" #include "stem.hh" -IMPLEMENT_STATIC_NAME(Rest_column); + IMPLEMENT_IS_TYPE_B1(Rest_column,Head_column); diff --git a/lily/score-align-grav.cc b/lily/score-align-grav.cc index 7f315bcc39..f284563237 100644 --- a/lily/score-align-grav.cc +++ b/lily/score-align-grav.cc @@ -42,5 +42,4 @@ Score_align_engraver::acknowledge_element(Score_elem_info inf) } -IMPLEMENT_STATIC_NAME(Score_align_engraver) IMPLEMENT_IS_TYPE_B1(Score_align_engraver,Engraver); diff --git a/lily/score-align-gravs.cc b/lily/score-align-gravs.cc index 236ca211ef..9c92ce3af4 100644 --- a/lily/score-align-gravs.cc +++ b/lily/score-align-gravs.cc @@ -21,7 +21,6 @@ public: \ { type_ch_C_ = T::static_name();\ priority_i_ = p;} \ }; \ -IMPLEMENT_STATIC_NAME(C ## _align_engraver) ; \ ADD_THIS_ENGRAVER(C ## _align_engraver); \ IMPLEMENT_IS_TYPE_B1(C ## _align_engraver, Score_align_engraver) ; diff --git a/lily/score-elem-info.cc b/lily/score-elem-info.cc index 9f15b846df..99e6673a7d 100644 --- a/lily/score-elem-info.cc +++ b/lily/score-elem-info.cc @@ -12,15 +12,12 @@ Score_elem_info::Score_elem_info(Score_elem*s_l, Request*r_l) { elem_l_ = s_l; - voice_l_ = (r_l)?r_l->voice_l():0; req_l_ = r_l; } Score_elem_info::Score_elem_info() { elem_l_ = 0; - voice_l_ = 0; - req_l_ = 0; } diff --git a/lily/score-elem.cc b/lily/score-elem.cc index 7f026d1e88..c95817d9fd 100644 --- a/lily/score-elem.cc +++ b/lily/score-elem.cc @@ -343,7 +343,7 @@ Score_elem::do_substitute_dependent(Score_elem*,Score_elem*) } -IMPLEMENT_STATIC_NAME(Score_elem); + IMPLEMENT_IS_TYPE_B(Score_elem); Molecule* diff --git a/lily/score-grav.cc b/lily/score-grav.cc index bcec7e71fb..8c31c827c7 100644 --- a/lily/score-grav.cc +++ b/lily/score-grav.cc @@ -55,6 +55,9 @@ Score_engraver::prepare(Moment w) void Score_engraver::finish() { + if ( (breaks_i_%8)) + *mlog << "[" << breaks_i_ << "]" << flush; + check_removal(); do_removal_processing(); } @@ -198,16 +201,13 @@ Score_engraver::paper()const bool Score_engraver::do_try_request(Request*r) { - bool gotcha = false; - for ( int i =0; !gotcha && i < nongroup_l_arr_.size() ; i++) - gotcha = nongroup_l_arr_[i]->try_request(r); - - if ( r->command() && r->command()->disallowbreak()) + bool gotcha = Engraver_group_engraver::do_try_request(r); + if ( !gotcha && r->command() && r->command()->disallowbreak()) disallow_break_b_ = true; return gotcha; } IMPLEMENT_IS_TYPE_B1(Score_engraver,Engraver_group_engraver); -IMPLEMENT_STATIC_NAME(Score_engraver); + ADD_THIS_ENGRAVER(Score_engraver); diff --git a/lily/score-halign-grav.cc b/lily/score-halign-grav.cc index 15d266599a..243b8622f9 100644 --- a/lily/score-halign-grav.cc +++ b/lily/score-halign-grav.cc @@ -45,6 +45,6 @@ Score_horizontal_align_engraver::acknowledge_element(Score_elem_info i) halign_p_->add(it, align_grav_l->priority_i_); } } -IMPLEMENT_STATIC_NAME(Score_horizontal_align_engraver); + IMPLEMENT_IS_TYPE_B1(Score_horizontal_align_engraver,Engraver); ADD_THIS_ENGRAVER(Score_horizontal_align_engraver); diff --git a/lily/score-performer.cc b/lily/score-performer.cc index 2e38539646..0ff49514e0 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -18,18 +18,15 @@ #include "source.hh" IMPLEMENT_IS_TYPE_B1(Score_performer,Performer_group_performer); -IMPLEMENT_STATIC_NAME(Score_performer); ADD_THIS_PERFORMER(Score_performer); Score_performer::Score_performer() { - midi_stream_p_ = 0; midi_l_ = 0; } Score_performer::~Score_performer() { - delete midi_stream_p_; } Translator* @@ -47,13 +44,30 @@ Score_performer::depth_i() const void Score_performer::finish() { + Performer_group_performer::do_removal_processing(); + + + Midi_stream output_stream( midi_l_->outfile_str_, midi_item_p_arr_.size() + 1, 384 ); *mlog << "MIDI output to " << midi_l_->outfile_str_ << " ..." << endl; - *mlog << "tracks: "; - header(); - Performer_group_performer::midi_output( midi_stream_p_ ); + + header( output_stream); + int track_i = 1; + for (int i=0; i< midi_item_p_arr_.size(); i++) { + Midi_item * it_p = midi_item_p_arr_[i]; + + if ( it_p->is_type_b( Midi_track::static_name())) + ((Midi_track*)it_p )->number_i_ = track_i ++; + output_stream<< *it_p; + } *mlog << endl; } +void +Score_performer::play_event(Midi_item*m) +{ + midi_item_p_arr_.push(m); +} + Moment Score_performer::get_mom() const { @@ -61,10 +75,9 @@ Score_performer::get_mom() const } void -Score_performer::header() +Score_performer::header(Midi_stream &output_stream) { - int track_i = 0; - Midi_track midi_track( track_i ); + Midi_track midi_track; time_t t = time( 0 ); @@ -74,38 +87,24 @@ Score_performer::header() Midi_text creator( Midi_text::TEXT, str ); midi_track.add( Moment( 0 ), &creator ); - str = "Generated, at "; + str = "Automatically generated at "; str += ctime( &t ); str = str.left_str( str.length_i() - 1 ); - str += ",\n"; + str += "\n"; Midi_text generate( Midi_text::TEXT, str ); midi_track.add( Moment( 0 ), &generate ); str = "from musical definition: "; -#if 0 - Source_file* sourcefile_l = source_l_g->sourcefile_l( score_l_->defined_ch_C_ ); - if ( sourcefile_l ) - str += sourcefile_l->name_str(); -#elif 1 + str += score_l_->location_str(); -#else - str += score_l_-> -#endif Midi_text from( Midi_text::TEXT, str ); midi_track.add( Moment( 0 ), &from ); - // set track name - Midi_text track_name( Midi_text::TRACK_NAME, "Track " + String_convert::i2dec_str( 0, 0, '0' ) ); + Midi_text track_name( Midi_text::TRACK_NAME, "Track " + + String_convert::i2dec_str( 0, 0, '0' ) ); midi_track.add( Moment( 0 ), &track_name ); - // ugh, to please lily when reparsing mi2mu output. - // lily currently barfs when no meter present. - /* are you sure? init is to 4/4 HWN */ - Midi_time midi_time( 4, 4, 18 ); - midi_track.add( Moment( 0.0 ), &midi_time ); - - *mlog << "[" << track_i << "]"; - *midi_stream_p_ << midi_track; + output_stream << midi_track; } void @@ -122,12 +121,8 @@ Score_performer::process() } void -Score_performer::set_score( Score* score_l ) +Score_performer::set_score(Score* score_l ) { - /* - why's there no start() when there's a finish()? - let's misuse this for start() - */ Global_translator::set_score( score_l ); midi_l_ = score_l->midi_p_; } @@ -135,12 +130,13 @@ Score_performer::set_score( Score* score_l ) void Score_performer::start() { - int track_i = 1; - Performer_group_performer::set_track( midi_l_, track_i ); - if ( midi_l_->outfile_str_ == "" ) midi_l_->outfile_str_ = default_out_fn + ".midi"; - - midi_stream_p_ = new Midi_stream( midi_l_->outfile_str_, track_i, 384 ); } + +int +Score_performer::get_tempo_i()const +{ + return midi_l_->get_tempo_i(Moment( 1, 4 )); +} diff --git a/lily/score.cc b/lily/score.cc index 3164315981..77324c3879 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -77,6 +77,7 @@ Score::run_translator(Global_translator * trans_l) void Score::process() { + print(); paper(); midi(); } @@ -98,7 +99,6 @@ Score::midi() warning( "Errors found, /*not processing score*/" ); // return; } - print(); *mlog << endl; } @@ -115,14 +115,12 @@ Score::paper() run_translator( score_trans ); delete score_trans; - if( errorlevel_i_){ + if( errorlevel_i_) { // should we? hampers debugging. warning("Errors found, /*not processing score*/"); // return; } - print(); - // debugging *mlog << endl; pscore_p_->process(); diff --git a/lily/scoreline.cc b/lily/scoreline.cc index 85be620ccf..64a7df296d 100644 --- a/lily/scoreline.cc +++ b/lily/scoreline.cc @@ -69,7 +69,7 @@ Line_of_score::Line_of_score() -IMPLEMENT_STATIC_NAME(Line_of_score); + IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner); void diff --git a/lily/script-column.cc b/lily/script-column.cc index b49fbd48f5..166eb348bb 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -12,7 +12,7 @@ #include "note-head.hh" #include "stem.hh" -IMPLEMENT_STATIC_NAME(Script_column); + IMPLEMENT_IS_TYPE_B1(Script_column,Horizontal_vertical_group_item); diff --git a/lily/script-def.cc b/lily/script-def.cc index 38b2608f25..5475ec8cf2 100644 --- a/lily/script-def.cc +++ b/lily/script-def.cc @@ -81,7 +81,7 @@ Script_def::get_atom(Paper_def *p , int d)const return p->lookup_l()->script(preidx_str + symidx_str_); } -IMPLEMENT_STATIC_NAME(Script_def); + IMPLEMENT_IS_TYPE_B1(Script_def,General_script_def); int diff --git a/lily/script-grav.cc b/lily/script-grav.cc index 0c8f1e0590..e33f121bb1 100644 --- a/lily/script-grav.cc +++ b/lily/script-grav.cc @@ -84,6 +84,6 @@ Script_engraver::do_post_move_processing() script_req_l_arr_.set_size(0); } -IMPLEMENT_STATIC_NAME(Script_engraver); + IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver); ADD_THIS_ENGRAVER(Script_engraver); diff --git a/lily/script.cc b/lily/script.cc index c74afdb1fb..4fed330013 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -94,7 +94,7 @@ Script::brew_molecule_p() const return out; } -IMPLEMENT_STATIC_NAME(Script); + IMPLEMENT_IS_TYPE_B2(Script,Item,Staff_side); int diff --git a/lily/slur-grav.cc b/lily/slur-grav.cc index 655d7aad23..feabdd45b4 100644 --- a/lily/slur-grav.cc +++ b/lily/slur-grav.cc @@ -99,6 +99,6 @@ Slur_engraver::~Slur_engraver() requests_arr_[i]->warning("unterminated slur"); } } -IMPLEMENT_STATIC_NAME(Slur_engraver); + IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver); ADD_THIS_ENGRAVER(Slur_engraver); diff --git a/lily/slur.cc b/lily/slur.cc index 098bdc3fe4..89bdd2444c 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -94,5 +94,5 @@ Slur::do_post_processing() left_pos_i_ += dir_i_; right_pos_i_ += dir_i_; } -IMPLEMENT_STATIC_NAME(Slur); + IMPLEMENT_IS_TYPE_B1(Slur,Spanner); diff --git a/lily/span-bar-grav.cc b/lily/span-bar-grav.cc index c38fe43073..a6d40fdd9c 100644 --- a/lily/span-bar-grav.cc +++ b/lily/span-bar-grav.cc @@ -53,6 +53,6 @@ Span_bar_engraver::do_pre_move_processing() } -IMPLEMENT_STATIC_NAME(Span_bar_engraver); + IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver); ADD_THIS_ENGRAVER(Span_bar_engraver); diff --git a/lily/span-bar.cc b/lily/span-bar.cc index 61f6b1b4e6..24430729bd 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -72,11 +72,15 @@ Span_bar::do_pre_processing() transparent_b_ = true; empty_b_ =true; } else { - if (type_str_ == "") + if (type_str_ == "") type_str_ = spanning_l_arr_[0]->type_str_; if (type_str_ =="") { transparent_b_=true; empty_b_ = true; + } else if ( type_str_ == "|:") { + type_str_ = ".|"; + } else if ( type_str_ == ":|"){ + type_str_ = "|."; } } } @@ -100,5 +104,5 @@ Span_bar::brew_molecule_p()const return output; } -IMPLEMENT_STATIC_NAME(Span_bar); + IMPLEMENT_IS_TYPE_B1(Span_bar,Bar); diff --git a/lily/span-score-bar-grav.cc b/lily/span-score-bar-grav.cc index 9bfe9ef1ce..cccbd03b78 100644 --- a/lily/span-score-bar-grav.cc +++ b/lily/span-score-bar-grav.cc @@ -15,9 +15,9 @@ Span_score_bar_engraver::get_span_bar_p() const return new Span_score_bar; } -IMPLEMENT_STATIC_NAME(Span_score_bar_engraver); + IMPLEMENT_IS_TYPE_B1(Span_score_bar_engraver, Span_bar_engraver); -IMPLEMENT_STATIC_NAME(Piano_bar_engraver); + IMPLEMENT_IS_TYPE_B1(Piano_bar_engraver, Span_score_bar_engraver); Span_bar* diff --git a/lily/span-score-bar.cc b/lily/span-score-bar.cc index 9ee958ae46..d6a7a2fa71 100644 --- a/lily/span-score-bar.cc +++ b/lily/span-score-bar.cc @@ -38,8 +38,8 @@ Piano_brace::do_width()const return Interval(0,0); } -IMPLEMENT_STATIC_NAME(Span_score_bar); + IMPLEMENT_IS_TYPE_B1(Span_score_bar, Span_bar); IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar); -IMPLEMENT_STATIC_NAME(Piano_brace); + diff --git a/lily/spanner-elem-group.cc b/lily/spanner-elem-group.cc index f0b76a277c..8e2c98bf19 100644 --- a/lily/spanner-elem-group.cc +++ b/lily/spanner-elem-group.cc @@ -10,7 +10,7 @@ #include "spanner-elem-group.hh" -IMPLEMENT_STATIC_NAME(Spanner_elem_group); + IMPLEMENT_IS_TYPE_B2(Spanner_elem_group,Spanner,Horizontal_vertical_group); Interval diff --git a/lily/spanner.cc b/lily/spanner.cc index eb6d16f6fd..1ca347172b 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -11,7 +11,7 @@ #include "p-col.hh" #include "p-score.hh" -IMPLEMENT_STATIC_NAME(Spanner); + IMPLEMENT_IS_TYPE_B1(Spanner,Score_elem); void diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index 1ffffd7ab0..b21bc5c45a 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -15,34 +15,45 @@ #include "string.hh" #include "string-convert.hh" -IMPLEMENT_STATIC_NAME(Staff_performer); + IMPLEMENT_IS_TYPE_B1(Staff_performer,Performer_group_performer); ADD_THIS_PERFORMER(Staff_performer); Staff_performer::Staff_performer() { midi_mom_ = 0; - track_i_ = 0; - midi_track_p_ = 0; + midi_track_p_ = new Midi_track; +} +void +Staff_performer::do_creation_processing() +{ + header(); +} + +void +Staff_performer::do_removal_processing() +{ + Performer::play_event( midi_track_p_); } Staff_performer::~Staff_performer() { - delete midi_track_p_; + delete midi_track_p_; } void Staff_performer::header() { // set track name - Midi_text track_name( Midi_text::TRACK_NAME, "Track " + String_convert::i2dec_str( track_i_, 0, '0' ) ); + Midi_text track_name( Midi_text::TRACK_NAME, instrument_str()); midi_track_p_->add( Moment( 0 ), &track_name ); // set instrument :-) Midi_text instrument_name( Midi_text::INSTRUMENT_NAME, instrument_str() ); midi_track_p_->add( Moment( 0 ), &instrument_name ); - Midi_tempo midi_tempo( midi_l_->get_tempo_i( Moment( 1, 4 ) ) ); + + Midi_tempo midi_tempo( get_tempo_i( ) ); midi_track_p_->add( Moment( 0 ), &midi_tempo ); } @@ -52,28 +63,12 @@ Staff_performer::instrument_str() return Translator::id_str_; } -void -Staff_performer::midi_output( Midi_stream* midi_stream_l ) -{ - *mlog << "[" << track_i_ << "]"; - *midi_stream_l << *midi_track_p_; -} - void Staff_performer::play_event( Midi_item* l ) { Moment mom = get_mom(); Moment delta_t = mom - midi_mom_ ; midi_mom_ += delta_t; - midi_track_p_->add( delta_t, l ); -} - -void -Staff_performer::set_track( Midi_def* midi_l, int& track_i_r ) -{ - midi_l_ = midi_l; - track_i_ = track_i_r++; - midi_track_p_ = new Midi_track( track_i_ ); - header(); + midi_track_p_->add( delta_t, l); } diff --git a/lily/staff-side.cc b/lily/staff-side.cc index 9cb61495f9..a661a0cb97 100644 --- a/lily/staff-side.cc +++ b/lily/staff-side.cc @@ -117,5 +117,5 @@ Staff_side::do_substitute_dependency(Score_elem*o, Score_elem*n) staff_sym_l_ = n ? (Staff_symbol*) n->spanner():0; } -IMPLEMENT_STATIC_NAME(Staff_side); + IMPLEMENT_IS_TYPE_B1(Staff_side, Score_elem); diff --git a/lily/staff-sym-grav.cc b/lily/staff-sym-grav.cc index 2894a34120..03de4a59d9 100644 --- a/lily/staff-sym-grav.cc +++ b/lily/staff-sym-grav.cc @@ -50,6 +50,6 @@ Staff_sym_engraver::do_process_requests() } -IMPLEMENT_STATIC_NAME(Staff_sym_engraver); + IMPLEMENT_IS_TYPE_B1(Staff_sym_engraver,Engraver); ADD_THIS_ENGRAVER(Staff_sym_engraver); diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc index 718bddbc58..c228be5870 100644 --- a/lily/staff-sym.cc +++ b/lily/staff-sym.cc @@ -18,7 +18,7 @@ Staff_symbol::Staff_symbol(int l) no_lines_i_ = l; } -IMPLEMENT_STATIC_NAME(Staff_symbol); + IMPLEMENT_IS_TYPE_B1(Staff_symbol,Spanner); void diff --git a/lily/staffline.cc b/lily/staffline.cc index 359d719f0b..7e4aa95741 100644 --- a/lily/staffline.cc +++ b/lily/staffline.cc @@ -17,7 +17,7 @@ #include "p-score.hh" -IMPLEMENT_STATIC_NAME(Line_of_staff); + IMPLEMENT_IS_TYPE_B2(Line_of_staff,Spanner,Horizontal_vertical_group); void diff --git a/lily/stem-beam-grav.cc b/lily/stem-beam-grav.cc index a5cb842cbb..38f84a48dc 100644 --- a/lily/stem-beam-grav.cc +++ b/lily/stem-beam-grav.cc @@ -172,6 +172,6 @@ Stem_beam_engraver::set_feature(Feature i) default_dir_i_ = i.value_; } -IMPLEMENT_STATIC_NAME(Stem_beam_engraver); + IMPLEMENT_IS_TYPE_B1(Stem_beam_engraver,Engraver); ADD_THIS_ENGRAVER(Stem_beam_engraver); diff --git a/lily/stem.cc b/lily/stem.cc index 00b7423a2b..cf811ddf56 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -51,7 +51,7 @@ Stem::Stem(int c) stem_xoffset_f_ =0; } -IMPLEMENT_STATIC_NAME(Stem); + IMPLEMENT_IS_TYPE_B1(Stem,Item); void diff --git a/lily/super-elem.cc b/lily/super-elem.cc index c2554516fe..cf7884fd7a 100644 --- a/lily/super-elem.cc +++ b/lily/super-elem.cc @@ -53,5 +53,5 @@ Super_elem::do_add_processing() -IMPLEMENT_STATIC_NAME(Super_elem); + IMPLEMENT_IS_TYPE_B1(Super_elem,Score_elem); diff --git a/lily/swallow-grav.cc b/lily/swallow-grav.cc index 9f596cba76..b445c9c4b5 100644 --- a/lily/swallow-grav.cc +++ b/lily/swallow-grav.cc @@ -7,7 +7,7 @@ */ #include "swallow-grav.hh" -IMPLEMENT_STATIC_NAME(Swallow_engraver); + IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver); ADD_THIS_ENGRAVER(Swallow_engraver); diff --git a/lily/swallow-perf.cc b/lily/swallow-perf.cc index 7bdb355adc..332964af40 100644 --- a/lily/swallow-perf.cc +++ b/lily/swallow-perf.cc @@ -8,6 +8,6 @@ #include "swallow-perf.hh" -IMPLEMENT_STATIC_NAME(Swallow_performer); + IMPLEMENT_IS_TYPE_B1(Swallow_performer, Performer); ADD_THIS_PERFORMER(Swallow_performer); diff --git a/lily/template4.cc b/lily/template4.cc index 484729579b..f072a5b286 100644 --- a/lily/template4.cc +++ b/lily/template4.cc @@ -7,6 +7,7 @@ */ #include "proto.hh" +#include "plist.hh" #include "list.tcc" #include "cursor.tcc" diff --git a/lily/text-def.cc b/lily/text-def.cc index 4d6c641436..9ab7d0a25b 100644 --- a/lily/text-def.cc +++ b/lily/text-def.cc @@ -58,5 +58,5 @@ Text_def::print() const style_str_ << "align " << align_i_ << '\n'; } -IMPLEMENT_STATIC_NAME(Text_def); + IMPLEMENT_IS_TYPE_B1(Text_def,General_script_def); diff --git a/lily/text-grav.cc b/lily/text-grav.cc index d685a47a12..5095b23b3c 100644 --- a/lily/text-grav.cc +++ b/lily/text-grav.cc @@ -70,6 +70,6 @@ Text_engraver::do_post_move_processing() { text_req_l_ = 0; } -IMPLEMENT_STATIC_NAME(Text_engraver); + IMPLEMENT_IS_TYPE_B1(Text_engraver,Engraver); ADD_THIS_ENGRAVER(Text_engraver); diff --git a/lily/text-item.cc b/lily/text-item.cc index a8cddcfade..3ae99c40ad 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -57,5 +57,5 @@ Text_item::brew_molecule_p() const return mol_p; } -IMPLEMENT_STATIC_NAME(Text_item); + IMPLEMENT_IS_TYPE_B1(Text_item,Item); diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc index 10bbb0b0fa..437739019a 100644 --- a/lily/text-spanner.cc +++ b/lily/text-spanner.cc @@ -31,7 +31,7 @@ Text_spanner::Text_spanner() support_span_l_ = 0; } -IMPLEMENT_STATIC_NAME(Text_spanner); + IMPLEMENT_IS_TYPE_B1(Text_spanner,Spanner); void diff --git a/lily/tie-grav.cc b/lily/tie-grav.cc index 981e3f12c7..e49cd5b7e5 100644 --- a/lily/tie-grav.cc +++ b/lily/tie-grav.cc @@ -119,6 +119,6 @@ Tie_engraver::set_feature(Feature f) dir_i_ = f.value_; } -IMPLEMENT_STATIC_NAME(Tie_engraver); + IMPLEMENT_IS_TYPE_B1(Tie_engraver,Engraver); ADD_THIS_ENGRAVER(Tie_engraver); diff --git a/lily/tie.cc b/lily/tie.cc index 7ce834946c..d67aacccfc 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -91,5 +91,5 @@ Tie::do_substitute_dependency(Score_elem*o, Score_elem*n) } -IMPLEMENT_STATIC_NAME(Tie); + IMPLEMENT_IS_TYPE_B1(Tie,Bow); diff --git a/lily/translator.cc b/lily/translator.cc index 06e30c21e9..0d86219b26 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -13,7 +13,7 @@ Translator::Translator() iterator_count_ = 0; } -IMPLEMENT_STATIC_NAME(Translator); + IMPLEMENT_IS_TYPE_B(Translator); bool diff --git a/lily/vertical-align-elem.cc b/lily/vertical-align-elem.cc index 506bce550c..4ba8b7c5a4 100644 --- a/lily/vertical-align-elem.cc +++ b/lily/vertical-align-elem.cc @@ -58,6 +58,6 @@ Vertical_align_element::Vertical_align_element() empty_b_ =true; } -IMPLEMENT_STATIC_NAME(Vertical_align_element); + IMPLEMENT_IS_TYPE_B1(Vertical_align_element, Score_elem); diff --git a/lily/vertical-align-grav.cc b/lily/vertical-align-grav.cc index 6eb56a4dff..83cfae7acc 100644 --- a/lily/vertical-align-grav.cc +++ b/lily/vertical-align-grav.cc @@ -43,6 +43,6 @@ Vertical_align_engraver::acknowledge_element(Score_elem_info i) } } -IMPLEMENT_STATIC_NAME(Vertical_align_engraver); + IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver); ADD_THIS_ENGRAVER(Vertical_align_engraver); diff --git a/lily/vertical-align-spanner.cc b/lily/vertical-align-spanner.cc index 461f6bd282..94a8c5ee72 100644 --- a/lily/vertical-align-spanner.cc +++ b/lily/vertical-align-spanner.cc @@ -8,5 +8,5 @@ #include "vertical-align-spanner.hh" -IMPLEMENT_STATIC_NAME(Vertical_align_spanner); + IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Vertical_align_element, Spanner); diff --git a/lily/voice-group-gravs.cc b/lily/voice-group-gravs.cc index 5021a29440..f5e5df0c5f 100644 --- a/lily/voice-group-gravs.cc +++ b/lily/voice-group-gravs.cc @@ -34,7 +34,7 @@ Voice_group_engravers::do_try_request(Request*r_l) } -IMPLEMENT_STATIC_NAME(Voice_group_engravers); + IMPLEMENT_IS_TYPE_B1(Voice_group_engravers,Engraver_group_engraver); void diff --git a/lily/voice-group-performer.cc b/lily/voice-group-performer.cc index ac5c6cb7da..fa3393347b 100644 --- a/lily/voice-group-performer.cc +++ b/lily/voice-group-performer.cc @@ -13,7 +13,7 @@ //IMPLEMENT_IS_TYPE_B2(Voice_group_performer,Performer, Translator); IMPLEMENT_IS_TYPE_B1(Voice_group_performer,Performer_group_performer); -IMPLEMENT_STATIC_NAME(Voice_group_performer); + ADD_THIS_PERFORMER(Voice_group_performer); Voice_group_performer::Voice_group_performer() diff --git a/make/Rules.make b/make/Rules.make index 23fee6acc0..07e44b7041 100644 --- a/make/Rules.make +++ b/make/Rules.make @@ -24,10 +24,7 @@ $(outdir)/%.o: $(outdir)/%.cc $(DO_CXX_COMPILE) $(outdir)/%.cc: %.y -# $(BISON) -d $< $(BISON) $< -# mv $(shell basename $@ .cc ).tab.h $(include-lib)/$(shell basename $@ .cc).hh -# mv $(shell basename $@ .cc ).tab.h $(outdir)/$(shell basename $@ .cc).hh mv $(shell basename $@ .cc ).tab.c $@ $(outdir)/%.hh: %.y @@ -40,25 +37,6 @@ $(outdir)/%.cc: %.l # could be faster: # $(FLEX) -8 -Cf -t $< > $@ -$(outdir)/%.text: $(outdir)/%.1 - groff -man -Tascii $< > $@ - -$(depth)/%.text: $(outdir)/%.text - cp $< $@ - -$(outdir)/%.html: %.pod - $(pod2html) $< - mv $(notdir $@) $(outdir)/ - -$(outdir)/%.5: %.pod - $(pod2groff) -$(outdir)/%.1: %.pod - $(pod2groff) - - - -# - # outdirs: # # ?$(outdir)/%.dep: @@ -75,17 +53,3 @@ $(outdir)/%.1: %.pod $(depth)/%.text: check-doc-deps rm -f $@ ln `find ${depth}/Documentation -name $@|head -1` . - -$(outdir)/%.xpm: %.gif - giftopnm $< | ppmtoxpm > $@ - -$(outdir)/%.ps: $(outdir)/%.dvi - dvips -o $@ $< - -$(outdir)/%.dvi: $(outdir)/%.mudtex - latex '\batchmode \input $<' - -$(outdir)/%.mudtex: %.doc - $(depth)/bin/mudela-book --outdir=$(outdir)/ --outname=$(notdir $@) $< - - diff --git a/make/Targets.make b/make/Targets.make index a564a1f91c..10de977c25 100644 --- a/make/Targets.make +++ b/make/Targets.make @@ -140,8 +140,8 @@ dist: $(MAKE) localdist chmod -Rf a+rX $(distdir) - (cd ./$(depth); $(TAR) cf $(DIST_NAME).tar $(DIST_NAME);) - (cd $(depth); gzip -9 $(DIST_NAME).tar) + (cd ./$(depth); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz) + # should be trapped rm -rf $(distdir)/ diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 1b55b27d71..cfcf0e146c 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,21 +1,22 @@ Begin3 Title: LilyPond -Version: 0.0.76 -Entered-date: 07/28/97 +Version: 0.0.77.jcn1 +Entered-date: 07/29/97 Description: GNU LilyPond which converts music definition files into visual or audio output: it can typeset formatted sheet music to a TeX file and and (mechanical) performances to MIDI files. Features include multiple -meters, clefs, keys, lyrics, versatile input-language, cadenzas +staffs, meters, clefs, keys, lyrics, versatile input-language, cadenzas beams, slurs, triplets. + Keywords: music typesetting midi notation Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) -Primary-site: pcnov095.win.tue.nl /pub/lilypond/ - 340k lilypond-0.0.76.tar.gz -Alternate-site: prep.ai.gnu.mit.edu /pub/gnu -Original-site: +Primary-site: sunsite.unc.edu /pub/Linux/apps + 340k lilypond-0.0.77.jcn1.tar.gz +Original-site: pcnov095.win.tue.nl /pub/lilypond/ + 340k lilypond-0.0.77.jcn1.tar.gz Platform: Unix/win32, GNU C++ Copying-policy: GPL End diff --git a/make/lilypond.lsm.in b/make/lilypond.lsm.in index b9a6613f05..03f416baf0 100644 --- a/make/lilypond.lsm.in +++ b/make/lilypond.lsm.in @@ -6,16 +6,17 @@ Description: GNU LilyPond which converts music definition files into visual or audio output: it can typeset formatted sheet music to a TeX file and and (mechanical) performances to MIDI files. Features include multiple -meters, clefs, keys, lyrics, versatile input-language, cadenzas +staffs, meters, clefs, keys, lyrics, versatile input-language, cadenzas beams, slurs, triplets. + Keywords: music typesetting midi notation Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) -Primary-site: pcnov095.win.tue.nl /pub/lilypond/ - 340k lilypond-@TOPLEVEL_VERSION@.tar.gz -Alternate-site: prep.ai.gnu.mit.edu /pub/gnu -Original-site: +Primary-site: sunsite.unc.edu /pub/Linux/apps + 340k lilypond-@TOPLEVEL_VERSION@.tar.gz +Original-site: pcnov095.win.tue.nl /pub/lilypond/ + 340k lilypond-@TOPLEVEL_VERSION@.tar.gz Platform: Unix/win32, GNU C++ Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index 6e271cb108..4aa7858d20 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.0.76 +Version: 0.0.77.jcn1 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.76.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.77.jcn1.tar.gz Summary: A preprocessor to make TeX typeset music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys <hanwen@stack.nl> @@ -14,7 +14,7 @@ Buildroot: /tmp/lilypond_build GNU LilyPond which converts music definition files into visual or audio output: it can typeset formatted sheet music to a TeX file and and (mechanical) performances to MIDI files. Features include multiple -meters, clefs, keys, lyrics, versatile input-language, cadenzas +staffs meters, clefs, keys, lyrics, versatile input-language, cadenzas beams, slurs, triplets. %prep @@ -27,7 +27,7 @@ rm -rf $RPM_BUILD_ROOT strip lily/out/lilypond mi2mu/out/mi2mu 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/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.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/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/out/mudela-course.dvi Documentation/out/mudela-man.dvi Documentation/lelie_logo.gif +%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/links.text Documentation/out/mi2mu.text Documentation/out/mudela-book.text Documentation/out/other-packages.text BUGS TODO NEWS DEDICATION ANNOUNCE README input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.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/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/out/mudela-course.dvi Documentation/out/mudela-man.dvi Documentation/lelie_logo.gif /usr/bin/convert-mudela /usr/bin/mudela-book /usr/bin/lilypond diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in index 5cab6df5a7..a37f430221 100644 --- a/make/lilypond.spec.in +++ b/make/lilypond.spec.in @@ -14,7 +14,7 @@ Buildroot: /tmp/lilypond_build GNU LilyPond which converts music definition files into visual or audio output: it can typeset formatted sheet music to a TeX file and and (mechanical) performances to MIDI files. Features include multiple -meters, clefs, keys, lyrics, versatile input-language, cadenzas +staffs meters, clefs, keys, lyrics, versatile input-language, cadenzas beams, slurs, triplets. %prep |