iso. outname.
* mf/feta-klef.mf: clef fixes, remove left/right spacing. set
G-clef bbox to real char extents. This fixes the G-clef being
offset too much to the right.
document perc clef offset.
* Documentation/user/tutorial.itely (Tutorial): move menu.
+2003-07-26 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ * scripts/ly2dvi.py (include_path): bugfix: use outbase
+ iso. outname.
+
+ * mf/feta-klef.mf: clef fixes, remove left/right spacing. set
+ G-clef bbox to real char extents. This fixes the G-clef being
+ offset too much to the right.
+ document perc clef offset.
+
+ WARNING: FONT CHANGED.
+
+ * Documentation/user/tutorial.itely (Tutorial): move menu.
+
2003-07-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ * buildscripts/lilypond-profile.sh (Error): trim error message.
+
* Documentation/user/invoking.itexi (Invoking the lilypond
binary): add note about path.
in the notes at different heights'', but as you learn more of it, the
opposite turns out to be true. One has to master two difficult
tasks. First, one has to master music notation: the science of knowing
-which symbols to use when what. Second, one has to master music
+which symbols to use for what. Second, one has to master music
engraving: the art of placing symbols such that the result looks
pleasing.
<!--- @@WEB-TITLE@@=Tutorial --->
@end html
-@menu
-* First steps:: Music language of LilyPond.
-* Running LilyPond:: Printing music.
-* More about pitches and accidentals::
-* Octave entry::
-* Relative octave entry::
-* Combining music into compound expressions::
-* Adding articulation marks to notes::
-* Combining notes into chords::
-* Printing lyrics::
-* A lead sheet::
-* Listening to output::
-* Titling::
-* Single staff polyphony::
-* Piano staffs::
-* Setting variables::
-* Fine tuning layout::
-* Organizing larger pieces::
-* An orchestral part::
-* Integrating text and music:: Integrating text and music.
-@end menu
Using LilyPond comes down to encoding music in an input file. After
entering the music, the program is run on the file producing output
produce printed output, normally using the program @code{ly2dvi}. You
should then be able to create and print your first sheets of music.
+@menu
+* First steps:: Music language of LilyPond.
+* Running LilyPond:: Printing music.
+* More about pitches and accidentals::
+* Octave entry::
+* Relative octave entry::
+* Combining music into compound expressions::
+* Adding articulation marks to notes::
+* Combining notes into chords::
+* Printing lyrics::
+* A lead sheet::
+* Listening to output::
+* Titling::
+* Single staff polyphony::
+* Piano staffs::
+* Setting variables::
+* Fine tuning layout::
+* Organizing larger pieces::
+* An orchestral part::
+* Integrating text and music:: Integrating text and music.
+@end menu
+
@node First steps
@section First steps
if [ `basename "$0"` = "lilypond-profile" ] ; then
cat >/dev/stderr <<EOF
-Error: This script must be sourced, i.e, you must do:
+
+Error: This script cannot be run in a subshell; it MUST be sourced.
- . /PATH/TO/lilypond-profile
-Note the space after the period. If you install this script, you must
-logout and re-login before you can use LilyPond. On a Red Hat-like
-system, install this script as:
+EXAMPLE 1: One time use
- /etc/profile.d/lilypond-profile
+ Do
-Alternatively, put it in:
+ . $0
- ~/bin/lilypond-profile
-and in your ~/.profile, say:
- . ~/bin/lilypond-profile
+EXAMPLE 2: Local installation
+
+ * Do
+
+ mv lilypond-profile $HOME/bin/
+
+ * Add
+
+ . $HOME/bin/lilypond-profile
+
+ to either $HOME/.profile or $HOME/.bash_profile,
+
+ * Logout.
+
+
+EXAMPLE 3: Global installation
+
+ * Do
+
+ mv lilypond-profile /etc/profile.d/lilypond.sh
+
+ * Logout
+
+
EOF
exit 2
fet_begingroup("clefs");
-%
-% [Ross] says that clefs take 1 staff_space space on the left and right
-%
-% this is now handled in the lilypond spacing engine.
-%
-
-def set_horizontal_spacing =
- save left_space ,right_space;
- left_space# = 0;
- right_space# = 0;
-enddef;
-
% [Wanske] says the bulbs should be positioned about 1/4 right of the
% "arrow"
norm#:=2/3reduced_ss#;
hair#:=1/6norm#;
- set_horizontal_spacing;
right_edge# = 15/4norm#+2hair#;
- set_char_box (left_space#, right_edge# + right_space#,
+ set_char_box (0, right_edge# + 0,
2 reduced_ss#, 2 reduced_ss#);
define_pixels (hair,norm,reduced_ss, right_edge);
swoosh_width# = 2.1 reduced_ss#;
% tip_protude := (-stafflinethickness, -.2 staff_space);
tip_protude := (0, 0);
- set_horizontal_spacing;
bulb_y_offset := 0.15 staff_space;
overshoot_top := 0.0;
%%
- set_char_box(left_space# +
+ set_char_box(0 +
- xpart exact_center,
- right_space# +
+ 0 +
xpart exact_center + swoosh_width# + 7/12 reduced_ss#,
- ypart exact_center + 2.5 reduced_ss#,
ypart exact_center +reduced_ss#);
% -- vrij naar Van Kooten & De Bie
%
def debugfill = fill enddef;
-def draw_gclef (expr exact_center, reduction)=
+def draw_gclef (expr reduction)=
save reduced_ss, downstroke_dir, downstroke_angle, center;
save breapth_factor, inner_thick_end, thinness, thickness, thinnib;
save inner_start_angle, thinness;
define_pixels(reduced_ss);
pair downstroke_dir, center;
- center := (hround_pixels(xpart exact_center),
- vround_pixels(ypart exact_center));
-
thinness = 1.4 stafflinethickness;
downstroke_dir = unitvector (14, -75);
downstroke_angle = angle downstroke_dir;
thinnib = thinness;
- set_horizontal_spacing;
- set_char_box(
- left_space# +
- -xpart exact_center + 1.0 * breapth_factor* reduced_ss#,
- right_space# +
- xpart exact_center + .66 breapth_factor* reduced_ss#,
- -ypart exact_center + 2.6 * reduced_ss#,
- ypart exact_center + 5 * reduced_ss#);
+ set_char_box(0,
+ 1.71 * breapth_factor* reduced_ss#,
+ 2.6 * reduced_ss#,
+ 5 * reduced_ss#);
+ center := (1.0 * breapth_factor* reduced_ss, 0);
save upward_swoosh_angle;
upward_swoosh_angle =130 ;
if test = 1:
draw_staff(-1,3, 0.0);
fi;
- draw_gclef((1.7 staff_space#,0), 1.0);
+ draw_gclef(1.0);
fet_endchar;
fet_beginchar("G clef", "G_change", "ctrebleclef")
- draw_gclef((1.3 staff_space#,0), .8);
+ draw_gclef(0.8);
fet_endchar;
%%%%
%
+
+%%
+%
+% The perc clef extent is not coincident with its bbox, since
+% the perc clef needs more space in front than a normal clef.
+%
+
def draw_percussion_clef(expr reduction) =
- save reduced_ss;
+ save reduced_ss, razt;
+
reduced_ss# = staff_space# * reduction;
define_pixels(reduced_ss);
set_char_box(-.67reduced_ss#,2.0reduced_ss#,reduced_ss#,reduced_ss#);
ly.progress (_ ("%s output to %s...") % (i, names))
ly.progress ('\n')
elif verbose_p:
- ly.warning (_ ("can't find file: `%s'") % outname)
+ ly.warning (_ ("can't find file: `%s.%s'") % (outbase, ext))
if html_p:
make_html_menu_file (os.path.join (outdir, outbase + ".html"),