+pl 3.jcn1
+ - moved bracket vars to params
+ - reverted broken lilypond-devel
+
+pl 1.uu1
+ - David's patches:
+ * mfplain.mp detection
+ * Graphical_element::common_refpoint() robuster.
+ * fixes for mudela-mode.el
+ - Dirk's patches:
+ * key signature placement,
+ * tied accidentals.
+
+pl 1.hwn2
+ - extra-offset elt property.
+ - junked Chord_tremolo
+
pl 1.hwn1
- changed calling convention for {get,set,remove}_elt_property()
- rm'd some mutopia examples.
@mudelafile{dots.fly}
Multiple measure rests do not collide with barlines and clefs. They
-are not expanded when you set @code{Score.SkipBars}. Although the
+are not expanded when you set @code{Score.skipBars}. Although the
multi-measure-rest is a Spanner, minimum distances are set to keep it
colliding from barlines.
@mudelafile{tie.ly}
+When tieing notes with accidentals across a bar boundary, the
+accidental must not be drawn on the note in the new bar.
+Instead, the next note of the same pitch in this bar should always show the
+accidental (even if it's natural).
+Well, and slurring a accidentaled note to a natural one across bar
+boundaries should be explicit...
+
+@mudelafile{tie-accidental.ly}
+
Beams can be typeset over fixed distance aligned staffs, beam
beautification doesn't really work, but knees do. Beams should be
behave well, wherever the switching point is.
ctor_dict["Score_element"]->clone_func (orig);
ctor_dict["Score_element"]->create_func ();
-
+. * acc at tied note after linebreak.
. * note head on stem err msg in dutch.
. * why need to run -C mf twice?
-. * fix interstaff stuff
-. * junk BLURB files.
. * setting indent to 0 with \shape fails
. * here's no difference at all in output. When either is jacked up to 7.0,
everything works and matches up; when either is set just a bit above the
. * rerun profile
. * fix or replace feta-accordion.mf
. * script engraver
+. * bracket pdf hack
. * Chords:
. * Bass/inversion pitch when not part of Chord
Sometimes a series of changing chords will be blocked out over a static tone
. * make all Feta (including dynamics) available to the user in
textual scripts. Examples: "D.S. al \coda", "\mf espress.".
-. * ? -Q, --find-old-relative show all changes in relative syntax
-What's old about absolute to relative conversion? Could maybe use for
-abc2ly, midi2ly?
-
+. * Write scritp that uses --find-old-relative to do auto relativization.
. * Junk shared cruft (duration, moment) in lib/
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=1
-MY_PATCH_LEVEL=hwn1
+PATCH_LEVEL=2
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
#
# For now let people define these in their environments
#
- : ${MFPLAIN_MP='/usr/share/texmf/metapost/base/mfplain.mp'}
+ : ${MFPLAIN_MP=`kpsewhich mfplain.mp`}
: ${INIMETAPOST_FLAGS='-interaction=nonstopmode'}
rm -f mfput.*
}
-# . ./stepmake/bin/package-zet.sh
-sourcetree=`basename \`pwd\``
-(cd .. ; rm lilypond-devel ; showln -s $sourcetree lilypond-devel)
+. ./stepmake/bin/package-zet.sh
+#urg. LILYPOND_PREFIX, _SOURCEDIR, PATH, *INPUTS all broken
+#sourcetree=`basename \`pwd\``
+#(cd .. ; rm lilypond-devel ; showln -s $sourcetree lilypond-devel)
echo You should add the following to your profile script
#
# For now let people define these in their environments
#
- : ${MFPLAIN_MP='/usr/share/texmf/metapost/base/mfplain.mp'}
+ : ${MFPLAIN_MP=`kpsewhich mfplain.mp`}
: ${INIMETAPOST_FLAGS='-interaction=nonstopmode'}
rm -f mfput.*
--- /dev/null
+\include "paper16.ly"
+
+\score { \notes
+ \relative cis' {
+
+% \clef french; % same as octaviated bass
+\clef violin;
+\key cis \major; cis1 \key ces \major; ces
+\clef soprano;
+\key cis \major; cis \key ces \major; ces
+\clef mezzosoprano;
+\key cis \major; cis \key ces \major; ces
+\clef alto;
+\key cis \major; cis \key ces \major; ces
+\clef tenor;
+\key cis \major; cis \key ces \major; ces
+\clef baritone;
+\key cis \major; cis \key ces \major; ces
+\clef bass;
+\key cis \major; cis \key ces \major; ces
+}
+
+ \paper{\paper_sixteen}
+
+}
+
+%{
+
+Please don't use this Scheme hacking unless you have a good reason.
+Support for the \property textExtraOffset will not go into LilyPond in
+this form.
+
+I think extra-offset will stay - but perhaps I'll change the name
+
+%}
+
+
+#(set! generic-thread-properties
+ (append!
+ generic-thread-properties
+ (list
+ (cons "Text_item"
+ (list
+ (list 'textExtraOffset pair? 'extra-offset)
+ )
+ )
+ (cons "Script"
+ (list
+ (list 'scriptExtraOffset pair? 'extra-offset)
+ )
+ )
+ )
+))
+
+
+
\score {
\notes \context Voice <
\context Thread = TA { c'4_1 }
- \context Thread = TB { \property Thread.scriptHorizontal = "1"
- e'4-2-\trill }
+ \context Thread = TB {
+ \property Thread.scriptHorizontal = ##t
+ \property Thread.textExtraOffset = #'(-0.5 . -0.5)
+ \property Thread.scriptExtraOffset = #'(2.25 . -0.5)
+ e'4-2^\prall }
\context Thread = TC { g'4^4 }
>
}
\translator {
\ThreadContext
+ Generic_property_list = #generic-thread-properties
\consists Script_engraver;
\consists Text_engraver;
}
--- /dev/null
+
+\score { \notes
+ \relative cis' {
+
+\time 4/4;
+gis'2 gis ~ |
+gis gis4 gis |
+g2 gis ~ |
+gis g4 gis |
+g2 gis( |
+)g gis4 gis |
+}
#include "musical-request.hh"
#include "bar.hh"
#include "beam.hh"
-#include "chord-tremolo.hh"
#include "rest.hh"
#include "stem.hh"
#include "debug.hh"
{
end_beam ();
}
- else if (Chord_tremolo *b = dynamic_cast<Chord_tremolo*> (info.elem_l_))
- {
- end_beam ();
- }
else if (Bar *b = dynamic_cast<Bar *> (info.elem_l_))
{
end_beam ();
#include <math.h>
-#include "chord-tremolo.hh"
#include "beaming.hh"
#include "proto.hh"
#include "dimensions.hh"
If dir is not determined: up (see stem::get_default_dir ()) */
- Direction beam_dir;
+ Direction beam_dir = CENTER;
Direction neutral_dir = (Direction)(int)paper_l ()->get_var ("stem_default_neutral_direction");
SCM a = get_elt_property ("beam-dir-algorithm");
/*
Chord tremolo needs to beam over invisible stems of wholes
*/
- if (!dynamic_cast<Chord_tremolo*> (this))
+ SCM trem = get_elt_property ("chord-tremolo");
+ if (gh_boolean_p (trem) && gh_scm2bool (trem))
{
if (s->invisible_b ())
continue;
SCM symbol_list = SCM_EOL;
Array<Real> dists;
- SCM current_origin = ly_ch_C_to_scm ("");
+ SCM current_origin = ly_str02scm ("");
for (int i=0; i <= elems.size (); i++)
{
Score_element *next_elt = i < elems.size ()
next_origin = next_elt->get_elt_property ("origin");
next_origin =
(next_origin == SCM_UNDEFINED)
- ? ly_ch_C_to_scm ("")
+ ? ly_str02scm ("")
: next_origin;
}
else
- next_origin = ly_ch_C_to_scm ("begin-of-note");
+ next_origin = ly_str02scm ("begin-of-note");
SCM extra_space
= scm_eval (scm_listify (ly_symbol ("break-align-spacer"),
warning bells about missing Y refpoints go off later on.
*/
hg->set_parent (this, Y_AXIS);
- hg->set_elt_property ("origin", ly_ch_C_to_scm (it->name ()));
+ hg->set_elt_property ("origin", ly_str02scm (it->name ()));
pscore_l_->typeset_element (hg);
add_element_priority (hg, priority);
Chord_name_engraver::Chord_name_engraver ()
{
tonic_req_ = 0;
+ // bass_req_ = 0;
}
void
tonic_req_ = t;
return true;
}
+#if 0
+ if (Bass_req* b = dynamic_cast<Bass_req*> (m))
+ {
+ bass_req_ = b;
+ return true;
+ }
+#endif
+
return false;
}
/*
- abbreviation-beam-engraver.cc -- implement Chord_tremolo_engraver
+ chord-tremolo-engraver.cc -- implement Chord_tremolo_engraver
source file of the GNU LilyPond music typesetter
#include "time-description.hh"
#include "chord-tremolo-engraver.hh"
#include "stem.hh"
-#include "chord-tremolo.hh"
+#include "beam.hh"
#include "musical-request.hh"
#include "misc.hh"
#include "warn.hh"
prev_start_req_ = reqs_drul_[START];
- abeam_p_ = new Chord_tremolo;
+ abeam_p_ = new Beam;
+ abeam_p_->set_elt_property ("chord-tremolo", SCM_BOOL_T);
+
announce_element (Score_element_info (abeam_p_, reqs_drul_[LEFT]));
}
}
+++ /dev/null
-/*
- abbreviation-beam.cc -- implement Chord_tremolo
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "paper-column.hh"
-#include "array.hh"
-#include "proto.hh"
-#include "chord-tremolo.hh"
-#include "misc.hh"
-#include "debug.hh"
-
-#include "molecule.hh"
-#include "leastsquares.hh"
-#include "stem.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-#include "stem-info.hh"
-
-
-
-
-Chord_tremolo::Chord_tremolo ()
- : Beam ()
-{
-}
-
-Molecule*
-Chord_tremolo::do_brew_molecule_p () const
-{
- return Beam::do_brew_molecule_p ();
-}
-
-void
-Chord_tremolo::do_print () const
-{
-#ifndef NPRINT
- Beam::do_print ();
- Spanner::do_print ();
-#endif
-}
-
-/*
- beams to go with one stem.
- */
-Molecule
-Chord_tremolo::stem_beams (Stem *here, Stem *next, Stem *prev) const
-{
- /*
- todo
- - shorter beams (not reaching outer "stems")
- for [:16 c4 c4] and [:16 c1 c1]
- - centered beam on [:16 c1 c1] heads, rather than "stems"
- */
- return Beam::stem_beams (here, next, prev);
-}
Real w = extent (X_AXIS).length ();
w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
- Real h = paper_l ()->get_var ("extender-height");
+ Real h = paper_l ()->get_var ("extender_height");
Molecule a = lookup_l ()->filledbox ( Box (Interval (0,w), Interval (0,h)));
a.translate (Offset (dx_f_drul_[LEFT], 0));
Graphical_element *
Graphical_element::common_refpoint (Graphical_element const* s, Axis a) const
{
- return (dim_cache_[a]->common_refpoint (s->dim_cache_[a])) ->element_l ();
+ Dimension_cache *dim = dim_cache_[a]->common_refpoint (s->dim_cache_[a]);
+ if (!dim)
+ programming_error ("No common reference point");
+ return dim ? dim->element_l () : 0;
}
void
w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
- Real th = paper_l ()->get_var ("hyphen-thickness");
- Real h = paper_l ()->get_var ("hyphen-height");
+ Real th = paper_l ()->get_var ("hyphen_thickness");
+ Real h = paper_l ()->get_var ("hyphen_height");
// UGH. First try: just make the hyphen take 1/3 of the available space
// for length, use a geometric mean of the available space and some minimum
- Real l = paper_l ()->get_var ("hyphen-minimum-length");
+ Real l = paper_l ()->get_var ("hyphen_minimum_length");
if(l < w)
l = sqrt(l*w);
Molecule a = lookup_l ()->filledbox ( Box (Interval ((w-l)/2,(w+l)/2), Interval (h,h+th)));
/**
Generate an abbreviation beam. Eat stems.
+
+ UGH. Derive me from Beam_engraver.
+
*/
class Chord_tremolo_engraver : public Engraver
{
void typeset_beam ();
Drul_array<Chord_tremolo_req*> reqs_drul_;
Chord_tremolo_req* prev_start_req_;
- Chord_tremolo* abeam_p_;
- Chord_tremolo* finished_abeam_p_;
+ Beam* abeam_p_;
+ Beam* finished_abeam_p_;
};
#endif // Chord_tremolo_ENGRAVER_HH
direction */
class Chord_tremolo : public Beam {
public:
-
-
- Chord_tremolo();
-
VIRTUAL_COPY_CONS(Score_element);
protected:
- virtual void do_print() const;
virtual Molecule stem_beams (Stem *here, Stem *next, Stem *prev) const;
- virtual Molecule* do_brew_molecule_p() const;
};
+#error
#endif // Chord_tremolo_HH
#include <libguile.h>
#include "direction.hh"
-SCM ly_ch_C_to_scm (char const*c);
+SCM ly_str02scm (char const*c);
SCM ly_ch_C_eval_scm (char const*c);
SCM ly_symbol (String name);
String symbol_to_string (SCM);
Molecule fill (Box b) const;
Molecule filledbox (Box b) const;
Molecule hairpin (Real width, Real height, Real thick, bool decresc, bool continued) const;
- Molecule tuplet_bracket (Real dy, Real dx, Real gap, Real thick,Real interline, Direction dir) const;
+ Molecule tuplet_bracket (Real dy, Real dx, Real gap, Real thick,Real height, Direction dir) const;
Molecule rest (int, bool outside, String) const;
Molecule accordion (SCM arg, Real interline_f) const;
Molecule slur (Array<Offset> controls, Real thick) const;
Molecule text (String style, String text, Paper_def*) const;
Molecule staff_brace (Real dy, int) const;
- Molecule staff_bracket (Real dy) const;
+ Molecule staff_bracket (Real height, Paper_def* paper_l) const;
Molecule volta (Real h, Real w, Real thick, bool vert_start, bool vert_end) const;
Molecule special_time_signature (String, int,int, Paper_def*) const;
Molecule time_signature (int n,int d, Paper_def*) const;
{
p -= 7; /* Typeset below c_position */
}
+ /* Provide for the four cases in which there's a glitch */
+ /* it's a hack, but probably not worth */
+ /* the effort of finding a nicer solution. dl. */
+ if (get_c_position ()==2 && a>0 && p==3)
+ p -= 7;
+ if (get_c_position ()==-3 && a>0 && p==-1)
+ p += 7;
+ if (get_c_position ()==-4 && a<0 && p==-1)
+ p += 7;
+ if (get_c_position ()==-2 && a<0 && p==-3)
+ p += 7;
return p + get_c_position ();
}
}
}
<chords,notes>{RESTNAME} {
const char *s = YYText ();
- yylval.scm = ly_ch_C_to_scm (s);
+ yylval.scm = ly_str02scm (s);
return RESTNAME;
}
<chords,notes>R {
/* yylval is union. Must remember STRING before setting SCM*/
String *sp = yylval.string;
- yylval.scm = ly_ch_C_to_scm (sp->ch_C ());
+ yylval.scm = ly_str02scm (sp->ch_C ());
delete sp;
return STRING;
}
if (c == '{' && c == '}') // brace open is for not confusing dumb tools.
here_input ().warning (
"Brace found at end of lyric. Did you forget a space?");
- yylval.scm = ly_ch_C_to_scm (s.ch_C ());
+ yylval.scm = ly_str02scm (s.ch_C ());
DEBUG_OUT << "lyric : `" << s << "'\n";
return STRING;
String msg (_f ("unknown escaped string: `\\%s'", str));
LexerError (msg.ch_C ());
DEBUG_OUT << "(string)";
- yylval.scm = ly_ch_C_to_scm(str.ch_C());
+ yylval.scm = ly_str02scm(str.ch_C());
return STRING;
}
}
}
- yylval.scm = ly_ch_C_to_scm (str.ch_C());
+ yylval.scm = ly_str02scm (str.ch_C());
return STRING;
}
#include "debug.hh"
SCM
-ly_ch_C_to_scm (char const*c)
+ly_str02scm (char const*c)
{
// this all really sucks, guile should take char const* arguments!
return gh_str02scm ((char*)c);
Simple_file_storage f(s);
- return ly_ch_C_to_scm (f.ch_C());
+ return ly_str02scm (f.ch_C());
}
void
Item * support_l = support_l_arr_[i];
Note_req * note_l = mel_l_arr_[i];
- if (tied_l_arr_.find_l (support_l) &&
- !note_l->forceacc_b_)
- {
- if (!forget)
- local_key_.set (note_l->pitch_);
- continue;
- }
-
+ if (tied_l_arr_.find_l (support_l) && !forget)
+ local_key_.set (note_l->pitch_);
+
if (!note_l->forceacc_b_
&& local_key_.different_acc (note_l->pitch_))
continue;
announce_element (Score_element_info (key_item_p_, 0));
}
-
key_item_p_->add_pitch (note_l->pitch_,
- note_l->cautionary_b_);
+ note_l->cautionary_b_);
key_item_p_->add_support (support_l);
if (!forget)
{
/*
don't want people relying on this kind of dimension.
- */
+ */
m.set_empty (false);
return m;
}
Lookup::bar (String str, Real h, Paper_def *paper_l) const
{
if (str == "bracket")
- return staff_bracket (h);
+ return staff_bracket (h, paper_l);
else if (str == "brace")
{
Real staffht = paper_l->get_var ("staffheight");
Molecule m;
Atom at
- (gh_list (gh_symbol2scm ("beam"),
- gh_double2scm (width),
- gh_double2scm (slope),
- gh_double2scm (thick),
- SCM_UNDEFINED));
+ (gh_list (gh_symbol2scm ("beam"),
+ gh_double2scm (width),
+ gh_double2scm (slope),
+ gh_double2scm (thick),
+ SCM_UNDEFINED));
m.dim_[X_AXIS] = Interval (0, width);
m.dim_[Y_AXIS] = Interval (min_y, max_y);
Atom at (gh_list (gh_symbol2scm ("text"),
- ly_ch_C_to_scm (text.ch_C()),
+ ly_str02scm (text.ch_C()),
SCM_UNDEFINED));
at.font_ = ly_symbol (style);
at.magn_ = gh_int2scm (font_mag);
{
Molecule m;
/*
- (define (pianobrace y staffht)
+ (define (pianobrace y staffht)
(let* ((step 1.0)
- (minht (* 2 staffht))
- (maxht (* 7 minht))
- )
- (string-append
- (select-font (string-append "feta-braces" (number->string (inexact->exact staffht))) 0)
- (char (max 0 (/ (- (min y (- maxht step)) minht) step))))
- )
+ (minht (* 2 staffht))
+ (maxht (* 7 minht))
+ )
+ (string-append
+ (select-font (string-append "feta-braces" (number->string (inexact->exact staffht))) 0)
+ (char (max 0 (/ (- (min y (- maxht step)) minht) step))))
+ )
)
*/
Molecule m;
String hairpin = String (decresc ? "de" : "") + "crescendo";
- Atom at (gh_list (ly_symbol ("hairpin"),
+ Atom at (gh_list (ly_symbol (hairpin),
gh_double2scm (thick),
gh_double2scm (width),
gh_double2scm (height),
}
Molecule
-Lookup::tuplet_bracket (Real dy , Real dx, Real thick, Real gap, Real interline_f, Direction dir) const
+Lookup::tuplet_bracket (Real dy , Real dx, Real thick, Real gap,
+ Real height, Direction dir) const
{
Molecule m;
Atom at (gh_list(gh_symbol2scm ("tuplet"),
- gh_double2scm (interline_f),
+ gh_double2scm (height),
gh_double2scm (gap),
gh_double2scm (dx),
gh_double2scm (dy),
}
Molecule
-Lookup::staff_bracket (Real y) const
+Lookup::staff_bracket (Real height, Paper_def* paper_l) const
{
- Molecule m;
+ Molecule m;
Atom at ( gh_list (gh_symbol2scm ("bracket"),
- gh_double2scm (y),
- SCM_UNDEFINED));
+ gh_double2scm (paper_l->get_var("bracket_arch_angle")),
+ gh_double2scm (paper_l->get_var("bracket_arch_width")),
+ gh_double2scm (paper_l->get_var("bracket_arch_height")),
+ gh_double2scm (paper_l->get_var("bracket_width")),
+ gh_double2scm (height),
+ gh_double2scm (paper_l->get_var("bracket_arch_thick")),
+ gh_double2scm (paper_l->get_var("bracket_thick")),
+ SCM_UNDEFINED));
+
m.add_atom (&at);
- m.dim_[Y_AXIS] = Interval (-y/2,y/2);
+ m.dim_[Y_AXIS] = Interval (-height/2,height/2);
m.dim_[X_AXIS] = Interval (0,4 PT);
m.translate_axis (- 4. / 3. * m.dim_[X_AXIS].length (), X_AXIS);
{
create_items (mark_req_l_);
text_p_->text_str_ = mark_req_l_->str_;
- SCM st = gh_str02scm ((text_p_->text_str_.index_any_i ("0123456789") >= 0 )
+ SCM st = ly_str02scm ((text_p_->text_str_.index_any_i ("0123456789") >= 0 )
? "mark" : "large");
text_p_->set_elt_property ("style", st);
}
mmrest_p_ = new Multi_measure_rest;
if(dynamic_cast<Repetitions_req *> (multi_measure_req_l_))
mmrest_p_->set_elt_property ("alt-symbol",
- ly_ch_C_to_scm ("scripts-repeatsign"));
+ ly_str02scm ("scripts-repeatsign"));
announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
start_measure_i_ = time->bars_i_;
}
}
SCM args_scm =
- gh_list (ly_ch_C_to_scm (creator.ch_l ()),
- ly_ch_C_to_scm (generate.ch_l ()), SCM_UNDEFINED);
+ gh_list (ly_str02scm (creator.ch_l ()),
+ ly_str02scm (generate.ch_l ()), SCM_UNDEFINED);
#ifndef NPRINT
DEBUG_OUT << "output_header\n";
if (i->font_)
{
output_scheme (gh_list (ly_symbol ("select-font"),
- ly_ch_C_to_scm (symbol_to_string (i->font_).ch_C()),
+ ly_str02scm (symbol_to_string (i->font_).ch_C()),
SCM (i->magn_),
SCM_UNDEFINED));
}
{
SCM scm = gh_list (ly_symbol ("font-def"),
gh_int2scm (i),
- ly_ch_C_to_scm (str.ch_l ()),
+ ly_str02scm (str.ch_l ()),
SCM_UNDEFINED);
output_scheme (scm);
{
SCM scm = gh_list (ly_symbol ("lily-def"),
- ly_ch_C_to_scm (k.ch_l ()),
- ly_ch_C_to_scm (to_str(v).ch_l ()),
+ ly_str02scm (k.ch_l ()),
+ ly_str02scm (to_str(v).ch_l ()),
SCM_UNDEFINED);
output_scheme (scm);
{
SCM scm = gh_list (ly_symbol ("lily-def"),
- ly_ch_C_to_scm (k.ch_l ()),
- ly_ch_C_to_scm (v.ch_l ()),
+ ly_str02scm (k.ch_l ()),
+ ly_str02scm (v.ch_l ()),
SCM_UNDEFINED);
output_scheme (scm);
- gh_define (k.ch_l (), ly_ch_C_to_scm (v.ch_l ()));
+ gh_define (k.ch_l (), ly_str02scm (v.ch_l ()));
}
void
Paper_outputter::output_int_def (String k, int v)
{
SCM scm = gh_list (ly_symbol ("lily-def"),
- ly_ch_C_to_scm (k.ch_l ()),
- ly_ch_C_to_scm (to_str (v).ch_l ()),
+ ly_str02scm (k.ch_l ()),
+ ly_str02scm (to_str (v).ch_l ()),
SCM_UNDEFINED);
output_scheme (scm);
int_identifier *i = dynamic_cast<int_identifier*> (id);
SCM v;
- if (s) v = ly_ch_C_to_scm (s->access_content_String (false)->ch_C());
+ if (s) v = ly_str02scm (s->access_content_String (false)->ch_C());
if (i) v = gh_int2scm (*i->access_content_int (false));
if (r) v = gh_double2scm (*r->access_content_Real (false));
if (!s && !i && !r)
$$ = $1;
}
| STRING_IDENTIFIER {
- $$ = ly_ch_C_to_scm ($1->access_content_String (true)->ch_C ());
+ $$ = ly_str02scm ($1->access_content_String (true)->ch_C ());
}
| string '+' string {
$$ = scm_string_append (scm_listify ($1, $3, SCM_UNDEFINED));
output_p_ = do_brew_molecule_p ();
Offset o (relative_coordinate (0, X_AXIS), relative_coordinate (0, Y_AXIS));
+
+ SCM s = get_elt_property ("extra-offset");
+ if (gh_pair_p (s))
+ {
+ Real il = paper_l ()->get_var ("interline");
+ o[X_AXIS] += il * gh_scm2double (gh_car (s));
+ o[Y_AXIS] += il * gh_scm2double (gh_cdr (s));
+ }
pscore_l_->outputter_l_->output_molecule (output_p_,
o,
text->text_str_ = r->text_str_;
if (r->style_str_.length_i ())
- text->set_elt_property ("style", ly_ch_C_to_scm (r->style_str_.ch_C()));
+ text->set_elt_property ("style", ly_str02scm (r->style_str_.ch_C()));
SCM empty = get_property ("textEmptyDimension", 0);
if (gh_boolean_p (empty) && gh_scm2bool (empty))
num.translate_axis (dy/2, Y_AXIS);
- Real thick = paper_l ()->get_var ("tuplet-thick");
+ Real thick = paper_l ()->get_var ("tuplet_thick");
if (bracket_visibility)
{
Real gap = paper_l () -> get_var ("tuplet_spanner_gap");
Real interline_f = paper_l ()->get_var ("interline");
Real internote_f = interline_f/2;
- Real t = paper_l ()->get_var ("volta-thick");
+ Real t = paper_l ()->get_var ("volta_thick");
Real dx = internote_f;
Real w = extent (X_AXIS).length () - dx - get_broken_left_end_align ();
interbeam = (2.0 * \interline + \stafflinethickness - \beam_thickness) / 2.0;
interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0;
-#'beam-thickness = \beam_thickness ; % ARG.
% stems and beams
% * MEAN : mean centre distance of all notes
% * MEDIAN : mean centre distance weighted per note
%
-% enum Dir_algorithm { DOWN=-1, UP=1, MAJORITY=2, MEAN, MEDIAN };
-%
-DOWN = -1.0;
-UP = 1.0;
-MAJORITY = 2.0;
-MEAN = 3.0;
-MEDIAN = 4.0;
-#'Beam::beam-dir-algorithm = #'majority
-#'Beam::slope-quantisation = #'normal
+#'slope-quantisation = #'normal
+#'beam-dir-algorithm = #'majority %urg.
%{
barthick_thin = 1.6*\stafflinethickness;
barthick_score = 1.6*\stafflinethickness;
+bracket_arch_thick = \interline / 3.0;
+bracket_width = 2.0 * \interline;
+bracket_thick = 2.0 * \stafflinethickness;
+bracket_arch_height = 1.5 * \interline;
+bracket_arch_width = \bracket_arch_height;
+bracket_arch_angle = 50.0;
+
tuplet_spanner_gap = 2.0 * \interline;
tuplet_thick = 1.0*\stafflinethickness;
volta_thick = 1.6*\stafflinethickness;
BuildRoot: /tmp/lilypond-install
Prereq: tetex
-%description
-@BLURB@
+%description
+LilyPond is a music typesetter. It produces beautiful
+sheet music using a high level description file as input. LilyPond is
+part of the GNU Project.
+
%package documentation
Summary: Prebuilt website containing all LilyPond documentation.
# BuildArchitectures: noarch
%description documentation
-@BLURB@
+
The documentation of LilyPond, both in HTML and PostScript.
Begin3
Title: LilyPond
-Version: 1.3.1
-Entered-date: 28OCT99
+Version: 1.3.2
+Entered-date: 01NOV99
Description:
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.1.tar.gz
+ 1000k lilypond-1.3.2.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.1.tar.gz
+ 1000k lilypond-1.3.2.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.3.1
+Version: 1.3.2
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.1.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.2.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>
BuildRoot: /tmp/lilypond-install
Prereq: tetex
-%description
+%description
+LilyPond is a music typesetter. It produces beautiful
+sheet music using a high level description file as input. LilyPond is
+part of the GNU Project.
%package documentation
;; * fontlock: \melodic \melodic
;;
+(defconst mu-version "1.2.16-dk1"
+ "`mudela-mode' version number.")
+
+(defconst mu-help-address "hanwen@cs.uu.nl"
+ "Address accepting submission of bug reports.")
+
(defconst mudela-font-lock-keywords
(let* ((keywords '("spanrequest" "simultaneous" "sequential" "accepts"
"alternative" "bar" "breathe"
(defvar mu-mode-map ()
"Keymap used in `mudela-mode' buffers.")
-(defun mu-newline-and-indent ()
- (interactive)
- (newline)
- (indent-relative-maybe)
- "Newline and copy previous indentation")
-
(if mu-mode-map
()
(setq mu-mode-map (make-sparse-keymap))
-
- (mapcar (function (lambda (key)
- (define-key
- mu-mode-map key 'mu-newline-and-indent)))
- (where-is-internal 'newline-and-indent))
-
- (mapcar (function
- (lambda (x)
- (define-key mu-mode-map (car x) (cdr x))))
- '(("\C-c\C-c" . mu-foo-bar)
- ))
- ;; should do all keybindings this way
- (define-key mu-mode-map [RET] 'mu-newline-and-indent)
+ ;; (define-key mu-mode-map "\C-c\C-c" 'mu-foo-bar)
)
(defvar mu-mode-syntax-table nil
)
-(defconst mu-blank-or-comment-re "[ \t]*\\($\\|%\\)"
- "Regexp matching blank or comment lines.")
-
(defconst mu-imenu-generic-re "^\\([a-zA-Z_][a-zA-Z0-9_]*\\) *="
"Regexp matching Identifier definitions.")
(defun mudela-mode ()
"Major mode for editing Mudela files."
-
(interactive)
;; set up local variables
(kill-all-local-variables)
+
(make-local-variable 'font-lock-defaults)
+ (setq font-lock-defaults '(mudela-font-lock-keywords))
+
(make-local-variable 'paragraph-separate)
+ (setq paragraph-separate "^[ \t]*$")
+
(make-local-variable 'paragraph-start)
- (make-local-variable 'require-final-newline)
+ (setq paragraph-start "^[ \t]*$")
+
(make-local-variable 'comment-start)
+ (setq comment-start "%")
+
+ (make-local-variable 'comment-start-skip)
+ (setq comment-start-skip "%{? *")
+
+ (make-local-variable 'comment-end)
+ (setq comment-end "\n")
+
(make-local-variable 'block-comment-start)
+ (setq block-comment-start "%{")
+
(make-local-variable 'block-comment-end)
+ (setq block-comment-end "%}")
+
+ ;; (make-local-variable 'comment-column)
+ ;; (setq comment-column 40)
- (setq comment-end "\n"
- comment-start "%"
- comment-start-skip "%{? *"
- block-comment-start "%{"
- block-comment-end "%}"
- )
- (make-local-variable 'comment-end)
- (make-local-variable 'comment-start-skip)
- (setq comment-start-skip "%{") ;??
- (make-local-variable 'comment-column)
(make-local-variable 'imenu-generic-expression)
(setq imenu-generic-expression mu-imenu-generic-expression)
+
(make-local-variable 'indent-line-function)
+ (setq indent-line-function 'indent-relative-maybe)
;;
(set-syntax-table mu-mode-syntax-table)
- (setq major-mode 'mudela-mode
- mode-name "Mudela"
- local-abbrev-table mudela-mode-abbrev-table
- font-lock-defaults '(mudela-font-lock-keywords)
- paragraph-separate "^[ \t]*$"
- paragraph-start "^[ \t]*$"
- require-final-newline t
- comment-column 40
- indent-line-function 'indent-relative-maybe
- )
+ (setq major-mode 'mudela-mode)
+ (setq mode-name "Mudela")
+ (setq local-abbrev-table mudela-mode-abbrev-table)
(use-local-map mu-mode-map)
;; run the mode hook. mu-mode-hook use is deprecated
- (run-hooks 'mudela-mode-hook)
-)
+ (run-hooks 'mudela-mode-hook))
(defun mu-keep-region-active ()
(setq zmacs-region-stays t)))
-(defun mu-comment-region (beg end &optional arg)
- "Like `comment-region' but uses double hash (`#') comment starter."
- (interactive "r\nP")
- (let ((comment-start mu-block-comment-prefix))
- (comment-region beg end arg)))
+;;(defun mu-comment-region (beg end &optional arg)
+;; "Like `comment-region' but uses double hash (`#') comment starter."
+;; (interactive "r\nP")
+;; (let ((comment-start mu-block-comment-prefix))
+;; (comment-region beg end arg)))
\f
-(defconst mu-version "0.0.1"
- "`mudela-mode' version number.")
-(defconst mu-help-address "hanwen@cs.uu.nl"
- "Address accepting submission of bug reports.")
-
(defun mu-version ()
"Echo the current version of `mudela-mode' in the minibuffer."
(interactive)
s1 |
f!16 s16*3 b, s16*3 s2 |
s1 |
- \property Voice.slurVerticalDirection=1
+ \slurdown
s4 e [dis8 ~ dis32 e( fis gis] [a b c d! c b c )a] |
- \property Voice.slurVerticalDirection=0
+ \slurboth
%10
s2 <a8 c,> s8 s4 |
<b8 gis,> s8 s4 <e,8 a,> s8 s4 |
f'4 s s |
s2.*2
%21
- \property Voice.slurVerticalDirection=1
+ \slurup
f16 c'(bes a g f es d )es c' f, es |
- \property Voice.slurVerticalDirection=0
+ \slurboth
bes4 s s
s2.*9
s2 s8.
\skip 2.*1;
\slurdotted
\skip 2.*14;
- \property Voice.textEmptyDimension = 1
+ \emptyText
s2._"Fine"
}
}
\skip 2.*1;
\slurdotted
\skip 2.*14;
- \property Voice.textEmptyDimension = 1
+ \emptyText
s2._"Menuetto I da Capo"
}
\skip 2.*3;
\clef alto;
\skip 2.*11;
- \property Voice.textEmptyDimension = 1
+ \emptyText
s2._"Fine"
}
}
\skip 2.*1;
\slurdotted
\skip 2.*14;
- \property Voice.textEmptyDimension = 1
+ \emptyText
s2._"Menuetto I da Capo"
}
}
\version "1.2.13";
-\include "nederlands.ly" % for correct parsing of note names
-
global = \notes {
\key c \minor;
- \time 4/4;
- \property Staff.timeSignatureStyle = "C"
- \skip 1*31;
- \bar "|."; |
}
dux = \context Voice=two \notes \relative c''{
\voicetwo
\clef violin;
- \property Voice.verticalDirection = "-1"
-
r8 c16 b c8 g as c16 b c8 d |
g, c16 b c8 d f,16 g as4 g16 f |
es c' b a g f! es d c8 es' d c |
\context PianoStaff <
\context Staff = treble <
- \global
\dux
- \comes
+ { \comes \bar "|."; }
+ \time 4/4;
+ \property Score.timeSignatureStyle = "C"
>
\context Staff = bass <
\global
%
%
%
-/half_bracket
+/half_bracket
{
%6
0 0
%5a
- bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
- bracket_alpha bracket_v -0.15 mul bracket_traject
+ arch_thick arch_height add half_height bracket_thick sub arch_width add
+ arch_angle arch_height -0.15 mul bracket_traject
%5b
- 1 bracket_h
- 0 bracket_v 0.5 mul bracket_traject
+ 1 half_height
+ 0 arch_height 0.5 mul bracket_traject
%5c
- 0 bracket_h
+ 0 half_height
%4a
- bracket_b bracket_h bracket_t sub
- 0 bracket_v 0.4 mul bracket_traject
+ arch_thick half_height bracket_thick sub
+ 0 arch_height 0.4 mul bracket_traject
%4b
- bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
- bracket_alpha bracket_v -0.25 mul bracket_traject
+ arch_thick arch_height add half_height bracket_thick sub arch_width add
+ arch_angle arch_height -0.25 mul bracket_traject
%4c
- bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+ arch_thick arch_height add half_height bracket_thick sub arch_width add
%3
- bracket_b bracket_h bracket_t sub
+ arch_thick half_height bracket_thick sub
%2
- bracket_b 0
+ arch_thick 0
%1
0 0
} bind def
grestore
} bind def
%
-/draw_bracket % height
+/draw_bracket % arch_angle arch_width arch_height bracket_width bracket_height arch_thick bracket_thick
{
- 2 div bracket_b add /bracket_h exch def
- bracket_t setlinewidth
+ % urg
+ /bracket_thick exch def
+ /arch_thick exch def
+ /bracket_height exch def
+ /bracket_width exch def
+ /arch_height exch def
+ /arch_width exch def
+ /arch_angle exch def
+%
+ bracket_height 2 div arch_thick add /half_height exch def
% urg: the only Level-2 PS, check effect in print
% true setstrokeadjust
1 setlinecap
(define space-alist
'(
- (("" "Clef_item") . (minimum_space 1.0))
- (("" "Staff_bar") . (minimum_space 0.0))
- (("" "Clef_item") . (minimum_space 1.0))
- (("" "Key_item") . (minimum_space 0.5))
- (("" "Span_bar") . (extra_space 0.0))
- (("" "Time_signature") . (extra_space 0.0))
- (("" "begin-of-note") . (minimum_space 1.5))
- (("Clef_item" "Key_item") . (minimum_space 4.0))
- (("Key_item" "Time_signature") . (extra_space 1.0))
- (("Clef_item" "Time_signature") . (minimum_space 3.5))
- (("Staff_bar" "Clef_item") . (minimum_space 1.0))
- (("Clef_item" "Staff_bar") . (minimum_space 3.7))
- (("Time_signature" "Staff_bar") . (minimum_space 2.0))
- (("Key_item" "Staff_bar") . (extra_space 1.0))
- (("Span_bar" "Clef_item") . (extra_space 1.0))
- (("Clef_item" "Span_bar") . (minimum_space 3.7))
- (("Time_signature" "Span_bar") . (minimum_space 2.0))
- (("Key_item" "Span_bar") . (minimum_space 2.5))
- (("Staff_bar" "Time_signature") . (minimum_space 1.5)) ;double check this.
- (("Time_signature" "begin-of-note") . (extra_space 2.0)) ;double check this.
- (("Key_item" "begin-of-note") . (extra_space 2.5))
- (("Staff_bar" "begin-of-note") . (extra_space 1.0))
- (("Clef_item" "begin-of-note") . (minimum_space 5.0))
- (("" "Breathing_sign") . (minimum_space 0.0))
- (("Breathing_sign" "Key_item") . (minimum_space 1.5))
- (("Breathing_sign" "begin-of-note") . (minimum_space 1.0))
- (("Breathing_sign" "Staff_bar") . (minimum_space 1.5))
- (("Breathing_sign" "Clef_item") . (minimum_space 2.0))
+ (("" "Clef_item") . (minimum-space 1.0))
+ (("" "Staff_bar") . (minimum-space 0.0))
+ (("" "Clef_item") . (minimum-space 1.0))
+ (("" "Key_item") . (minimum-space 0.5))
+ (("" "Span_bar") . (extra-space 0.0))
+ (("" "Time_signature") . (extra-space 0.0))
+ (("" "begin-of-note") . (minimum-space 1.5))
+ (("Clef_item" "Key_item") . (minimum-space 4.0))
+ (("Key_item" "Time_signature") . (extra-space 1.0))
+ (("Clef_item" "Time_signature") . (minimum-space 3.5))
+ (("Staff_bar" "Clef_item") . (minimum-space 1.0))
+ (("Clef_item" "Staff_bar") . (minimum-space 3.7))
+ (("Time_signature" "Staff_bar") . (minimum-space 2.0))
+ (("Key_item" "Staff_bar") . (extra-space 1.0))
+ (("Span_bar" "Clef_item") . (extra-space 1.0))
+ (("Clef_item" "Span_bar") . (minimum-space 3.7))
+ (("Time_signature" "Span_bar") . (minimum-space 2.0))
+ (("Key_item" "Span_bar") . (minimum-space 2.5))
+ (("Staff_bar" "Time_signature") . (minimum-space 1.5)) ;double check this.
+ (("Time_signature" "begin-of-note") . (extra-space 2.0)) ;double check this.
+ (("Key_item" "begin-of-note") . (extra-space 2.5))
+ (("Staff_bar" "begin-of-note") . (extra-space 1.0))
+ (("Clef_item" "begin-of-note") . (minimum-space 5.0))
+ (("" "Breathing_sign") . (minimum-space 0.0))
+ (("Breathing_sign" "Key_item") . (minimum-space 1.5))
+ (("Breathing_sign" "begin-of-note") . (minimum-space 1.0))
+ (("Breathing_sign" "Staff_bar") . (minimum-space 1.5))
+ (("Breathing_sign" "Clef_item") . (minimum-space 2.0))
)
)
(if entry
(cdr entry)
(begin (ly-warn (string-append "Unknown spacing pair `" this "', `" next "'"))
- '(minimum_space 0.0)))))
+ '(minimum-space 0.0)))))
(define (beam width slope thick)
(embedded-ps ((ps-scm 'beam) width slope thick)))
- (define (bracket h)
- (embedded-ps ((ps-scm 'bracket) h)))
+ (define (bracket arch_angle arch_width arch_height width height arch_thick thick)
+ (embedded-ps ((ps-scm 'bracket) arch_angle arch_width arch_height width height arch_thick thick)))
(define (dashed-slur thick dash l)
(embedded-ps ((ps-scm 'dashed-slur) thick dash l)))
(regexp-substitute/global #f "\\\\" s 'pre "$\\backslash$" 'post)
s))
-
(define (lily-def key val)
(string-append
"\\def\\"
(string-append
(numbers->string (list width slope thick)) " draw_beam" ))
- (define (bracket h)
- (invoke-dim1 " draw_bracket" h))
+ (define (bracket arch_angle arch_width arch_height width height arch_thick thick)
+ (string-append
+ (numbers->string (list arch_angle arch_width arch_height width height arch_thick thick)) " draw_bracket" ))
(define (char i)
(invoke-char " show" i))
#
# For now let people define these in their environments
#
- : ${MFPLAIN_MP='/usr/share/texmf/metapost/base/mfplain.mp'}
+ : ${MFPLAIN_MP=`kpsewhich mfplain.mp`}
: ${INIMETAPOST_FLAGS='-interaction=nonstopmode'}
rm -f mfput.*
# and create links to here, if necessary
#
sourcetree=`basename \`pwd\``
-(cd ..; rm -f $package 2>&1 > /dev/null)
-(cd ..; ln -s $sourcetree $package)
+if [ "xsourcetree" != "x$package" ]; then
+ (cd ..; rm -f $package 2>&1 > /dev/null)
+ (cd ..; ln -s $sourcetree $package)
+fi
#
if [ ! -r $sources ]; then
(cd ..; ln -s `pwd` $sources)
% note the ! sign. See dvips.info for details.
%
-% ARG. Fix brackets
\def\turnOnPostScript{%
% This sets CTM so that you get to the currentpoint
% by executing a 0 0 moveto
\def\embeddedps##1{%
\special{ps: @beginspecial @setspecial ##1 @endspecial}
}
- %
- \special{!
-/stafflinethickness \mudelapaperstafflinethickness\space def
-/interline \mudelapaperinterline\space def
-interline 3 div /bracket_b exch def
-interline 2 mul /bracket_w exch def
-stafflinethickness 2 mul /bracket_t exch def
-interline 1.5 mul /bracket_v exch def
-bracket_v /bracket_u exch def
-50 /bracket_alpha exch def
-1 setlinecap}
}
\def\turnOnExperimentalFeatures{}