beautiful sheet music from a music definition file. It can also play
mechanical performances to a MIDI file. Features include multiple
staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,
-beams, slurs, triplets, formatting scores, part extraction. It includes
-a nice font of musical symbols.
+beams, slurs, triplets, named chords, transposing, formatting scores,
+part extraction. It includes a nice font of musical symbols.
LilyPond is de muziekzetter van het GNU Project. Dit programma drukt
prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan
het een mechanische uitvoering afspelen naar een MIDI bestand.
-Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,
-sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,
-balken, boogjes, triolen, partituren, en uittreksels voor individuele
-partijen. Een fraaie set muziektekens is inbegrepen.
+Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten, sleutels,
+toonaarden, zangteksten, krachtige invoer taal, cadensa, balken, boogjes,
+triolen, accoordnamen, transponeren, partituren, en uittreksels voor
+individuele partijen. Een fraaie set muziektekens is inbegrepen.
%
-
+@Book{banter,
+ author = {Harald Banter},
+ title = {Akkord Lexikon},
+ publisher = {Schott's S\"ohne},
+ year = {1987},
+ isbn = {ISBN 3-7957-2095-8},
+ note = {Comprehensive overview of commonly used
+ chords. Suggests (and uses) a unification for all different kinds
+ of chord names.},
+ address = {Mainz, Germany},
+}
@Book{rastall,
author = {Richard Rastall},
should do. If you are going to compile and install LilyPond very
often you might want to check out the file(buildscripts/set-lily.sh)
script. It sets some environment variables and symlinks, which comes
-in handly when you have to compile LilyPond very often.
+in handly when you have to compile LilyPond more often.
sect(PREREQUISITES)
Although we recommend to use Unix, LilyPond is known to run on Windows
NT/95/98 as well. See Section ref(w32).
-it() GNU C++ version 2.7 or newer (2.8 and egcs are also fine).
+it() GNU C++ version 2.8 or newer (egcs-1.1 or newer is also fine).
it() Python 1.5 (Strictly speaking, you shouldn't need Python for
compiling and installing, but you'll need it to regenerate the font
tables, e.g.).
-it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html)
+it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html).
)
sect(RUNNING)
it()A PostScript printer and/or viewer (such as Ghostscript) is strongly
recommended. Xdvi will show all embedded PostScript too if you have
Ghostscript installed.
-it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html)
+it() GUILE 1.3 (no, GUILE 1.2 won't work), check out lurl(http://www.gnu.org/programs/guile.html)
)
setenv GS_LIB "@datadir@/afm"
setenv GS_FONTPATH "@datadir@/ps"
setenv LILYINCLUDE "@datadir@/ly:@datadir@/afm"
+setenv LILYPONDPREFIX "@datadir@"
# include an empty path component for the system wide includes.
setenv MFINPUTS "@datadir@/mf:$MFINPUTS::"
GS_LIB="@datadir@/afm"
GS_FONTPATH="@datadir@/ps"
LILYINCLUDE="@datadir@/ly:@datadir@/afm"
+# bit silly. for ly2dvi, overrules compiled-in datadir...
+LILYPONDPREFIX="@datadir@"
# include an empty path component for the system wide includes.
MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
GUILE_LOAD_PATH="@datadir@/scm:$GUILE_LOAD_PATH"
-export GUILE_LOAD_PATH LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
+export GUILE_LOAD_PATH LILYINCLUDE LILYPONDPREFIX MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
# echo $LILYINCLUDE $MFINPUTS $TEXINPUTS $GS_LIB $GS_FONTPATH
chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
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
if [ -f ../.gdbinit ];
then
ln ../.gdbinit .
--- /dev/null
+\version "1.0.12";
+
+scales = \notes\transpose c''{
+ f2 f f f f f f f f f\break
+ }
+
+keys = \notes{
+ \key b; s1 \key f; s1 \key f; s1 \key f; s1 \key f; s1
+ }
+
+\score{
+ <
+ \type ChordNames \scales
+ \type Staff < \scales \keys >
+ >
+}
--- /dev/null
+\header{
+filename = "chord-table.ly";
+copyright = "public domain";
+enteredby = "jcn";
+}
+
+tab = \notes\transpose c'''\chords{
+ c1 c-m c-4 c-m4 c-5+ c-5- c-m5- c-5-5+ c-6\break %c-m6\break
+ % Han-Wen: try this instead, and Wierd Things (spacing etc) happen:
+% \notes {<c1 e g>} c1-m c-4 c-m4 c-5+ c-5- c-m5- c-5-5+ c-6 c-m6\break
+}
+
+\score{
+ \type StaffGroup <
+ \type Staff=c \notes\transpose c\tab
+ \type ChordNames=c \notes\transpose c\tab
+ \type Staff=cis \notes\transpose cis\tab
+ \type ChordNames=cis \notes\transpose cis\tab
+ \type Staff=des \notes\transpose des\tab
+ \type ChordNames=des \notes\transpose des\tab
+ \type Staff=d \notes\transpose d\tab
+ \type ChordNames=d \notes\transpose d\tab
+ \type Staff=es \notes\transpose es\tab
+ \type ChordNames=es \notes\transpose es\tab
+ \type Staff=e \notes\transpose e\tab
+ \type ChordNames=e \notes\transpose e\tab
+ \type Staff=fis \notes\transpose fis\tab
+ \type ChordNames=fis \notes\transpose fis\tab
+ \type Staff=g \notes\transpose g\tab
+ \type ChordNames=g \notes\transpose g\tab
+ \type Staff=as \notes\transpose as\tab
+ \type ChordNames=as \notes\transpose as\tab
+ \type Staff=a \notes\transpose a\tab
+ \type ChordNames=a \notes\transpose a\tab
+ \type Staff=bes \notes\transpose bes,\tab
+ \type ChordNames=bes \notes\transpose bes,\tab
+ \type Staff=b \notes\transpose b,\tab
+ \type ChordNames=b \notes\transpose b,\tab
+ >
+ \paper{
+ textheight = \vsize - 4.0 * \staffheight;
+ }
+
+}
%{
Would this be acceptable/good enough/convenient for entry?
- Convention/Standard Logical/Lily(?)
+ Convention/Standard Lily
C# cis
Cb ces
- Cm/Cmin c3-
- Caug c5+
- Cdim c5-
- Cmaj7 c7
- C7 c7-
- Csus/Csus4 c4^3
+ Cm; Cmin c-3-; c-m; c-min
+ Caug c-5+; c-aug;
+ Cdim c-5-; c-dim
+ Cmaj7 c-7+; c-maj
+ C7 c-7
+ Csus; Csus4 c-4; c-sus
%}
scales = \notes\transpose c''\chords{
- *c *g *d *a *e *b *fis
- *c *f *bes *es *as *des *ges
- *c6 *c7 *c9 *c11 *c13
+ %<c1 e g>
+ c1-m c-min c4-dim c-aug c-sus c-maj
+ c1-6 c4-7 c-9 c-11 c-13
+ c1 g d a e b fis
+ c1 f bes es as des ges
+ }
+
+keys = \notes{
+ s1
+ s1 s1 s1
+ s1 s1
+ s1
+ \key g; s1
+ \key d; s1
+ \key a; s1
+ \key e; s1
+ \key b; s1
+ \key fis; s1
+ \key c; s1
+ \key f; s1
+ \key bes; s1
+ \key es; s1
+ \key as; s1
+ \key des; s1
+ \key ges; s1
}
\score{
<
\type ChordNames \scales
- \type Staff \scales
+ \type Staff < \scales \keys >
>
}
void kill_lexer();
void set_lexer();
-
/// lexer for Mudela
-class My_lily_lexer : public Includable_lexer {
- int lookup_keyword (String);
- int scan_bare_word (String);
- int scan_escaped_word (String);
-
- char escaped_char(char) const;
+class My_lily_lexer : public Includable_lexer
+{
public:
String main_input_str_;
void * lexval_l;
Scope * toplevel_scope_p_;
bool main_input_b_;
-
+
+ Notename_table *chordmodifier_tab_p_;
Notename_table *note_tab_p_;
Array<Scope*> scope_l_arr_;
Keyword_table * keytable_p_;
int errorlevel_i_;
- Notename_table *chordmodifier_tab_p_;
- Musical_pitch lookup_notename (String s);
+
+ My_lily_lexer ();
+ ~My_lily_lexer ();
+ int yylex ();
+
void start_main_input ();
- void set_notename_table(Notename_table*tab_p);
+ bool notename_b (String) const;
bool chordmodifier_b (String) const;
void set_chordmodifier_table (Notename_table*tab_p);
- Musical_pitch lookup_chordmodifier (String s);
-
- bool notename_b(String) const;
+ void set_notename_table (Notename_table*tab_p);
Identifier*lookup_identifier (String s);
- Musical_pitch lookup_pitch (String s);
+ Musical_pitch lookup_notename (String s);
+ Musical_pitch lookup_chordmodifier (String s);
void push_note_state();
void push_chord_state();
void push_lyric_state();
void pop_state();
void LexerError (char const *);
- My_lily_lexer();
void set_identifier (String str, Identifier* i, bool unique_b = true);
- ~My_lily_lexer();
- int yylex();
void print_declarations (bool init_b) const;
- void add_notename (String, Musical_pitch);
bool note_state_b() const;
bool chord_state_b() const;
bool lyric_state_b() const;
+
+private:
+ int lookup_keyword (String);
+ int scan_bare_word (String);
+ int scan_escaped_word (String);
+
+ char escaped_char(char) const;
};
#endif
"""
name = 'ly2dvi'
-version = '0.0.6'
+version = '0.0.7'
errorlog = ''
import sys
else:
p=os.path.split(sys.argv[0])
p=os.path.split(p[0])
- this.setRoot(p[0],'init')
+ # bit silly. for ly2dvi, overrules compiled-in datadir...
+ # how to do this better (without running lily, of course?
+ this.setRoot(p[0] + '/share/lilypond', 'init')
if not os.environ.has_key('HOME'):
if os.environ.has_key('HOMEDRIVE') and \
+pl 61
+ - bf: package-diff
+
pl 60
- small fixes.
PACKAGE_NAME=StepMake
MAJOR_VERSION=0
MINOR_VERSION=1
-PATCH_LEVEL=59
+PATCH_LEVEL=61
MY_PATCH_LEVEL=
# use the above to send patches, always empty for released version:
dpkg-buildpackage -b; \
)'
-# urg urg
-# this one works for unix (try 'make diff help==' or 'make diff release==')
-makeflags=$(patsubst %==, %, $(patsubst %----,%,$(MAKEFLAGS:%=--%)))
-# and this one for nt
-# makeflags=$(patsubst %==, %, $(patsubst %----,%,$($(MAKEFLAGS:%=--%):--unix%=%)))
+makeflags=$(patsubst %==, %, $(patsubst ----%,,$(MAKEFLAGS:%=--%)))
diff:
$(PYTHON) $(step-bindir)/package-diff.py --package=$(topdir) $(makeflags)