From 8e6e4cd90a1bd536422ebdec9bc0f2d75a8df7f5 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 1 Sep 2006 09:08:30 +0000 Subject: [PATCH] * buildscripts/output-distance.py (FileLink.calc_distance): count orphans in distance too. * lily/control-track-performer.cc (add_text): new file: generate the control track. --- ChangeLog | 3 + .../user/programming-interface.itely | 9 +-- buildscripts/output-distance.py | 6 +- lily/control-track-performer.cc | 70 +++++++++++++++++++ 4 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 lily/control-track-performer.cc diff --git a/ChangeLog b/ChangeLog index bcf5cae314..2d57d37734 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2006-09-01 Han-Wen Nienhuys + * buildscripts/output-distance.py (FileLink.calc_distance): count + orphans in distance too. + * python/midi.c (midi_parse_track): robustness: don't read past end of string. diff --git a/Documentation/user/programming-interface.itely b/Documentation/user/programming-interface.itely index 4bc023aab2..4536fff21a 100644 --- a/Documentation/user/programming-interface.itely +++ b/Documentation/user/programming-interface.itely @@ -197,8 +197,9 @@ AltOff = { @noindent This example may be rewritten to pass in music expressions, - -@lilypond[quote,verbatim,ragged-right] +@c fixme +@ignore +i@l ilypond[quote,verbatim,ragged-right] withAlt = #(define-music-function (parser location mag music) (number? ly:music?) #{ \override Stem #'length = #$(* 7.0 mag) \override NoteHead #'font-size = @@ -209,8 +210,8 @@ withAlt = #(define-music-function (parser location mag music) (number? ly:music? { c'2 \withAlt #0.5 {c'4 c'} \withAlt #1.5 {c' c'} c'2 } -@end lilypond - +@end l ilypond +@end ignore @node Void functions @subsection Void functions diff --git a/buildscripts/output-distance.py b/buildscripts/output-distance.py index fcb8e3731c..1249746e6f 100644 --- a/buildscripts/output-distance.py +++ b/buildscripts/output-distance.py @@ -281,9 +281,13 @@ class FileLink: def calc_distance (self): d = 0.0 + + orphan_distance = 0.0 for l in self.system_links.values (): d = max (d, l.geometric_distance ()) - return d + orphan_distance += l.orphan_count () + + return d + orphan_distance def distance (self): if type (self._distance) != type (0.0): diff --git a/lily/control-track-performer.cc b/lily/control-track-performer.cc new file mode 100644 index 0000000000..ec4ef83cdd --- /dev/null +++ b/lily/control-track-performer.cc @@ -0,0 +1,70 @@ + + +#include "warn.hh" +#include "audio-item.hh" +#include "audio-staff.hh" +#include "performer.hh" +#include "string-convert.hh" +#include "lily-version.hh" + +#include "translator.icc" + +class Control_track_performer : public Performer +{ + Audio_staff *control_track_; + vector texts_; + + void add_text (Audio_text::Type, string); + TRANSLATOR_DECLARATIONS(Control_track_performer); +protected: + + virtual void initialize (); + virtual void acknowledge_audio_element (Audio_element_info info); +}; + + +Control_track_performer::Control_track_performer () +{ + control_track_ = 0; +} + +void +Control_track_performer::acknowledge_audio_element (Audio_element_info info) +{ + if (Audio_tempo *tempo = dynamic_cast (info.elem_)) + { + control_track_->add_audio_item (tempo); + } + if (Audio_time_signature * sig = dynamic_cast (info.elem_)) + { + control_track_->add_audio_item (sig); + } +} + +void +Control_track_performer::add_text (Audio_text::Type text_type, string str) +{ + Audio_item *text = new Audio_text (text_type, str); + control_track_->add_audio_item (text); + texts_.push_back (text); + + announce_element (Audio_element_info (text, 0)); + +} + +void +Control_track_performer::initialize () +{ + control_track_ = new Audio_staff; + announce_element (Audio_element_info (control_track_, 0)); + + string id_string = String_convert::pad_to (gnu_lilypond_version_string (), 30); + + add_text (Audio_text::TRACK_NAME, "control track"); + add_text (Audio_text::TEXT, "creator: "); + add_text (Audio_text::TEXT, id_string); +} + +ADD_TRANSLATOR (Control_track_performer, "", "", + "", + "", ""); -- 2.39.5