From: fred Date: Sun, 24 Mar 2002 20:06:45 +0000 (+0000) Subject: lilypond-0.1.48 X-Git-Tag: release/1.5.59~3380 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3cc63809308f9197677ca4f2545ce7c485266ecc;p=lilypond.git lilypond-0.1.48 --- diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod index ef6370c88a..88ddb2410a 100644 --- a/Documentation/AUTHORS.pod +++ b/Documentation/AUTHORS.pod @@ -10,7 +10,7 @@ This file lists authors of GNU LilyPond, and what they wrote. =over 4 -=item * Han-Wen Nienhuys , http://www.stack.nl/~hanwen +=item * Han-Wen Nienhuys , http://www.stack.nl/~hanwen Main author. diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index 33e6b0d44f..6aa4226af8 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -32,8 +32,7 @@ work in Windows NT/95, but we don't promise to support it. =item * -GNU C++ v2.7 or better, with libg++ installed. If you use gcc 2.8 or -egcs then you should install a matching libg++ (ie. 2.8) version. +GNU C++ v2.7 or better. =item * @@ -358,7 +357,7 @@ to edit the definitions in F. =head1 AUTHORS -Han-Wen Nienhuys +Han-Wen Nienhuys Jan Nieuwenhuizen diff --git a/Documentation/Makefile b/Documentation/Makefile index d6a4cf732e..412f90fac7 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -35,15 +35,18 @@ default: do-doc # XPMS=$(wildcard *.xpm) giffiles=$(XPMS:.xpm=.gif) - -gifs: $(addprefix $(outdir)/, $(giffiles)) +outgiffiles=$(addprefix $(outdir)/, $(giffiles)) EXTRA_DISTFILES = $(XPMS) $(DOCFILES) vocabulary-data vocabulary-forms.el + # don't do DVI files. They can only be made if lily is installed do-doc: $(TEXTFILES) +gifs: $(outgiffiles) + + html: $(HTMLFILES) htmldist: html @@ -62,7 +65,7 @@ localclean: -MAN1FILES = lilypond convert-mudela mi2mu mudela-book +MAN1FILES = lilypond convert-mudela mi2mu mudela-book ly2dvi MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES))) localinstall: $(outdir)/lilypond.1 diff --git a/Documentation/index.pod b/Documentation/index.pod index 1bbba2ad37..2115ce220a 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -158,6 +158,13 @@ The manual page +=item * + +Easy titling for LilyPond + + =item * diff --git a/Documentation/introduction.doc b/Documentation/introduction.doc index 0b40054c99..05fdfff716 100644 --- a/Documentation/introduction.doc +++ b/Documentation/introduction.doc @@ -18,6 +18,8 @@ \author{Jan Nieuwenhuizen} \date{March 2, 1998} +\def\file#1{\verb+#1+} + % ugh: trick to get examples not generate par % these are for 16pt \def\mudelapaperlinewidth{-28.452756}% @@ -35,6 +37,9 @@ \def\mudelapaperinterbeam{3.140000}% \def\mudelapapergourlay_energybound{100000.000000}% \def\mudelapapergourlay_maxmeasures{14.000000}% +% huh? +% \def\exampleheight{2\mudelapaperbarsize pt} +\def\exampleheight{2cm} % ful of pars, needs the above \input lilyponddefs @@ -44,21 +49,19 @@ % generates par \turnOnPostScript% \def\turnOnPostScript{} +% generates par +\def\interscoreline{} % \begin{document} \maketitle -\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm} -\def\preexample{} +%\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm} +%\def\interexample{\hbox to10mm{\hfill\hbox to0pt{\hss\vbox to\exampleheight{\vss$\Longrightarrow$\vss}\hss}\hfill}} +\def\interexample{} +\def\preexample{\par} \def\postexample{\par\medskip} -% ugh, howto? -% \def\frag{\vbox to 2\mudelapaperbarsize pt{\vss} -% \def\interexample{\vss}\hskip15mm$\Longrightarrow$\hskip15mm} -% \def\preexample{\vbox to 2\mudelabarsize pt{\vss} -% \def\postexample{\vss}\par\medskip} - \def\file#1{{\texttt{#1}}} \setcounter{secnumdepth}{-1} @@ -68,44 +71,77 @@ This document should provide a gentle introduction to LilyPond's input language, Mudela. For completeness and nifty features see -\verb+input/*.ly+ +\file{input/*.ly} and -\verb+lily/parser.y, lily/lexer.l+. - - -\section{Notes: pitches and durations} - -\begin[fragment,verbatim]{mudela} +\file{lily/parser.y}, \file{lily/lexer.l}. +By tradition, Mudela files have the extension \file{.ly}. + +Mudela is an ascii script language +that is especially designed +to be easy to read and write. +In the following sections +the basic elements of Mudela are presented +in a series of simple examples. +Each example has +a verbatim snippet of Mudela% +% a snippet of Mudela as it's typed-in% +\footnote{ +In an effort not to bore you too much with details, +we leave-out some red tape +that's needed for a valid piece of Mudela. +Therefore, before you try-out any of the examples, +be sure to read the section `A complete example'.} +on the left +and the resulting fragment of music on the right +as it was produced by LilyPond. + +\section{Notes} + +Let's start with a single note, a quarter C + +\begin[fragment,verbatim,center]{mudela} c \end{mudela} -\begin[fragment,verbatim]{mudela} +Now that was easy and entering a scale is not much harder + +%\subsection{Pitches} + +\begin[fragment,verbatim,center]{mudela} c d e f g a b \end{mudela} -Durations are entered as reciproce values -\begin[fragment,verbatim]{mudela} -a1 | a2 a | a4 a a a -\end{mudela} -and default to the last previously used duration. +% \subsection{Durations} -Now we can write a little tune -\begin[fragment,verbatim]{mudela} -c d e c | c d e c | e f g2 | e4 f g2 +However, having only quarter notes may get a bit dull. +Durations are entered as their reciproce values +% a1 a2 a4 a a8 a a16 a a32 a a64 a a a a +\begin[fragment,verbatim,center]{mudela} +a1 a2 a4 a a8 a a16 a32 a64 \end{mudela} -note the explicit duration change for -the quarter e in the last measure. +note that you only have to specify +the duration when it changes: +Lily assumes a note has the same duration as the previous one. -Same for notes with flags -\begin[fragment,verbatim]{mudela} -a8 a16 a32 a64 a128 +Now we can already write a little tune +\begin[fragment,verbatim,center]{mudela} +c d e c | c d e c | e f g2 \end{mudela} - -\begin[fragment,verbatim]{mudela} +As you'll probably have guessed, +the vertical bar (pipe) \verb+|+ may be used to mark +measures. + +In the scale shown above +we left-out the last c note of the next octave. +Postfixing the pitch with a quote \verb+'+ +produces a note by one octave higher +\begin[fragment,verbatim,center]{mudela} c c' c'' \end{mudela} -\begin[fragment,verbatim]{mudela} +Prefixing the pitch with a quote \verb+'+ +produces a note by one octave lower +\begin[fragment,verbatim,center]{mudela} a 'a ''a \end{mudela} @@ -113,79 +149,269 @@ a 'a ''a A tie connects two adjacent noteheads -\begin[fragment,verbatim]{mudela} -c' ~ c +\begin[fragment,verbatim,center]{mudela} +e' ~ e \end{mudela} Whereas a slur rather connects `chords', -and tries to avoid crossing stems. +and tries to avoid crossing stems -\begin[fragment,verbatim]{mudela} -c'( )c +\begin[fragment,verbatim,center]{mudela} +e'( )e \end{mudela} -A (legato) slur can span several notes -\begin[fragment,verbatim]{mudela} -c'( d e )c +And of course, such a (legato) slur can span several notes +\begin[fragment,verbatim,center]{mudela} +c( d e )f \end{mudela} -\section{Beams and plets} +\section{Beams and Plets} -\begin[fragment,verbatim]{mudela} +A beam is +\begin[fragment,verbatim,center]{mudela} [a8 a] [a16 a a a] \end{mudela} -% [2/3 a8 a a]1/1 -\begin[fragment,verbatim]{mudela} +Here's a beamed triplet +\begin[fragment,verbatim,center]{mudela} [/3 a8 a a]/1 \end{mudela} -\begin[fragment,verbatim]{mudela} +a triplet without a beam +\begin[fragment,verbatim,center]{mudela} \[/3 a4 a8\] \end{mudela} +and a combination +\begin[fragment,verbatim,center]{mudela} +[/3 a8 a16 a] a8 \] +\end{mudela} + +Abbreviations +\begin[fragment,verbatim,center]{mudela} +c1:16 [:16 e1 g] +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +c4:32 [:16 c8 d8] +\end{mudela} + +\section{Notenames} + +Lily has predefined sets of notenames +for various languages% +\footnote{These are Dutch, English, German, Italian and Swedish. +Simply include the language specific init file \file{}.}. +The default set are the ones we like best are the Dutch notenames. + +A sharp is formed by adding \verb+is+ +\begin[fragment,verbatim,center]{mudela} +cis dis eis fis gis ais bis +\end{mudela} + +and a flat is formed by adding \verb+es+% +%\footnote{Exceptions: \verb+es+ and \verb+as+.} +\footnote{Exceptions: {\tt es} and {\tt as}.} +\begin[fragment,verbatim,center]{mudela} +ces des es fes ges as bes +\end{mudela} + +With the obvious names for double sharps +\begin[fragment,verbatim,center]{mudela} +cisis disis eisis fisis gisis aisis bisis +\end{mudela} + +and double flats +\begin[fragment,verbatim,center]{mudela} +ceses deses eses feses geses ases beses +\end{mudela} +See why we like-em? + +There are two special `notenames', the rest +\begin[fragment,verbatim,center]{mudela} +r16 [a a a] +\end{mudela} + +and the space +\begin[fragment,verbatim,center]{mudela} +a2 s-"diminuendo" | a +\end{mudela} + + \section{Commands} -\begin[fragment,verbatim]{mudela} +\begin[fragment,verbatim,center]{mudela} \clef "bass"; 'c \end{mudela} -\begin[fragment,verbatim]{mudela} +and a clef-change +\begin[fragment,verbatim,center]{mudela} +\clef "violin"; f' e' \clef "alto"; d' c' +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} \meter 3/4; c g g | \end{mudela} -\begin[fragment,verbatim]{mudela} +\begin[fragment,verbatim,center]{mudela} \key fis cis; 'g 'a 'b cis d e fis g' \end{mudela} +Note how Mudela allows you to +convey a musical message +rather than forces you to produce a list of typesetting commands. +If the music a \verb+cis+, you type a \verb+cis+. +Depending on the key and context of the note +Lily will determine what accidentals to typeset. + +A reminder accidental can be forced by +using an exclamation mark \verb+!+ +on a pitch a reminder accidental +\begin[fragment,verbatim,center]{mudela} +cis d e cis | c! d e c | +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +\meter 2/4; +\bar "|:"; c c \bar ":|:"; c c \bar ":|"; c c \bar "|."; +\end{mudela} -\section{Example} +\section{Scripts} + +Staccato may be abbreviated +\begin[fragment,verbatim,center]{mudela} +a-\staccato a-. +\end{mudela} + +Marcato +\begin[fragment,verbatim,center]{mudela} +a-\marcato a-| +\end{mudela} + +Staccatissimo +\begin[fragment,verbatim,center]{mudela} +a-\staccatissimo a-^ +\end{mudela} + +Sforzato +% duh? +% a-\sforzato a-> +\begin[fragment,verbatim,center]{mudela} +a-\accent a-> +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +a-\fermata +\end{mudela} + +\begin[fragment,verbatim,center]{mudela} +a-\fermata +\end{mudela} + +Dynamics from pianississimo upto mezzopiano +\begin[fragment,verbatim,center]{mudela} +a\ppp a\pp a\p a\mp +\end{mudela} + +from fortississimo downto mezzoforte +\begin[fragment,verbatim,center]{mudela} +a\fff a\ff a\f a\mf +\end{mudela} + +sforzando, sforzato and rinforzato +% huh? +% a\sfz a\sf a\rf +\begin[fragment,verbatim,center]{mudela} +a\sfz a\sf +\end{mudela} + +Fingering +\begin[fragment,verbatim,center]{mudela} +[e8-1 c'-5 g-3 f-2] a''-\flageolet +\end{mudela} + +Bowing +\begin[fragment,verbatim,center]{mudela} +c-\upbow d-\downbow +\end{mudela} + +Footwork +\begin[fragment,verbatim,center]{mudela} +\clef "bass"; \octave c; + 'b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] +\end{mudela} + +\section{Chords and Voices} + +Here's a simple chord +\begin[fragment,verbatim,center]{mudela} + +\end{mudela} + +here are a few +\begin[fragment,verbatim,center]{mudela} +< + { c()d()c } + { e()f()e } + { g()a()g } +> +\end{mudela} + +and similarly voices +\begin[fragment,verbatim,center]{mudela} +< + { \voiceone c g c g } + { \voicetwo 'c2 'g2 } +> +\end{mudela} + + +\section{A complete example} +%\label{se:complete} A Mudela file needs some red tape -\begin[verbatim]{mudela} +\begin[verbatim,center]{mudela} \score{ - \melodic{ + \melodic { \octave c'; - c d e c + c d e c | + c d e c | + e f g2 | } } \end{mudela} \section{Lyrics} -% this nesting syntax sucks -\begin[verbatim]{mudela} +\begin[verbatim,center]{mudela} \score{ < - \melodic \type Staff = bla < \melodic{\octave c'; c d e c} > -% huh? -% \lyric \type Lyrics = bli < \lyric{Fre- re Ja- que} > - > + \melodic{ + \octave c'; + c d e c | c d e c | + e f g2 | e4 f g2 + \bar "|."; + } + \type Lyrics \lyric{ + Fr\`e-4 re Ja- que + Fr\`e- re Ja- que + Dor- mez vous?2 + Dor-4 mez vous?2 + } + > } \end{mudela} \section{Variables} + +\section{Ly2dvi} +Check-out this handy little script +that not only may save you quite some keystrokes, +but produces titles and takes care of +margins and (hopefully) papersizes. +See \file{ly2dvi (1)}. + \end{document} diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index 97e7854e23..0e685b58f0 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -136,7 +136,7 @@ information, and small contributions. =item * -Han-Wen Nienhuys , http://www.stack.nl/~hanwen +Han-Wen Nienhuys , http://www.stack.nl/~hanwen =item * diff --git a/Documentation/links.pod b/Documentation/links.pod index 5caa99294d..965650c1ad 100644 --- a/Documentation/links.pod +++ b/Documentation/links.pod @@ -95,7 +95,7 @@ subscribe: send mail with subject "subscribe" to info-gnu-music-request@gnu.org. As this list is moderated, normal people should ask to drl@gnu.org or -hanwen@stack.nl to forward announces instead of sending it to +hanwen@cs.ruu.nl to forward announces instead of sending it to info-gnu-music@gnu.org =item help-gnu-music@gnu.org @@ -135,6 +135,10 @@ The Number One Free Operating System Kernel: Linux Dave Philips' Linux sound applications page +=item http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html + +Stochastic composing using LilyPond + =item http://www.medieval.org/emfaq/scores/software.html More software for (early) music. diff --git a/Documentation/ly2dvi.pod b/Documentation/ly2dvi.pod index 6a4767381f..7c2132b777 100644 --- a/Documentation/ly2dvi.pod +++ b/Documentation/ly2dvi.pod @@ -4,41 +4,169 @@ ly2dvi - convert mudela to DVI =head1 SYNOPSIS - ly2dvi file[.ly] + ly2dvi [options] inputfile[.ly] [....] =head1 DESCRIPTION -ly2dvi is a script that will setup LaTeX and TeX for you to ... +ly2dvi is a shell script which creates input file for LaTeX, +based on information from the output file(s) from lilypond. +The script handles multiple files. If a mudela file name is +specified lilypond is run to make an output (TeX) file. + +One or more LaTeX files are created, based on information found +in the output (TeX) file(s), and latex is finally run to create +one or more DVI files. =head1 OPTIONS =over 5 -=item B<--help> +=item B<-D,--debug> + +Set debug mode. There are two levels - in level one some debug +info is written, in level two the command C is run, which +echoes every command in the ly2dvi script. + +=item B<-O,--orientation=> + +Set orientation - portrait is the default. +(C<-O> landscape produces C<\usepackage[landscape]{article}>) + +=item B<-o,--output=> + +Set output directory. + +=item B<-h,--help> + +Print help. -give help +=item B<-k,--keep> -=item ..... +Keep the LaTeX file after the run. + +=item B<-l,--language> + +Specify LaTeX language. +(C<-l norsk> produces C<\usepackage[norsk]{babel}>). + +=item B<-p,--papersize=> + +Specify papersize. +(C<-p a4paper> produces C<\usepackage[a4paper]{article}>) + +=item B<-s,--separate> + +Normally all output files are included into one LaTeX file. +With this switch all files are run separately, to produce one +DVI file for each. =back -=head1 SOMETHING +=head1 FEATURES + +ly2dvi responds to several parameters specified in the mudela +file. They are overridden by corresponding command line options. + +=over 5 + +=item B + +Specify papersize. + +=item B + +Set orientation. + +=item B + +Specify LaTeX language + +=item B + +Specify the width (pt, mm or cm) of the printed lines. + +=back =head1 ENVIRONMENT +=over 5 + +=item B + +Additional directories for the input file(s). + +=item B + +Temporary directory. Default is /tmp + +=back + =head1 FILES -F contains ... +F is inspected for definitions used to extract +additional text definitions from the mudela file. In the current +version the following are defined: + +=over 5 + +=item B + +The title of the music. Centered on top of the first page. + +=item B<subtitle> + +Subtitle, centered below the title. + +=item B<composer> + +Name of the composer, rightflushed below the subtitle. + +=item B<arranger> + +Name of the arranger, rightflushed below the composer. + +=item B<instrument> + +Name of the instrument, leftflushed at same level as the composer. + +=back =head1 SEE ALSO -lilypond(1), +lilypond(1), TeX, LaTeX =head1 AUTHOR -JAF +Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>, +http://www.termo.unit.no/mtf/people/janaf/ =head1 BUGS -Does not handle margins properly +If you have found a bug, you should send a bugreport. + +=over 4 + +=item * +Send a copy of the input which causes the error. + +=item * +Send a description of the platform you use. + +=item * +Send a description of the LilyPond and ly2dvi version you use. + +=item * +Send a description of the bug itself. + +=item * +Send it to bug-gnu-music@gnu.org (you don't have to subscribe +to this mailinglist). + +=back + +=head1 REMARKS + +Only one papersize is supported, A4. Information on other sizes +(LaTeX names, horizontal and vertical sizes) should be mailed to +the author or to the mailing list. diff --git a/init/engraver.ly b/init/engraver.ly index 6b8b41f49b..6ab87d1c81 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -14,11 +14,22 @@ Staff = \translator { \consists "Staff_sym_engraver"; \consists "Collision_engraver"; \consists "Rest_collision_engraver"; - \consists "Line_group_engraver"; \accepts "Voice"; } +Rhythmic_staff = \translator +{ + \type "Engraver_group_engraver"; + nolines = "1"; + \consists "Pitch_squash_engraver"; + + \consists "Bar_engraver"; + \consists "Meter_engraver"; + \consists "Staff_sym_engraver"; + \consists "Line_group_engraver"; + \accepts "Voice"; +} Voice = \translator { \type "Engraver_group_engraver"; \consists "Dynamic_engraver"; @@ -58,6 +69,7 @@ Staff_group = \translator { \consists "Vertical_align_engraver"; \consists "Line_group_engraver"; \accepts "Staff"; + \accepts "Rhythmic_staff"; \accepts "Grandstaff"; \accepts "Lyrics"; } @@ -94,6 +106,7 @@ Score = \translator { \accepts "Staff_group"; \accepts "Staff"; + \accepts "Rhythmic_staff"; \accepts "Lyrics"; \accepts "Grandstaff"; } diff --git a/lily/head-grav.cc b/lily/head-grav.cc index d564b58e6e..61256ed63a 100644 --- a/lily/head-grav.cc +++ b/lily/head-grav.cc @@ -1,5 +1,5 @@ /* - headreg.cc -- part of GNU LilyPond + head-grav.cc -- part of GNU LilyPond (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> */ diff --git a/lily/pitch-squash-grav.cc b/lily/pitch-squash-grav.cc new file mode 100644 index 0000000000..5671dd4af8 --- /dev/null +++ b/lily/pitch-squash-grav.cc @@ -0,0 +1,25 @@ +/* + pitch-squash-grav.cc -- implement Pitch_squash_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> + + */ + +#include "pitch-squash-grav.hh" +#include "note-head.hh" + +void +Pitch_squash_engraver::acknowledge_element (Score_elem_info i) +{ + if (i.elem_l_->is_type_b (Note_head::static_name ())) + { + Note_head * nl = (Note_head*)i.elem_l_->item (); + nl->position_i_ =0; + } +} + +ADD_THIS_TRANSLATOR (Pitch_squash_engraver); +IMPLEMENT_IS_TYPE_B1(Pitch_squash_engraver, Engraver); +