+
+pl 23.ms2
+ - property noteheadStyle
+ - first attempt to make harmonics : see input/test/harmonics.fly
+
+pl 23.ms1
+ - sinfonia.ly: several fixes
+ - dynamics
+ * increased range pppppp to ffffff
+ * added sp, spp, sff, rfz
+ * example see input/test/tchaikovsky.ly
+ * updated dynamics in refman
+
+
+pl 24.jcn2
+ - website fixes
+ - bf's: chords:
+ * reverted c1*2, collides with \times {}
+ * should use: c\breve, c\longa for long chords
+ * addition: c-9, subtraction: c^5
+ * multiple -add, ^sub: c-7+.9-^3.5
+ - bf: lyric chord
+ - bf: lookup text height
+ - bf's: autobeamer
+
+ pl 24.jcn1
+ - bf: rest collisions
+ - separate tfm-reader
+ - bf: :|: should not have thin lines
+
+
+pl 24.mb1
+ - bf: Correct units now used in the .afm files.
+
+******
+
pl 24, Hacking Apart Together (Jan 25)
+pl 23.jcn9
+ - bf's: preludes-* (found a \meter and \transpose c`` there!)
+ - bf: ly2dvi: don't barf on 'linewidth = -1.;'
+ - bf: lily-version
+
pl 23.jbr1
- scripts/ly2dvi.py: Windows 95 shell does not support redivrection
of stderr. We now distribute ash and use it when needed.
--- /dev/null
+% this should be normal notes:
+c'1 | d2 d | e4 e
+
+% and this should be harmonics:
+\property Voice.noteheadStyle = "harmonic"
+e8 e e16 e e e32 e
+
+
note_p->steps_i_ = note_req_l->pitch_.steps ();
// note_p->position_i_ = note_req_l->pitch_.steps ();
+ String noteheadstyle = get_property ("noteheadStyle", 0);
+ if (noteheadstyle.length_i ())
+ note_p->note_head_type_str_ = noteheadstyle;
Score_element_info itinf (note_p,note_req_l);
announce_element (itinf);
public:
Lookup ();
Lookup (Lookup const&);
+
+
+ Atom special_ball (int, String) const;
Atom simple_bar (String s, Real w) const;
Molecule accidental (int, bool cautionary) const;
Atom afm_find (String, bool warn=true) const;
class Note_head : public Rhythmic_head {
public:
+ String note_head_type_str_;
+
/// position of top line (5 linestaff: 8)
int position_i_;
Atom a;
if (m.code () < 0)
return a;
-
- a.dim_ = m.B_;
- a.dim_[X_AXIS] *= 1 / 1000.0;
- a.dim_[Y_AXIS] *= 1 / 1000.0;
-
+
+ a.dim_ = m.dimensions();
a.lambda_ = gh_list (ly_symbol ("char"),
gh_int2scm (m.code ()),
else if (str == ":|:")
{
m.add_at_edge (X_AXIS, LEFT, thick,kern/2);
- m.add_at_edge (X_AXIS, LEFT, thin,kern);
m.add_at_edge (X_AXIS, LEFT, colon,kern);
m.add_at_edge (X_AXIS, RIGHT, thick,kern);
- m.add_at_edge (X_AXIS, RIGHT, thin,kern);
m.add_at_edge (X_AXIS, RIGHT, colon,kern);
}
else if (str == "||")
{
style = String (cmr_dict [style]) + to_str ((int)font_h); // ugh
}
+
Real w = 0;
+ Real h = 0;
+ Real d = 0;
+
Font_metric* afm_l = all_fonts_global_p->find_font (style);
DOUT << "\nChars: ";
{
Character_metric *c = afm_l->get_char (text[i],false);
w += c->dimensions()[X_AXIS].length ();
+ h = h >? c->dimensions()[Y_AXIS].max ();
+ d = d <? c->dimensions()[Y_AXIS].min ();
}
}
DOUT << "\n" << to_str (w) << "\n";
a.dim_.x () = Interval (0, w);
+ a.dim_.y () = Interval (d, h);
a.font_ = font_name_;
return a;
}
return a;
}
+
+Atom
+Lookup::special_ball (int j, String kind_of_ball) const
+{
+ if (j > 2)
+ j = 2;
+
+ return afm_find (String ("balls") + String ("-") + kind_of_ball);
+}
? 0
: (abs(position_i_) - staff_size_i_/2) /2;
- Atom s = lookup_l()->ball (balltype_i_);
+ //Atom s = lookup_l()->ball (balltype_i_);
+
+ Atom s; // = lookup_l()->ball (balltype_i_);
+
+ if (note_head_type_str_.length_i ()) {
+ if (note_head_type_str_ == "normal")
+ note_head_type_str_ = "";
+ s = lookup_l()->special_ball (balltype_i_, note_head_type_str_);
+ }
+ else
+ s = lookup_l()->ball (balltype_i_);
out = new Molecule (Atom (s));
out->translate_axis (x_dir_ * s.dim_[X_AXIS].length (), X_AXIS);
+
+ //out = new Molecule (Atom (s));
+ //out->translate_axis (x_dir_ * s.dim_[X_AXIS].length (), X_AXIS);
+
if (streepjes_i)
{
int dir = sign (position_i_);
-if test = 0:
-else:
+%if test = 0:
+%else:
def draw_harmonic_notehead(expr harmwid) =
save beamheight, head_width, head_char_width;
save holeheight, stem_width;
% ht# = noteheight#;
head_char_width = 1.54 noteheight;
head_char_width# := 1.54 ht#;
- schuif_op = head_char_width - head_width; %ugh
- schuif_op# := head_char_width# - head_width#;
+ %schuif_op = head_char_width - head_width; %ugh
+ %schuif_op# := head_char_width# - head_width#;
% set_char_box(0, head_char_width#, noteheight#/2, noteheight#/2);
set_char_box(0, head_width#, head_width#/2, head_width#/2);
% 2 beamheight + holeheight = noteheight;
penpos8(thick, 225);
% 1.5 noteheight = head_width;
- z1l = (schuif_op, 0);
+ z1l = (0, 0);
z2l = z1l;
-% z3l = (schuif_op + head_width/2,-head_width/2);
- z3l = (schuif_op + head_width/2, -noteheight/2);
+% z3l = (head_width/2,-head_width/2);
+ z3l = (head_width/2, -noteheight/2);
z4l = z3l;
- z5l = (schuif_op + head_width, 0);
+ z5l = (head_width, 0);
z6l = z5l;
-% z7l = (schuif_op + head_width/2, head_width/2);
- z7l = (schuif_op + head_width/2, noteheight/2);
+% z7l = (head_width/2, head_width/2);
+ z7l = (head_width/2, noteheight/2);
z8l = z7l;
pickup pencircle; %scaled stemthick;
fet_beginchar("Harmonic ledger", "harmonicl", "harmonicledger")
draw_ledger(harmonic_wid#);
fet_endchar;
-fi
+%fi
fet_endgroup("balls");