2 input-music.hh -- part of LilyPond
4 (c) 1996,97 Han-Wen Nienhuys
15 struct Voice_list : public PointerList<Voice*> {
16 void translate_time(Moment dt);
22 Input_music is anything that can simply be regarded as/converted to
23 a set of voices "cooperating" or independant. It has some basic
24 characteristics that real music has too:
26 - it is rhythmic (it has a length, and can be translated horizontally)
27 - a pitch (it can be transposed)
31 virtual Voice_list convert()const=0;
32 void check_plet(Voice_element* velt_l);
33 virtual Moment length()const=0;
34 virtual void translate_time(Moment dt)=0;
35 virtual ~Input_music(){}
36 virtual void print() const =0;
37 virtual void set_default_group(String)=0;
38 virtual bool find_plet_start_b(char c, Moment& moment_r) = 0;
39 virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i) = 0;
40 virtual void transpose(Melodic_req const&) const =0;
43 virtual Input_music *clone() const = 0;
44 virtual Simple_music *simple() { return 0; }
47 /// Simple music consists of one voice
48 struct Simple_music : Input_music {
52 virtual void transpose(Melodic_req const&) const ;
54 virtual Simple_music*simple() { return this; }
55 void add(Voice_element*);
56 virtual void set_default_group(String g) { voice_.set_default_group(g); }
57 virtual Moment length()const;
58 virtual Voice_list convert()const;
59 virtual void translate_time(Moment dt);
60 virtual void print() const;
61 virtual bool find_plet_start_b(char c, Moment& moment_r);
62 virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
63 virtual Input_music *clone() const {
64 return new Simple_music(*this);
68 /// Complex_music consists of multiple voices
69 struct Complex_music : Input_music {
70 IPointerList<Input_music*> elts;
72 virtual void transpose(Melodic_req const&) const ;
73 virtual void set_default_group(String g);
74 void add(Input_music*inmusic_p);
76 Complex_music(Complex_music const &);
77 virtual void print() const ;
78 void concatenate(Complex_music*);
79 virtual bool find_plet_start_b(char c, Moment& moment_r);
80 virtual void set_plet_backwards(Moment& now_moment_r, Moment until_moment, int num_i, int den_i);
85 A voice like list of music.
87 different music forms which start after each other ( concatenated,
88 stacked "horizontally )
92 struct Music_voice : Complex_music {
97 virtual void translate_time(Moment dt);
98 virtual Voice_list convert()const;
99 void add_elt(Voice_element*);
100 virtual Input_music *clone() const {
101 return new Music_voice(*this);
103 virtual void print() const ;
107 Multiple musicstuff stacked on top of each other
110 - different music forms which start at the same time ( stacked "vertically" )
113 struct Music_general_chord : Complex_music {
116 /* *************** */
118 virtual Moment length()const;
119 virtual Voice_list convert()const;
120 virtual void translate_time(Moment dt);
121 void add_elt(Voice_element*);
122 virtual Input_music *clone() const {
123 return new Music_general_chord(*this);
126 virtual void print() const ;
129 struct Multi_voice_chord : Music_general_chord {
130 void set_default_group(String);
131 virtual Input_music *clone() const {
132 return new Multi_voice_chord(*this);
135 struct Voice_group_chord : Music_general_chord {
137 virtual Input_music *clone() const {
138 return new Voice_group_chord(*this);
141 #endif // INPUTMUSIC_HH