--- /dev/null
+nsect(NAME)
+
+Octaves -- how to do pitches
+
+nsect(DESCRIPTION)
+
+The LilyPond input language, Mudela (help, silly name), should be easy
+to read and write. In my experience Mudela is already quite convenient
+for entering music. Every time I've entered a substantial piece of music,
+however, I found that I made quite a few mistakes. The MIDI output helps
+a lot with locating and correcting the errors. There's one type of error
+that seems to be frequent, stubborn and hard to catch, and that's the
+octavation error. The relative octave feature is an attempt to make
+Mudela a bit easier to write. In addition, this feature makes it harder
+to make octavation mistakes, yet if you made one, its a lot simpler to find
+and correct.
+
+Here's how it works.
+
+itemize(
+it()forget the old "\octave c';" command
+it()forget the old octave boundaries with octaves c .. c'
+)
+
+You can enter a piece of music in relative mode, by typing
+
+verb(
+ \melodic \relative c { ... }
+)
+
+From then on, the pitch of a note will be the closest to the last one,
+assuming that large intervals are a lot more rare than small ones.
+Thus, you can enter a scale without using octavation quotes:
+
+verb(
+ c d e f g a b c
+)
+
+the last c being an octave higher than the first. If you have to
+enter an interval that is greater than a fourth, you must specify
+whether the pitch goes up, using post-quotes:
+
+verb(
+ c c' % octave up
+ c g' % fourth up
+)
+
+or down, using pre-quotes:
+
+verb(
+ c c, % octave down
+ c f, % fourth down
+)
+
+nsect(CONVERTING)
+
+To convert a piece of music from the old absolute-octave notation to
+relative octaves, lilypond provides the bf(-Q, --find-fourths) feature
+to locate all big intervals in your music (sorry, fully automated convert
+is too complex).
+
+First, edit the .ly file, add "\relative c" to all melodic chunks:
+
+verb(
+ foo = \melodic \relative c { ... }
+)
+
+and remove all "\octave " commands. See the example file
+file(input/test/find-fourths.ly).
+
+Use lily to find the fourths
+
+verb(
+ lilypond -Q find-fourths.ly 2>&1 | tee fourths
+ ...
+ find-fourths.ly:3:18: warning: Interval greater than fourth, relative: g':
+ c d c f c g
+ c b, c g, c f, c c'' c
+
+ find-fourths.ly:3:20: warning: Interval greater than fourth, relative: c,:
+ c d c f c g c
+ b, c g, c f, c c'' c
+)
+
+Then, load a copy of the original mudela file in your favourite editor,
+and let it parse the 'error file' file(intervals). First you remove all
+octavation quotes. Then, jumping from warning to warning, you enter quotes
+as suggested by LilyPond.
+
--- /dev/null
+nsect(NAME)
+
+PATCHES - track and distribute your code changes
+
+nsect(DESCRIPTION)
+
+This page documents how to distribute your changes to GNU lilypond
+(or in fact any other StepMake package).
+
+nsect(ABSTRACT)
+
+Distributing a change normally goes like this:
+
+itemize(
+it()make your fix/add your code
+it()Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
+it()generate a patch,
+it()e-mail your patch to one of the mailing lists
+ gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
+)
+
+nsect(GENERATING A PATCH)
+
+In file(VERSION), set MY_PATCH_LEVEL:
+
+verb(
+ VERSION:
+ ...
+ MY_PATCH_LEVEL=jcn1
+)
+
+In file(NEWS), enter a summary of changes:
+
+verb(
+ NEWS:
+ pl 0.1.73.jcn1
+ - added PATCHES.yo
+)
+
+Then, from the top of Lily's source tree, type
+
+verb(
+ make diff
+)
+
+which leaves your patch as file(./lilypond-0.1.73.jcn1.diff).
+
+If you didn't configure Lily using --srcdir, you can do:
+
+verb(
+ make release
+
+ tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
+ patch: ../patches/lilypond-0.1.73.jcn1.gz
+ updeet: ../test/updeet
+)
+
+nsect(PREREQUISITES)
+
+For creating a patch you need
+
+itemize(
+it()All items mentioned in file(INSTALL). You're not going to send a patch
+ that you haven't even built, right?
+it()GNU diff
+it()Python (version 1.5 or newer).
+ You can of course make a patch by hand, which would go something like:
+
+verb(
+ make distclean
+ cd ..
+ diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
+)
+
+but there are handy python scripts available. If you're doing development,
+you'll need Python for other LilyPond scripts anyway.
+
+it()The Lily directory structure, which looks like:
+
+includefile(../../stepmake/Documentation/layout.yo)
+)
+
+nsect(APPLYING PATCHES)
+
+If you're following LilyPond development regularly, you probably want to
+download just the patch for each subsequent release.
+After downloading the patch (into the patches directory, of course), simply
+apply it:
+
+verb(
+ gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
+)
+
+and don't forget to make automatically generated files:
+
+verb(
+ autoconf footnote(patches don't include automatically generated files,
+ i.e. file(configure) and files generated by file(configure).)
+
+ configure
+)
+
+nsect(SYNCHRONISE)
+
+If you're not very quick with sending your patch, there's a good chance
+that an new release of LilyPond comes available. In such a case (and
+sometimes for other unkown reasons :-), the maintainer will probably ask
+you to make a new patch against the latest release.
+Your best bet is to download the latest release, and apply your patch
+against this new source tree:
+
+verb(
+ cd lilypond-0.1.74
+ gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
+ autoconf
+ configure
+)
+
+Then, make a patch as shown above.
+
+nsect(SEE ALSO)
+
+file(stepmake/INSTALL.txt)
+
+nsect(MAINTAINER)
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl)
+
+Just keep on sending those patches!
+
--- /dev/null
+#!/bin/sh
+# zet-lily.sh --- configure LilyPond sourcetree
+# nice in first character unique name
+#
+PACKAGE_NAME=LilyPond
+export PACKAGE_NAME
+prefix=$HOME/usr
+sources=$prefix/src
+#
+#
+. ./stepmake/bin/package-zet.sh
+#
+# The $sources dir looks like this:
+#
+# <SEE PATCHES.txt>
+#
+if [ "x$LILYINCLUDE" = "x" ]; then
+ # we can try...
+ echo you should add the following to your profile script
+ if [ "x$MAILADDRESS" = "x" ]; then
+ MAILADDRESS=$USER@`hostname`
+ export MAILADDRESS
+ echo " MAILADDRESS=\$USER@`hostname`"
+ echo " export MAILADDRESS"
+ fi
+ LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/input:$LILYPOND_SOURCEDIR/mf/out
+ MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf
+ TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out
+ export LILYINCLUDE MFINPUTS TEXINPUTS
+ cat <<EOF
+ LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out
+ MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf
+ TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out
+ export LILYINCLUDE MFINPUTS TEXINPUTS
+EOF
+
+fi
+
+ln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond $prefix/bin/lilypond
+ln -sf $LILYPOND_SOURCEDIR/mi2mu/out/mi2mu $prefix/bin/mi2mu
+ln -sf $LILYPOND_SOURCEDIR/scripts/ly2dvi.sh $prefix/bin/ly2dvi
+chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
+ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
+
+if [ -f ../.gdbinit ];
+then
+ ln ../.gdbinit .
+fi
+
+if [ -f ../.dstreamrc ]
+then
+ ln ../.dstreamrc .
+fi
+
+./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise
+
slurdash 1 dotted slurs
slurdash >1 dashed slurs
+slurydirection -1 force stem down \slurdown
+slurydirection 0 stem direction free \slurboth
+slurydirection 1 force stem up \slurup
+
+slurydirection -1 force stem down \slurdown
+slurydirection 0 stem direction free \slurboth
+slurydirection 1 force stem up \slurup
+
[Score?]
beamslopedamping 0 no damping \beamslopeproportional
beamslopedamping 1 damping1) \beamslopedamped
beamquantisation 1 quantise pos and slope \beamposnormal
beamquantisation 2 quantise avoide wedge2) \beampostraditional
+[Staff]
+specialaccidentals 0 Accidental for all octaves \normalkey
+specialaccidentals 1 Accidental only for specified octave \specialkey
+
[Staff?]
instrument ascii midi instrument table lookup
\skip 1*0;
\property Voice.ydirection = \down
}
+slurup = {
+ \skip 1*0;
+ \property Voice.slurydirection = \up
+ }
+slurboth= {
+ \skip 1*0;
+ \property Voice.slurydirection = \center
+}
+slurdown = {
+ \skip 1*0;
+ \property Voice.slurydirection = \down
+}
+
+shifton = \property Voice.hshift = 1
+shiftoff = \property Voice.hshift = 0
onevoice = {
- \property Voice.ydirection = \center
- \property Voice.hshift = 0
+ \stemboth \shiftoff
}
voiceone = {
\type Voice = one
\skip 1*0;
- \property Voice.ydirection = \up
+ \stemup
}
voicetwo = {
\type Voice = two
\skip 1*0;
- \property Voice.ydirection = \down
+ \stemdown
}
voicethree = {
\type Voice = three
\skip 1*0;
- \property Voice.ydirection = \up
- \property Voice.hshift = 1
+ \stemup
+
}
voicefour = {
\type Voice = four
\skip 1*0;
- \property Voice.ydirection = \down
- \property Voice.hshift = 1
+ \stemdown
+ \shifton
+}
+
+onestaff = {
+ \translator Staff=one
+ \skip 1*0;
+}
+
+staffone = {
+ \translator Staff=one
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+stafftwo = {
+ \translator Staff=two
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+staffthree = {
+ \translator Staff=three
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
+}
+
+stafffour = {
+ \translator Staff=four
+ \skip 1*0;
+ \property Staff.ydirection = \center
+ \property Staff.hshift = 0
}
% ugh, cluttering global namespace...
\property Voice.slurdash = 1
}
+%{
+ for grace note hack, see input/test/grace.ly
+%}
+pletoff = {
+ \property Voice.pletvisibility = 0
+}
+pleton = {
+ \property Voice.pletvisibility = 2
+}
+tiny = {
+ \property Voice.fontsize= "-2"
+ \pletoff %urg
+}
+
+small = {
+ \property Voice.fontsize= "-1"
+}
+
+normalsize = {
+ \property Voice.fontsize= "0"
+ \pleton %urg
+}
+
+%{
+ [urg: try at] temporary grace note hack
+ the total visible duration of the grace notes must be half
+ the duration of the 'at' note: e.g.:
+
+ \grace b8 \graceat c4 \ecarg
+ \grace c16 b16 \graceat c4 \ecarg
+
+grace = {
+ \tiny
+% it would be so cool not to have to specify these factors each time...
+% :-(
+ \property Voice.pletvisibility = 0
+ \[1/16
+}
+
+graceat = \melodic {
+ \normalsize
+ \property Voice.pletvisibility = 0
+ \] \[31/32
+}
+
+ecarg = \melodic {
+ \property Voice.pletvisibility = 0
+ \]
+ \property Voice.pletvisibility = 2
+}
+%}
+
+normalkey = {
+ \property Staff.specialaccidentals = 0
+}
+
+specialkey = {
+ \property Staff.specialaccidentals = 1
+}
+
--- /dev/null
+\paper{
+% linewidth= 193.\mm;
+ linewidth= 180.\mm;
+ gourlay_maxmeasures = 10.0;
+% arithmetic_basicspace = 3.;
+% arithmetic_multiplier = 6.\pt;
+ % for simple testing only!
+% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
+}
--- /dev/null
+\header{
+filename = "preludes.ly";
+% mmm
+title = "DOUZE PETITES PR\\'ELUDES";
+% urg subtitle = "Clavierb\\"uchlein";
+subtitle = "Clavierbuechlein";
+composer = "Johann Sebastian Bach (1685-1750)";
+enteredby = "jcn";
+copyright = "public domain";
+}
+
+\include "preludes-1.ly"
+\include "preludes-2.ly"
+% urg, still broken
+% \include "preludes-3.ly"
+\include "preludes-4.ly"
+\include "preludes-5.ly"
+\include "preludes-6.ly"
--- /dev/null
+% prelude-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% who is going to make a -violin.ly?
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet see alto_scripts .
+%}
+
+% urg, Thread is gone, try Voice
+% prelude_notes = \type Thread = prelude \melodic \relative c {
+prelude_notes = \type Voice = prelude \melodic \relative c {
+ d8 f a4 ~ a16 f e d |
+ cis e g a bes4 ~ bes16 a g f |
+ e g bes cis e8. bes16 a16 g f e |
+ f g a f d8 c! bes a |
+ %5
+ bes16 d f a d8. c16 bes a g f |
+ e g bes d c a bes g f e g bes, |
+ a c e g c8. bes16 a g f e |
+ d f a c bes g a f e f a f |
+ %9
+ g, bes d f bes8. a16 g f e g |
+ a, c e g c a e g f a d, es |
+ d a bes d g bes a c bes g d' f, |
+ %12
+ e b c e g d e c bes g e' bes |
+ f8 a c4 ~ c16 bes a g |
+ fis a bes c d, c' bes a fis' es d c |
+ bes a g bes d4 ~ d16 c bes a |
+ %16
+ gis b c d e, d' c b gis' f e d |
+ c b a c f e f gis a f d c |
+ b d gis b d8. c16 b a gis a |
+ %19
+ c, e a c e8. c16 b a gis a |
+ d, f a d f8. e16 d c b d |
+ e, d' c b a c b a d, b' a gis |
+ %22
+ c, a' g! f cis g' f e d f e d |
+ gis, d' e f b f e d gis, d' c b |
+ a b c e a b c a e c a g! |
+ % 25
+ % B"arenreiter and Chester say "c bes c"
+ fis a c d es8. d16 c bes c a' |
+ bes, a bes d g, es' f g a, g' f es |
+ d c d f bes, g' a bes cis, bes' a g |
+ % 28
+ f e f a d, bes' c! d e,! d' c bes |
+ a g a c f, d' e f g, f' e d |
+ cis g f e a, e' f g cis bes! a g |
+ %31
+ f g a cis d a g f a f e d |
+ gis d e f a, f' e d gis f! e d |
+ cis b cis e a e cis e a, g'! f e |
+ %34
+ f e f a d a f a d, c'! bes a |
+ g f g cis e cis g cis a, g' f e |
+ d a' d e f d a f d c'! bes a |
+ %37
+ g a bes d, es f g a bes g es' g, |
+ f g a cis, d e! f g a f d' f, |
+ e f g bes, a b cis d e bes g' bes, |
+ %40
+ cis,8 a' g'4 ~ g16 bes a g |
+ f e d e f d a' f d' a f d |
+ gis,8 f' d'4 ~ d16 f e d |
+ cis b a b cis a d a e' a, f' a, |
+ %44
+ g' e cis e a, cis e f g f g e |
+ f d cis d a cis d e f e f d |
+ e cis b cis a b cis d e d e cis |
+ %47
+ d b a b f gis b cis d cis d b |
+ \voiceone <cis4^\fermata e,> \onevoice r r |
+ bes16 g fis g es g d g es g bes d, |
+ cis-- e! g a bes8. a16 g fis g e' |
+ %51
+ f,! d' bes g a f e g f d cis e |
+ d bes a g fis-- a c! es d c bes a |
+ bes g fis g es g d g es g bes d, |
+ %54
+ \voiceone g'8. f16
+ e!16 d cis b a g f e \onevoice |
+ d-- a' d e f e d c! bes! a g f |
+ e-- a cis e g f e d cis b a g |
+ f a d f a d, f a d bes! c! a |
+ g, d' g a bes g fis g es' g, d' g, |
+ \voiceone <cis2. g> | <d f,> | <d e,> | <cis e,> | <d f,>
+}
+
+prelude_b = \melodic \relative c {
+ \voicetwo
+ s2.*47
+ %48
+ g4 s2 |
+ s2.*5
+ %54
+ <cis,4 bes'> s2 |
+ s2.*4
+ a'2. a a a <a d,>
+}
+
+% pat1 = \melodic { [s8 s]s4[s16 s s s] }
+pat1 = \melodic { [s16 s s s]s4[s16 s s s] }
+pat2 = \melodic { [s16 s s s][s8.s16][s s s s] }
+pat3 = \melodic { [s16 s s s][s8 s s s] }
+
+% of course, i just type pat1, and add the \ and the silly $ later
+% urg, Thread is gone, try Voice
+% prelude_beams = \type Thread = prelude \melodic{
+prelude_beams = \type Voice = prelude \melodic{
+ \$pat1
+ \$pat1
+ \$pat2
+ \$pat3
+ %5
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %10
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat1
+ \$pat2
+ %15
+ \$pat1
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %20
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %25
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %30
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %35
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %40
+ \$pat1
+ \$pat2
+ \$pat1
+ \$pat2
+ \$pat2
+ %45
+ \$pat2
+ \$pat2
+ \$pat2
+ s2.
+ \$pat2
+ %50
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+ %55
+ \$pat2
+ \$pat2
+ \$pat2
+ \$pat2
+}
+
+%{
+properties, urg!
+fig1 = \melodic{ s16( s s )s }
+fig2 = \melodic{ s16( s ) s s }
+fig3 = \melodic{ s16 s( s )s }
+fig4 = \melodic{ s16( s s s s s s )s }
+fig5 = \melodic{ s8.()s16 }
+%}
+
+fig1 = \melodic{ \slurnormal s16( s s )s }
+fig2 = \melodic{ \slurnormal s16( s ) s s }
+fig3 = \melodic{ s16 \slurnormal s( s )s }
+fig4 = \melodic{ \slurnormal s16( s s s s s s )s }
+fig5 = \melodic{ \slurnormal s8.()s16 }
+
+% of course, i just type fig1, and add the \ and the silly $ later
+% urg, Thread is gone, try Voice
+% prelude_slurs = \type Thread = prelude \melodic{
+prelude_slurs = \type Voice = prelude \melodic{
+ s4 s4 \$fig3 |
+ \$fig1 s4 \$fig3 |
+ \$fig1 s4 \$fig3 |
+ \$fig1 s8( s s )s |
+ %5
+ \$fig3 s2 |
+ s2. |
+ s2 \$fig1 |
+ s2 \$fig1 |
+ s2 \$fig1 |
+ %10
+ \$fig3 \$fig3 \$fig1 |
+ \$fig3 \$fig3 s4 |
+ \$fig3 s2 |
+ s4 s4 \$fig3 |
+ \$fig3 \$fig3 \$fig3 |
+ %15
+ s4 s s16 s s8 |
+ \$fig3 \$fig3 s4 |
+ s2. |
+ \$fig1 s4 \$fig1 |
+ s2 \$fig1 |
+ %20
+ \$fig1 s4 \$fig1 |
+ s4 \$fig3 \$fig3 |
+ \$fig3 \$fig3 \$fig3 |
+ s2 \$fig1 |
+ s2. |
+ %25
+ \$fig3 s4 \$fig1 |
+ \$fig2 \$fig3 \$fig3 |
+ \$fig2 \$fig3 \$fig3 |
+ \$fig2 \$fig3 s4 |
+ \$fig2 \$fig3 \$fig3 |
+ %30
+ \$fig3 \$fig3 \$fig1 |
+ \$fig2 \$fig3 \$fig3 |
+ s2. |
+ s4 \$fig3 \$fig3 |
+ \$fig2 \$fig3 \$fig3 |
+ %35
+ \$fig2 s2 |
+ s2. |
+ s2. |
+ s2. |
+ s2. |
+ %40
+ s4 s4 \$fig3 |
+ \$fig1 s2 |
+ s2 \$fig3 |
+ \$fig2 s2 |
+ s2. |
+ %45
+ s2. |
+ s4 \$fig2 s4 |
+ \$fig3 \$fig2 s4 |
+ s2. |
+ \$fig3 s2 |
+ %50
+ \$fig3 s4 \$fig2 |
+ s2. |
+ s4 \$fig3 s4 |
+ s2 \$fig2 |
+% s8()s \$fig4 |
+% s8.()s16 \$fig4 |
+ \$fig5 \$fig4 |
+ %55
+ \$fig3 \$fig4 |
+ \$fig3 \$fig4 |
+ \$fig3 \$fig3 s4 |
+ s4 \$fig3 s4 |
+}
+
+fig1 = \melodic{ \slurdotted s16( s s )s }
+fig2 = \melodic{ \slurdotted s16( s ) s s }
+fig3 = \melodic{ s16 \slurdotted s( s )s }
+fig4 = \melodic{ \slurdotted s16( s s s s s s )s }
+fig5 = \melodic{ \slurdotted s8.()s16 }
+fig6 = \melodic{ \slurdotted s16()s \slurdotted s()s }
+
+% urg, Thread is gone, try Voice
+% prelude_suggested_slurs = \type Thread = prelude \melodic{
+prelude_suggested_slurs = \type Voice = prelude \melodic{
+ \slurdotted
+ s2. |
+ s2. |
+ s4 \$fig5 s4 |
+ s2. |
+ %5
+ s4 \$fig5 \$fig1 |
+ \$fig1 \$fig1 \$fig2 |
+ s4 \$fig5 s4 |
+ \$fig1 \$fig1 s4 |
+ \$fig2 \$fig5 s4 |
+ %10
+ s2. |
+ s2 \$fig2 |
+ s4 \$fig3 \$fig2 |
+ s2. |
+ s2. |
+ %15
+ \$fig2 s4 \$fig3 |
+ s2 \$fig3 |
+ \$fig1 \$fig1 \$fig1 |
+ s4 \$fig5 s4 |
+ \$fig1 \$fig5 s4 |
+ %20
+ s4 \$fig5 s4 |
+ \$fig3 s2 |
+ s2. |
+ \$fig3 \$fig3 s4 |
+ \$fig1 \$fig1 \$fig1 |
+ %25
+ s4 \$fig5 s4 |
+ s2. |
+ s2. |
+ s2 \$fig3 |
+ s2. |
+ %30
+ s2. |
+ s2. |
+ \$fig3 \$fig3 \$fig2 |
+ \$fig2 s2 |
+ s2. |
+ %35
+ s4 \$fig3 \$fig3 |
+ s2 \$fig3 |
+ s2. |
+ \$fig2 s2 |
+ \$fig2 s2 |
+ %40
+ s2. |
+ s2. |
+ s2. |
+ s2. |
+ % check !
+ \$fig3 \$fig2 s4 |
+ %45
+ \$fig3 \$fig2 s4 |
+ % check!
+ \$fig3 s2 |
+ s2. |
+ s2. |
+ s2 \$fig2 |
+ %50
+ \$fig1 \$fig5 s4 |
+ s4 \$fig6 \$fig6 |
+ \$fig3 \$fig1 \$fig1 |
+ \$fig3 s2 |
+}
+
+prelude_a = \type Voice \melodic<
+ \$prelude_notes
+ \$prelude_beams
+ \$prelude_slurs
+ \$prelude_suggested_slurs
+>
+
+prelude = \melodic<
+ \$prelude_a
+ \$prelude_b
+>
+
--- /dev/null
+\header{
+instrument="Alto";
+}
+
+instrument="alto";
+\include "solo-cello-suite-ii.ly"
+
--- /dev/null
+\header{
+instrument="Cello";
+}
+
+instrument="cello";
+\include "solo-cello-suite-ii.ly"
+
--- /dev/null
+\header{
+filename = "solo-cello-suite-ii.ly";
+title = "Solo Cello Suites";
+subtitle = "Suite II";
+opus = "BWV 1008";
+composer = "Johann Sebastian Bach (1685-1750)";
+}
+
+% urg
+
+% \include "prelude-" + \instrument + ".ly";
+
+i = "prelude-" + \instrument + ".ly";
+ii = "allemande-" + \instrument + ".ly";
+iii = "courante-" + \instrument + ".ly";
+iv = "sarabande-" + \instrument + ".ly";
+v = "menuetto-" + \instrument + ".ly";
+vi = "gigue-" + \instrument + ".ly";
+
+\include \i;
+\include \ii;
+\include \iii;
+\include \iv;
+\include \v;
+\include \vi;
- more composers > 70y +
- (more) free composers
- - beethoven's coriolan
+ - Beethoven's Coriolan: brass and woodwind
+ - more Cello Suites
--- /dev/null
+verb(
+ doos/ # gnu/windows32 build and binary releases
+ harmonia -> harmonia-x.y.z
+ harmonia-x.y.z/
+ lilypond -> lilypond-x.y.z # symlink to development directory
+ lilypond-x.y.z/ # current development
+ patches/ # patches between different releases
+ RedHat/BUILD # RedHat build and binary releases
+ RedHat/RPMS
+ RedHat/SPECS
+ releases/ # .tar.gz releases
+ test/ # tarballs and diffs from current version
+ yodl -> yodl-1.30.17
+ yodl-1.30.17
+)
+with prefix file($HOME/usr/src)
+and (for building rpms only) in file($HOME/.rpmrc):
+verb(
+ topdir: /home/fred/usr/src/RedHat
+)