# 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
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
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
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
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?
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?
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?
-26/Jul/97 LilyPond 0.0.76 1
+26/Jul/97 LilyPond 0.0.77 1
[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 }
+ >
+}
+
+*******************
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
(GNU) find
-
=item *
A fast computer (a full page of music typically takes 1 minute
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
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))
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)
--- /dev/null
+# 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 $< $@
=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
>
</a
>
+=item *
+<a href=ANNOUNCE.txt
+>
+The announce of 0.1
+</a
+>
+
+=item *
+<a href=DEDICATION.txt
+>
+DEDICATION
+</a
+>
+
=back
=over 5
+
+
=item *
<a href=TODO.txt
>
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
>
</a
>
-
=back
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
=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
add F<FILE> to the search path for input files.
-
=item B<-M,--midi>
do midi output only
=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
=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/>.
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
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
--- /dev/null
+=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.
+
+
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
\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
may be out of date.
+\section{Basic elements}
+
\subsection{Files}
The de-facto extension of Mudela is \file{.ly}. Files may be included by
\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}
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}
\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
\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}
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
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 {
\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
\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
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
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.
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 _\bm_\bf_\b/ 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 _\bm_\bf_\b/
+ subdirectory of the package. The primary site of
+ the Taupin version is ftp://hprib.lps.u-
+ psud.fr/pub/music_zips/musixtex.zip
R\bR\bR\bRE\bE\bE\bEC\bC\bC\bCO\bO\bO\bOM\bM\bM\bMM\bM\bM\bME\bE\bE\bEN\bN\bN\bND\bD\bD\bDE\bE\bE\bED\bD\bD\bD
Although not strictly necessary, these are recommended to
have.
- +\bo 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
INSTALL(1) LilyPond documentation INSTALL(1)
+ +\bo Perl. Most scripts are written in Perl. The
+ documentation was created with the perl's Plain
+ Old Documentation.
+
+\bo (GNU) find
+\bo A fast computer (a full page of music typically
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
INSTALL(1) LilyPond documentation INSTALL(1)
+ Since GNU LilyPond currently is beta, you are advised to
+ also use
+
--enable-debugging
--enable-checking
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
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
_\b/_\bu_\bs_\br_\b/_\bl_\bi_\bb_\b/_\bt_\be_\bx_\bm_\bf_\b/_\bt_\be_\bx_\bm_\bf_\b/_\bf_\bo_\bn_\bt_\bs_\b/_\bs_\bo_\bu_\br_\bc_\be_\b/_\bp_\bu_\bb_\bl_\bi_\bc_\b/. After I copied
the files, I ran "texhash"
- ftp://hprib.lps.u-psud.fr/pub/music_zips/musixtex.zip
-
C\bC\bC\bCA\bA\bA\bAV\bV\bV\bVE\bE\bE\bEA\bA\bA\bAT\bT\bT\bTS\bS\bS\bS
+\bo The -O2 option to gcc triggers a gcc bug on DEC
Alpha in dstream.cc. You should turn off this
file is in _\bm_\ba_\bk_\be_\b/_\bo_\bu_\bt_\b/_\bl_\bi_\bl_\by_\bp_\bo_\bn_\bd_\b._\bs_\bp_\be_\bc. You should be able to
create an rpm as a normal user. Be sure you have a
~/.rpmrc, and edit the RPM-dir in _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b._\bm_\ba_\bk_\be. (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
INSTALL(1) LilyPond documentation INSTALL(1)
+ create the RPM as a normal user the permissions will not
be set correctly, unfortunately)
W\bW\bW\bWI\bI\bI\bIN\bN\bN\bND\bD\bD\bDO\bO\bO\bOZ\bZ\bZ\bZE\bE\bE\bE
-
-28/Jul/97 LilyPond 0.0.76 5
+29/Jul/97 LilyPond 0.0.77 5
+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
* dots into separate item.
+ * return status
+
* lyrics in chords still fuck up.
* add to MIDI output:
* rewire acknowledge_element() logic with a process_acknowledged()
+ * progress when creating MIDI elts.
+
* pushgroup/popgroup
* whole head on ledger line
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
{
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,
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");
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
}
}
+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 .";
}
sub docxx_update
{
- my_system "make -C $depth doc++";
+ my_system "$MAKE -C $depth doc++";
}
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
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"
#
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.
+ * write a String_hash template
+
+ * write a Pointer_hash template
+
* fix/junk ambiguous String constructor overloads, e.g.:
String( int ) and String( char )
* disable this auto conv: const pointer -> bool -> string
- * PointerVec ?
+ * Pointer_array
* PCursor -> Pointer_cursor / PointerCursor ?
+/*
+ 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
/*
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++){
D(k) = d;
}
-#ifndef NDEBUG
+#ifdef PARANOID
assert((original()-P).norm() / P.norm() < EPS);
#endif
}
invm(i,j) = inv(j);
}
-#ifndef NDEBUG
+#ifdef PARANOID
Matrix I1(n), I2(original());
I1.unit();
assert((I1-I2*invm).norm()/I2.norm() < EPS);
}
-IMPLEMENT_STATIC_NAME(Full_storage);
-IMPLEMENT_STATIC_NAME(Matrix_storage);
IMPLEMENT_IS_TYPE_B(Matrix_storage);
IMPLEMENT_IS_TYPE_B1(Full_storage,Matrix_storage);
*/
#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()
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
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;
# 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
+++ /dev/null
-
-% enough for the parsing step
-
-include "init/dutch.ini"
-include "init/table_sixteen.ini"
--- /dev/null
+
+% enough for the parsing step
+
+include "init/dutch.ly"
+include "init/table_sixteen.ly"
+++ /dev/null
-%{
- common dutch names for notes. "es" means flat, "is" means sharp
-
-
-
-
- Please note that, while these names are used to enter *notes*, they
- actually are *melodic*s, i.e. they represent a pitch solely. Notes
- have a rhythmic part too. This is the reason that we don't write 'note { .. }'
-
-%}
-
-\notenames {
- ceses = \melodic_request { -1 0 -2 }
- ces = \melodic_request { -1 0 -1 }
- c = \melodic_request { -1 0 0 }
- cis = \melodic_request { -1 0 1 }
- cisis = \melodic_request { -1 0 2 }
- deses = \melodic_request { -1 1 -2 }
- des = \melodic_request { -1 1 -1 }
- d = \melodic_request { -1 1 0 }
- dis = \melodic_request { -1 1 1 }
- disis = \melodic_request { -1 1 2 }
- eeses = \melodic_request { -1 2 -2 }
- eses = \melodic_request { -1 2 -2 }
- ees = \melodic_request { -1 2 -1 }
- es = \melodic_request { -1 2 -1 }
- e = \melodic_request { -1 2 0 }
- eis = \melodic_request { -1 2 1 }
- eisis = \melodic_request { -1 2 2 }
- feses = \melodic_request { -1 3 -2 }
- fes = \melodic_request { -1 3 -1 }
- "f" = \melodic_request { -1 3 0 }
- fis = \melodic_request { -1 3 1 }
- fisis = \melodic_request { -1 3 2 }
- geses = \melodic_request { -1 4 -2 }
- ges = \melodic_request { -1 4 -1 }
- g = \melodic_request { -1 4 0 }
- gis = \melodic_request { -1 4 1 }
- gisis = \melodic_request { -1 4 2 }
- aeses = \melodic_request { -1 5 -2 }
- ases = \melodic_request { -1 5 -2 }
- aes = \melodic_request { -1 5 -1 }
- as = \melodic_request { -1 5 -1 }
- a = \melodic_request { -1 5 0 }
- ais = \melodic_request { -1 5 1 }
- aisis = \melodic_request { -1 5 2 }
- beses = \melodic_request { -1 6 -2 }
- bes = \melodic_request { -1 6 -1 }
- b = \melodic_request { -1 6 0 }
- bis = \melodic_request { -1 6 1 }
- bisis = \melodic_request { -1 6 2 }
-
-
- %
- % upper case: 1 octave lower.
- %
-
-
- Ceses = \melodic_request { -2 0 -2 }
- Ces = \melodic_request { -2 0 -1 }
- C = \melodic_request { -2 0 0 }
- Cis = \melodic_request { -2 0 1 }
- Cisis = \melodic_request { -2 0 2 }
- Deses = \melodic_request { -2 1 -2 }
- Des = \melodic_request { -2 1 -1 }
- D = \melodic_request { -2 1 0 }
- Dis = \melodic_request { -2 1 1 }
- Disis = \melodic_request { -2 1 2 }
- Eses = \melodic_request { -2 2 -2 }
- Es = \melodic_request { -2 2 -1 }
- E = \melodic_request { -2 2 0 }
- Eis = \melodic_request { -2 2 1 }
- Eisis = \melodic_request { -2 2 2 }
- Feses = \melodic_request { -2 3 -2 }
- Fes = \melodic_request { -2 3 -1 }
- F = \melodic_request { -2 3 0 }
- Fis = \melodic_request { -2 3 1 }
- Fisis = \melodic_request { -2 3 2 }
- Geses = \melodic_request { -2 4 -2 }
- Ges = \melodic_request { -2 4 -1 }
- G = \melodic_request { -2 4 0 }
- Gis = \melodic_request { -2 4 1 }
- Gisis = \melodic_request { -2 4 2 }
- Aeses = \melodic_request { -2 5 -2 }
- Ases = \melodic_request { -2 5 -2 }
- Aes = \melodic_request { -2 5 -1 }
- As = \melodic_request { -2 5 -1 }
- A = \melodic_request { -2 5 0 }
- Ais = \melodic_request { -2 5 1 }
- Aisis = \melodic_request { -2 5 2 }
- Beses = \melodic_request { -2 6 -2 }
- Bes = \melodic_request { -2 6 -1 }
- B = \melodic_request { -2 6 0 }
- Bis = \melodic_request { -2 6 1 }
- Bisis = \melodic_request { -2 6 2 }
-
-
-}
--- /dev/null
+%{
+ common dutch names for notes. "es" means flat, "is" means sharp
+
+
+
+
+ Please note that, while these names are used to enter *notes*, they
+ actually are *melodic*s, i.e. they represent a pitch solely. Notes
+ have a rhythmic part too. This is the reason that we don't write 'note { .. }'
+
+%}
+
+\notenames {
+ ceses = \melodic_request { -1 0 -2 }
+ ces = \melodic_request { -1 0 -1 }
+ c = \melodic_request { -1 0 0 }
+ cis = \melodic_request { -1 0 1 }
+ cisis = \melodic_request { -1 0 2 }
+ deses = \melodic_request { -1 1 -2 }
+ des = \melodic_request { -1 1 -1 }
+ d = \melodic_request { -1 1 0 }
+ dis = \melodic_request { -1 1 1 }
+ disis = \melodic_request { -1 1 2 }
+ eeses = \melodic_request { -1 2 -2 }
+ eses = \melodic_request { -1 2 -2 }
+ ees = \melodic_request { -1 2 -1 }
+ es = \melodic_request { -1 2 -1 }
+ e = \melodic_request { -1 2 0 }
+ eis = \melodic_request { -1 2 1 }
+ eisis = \melodic_request { -1 2 2 }
+ feses = \melodic_request { -1 3 -2 }
+ fes = \melodic_request { -1 3 -1 }
+ "f" = \melodic_request { -1 3 0 }
+ fis = \melodic_request { -1 3 1 }
+ fisis = \melodic_request { -1 3 2 }
+ geses = \melodic_request { -1 4 -2 }
+ ges = \melodic_request { -1 4 -1 }
+ g = \melodic_request { -1 4 0 }
+ gis = \melodic_request { -1 4 1 }
+ gisis = \melodic_request { -1 4 2 }
+ aeses = \melodic_request { -1 5 -2 }
+ ases = \melodic_request { -1 5 -2 }
+ aes = \melodic_request { -1 5 -1 }
+ as = \melodic_request { -1 5 -1 }
+ a = \melodic_request { -1 5 0 }
+ ais = \melodic_request { -1 5 1 }
+ aisis = \melodic_request { -1 5 2 }
+ beses = \melodic_request { -1 6 -2 }
+ bes = \melodic_request { -1 6 -1 }
+ b = \melodic_request { -1 6 0 }
+ bis = \melodic_request { -1 6 1 }
+ bisis = \melodic_request { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Ceses = \melodic_request { -2 0 -2 }
+ Ces = \melodic_request { -2 0 -1 }
+ C = \melodic_request { -2 0 0 }
+ Cis = \melodic_request { -2 0 1 }
+ Cisis = \melodic_request { -2 0 2 }
+ Deses = \melodic_request { -2 1 -2 }
+ Des = \melodic_request { -2 1 -1 }
+ D = \melodic_request { -2 1 0 }
+ Dis = \melodic_request { -2 1 1 }
+ Disis = \melodic_request { -2 1 2 }
+ Eses = \melodic_request { -2 2 -2 }
+ Es = \melodic_request { -2 2 -1 }
+ E = \melodic_request { -2 2 0 }
+ Eis = \melodic_request { -2 2 1 }
+ Eisis = \melodic_request { -2 2 2 }
+ Feses = \melodic_request { -2 3 -2 }
+ Fes = \melodic_request { -2 3 -1 }
+ F = \melodic_request { -2 3 0 }
+ Fis = \melodic_request { -2 3 1 }
+ Fisis = \melodic_request { -2 3 2 }
+ Geses = \melodic_request { -2 4 -2 }
+ Ges = \melodic_request { -2 4 -1 }
+ G = \melodic_request { -2 4 0 }
+ Gis = \melodic_request { -2 4 1 }
+ Gisis = \melodic_request { -2 4 2 }
+ Aeses = \melodic_request { -2 5 -2 }
+ Ases = \melodic_request { -2 5 -2 }
+ Aes = \melodic_request { -2 5 -1 }
+ As = \melodic_request { -2 5 -1 }
+ A = \melodic_request { -2 5 0 }
+ Ais = \melodic_request { -2 5 1 }
+ Aisis = \melodic_request { -2 5 2 }
+ Beses = \melodic_request { -2 6 -2 }
+ Bes = \melodic_request { -2 6 -1 }
+ B = \melodic_request { -2 6 0 }
+ Bis = \melodic_request { -2 6 1 }
+ Bisis = \melodic_request { -2 6 2 }
+
+
+}
+++ /dev/null
-%
-% declare the standard dynamic identifiers.
-%
-
-ppp = \absdynamic {7 }
-pp = \absdynamic { 6 }
-p = \absdynamic { 5 }
-mp = \absdynamic { 4 }
-mf = \absdynamic { 3 }
-f = \absdynamic { 2 } % f is a notename too.
-ff = \absdynamic { 1 }
-fff = \absdynamic { 0 }
-
-cr = \spandynamic { 1 1 }
-decr = \spandynamic { -1 1 }
-rc = \spandynamic { 1 2 } % stop a crescendo (worrks for decrescendo too)
-
--- /dev/null
+%
+% declare the standard dynamic identifiers.
+%
+
+ppp = \absdynamic {7 }
+pp = \absdynamic { 6 }
+p = \absdynamic { 5 }
+mp = \absdynamic { 4 }
+mf = \absdynamic { 3 }
+f = \absdynamic { 2 } % f is a notename too.
+ff = \absdynamic { 1 }
+fff = \absdynamic { 0 }
+
+cr = \spandynamic { 1 1 }
+decr = \spandynamic { -1 1 }
+rc = \spandynamic { 1 2 } % stop a crescendo (worrks for decrescendo too)
+
+++ /dev/null
-
-%
-% f = flat, s = sharp.
-%
-english_names = notenames {
- "cff" 0 -2 "cf" 0 -1 "c" 0 0 "cs" 0 1 "css" 0 2
- "dff" 1 -2 "df" 1 -1 "d" 1 0 "ds" 1 1 "dss" 1 2
- "eff" 2 -2 "ef" 2 -1 "e" 2 0 "es" 2 1 "ess" 2 2
- "fff" 3 -2 "ff" 3 -1 "f" 3 0 "fs" 3 1 "fss" 3 2
- "gff" 4 -2 "gf" 4 -1 "g" 4 0 "gs" 4 1 "gss" 4 2
- "aff" 5 -2 "af" 5 -1 "a" 5 0 "as" 5 1 "ass" 5 2
- "bff" 6 -2 "bf" 6 -1 "b" 6 0 "bs" 6 1 "bss" 6 2
-}
--- /dev/null
+
+%
+% f = flat, s = sharp.
+%
+english_names = notenames {
+ "cff" 0 -2 "cf" 0 -1 "c" 0 0 "cs" 0 1 "css" 0 2
+ "dff" 1 -2 "df" 1 -1 "d" 1 0 "ds" 1 1 "dss" 1 2
+ "eff" 2 -2 "ef" 2 -1 "e" 2 0 "es" 2 1 "ess" 2 2
+ "fff" 3 -2 "ff" 3 -1 "f" 3 0 "fs" 3 1 "fss" 3 2
+ "gff" 4 -2 "gf" 4 -1 "g" 4 0 "gs" 4 1 "gss" 4 2
+ "aff" 5 -2 "af" 5 -1 "a" 5 0 "as" 5 1 "ass" 5 2
+ "bff" 6 -2 "bf" 6 -1 "b" 6 0 "bs" 6 1 "bss" 6 2
+}
+++ /dev/null
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-staff_engraver = \requesttranslator {
- Engraver "Engraver_group_engraver"
- \alias "Staff";
- \consists "Line_group_engraver";
- \consists "Bar_engraver";
- \consists "Clef_engraver";
- \consists "Key_engraver";
- \consists "Meter_engraver";
- \consists "Local_key_engraver";
- \consists "Staff_sym_engraver";
- \consists "Collision_engraver";
- \consists "Rest_collision_engraver";
- \contains \requesttranslator {
- Engraver "Voice_group_engravers"
- \alias "Voice_group";
- \consists "Dynamic_engraver";
- \consists "Stem_beam_engraver";
- \consists "Script_engraver";
- \consists "Note_column_engraver";
- \consists "Slur_engraver";
- \contains \requesttranslator {
- Engraver "Engraver_group_engraver"
- \alias "Voice";
- \consists "Note_head_engraver" ;
- \consists "Tie_engraver";
- }
- }
- }
-
-piano_staff_engraver = \requesttranslator {
- Engraver "Engraver_group_engraver"
- \alias "Piano";
- \alias "Hoenoemjedat";
- \consists "Span_bar_engraver";
- \consists "Vertical_align_engraver";
- \consists "Line_group_engraver";
- \consists "Piano_bar_engraver";
- \contains\requesttranslator { \staff_engraver }
-}
-
-staff_group_engraver = \requesttranslator {
- Engraver "Engraver_group_engraver"
- \alias "Staff_group";
- \consists "Span_bar_engraver";
- \consists "Vertical_align_engraver";
- \consists "Line_group_engraver";
- \contains\requesttranslator { \staff_engraver }
-}
-lyric_engraver = \requesttranslator {
- Engraver "Engraver_group_engraver"
- \alias "Lyric";
-
- \contains\requesttranslator{
- Engraver "Engraver_group_engraver"
- \consists "Lyric_engraver";
- \consists "Line_group_engraver";
- \consists "Swallow_engraver";
- }
- \consists "Vertical_align_engraver";
-}
-
-orchestral_score_translator = \requesttranslator {
- Engraver Score_engraver
- \alias "Score";
-
- \consists "Bar_align_engraver";
- \consists "Clef_align_engraver";
- \consists "Key_align_engraver";
- \consists "Meter_align_engraver";
- \consists "Score_horizontal_align_engraver";
- \consists "Vertical_align_engraver";
- \consists "Span_score_bar_engraver";
-
- \contains \requesttranslator { \staff_group_engraver }
- \contains \requesttranslator { \lyric_engraver }
- \contains \requesttranslator { \piano_staff_engraver }
-
-
-}
-
-
-
--- /dev/null
+%
+% setup for Request->Element conversion. Guru-only
+%
+
+staff_engraver = \requesttranslator {
+ Engraver "Engraver_group_engraver"
+ \alias "Staff";
+ \consists "Line_group_engraver";
+ \consists "Bar_engraver";
+ \consists "Clef_engraver";
+ \consists "Key_engraver";
+ \consists "Meter_engraver";
+ \consists "Local_key_engraver";
+ \consists "Staff_sym_engraver";
+ \consists "Collision_engraver";
+ \consists "Rest_collision_engraver";
+ \contains \requesttranslator {
+ Engraver "Voice_group_engravers"
+ \alias "Voice_group";
+ \consists "Dynamic_engraver";
+ \consists "Stem_beam_engraver";
+ \consists "Script_engraver";
+ \consists "Note_column_engraver";
+ \consists "Slur_engraver";
+ \contains \requesttranslator {
+ Engraver "Engraver_group_engraver"
+ \alias "Voice";
+ \consists "Note_head_engraver" ;
+ \consists "Tie_engraver";
+ }
+ }
+ }
+
+piano_staff_engraver = \requesttranslator {
+ Engraver "Engraver_group_engraver"
+ \alias "Piano";
+ \alias "Hoenoemjedat";
+ \consists "Span_bar_engraver";
+ \consists "Vertical_align_engraver";
+ \consists "Line_group_engraver";
+ \consists "Piano_bar_engraver";
+ \contains\requesttranslator { \staff_engraver }
+}
+
+staff_group_engraver = \requesttranslator {
+ Engraver "Engraver_group_engraver"
+ \alias "Staff_group";
+ \consists "Span_bar_engraver";
+ \consists "Vertical_align_engraver";
+ \consists "Line_group_engraver";
+ \contains\requesttranslator { \staff_engraver }
+}
+lyric_engraver = \requesttranslator {
+ Engraver "Engraver_group_engraver"
+ \alias "Lyric";
+
+ \contains\requesttranslator{
+ Engraver "Engraver_group_engraver"
+ \consists "Lyric_engraver";
+ \consists "Line_group_engraver";
+ \consists "Swallow_engraver";
+ }
+ \consists "Vertical_align_engraver";
+}
+
+orchestral_score_translator = \requesttranslator {
+ Engraver Score_engraver
+ \alias "Score";
+
+ \consists "Bar_align_engraver";
+ \consists "Clef_align_engraver";
+ \consists "Key_align_engraver";
+ \consists "Meter_align_engraver";
+ \consists "Score_horizontal_align_engraver";
+ \consists "Vertical_align_engraver";
+ \consists "Span_score_bar_engraver";
+
+ \contains \requesttranslator { \staff_group_engraver }
+ \contains \requesttranslator { \lyric_engraver }
+ \contains \requesttranslator { \piano_staff_engraver }
+
+
+}
+
+
+
+++ /dev/null
-
-default_midi = \midi {
- \tempo 4:60;
- \include "performer.ini"
-}
--- /dev/null
+
+default_midi = \midi {
+ \tempo 4:60;
+ \include "performer.ly"
+}
+++ /dev/null
-
-\include "table16.ini"
-\include "engraver.ini"
-
-default_paper = \paper {
- linewidth = 15.0 \cm;
- rule_thickness = 0.4\pt;
- bar_size = 16.0 \pt;
- interline = 4.\pt;
- notewidth = 5.0\pt;
- wholewidth = 4.8\pt;
- unitspace = 30.\pt;
-
- %
- interbeam = 2.667\pt;
- geometric = 1.414;
- \symboltables { \table_sixteen }
- \requesttranslator { \orchestral_score_translator }
-}
--- /dev/null
+
+\include "table16.ly"
+\include "engraver.ly"
+
+default_paper = \paper {
+ linewidth = 15.0 \cm;
+ rule_thickness = 0.4\pt;
+ bar_size = 16.0 \pt;
+ interline = 4.\pt;
+ notewidth = 5.0\pt;
+ wholewidth = 4.8\pt;
+ unitspace = 30.\pt;
+ basicspace = 5.0\pt;
+
+ %
+ interbeam = 2.667\pt;
+ geometric = 1.414;
+ \symboltables { \table_sixteen }
+ \requesttranslator { \orchestral_score_translator }
+}
+++ /dev/null
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-\requesttranslator {
- Performer "Score_performer"
- \alias "Score";
-% \consists "Clef_performer";
-% \consists "Key_performer";
-% \consists "Meter_performer";
-% \consists "Tempo_performer";
-
- \contains\requesttranslator {
- Performer "Staff_performer"
- \alias "Midi";
- \contains\requesttranslator{
- Performer "Voice_group_performer"
- \alias "Voice_group";
- \contains\requesttranslator{
- Performer "Performer_group_performer"
- \consists "Lyric_performer";
- \consists "Note_performer";
-
- }
- }
- \consists "Key_performer";
- \consists "Meter_performer";
- \consists "Swallow_performer";
- }
-}
--- /dev/null
+%
+% setup for Request->Element conversion. Guru-only
+%
+
+\requesttranslator {
+ Performer "Score_performer"
+ \alias "Score";
+% \consists "Clef_performer";
+% \consists "Key_performer";
+% \consists "Meter_performer";
+% \consists "Tempo_performer";
+
+ \contains\requesttranslator {
+ Performer "Staff_performer"
+ \alias "Midi";
+ \contains\requesttranslator{
+ Performer "Voice_group_performer"
+ \alias "Voice_group";
+ \contains\requesttranslator{
+ Performer "Performer_group_performer"
+ \consists "Lyric_performer";
+ \consists "Note_performer";
+
+ }
+ }
+ \consists "Key_performer";
+ \consists "Meter_performer";
+ \consists "Swallow_performer";
+ }
+}
+++ /dev/null
-
-% name = \script {
-% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted priority }
-%
-
-accent = \script { "sforzato" 0 -1 0 0 0 }
-marcato = \script { "marcato" 0 -1 0 1 0 }
-staccatissimo = \script { "staccatissimo" 0 -1 0 1 0 }
-portato= \script { "portato" 0 -1 0 1 0 }
-fermata = \script { "fermata" 0 1 0 1 0 }
-stopped = \script { "stopped" 0 0 1 0 0 }
-staccato = \script { "staccato" 1 -1 0 0 0 }
-tenuto = \script {"tenuto" 0 -1 0 0 0 }
-upbow = \script { "upbow" 0 0 1 0 0 }
-downbow = \script { "downbow" 0 0 1 0 0 }
-lheel = \script { "heel" 0 0 -1 0 0 }
-rheel = \script { "heel" 0 0 1 0 0 }
-ltoe = \script { "toe" 0 0 -1 0 0 }
-rtoe = \script { "toe" 0 0 1 0 0 }
-lbheel = \script { "bheel" 0 0 -1 0 0 }
-rbheel = \script { "bheel" 0 0 1 0 0 }
-lbtoe = \script { "btoe" 0 0 -1 0 0 }
-rbtoe = \script { "btoe" 0 0 1 0 0 }
-lfheel = \script { "fheel" 0 0 -1 0 0 }
-rfheel = \script { "fheel" 0 0 1 0 0 }
-lftoe = \script { "ftoe" 0 0 -1 0 0 }
-rftoe = \script { "ftoe" 0 0 1 0 0 }
-%
-% left toe: right heel:
-%
-% u -
-% - u
-% ---|-----|-- --|x----|x--
-% ---|-----|-- --|-----|---
-% --x|----x|-- --|-----|---
-% ^ -
-% - ^
-% back front back front
-%
-%
-% heu, me thought for a moment that order in table_xxx.ini was
-% being translated into priority...
-back = \script { "back" 0 -1 -1 0 0 }
-front = \script { "front" 0 -1 1 0 0 }
--- /dev/null
+
+% name = \script {
+% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted priority }
+%
+
+accent = \script { "sforzato" 0 -1 0 0 0 }
+marcato = \script { "marcato" 0 -1 0 1 0 }
+staccatissimo = \script { "staccatissimo" 0 -1 0 1 0 }
+portato= \script { "portato" 0 -1 0 1 0 }
+fermata = \script { "fermata" 0 1 0 1 0 }
+stopped = \script { "stopped" 0 0 1 0 0 }
+staccato = \script { "staccato" 1 -1 0 0 0 }
+tenuto = \script {"tenuto" 0 -1 0 0 0 }
+upbow = \script { "upbow" 0 0 1 0 0 }
+downbow = \script { "downbow" 0 0 1 0 0 }
+lheel = \script { "heel" 0 0 -1 0 0 }
+rheel = \script { "heel" 0 0 1 0 0 }
+ltoe = \script { "toe" 0 0 -1 0 0 }
+rtoe = \script { "toe" 0 0 1 0 0 }
+lbheel = \script { "bheel" 0 0 -1 0 0 }
+rbheel = \script { "bheel" 0 0 1 0 0 }
+lbtoe = \script { "btoe" 0 0 -1 0 0 }
+rbtoe = \script { "btoe" 0 0 1 0 0 }
+lfheel = \script { "fheel" 0 0 -1 0 0 }
+rfheel = \script { "fheel" 0 0 1 0 0 }
+lftoe = \script { "ftoe" 0 0 -1 0 0 }
+rftoe = \script { "ftoe" 0 0 1 0 0 }
+%
+% left toe: right heel:
+%
+% u -
+% - u
+% ---|-----|-- --|x----|x--
+% ---|-----|-- --|-----|---
+% --x|----x|-- --|-----|---
+% ^ -
+% - ^
+% back front back front
+%
+%
+% 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 }
+++ /dev/null
-%
-% common Swedish names for notes. "ess" means flat, "iss" means sharp
-%
-% by Mats Bengtsson.
-
-
-%
-% Please note that, while these names are used to enter *notes*, they
-% actually are *melodic*s, i.e. they represent a pitch solely. Notes
-% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
-%
-\notenames {
- cessess = \melodic_request { -1 0 -2 }
- cess = \melodic_request { -1 0 -1 }
- c = \melodic_request { -1 0 0 }
- ciss = \melodic_request { -1 0 1 }
- cississ = \melodic_request { -1 0 2 }
- dessess = \melodic_request { -1 1 -2 }
- dess = \melodic_request { -1 1 -1 }
- d = \melodic_request { -1 1 0 }
- diss = \melodic_request { -1 1 1 }
- dississ = \melodic_request { -1 1 2 }
- essess = \melodic_request { -1 2 -2 }
- ess = \melodic_request { -1 2 -1 }
- e = \melodic_request { -1 2 0 }
- eiss = \melodic_request { -1 2 1 }
- eississ = \melodic_request { -1 2 2 }
- fessess = \melodic_request { -1 3 -2 }
- fess = \melodic_request { -1 3 -1 }
- "f" = \melodic_request { -1 3 0 }
- fiss = \melodic_request { -1 3 1 }
- fississ = \melodic_request { -1 3 2 }
- gessess = \melodic_request { -1 4 -2 }
- gess = \melodic_request { -1 4 -1 }
- g = \melodic_request { -1 4 0 }
- giss = \melodic_request { -1 4 1 }
- gississ = \melodic_request { -1 4 2 }
- assess = \melodic_request { -1 5 -2 }
- ass = \melodic_request { -1 5 -1 }
- a = \melodic_request { -1 5 0 }
- aiss = \melodic_request { -1 5 1 }
- aississ = \melodic_request { -1 5 2 }
- hessess = \melodic_request { -1 6 -2 }
- b = \melodic_request { -1 6 -1 }
- h = \melodic_request { -1 6 0 }
- hiss = \melodic_request { -1 6 1 }
- hississ = \melodic_request { -1 6 2 }
-
-
- %
- % upper case: 1 octave lower.
- %
-
-
- Cessess = \melodic_request { -2 0 -2 }
- Cess = \melodic_request { -2 0 -1 }
- C = \melodic_request { -2 0 0 }
- Ciss = \melodic_request { -2 0 1 }
- Cississ = \melodic_request { -2 0 2 }
- Dessess = \melodic_request { -2 1 -2 }
- Dess = \melodic_request { -2 1 -1 }
- D = \melodic_request { -2 1 0 }
- Diss = \melodic_request { -2 1 1 }
- Dississ = \melodic_request { -2 1 2 }
- Essess = \melodic_request { -2 2 -2 }
- Ess = \melodic_request { -2 2 -1 }
- E = \melodic_request { -2 2 0 }
- Eiss = \melodic_request { -2 2 1 }
- Eississ = \melodic_request { -2 2 2 }
- Fessess = \melodic_request { -2 3 -2 }
- Fess = \melodic_request { -2 3 -1 }
- F = \melodic_request { -2 3 0 }
- Fiss = \melodic_request { -2 3 1 }
- Fississ = \melodic_request { -2 3 2 }
- Gessess = \melodic_request { -2 4 -2 }
- Gess = \melodic_request { -2 4 -1 }
- G = \melodic_request { -2 4 0 }
- Giss = \melodic_request { -2 4 1 }
- Gississ = \melodic_request { -2 4 2 }
- Assess = \melodic_request { -2 5 -2 }
- Ass = \melodic_request { -2 5 -1 }
- A = \melodic_request { -2 5 0 }
- Aiss = \melodic_request { -2 5 1 }
- Aississ = \melodic_request { -2 5 2 }
- Hessess = \melodic_request { -2 6 -2 }
- B = \melodic_request { -2 6 -1 }
- H = \melodic_request { -2 6 0 }
- Hiss = \melodic_request { -2 6 1 }
- Hississ = \melodic_request { -2 6 2 }
-
-
-}
--- /dev/null
+%
+% common Swedish names for notes. "ess" means flat, "iss" means sharp
+%
+% by Mats Bengtsson.
+
+
+%
+% Please note that, while these names are used to enter *notes*, they
+% actually are *melodic*s, i.e. they represent a pitch solely. Notes
+% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
+%
+\notenames {
+ cessess = \melodic_request { -1 0 -2 }
+ cess = \melodic_request { -1 0 -1 }
+ c = \melodic_request { -1 0 0 }
+ ciss = \melodic_request { -1 0 1 }
+ cississ = \melodic_request { -1 0 2 }
+ dessess = \melodic_request { -1 1 -2 }
+ dess = \melodic_request { -1 1 -1 }
+ d = \melodic_request { -1 1 0 }
+ diss = \melodic_request { -1 1 1 }
+ dississ = \melodic_request { -1 1 2 }
+ essess = \melodic_request { -1 2 -2 }
+ ess = \melodic_request { -1 2 -1 }
+ e = \melodic_request { -1 2 0 }
+ eiss = \melodic_request { -1 2 1 }
+ eississ = \melodic_request { -1 2 2 }
+ fessess = \melodic_request { -1 3 -2 }
+ fess = \melodic_request { -1 3 -1 }
+ "f" = \melodic_request { -1 3 0 }
+ fiss = \melodic_request { -1 3 1 }
+ fississ = \melodic_request { -1 3 2 }
+ gessess = \melodic_request { -1 4 -2 }
+ gess = \melodic_request { -1 4 -1 }
+ g = \melodic_request { -1 4 0 }
+ giss = \melodic_request { -1 4 1 }
+ gississ = \melodic_request { -1 4 2 }
+ assess = \melodic_request { -1 5 -2 }
+ ass = \melodic_request { -1 5 -1 }
+ a = \melodic_request { -1 5 0 }
+ aiss = \melodic_request { -1 5 1 }
+ aississ = \melodic_request { -1 5 2 }
+ hessess = \melodic_request { -1 6 -2 }
+ b = \melodic_request { -1 6 -1 }
+ h = \melodic_request { -1 6 0 }
+ hiss = \melodic_request { -1 6 1 }
+ hississ = \melodic_request { -1 6 2 }
+
+
+ %
+ % upper case: 1 octave lower.
+ %
+
+
+ Cessess = \melodic_request { -2 0 -2 }
+ Cess = \melodic_request { -2 0 -1 }
+ C = \melodic_request { -2 0 0 }
+ Ciss = \melodic_request { -2 0 1 }
+ Cississ = \melodic_request { -2 0 2 }
+ Dessess = \melodic_request { -2 1 -2 }
+ Dess = \melodic_request { -2 1 -1 }
+ D = \melodic_request { -2 1 0 }
+ Diss = \melodic_request { -2 1 1 }
+ Dississ = \melodic_request { -2 1 2 }
+ Essess = \melodic_request { -2 2 -2 }
+ Ess = \melodic_request { -2 2 -1 }
+ E = \melodic_request { -2 2 0 }
+ Eiss = \melodic_request { -2 2 1 }
+ Eississ = \melodic_request { -2 2 2 }
+ Fessess = \melodic_request { -2 3 -2 }
+ Fess = \melodic_request { -2 3 -1 }
+ F = \melodic_request { -2 3 0 }
+ Fiss = \melodic_request { -2 3 1 }
+ Fississ = \melodic_request { -2 3 2 }
+ Gessess = \melodic_request { -2 4 -2 }
+ Gess = \melodic_request { -2 4 -1 }
+ G = \melodic_request { -2 4 0 }
+ Giss = \melodic_request { -2 4 1 }
+ Gississ = \melodic_request { -2 4 2 }
+ Assess = \melodic_request { -2 5 -2 }
+ Ass = \melodic_request { -2 5 -1 }
+ A = \melodic_request { -2 5 0 }
+ Aiss = \melodic_request { -2 5 1 }
+ Aississ = \melodic_request { -2 5 2 }
+ Hessess = \melodic_request { -2 6 -2 }
+ B = \melodic_request { -2 6 -1 }
+ H = \melodic_request { -2 6 0 }
+ Hiss = \melodic_request { -2 6 1 }
+ Hississ = \melodic_request { -2 6 2 }
+
+
+}
+++ /dev/null
-\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
-
--- /dev/null
+\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
+
+++ /dev/null
-%
-% spacing info for LilyPond. Do not edit this if you're not a guru.
-% It has a lot of hard-wired stringconstants
-%
-
-
-table_sixteen=
-\symboltables {
-
- \texid "\input lilyponddefs \musixsixteendefs"
-
- % index TeXstring, xmin xmax ymin ymax
-
- "scripts" = \table {
- "fermata" "\fermata" 0.0\pt 0.0\pt 0.0\pt 6.0\pt
- "-fermata" "\ifermata" 0.0\pt 0.0\pt -6.0\pt 0.0\pt
- "portato" "\portato" 0.0\pt 4.0\pt 0.0\pt 2.0\pt
- "-portato" "\iportato" 0.0\pt 4.0\pt -2.0\pt 0.0\pt
- "tenuto" "\tenuto" 0.0\pt 4.0\pt -1.0\pt 1.0\pt
- "-tenuto" "\itenuto" 0.0\pt 4.0\pt -1.0\pt 1.0\pt
- "sforzato" "\sforzato" -0.8\pt 4.0\pt -1.92\pt 1.92\pt
- "marcato" "\marcato" 0.0\pt 4.0\pt 0.0\pt 4.0\pt
- "-marcato" "\imarcato" 0.0\pt 4.0\pt -4.0\pt 0.0\pt
- "staccato" "\staccato" 0.0\pt 0.0\pt -1.1\pt 1.1\pt
- "staccatissimo" "\staccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt
- "-staccatissimo" "\istaccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt
- "upbow" "\upbow" -1.0\pt 6.0\pt 0.0\pt 5.0\pt
- "downbow" "\downbow" 0.0\pt 5.0\pt 0.0\pt 7.5\pt
- "back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
- "-front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
- "heel" "\heel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
- "toe" "\toe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
- "bheel" "\bheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
- "btoe" "\btoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
- "fheel" "\fheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
- "ftoe" "\ftoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
- "-back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
- "front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
- }
-
- "style" = \table {
- "roman" "\settext{%}" 0.0\pt 5.0\pt 0.0\pt 8.0\pt
- "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
- "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
- }
- "dynamics" = \table {
-
- "mf" "\dynmf"
- "fff" "\dynfff"
- "ff" "\dynff"
- "f" "\dynf"
- "mp" "\dynmp"
- "p" "\dynp"
- "pp" "\dynpp"
- "ppp" "\dynppp"
-
- }
- "align" = \table {
- "-1" "\leftalign{%}"
- "0" "\centeralign{%}"
- "1" "\rightalign{%}"
- }
-
- "clefs" = \table {
- "violin" "\violinclef" 0.0\pt 12.8\pt -10.0\pt 18.0\pt
- "bass" "\bassclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt
- "alto" "\altoclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt
- "tenor" "\altoclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt
- "violin_change" "\cviolinclef" 0.0\pt 11.2\pt -12.0\pt 12.0\pt
- "bass_change" "\cbassclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
- "alto_change" "\caltoclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
- "tenor_change" "\caltoclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
- }
-
- "balls" = \table {
- "1" "\wholeball" 0.0\pt 6.0\pt -2.0\pt 2.0\pt
- "2" "\halfball" 0.0\pt 5.0\pt -2.0\pt 2.0\pt
- "4" "\quartball" 0.0\pt 5.0\pt -2.0\pt 2.0\pt
- }
-
- "slur" = \table {
- "whole" "\slurchar%{%}"
- "half" "\hslurchar%{%}"
- }
- "accidentals" = \table {
- "-2" "\flatflat" 0.0\pt 8.16\pt -2.5\pt 7.5\pt
- "-1" "\flat" 0.0\pt 4.8\pt -2.5\pt 7.5\pt
- "0" "\natural" 0.0\pt 4.8\pt -7.5\pt 7.5\pt
- "1" "\sharp" 0.0\pt 3.6\pt -7.5\pt 7.5\pt
- "2" "\sharpsharp" 0.0\pt 4.8\pt -2.5\pt 7.5\pt
- }
-
- "streepjes" = \table {
- "toplines" "\toplines{%}" -1.0\pt 7.0\pt 0.0\pt 0.0\pt
- "botlines" "\botlines{%}" -1.0\pt 7.0\pt 0.0\pt 0.0\pt
- }
-
- "bars" = \table {
- "empty" "\emptybar"
- "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 16.0\pt
- "||" "\doublebar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt
- "|." "\finishbar{%}" -4.0\pt 0.0\pt 0.0\pt 16.0\pt
- ":|" "\repeatbar" -8.0\pt 0.0\pt 0.0\pt 16.0\pt
- "|:" "\startrepeat" 0.0\pt 8.0\pt 0.0\pt 16.0\pt
- ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt
-
- }
-
- "rests" = \table {
- "1o" "\outsidewholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt
- "1" "\wholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt
- "2" "\halfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt
- "2o" "\outsidehalfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt
- "4o" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt
- "8o" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt
- "16o" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt
- "4" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt
- "8" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt
- "16" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt
- "32" "\thirtysecondrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt
- "64" "\sixtyfourthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt
- "128" "\hundredtwentyeighthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt
- }
-
- "meters" = \table {
- "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- }
-
- % dims ignored for this table
- "param" = \table {
- "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
- "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
- "linestaf" "\linestafsym{%}{%}"
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- % ugh. 8pt
- "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
- "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
- }
-
- "dots" = \table {
- "1" "\lsingledot" 0.0\pt 2.0\pt -1.0\pt 1.0\pt
- "2" "\ldoubledot" 0.0\pt 5.0\pt -1.0\pt 1.0\pt
- "3" "\ltripledot" 0.0\pt 8.0\pt -1.0\pt 1.0\pt
- }
-
- "flags" = \table {
- "8" "\eighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "16" "\sixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "32" "\thirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "64" "\sixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "128" "\hundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "-8" "\deighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "-16" "\dsixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "-32" "\dthirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "-64" "\dsixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- "-128" "\dhundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
- }
-
- "beamslopes" = \table {
- "slope" "\beamslope{%}{%}"
- "horizontal" "\rulesym{%}{%}"
- }
-
-}
-
--- /dev/null
+%
+% spacing info for LilyPond. Do not edit this if you're not a guru.
+% It has a lot of hard-wired stringconstants
+%
+
+
+table_sixteen=
+\symboltables {
+
+ \texid "\input lilyponddefs \musixsixteendefs"
+
+ % index TeXstring, xmin xmax ymin ymax
+
+ "scripts" = \table {
+ "fermata" "\fermata" 0.0\pt 0.0\pt 0.0\pt 6.0\pt
+ "-fermata" "\ifermata" 0.0\pt 0.0\pt -6.0\pt 0.0\pt
+ "portato" "\portato" 0.0\pt 4.0\pt 0.0\pt 2.0\pt
+ "-portato" "\iportato" 0.0\pt 4.0\pt -2.0\pt 0.0\pt
+ "tenuto" "\tenuto" 0.0\pt 4.0\pt -1.0\pt 1.0\pt
+ "-tenuto" "\itenuto" 0.0\pt 4.0\pt -1.0\pt 1.0\pt
+ "sforzato" "\sforzato" -0.8\pt 4.0\pt -1.92\pt 1.92\pt
+ "marcato" "\marcato" 0.0\pt 4.0\pt 0.0\pt 4.0\pt
+ "-marcato" "\imarcato" 0.0\pt 4.0\pt -4.0\pt 0.0\pt
+ "staccato" "\staccato" 0.0\pt 0.0\pt -1.1\pt 1.1\pt
+ "staccatissimo" "\staccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt
+ "-staccatissimo" "\istaccatissimo" 0.0\pt 0.0\pt 0.0\pt 1.0\pt
+ "upbow" "\upbow" -1.0\pt 6.0\pt 0.0\pt 5.0\pt
+ "downbow" "\downbow" 0.0\pt 5.0\pt 0.0\pt 7.5\pt
+ "back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
+ "-front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
+ "heel" "\heel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
+ "toe" "\toe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
+ "bheel" "\bheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
+ "btoe" "\btoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
+ "fheel" "\fheel" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
+ "ftoe" "\ftoe" 0.0\pt 6.0\pt -1.0\pt 5.0\pt
+ "-back" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
+ "front" "\backorfront" 0.0\pt 6.0\pt 0.0\pt 3.0\pt
+ }
+
+ "style" = \table {
+ "roman" "\settext{%}" 0.0\pt 5.0\pt 0.0\pt 8.0\pt
+ "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
+ "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt
+ }
+ "dynamics" = \table {
+
+ "mf" "\dynmf"
+ "fff" "\dynfff"
+ "ff" "\dynff"
+ "f" "\dynf"
+ "mp" "\dynmp"
+ "p" "\dynp"
+ "pp" "\dynpp"
+ "ppp" "\dynppp"
+
+ }
+ "align" = \table {
+ "-1" "\leftalign{%}"
+ "0" "\centeralign{%}"
+ "1" "\rightalign{%}"
+ }
+
+ "clefs" = \table {
+ "violin" "\violinclef" 0.0\pt 12.8\pt -10.0\pt 18.0\pt
+ "bass" "\bassclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt
+ "alto" "\altoclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt
+ "tenor" "\altoclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt
+ "violin_change" "\cviolinclef" 0.0\pt 11.2\pt -12.0\pt 12.0\pt
+ "bass_change" "\cbassclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
+ "alto_change" "\caltoclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
+ "tenor_change" "\caltoclef" 0.0\pt 11.2\pt 0.0\pt 16.0\pt
+ }
+
+ "balls" = \table {
+ "1" "\wholeball" 0.0\pt 6.0\pt -2.0\pt 2.0\pt
+ "2" "\halfball" 0.0\pt 5.0\pt -2.0\pt 2.0\pt
+ "4" "\quartball" 0.0\pt 5.0\pt -2.0\pt 2.0\pt
+ }
+
+ "slur" = \table {
+ "whole" "\slurchar%{%}"
+ "half" "\hslurchar%{%}"
+ }
+ "accidentals" = \table {
+ "-2" "\flatflat" 0.0\pt 8.16\pt -2.5\pt 7.5\pt
+ "-1" "\flat" 0.0\pt 4.8\pt -2.5\pt 7.5\pt
+ "0" "\natural" 0.0\pt 4.8\pt -7.5\pt 7.5\pt
+ "1" "\sharp" 0.0\pt 3.6\pt -7.5\pt 7.5\pt
+ "2" "\sharpsharp" 0.0\pt 4.8\pt -2.5\pt 7.5\pt
+ }
+
+ "streepjes" = \table {
+ "toplines" "\toplines{%}" -1.0\pt 7.0\pt 0.0\pt 0.0\pt
+ "botlines" "\botlines{%}" -1.0\pt 7.0\pt 0.0\pt 0.0\pt
+ }
+
+ "bars" = \table {
+ "empty" "\emptybar"
+ "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt
+ "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 16.0\pt
+ "||" "\doublebar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt
+ "|." "\finishbar{%}" -4.0\pt 0.0\pt 0.0\pt 16.0\pt
+ ":|" "\repeatbar" -8.0\pt 0.0\pt 0.0\pt 16.0\pt
+ "|:" "\startrepeat" 0.0\pt 8.0\pt 0.0\pt 16.0\pt
+ ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt
+
+ }
+
+ "rests" = \table {
+ "1o" "\outsidewholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt
+ "1" "\wholerest" 0.0\pt 6.0\pt 0.0\pt 2.0\pt
+ "2" "\halfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt
+ "2o" "\outsidehalfrest" 0.0\pt 6.0\pt -2.0\pt 0.0\pt
+ "4o" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt
+ "8o" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt
+ "16o" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt
+ "4" "\quartrest" -5.0\pt 2.0\pt -5.0\pt 5.0\pt
+ "8" "\eighthrest" 0.0\pt 5.0\pt 0.0\pt 8.0\pt
+ "16" "\sixteenthrest" 0.0\pt 6.0\pt 0.0\pt 12.0\pt
+ "32" "\thirtysecondrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt
+ "64" "\sixtyfourthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt
+ "128" "\hundredtwentyeighthrest" 0.0\pt 6.0\pt 0.0\pt 16.0\pt
+ }
+
+ "meters" = \table {
+ "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ }
+
+ % dims ignored for this table
+ "param" = \table {
+ "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt
+ "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt
+ "linestaf" "\linestafsym{%}{%}"
+ "stem" "\stem{%}{%}"
+ "fill" "\hbox{}"
+ % ugh. 8pt
+ "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
+ "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -3.0\pt 3.0\pt
+ }
+
+ "dots" = \table {
+ "1" "\lsingledot" 0.0\pt 2.0\pt -1.0\pt 1.0\pt
+ "2" "\ldoubledot" 0.0\pt 5.0\pt -1.0\pt 1.0\pt
+ "3" "\ltripledot" 0.0\pt 8.0\pt -1.0\pt 1.0\pt
+ }
+
+ "flags" = \table {
+ "8" "\eighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "16" "\sixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "32" "\thirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "64" "\sixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "128" "\hundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "-8" "\deighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "-16" "\dsixteenthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "-32" "\dthirtysecondflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "-64" "\dsixtyfourthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ "-128" "\dhundredtwentyeighthflag" 0.0\pt 4.0\pt 0.0\pt 0.0\pt
+ }
+
+ "beamslopes" = \table {
+ "slope" "\beamslope{%}{%}"
+ "horizontal" "\rulesym{%}{%}"
+ }
+
+}
+
+++ /dev/null
-%
-% spacing info for LilyPond. Do not edit this.
-% It has a lot of hard-wired stringconstants
-%
-
-table_twenty = \symboltables {
-
- texid "\musixtwentydefs"
-
- "style" = \table {
- "roman" "\settext{%}" 0pt 0pt 0pt 0pt
- "italic" "\setitalic{%}" 0pt 0pt 0pt 0pt
- }
- "align" = \table {
- "-1" "\leftalign{%}" 0pt 0pt 0pt 0pt
- "0" "\centeralign{%}" 0pt 0pt 0pt 0pt
- "1" "\rightalign{%}" 0pt 0pt 0pt 0pt
- }
-
-
- % index TeXstring, xmin xmax ymin ymax
- % be careful with editing this:
- % the "index" entry is hardwired into lilypond.
-
- "clefs" = \table {
- "violin" "\violinclef" 0pt 16pt -12.5pt 22.5pt
- "bass" "\bassclef" 0pt 16pt 0pt 20pt
- "alto" "\altoclef" 0pt 16pt 0pt 20pt
- "tenor" "\altoclef" 0pt 16pt 0pt 20pt
- "violin_change" "\cviolinclef" 0pt 16pt -12.5pt 22.5pt
- "bass_change" "\cbassclef" 0pt 16pt 0pt 20pt
- "alto_change" "\caltoclef" 0pt 16pt 0pt 20pt
- "tenor_change" "\caltoclef" 0pt 16pt 0pt 20pt
- }
-
- "balls" = \table {
- "1" "\wholeball" 0pt 7.5pt -2.5pt 2.5pt
- "2" "\halfball" 0pt 6pt -2.5pt 2.5pt
- "4" "\quartball" 0pt 6pt -2.5pt 2.5pt
- }
-
- "slur" = \table {
- "whole" "\slurchar%{%}" 0pt 0pt 0pt 0pt
- "half" "\hslurchar%{%}" 0pt 0pt 0pt 0pt
- }
- "accidentals" = \table {
- "-2" "\flatflat" 0pt 10.2pt -2.5pt 7.5pt
- "-1" "\flat" 0pt 6pt -2.5pt 7.5pt
- "0" "\natural" 0pt 6pt -7.5pt 7.5pt
- "1" "\sharp" 0pt 6pt -7.5pt 7.5pt
- "2" "\sharpsharp" 0pt 6pt -2.5pt 7.5pt
- }
-
- "streepjes" = \table {
- "toplines" "\toplines{%}" -3pt 9pt 0pt 0pt
- "botlines" "\botlines{%}" -3pt 9pt 0pt 0pt
- }
-
- "bars" = \table {
- "empty" "\emptybar" 0pt 0pt 0pt 0pt
- "|" "\maatstreep" 0pt 5pt -12pt 12pt
- "||" "\finishbar" 0pt 2pt -12pt 12pt
- }
-
- "rests" = \table {
- "1" "\wholerest" -5pt 1pt -1pt 1pt
- "2" "\halfrest" -5pt 1pt -1pt 1pt
- "4" "\quartrest" -5pt 2pt -5pt 5pt
- "8" "\eighthrest" 0pt 5pt 0pt 8pt
- "16" "\sixteenthrest" 0pt 6pt 0pt 12pt
- "32" "\thirtysecondrest" 0pt 6pt 0pt 16pt
- }
-
- "meters" = \table {
- "C" "\fourfourmeter" 0pt 10pt -5pt 5pt
- "C2" "\allabreve" 0pt 10pt -5pt 5pt
- }
-
- % dims ignored for this table
- "param" = \table {
- "meter" "\generalmeter{%}{%}" -3pt 10pt -5pt 5pt
- "linestaf" "\linestafsym{%}{%}"
- "stem" "\stem{%}{%}"
- "fill" "\hbox{}"
- }
-
- "dots" = \table {
- "1" "\lsingledot" 0pt 8pt -1pt 1pt
- "2" "\ldoubledot" 0pt 12pt -1pt 1pt
- "3" "\ltripledot" 0pt 16pt -1pt 1pt
- }
-
- "flags" = \table {
- "8" "\eigthflag" 0pt 5pt 0pt 0pt
- "16" "\sixteenthflag" 0pt 5pt 0pt 0pt
- "32" "\thirtysecondflag" 0pt 5pt 0pt 0pt
- "-8" "\deigthflag" 0pt 5pt 0pt 0pt
- "-16" "\dsixteenthflag" 0pt 5pt 0pt 0pt
- "-32" "\dthirtysecondflag" 0pt 5pt 0pt 0pt
- }
-
- "beamslopes" = \table {
- "slope" "\beamslope{%}{%}"
- "horizontal" "\rulesym{%}{%}"
- }
-
-}
-default_table = \symboltables { table_twenty }
--- /dev/null
+%
+% spacing info for LilyPond. Do not edit this.
+% It has a lot of hard-wired stringconstants
+%
+
+table_twenty = \symboltables {
+
+ texid "\musixtwentydefs"
+
+ "style" = \table {
+ "roman" "\settext{%}" 0pt 0pt 0pt 0pt
+ "italic" "\setitalic{%}" 0pt 0pt 0pt 0pt
+ }
+ "align" = \table {
+ "-1" "\leftalign{%}" 0pt 0pt 0pt 0pt
+ "0" "\centeralign{%}" 0pt 0pt 0pt 0pt
+ "1" "\rightalign{%}" 0pt 0pt 0pt 0pt
+ }
+
+
+ % index TeXstring, xmin xmax ymin ymax
+ % be careful with editing this:
+ % the "index" entry is hardwired into lilypond.
+
+ "clefs" = \table {
+ "violin" "\violinclef" 0pt 16pt -12.5pt 22.5pt
+ "bass" "\bassclef" 0pt 16pt 0pt 20pt
+ "alto" "\altoclef" 0pt 16pt 0pt 20pt
+ "tenor" "\altoclef" 0pt 16pt 0pt 20pt
+ "violin_change" "\cviolinclef" 0pt 16pt -12.5pt 22.5pt
+ "bass_change" "\cbassclef" 0pt 16pt 0pt 20pt
+ "alto_change" "\caltoclef" 0pt 16pt 0pt 20pt
+ "tenor_change" "\caltoclef" 0pt 16pt 0pt 20pt
+ }
+
+ "balls" = \table {
+ "1" "\wholeball" 0pt 7.5pt -2.5pt 2.5pt
+ "2" "\halfball" 0pt 6pt -2.5pt 2.5pt
+ "4" "\quartball" 0pt 6pt -2.5pt 2.5pt
+ }
+
+ "slur" = \table {
+ "whole" "\slurchar%{%}" 0pt 0pt 0pt 0pt
+ "half" "\hslurchar%{%}" 0pt 0pt 0pt 0pt
+ }
+ "accidentals" = \table {
+ "-2" "\flatflat" 0pt 10.2pt -2.5pt 7.5pt
+ "-1" "\flat" 0pt 6pt -2.5pt 7.5pt
+ "0" "\natural" 0pt 6pt -7.5pt 7.5pt
+ "1" "\sharp" 0pt 6pt -7.5pt 7.5pt
+ "2" "\sharpsharp" 0pt 6pt -2.5pt 7.5pt
+ }
+
+ "streepjes" = \table {
+ "toplines" "\toplines{%}" -3pt 9pt 0pt 0pt
+ "botlines" "\botlines{%}" -3pt 9pt 0pt 0pt
+ }
+
+ "bars" = \table {
+ "empty" "\emptybar" 0pt 0pt 0pt 0pt
+ "|" "\maatstreep" 0pt 5pt -12pt 12pt
+ "||" "\finishbar" 0pt 2pt -12pt 12pt
+ }
+
+ "rests" = \table {
+ "1" "\wholerest" -5pt 1pt -1pt 1pt
+ "2" "\halfrest" -5pt 1pt -1pt 1pt
+ "4" "\quartrest" -5pt 2pt -5pt 5pt
+ "8" "\eighthrest" 0pt 5pt 0pt 8pt
+ "16" "\sixteenthrest" 0pt 6pt 0pt 12pt
+ "32" "\thirtysecondrest" 0pt 6pt 0pt 16pt
+ }
+
+ "meters" = \table {
+ "C" "\fourfourmeter" 0pt 10pt -5pt 5pt
+ "C2" "\allabreve" 0pt 10pt -5pt 5pt
+ }
+
+ % dims ignored for this table
+ "param" = \table {
+ "meter" "\generalmeter{%}{%}" -3pt 10pt -5pt 5pt
+ "linestaf" "\linestafsym{%}{%}"
+ "stem" "\stem{%}{%}"
+ "fill" "\hbox{}"
+ }
+
+ "dots" = \table {
+ "1" "\lsingledot" 0pt 8pt -1pt 1pt
+ "2" "\ldoubledot" 0pt 12pt -1pt 1pt
+ "3" "\ltripledot" 0pt 16pt -1pt 1pt
+ }
+
+ "flags" = \table {
+ "8" "\eigthflag" 0pt 5pt 0pt 0pt
+ "16" "\sixteenthflag" 0pt 5pt 0pt 0pt
+ "32" "\thirtysecondflag" 0pt 5pt 0pt 0pt
+ "-8" "\deigthflag" 0pt 5pt 0pt 0pt
+ "-16" "\dsixteenthflag" 0pt 5pt 0pt 0pt
+ "-32" "\dthirtysecondflag" 0pt 5pt 0pt 0pt
+ }
+
+ "beamslopes" = \table {
+ "slope" "\beamslope{%}{%}"
+ "horizontal" "\rulesym{%}{%}"
+ }
+
+}
+default_table = \symboltables { table_twenty }
}
\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
\score{
<
- { \id "Lyric" "1"; \tekstI } % ugh
- { \id "Lyric" "2"; \tekstII }
+ < \id "Lyric" "1";
+ \tekstI
+ \tekstII
+ >
< \id "Piano" "";
\multi 2;
\melodic < \melodie \commands >
}
\score{
- < \multi 3;
+ <
\melodic <
- \id "Piano" "";\multi 3;
+ \id "Piano" "";\multi 2;
< \global
\melody >
< \global
>
% 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{
\paper{
% unitspace = 40.0\pt; geometric = 1.6;
- geometric= 1.4; unitspace= 34.\pt;
+% geometric= 1.4; unitspace= 34.\pt;
}
\midi {
\tempo 4:84;
#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;
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
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
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
bar_p_ =0;
}
-IMPLEMENT_STATIC_NAME(Bar_engraver);
+
IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver);
ADD_THIS_ENGRAVER(Bar_engraver);
}
-IMPLEMENT_STATIC_NAME(Bar);
+
IMPLEMENT_IS_TYPE_B1(Bar,Item);
void
return mol_p;
}
-IMPLEMENT_STATIC_NAME(Beam);
+
IMPLEMENT_IS_TYPE_B1(Beam, Spanner);
void
return output;
}
-IMPLEMENT_STATIC_NAME(Bow);
+
IMPLEMENT_IS_TYPE_B1(Bow,Directional_spanner);
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);
clef_p_ =0;
}
-IMPLEMENT_STATIC_NAME(Clef_engraver);
+
IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver);
ADD_THIS_ENGRAVER(Clef_engraver);
return output;
}
-IMPLEMENT_STATIC_NAME(Clef_item);
+
IMPLEMENT_IS_TYPE_B1(Clef_item,Item);
col_p_ =0;
}
-IMPLEMENT_STATIC_NAME(Collision_engraver);
+
IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver);
ADD_THIS_ENGRAVER(Collision_engraver);
}
}
-IMPLEMENT_STATIC_NAME(Collision);
+
IMPLEMENT_IS_TYPE_B1(Collision, Item);
void
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
return type_str_ == c1.type_str_;
}
-IMPLEMENT_STATIC_NAME(Bar_req);
+
IMPLEMENT_IS_TYPE_B1(Bar_req,Command_req);
void
}
/* *************** */
-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
clef_str_ = s;
}
/* *************** */
-IMPLEMENT_STATIC_NAME(Group_feature_req);
+
IMPLEMENT_IS_TYPE_B1(Group_feature_req,Command_req);
void
/* *************** */
-IMPLEMENT_STATIC_NAME(Partial_measure_req);
+
IMPLEMENT_IS_TYPE_B1(Partial_measure_req,Timing_req);
void
mtor << duration_;
}
-IMPLEMENT_STATIC_NAME(Meter_change_req);
+
IMPLEMENT_IS_TYPE_B1(Meter_change_req,Timing_req);
void
/* *************** */
-IMPLEMENT_STATIC_NAME(Measure_grouping_req);
+
IMPLEMENT_IS_TYPE_B1(Measure_grouping_req,Timing_req);
void
}
}
-IMPLEMENT_STATIC_NAME(Key_change_req);
+
IMPLEMENT_IS_TYPE_B1(Key_change_req,Command_req);
void
Key_change_req::squash_octaves()
return m_p;
}
-IMPLEMENT_STATIC_NAME(Crescendo);
+
IMPLEMENT_IS_TYPE_B1(Crescendo,Spanner);
#include <fstream.h>
#include <signal.h>
-#include <std/new.h>
+#include <new.h>
#include <stdlib.h>
#include "debug.hh"
#include "dstream.hh"
dir_i_ = i.value_;
}
-IMPLEMENT_STATIC_NAME(Dynamic_engraver);
+
IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Engraver);
ADD_THIS_ENGRAVER(Dynamic_engraver);
{
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);
+
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)
elem_l_arr_[i]->translate_y(y);
}
-IMPLEMENT_STATIC_NAME(Elbement_group);
+
IMPLEMENT_IS_TYPE_B1(Elbement_group, Score_elem);
void
}
IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group, Horizontal_group, Vertical_group);
-IMPLEMENT_STATIC_NAME(Horizontal_vertical_group);
+
Horizontal_vertical_group::Horizontal_vertical_group()
{
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 ;
}
}
IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator);
-IMPLEMENT_STATIC_NAME(Engraver_group_engraver);
+
ADD_THIS_ENGRAVER(Engraver_group_engraver);
void
#endif
}
-IMPLEMENT_STATIC_NAME(Engraver);
+
IMPLEMENT_IS_TYPE_B(Engraver);
void
Symbol s;
return Atom(s);
}
-IMPLEMENT_STATIC_NAME(General_script_def);
+
IMPLEMENT_IS_TYPE_B(General_script_def);
{
}
-IMPLEMENT_STATIC_NAME(Global_translator);
+
IMPLEMENT_IS_TYPE_B1(Global_translator, Translator);
}
-IMPLEMENT_STATIC_NAME(Head_column);
+
IMPLEMENT_IS_TYPE_B1(Head_column,Script_column);
void
note_req_l_ = 0;
}
-IMPLEMENT_STATIC_NAME(Note_head_engraver);
+
IMPLEMENT_IS_TYPE_B1(Note_head_engraver,Engraver);
ADD_THIS_ENGRAVER(Note_head_engraver);
#include "horizontal-align-item.hh"
-IMPLEMENT_STATIC_NAME(Horizontal_align_item);
+
IMPLEMENT_IS_TYPE_B1(Horizontal_align_item,Item);
#include "request.hh"
#include "input-translator.hh"
-IMPLEMENT_STATIC_NAME(Identifier);
+
IMPLEMENT_IS_TYPE_B(Identifier);
Identifier::~Identifier()
#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; }\
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:
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;
--- /dev/null
+/*
+ line-group-grav.hh -- declare
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef LINE_GROUP_GRAV_HH
+#define LINE_GROUP_GRAV_HH
+
+#include "engraver.hh"
+
+/**
+ Engravers put elements on the same or lowel level in a line
+ */
+class Line_group_engraver : public Engraver{
+ Line_of_staff *staffline_p_;
+
+protected:
+ virtual void do_creation_processing();
+ virtual void do_removal_processing();
+ virtual void acknowledge_element(Score_elem_info);
+
+public:
+ NAME_MEMBERS();
+ Line_group_engraver();
+};
+
+
+#endif // LINE_GROUP_GRAV_HH
+
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:
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:
#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_;
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 );
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:
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);
};
/**
/**
- 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 {
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
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();
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_;
#include "staff-info.hh"
class Performer {
+ bool init_b_;
public:
NAME_MEMBERS();
Performer_group_performer* daddy_perf_l_;
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"
class Request : public Music {
public:
- Voice * voice_l();
/* *************** */
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; }
struct Score_elem_info {
Score_elem * elem_l_;
Request*req_l_;
- Voice const * voice_l_;
Array<Engraver*> origin_grav_l_arr_;
/* *** */
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
virtual void OK() const;
virtual void print() const;
virtual void prepare();
+ virtual ~Spring_spacer(){}
};
#endif // SPRING_SPACER_HH
+++ /dev/null
-/*
- staff-gravs.hh -- declare Line_group_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef STAFF_GRAVS_HH
-#define STAFF_GRAVS_HH
-
-#include "engraver-group.hh"
-
-/**
- Engravers which manage a Staff (one 5-line linestaff)
- */
-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();
- virtual void do_removal_processing();
- virtual void acknowledge_element(Score_elem_info);
-
-public:
- NAME_MEMBERS();
- Line_group_engraver();
-};
-
-#endif // STAFF_GRAVS_HH
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_;
};
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
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
-//#include "translator-admin.hh"
#include "debug.hh"
#include "engraver.hh"
#include "input-translator.hh"
= broken_to_a_[1]=0;
}
-IMPLEMENT_STATIC_NAME(Item);
+
IMPLEMENT_IS_TYPE_B1(Item, Score_elem);
void
default_key_b_ = false;
}
-IMPLEMENT_STATIC_NAME(Key_engraver);
+
IMPLEMENT_IS_TYPE_B1(Key_engraver,Engraver);
ADD_THIS_ENGRAVER(Key_engraver);
}
return output;
}
-IMPLEMENT_STATIC_NAME(Key_item);
+
IMPLEMENT_IS_TYPE_B1(Key_item,Item);
void
#include "midi-item.hh"
-IMPLEMENT_STATIC_NAME(Key_performer);
+
IMPLEMENT_IS_TYPE_B1(Key_performer,Performer);
ADD_THIS_PERFORMER(Key_performer);
}
bool
-Key_performer::try_request( Request* req_l )
+Key_performer::do_try_request( Request* req_l )
{
if ( key_req_l_ )
return false;
--- /dev/null
+/*
+ staff-gravs.cc -- implement Line_group_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "staff-sym.hh"
+#include "line-group-grav.hh"
+#include "command-request.hh"
+#include "bar.hh"
+#include "debug.hh"
+#include "staffline.hh"
+
+
+Line_group_engraver::Line_group_engraver()
+{
+ staffline_p_ =0;
+}
+
+void
+Line_group_engraver::acknowledge_element(Score_elem_info elem)
+{
+ staffline_p_->add_element(elem.elem_l_);
+}
+
+
+void
+Line_group_engraver::do_removal_processing()
+{
+ staffline_p_->right_col_l_ = get_staff_info().command_pcol_l();
+ typeset_element(staffline_p_);
+ staffline_p_ = 0;
+}
+
+void
+Line_group_engraver::do_creation_processing()
+{
+ staffline_p_ = new Line_of_staff;
+ staffline_p_->left_col_l_ = get_staff_info().command_pcol_l();
+
+ // don't broadcast to self.
+ announce_element(Score_elem_info(staffline_p_,0));
+}
+
+
+
+IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver);
+ADD_THIS_ENGRAVER(Line_group_engraver);
+
}
}
-IMPLEMENT_STATIC_NAME(Local_key_engraver);
+
IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Engraver);
ADD_THIS_ENGRAVER(Local_key_engraver);
return a.accidental_i_ - b.accidental_i_;
};
-IMPLEMENT_STATIC_NAME(Local_key_item);
+
IMPLEMENT_IS_TYPE_B1(Local_key_item,Item);
void
}
}
-IMPLEMENT_STATIC_NAME(Lyric_engraver);
+
IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Engraver);
ADD_THIS_ENGRAVER(Lyric_engraver);
#include "midi-item.hh"
-IMPLEMENT_STATIC_NAME(Lyric_performer);
+
IMPLEMENT_IS_TYPE_B1(Lyric_performer,Performer);
ADD_THIS_PERFORMER(Lyric_performer);
}
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() )
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;
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){
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);
#include "midi-item.hh"
-IMPLEMENT_STATIC_NAME(Meter_performer);
+
IMPLEMENT_IS_TYPE_B1(Meter_performer,Performer);
ADD_THIS_PERFORMER(Meter_performer);
}
bool
-Meter_performer::try_request( Request* req_l )
+Meter_performer::do_try_request( Request* req_l )
{
if ( meter_req_l_ )
return false;
return new Molecule(Atom(s));
}
-IMPLEMENT_STATIC_NAME(Meter);
+
IMPLEMENT_IS_TYPE_B1(Meter,Item);
-//
-// 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"
-//
-// 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"
#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()
{
}
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)
// 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"
#include "request.hh"
#include "debug.hh"
-IMPLEMENT_STATIC_NAME(Music_iterator);
+
IMPLEMENT_IS_TYPE_B(Music_iterator);
Chord_iterator::~Chord_iterator(){}
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()))
// assert(!ok() || next_moment() > until);
}
-IMPLEMENT_STATIC_NAME(Chord_iterator);
+
IMPLEMENT_IS_TYPE_B1(Chord_iterator,Music_iterator);
Moment
delete iter_p_;
}
-IMPLEMENT_STATIC_NAME(Voice_iterator);
+
IMPLEMENT_IS_TYPE_B1(Voice_iterator,Music_iterator);
void
change_l_ = ch;
}
-IMPLEMENT_STATIC_NAME(Change_iterator);
+
IMPLEMENT_IS_TYPE_B1(Change_iterator,Music_iterator);
/*
/* ******************** */
-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();
bool
-Voice_element_iterator::ok()const
+Request_chord_iterator::ok()const
{
return (elt_duration_ && !last_b_) || first_b_;
}
Moment
-Voice_element_iterator::next_moment()const
+Request_chord_iterator::next_moment()const
{
Moment m(0);
if (!first_b_)
}
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++) {
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);
#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;
}
{
}
-IMPLEMENT_STATIC_NAME(Music);
+
IMPLEMENT_IS_TYPE_B(Music);
}
IMPLEMENT_IS_TYPE_B1(Change_reg,Music)
-IMPLEMENT_STATIC_NAME(Change_reg);
+
#include "text-def.hh"
#include "music-list.hh"
-IMPLEMENT_STATIC_NAME(Stem_req);
+
IMPLEMENT_IS_TYPE_B1(Stem_req,Rhythmic_req);
void
}
/* ************** */
-IMPLEMENT_STATIC_NAME(Musical_req);
+
IMPLEMENT_IS_TYPE_B1(Musical_req,Request);
void
Musical_req::do_print()const{}
-IMPLEMENT_STATIC_NAME(Span_req);
+
IMPLEMENT_IS_TYPE_B1(Span_req,Musical_req);
void
distance = 0;
strength = 0;
}
-IMPLEMENT_STATIC_NAME(Spacing_req);
+
IMPLEMENT_IS_TYPE_B1(Spacing_req,Request);
void
#endif
}
-IMPLEMENT_STATIC_NAME(Blank_req);
+
IMPLEMENT_IS_TYPE_B2(Blank_req,Spacing_req,Rhythmic_req);
void
}
}
-IMPLEMENT_STATIC_NAME(Melodic_req);
+
IMPLEMENT_IS_TYPE_B1(Melodic_req,Musical_req);
int
{
}
-IMPLEMENT_STATIC_NAME(Rhythmic_req);
+
IMPLEMENT_IS_TYPE_B1(Rhythmic_req,Musical_req);
void
dir_i_ = -1; // lyrics below (invisible) staff
}
-IMPLEMENT_STATIC_NAME(Lyric_req);
+
IMPLEMENT_IS_TYPE_B2(Lyric_req,Musical_req,Rhythmic_req);
void
{
forceacc_b_ = false;
}
-IMPLEMENT_STATIC_NAME(Note_req);
+
IMPLEMENT_IS_TYPE_B2(Note_req,Melodic_req,Rhythmic_req);
void
#endif
}
/* *************** */
-IMPLEMENT_STATIC_NAME(Rest_req);
+
IMPLEMENT_IS_TYPE_B1(Rest_req,Rhythmic_req);
void
{
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{}
scriptdef_p_ = 0;
}
-IMPLEMENT_STATIC_NAME(Script_req);
+
IMPLEMENT_IS_TYPE_B1(Script_req,Request);
void
Script_req::do_print();
}
-IMPLEMENT_STATIC_NAME(Musical_script_req);
+
IMPLEMENT_IS_TYPE_B2(Musical_script_req,Musical_req, Script_req);
tdef_p_ = tdef_p;
}
-IMPLEMENT_STATIC_NAME(Text_req);
+
IMPLEMENT_IS_TYPE_B1(Text_req,Musical_req);
void
/* *************** */
-IMPLEMENT_STATIC_NAME(Skip_req);
+
IMPLEMENT_IS_TYPE_B1(Skip_req,Musical_req);
void
#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
Musical_req::do_print();
}
-IMPLEMENT_STATIC_NAME(Absolute_dynamic_req);
+
IMPLEMENT_IS_TYPE_B1(Absolute_dynamic_req,Musical_req);
void
dynamic_dir_i_ = 0;
}
-IMPLEMENT_STATIC_NAME(Span_dynamic_req);
+
IMPLEMENT_IS_TYPE_B1(Span_dynamic_req,Musical_req);
void
#endif
}
-IMPLEMENT_STATIC_NAME(Tie_req);
+
IMPLEMENT_IS_TYPE_B1(Tie_req,Musical_req);
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);
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 */
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);
do_post_move_processing();
}
-IMPLEMENT_STATIC_NAME(Note_column_engraver);
+
IMPLEMENT_IS_TYPE_B1(Note_column_engraver,Engraver);
ADD_THIS_ENGRAVER(Note_column_engraver);
#include "note-head.hh"
#include "stem.hh"
-IMPLEMENT_STATIC_NAME(Note_column);
+
IMPLEMENT_IS_TYPE_B1(Note_column,Head_column);
void
#include "debug.hh"
IMPLEMENT_IS_TYPE_B1(Note_performer,Performer);
-IMPLEMENT_STATIC_NAME(Note_performer);
+
ADD_THIS_PERFORMER(Note_performer);
Note_performer::Note_performer()
}
bool
-Note_performer::try_request( Request* req_l )
+Note_performer::do_try_request( Request* req_l )
{
if ( note_req_l_ )
return false;
dots_i_ = r_req_l->duration_.dots_i_;
}
-IMPLEMENT_STATIC_NAME(Note_head);
+
IMPLEMENT_IS_TYPE_B1(Note_head,Item);
void
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;
}
command_elt:
/* empty */ {
- $$ = new Voice_element;
+ $$ = new Request_chord;
$$-> set_spot( THIS->here_input());
}
/* cont: */
#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()
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()
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();
+}
#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()
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
}
{
}
-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()
+{
+}
+/*
+ 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
return MInterval(0, duration());
}
-void
-Request::print() const
-{
-#ifndef NPRINT
- mtor << name() << " {";
- do_print();
- mtor << "}\n";
-#endif
-}
-
#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);
#include "collision.hh"
#include "paper-def.hh"
-IMPLEMENT_STATIC_NAME(Rest_collision);
+
IMPLEMENT_IS_TYPE_B1(Rest_collision,Item);
void
#include "rest-column.hh"
#include "stem.hh"
-IMPLEMENT_STATIC_NAME(Rest_column);
+
IMPLEMENT_IS_TYPE_B1(Rest_column,Head_column);
}
-IMPLEMENT_STATIC_NAME(Score_align_engraver)
IMPLEMENT_IS_TYPE_B1(Score_align_engraver,Engraver);
{ 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) ;
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;
}
}
-IMPLEMENT_STATIC_NAME(Score_elem);
+
IMPLEMENT_IS_TYPE_B(Score_elem);
Molecule*
void
Score_engraver::finish()
{
+ if ( (breaks_i_%8))
+ *mlog << "[" << breaks_i_ << "]" << flush;
+
check_removal();
do_removal_processing();
}
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);
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);
#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*
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
{
}
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 );
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
}
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_;
}
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 ));
+}
void
Score::process()
{
+ print();
paper();
midi();
}
warning( "Errors found, /*not processing score*/" );
// return;
}
- print();
*mlog << endl;
}
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();
-IMPLEMENT_STATIC_NAME(Line_of_score);
+
IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
void
#include "note-head.hh"
#include "stem.hh"
-IMPLEMENT_STATIC_NAME(Script_column);
+
IMPLEMENT_IS_TYPE_B1(Script_column,Horizontal_vertical_group_item);
return p->lookup_l()->script(preidx_str + symidx_str_);
}
-IMPLEMENT_STATIC_NAME(Script_def);
+
IMPLEMENT_IS_TYPE_B1(Script_def,General_script_def);
int
script_req_l_arr_.set_size(0);
}
-IMPLEMENT_STATIC_NAME(Script_engraver);
+
IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver);
ADD_THIS_ENGRAVER(Script_engraver);
return out;
}
-IMPLEMENT_STATIC_NAME(Script);
+
IMPLEMENT_IS_TYPE_B2(Script,Item,Staff_side);
int
requests_arr_[i]->warning("unterminated slur");
}
}
-IMPLEMENT_STATIC_NAME(Slur_engraver);
+
IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver);
ADD_THIS_ENGRAVER(Slur_engraver);
left_pos_i_ += dir_i_;
right_pos_i_ += dir_i_;
}
-IMPLEMENT_STATIC_NAME(Slur);
+
IMPLEMENT_IS_TYPE_B1(Slur,Spanner);
}
-IMPLEMENT_STATIC_NAME(Span_bar_engraver);
+
IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver);
ADD_THIS_ENGRAVER(Span_bar_engraver);
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_ = "|.";
}
}
}
return output;
}
-IMPLEMENT_STATIC_NAME(Span_bar);
+
IMPLEMENT_IS_TYPE_B1(Span_bar,Bar);
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*
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);
+
#include "spanner-elem-group.hh"
-IMPLEMENT_STATIC_NAME(Spanner_elem_group);
+
IMPLEMENT_IS_TYPE_B2(Spanner_elem_group,Spanner,Horizontal_vertical_group);
Interval
#include "p-col.hh"
#include "p-score.hh"
-IMPLEMENT_STATIC_NAME(Spanner);
+
IMPLEMENT_IS_TYPE_B1(Spanner,Score_elem);
void
+++ /dev/null
-/*
- staff-gravs.cc -- implement Line_group_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "staff-sym.hh"
-#include "staff-gravs.hh"
-#include "command-request.hh"
-#include "bar.hh"
-#include "debug.hh"
-#include "staffline.hh"
-
-
-Line_group_engraver::Line_group_engraver()
-{
- staffline_p_ =0;
-}
-
-void
-Line_group_engraver::acknowledge_element(Score_elem_info elem)
-{
- staffline_p_->add_element(elem.elem_l_);
-}
-
-
-void
-Line_group_engraver::do_removal_processing()
-{
- staffline_p_->right_col_l_ = get_staff_info().command_pcol_l();
- typeset_element(staffline_p_);
- staffline_p_ = 0;
-}
-
-void
-Line_group_engraver::do_creation_processing()
-{
- staffline_p_ = new Line_of_staff;
- staffline_p_->left_col_l_ = get_staff_info().command_pcol_l();
-
- // don't broadcast to self.
- announce_element(Score_elem_info(staffline_p_,0));
-}
-
-
-IMPLEMENT_STATIC_NAME(Line_group_engraver);
-IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver);
-ADD_THIS_ENGRAVER(Line_group_engraver);
-
#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 );
}
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);
}
staff_sym_l_ = n ? (Staff_symbol*) n->spanner():0;
}
-IMPLEMENT_STATIC_NAME(Staff_side);
+
IMPLEMENT_IS_TYPE_B1(Staff_side, Score_elem);
}
-IMPLEMENT_STATIC_NAME(Staff_sym_engraver);
+
IMPLEMENT_IS_TYPE_B1(Staff_sym_engraver,Engraver);
ADD_THIS_ENGRAVER(Staff_sym_engraver);
no_lines_i_ = l;
}
-IMPLEMENT_STATIC_NAME(Staff_symbol);
+
IMPLEMENT_IS_TYPE_B1(Staff_symbol,Spanner);
void
#include "p-score.hh"
-IMPLEMENT_STATIC_NAME(Line_of_staff);
+
IMPLEMENT_IS_TYPE_B2(Line_of_staff,Spanner,Horizontal_vertical_group);
void
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);
stem_xoffset_f_ =0;
}
-IMPLEMENT_STATIC_NAME(Stem);
+
IMPLEMENT_IS_TYPE_B1(Stem,Item);
void
-IMPLEMENT_STATIC_NAME(Super_elem);
+
IMPLEMENT_IS_TYPE_B1(Super_elem,Score_elem);
*/
#include "swallow-grav.hh"
-IMPLEMENT_STATIC_NAME(Swallow_engraver);
+
IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver);
ADD_THIS_ENGRAVER(Swallow_engraver);
#include "swallow-perf.hh"
-IMPLEMENT_STATIC_NAME(Swallow_performer);
+
IMPLEMENT_IS_TYPE_B1(Swallow_performer, Performer);
ADD_THIS_PERFORMER(Swallow_performer);
*/
#include "proto.hh"
+#include "plist.hh"
#include "list.tcc"
#include "cursor.tcc"
style_str_ << "align " << align_i_ << '\n';
}
-IMPLEMENT_STATIC_NAME(Text_def);
+
IMPLEMENT_IS_TYPE_B1(Text_def,General_script_def);
{
text_req_l_ = 0;
}
-IMPLEMENT_STATIC_NAME(Text_engraver);
+
IMPLEMENT_IS_TYPE_B1(Text_engraver,Engraver);
ADD_THIS_ENGRAVER(Text_engraver);
return mol_p;
}
-IMPLEMENT_STATIC_NAME(Text_item);
+
IMPLEMENT_IS_TYPE_B1(Text_item,Item);
support_span_l_ = 0;
}
-IMPLEMENT_STATIC_NAME(Text_spanner);
+
IMPLEMENT_IS_TYPE_B1(Text_spanner,Spanner);
void
dir_i_ = f.value_;
}
-IMPLEMENT_STATIC_NAME(Tie_engraver);
+
IMPLEMENT_IS_TYPE_B1(Tie_engraver,Engraver);
ADD_THIS_ENGRAVER(Tie_engraver);
}
-IMPLEMENT_STATIC_NAME(Tie);
+
IMPLEMENT_IS_TYPE_B1(Tie,Bow);
iterator_count_ = 0;
}
-IMPLEMENT_STATIC_NAME(Translator);
+
IMPLEMENT_IS_TYPE_B(Translator);
bool
empty_b_ =true;
}
-IMPLEMENT_STATIC_NAME(Vertical_align_element);
+
IMPLEMENT_IS_TYPE_B1(Vertical_align_element, Score_elem);
}
}
-IMPLEMENT_STATIC_NAME(Vertical_align_engraver);
+
IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
ADD_THIS_ENGRAVER(Vertical_align_engraver);
#include "vertical-align-spanner.hh"
-IMPLEMENT_STATIC_NAME(Vertical_align_spanner);
+
IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Vertical_align_element, Spanner);
}
-IMPLEMENT_STATIC_NAME(Voice_group_engravers);
+
IMPLEMENT_IS_TYPE_B1(Voice_group_engravers,Engraver_group_engraver);
void
//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()
$(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
# 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:
$(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 $@) $<
-
-
$(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)/
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
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
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>
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
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
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