RoseGarden that could be extended to output mudela.
If you want to work on this, please send e-mail to the mailing list
-email(gnu-misc-discuss@gnu.org).
+email(gnu-music-discuss@gnu.org).
question(I want to implement XXXX! How should I do this?)
directory is called out/, there is one in every source directory).
make distclean essentially reduces to file(rm -f out/*) in every directory
-
question(gdb crashes when I debug!)
Upgrade to 4.17.
-question(Why do I need g++ >= 2.7?)
+question(Why do I need g++ >= 2.8 / EGCS-1.1 ?)
-By using g++, GNU LilyPond is portable to all platforms which support
-g++ (there are quite a few). Not having to support other compilers
-saves us a em(lot) of trouble.
+Supporting more compilers then EGCS/G++ 2.8 is unlikely to make
+LilyPond run on more platforms. It would give us an enormous headache
+in detecting and catering for every variant of every compiler: not
+having to support other compilers saves us a em(lot) of trouble.
sect(Running)
is by no means finished. Patches appreciated.
-sect(Other)
+sect(Copyright)
+
+question(How does copyright for sheet music work? Can I enter and
+spread my newly bought Bach urtext?)
+
+
+Silas S. Brown <ssb22@hermes.cam.ac.uk>:
+
+There are several aspects to sheet music copyright:
+
+1. The music itself - copyright for the composer's life plus 70 years (so
+not applicable to Bach).
+
+2. If the music is an arrangement, then the arranger holds copyright on
+that arrangement. However, you can produce your own arrangement using
+that arrangement as a reference point. Obviously your arrangement must be
+sufficently different to be called your own arrangement - you need to do
+more than change one note!
+
+3. In some countries, the same applies for editions. This could be
+relevant to the Bach example. If a modern person has edited the music,
+then they hold the copyright on the edition. This does not stop you from
+removing the editorial features - remove all editorial slurs, phrasemarks,
+ornaments etc and only leave those that you know to be original. You can
+then add some of your own if you want to be your own editor.
+
+4. If there are lyrics, then the lyricist also holds copyright. This
+does not stop you from using the music without the lyrics if it is
+otherwise out of copyright.
+
+5. The copyright of the printed page is held by the publisher for 30
+years after printing (25 in some countries). This stops you from
+photocopying (unless it's "fair use" eg. you're partially sighted and need
+to enlarge the music) or otherwise reproducing the typesetting that is
+used on it. But the copyright is only held over the typesetting work, not
+the music itself. Since Mudela specifies the notes, independently of any
+typesetting work that went into your reference copy, you are not
+duplicating any of the publisher's work.
+
+6. If you want to violate copyright, there are two main cases where you
+may do so: fair use, and with permission. The former is rather fuzzily
+defined, but it includes such things as including small extracts of a
+score in a critique, and making a large print or Braille copy for a blind
+or partially-sighted performer (many people argue that in this case it
+should always be kept with the original copy and/or destroyed after it is
+no longer needed). The latter is obvious: You can always write to the
+composer, arranger, editor, lyricist or publisher in question and ask if
+you can do whatever it is you're trying to do. Some will respond more
+readily than others, but anything that they say will override any copying
+restrictions imposed on you.
+
+
+References - best one I know is the UK-based Performing Right Society,
+http://www.prs.co.uk/ (especially "membership") and their links to other
+international equivalents.
+
+
+
+Juergen Reuter <reuterj@ira.uka.de>:
+
+[More information can be had at: ]
+
+lurl(http://lcweb.loc.gov/copyright/)
+(USA copyright law)
+
+lurl(http://fairuse.stanford.edu/)
+(meta site about copyright with many links to other resources)
+
+lurl(http://host.mpa.org/crc.html)
+(copyright from the viewpoint of the USA music publishers' association)
-question(How does copyright for sheet music work? Can I enter and spread my newly bought Bach urtext?)
+lurl(http://www.wipo.int)
+(World Intellectual Property Organization (a UNO agency); with
+information about international copyright)
-(ummm... unanswered as yet)
sect(Windows32)
description(
dit(lurl(http://www.ssc.com/linux/))
The Number One Free Operating System Kernel: Linux
-dit(lurl(http://www.bright.net/~dlphilp/linux_soundapps.html))
+dit(lurl( http://sound.condorow.net))
Dave Philips' Linux sound applications page
dit(lurl(http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html))
Stochastic composing using LilyPond
document that can be processed with LaTeX. The result is a text
document with formatted music integrated.
-Lilypond will create a directory to put temporary files, the default
-dir name is file(out). When you run mudela on a file, like this:
-
-verb(mudelab-book myfile.tex)
-
-the a file file(out/myfile.latex) will be created. And to create
-the file(.dvi) file you should type:
-
-verb(latex out/myfile.latex)
-
-This will create file(myfile.dvi) in the current directory. Bad things
-will happen if you cd to file(out) and then runs verb(latex myfile.latex)
+Lilypond will by default create all output files in directory file(out).
+The file to give to latex has ext file(.latex).
bf(About the input)
code(\begin) takes the following options:
description(
-dit(floating)
- the created graphics can be inserted in the middle of a text line,
- not only as a separate paragraph
-dit(fragment)
- mudela-book adds some redtape. You
- can substitute voice-contents for CONTENTS in this case.
+dit(eps)
+ the music is created as eps graphics that can be inserted in
+ the middle of a text line, not only as a separate paragraph
dit(verbatim)
CONTENTS is copied into the TeX source enclosed in a verbatim block.
dit(11pt, 13pt, 16pt, 20pt, 26pt)
set the fontsize to use for the music
+dit(fragment)
+dit(nonfragment)
+ Override mudela-book autodetection of what type of code is in the
+ mudela block, voice contents or complete code.
)
startdit()
-dit(--mudela-fontsize)
+dit(--default-mudela-fontsize=??pt)
Set the fontsize to use for mudela if no fontsize is given
as option.
-dit(--force-mudela-fontsize)
+dit(--force-mudela-fontsize=??pt)
Force all mudela to use this fontsize, overriding options
given to \begin{mudela}
-dit(--outname)
+dit(--outname=FILE)
The name of LaTeX() file to output. If this option is not given,
the output name derived from the input name.
-dit(--outdir)
+dit(--outdir=DIRECTORY)
The directory to output lilypond output and input to.
dit(--help)
Print a short help message
Write dependencies to outdir/filename.dep
dit(--force-verbatim)
Make all mudela verbatim.
+dit(--initfile=FILE)
+ read command definitions from file(FILE)
enddit()
manpagefiles()
- You have to install LaTeX. file(mudela-book) is not tested on LaTeX 2.09
- and will probably fail on something else than LaTeX2e.
-
+ See file(Documentation/tex/out/mudela-book-doc.dvi) for more info.
+ You have to install LaTeX.
file(mudela-book) is written in python 1.5, so you have to install
url(python)(http://www.python.org).
music in \footnote{...} or \marginpar{...}.
Ignores almost all LaTeX commands that changes margins and linewidths.
-
+
+file(\begin{verbatim}) is ignored.
manpageauthor()
nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen)
document that can be processed with LaTeX\&. The result is a text
document with formatted music integrated\&.
.PP
-Lilypond will create a directory to put temporary files, the default
-dir name is \fBout\fP\&. When you run mudela on a file, like this:
-.PP
-
-.DS
-
-mudelab-book myfile\&.tex
-.DE
-
-
-.PP
-the a file \fBout/myfile\&.latex\fP will be created\&. And to create
-the \fB\&.dvi\fP file you should type:
-.PP
-
-.DS
-
-latex out/myfile\&.latex
-.DE
-
-
-.PP
-This will create \fBmyfile\&.dvi\fP in the current directory\&. Bad things
-will happen if you cd to \fBout\fP and then runs
-.DS
-
-latex myfile\&.latex
-.DE
-
-
+Lilypond will by default create all output files in directory \fBout\fP\&.
+The file to give to latex has ext \fB\&.latex\fP\&.
.PP
\fBAbout the input\fP
.PP
.PP
\f(CW\ebegin\fP takes the following options:
.PP
-.IP "floating"
-the created graphics can be inserted in the middle of a text line,
-not only as a separate paragraph
-.IP "fragment"
-mudela-book adds some redtape\&. You
-can substitute voice-contents for CONTENTS in this case\&.
+.IP "eps"
+the music is created as eps graphics that can be inserted in
+the middle of a text line, not only as a separate paragraph
.IP "verbatim"
CONTENTS is copied into the TeX source enclosed in a verbatim block\&.
.IP "11pt, 13pt, 16pt, 20pt, 26pt"
set the fontsize to use for the music
+.IP "fragment"
+.IP "nonfragment"
+Override mudela-book autodetection of what type of code is in the
+mudela block, voice contents or complete code\&.
.PP
.SH "OPTIONS"
.PP
.IP
-.IP "--mudela-fontsize"
+.IP "--default-mudela-fontsize=??pt"
Set the fontsize to use for mudela if no fontsize is given
as option\&.
-.IP "--force-mudela-fontsize"
+.IP "--force-mudela-fontsize=??pt"
Force all mudela to use this fontsize, overriding options
given to \ebegin{mudela}
-.IP "--outname"
+.IP "--outname=FILE"
The name of file to output\&. If this option is not given,
the output name derived from the input name\&.
-.IP "--outdir"
+.IP "--outdir=DIRECTORY"
The directory to output lilypond output and input to\&.
.IP "--help"
Print a short help message
Write dependencies to outdir/filename\&.dep
.IP "--force-verbatim"
Make all mudela verbatim\&.
+.IP "--initfile=FILE"
+read command definitions from \fBFILE\fP
.PP
.SH "FILES"
-You have to install LaTeX\&. \fBmudela-book\fP is not tested on LaTeX 2\&.09
-and will probably fail on something else than LaTeX2e\&.
-.PP
+See \fBDocumentation/tex/out/mudela-book-doc\&.dvi\fP for more info\&.
+You have to install LaTeX\&.
\fBmudela-book\fP is written in python 1\&.5, so you have to install
python\&.
.PP
.PP
Ignores almost all LaTeX commands that changes margins and linewidths\&.
.PP
+\fB\ebegin{verbatim}\fP is ignored\&.
.SH "AUTHOR"
.PP
Han-Wen Nienhuys <hanwen@cs\&.uu\&.nl>, http://www\&.cs\&.uu\&.nl/people/hanwen
\maketitle
%\printparam
+\section{Introduction}
+
Mudela-book is a script that process your \LaTeX~file and with great
help from GNU LilyPond it translates blocks of mudela code it finds
inside \verb|mudela| environments to tex or eps graphics. It then
be no empty lines between the normal text and the mudela
environment.
-There is an even shorter way to write small musical fragments. This
-triad, \mudela{<c' e' g'>}, was created with this code:
-\verb|\mudela{<c' e' g'>}|
-
-Mudela-book let you define your own commands, see the file
-\verb|mudela-book-defs.py|. In a later version, it will be possible to
-have your own file that defines new commands. To print small rhythms
-like this, \mudelaRhythm{c4 r8 [c16 c] c4 c}, the default
-\verb|mudela-book-defs.py| also defines a command \verb|mudelaRhythm|.
-The last music was created like this:
-\verb|\mudelaRhytm{c4 r8 [c16 c] c4 c}|. This feature is higly
-experimental, so Things Will Change.
-
-The last example show that we need options to change the
+\section{Fontsize options}
+You can use all lilypond fontsizes in mudela-book.
% LONG line just to test multiple mudela on one line
-fontsize of the music. 11pt, \mudela[11pt]{<c' e' g'>} or 13pt, \mudela[13pt]{<c' e' g'>} is probably a better fontsize
-if you include music in the middle of the text. The code looks like this:
-\verb|\mudela[11pt]{<c' e' g'>}|
-
-or
-\begin{mudela}[13pt, verbatim]
+The default 16pt fontsize, \mudela{<c' e' g'>}, is probably to big to be included in the middle of the text. 11pt, \mudela[11pt]{<c' e' g'>} or 13pt, \mudela[13pt]{<c' e' g'>} is probably better.
+The code can look like this:
+\begin{mudela}[13pt, eps, verbatim]
<c' e' g'>
\end{mudela}
\end{mudela}
\end{itemize}
+\section{User defined commands}
+There is an even shorter way to write small musical fragments. This
+triad, \mudela{<c' e' g'>}, was created with this code:
+\verb|\mudela{<c' e' g'>}|
+
+Mudela-book defines the \verb|\mudela| command, and let you define
+your own commands in a file specified by
+the command line option \verb|--initfile=filename|. The format for the
+file is a definition of a python dictionary:
+% mudela-book should really respect \begin{verbatim}
+
+\verb|{ 'mudela': r"""|
+
+\verb|\begin|\verb|{mudela}[eps \fontoptions]|
+
+\verb| \maininput|
+
+\verb|\end|\verb|{mudela}|
+
+\verb|""",|
+
+\verb| 'mudelaRhythm': r"""|
+
+\verb|\begin|\verb|{mudela}[eps \fontoptions]|
+\begin{verbatim}
+\score{
+ \type RhythmicStaff{
+ \notes{\stemup \maininput}
+ }
+ \paper{linewidth = -1.\cm;}
+}
+\end{verbatim}
+\verb|\end|\verb|{mudela}|
+
+\verb|"""|
+
+\verb|}|
+
+The above code show how \verb|\mudela| could have been defined, and
+also defines a new command \verb|mudelaRhythm|. Notice that you can
+send fontsize options to the defined commands.
+\verb|\mudelaRhytm[11pt]{c4 c8 [c16 c] c4 c}| produce this music:
+\begin{mudela}[eps, 11pt]
+\score{
+ \type RhythmicStaff{
+ \notes{ \stemup c4 r8 [c16 c] c4 c }
+ }
+ \paper{linewidth = -1.\cm;}
+}
+\end{mudela}
+
+\section{Just in case...}
+The options \verb|fragment| and \verb|nonfragment| will override
+mudela-book when it scans the mudela code to see if it is staff
+contents or complete code. This might be useful if mudela-book choose
+wrong.
+
+Since there is no finder's fee which doubles every year, there is no
+need to wait for the price money to grow. So send a bug report today
+if you need this one of this options.
+
+\section{Examples}
This was all options to \verb|\begin{mudela}|. The rest of the
document will show some ways you can use mudela in
\LaTeX~documents. It will also act as a simple test-suite for
r4-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
[f16-.( )f-. dis8-- gis16-.( )gis-.] cis4.-\fermata |
- r4.-\fermata [cis,16 cis g'8 f16 f b][g16 g f8 b16 b] dis4.-\fermata
+ r4.-\fermata [cis,16 cis g'8 f16 f b8][g16 g f8 b16 b] dis4.-\fermata
}
\paper{linewidth = 7.\cm;}
}
To the right you can see some bars from the trumpet fanfara from the
beginning of the fantastic street opera ``Houdini the Great'', by the
-danish composer Andy Pape. The music is put inside a
+danish composer Andy Pape. The music is put inside a
\verb|floatingfigure| environment, and the music will be aligned by
the right marging if you set floatingfigure width and mudela linewidth
to the same value. The code looks like this:
r4.-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
[f16-.( )f-. dis8-- gis16-.( )gis-.] cis8.-\fermata |
- r4.-\fermata [cis,16 cis g'8 f16 f b]
+ r4.-\fermata [cis,16 cis g'8 f16 f b8]
[g16 g f8 b16 b] dis4.-\fermata
}
\paper{linewidth = 7.\cm;}
+
+@Misc{moods,
+ key = {moods},
+ title = {MOODS, Music Object Oriented Distributed System.},
+ html ={http://hpcn.dsi.unifi.it/~tinymoods/},
+
+note = { "With MOODS activity, the partners intend to exploit a strongly
+innovative idea: automating and managing the large information used by
+orchestras during rehearsals and public performance of concerts (e.g.,
+symphonic music), as well as for operas or ballets. "
+}
+
+}
+
@Misc{mosaic,
title = {Mosaic},
note={Macintosh DTP-notation program},
mudela(fragment,verbatim,center)(
[a'8 a'] [a'16 a' a' a']
)
-If you want to put beams over chords, you will find that the obvious
-construction does not work. You must do the following:
-mudela(fragment,verbatim,center)(<[a'8 c''> b' <c'' e''> <a' c'']>)
-The bracket characters must appear immediately adjacent to a note.
-
-In order to create triplets, you must use a length multiplier after
-the brackets. An open bracket code([) followed by a fraction
-instructs LilyPond to print a number over the beam, and it also
-starts multiplying all note lengths by the fraction. The closing
-bracket code(]) should be followed by the fraction code(1/1) in order
-to restore normal note lengths. To create a triplet without a beam,
-place a backslace code(\) before the opening and closing brackets.
-
-For example, in an ordinary triplet, the notes have duration 2/3 as
-long as normal.
-mudela(fragment,verbatim,center)(
-[2/3 a'8 a' a' ]1/1 \[2/3 b'4 b' b'\]1/1
-)
-
-There is a shorthand that can be used when you
-want notes lengths multiplied by 2/n.
-The 2 can be omitted after the open bracket
-and the first 1 can be omitted after the closing bracket.
-mudela(fragment,verbatim,center)(
-[/3 b'8 b' b' ]/1 \[/3 a'4 a'8\]/1
-)
-COMMENT(This next bit needs to be fixed...or the language needs to be
-fixed.)
-
-Here is a combination
-mudela(fragment,verbatim,center)(
-[/3 a'8 a'16 a'] a'8 \]
-)
+[EXPLAIN TUPLETS HERE]
Another type of spanner is the slur. Slurs connects chords and try to
avoid crossing stems. A slur is started with code(CHAR(40)) and stopped with
A tie connects two adjacent note heads. When used with chords, it
connects all of the note heads. Ties are indicated using the tilde symbol
-code(~) by analogy with TeX()'s tie which connects words. For ties
-between chords, the input convention is somewhat peculiar. You cannot
-write code(<c g>~<c g>), but rather must put the tilde after
-a note within the first chord.
+code(~) by analogy with TeX()'s tie which connects words.
mudela(fragment,verbatim,center)(
-e' ~ e' <c'~ e' g'><c' e' g'>
+e' ~ e' <c' e' g'> ~ <c' e' g'>
)
between two notes, begin with code([:)var(length) and end with code(]).
The tremolo marks will appear instead of beams. Putting more than two
notes in such a construction will produce odd effects.
-mudela(fragment,verbatim,center)(
+
+[TREMOLO BEAMS TEMPORARILY OUT OF ORDER]
+
+COMMENT(mudela (fragment,verbatim,center)(
c'2:8 c':32 [:16 e'1 g'] [:8 e'4 f']
-)
+))
COMMENT(
Is the last paragraph correct? Is it called "tremolo"? Why is
"abbreviation" used? (What is the unabreviated form?)
-
-mudela(fragment,verbatim,center)(
+COMMENT(
+mudela (fragment,verbatim,center)(
c'4:32 [:16 c'8 d'8]
-)
+))
)
[c'8 c'] [c'16 c' c' c'] [c'16. c'32 c' c'16.]
)
+The brackets themselves have no duration, so they are grammatically
+equivalent to the barcheck.
+
dit(Tie) LilyPond's tie is entered as a tilde, `code(~)', in analogy
with TeX()'s tie (which ties together words with a space), The tie is
similar to the slur: it looks like a slur, but a slur connects whole
chords, whereas the tie connects note heads.
-The input convention for the tilde is somewhat peculiar when used in
-conjunction with chords. Internally, the extra information that is
-represented by the tilde has to be attached to a note (or to a rest,
-for that matter). For this reason, you can't put the tilde between
-two chords (as in code(<c' g'> ~nop( )<c' g'>)). The tilde sign must be
-directly after a note of the chords. It does not matter which
-one. The following example demonstrates the use of ties:
+The following example demonstrates the use of ties:
mudela(fragment,verbatim,center)(
c''1 ~ c''4
- <c'2. ~ g' es''> <c'4 g' es''>
+ <c'2. g' es''> ~ <c'4 g' es''>
)
+Since the tie is thought to be inbetween the notes, it has no
+duration, and is grammatically equivalent to the barcheck.
+
dit(Hairpins)
Crescendi and decrescendi can be printed in hairpin style. The
starting marker for the crescendo is code(\<), and for the decrescendo
contexts, and it adds a brace to the output at the
nop(left.)footnote(The GrandStaff is quite limited, LilyPond can not
do cross staff beaming and slurring.)
-
- A code(GrandStaff) context can contain code(Staff)s. Typically, it
+
+ A code(GrandStaff) context can contain code(Staff)s. Typically, it
will contain two code(Staff)s, one treble staff, and one bass
staff. The bar lines of the contained staffs are connected
vertically.
marks to.
mudela(verbatim)(
- bach = \notes \relative c { [g16 d' b' a] [b d, b' d,] }
-
+ bach = \notes \relative c { g16 d' b' a b d, b' d, }
+ bachBeams = \notes { [s4] [s4] }
staffStuff = \notes { \clef bass; \time 4/4; s1 \bar "|."; }
slursOne = \notes { s16( s s s s16 s s )s }
slursTwo = \notes { s16-. s s() s s16() s s ()s }
\score{
- { < \type Voice = celloVoice { \bach \bach }
- \type Voice = celloVoice { \slursOne \slursOne }
+
+
+ { <
+ \type Voice = celloVoice { \bach \bach}
+ \type Voice = celloVoice < { \slursOne \slursOne }
+ { \bachBeams \bachBeams } >
\staffStuff
>
<
\type Voice = celloVoice { \bach \bach }
- \type Voice = celloVoice { \slursTwo \slursTwo }
+ \type Voice = celloVoice < { \slursTwo \slursTwo }
+ { \bachBeams \bachBeams } >
\staffStuff
>
}
+pl 15
+
+pl 14.hwn1
+ - new beam syntax: { [<c e> <c e>] }, changed in lilypond,
+parser, lilypond (mudela 1.0.14), manual
+ - new tie syntax: { <c e > ~ <c e > } changed in manual,
+parser, lilypond (Mudela 1.0.13)
+
pl 14.jcn1
- bf: get_chord C-m5-
- typos: chord-name
+pl 14.tca2
+ - move option proccing out of main
+
+**********
+
pl 14
pl 13.hwn1
BUGS:
* c4 \! \> c4
- * resurrect tremolo beams.
+ * tremolo stuff
* gallina barlines.
* typo checks on property names?
- * --safe: disallow backslashes
-
* use streambufs and iostream
to provide IO handling for TeX stream, mudela stream, data-file.
* zip target for binary windows dist (JBR)
- * revise documentation
-
* junking \skip req in lyrics
* Language:
* mi2mu empty staffs.
- * include MIDI list
-
* midi_instrument -> midiInstrument
* horizontal centering of dynamics
* stable make/config stuff
- * stemup/stemdown; see test/updown.fly
- - check examples; add \type Staff hither and thether
-
* $DEPENDENCIES_OUTPUT support
- * use a fake-yodl.sh to mimick yodl when yodl is not installed
-
* fix BUGs
- * fix weird behaviour when .AFMs not found.
+ * fix weird behaviour when .AFMs/.SCMs not found.
* Xdvi zooming ?! Try to understand GS garbage collection.
gs: Error: /undefined in draw_beam
* make Tie_req a "command" { <c g> ~ <c g> }
- * bib ep1988
-
* revise the Score_priority_align_engraver concept. It sucks.
- * ly2xdvi, ly2ps
-
* make new VoiceOne, VoiceTwo, VoiceThree contexts with
ydirection and hshift preset
* \cadenza , \meter, \grouping should all be \properties
* rename
- - plet -> tuplet
- measure -> bar
- abbrev -> tremolo
- abbreviation-beam -> (measured/unmeasured) tremolo
* handle ^C for tmp/file creation.
+
* dots & rest collisions.
* documentation
- use plet grouping
- separate visual from rhythmic info even more
- beams over bars
- - endbeam req should be *after* the duration, so you can do
- < { [c4] }
- { c8. c16 } >
-
* lines:
- Ledger lines, should be separate item: Ledger_lines, Ledger_lines
* Flower types:
- A decent scalar type
- * binsearch/hash for identifiers
-
* stafftypes: voice names/ instrument names.
* lily \tempo
* versioning stuff (cvt mudela, mudela, etc.)
* Klavarskribo?
-5
- * lyrics in chords still fuck up.
-
- * Use hooks/dependency graphs for properties
+ * dynamic loading of engravers?
+
+SMOBS:
+
+****************************************
+Han-Wen Nienhuys <hanwen@cs.uu.nl> writes:
+
+> mcmanus@IDT.NET writes:
+> > > I want different C++ objects (with scheme embedded) to be linked by
+> > > C++ pointers. I want to access these other objects from the Scheme
+> > > code, and I want access to these pointers from C++.
+> >
+> > You can do this with a combination of smob's and primitive functions,
+> > though it may not be be exactly what you wanted. You would have one
+> > smob for each class in your application, and then you would write a
+> > primitive function that would return the objects that are linked to a
+> > base object.
+>
+> And the smob and the C++ class are interlinked? Like
+>
+> class Foo_class {
+> Foo_smob *smob_ptr_;
+> }
+>
+> struct Foo_smob {
+> Foo_class *class_ptr_
+> }
+
+Usually you can get away without having this interlinked structure.
+One piece of information you need when exporting objects to scheme is
+the smob tag for your class. You might store this value (a long) into
+a class static variable, or a file static variable. I'll use a class
+static variable in this example.
+
+I typically use code that works like this (untested code ahead):
+
+class Foo_class {
+ static long *Foo_smob_tag;
+ SCM obj; // representation as a scheme object, description comes later
+}
+
+// call this once on startup
+void init_Foo_class {
+ static scm_smobfuns type_rec;
+
+ type_rec.mark = foo_mark;
+ type_rec.free = foo_free;
+ type_rec.print = foo_display;
+ type_rec.equalp = 0;
+ Foo_class::Foo_smob_tag = new int(scm_new_smob(type_rec));
+}
+
+When you want to export an object to scheme, you put a pointer to the
+object itself in the cdr of the cell, and the tag in the car of the
+cell. The code looks like this:
+
+// Is this a Foo?
+static int
+foo_p(SCM obj)
+{
+ return(SCM_NIMP(obj) && SCM_CAR(obj) == Foo_class::Foo_smob_tag);
+}
+
+// given a Scheme representation, return, a C++ representation
+static Foo_class *
+foo_unbox(SCM obj)
+{
+ return((Foo_class*)SCM_CDR(obj));
+}
+
+// the SCM representation of the object is stored inside itself
+// this will become useful when destructor gets called
+static SCM
+foo_box(Foo_class *foo)
+{
+ SCM_DEFER_INTS;
+ SCM_NEWCELL(foo->obj);
+ SCM_SETCAR(foo->obj, Foo_class::Foo_smob_tag);
+ SCM_SETCDR(foo->obj, (SCM)foo);
+ SCM_ALLOW_INTS;
+ return foo->obj;
+}
+
+> C++ determines life time, so what is the strategy?
+
+What happens now when the destructor gets called? Lets set the cdr to
+NULL, and then check for that in all of the primitive functions that
+use your smob. We'll call this notion 'live'; a scheme object is
+'live' if the C++ representation still exists, it's dead if the C++
+object is gone. You can still have references to dead objects in
+scheme code; it's just an error to use them. This idea is stolen from
+Emacs's handling of buffers ('buffer-live-p' and friends).
+
+Add another function, foo_live_p:
+
+static int
+foo_live_p(SCM obj)
+{
+ return(foo_p(obj) && SCM_CDR(obj) != NULL);
+}
+
+In you destructor, you need to do:
+
+~Foo_class()
+{
+ SCM_CDR(this->obj, NULL);
+}
+
+When writing new primitives, now just check foo_live_p().
+
+I hope the above helps,
+
+-russ
+
+
+--
+"Even if you are on the right track, you'll get run over
+if you just sit there."
+ --Will Rogers (1879-1935)
+
+***************************
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=14
-MY_PATCH_LEVEL=tca2
+PATCH_LEVEL=15
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
ln -sf $LILYPOND_SOURCEDIR/mf/out/ afm
mkdir -p $prefix/share/lilypond
-ln -sf $LILYPOND_SOURCEDIR/scm $prefix/share/lilypond
+ln -sf $LILYPOND_SOURCEDIR/ $prefix/share/lilypond
+
if [ -f ../.gdbinit ];
then
ln ../.gdbinit .
depth = ..
INI_FILES = $(FLY_FILES) $(LY_FILES)
-PY_FILES=$(wildcard *.py)
-EXTRA_DIST_FILES = $(SCM_FILES) $(PY_FILES)
+EXTRA_DIST_FILES = $(SCM_FILES)
INSTALLATION_DIR=$(datadir)/ly/
INSTALLATION_FILES=$(INI_FILES)
% Toplevel initialisation file.
-\version "1.0.10";
+\version "1.0.14";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.10";
+\version "1.0.14";
\include "declarations.ly";
% Toplevel initialisation file.
-\version "1.0.10";
+\version "1.0.14";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.10";
+\version "1.0.14";
\include "declarations.ly"
\consists "Dot_column_engraver";
\consists "Stem_engraver";
% \consists "Plet_engraver";
- \consists "Beam_engraver";
+ \consists "Command_beam_engraver";
\consists "Abbreviation_beam_engraver";
\consists "Multi_measure_rest_engraver";
\consists "Script_engraver";
\consists "Rhythmic_column_engraver";
\consists "Font_size_engraver";
\consists "Slur_engraver";
- \consists "Ties_engraver";
+ \consists "Command_tie_engraver";
\consists "Tuplet_engraver";
\consists "Note_heads_engraver" ;
\consists "Skip_req_swallow_translator";
% Toplevel initialisation file.
-\version "1.0.10";
+\version "1.0.14";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.12";
+\version "1.0.14";
\include "declarations.ly"
% Toplevel initialisation file.
-\version "1.0.10";
+\version "1.0.14";
\include "declarations.ly";
+++ /dev/null
-# Default mudela-book init-file
-{ 'mudela': r"""
-\begin{mudela}[eps \fontoptions]
- \maininput
-\end{mudela}
-""",
- 'mudelaRhythm': r"""
-\begin{mudela}[eps \fontoptions]
-\score{
- \type RhythmicStaff{
- \notes{\stemup \maininput}
- }
- \paper{linewidth = -1.\cm;}
-}
-\end{mudela}
-"""
-}
-\version "1.0.10";
+\version "1.0.14";
paper_sixteen = \paper {
staffheight = 16.0\pt;
\include "table13.ly";
\include "table16.ly";
-\version "1.0.10";
+\version "1.0.14";
paper_twenty = \paper {
staffheight = 20.0\pt;
%hmm, (these) abbrevs suck, imo
% i guess they're meant as some form of doco
% that's what i use them for...
-stemup = {
+stemup = \notes {
+ s1*0
% Stupid hack to make < { \stemup } > work
\property Voice.ydirection = \up
}
-stemboth= {
+stemboth= \notes {
+ s1*0
\property Voice.ydirection = \center
}
-stemdown = {
+stemdown = \notes {
+ s1*0
\property Voice.ydirection = \down
}
-slurup = {
+slurup = \notes {
+ s1*0
\property Voice.slurydirection = \up
}
-slurboth= {
+slurboth= \notes {
+ s1*0
\property Voice.slurydirection = \center
}
-slurdown = {
+slurdown = \notes {
+ s1*0
\property Voice.slurydirection = \down
}
-\version "1.0.12";
+\version "1.0.14";
scales = \notes\transpose c''{
f2 f f f f f f f f f\break
% scales with accents.
%
-\version "1.0.10";
+\version "1.0.14";
blah = \notes {
\time 6/8;
\transpose c {
-\version "1.0.10";
+\version "1.0.14";
one = \notes\relative c{
c'' d e f
-\version "1.0.10";
+\version "1.0.14";
blah = \notes {
Tested Features: example file with comments
%}
-\version "1.0.10";
+\version "1.0.14";
% the % is a comment.
copyright = "public domain";
}
-% \version "1.0.10";
+% \version "1.0.14";
global = \notes {
\key g;
\type Voice=i
\clef "alto";
[g8(b)g] | [b(e,)b'] | [c,(a')c,] | [c'(d,)c'] | [b(d)b] |
- [e(g,)e'] | [e(e,<)a' c,]> | <[a(c,> <fis b,> )b,] |
+ [e(g,)e'] | [e(e,<)a' c,>] | <[a(c,> <fis b,> )b,] |
}
cello = \notes\relative c'{
-\version "1.0.10";
+\version "1.0.14";
part = \notes {
c-1 c c c
r1*3
% \lbheel \lbheel \lfheel \lftoe
% \rbheel \rbtoe \rfheel \rftoe
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes {
* organ staff...
%}
-\version "1.0.10";
+\version "1.0.14";
% 13
\type Staff <
- { \stemup r4 dis' cis cis ~ |
+ \type VoiceOne { \stemup r4 dis' cis cis ~ |
[cis8 a d cis] [bis gis] cis4 |
dis2 cis4 r8 cis }
- { \stemup bis2 }
- { \stemup \shifton r4 gis ~ [gis8 gis] ~ \stemdown \shiftoff gis4 |
+ \type VoiceOne { \stemup bis2 }
+ \type VoiceThree { \stemup \shifton r4 gis ~ [gis8 gis] ~ \stemdown \shiftoff gis4 |
a4. fis8 gis4. a8 ~ |
a4 gis4 gis r8 gis }
% { \stemup \shifton s4 fis4 e}
% a quick hack to avoid some collisons
- { \stemdown \shifton s4 fis4 e}
- { \stemdown s4 dis4 cis4 }
+ \type VoiceFour { \stemdown \shifton s4 fis4 e}
+ \type VoiceTwo { \stemdown s4 dis4 cis4 }
> |
%16
}
\praeludium_pedal \breakmusic \fugaII_pedal }
>
- \paper{}
+ \paper {
+ \translator {
+ \VoiceContext
+ \name "BLA";
+ }
+ \translator {
+ \VoiceContext
+ \name "VoiceOne";
+ ydirection = "1";
+ }
+ \translator {
+ \VoiceContext
+ \name "VoiceTwo";
+ ydirection = "-1";
+ }
+ \translator {
+ \VoiceContext
+ \name "VoiceThree";
+ ydirection = "1";
+ hshift = "1";
+ }
+ \translator {
+ \VoiceContext
+ \name "VoiceFour";
+ ydirection = "-1";
+ hshift = "1";
+ }
+
+ }
\midi {
\tempo 4 =96; }
-\version "1.0.10";
+\version "1.0.14";
ritme = \notes\transpose c'' {
\time 4/4;
% scales with accents.
%
-\version "1.0.10";
+\version "1.0.14";
blah = \notes {
\time 6/8;
\transpose c {
-\version "1.0.10";
+\version "1.0.14";
blah = \notes{ \transpose c'' {
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes \transpose c'''{
\stemup
-\version "1.0.10";
+\version "1.0.14";
onestaff = \type Staff = foo\notes {
\property Staff.instr = instr
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes\transpose c'{
\property Score.beamquantisation = \none
- [a'8 <a' g'']>
- [c <c e,]>
- [a'16 <a' g'']>
- [c <c e,]>
- [a'32 <a' g'']>
- [c <c e,]>
+ [a'8 <a' g''>]
+ [c <c e,>]
+ [a'16 <a' g''>]
+ [c <c e,>]
+ [a'32 <a' g''>]
+ [c <c e,>]
}
\paper{
castingalgorithm = \Wordwrap;
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes\transpose c''{
TestedFeatures = "beams and beamflags";
}
-\version "1.0.10";
+\version "1.0.14";
\score{
<
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.10";
+\version "1.0.14";
shortlong = \notes{
c4()c( c c |
-\version "1.0.12";
+\version "1.0.14";
%{
Would this be acceptable/good enough/convenient for entry?
-\version "1.0.12";
+\version "1.0.14";
%{
Would this be acceptable/good enough/convenient for entry?
-\version "1.0.10";
+\version "1.0.14";
\score {
\notes{
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "1.0.10";
+\version "1.0.14";
-\version "1.0.10";
+\version "1.0.14";
\score {
\include "paper20.ly"
-\version "1.0.10";
+\version "1.0.14";
oden = \lyrics{
O8 |
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes{
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes \relative c {
-\version "1.0.10";
+\version "1.0.14";
FontBody= \notes\transpose c''{
\bar "|:";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.10";
+\version "1.0.14";
\include "font-body.ly"
\score{
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.10";
+\version "1.0.14";
\include "font-body.ly"
\score{
TestedFeatures = "This file tests some nasty Gourlay spacings";
}
-\version "1.0.10";
+\version "1.0.14";
%{
-\version "1.0.10";
+\version "1.0.14";
\include "table13.ly";
\include "table16.ly";
-\version "1.0.10";
+\version "1.0.14";
toeter_i = \notes\relative c {
\property Staff.instrument = "Toeters"
-\version "1.0.10";
+\version "1.0.14";
%{
test key itemv breaking
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes\relative c'{
[c16 \stemdown c'' \stemboth c,, d]
-\version "1.0.10";
+\version "1.0.14";
global = \notes {
s1 | \mark "A";
-\version "1.0.10";
+\version "1.0.14";
voice_one = \notes\transpose c' { \stemup
R1 * 2 | f'4-. r r2 | R1 * 3 |
-\version "1.0.10";
+\version "1.0.14";
\score {
-\version "1.0.10";
+\version "1.0.14";
onestaff = \type Staff = foo\notes {
\property Staff.instr = instr
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.10";
+\version "1.0.14";
shortlong = \notes{
c4()c( c c |
-\version "1.0.10";
+\version "1.0.14";
% bug
% excentric slur can't handle this ...
% test damping
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes\relative c'{
-\version "1.0.10";
+\version "1.0.14";
% urg, the direction of the slur gets swapped!
\score{
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes\transpose c'{
TestedFeatures = "This file tests various spacings";
}
-\version "1.0.10";
+\version "1.0.14";
multipart = \notes{
\type StaffGroup <
}
-\version "1.0.10";
+\version "1.0.14";
beamintervals = \notes{
\time 7/4;
-\version "1.0.10";
+\version "1.0.14";
$somewhat_long = \lyrics{
\property Lyrics . textstyle = "roman"
% the thumb-script is used in cello music to indicate a note that should
% be played with your thumb.
-\version "1.0.10";
+\version "1.0.14";
\score { \notes \relative c'' {
- <[ a8_\thumb a'8-3(> <)b_\thumb b'-3>
- <c_\thumb c'-3(> <)d_\thumb d'-3]>
+ [<a8_\thumb a'8-3(> <)b_\thumb b'-3>
+ <c_\thumb c'-3(> <)d_\thumb d'-3>]
}
\paper{
linewidth = 80.\mm;
-\version "1.0.10";
+\version "1.0.14";
% middle tie is wrong
\score{
\notes\relative c'{
- { <c4 e g~ > <d f a>
+ { <c4 e g > ~ <d f a>
}
}}
-\version "1.0.10";
+\version "1.0.14";
tie = \notes\transpose c''{
instrument= "Instrument";
}
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes
}
-\version "1.0.10";
+\version "1.0.14";
vOne = \notes \relative c''{
\clef"violin";
-\version "1.0.10";
+\version "1.0.14";
\score {
\notes <
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.0.10";
+\version "1.0.14";
\score{
\notes{
Tested Features lyrics and chords
%}
-\version "1.0.12";
+\version "1.0.14";
melodie = \notes\relative c'' {
\clef "violin";
Tested Features: lyrics, interleaving lyrics and staffs
%}
-\version "1.0.10";
+\version "1.0.14";
melody = \notes \relative c'' {
\clef violin;
if (stem_l_ && stem_l_->beam_l_) {
slope_f = stem_l_->beam_l_->slope_f_;
// ugh, rather calc from Abbreviation_req
- beams_i = stem_l_->beams_right_i_ >? stem_l_->beams_left_i_;
+ beams_i = stem_l_->beams_i_drul_[RIGHT] >? stem_l_->beams_i_drul_[LEFT];
}
Real sl = slope_f * internote_f;
if (!b)
return false;
- if (bool (abeam_p_) == bool (b->spantype == Span_req::START))
+ if (bool (abeam_p_) == bool (b->spantype_ == START))
return false;
Direction d = (!abeam_p_) ? LEFT : RIGHT;
int type_i = span_reqs_drul_[LEFT]->type_i_;
s->flag_i_ = intlog2 (type_i) - 2;
- if (span_reqs_drul_[RIGHT])
- s->beams_left_i_ = s->flag_i_;
- else
- s->beams_right_i_ = s->flag_i_;
+ s->beams_i_drul_[(span_reqs_drul_[RIGHT]) ? LEFT: RIGHT] = s->flag_i_;
abeam_p_->multiple_i_ = s->flag_i_;
if (s->type_i () != 1) // no abbrev gaps on half note
if (!b)
return false;
- if (bool (beam_p_) == bool (b->spantype == Span_req::START))
+ if (bool (beam_p_) == bool (b->spantype_ == START))
return false;
Direction d = (!beam_p_) ? LEFT : RIGHT;
for (int j=0, i=0; i < b.size () && j <stems_.size (); i+= 2, j++)
{
Stem *s = stems_[j];
- s->beams_left_i_ = b[i];
- s->beams_right_i_ = b[i+1];
+ s->beams_i_drul_[LEFT] = b[i];
+ s->beams_i_drul_[RIGHT] = b[i+1];
multiple_i_ = multiple_i_ >? (b[i] >? b[i+1]);
}
}
/* half beams extending to the left. */
if (prev)
{
- int lhalfs= lhalfs = here->beams_left_i_ - prev->beams_right_i_ ;
- int lwholebeams= here->beams_left_i_ <? prev->beams_right_i_ ;
+ int lhalfs= lhalfs = here->beams_i_drul_[LEFT] - prev->beams_i_drul_[RIGHT] ;
+ int lwholebeams= here->beams_i_drul_[LEFT] <? prev->beams_i_drul_[RIGHT] ;
/*
Half beam should be one note-width,
but let's make sure two half-beams never touch
if (next)
{
- int rhalfs = here->beams_right_i_ - next->beams_left_i_;
- int rwholebeams = here->beams_right_i_ <? next->beams_left_i_;
+ int rhalfs = here->beams_i_drul_[RIGHT] - next->beams_i_drul_[LEFT];
+ int rwholebeams = here->beams_i_drul_[RIGHT] <? next->beams_i_drul_[LEFT];
Real w = next->hpos_f () - here->hpos_f ();
Atom a = lookup_l ()->beam (sl, w + stemdx, beam_f);
--- /dev/null
+/*
+ cbeam-engraver.cc -- implement Command_beam_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "cbeam-engraver.hh"
+#include "musical-request.hh"
+#include "beam.hh"
+#include "grouping.hh"
+#include "stem.hh"
+#include "warn.hh"
+#include "time-description.hh"
+
+Command_beam_engraver::Command_beam_engraver ()
+{
+ beam_p_ = 0;
+ finished_beam_p_ =0;
+ finished_grouping_p_ = 0;
+ grouping_p_ =0;
+ reqs_drul_[LEFT] = reqs_drul_[RIGHT] =0;
+}
+
+bool
+Command_beam_engraver::do_try_music (Music *m)
+{
+ if (Beam_req * c = dynamic_cast<Beam_req*>(m))
+ {
+ reqs_drul_[c->spantype_] = c;
+ return true;
+ }
+ return false;
+}
+
+
+void
+Command_beam_engraver::do_process_requests ()
+{
+ if (reqs_drul_[STOP])
+ {
+ if (!beam_p_)
+ reqs_drul_[STOP]->warning (_("No beam to stop"));
+ finished_beam_p_ = beam_p_;
+ finished_grouping_p_ = grouping_p_;
+
+ beam_p_ = 0;
+ grouping_p_ = 0;
+ }
+
+ if (reqs_drul_[START])
+ {
+ beam_p_ = new Beam;
+ grouping_p_ = new Rhythmic_grouping;
+
+ Scalar prop = get_property ("beamslopedamping");
+ if (prop.isnum_b ())
+ beam_p_->damping_i_ = prop;
+
+ prop = get_property ("beamquantisation");
+ if (prop.isnum_b ())
+ beam_p_->quantisation_ = (Beam::Quantisation)(int)prop;
+
+ announce_element (Score_element_info (beam_p_, reqs_drul_[START]));
+ }
+}
+
+void
+Command_beam_engraver::typeset_beam ()
+{
+ if (finished_beam_p_)
+ {
+ Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
+ rg_C->extend (finished_grouping_p_->interval());
+ finished_beam_p_->set_grouping (*rg_C, *finished_grouping_p_);
+ typeset_element (finished_beam_p_);
+ finished_beam_p_ = 0;
+
+ delete finished_grouping_p_;
+ finished_grouping_p_= 0;
+
+ reqs_drul_[STOP] = 0;
+ }
+}
+
+void
+Command_beam_engraver::do_post_move_processing ()
+{
+ reqs_drul_ [START] =0;
+}
+
+void
+Command_beam_engraver::do_pre_move_processing ()
+{
+ typeset_beam ();
+}
+
+void
+Command_beam_engraver::do_removal_processing ()
+{
+ typeset_beam ();
+ finished_beam_p_ = beam_p_;
+ finished_grouping_p_ = grouping_p_;
+ typeset_beam ();
+}
+
+void
+Command_beam_engraver::acknowledge_element (Score_element_info info)
+{
+ if (beam_p_)
+ {
+ Stem* stem_l = dynamic_cast<Stem *> (info.elem_l_);
+ if (!stem_l)
+ return;
+
+
+ Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
+ if (!rhythmic_req)
+ {
+ String s=_("Stem must have Rhythmic structure.");
+ if (info.req_l_)
+ info.req_l_->warning(s);
+ else
+ ::warning (s);
+
+ return;
+ }
+
+
+ if (rhythmic_req->duration_.durlog_i_<= 2)
+ {
+ rhythmic_req->warning (_ ("stem doesn't fit in beam"));
+ return;
+ }
+
+ /*
+ TODO: do something sensible if it doesn't fit in the beam.
+ */
+ Moment start = get_staff_info().time_C_->whole_in_measure_;
+
+ if (!grouping_p_->child_fit_b (start))
+ {
+ String s (_("please fix me") + ": "
+ + _f ("stem at %s doesn't fit in beam", now_moment ().str ()));
+
+ if (info.req_l_)
+ info.req_l_->warning(s);
+ else
+ warning (s);
+ }
+ else
+ {
+ grouping_p_->add_child (start, rhythmic_req->duration ());
+ stem_l->flag_i_ = rhythmic_req->duration_.durlog_i_;
+ beam_p_->add_stem (stem_l);
+ }
+ }
+}
+
+
+
+ADD_THIS_TRANSLATOR(Command_beam_engraver);
{
if (first_b_)
{
- bool success = report_to_l ()->try_music (dynamic_cast<Compressed_music const*> (music_l_));
+ bool success = report_to_l ()->try_music (dynamic_cast<Compressed_music const*> (music_l_));
if (!success)
music_l_->warning ( _("No one to print a tuplet start bracket"));
}
#include "command-request.hh"
#include "note-head.hh"
#include "musical-request.hh"
+#include "tie.hh"
Command_tie_engraver::Command_tie_engraver()
{
void
Command_tie_engraver::do_process_requests ()
{
-
+ if (req_l_)
+ {
+ Moment now = now_moment ();
+ Link_array<Note_head> nharr;
+
+ stopped_heads_.clear ();
+ while (past_notes_pq_.size ()
+ && past_notes_pq_.front ().end_ == now)
+ stopped_heads_.push (past_notes_pq_.get ());
+
+ }
}
void
-Command_tie_engraver::processed_acknowledged ()
+Command_tie_engraver::process_acknowledged ()
{
+ if (req_l_)
+ {
+ if (now_heads_.size () != stopped_heads_.size ())
+ {
+ req_l_->warning ("Unequal number of note heads for tie");
+ }
+ int sz = now_heads_.size () <? stopped_heads_.size ();
+
+ // hmm. Should do something more sensible.
+ // because, we assume no more noteheads come along after the 1st pass.
+ if (sz > tie_p_arr_.size ())
+ {
+ now_heads_.sort (CHead_melodic_tuple::pitch_compare);
+ stopped_heads_.sort(CHead_melodic_tuple::pitch_compare);
+
+ for (int i=0; i < sz; i++)
+ {
+ Tie * p = new Tie;
+ p->set_head (LEFT, stopped_heads_[i].head_l_);
+ p->set_head (RIGHT, now_heads_[i].head_l_);
+ tie_p_arr_.push (p);
+ announce_element (Score_element_info (p, req_l_));
+ }
+ }
+ }
}
void
{
past_notes_pq_.insert (now_heads_[i]);
}
+ now_heads_.clear( );
+
+ for (int i=0; i< tie_p_arr_.size (); i++)
+ {
+ typeset_element (tie_p_arr_[i]);
+ }
+ tie_p_arr_.clear ();
}
void
Command_tie_engraver::do_post_move_processing ()
{
+ req_l_ =0;
Moment now = now_moment ();
- while (past_notes_pq_.front ().end_ < now)
+ while (past_notes_pq_.size () && past_notes_pq_.front ().end_ < now)
past_notes_pq_.delmin ();
}
}
else if (Span_dynamic_req *span_l = dynamic_cast <Span_dynamic_req *> (dreq_l))
{
- if (span_l->spantype == Span_req::STOP)
+ if (span_l->spantype_ == STOP)
{
if (!cresc_p_)
{
cresc_p_ = 0;
}
}
- else if (span_l->spantype == Span_req::START)
+ else if (span_l->spantype_ == START)
{
cresc_req_l_ = span_l;
assert (!new_cresc_p);
{
if (Extender_req* p = dynamic_cast <Extender_req *> (req_l))
{
- if (bool (extender_spanner_p_) == bool (p->spantype == Span_req::START))
+ if (bool (extender_spanner_p_) == bool (p->spantype_ == START))
return false;
Direction d = (!extender_spanner_p_) ? LEFT : RIGHT;
--- /dev/null
+/*
+ cbeam-engraver.hh -- declare Command_beam_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef CBEAM_ENGRAVER_HH
+#define CBEAM_ENGRAVER_HH
+
+#include "engraver.hh"
+#include "drul-array.hh"
+
+class Command_beam_engraver : public Engraver {
+ Drul_array<Beam_req*> reqs_drul_;
+
+ Beam *finished_beam_p_;
+ Beam *beam_p_;
+
+ Rhythmic_grouping*grouping_p_;
+ Rhythmic_grouping*finished_grouping_p_;
+
+ void typeset_beam ();
+protected:
+ virtual void do_pre_move_processing ();
+ virtual void do_post_move_processing ();
+ virtual void do_removal_processing ();
+ virtual void acknowledge_element (Score_element_info);
+ virtual bool do_try_music (Music*);
+ virtual void do_process_requests ();
+public:
+ Command_beam_engraver ();
+ VIRTUAL_COPY_CONS (Translator);
+};
+
+#endif /* CBEAM_ENGRAVER_HH */
+
REQUESTMETHODS(Bracket_req);
};
+
#endif // COMMANDREQUEST_HH
PQueue<CHead_melodic_tuple> past_notes_pq_;
Command_tie_req *req_l_;
Array<CHead_melodic_tuple> now_heads_;
+ Array<CHead_melodic_tuple> stopped_heads_;
+ Link_array<Tie> tie_p_arr_;
+
protected:
virtual void do_post_move_processing ();
virtual void do_pre_move_processing ();
virtual void acknowledge_element (Score_element_info);
virtual bool do_try_music (Music*);
virtual void do_process_requests ();
- virtual void processed_acknowledged ();
+ virtual void process_acknowledged ();
public:
VIRTUAL_COPY_CONS(Translator);
Command_tie_engraver();
CENTER=0,
SMALLER=-1,
BIGGER=1,
+ START = -1,
+ STOP = 1
};
inline Direction
class Span_req : public virtual Request {
public:
/// should the spanner start or stop, or is it unwanted?
- enum Spantype {
- NOSPAN, START, STOP
- } spantype;
+ Direction spantype_;
bool do_equal_b (Request*) const;
REQUESTMETHODS(Span_req);
*/
Beam* beam_l_;
- int beams_left_i_;
- int beams_right_i_;
+ Drul_array<int> beams_i_drul_;
/// maximum number of beams
int mult_i_;
Span_req::do_print () const
{
#ifndef NPRINT
- DOUT << spantype;
+ DOUT << spantype_;
#endif
}
{
duration_.compress (m);
}
-
-
-
-
-
void
Lyric_req::do_print () const
#endif
}
-
-
void
Rest_req::do_print () const
{
Rhythmic_req::do_print ();
}
-
-
-
-
-
void
Multi_measure_rest_req::do_print () const
{
}
-
-
-
-
void
Beam_req::do_print () const
{
}
-
-
-
Abbreviation_beam_req::Abbreviation_beam_req ()
{
type_i_ = 0;
Span_req::do_equal_b (Request*r) const
{
Span_req * s = dynamic_cast <Span_req *> (r);
- return s && spantype == s->spantype;
+ return s && spantype_ == s->spantype_;
}
Span_req::Span_req ()
{
- spantype = NOSPAN;
+ spantype_ = CENTER;
}
Script_req::Script_req (Script_req const&s)
Script_req::do_equal_b (Request*r) const
{
Script_req * s = dynamic_cast <Script_req *> (r);
-
- return s&& scriptdef_p_->equal_b (*s->scriptdef_p_);
+ return s && scriptdef_p_->equal_b (*s->scriptdef_p_);
}
Script_req::Script_req ()
Script_req::do_print ();
}
-
-
-
-
Script_req::~Script_req ()
{
delete scriptdef_p_;
tdef_p_ = tdef_p;
}
-
-
-
void
Text_req::do_print () const
{
#endif
}
-
-
-
-
void
Skip_req::do_print () const
{
#ifndef NPRINT
-
DOUT << "duration: " << duration ();
#endif
}
-
-
-
-
void
Dynamic_req::do_print () const
{
Musical_req::do_print ();
}
-
-
-
void
Absolute_dynamic_req::do_print () const
{
#endif
}
-
bool
Absolute_dynamic_req::do_equal_b (Request *r) const
{
dynamic_dir_ = CENTER;
}
-
-
-
void
Span_dynamic_req::do_print () const
{
case '>':
case '(':
case '[':
- dynamic_cast<Span_req*> (reqs[0])->spantype = Span_req::START;
+ dynamic_cast<Span_req*> (reqs[0])->spantype_ = START;
break;
case '!':
case ')':
case ']':
- dynamic_cast<Span_req*> (reqs[0])->spantype = Span_req::STOP;
+ dynamic_cast<Span_req*> (reqs[0])->spantype_ = STOP;
break;
default:
#include "repeated-music.hh"
// mmm
-Mudela_version oldest_version ("1.0.10");
-Mudela_version version ("1.0.12");
+Mudela_version oldest_version ("1.0.14");
+Mudela_version version ("1.0.14");
// needed for bison.simple's malloc() and free()
%type <scope> mudela_header mudela_header_body
%type <box> box
%type <i> open_request_parens close_request_parens
-%type <i> open_abbrev_parens
%type <i> sub_quotes sup_quotes
%type <music> simple_element request_chord command_element Simple_music Composite_music
%type <music> Alternative_music Repeated_music
| MUSIC_IDENTIFIER { $$ = $1->access_content_Music (true); }
| property_def
| translator_change
- | Simple_music '*' unsigned '/' unsigned { }
- | Simple_music '*' unsigned { }
-
+ | Simple_music '*' unsigned '/' unsigned {
+ /* urg */
+ $$ = new Compressed_music ($3, $5, $1);
+ }
+ | Simple_music '*' unsigned {
+ $$ = new Compressed_music ($3, 1, $1);
+ }
;
| COMMAND_IDENTIFIER {
$$ = $1->access_content_Request (true);
}
-/* TODO */
-/* | '~' {
+ | '~' {
$$ = new Command_tie_req;
}
| '[' {
- $$ = new Beam_req;
- $$->spantype = Span_req::START;
+ Beam_req*b= new Beam_req;
+ b->spantype_ = START;
+ $$ =b;
}
| ']' {
- $$ = new Beam_req;
- $$->spantype = Span_req::STOP;
+ Beam_req*b= new Beam_req;
+ b->spantype_ = STOP;
+ $$ = b;
}
-*/
;
if (!THIS->lexer_p_->lyric_state_b ())
THIS->parser_error (_ ("have to be in Lyric mode for lyrics"));
Extender_req * e_p = new Extender_req;
- e_p->spantype = Span_req::START;
+ e_p->spantype_ = START;
$$ = e_p;
THIS->extender_req = e_p;
};
}
| SPANDYNAMIC '{' int int '}' {
Span_dynamic_req * sp_p = new Span_dynamic_req;
- sp_p->spantype = (Span_req::Spantype)$4;
+ sp_p->spantype_ = (Direction)$4;
sp_p-> dynamic_dir_ = (Direction)$3;
$$ = sp_p;
}
close_request_parens:
- '~' {
- $$ = '~';
- }
- | '(' {
+ '(' {
$$='(';
}
- | ']' {
- $$ = ']';
- }
| E_SMALLER {
$$ = '<';
}
}
;
-open_abbrev_parens:
- '[' ':' unsigned {
- $$ = '[';
- if (!Duration::duration_type_b ($3))
- THIS->parser_error (_f ("not a duration: %d", $3));
- else if ($3 < 8)
- THIS->parser_error (_ ("can't abbreviate"));
- else
- THIS->set_abbrev_beam ($3);
- }
- ;
open_request_parens:
| ')' {
$$=')';
}
- | '[' {
- $$='[';
- }
- | open_abbrev_parens
;
if (THIS->extender_req)
{
Extender_req * e_p = new Extender_req;
- e_p->spantype = Span_req::STOP;
+ e_p->spantype_ = STOP;
THIS->pre_reqs.push (e_p);
THIS->extender_req = 0;
}
Beam_req* b = dynamic_cast <Beam_req *> (req_l);
if (b)
{
- if (b->spantype)
+ if (b->spantype_)
{
- Direction d = (Direction)(((int)(b->spantype - 1)) * 2 - 1);
+ Direction d = (Direction)(((int)(b->spantype_ - 1)) * 2 - 1);
beam_mom_drul_[d] = get_staff_info ().musical_l ()->when ();
}
return false;
if (!p)
return false;
- if (bool (plet_spanner_p_) == bool (p->spantype == Span_req::START))
+ if (bool (plet_spanner_p_) == bool (p->spantype_ == START))
return false;
Direction d = (!plet_spanner_p_) ? LEFT : RIGHT;
if (!stem_l)
return;
// no beam
- if (!(stem_l->beams_left_i_ || stem_l->beams_right_i_))
+ if (!(stem_l->beams_i_drul_[LEFT] || stem_l->beams_i_drul_[RIGHT]))
return;
int dir_i = rest_l_arr_[0]->dir_;
{
Slur_req* slur_req_l = new_slur_req_l_arr_[i];
// end slur: move the slur to other array
- if (slur_req_l->spantype == Span_req::STOP)
+ if (slur_req_l->spantype_ == STOP)
{
if (slur_l_stack_.empty())
requests_arr_.pop();
}
}
- else if (slur_req_l->spantype == Span_req::START)
+ else if (slur_req_l->spantype_ == START)
{
// push a new slur onto stack.
//(use temp. array to wait for all slur STOPs)
Stem::~Stem ()
{
}
+
Stem::Stem ()
{
/*
TODO: staff-size
*/
- beam_l_ = 0;
- beams_left_i_ = 0;
- beams_right_i_ = 0;
+ beams_i_drul_[LEFT] = beams_i_drul_[RIGHT] = 0;
mult_i_ = 0;
yextent_drul_[DOWN] = yextent_drul_[UP] = 0;
-LILYPOND_INCLUDES = -Istinho $(include-lib) $(depth)/lib/$(outdir) $(include-flower) $(depth)/flower/$(outdir)
+LILYPOND_INCLUDES = $(include-lib) $(depth)/lib/$(outdir) $(include-flower) $(depth)/flower/$(outdir)
# should use to create .spec ?
Begin3
Titel: LilyPond
-Versie: 1.1.14
-Inschrijf datum: 09DEC98
+Versie: 1.1.15
+Inschrijf datum: 14DEC98
Beschrijving: @FLAPTEKST@
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 770k lilypond-1.1.14.tar.gz
+ 770k lilypond-1.1.15.tar.gz
Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.14.tar.gz
+ 770k lilypond-1.1.15.tar.gz
Copi-eer voorwaarden: GPL
End
Begin3
Title: LilyPond
-Version: 1.1.14
-Entered-date: 09DEC98
+Version: 1.1.15
+Entered-date: 14DEC98
Description:
LilyPond is the GNU Project music typesetter. This program can print
beautiful sheet music from a music definition file. It can also play
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 770k lilypond-1.1.14.tar.gz
+ 770k lilypond-1.1.15.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.14.tar.gz
+ 770k lilypond-1.1.15.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.1.14
+Version: 1.1.15
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.14.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.15.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
"clef" "cm" "consists" "contains" "duration" "absdynamic"
"in" "translator" "type" "lyric" "key" "maininput" "notes"
"musical_pitch" "time" "midi" "mm" "header"
- "notenames" "octave" "output" "partial" "paper" "plet"
+ "notenames" "octave" "output" "partial" "paper" "plet" "name"
"property" "pt" "shape" "relative" "include" "score"
"scm" "scmfile"
"script" "skip" "table" "times" "spandynamic" "symboltables"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "violoncello.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "clarinetti.ly"
}
-\version "1.0.10";
+\version "1.0.14";
\include "clarinetto-1.ly"
\include "clarinetto-2.ly"
}
-\version "1.0.10";
+\version "1.0.14";
clarinetto1 = \notes \relative c {
R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
clarinetto2 = \notes \relative c {
R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "contrabasso.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
contrabasso = \notes \relative c {
% \translator Staff=violoncello
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "corni.ly"
}
-\version "1.0.10";
+\version "1.0.14";
\include "corno-1.ly"
\include "corno-2.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
corno1 = \notes \relative c {
R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
corno2 = \notes \relative c {
R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "fagotti.ly"
}
-\version "1.0.10";
+\version "1.0.14";
\include "fagotto-1.ly"
\include "fagotto-2.ly"
}
-\version "1.0.10";
+\version "1.0.14";
fagotto1 = \notes \relative c {
R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
fagotto2 = \notes \relative c {
R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "flauti.ly"
}
-\version "1.0.10";
+\version "1.0.14";
\include "flauto-1.ly"
\include "flauto-2.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
flauto1 = \notes \relative c {
R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
flauto2 = \notes \relative c {
R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
global = \notes {
\time 4/4;
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
oboe1 = \notes \relative c'' {
R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
oboe2 = \notes \relative c{
R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "oboi.ly"
}
-\version "1.0.10";
+\version "1.0.14";
\include "oboe-1.ly"
\include "oboe-2.ly"
}
-\version "1.0.10";
+\version "1.0.14";
timpani = \notes \relative c {
R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "trombe.ly"
}
-\version "1.0.10";
+\version "1.0.14";
\include "trombo-1.ly"
\include "trombo-2.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
trombo1 = \notes \relative c {
R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
trombo2 = \notes \relative c {
R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
viola1 = \notes \relative c {
\type Voice=one
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
viola2 = \notes \relative c {
% starts on (actualy, most part is on) same staff as viola1
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "viola-1.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "violino-1.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
violino1 = \notes \relative c {
c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
g2.\p( as4 | g f d ) bes | bes'2.( c4 |
%55
bes2 )as |
- g4 <bes2-"cresc." bes'> <bes4 bes'~> |
- <bes-"cresc." bes'> <bes2 bes'> <bes4 bes'~> |
- <bes bes'> <bes2 bes'> <bes4 bes'~> |
+ g4 <bes2-"cresc." bes'> <bes4 bes' > ~ |
+ <bes-"cresc." bes'> <bes2 bes'> <bes4 bes' > ~ |
+ <bes bes'> <bes2 bes'> <bes4 bes' > ~ |
<bes bes'> <bes2 bes'> <bes4 bes'> |
%60
bes'2:16 bes: | bes: bes: |
[c8 c] c4. c8 c4 ~ |
[c8 c] c4. c8 c4 ~ |
[c8 c] c4. c8 c4 ~ |
- c4.\ff <c8 c,> <c2\sf c,~> |
+ c4.\ff <c8 c,> <c2\sf c, > ~ |
%265
- <c4. c,> <c8 c,> <c2\sf c,~> |
- <c4. c,> <c8 c,> <c2\sf c,~> |
- <c4. c,> <c8 c,> <c2\sf c,~> |
+ <c4. c,> <c8 c,> <c2\sf c, > ~ |
+ <c4. c,> <c8 c,> <c2\sf c, > ~ |
+ <c4. c,> <c8 c,> <c2\sf c, > ~ |
<c4. c,> <c8 c,> <c2\sf c,> |
d4. d8 d2\sf |
%270
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "violino-2.ly"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
violino2 = \notes \relative c {
c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
bes4\f r8 es d4 r8 a |
g4 r8 c bes4 r8 f |
es4 r8 a g4 r8 cis |
- <[d16 s> <bes g'> <bes g'> <bes g']> <a4:16 fis':> <a2:16 fis':> |
+ <[d16 s> <bes g'> <bes g'> <bes g'>] <a4:16 fis':> <a2:16 fis':> |
<bes: g':> <bes: g':> |
<bes: g':> <bes: g':> |
<bes: g':> <bes: g':> |
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "global.ly"
\include "violoncello.ly"
}
-\version "1.0.10";
+\version "1.0.14";
violoncello = \notes \relative c {
c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
under the Gnu Public Licence.
%}
-\version "1.0.10";
+\version "1.0.14";
$voice_one = \notes \relative c' {
a'2 bes4. [c16 bes] | a4 d ~ d c ~ | c b ~ [b8 a] a4 ~|
}
-\version "1.0.10";
+\version "1.0.14";
\include "paper16.ly";
\include "paper13.ly";
pianoRH=\notes \relative c'' {
\clef "G";
%1
- <[b,8-.(\pp d-. g-.> <b8-. d-. g-.> <b-. d-. g-.> <)b-. d-. g-.]>
- <[b8-. d-. g-.(> <b8-. d-. g-.> <b-. d-. g-.> <)b-. d-. g-.]>
+ <[b,8-.(\pp d-. g-.> <b8-. d-. g-.> <b-. d-. g-.> <)b-. d-. g-.>]
+ <[b8-. d-. g-.(> <b8-. d-. g-.> <b-. d-. g-.> <)b-. d-. g-.>]
|
%2
- <[c d g_"{\it simile}" \< > <c d g> <c d fis> <c d fis]>
- <[c d fis> < \! c d fis > <c d fis> <c d fis]>
+ <[c d g_"{\it simile}" \< > <c d g> <c d fis> <c d fis>]
+ <[c d fis> < \! c d fis > <c d fis> <c d fis>]
%3
|
- <[d f gis \> > <d f gis> <d f gis> < \! d f gis ]>
- <[c e a> <c e a> <e a c> <e a c]>
+ <[d f gis \> > <d f gis> <d f gis> < \! d f gis >]
+ <[c e a> <c e a> <e a c> <e a c>]
|
%4
- <[d a' b> <d a' b> <d g! b> <d g b]>
- <[d g a> <d g a> <d fis a> <d fis a]> |
+ <[d a' b> <d a' b> <d g! b> <d g b>]
+ <[d g a> <d g a> <d fis a> <d fis a>] |
\bar "|:";
%5
- <[b_. d g( \pp > <b_. d g> <b_. d g> <)b_. d g]>
- <[b_. d g(> <b_. d g> <b_. d g> <)b_. d g]>
+ <[b_. d g( \pp > <b_. d g> <b_. d g> <)b_. d g>]
+ <[b_. d g(> <b_. d g> <b_. d g> <)b_. d g>]
|
%6
- <[c d g> <c d g> <c d fis> <c d fis]>
- <[c d fis> <c d fis> < a c dis fis> <a c dis fis]>
+ <[c d g> <c d g> <c d fis> <c d fis>]
+ <[c d fis> <c d fis> < a c dis fis> <a c dis fis>]
|
%7
- <[g c e g> <g c e g> <g c e g> <g c e g ]>
- <[g c e g> <g c e g> <g c e> <g c e]>
+ <[g c e g> <g c e g> <g c e g> <g c e g >]
+ <[g c e g> <g c e g> <g c e> <g c e>]
|
%8
- <[g c e> <g c e> <g b d> <g b d]>
- <[g b d> <g b d> <g b d> <g b d]>
+ <[g c e> <g c e> <g b d> <g b d>]
+ <[g b d> <g b d> <g b d> <g b d>]
|
%9
- <[fis a d> <fis a d> <fis a d> <fis a d]>
- <[g b d> <g b d> <g b d> <g b d]>
+ <[fis a d> <fis a d> <fis a d> <fis a d>]
+ <[g b d> <g b d> <g b d> <g b d>]
|
%10
- <[ g a c d \> > <g a c d> <fis a c d> <\! fis a c d ]>
- <[g b d> <g b d><g b d><g b d]>
+ [< g a c d \> > <g a c d> <fis a c d> <\! fis a c d >]
+ <[g b d> <g b d><g b d><g b d>]
|
%11
- <[g a c d> <g a c d> <fis a c d> <fis a c d]>
- <[g b d> <g b d]> <[b d g> <b d g]>
+ <[g a c d> <g a c d> <fis a c d> <fis a c d>]
+ <[g b d> <g b d>] <[b d g> <b d g>]
|
%12
- <[ d fis b> <d fis b><d fis b><d fis b]>
- <[ d fis b> <d fis b><d fis b><d fis b]>
+ [<d fis b> <d fis b><d fis b><d fis b>]
+ [<d fis b> <d fis b><d fis b><d fis b>]
|
%13
- <[e fis b> <e fis b> < e fis ais> <e fis ais]>
- <[e fis ais> <e fis ais> <d fis b> <d fis b]>
+ <[e fis b> <e fis b> < e fis ais> <e fis ais>]
+ <[e fis ais> <e fis ais> <d fis b> <d fis b>]
|
%14
- <[cis g' a!> <cis g' a> <cis a' g> <cis a' g]>
- <[cis g' a> <cis g' a> < e g a> <e g a]>
+ <[cis g' a!> <cis g' a> <cis a' g> <cis a' g>]
+ <[cis g' a> <cis g' a> < e g a> <e g a>]
|
%15
- <[e g a> <e g a> <d fis a> <d fis a]>
- <[d fis a> <d fis a> <d fis a> <d fis a]>
+ <[e g a> <e g a> <d fis a> <d fis a>]
+ <[d fis a> <d fis a> <d fis a> <d fis a>]
|
%16
- <[d fis a> <d fis a> <d fis a> <d fis a]>
- <[d fis a \< > <d fis a> <d fis a> < \! d fis a ]>
+ <[d fis a> <d fis a> <d fis a> <d fis a>]
+ <[d fis a \< > <d fis a> <d fis a> < \! d fis a >]
|
%17
- <[d a' c \> > <d a' c><d a' c>< \! d a' c ]>
- <[d a' c> <d a' c><d a' c><d a' c]>
+ <[d a' c \> > <d a' c><d a' c>< \! d a' c >]
+ <[d a' c> <d a' c><d a' c><d a' c>]
|
%18
- <[d g a c \> > <d g a c> <d g a c> <d g a c]>
- <[d fis a c> <\! d fis a c \pp > <d fis a c> <d fis a c]>
+ <[d g a c \> > <d g a c> <d g a c> <d g a c>]
+ <[d fis a c> <\! d fis a c \pp > <d fis a c> <d fis a c>]
|
%19
- <[d g b> <d g b> <d g b> <d g b]>
- <[d g b> <d g b> <d g b> <s g b]>
+ <[d g b> <d g b> <d g b> <d g b>]
+ <[d g b> <d g b> <d g b> <s g b>]
|
%20
- <[e g c> <e g c> <e gis c> <e gis c]>
- <[e a c> <e a c> <e b' c> < e b' c]>
+ <[e g c> <e g c> <e gis c> <e gis c>]
+ <[e a c> <e a c> <e b' c> < e b' c>]
|
%21
- <[e c'> <e c'> <e a c> <e a c]>
- <[e a c> <e a c> <e a c> <e a c]>
+ <[e c'> <e c'> <e a c> <e a c>]
+ <[e a c> <e a c> <e a c> <e a c>]
|
%22
- <[d a' c> <d a' c> <d a'> <d a']>
- <[d a' d> <d a' d> <d a' c> <d a' c]>
+ <[d a' c> <d a' c> <d a'> <d a'>]
+ <[d a' d> <d a' d> <d a' c> <d a' c>]
|
%23
- <[b d b'> <b d b'> <b d a'> <b d a']>
- <[b d g \< > <b d g> <b d fis> < \! b d fis ]>
+ <[b d b'> <b d b'> <b d a'> <b d a'>]
+ <[b d g \< > <b d g> <b d fis> < \! b d fis >]
|
%24
- <[b d e \> > <b d e> <gis b e> < \! gis b e ]>
- <[a c e> <a c e> <e' a> <e a]>
+ <[b d e \> > <b d e> <gis b e> < \! gis b e >]
+ <[a c e> <a c e> <e' a> <e a>]
|
%25
- <[d a' c> <d a' c> <d a' c> <d a' c]>
- <[d a'> <d a' \> > <c d fis> < \! c d fis \p ]>
+ <[d a' c> <d a' c> <d a' c> <d a' c>]
+ <[d a'> <d a' \> > <c d fis> < \! c d fis \p >]
|
%26
- <[b d g> <b d g> <b d g> <b d g]>
- <[b d g> <b d g> <b d g> <b d g]>
+ <[b d g> <b d g> <b d g> <b d g>]
+ <[b d g> <b d g> <b d g> <b d g>]
|
%27
- <[c d g > <c d g > <c d fis > <c d fis ]>
- <[c d fis \< > <c d fis >< \! c d fis ><c d fis ]>
+ <[c d g > <c d g > <c d fis > <c d fis >]
+ <[c d fis \< > <c d fis >< \! c d fis ><c d fis >]
|
%28
- <[d f gis \> > <d f gis> < \! d f gis > <d f gis]>
- <[c e a> <c e a> <e a c> <e a c]>
+ <[d f gis \> > <d f gis> < \! d f gis > <d f gis>]
+ <[c e a> <c e a> <e a c> <e a c>]
%29
- <[d a' b> <d a' b> <d g! b> <d g b]>
- <[d g a> <d g a> < d fis! a> <d fis a]>
+ <[d a' b> <d a' b> <d g! b> <d g b>]
+ <[d g a> <d g a> < d fis! a> <d fis a>]
\bar ":|";
%30
<b2 d2 g2> r2
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
\include "standchen.ly"
description = "A schubert song in 20 pt";
}
-\version "1.0.10";
+\version "1.0.14";
% fool make-website
% \include "standchen.ly";
Note: Original key F.
%}
-\version "1.0.10";
+\version "1.0.14";
$vocal_verse1 = \notes\relative c''{
% ugh: treble/bass
\clef violin;
% ugh: id like to type this!
%r8\pp [<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.>] |
- r8^"\bf m\\\"assig"\pp <[g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.]> |
- r8 <[as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.]> |
- r8 <[as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.]> |
- r8 <[g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.]> |
+ r8^"\bf m\\\"assig"\pp <[g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.>] |
+ r8 <[as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.>] |
+ r8 <[as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.>] |
+ r8 <[g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.>] |
\break
}
$treble_verse1 = \notes\relative c{
% \clef violin;
%5
- r8 <[g' c> <c es> <g c> <c es> <g c]> |
- r8 <[f c'> <c' d> <f, c'> <c' d> <f, c']> |
- r8 <[f g b> <g b d> <f g b> <g b d> <f g b]> |
- r8 <[es g c> <g c es> <es g c> <g c es> <es g c]> |
+ r8 <[g' c> <c es> <g c> <c es> <g c>] |
+ r8 <[f c'> <c' d> <f, c'> <c' d> <f, c'>] |
+ r8 <[f g b> <g b d> <f g b> <g b d> <f g b>] |
+ r8 <[es g c> <g c es> <es g c> <g c es> <es g c>] |
<g''4.( b,> <)f8 d>
\times 2/3 { < [ f( d> <es c> <)d b] > } |
%10
<c2. es> |
- r8 <[g, c> <c es> <g c> <c es> <g c]> |
- r8 <[f c'> <c' d> <f, c'> <c' d> <f, c']> |
- r8 <[f as bes> <as bes d> <f g bes> <as bes d> <f g bes]> |
- r8 <[es g bes> <g bes es> <es g bes> <g bes es]>
+ r8 <[g, c> <c es> <g c> <c es> <g c>] |
+ r8 <[f c'> <c' d> <f, c'> <c' d> <f, c'>] |
+ r8 <[f as bes> <as bes d> <f g bes> <as bes d> <f g bes>] |
+ r8 <[es g bes> <g bes es> <es g bes> <g bes es>]
<{ es'~ | d4. ~ f8}{ c'~ | bes4. ~ as8 } >
\times 2/3 { < [f( as> <es g> <)d f] > } |
%16
<es2. g> |
- r8 <[f, g> <g b> <f g> <g b> <f g]> |
- r8 <[es g> <g c> <es g> <g c> <es g]> |
- r8\pp <[es as c> <as c es> <es as c> <as c es> <es as c]> |
+ r8 <[f, g> <g b> <f g> <g b> <f g>] |
+ r8 <[es g> <g c> <es g> <g c> <es g>] |
+ r8\pp <[es as c> <as c es> <es as c> <as c es> <es as c>] |
%20
- r8 <[es g bes> <g bes es> <es g bes> <g bes es> <es g bes]> |
+ r8 <[es g bes> <g bes es> <es g bes> <g bes es> <es g bes>] |
% \times 2/3 { [ as\grace( bes )
\times 2/3 { [ as'8( g as] } c4.-> ) as8 |
g2. |
- r8 <[f, g> <g b> <f g> <g b> <f g]> |
- r8 <[e g> <g c> <e g> <g c> <e g]> |
- r8 <[f a c> <a c f> <f a c> <a c f> <f a c]> |
- r8 <[e g c> <g c e> <e g c> <g c e> <e g c]> |
+ r8 <[f, g> <g b> <f g> <g b> <f g>] |
+ r8 <[e g> <g c> <e g> <g c> <e g>] |
+ r8 <[f a c> <a c f> <f a c> <a c f> <f a c>] |
+ r8 <[e g c> <g c e> <e g c> <g c e> <e g c>] |
\times 2/3 <
{ [ f'8\f( e f] }
{ f' e f } >
$treble_eentje = \notes \relative c'{
<e2 e'> <e4 g>|
- <f2\mf as!(> <[as8.->( c> <)f16 )as]> |
- <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
- <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+ <f2\mf as!(> <[as8.->( c> <)f16 )as>] |
+ <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.>] |
+ <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.>] |
<e2 g> <e4\pp g> |
- <f2 a(> <[a8. c> <f16 )a]> |
- <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
- <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+ <f2 a(> <[a8. c> <f16 )a>] |
+ <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.>] |
+ <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.>] |
%60
<e2. g> |
}
<e2. e'> |
%61
R2. |
- <[g,8.\< g'> <g16 g'> <b8. b'> <\! b16\> b'16> <d8. d'> <d16 d']> |
+ <[g,8.\< g'> <g16 g'> <b8. b'> <\! b16\> b'16> <d8. d'> <d16 d'>] |
< { c4( )b } { c'4( )b } > \!r |
% ugh
% <g4. g> <b8 b> <[d8.-> d->> c16] |
- <g4. g'> <b8 b'> <[ d'8.-> d,-> > c16] |
+ <g4. g'> <b8 b'> [<d'8.-> d,-> > c16] |
% ugh ugh: connecting chords
%65
< { d,2.\f a'2} { e2. ~ e2 } { b'2. c,2 }> r4 |
}
>
% 4 bars copied from end verse1
- r8 <[f, a c> <a c f> <f a c> <a c f> <f a c]> |
+ r8 <[f, a c> <a c f> <f a c> <a c f> <f a c>] |
%70
- r8 <[e g c> <g c e> <e g c> <g c e> <e g c]> |
+ r8 <[e g c> <g c e> <e g c> <g c e> <e g c>] |
\times 2/3 < { [ f'8\f( e f] }
{ f' e f }>
< { a4.-> )f8 } { a4. f8 } > |
<c2 c'> <e4\pp g> |
% four copied from begin eentje
- <f2 as!(> <[as8.-> c> <f16 )as]> |
- <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
- <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+ <f2 as!(> <[as8.-> c> <f16 )as>] |
+ <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.>] |
+ <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.>] |
%80
\property Voice . textstyle = "italic"
<e2._"dim." g> |
<as2 as'> r4 |
<g2 g'> r4 |
<c2 c'> r4 |
- <g8 g'> <[g'' d'> <d' f> <g, d'> <d' f> <g, d']> |
+ <g8 g'> <[g'' d'> <d' f> <g, d'> <d' f> <g, d'>] |
%10
- <c,,8 c'> <[g'' c> <c es> <g c> <c es> <g c]> |
+ <c,,8 c'> <[g'' c> <c es> <g c> <c es> <g c>] |
<c,,2 c'> r4 |
<as2 as'> r4 |
<bes2 bes'> r4 |
<es,2 es'> r4 |
%15
- bes'8 <[bes' f'> <f' as> <bes, f'> <f' as> <bes, f']> |
- es,8 <[bes' es> <es g> <bes es> <es g> <bes es]> |
+ bes'8 <[bes' f'> <f' as> <bes, f'> <f' as> <bes, f'>] |
+ es,8 <[bes' es> <es g> <bes es> <es g> <bes es>] |
<g,2 g'> r4 |
<c2 c'> r4 |
<as2 as'> r4 |
<es2 es'> r4 |
- <bes'8 bes'> <[f'' bes> <bes d> <f bes> <bes d> <f bes]> |
- <es,,8 es'> <[es'' g bes> <g bes es> <es g bes> <g bes es> <es g bes]> |
+ <bes'8 bes'> <[f'' bes> <bes d> <f bes> <bes d> <f bes>] |
+ <es,,8 es'> <[es'' g bes> <g bes es> <es g bes> <g bes es> <es g bes>] |
<g,,2 g'> r4 |
<c2 c'> r4 |
<f,2 f'> r4 |
<c'2 c'> r4 |
- <g8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
- c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+ <g8 g'> <[d'' g> <g b> <d g> <g b> <d g>] |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g>] |
}
$bass_eentje = \notes\relative c{
\property Voice.dynamicdir=1
- <c,8 c'> <[c' f as!> <f as c> <c f as> <f as c> <c f as]> |
- c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
- <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
- c,8 <[e' g> <g c> <e g> <g c> <e g]> |
- <c,8 c'> <[c' f a> <f a c> <c f a> <f a c> <c f a]> |
- c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
- <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
- c,8 <[e' g> <g c> <e g> <g c> <e g]> |
+ <c,8 c'> <[c' f as!> <f as c> <c f as> <f as c> <c f as>] |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g>] |
+ <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g>] |
+ c,8 <[e' g> <g c> <e g> <g c> <e g>] |
+ <c,8 c'> <[c' f a> <f a c> <c f a> <f a c> <c f a>] |
+ c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g>] |
+ <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g>] |
+ c,8 <[e' g> <g c> <e g> <g c> <e g>] |
}
$bass_through = \notes\relative c{
\property Voice.dynamicdir=1
%61
- <g,8^"cresc." g'> <[g' b d> <b d f> <g b d> <as!-> b-> d->> <b d f]> |
- <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f]> |
+ <g,8^"cresc." g'> <[g' b d> <b d f> <g b d> <as!-> b-> d->> <b d f>] |
+ <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f>] |
% copied
- <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f]> |
- <g,8 g'> <[g' d' e> <d' f> <g, d'> <gis-> b-> d->> <b d f]> |
+ <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f>] |
+ <g,8 g'> <[g' d' e> <d' f> <g, d'> <gis-> b-> d->> <b d f>] |
%65
- <gis,8 gis'> <[d''\> e> <e b'> <d e> <e b'> <d\! e]> |
- <a,8 a'> <[c' e> <e a> <c e> <e a> <c e]> |
- <a,8 a'> <[a' d f> <d f a> <a d f> <d f a> <a d f]> |
- <a,8 a'> <[a' c e> <c e a> <a c e> <c e a> <a c e]> |
+ <gis,8 gis'> <[d''\> e> <e b'> <d e> <e b'> <d\! e>] |
+ <a,8 a'> <[c' e> <e a> <c e> <e a> <c e>] |
+ <a,8 a'> <[a' d f> <d f a> <a d f> <d f a> <a d f>] |
+ <a,8 a'> <[a' c e> <c e a> <a c e> <c e a> <a c e>] |
% 4 bars copied from end verse1
<f,2\p f'> r4 |
%70
<c'2 c'> r4 |
- <g8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
- c,8\> <[c' e g> < \! e g c> <c e g> <e g c> <c e g]> |
+ <g8 g'> <[d'' g> <g b> <d g> <g b> <d g>] |
+ c,8\> <[c' e g> < \! e g c> <c e g> <e g c> <c e g>] |
- <c,8 c'> <[c' es! g> <es g c> <c es g> <es g c> <c es g]> |
- <f,,8 f'> <[d'' f> <f as!> <d f> <f as> <d f]> |
+ <c,8 c'> <[c' es! g> <es g c> <c es g> <es g c> <c es g>] |
+ <f,,8 f'> <[d'' f> <f as!> <d f> <f as> <d f>] |
%75
- <g,,8 g'> <[d'' f> <f g> <d f> <f g> <d f]> |
- c,8 <[c' e> <e g> <c e> <e g> <c e]> |
- c,8 <[c' f> <f as> <c f> <f as> <c f]> |
- c,8 <[c' e> <e g> <c e> <e g> <c e]> |
- <g,8 g'> <[g' d'> <d' f> <g, d'> <d' f> <g, d']> |
+ <g,,8 g'> <[d'' f> <f g> <d f> <f g> <d f>] |
+ c,8 <[c' e> <e g> <c e> <e g> <c e>] |
+ c,8 <[c' f> <f as> <c f> <f as> <c f>] |
+ c,8 <[c' e> <e g> <c e> <e g> <c e>] |
+ <g,8 g'> <[g' d'> <d' f> <g, d'> <d' f> <g, d'>] |
%80
- c,8 <[c' e> <e g> <c e> <e g> <c e]> |
- c,8 <[c' g> <e c> <c g> <e c> <c g]> |
+ c,8 <[c' e> <e g> <c e> <e g> <c e>] |
+ c,8 <[c' g> <e c> <c g> <e c> <c g>] |
<c,2._\fermata g' c> |
}
title = "Diademata";
metre = "6 6. 8 6. D";
}
-\version "1.0.10";
+\version "1.0.14";
sop=\notes \transpose c''{
ees2 | ees4 ees4 g2 g2 | c'1. \bar "||";
metre = "10 10 . 11 11";
}
-\version "1.0.10";
+\version "1.0.14";
sop = \notes \transpose c''{
f4 | d' bes c' | f2 \bar "||";
metre = "10 11. 11 11. and refrain";
}
-\version "1.0.10";
+\version "1.0.14";
sop=\notes \relative c'' {
b2 gis4. a8 |b2 e,2 |
metre = "8 7 8 7 D";
}
-\version "1.0.10";
+\version "1.0.14";
sop=\notes \relative c'' {
b4 b c d | d c b a | g g a b | b4. a8 a2 \bar "||";
enteredby = "Peter Chubb";
}
-\version "1.0.10";
+\version "1.0.14";
sop=\notes \transpose c'' {
\repeat 2 {
}
-\version "1.0.7";
+\version "1.0.14";
global=\notes {
\time 6/4;
piece = "Allemande";
}
-\version "1.0.10";
+\version "1.0.14";
global = \notes{
\time 4/4;
\type Staff <
{ \stemup [bes8 d'][bes a16 g] g4~ g16 }
{ \stemup s2 s16 d8.~ d16 }
- { \stemdown r8 <g d> <[g d><fis c]> r16 [d16 b8~] b16 }
+ { \stemdown r8 <g d> <[g d><fis c>] r16 [d16 b8~] b16 }
>
[es'16 d c] |
%17
fis4.~ [fis16 e32 fis][g16 d f es][d c b a] |
\type Staff <
{ \stemup [g8 g'][es d16 c] c4. }
- { \stemdown r8 <g c es> <[g c> <f b]> <es4. g> }
+ { \stemdown r8 <g c es> <[g c> <f b>] <es4. g> }
> s8
}
%%
%% Noe liknende skjer også i mellom andre og tredje stemme i takt 28
-\version "1.0.10";
+\version "1.0.14";
global = \notes{
\time 2/4;
c4 r |
%93
r8 g f'4~ |
- [f8 d g <f as,]> |
+ [f8 d g <f as,>] |
<es4 g,> <d f,> |
<c2 g es>
}
copyright = "Public Domain";
}
-\version "1.0.10";
+\version "1.0.14";
global = \notes {
\time 4/4;
%4
f4 \stemboth r16 [f g. as32] \stemup d,4 r16 [d g. es32] |
c4 ~ [c32 es des c des16. f32] [b,16. c32 b16. c32] d4 ~ |
- d2 ~ [d16. g,32 a16. b32] [c16. <b32 g> <c16. a> <d32 b]> |
- <[es8. c> <es16 c]>
+ d2 ~ [d16. g,32 a16. b32] [c16. <b32 g> <c16. a> <d32 b>] |
+ <[es8. c> <es16 c>]
\type Staff <
{ \stemup fis4 }
{ \stemup \property Voice.hshift = 1 [es16 d32 c d16. a32] }
<c4 g es> r <b as f d> r |
r <b f d> <c g es> r |
<c g e> r r <c g> |
- <c as f> r r16 <[as d,><as. d,><g32 d]> <g4 d> |
+ <c as f> r r16 <[as d,><as. d,><g32 d>] <g4 d> |
%5
- r16 <[g c,><g. c,><f32 c]>
+ r16 <[g c,><g. c,><f32 c>]
\type Staff <
{\stemup f4~ f}
{\stemup c4 d}
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
one = \notes\relative c {
\property Voice . textstyle = "italic"
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
one = \notes\relative c{
\property Voice . textstyle = "italic"
r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
copyright = "public domain";
}
-\version "1.0.7";
+\version "1.0.14";
one = \notes \transpose c`` {
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
one = \notes\relative c{
\property Voice . textstyle = "italic"
e4 d ~ [d16 d-1 cis-2 b-1] cis4-2 ~ |
[cis8 a-3] d4.-1 d4^> cis8-2 |
\translator Staff=treble \stemdown
- d4 \stemboth r16 [b-1\< d-2 b~] <g'4-5 e-3 b>
+ d4 \stemboth r16 [b-1\< d-2 b~] <g'4-5 e-3 b>
r16 [cis,-1 e-2 \!cis~] |
<a'4-5 fis-3 cis> r16 [d,-1 fis-2 d~] <b'4-5 g-3 d>
r16 [fis-1 a fis~] |
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
one = \notes\relative c{
enteredby = "jcn";
copyright = "public domain";
}
-\version "1.0.10";
+\version "1.0.14";
one = \notes\relative c{
\stemup
b2-1 a-1 |
g a4. [gis16 a] |
- gis2 <[g8 cis,> <f-3 d-1]> e4-2 |
+ gis2 <[g8 cis,> <f-3 d-1>] e4-2 |
d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 |
%10
\stemdown
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "allemande-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "allemande-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "courante-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "courante-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "gigue-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "gigue-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "menuetto-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "menuetto-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "prelude-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "prelude-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "sarabande-urtext.ly";
dotted slurs
%}
-\version "1.0.10";
+\version "1.0.14";
\include "sarabande-urtext.ly";
%{
%}
-\version "1.0.10";
+\version "1.0.14";
global =
Tested Features: stem direction, multivoice, forced accidentals.
%}
-\version "1.0.10";
+\version "1.0.14";
\include "nederlands.ly" % for correct parsing of note names
[b, c d b] [b c] r c |
[f16 d es c] ~ [c8 b] c4 r8 e |
%%30
- f4 r8 f [f es16 d] [es8 <f as]> |
+ f4 r8 f [f es16 d] [es8 <f as>] |
<b, d> r <b d> r <g2 c> |
}
[g f16 es] [f8 d] [as' g] r a |
[b c] [f,16 es d c] c8 [c'16 b] [c8 g] |
%%30
- [as c16 b] [c8 <d b ! as !]> [g,8 c16 b] [c8 d] |
+ [as c16 b] [c8 <d b ! as !>] [g,8 c16 b] [c8 d] |
[f,16 g] as4 [g16 f] e2 |
}
copyright = "Public Domain";
}
-\version "1.0.10";
+\version "1.0.14";
global =
\notes {
Ugh.. Wish we had grace notes.... It adds another dimension to this
piece of music. %}
-\version "1.0.10";
+\version "1.0.14";
cad = \notes \relative c' {
}
-\version "1.0.10";
+\version "1.0.14";
allegro =
\notes
definition below. --MB
%}
-\version "1.0.10";
+\version "1.0.14";
global = \notes {
\property StaffGroup.timeSignatureStyle = "old"
copyright = "public domain";
latexheaders= "headers";
}
-\version "1.0.10";
+\version "1.0.14";
%{
Silly latex file dropped; use ly2dvi
program_name = 'convert-mudela'
version = '0.4'
-
import os
import sys
import __main__
import getopt
from string import *
import re
-
import time
+
mudela_version_re_str = '\\\\version *\"(.*)\"'
mudela_version_re = re.compile(mudela_version_re_str)
i.close ()
return s
-
def str_to_tuple (s):
return tuple (map (atoi, split (s,'.')))
((0,1,20), conv, 'deprecated \\textstyle, new \key syntax'))
-if 1: # need new a namespace
+if 1:
def conv (lines):
newlines = []
for x in lines:
((0,1,21), conv, '\\musical_pitch -> \\musicalpitch, '+
'\\meter -> \\time'))
-if 1: # need new a namespace
+if 1:
def conv (lines):
return lines
((1,0,0), conv, '0.1.21 -> 1.0.0 '))
-if 1: # need new a namespace
+if 1:
def conv (lines):
newlines = []
for x in lines:
conversions.append ((1,0,10), conv, '[2/3 ]1/1 -> \\times 2/3 ')
+if 1:
+ def conv(lines):
+ return lines
+ conversions.append ((1,0,12), conv, 'Chord syntax stuff')
+
+
+if 1:
+ def conv(lines):
+ newlines =[]
+ for x in lines:
+ x = re.sub ('<([^>~]+)~([^>]*)>','<\\1 \\2> ~', x)
+ newlines.append (x)
+ return newlines
+
+ conversions.append ((1,0,13), conv, '<a ~ b> c -> <a b> ~ c')
+
+if 1:
+ def conv(lines):
+ newlines =[]
+ for x in lines:
+ x = re.sub ('<\\[ ','[<', x)
+ x = re.sub ('\\]>','>]', x)
+ newlines.append (x)
+ return newlines
+
+ conversions.append ((1,0,14), conv, '<[a b> <a b]>c -> [<a b> <a b>]')
+
+
############################
# - mudela-book will scan the mudela code to find out if it has to add
# paper-definition and \score{\notes{...}}
# - possible to define commands that look like this: \mudela{ c d e }
+# 0.5.1:
+# - removed init/mudela-book-defs.py, \mudela is defined inside mudela-book
+# - fragment and nonfragment options will override autodetection of type of
+# in mudela-block (voice contents or complete code)
import os
import string
outdir = 'out'
initfile = ''
-program_version = '0.5'
+program_version = '0.5.1'
out_files = []
if outdir[-1:] != '/':
outdir = outdir + '/'
- std_init_filename = ''
- for p in string.split(os.environ['LILYINCLUDE'], ':'):
- try:
- std_init_filename = p+os.sep+'mudela-book-defs.py'
- break
- except:
- continue
- defined_mudela_cmd_re = {}
- try:
- f = open(std_init_filename)
- s = f.read()
- f.close()
- defined_mudela_cmd = eval(s) # UGH
- except IOError, w:
- sys.stderr.write("%s (`%s')\n" % (w[1], std_init_filename))
-# sys.exit(1)
-
-
+ defined_mudela_cmd = {'mudela': r"""
+\begin{mudela}[eps \fontoptions]
+ \maininput
+\end{mudela}
+"""}
if initfile != '':
f = open(initfile)
s = f.read()
for i in d.keys():
defined_mudela_cmd[i] = d[i]
del d
-
c = defined_mudela_cmd.keys()[0]
for x in defined_mudela_cmd.keys()[1:]:
c = c + '|'+x