-<<<<<<< ChangeLog
+2003-12-24 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ * stepmake/stepmake/toplevel-targets.make: remove pfa targets
+
+ * make/lilypond.redhat.spec.in (Group): remove MAKE_PFA_FILES
+
+ * lily/mark-engraver.cc (process_music): fix mark
+ \default. (backportme)
+
+ * stepmake/stepmake/automatically-generated.sub.make (default):
+ use -n for head/tail commands.
+
+ * lily/tie-engraver.cc (acknowledge_grob): make ties only for note
+ heads with the same pitch. (backportme)
+
2003-12-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
* lily/recording-group-engraver.cc (finalize): set protected_scm
@chapter New features in 2.1 since 2.0
@itemize
+@item Processing scores is now done while parsing the file. New
+Scheme functions give more flexibility: for example, it is now possible
+interpret a score, collecting synchronized musical events in a list, and
+manipulate that information using inline Scheme. For an example, see
+@file{input/no-notation/recording.ly}.
+
@item Font sizes can now truly be scaled continuously: the @code{font-size}
is similar to the old @code{font-relative-size}, but may be set to
fractional values; the closest design size will be scaled to achieve
@example
A \translate #(cons 2 -3) @{ B C @} D
@end example
-This moves `B C' 2 spaces to the right, and 3 down.
+This moves `B C' 2 spaces to the right, and 3 down, relative to its
+surroundings. This command cannot be used to move isolated scripts
+vertically, for the same reason that @code{\raise} cannot be used for
+that.
@item \magnify #@var{mag}
@cindex @code{\magnify}
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=1
-PATCH_LEVEL=2
-MY_PATCH_LEVEL=hwn2
+PATCH_LEVEL=3
+MY_PATCH_LEVEL=
# If you have such a setup, invoke this script as:
# autoconf=autoconf2.50 ./autogen.sh
for i in autoconf2.50 autoconf-2.50 autoconf false; do
- version=`$i --version 2>/dev/null | head -1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
+ version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
if test "0$version" -ge 250; then
autoconf=$i
break
+++ /dev/null
-#!@SHELL@
-# mf-to-xpms.sh
-
-if [ $# -ne 1 ]; then
- echo Usage: mf-to-xpms feta20
- exit 2
-fi
-
-font=`basename $1 .mf`
-mf=$font.mf
-afm=out/$font.afm
-PKTOPBM=pktopbm
-MODE=ibmvga
-RESOLUTION=110
-named=yes
-
-if [ ! -e out/$font.${RESOLUTION}pk ]; then
- mf "\\mode=${MODE}; \\input $mf"
- mv $font.${RESOLUTION}gf out
- rm -f $font.log $font.tfm
- gftopk out/$font.${RESOLUTION}gf out/$font.${RESOLUTION}pk
-fi
-
-# num=`grep "^C *[0-9]*;" $afm | tail -1 | sed "s!^C *\([^;]*\).*!\\1!"`
-# num=66
-# tex=out/$font.tex
-# cat > $tex <<EOF
-# \font\fetatwenty=feta20
-# \fetatwenty
-# \nopagenumbers
-# \newcount\c\c64
-# \char\c
-# \loop\ifnum\c<$num\advance\c by1
-# \vfill\eject
-# \char\c
-# \repeat
-# \vfill\eject
-# \end
-# EOF
-
-# for i in $NUMS; do
-# $PKTOPBM out/$font.${RESOLUTION}pk -c $i out/$font-$i.pbm
-# done
-
-# numbered files
-if [ "x$named" = "x" ]; then
- NUMS=`grep "^C *[0-9]* *;" $afm | sed "s!^C *\([^ ;]*\).*!\\1!"`
- PBMS=`grep "^C *[0-9]* *;" $afm | sed "s!^C *\([^ ;]*\).*!out/$font-\\1.pbm!"`
-else
- NUMS=`grep "^C *[0-9]* *;" $afm | sed "s!^C *.*; *N *\([^ ;]*\).*!\\1!"`
- PBMS=`grep "^C *[0-9]* *;" $afm | sed "s!^C *.*; *N *\([^ ;]*\).*!out/$font-\\1.pbm!"`
-fi
-
-# $PKTOPBM out/$font.${RESOLUTION}pk -x 100 -y 100 $PBMS
-$PKTOPBM out/$font.${RESOLUTION}pk $PBMS
-
-for i in $NUMS; do
- ppmtoxpm out/$font-$i.pbm > out/$font-$i.xpm
-done
-rm -f $PBMS
#(ly:set-option 'old-relative)
-\version "1.9.8"
+\version "2.1.1"
\header {
composer = "ARTHUR GRAY"
\consists "Dynamic_engraver"
\consists "Text_engraver"
- TextScript \override #'font-relative-size = #1
+ TextScript \override #'font-size = #2
TextScript \override #'font-shape = #'italic
\consists "Skip_event_swallow_translator"
--- /dev/null
+\version "2.1.2"
+\header {
+
+texidoc = "The @code{Recording_group_engraver} will record events
+synchronized in time, collecting them in a list. This file also shows
+how to skip the rendering and outputting step of the process, using
+@code{ly:run-translator}."
+
+}
+\include "english.ly"
+
+theMusic = \context Staff \notes { c4 d8-. }
+
+#(define (notice-the-events context lst)
+ (map (lambda (x) (display x) (newline)) lst))
+
+listener = \paper {
+ \translator {
+ \ThreadContext
+ \type "Recording_group_engraver"
+ recordEventSequence = #notice-the-events
+ }
+}
+
+#(ly:run-translator theMusic listener)
music_iter_->quit();
if (lyric_iter_)
lyric_iter_->quit();
-
}
+
Lyric_combine_music_iterator::Lyric_combine_music_iterator (Lyric_combine_music_iterator const & src)
: Music_iterator (src)
{
if (text_)
return;
- SCM s = get_property ("RehearsalMark");
- text_ = new Item (s);
-
-
+ text_ = new Item (get_property ("RehearsalMark"));
announce_grob(text_, rq->self_scm());
}
{
create_items (mark_req_);
- String t;
-
/*
automatic marks.
*/
}
else
{
+ String t ;
+
if (!gh_string_p (m) && !gh_number_p (m))
m = get_property ("rehearsalMark");
{
char c = t[0];
c++;
- next = to_string (c);
+ t = to_string (c);
}
- m = scm_makfrom0str (next.to_str0 ());
+ m = scm_makfrom0str (t.to_str0 ());
}
else
{
m = gh_int2scm (1);
+ t = to_string (1);
}
- daddy_trans_->set_property ("rehearsalMark", m);
-
text_->set_grob_property ("text",
- scm_makfrom0str (t.to_str0 ()));
+ scm_makfrom0str (t.to_str0 ()));
SCM series = SCM_EOL;
SCM family = ly_symbol2scm ("number");
{
if (!isdigit (t[i]))
{
- series = ly_symbol2scm ("bold");
+ /*
+ This looks strange, since \mark "A"
+ isn't printed in bold.
+
+ */
+
+ // series = ly_symbol2scm ("bold");
family = ly_symbol2scm ("roman");
break;
}
if (gh_symbol_p (family))
text_->set_grob_property ("font-family", family);
}
+
+ daddy_trans_->set_property ("rehearsalMark", m);
}
}
/*
- Ugh, this is messy.
+ TODO: this entire class should be implemented at Scheme level.
+
+
+
*/
Paper_outputter::Paper_outputter (String name)
{
outputter_->write_header_fields_to_file (header_);
}
-#if 0
- // todo: transport origin_string_ in header.
- outputter_->output_comment (_ ("Outputting Score, defined at: "));
- outputter_->output_comment (origin_string_);
-#endif
-
outputter_->output_scope (paper_->scope_, "lilypondpaper");
SCM scm = scm_list_n (ly_symbol2scm ("header-end"), SCM_UNDEFINED);
for (int i = heads_to_tie_.size (); i--;)
{
Grob *th = heads_to_tie_[i];
- int staff_pos = int (Staff_symbol_referencer::get_position (h));
- int left_staff_pos = int (Staff_symbol_referencer::get_position (th));
-
- if (staff_pos == left_staff_pos)
+ Music * right_mus = unsmob_music (h->get_grob_property ("cause"));
+ Music * left_mus = unsmob_music (th->get_grob_property ("cause"));
+
+ /*
+ maybe should check positions too.
+ */
+ if (right_mus && left_mus
+ && gh_equal_p (right_mus->get_mus_property ("pitch"),
+ left_mus->get_mus_property ("pitch")))
{
Grob * p = new Spanner (get_property ("Tie"));
Tie::set_interface (p); // cannot remove yet!
./configure --disable-checking --prefix=%{_prefix} --libdir=%{_libdir} --enable-optimising
-%make MAKE_PFA_FILES=1 all
-make -C mf/ pfa
+%make all
# make info
make -C Documentation
mkdir -p $RPM_DOC_ROOT
strip lily/out/lilypond
-%makeinstall MAKE_PFA_FILES=1
+%makeinstall
local_lilypond_libdir=$RPM_BUILD_ROOT/%{_libdir}/%{name}/%{version}
%if %{info}
./configure --disable-checking --prefix=%{_prefix} --enable-optimising
-make MAKE_PFA_FILES=1 all
-make -C mf/ pfa
+make all
# make info
make -C Documentation
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
-make prefix="$RPM_BUILD_ROOT%{_prefix}" infodir="$RPM_BUILD_ROOT%{_infodir}" MAKE_PFA_FILES=1 mandir="$RPM_BUILD_ROOT%{_mandir}" install
+make prefix="$RPM_BUILD_ROOT%{_prefix}" infodir="$RPM_BUILD_ROOT%{_infodir}" mandir="$RPM_BUILD_ROOT%{_mandir}" install
%if %{info}
rm -f $RPM_BUILD_ROOT/%{_infodir}/dir
(padding . 1.0)
(direction . 1)
(font-family . roman)
- (font-relative-size . -1)
+ (font-size . -2)
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(self-alignment-X . 1)
;; We must do this, other BFs in
;; paper16 become too small.
- (font-relative-size . -2)
+ (font-size . -4)
(font-magnification . 0.8)
(kern . 0.2)
(meta . ((interfaces . (text-interface rhythmic-grob-interface
. (
(molecule-callback . ,Text_item::brew_molecule)
(padding . 0.6)
- ;; (direction . -1)
(self-alignment-X . 0)
(self-alignment-Y . 0)
(script-priority . 100)
(font-family . number)
- (font-relative-size . -3)
+ (font-size . -4)
(font-shape . upright)
(meta . ((interfaces . (finger-interface font-interface text-script-interface text-interface side-position-interface self-alignment-interface item-interface ))))
))
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(self-alignment-X . 0)
- (break-align-symbol . time-signature)
(direction . 1)
(breakable . #t)
- (font-relative-size . 1)
+ (font-size . 2)
(font-family . roman)
(baseline-skip . 2)
(break-visibility . ,end-of-line-invisible)
(molecule-callback . ,Text_item::brew_molecule)
(font-shape . italic)
(padding . 0.4)
- (font-relative-size . -2)
+ (font-size . -4)
(font-family . roman)
(meta . ((interfaces . (text-interface self-alignment-interface side-position-interface font-interface item-interface ))))
))
(font-shape . italic)
(font-series . bold)
- (font-relative-size . -1)
+ (font-size . -2)
(meta . ((interfaces . (text-interface tuplet-bracket-interface font-interface spanner-interface))))
))
(height . 2.0) ; staffspace;
(minimum-space . 5)
(font-family . number)
- (font-relative-size . -2)
+ (font-size . -4)
(meta . ((interfaces . (volta-bracket-interface text-interface side-position-interface font-interface spanner-interface))))
))
## command -v doesn't work in zsh
## command -v "$1" 2>&1
## this test should work in ash, bash, pdksh (ksh), zsh
- type -p "$1" 2>/dev/null | tail -1 | awk '{print $NF}'
+ type -p "$1" 2>/dev/null | tail -n 1 | awk '{print $NF}'
])
# Get version string from executable ($1)
AC_DEFUN(STEPMAKE_GET_VERSION, [
- ## "$1" --version 2>&1 | grep -v '^$' | head -1 | awk '{print $NF}'
+ ## "$1" --version 2>&1 | grep -v '^$' | head -n 1 | awk '{print $NF}'
##
## ARG.
## Workaround for broken Debian gcc version string:
## Assume, and hunt for, dotted version multiplet.
changequote(<<, >>)dnl
- ("$1" --version || "$1" -V) 2>&1 | grep '[0-9]\.[0-9]' | head -1 | \
+ ("$1" --version || "$1" -V) 2>&1 | grep '[0-9]\.[0-9]' | head -n 1 | \
sed -e 's/.*[^-.0-9]\([0-9][0-9]*\.[0-9][.0-9]*\).*/\1/'
changequote([, ])dnl
])
# If you have such a setup, invoke this script as:
# autoconf=autoconf2.50 ./autogen.sh
for i in autoconf2.50 autoconf-2.50 autoconf false; do
- version=`$i --version 2>/dev/null | head -1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
+ version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
if test "0$version" -ge 250; then
autoconf=$i
break
echo "$name: huh 2?"
exit 1
fi
- LATEST=`cd $reldir; ls -t1 stepmake-*.tar.gz | head -1 | sed 's!stepmake-!!' | sed 's!.tar.gz!!'`
+ LATEST=`cd $reldir; ls -t1 stepmake-*.tar.gz | head -n 1 | sed 's!stepmake-!!' | sed 's!.tar.gz!!'`
# urg
latest=`echo $LATEST | sed 's/\.[a-zA-Z][a-zA-Z]*[0-9]*$//'`
latest_val=`value $latest`
default:
-chmod +w $(OUTFILE)
- head -1 $(INFILE) > $(OUTFILE)
+ head -n 1 $(INFILE) > $(OUTFILE)
echo "$(LINECOMMENT) WARNING WARNING WARNING" >> $(OUTFILE)
echo "$(LINECOMMENT) do not edit! this is $(OUTFILE), generated from $(INFILE)" >> $(OUTFILE)
cat $(INFILE) >> $(OUTFILE)
distclean cleaner than clean (duh)\n\
doc update all documentation\n\
release roll tarball and generate patch\n\
- rpm build rpm (Red Hat) package\n\
- rpm-mdk build rpm (Mandrake) packages\n\
- pfa-fonts build type1 fonts in mf/$(outdir)\n\
- install-pfa-fonts install type1 fonts in $(local_lilypond_datadir)/fonts/\n\
- po make new translation Portable Object database\n\
po make new translation Portable Object database\n\
po-replace do po-update and replace catalogs with msgmerged versions\n\
po-update update translation Portable Object database\n\