+1.3.108.jcn5
+============
+
+* Fixed mark default font.
+
1.3.108.jcn2
============
Grace notes without beams should have a slash, if @code{flagStyle} is
not set. Main note scripts don't end up on the grace note.
-@lilypondfile{grace.ly}
+@c @lily pondfile{grace.ly}
@section Beams, slurs and other spanners
second staff line. This does not hold for grace note beams.
Override with @code{noStemExtend}.
-@lilypondfile{beam-position.ly}
+@c @lily pondfile{beam-position.ly}
Slurs should look nice and symmetric. The curvature may increase
only to avoid noteheads, and as little as possible. Slurs never
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=108
-MY_PATCH_LEVEL=jcn4
+MY_PATCH_LEVEL=jcn5
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
m =\notes \relative c'' {
\property Staff.automaticMelismata = ##t
\autoBeamOff
- g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4
+ %g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4
+ g4 r8 \times 2/3 { g'8( f )e } r8 e4
\emptyText
d8.^"melisma" \melisma c16
\melismaEnd
void
Align_note_column_engraver::do_removal_processing ()
{
+ if (!align_item_p_)
+ {
+ programming_error ("Align_note_column_engraver:: urg\n");
+ return;
+ }
+
SCM al = get_property ("graceAlignPosition");
if (isdir_b (al))
{
#include "lily-guile.hh"
#include "score-element.hh"
#include "musical-request.hh"
+#include "warn.hh"
void
Grace_engraver_group::start ()
void
Grace_engraver_group::typeset_element (Score_element*e)
{
+ if (!e)
+ programming_error ("Grace_engraver_group: empty elt\n");
+ else
+
typeset_us_.push (e);
}
Grace_engraver_group::process ()
{
calling_self_b_ = true;
- //process_music ();
+
+ //process_music (); -- used to do implicit creation processing ()
+ // possibly post_move_processing ()?
+ do_creation_processing ();
+ post_move_processing ();
+
+
announces();
pre_move_processing();
check_removal();
-/*
- key-performer.hh -- declare Key_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef KEY_PERFOMER_HH
-#define KEY_PERFOMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-
-class Key_performer : public Performer
-{
-public:
- VIRTUAL_COPY_CONS(Translator);
-
- Key_performer();
- ~Key_performer();
-
-protected:
- virtual bool do_try_music (Music* req_l);
- void deprecated_process_music ();
- virtual void do_pre_move_processing ();
-
-private:
- Key_change_req* key_req_l_;
- Audio_key* audio_p_;
-};
-
-#endif // KEY_PERFOMER_HH
-/*
- lyric-performer.hh -- declare Lyric_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef LYRIC_PERFOMER_HH
-#define LYRIC_PERFOMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-#include "array.hh"
-
-class Lyric_performer : public Performer {
-public:
- VIRTUAL_COPY_CONS(Translator);
- Lyric_performer ();
-
-protected:
-
- virtual bool do_try_music (Music* req_l);
- void deprecated_process_music();
- virtual void do_pre_move_processing ();
-
-private:
- Link_array<Lyric_req> lreq_arr_;
- Audio_text* audio_p_;
-};
-
-#endif // LYRIC_PERFOMER_HH
-/*
- note-performer.hh -- declare Note_performer
-
- (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef NOTE_PERFORMER_HH
-#define NOTE_PERFORMER_HH
-
-#include "performer.hh"
-
-/**
-Convert reqs to audio notes.
-*/
-class Note_performer : public Performer {
-public:
- VIRTUAL_COPY_CONS(Translator);
-
-
- Note_performer();
-
-protected:
- void deprecated_process_music ();
- virtual bool do_try_music (Music *req_l) ;
-
- virtual void do_pre_move_processing ();
- virtual void process_acknowledged ();
- Global_translator* global_translator_l ();
-
-private:
- Array<Note_req*> note_req_l_arr_;
- Array<Audio_note*> note_p_arr_;
- Array<Audio_note*> delayed_p_arr_;
-};
-
-#endif // NOTE_PERFORMER_HH
-/*
- staff-performer.hh -- declare Staff_performer
-
- (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef STAFF_PERFORMER_HH
-#define STAFF_PERFORMER_HH
-
-#include "performer-group-performer.hh"
-
-/** Perform a staff. Individual notes should have their instrument
- (staff-wide) set, so we override play_element()
-
- */
-class Staff_performer : public Performer_group_performer
-{
-public:
- VIRTUAL_COPY_CONS(Translator);
-
-
- Staff_performer ();
- ~Staff_performer ();
-
- String new_instrument_str ();
- String instrument_str_;
-
-protected:
- virtual void play_element (Audio_element* p);
- virtual void do_removal_processing ();
- virtual void do_creation_processing ();
- void deprecated_process_music ();
- virtual void do_pre_move_processing ();
-
-private:
- Audio_staff* audio_staff_p_;
- Audio_instrument* instrument_p_;
- Audio_text* instrument_name_p_;
- Audio_text* name_p_;
- Audio_tempo* tempo_p_;
-};
-
-#endif // STAFF_PERFORMER_HH
-/*
- tempo-performer.hh -- declare Tempo_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef TEMPO_PERFORMER_HH
-#define TEMPO_PERFORMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-
-class Tempo_performer : public Performer
-{
-public:
- VIRTUAL_COPY_CONS(Translator);
-
- Tempo_performer();
- ~Tempo_performer();
-
-protected:
-
- virtual bool do_try_music (Music* req_l);
- void deprecated_process_music();
- virtual void do_pre_move_processing ();
-
-private:
- Tempo_req* tempo_req_l_;
- Audio_tempo* audio_p_;
-};
-
-#endif // TEMPO_PERFORMER_HH
-/*
- tie-performer.hh -- declare Tie_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1999--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-
- */
-
-#ifndef TIE_PERFORMER_HH
-#define TIE_PERFORMER_HH
-
-#include "pqueue.hh"
-#include "performer.hh"
-
-struct CNote_melodic_tuple {
- Melodic_req *req_l_ ;
- Audio_note *note_l_;
- Moment end_;
- CNote_melodic_tuple ();
- CNote_melodic_tuple (Audio_note*, Melodic_req*, Moment);
- static int pitch_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
- static int time_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
-};
-
-inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b)
-{
- return CNote_melodic_tuple::time_compare (a,b);
-}
-
-
-/**
- Manufacture ties. Acknowledge notes, and put them into a
- priority queue. If we have a Tie_req, connect the notes that finish
- just at this time, and note that start at this time.
-
- TODO: should share code with Tie_engraver ?
- */
-class Tie_performer : public Performer
-{
-public:
- VIRTUAL_COPY_CONS(Translator);
- Tie_performer ();
-
-private:
- PQueue<CNote_melodic_tuple> past_notes_pq_;
- Tie_req *req_l_;
- Array<CNote_melodic_tuple> now_notes_;
- Array<CNote_melodic_tuple> stopped_notes_;
- Link_array<Audio_tie> tie_p_arr_;
-
-protected:
- virtual void do_post_move_processing ();
- virtual void do_pre_move_processing ();
- virtual void acknowledge_element (Audio_element_info);
- virtual bool do_try_music (Music*);
- void deprecated_process_music ();
- virtual void process_acknowledged ();
-
-};
-
-
-#endif /* TIE_PERFORMER_HH */
-
-/*
- time_signature-performer.hh -- declare Time_signature_performer
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef TIME_SIGNATURE_PERFORMER_HH
-#define TIME_SIGNATURE_PERFORMER_HH
-
-
-#endif // TIME_SIGNATURE_PERFORMER_HH
(c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include "key-performer.hh"
#include "command-request.hh"
#include "audio-item.hh"
+#include "performer.hh"
+class Key_performer : public Performer
+{
+public:
+ VIRTUAL_COPY_CONS(Translator);
+
+ Key_performer();
+ ~Key_performer();
+
+protected:
+ virtual bool do_try_music (Music* req_l);
+ virtual void process_acknowledged ();
+ virtual void do_pre_move_processing ();
+
+private:
+ Key_change_req* key_req_l_;
+ Audio_key* audio_p_;
+};
ADD_THIS_TRANSLATOR (Key_performer);
}
void
-Key_performer::deprecated_process_music ()
+Key_performer::process_acknowledged ()
{
if (key_req_l_ &&
gh_list_p (key_req_l_->get_mus_property ("pitch-alist")))
(c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include "lyric-performer.hh"
#include "musical-request.hh"
#include "audio-item.hh"
+#include "lily-proto.hh"
+#include "performer.hh"
+#include "array.hh"
+
+class Lyric_performer : public Performer {
+public:
+ VIRTUAL_COPY_CONS(Translator);
+ Lyric_performer ();
+
+protected:
+
+ virtual bool do_try_music (Music* req_l);
+ virtual void do_pre_move_processing ();
+ virtual void process_acknowledged ();
+
+private:
+ Link_array<Lyric_req> lreq_arr_;
+ Audio_text* audio_p_;
+};
ADD_THIS_TRANSLATOR (Lyric_performer);
void
-Lyric_performer::deprecated_process_music ()
+Lyric_performer::process_acknowledged ()
{
// FIXME: won't work with fancy lyrics
if (lreq_arr_.size ()
(c) 1996--2000 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include "note-performer.hh"
+#include "performer.hh"
#include "musical-request.hh"
#include "audio-item.hh"
#include "audio-column.hh"
#include "global-translator.hh"
#include "debug.hh"
+/**
+Convert reqs to audio notes.
+*/
+class Note_performer : public Performer {
+public:
+ VIRTUAL_COPY_CONS(Translator);
+
+protected:
+ virtual bool do_try_music (Music *req_l) ;
+
+ virtual void do_pre_move_processing ();
+ virtual void process_acknowledged ();
+ Global_translator* global_translator_l ();
+
+private:
+ Array<Note_req*> note_req_l_arr_;
+ Array<Audio_note*> note_p_arr_;
+ Array<Audio_note*> delayed_p_arr_;
+};
ADD_THIS_TRANSLATOR (Note_performer);
-Note_performer::Note_performer ()
-{
-}
-
-
-
void
-Note_performer::deprecated_process_music ()
+Note_performer::process_acknowledged ()
{
if (note_req_l_arr_.size ())
{
announce_element (info);
note_p_arr_.push (p);
}
+ note_req_l_arr_.clear ();
}
}
-void
-Note_performer::process_acknowledged ()
-{
-}
-
Global_translator*
Note_performer::global_translator_l ()
{
protected:
virtual void do_creation_processing ();
virtual bool do_try_music (Music*);
- void deprecated_process_music ();
virtual void do_pre_move_processing ();
virtual void do_post_move_processing ();
virtual void acknowledge_element (Score_element_info);
}
/*
- Urg: Code dup
- I'm a script
- */
+ Urg: Code dup
+ I'm a script
+ */
void
Piano_pedal_engraver::acknowledge_element (Score_element_info info)
{
void
Piano_pedal_engraver::process_acknowledged ()
-{
- deprecated_process_music ();
-}
-
-void
-Piano_pedal_engraver::deprecated_process_music ()
{
for (Pedal_info*p = info_list_; p && p->name_; p ++)
{
? p->req_l_drul_[START]
: p->req_l_drul_[STOP]);
}
+ p->req_l_drul_[START] = 0;
+ p->req_l_drul_[STOP] = 0;
}
}
protected:
virtual void do_creation_processing ();
virtual bool do_try_music (Music*);
- void deprecated_process_music ();
+ virtual void process_acknowledged ();
virtual void do_pre_move_processing ();
virtual void do_post_move_processing ();
}
void
-Piano_pedal_performer::deprecated_process_music ()
+Piano_pedal_performer::process_acknowledged ()
{
for (Pedal_info*p = info_alist_; p && p->name_; p ++)
a->dir_ = START;
audio_p_arr_.push (a);
}
+ p->req_l_drul_[START] = 0;
+ p->req_l_drul_[STOP] = 0;
}
}
(c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include "staff-performer.hh"
#include "translator-group.hh"
#include "debug.hh"
#include "audio-column.hh"
#include "audio-item.hh"
#include "audio-staff.hh"
+#include "performer-group-performer.hh"
+/** Perform a staff. Individual notes should have their instrument
+ (staff-wide) set, so we override play_element()
+
+ */
+class Staff_performer : public Performer_group_performer
+{
+public:
+ VIRTUAL_COPY_CONS(Translator);
+
+
+ Staff_performer ();
+ ~Staff_performer ();
+
+ String new_instrument_str ();
+ String instrument_str_;
+
+protected:
+ virtual void play_element (Audio_element* p);
+ virtual void do_removal_processing ();
+ virtual void do_creation_processing ();
+ virtual void process_acknowledged ();
+ virtual void do_pre_move_processing ();
+
+private:
+ Audio_staff* audio_staff_p_;
+ Audio_instrument* instrument_p_;
+ Audio_text* instrument_name_p_;
+ Audio_text* name_p_;
+ Audio_tempo* tempo_p_;
+};
ADD_THIS_TRANSLATOR (Staff_performer);
}
void
-Staff_performer::deprecated_process_music ()
+Staff_performer::process_acknowledged ()
{
String str = new_instrument_str ();
if (str.length_i ())
instrument_p_ = new Audio_instrument (str);
announce_element (Audio_element_info (instrument_p_, 0));
}
- // Performer_group_performer::deprecated_process_music ();
+ //Performer_group_performer::deprecated_process_music ();
}
void
(c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include "tempo-performer.hh"
#include "command-request.hh"
#include "audio-item.hh"
+#include "performer.hh"
+
+class Tempo_performer : public Performer
+{
+public:
+ VIRTUAL_COPY_CONS(Translator);
+
+ Tempo_performer();
+ ~Tempo_performer();
+
+protected:
+
+ virtual bool do_try_music (Music* req_l);
+ virtual void do_pre_move_processing ();
+ virtual void process_acknowledged ();
+
+private:
+ Tempo_req* tempo_req_l_;
+ Audio_tempo* audio_p_;
+};
ADD_THIS_TRANSLATOR (Tempo_performer);
void
-Tempo_performer::deprecated_process_music ()
+Tempo_performer::process_acknowledged ()
{
if (tempo_req_l_)
{
*/
class Tie_engraver : public Engraver
{
+ bool done_;
PQueue<CHead_melodic_tuple> past_notes_pq_;
Moment end_mom_;
Moment next_end_mom_;
virtual void do_pre_move_processing ();
virtual void acknowledge_element (Score_element_info);
virtual bool do_try_music (Music*);
- void deprecated_process_music ();
virtual void process_acknowledged ();
void typeset_tie (Score_element*);
public:
}
}
-void
-Tie_engraver::deprecated_process_music ()
-{
-}
-
void
Tie_engraver::process_acknowledged ()
{
- if (tie_p_arr_.size ())
- return;
-
- if (req_l_)
+ if (req_l_ && !done_)
{
Moment now = now_mom ();
stopped_heads_.clear ();
while (past_notes_pq_.size ()
&& past_notes_pq_.front ().end_ == now)
stopped_heads_.push (past_notes_pq_.get ());
+ done_ = true;
+ return;
}
+
if (req_l_)
{
now_heads_.sort (CHead_melodic_tuple::pitch_compare);
set_melisma (false);
}
req_l_ = 0;
+ done_ = false;
Moment now = now_mom ();
while (past_notes_pq_.size () && past_notes_pq_.front ().end_ < now)
past_notes_pq_.delmin ();
*/
-#include "tie-performer.hh"
#include "command-request.hh"
#include "audio-item.hh"
#include "musical-request.hh"
+#include "pqueue.hh"
+#include "performer.hh"
+
+struct CNote_melodic_tuple {
+ Melodic_req *req_l_ ;
+ Audio_note *note_l_;
+ Moment end_;
+ CNote_melodic_tuple ();
+ CNote_melodic_tuple (Audio_note*, Melodic_req*, Moment);
+ static int pitch_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
+ static int time_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
+};
+
+inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b)
+{
+ return CNote_melodic_tuple::time_compare (a,b);
+}
-ADD_THIS_TRANSLATOR (Tie_performer);
+/**
+ Manufacture ties. Acknowledge notes, and put them into a
+ priority queue. If we have a Tie_req, connect the notes that finish
+ just at this time, and note that start at this time.
-Tie_performer::Tie_performer()
+ TODO: should share code with Tie_engraver ?
+ */
+class Tie_performer : public Performer
{
- req_l_ = 0;
-}
+public:
+ VIRTUAL_COPY_CONS(Translator);
+
+private:
+ bool done_;
+ PQueue<CNote_melodic_tuple> past_notes_pq_;
+ Tie_req *req_l_;
+ Array<CNote_melodic_tuple> now_notes_;
+ Array<CNote_melodic_tuple> stopped_notes_;
+ Link_array<Audio_tie> tie_p_arr_;
+
+protected:
+ virtual void do_post_move_processing ();
+ virtual void do_pre_move_processing ();
+ virtual void acknowledge_element (Audio_element_info);
+ virtual bool do_try_music (Music*);
+ virtual void process_acknowledged ();
+};
+
+ADD_THIS_TRANSLATOR (Tie_performer);
bool
Tie_performer::do_try_music (Music *m)
}
void
-Tie_performer::deprecated_process_music ()
+Tie_performer::process_acknowledged ()
{
- if (req_l_)
+ if (req_l_ && ! done_)
{
Moment now = now_mom ();
Link_array<Audio_note> nharr;
while (past_notes_pq_.size ()
&& past_notes_pq_.front ().end_ == now)
stopped_notes_.push (past_notes_pq_.get ());
+ done_ = true;
+ return;
}
-}
-void
-Tie_performer::process_acknowledged ()
-{
- deprecated_process_music ();
if (req_l_)
{
now_notes_.sort (CNote_melodic_tuple::pitch_compare);
{
req_l_->origin ()->warning (_("No ties were created!"));
}
-
}
}
Tie_performer::do_post_move_processing ()
{
req_l_ =0;
+ done_ = false;
Moment now = now_mom ();
while (past_notes_pq_.size () && past_notes_pq_.front ().end_ < now)
past_notes_pq_.delmin ();
protected:
- void deprecated_process_music();
virtual void do_pre_move_processing ();
+ virtual void process_acknowledged ();
SCM prev_fraction_;
private:
void
-Time_signature_performer::deprecated_process_music ()
+Time_signature_performer::process_acknowledged ()
{
SCM fr = get_property ("timeSignatureFraction");
if (gh_pair_p (fr)
(molecule-callback . ,Text_item::brew_molecule)
(direction . 1)
(breakable . #t)
- (font-family . roman)
+ (font-family . number)
+ (font-shape . upright)
(font-relative-size . 1)
(visibility-lambda . ,end-of-line-invisible)
(padding . 0.8)