]> git.donarmstrong.com Git - lilypond.git/blob - lily/control-track-performer.cc
Web-ja: update introduction
[lilypond.git] / lily / control-track-performer.cc
1
2
3 #include "warn.hh"
4 #include "audio-item.hh"
5 #include "audio-staff.hh"
6 #include "performer.hh"
7 #include "string-convert.hh"
8 #include "lily-version.hh"
9
10 #include "translator.icc"
11
12 class Control_track_performer : public Performer
13 {
14   Audio_staff *control_track_;
15
16   void add_text (Audio_text::Type, const string&);
17   TRANSLATOR_DECLARATIONS (Control_track_performer);
18 protected:
19
20   virtual void initialize ();
21   virtual void acknowledge_audio_element (Audio_element_info info);
22 };
23
24 Control_track_performer::Control_track_performer (Context *c)
25   : Performer (c)
26 {
27   control_track_ = 0;
28 }
29
30 void
31 Control_track_performer::acknowledge_audio_element (Audio_element_info info)
32 {
33   if (Audio_tempo *tempo = dynamic_cast<Audio_tempo *> (info.elem_))
34     {
35       control_track_->add_audio_item (tempo);
36     }
37   if (Audio_time_signature *sig = dynamic_cast<Audio_time_signature *> (info.elem_))
38     {
39       control_track_->add_audio_item (sig);
40     }
41 }
42
43 void
44 Control_track_performer::add_text (Audio_text::Type text_type, const string &str)
45 {
46   Audio_item *text = new Audio_text (text_type, str);
47   control_track_->add_audio_item (text);
48
49   announce_element (Audio_element_info (text, 0));
50
51 }
52
53 void
54 Control_track_performer::initialize ()
55 {
56   control_track_ = new Audio_control_track_staff;
57   announce_element (Audio_element_info (control_track_, 0));
58
59   string id_string = String_convert::pad_to (gnu_lilypond_version_string (), 30);
60
61   // The first audio element in the control track is a placeholder for the
62   // name of the MIDI sequence.  The actual name is stored in the element
63   // later before outputting the track (in Performance::output, see
64   // performance.cc).
65   add_text (Audio_text::TRACK_NAME, "control track");
66   add_text (Audio_text::TEXT, "creator: ");
67   add_text (Audio_text::TEXT, id_string);
68 }
69
70 void
71 Control_track_performer::boot ()
72 {
73
74 }
75
76 ADD_TRANSLATOR (Control_track_performer,
77                 /* doc */
78                 "",
79
80                 /* create */
81                 "",
82
83                 /* read */
84                 "",
85
86                 /* write */
87                 ""
88                );