]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.23
authorfred <fred>
Sun, 24 Mar 2002 19:28:18 +0000 (19:28 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:28:18 +0000 (19:28 +0000)
Documentation/faq.pod [new file with mode: 0644]
input/cadenza.ly [new file with mode: 0644]
src/score.cc

diff --git a/Documentation/faq.pod b/Documentation/faq.pod
new file mode 100644 (file)
index 0000000..0b841b9
--- /dev/null
@@ -0,0 +1,26 @@
+=head1 NAME
+
+FAQ - LilyPond FAQs
+
+=head1 DESCRIPTION
+
+
+
+Q: I want to enter meterchanges inside the music.
+
+A: You can't; a meterchange is scorewide (well, staffwide in some
+modern music). If allowed inside the music, we get complicated and
+conflicting situations if two voices asked for (possibly different)
+meterchanges.
+
+You can mark certain spots, though: please check out F<cadenza.ly>
+
+
+Q: Why are [] around the notes, and () inbetween?
+
+A: [] designate beams, a note can only be in one beam at the same
+time. () is a slur, which connects notes. You need to be able to specify
+
+       a()a()a
+
+
diff --git a/input/cadenza.ly b/input/cadenza.ly
new file mode 100644 (file)
index 0000000..445ec08
--- /dev/null
@@ -0,0 +1,64 @@
+%
+% Cadenza to Mozart Horn/3
+%
+
+cad = music { $
+       \duration { 8}
+       \textstyle "italic" 
+       'c4._"f" g8
+       \textstyle  "roman" 
+                                       ['e^"accel" ()'d 'c b]
+       [b()'c] g-\fermata
+               \mark"br1"
+                       c [c_"rubato" e g 'c]
+       \octave{'}
+       e4. e [g ()f_"rit" e d]
+
+       \duration{16}
+       dis4()e4
+               \mark"br2"
+               r8 [c d] [e f g gis]
+       \duration{4}
+       a-> `f()`e g
+       f-> `d()`cis e
+       \duration{8}    
+       d4^\fermata
+               \mark"br3"
+
+       r8 `a [`b cis]
+       \duration{16}   [d cis d e]
+       f4()[f e d c]
+       `b4
+       \octave{} \plet{2/3} ['d8 'c8 a8]
+       \plet{1/1}
+       g2
+               \mark "br4"
+       [g c e g] ['c e g 'c]\octave{'} 
+       [e `g c e] g4^\fermata %()% BUG!
+               \mark "br5"
+       [g8.(_"a tempo" e g8. )e]
+       a4. g8 [f8 e8 d8 c8]
+       `g2 d2^"tr"
+       c4
+       $}
+
+       score {
+       staff { melodic
+               music { cad }
+       }
+       commands {
+               meter 4*4
+               cadenza 1
+               grouping 1
+               goto "br1"
+               bar "empty"
+               goto "br2"
+               bar "empty"
+               goto "br3"
+               bar "empty"
+               goto "br4"
+               bar "empty"
+               goto "br5"
+               bar "empty"
+       }
+}
index 706fc53d99e2cfe854ad332f00da27671b2c96a2..edd26aaf7baf3e9b082b845dd15b7cc3cc9bc70d 100644 (file)
@@ -13,8 +13,10 @@ Score::process()
     *mlog << "\nProcessing music ... ";
     
     assert (paper_p_);
-    
-    /// distribute commands to disciples
+    if (last() == Moment(0)) {
+       error("Need to have music in a score.");
+    }
+    // distribute commands to disciples
     pscore_p_ = new PScore(paper_p_);
     for (iter_top(staffs_,i); i.ok(); i++) {
        i->truncate_cols(last());
@@ -25,6 +27,7 @@ Score::process()
     // do this after processing, staffs first have to generate PCols.
     find_col(last(), false)->set_breakable();
     do_cols();
+    print();
     calc_idealspacing();
 
     // debugging
@@ -42,7 +45,7 @@ Score::clean_cols()
     
     for (iter_top(cols_,c); c.ok(); ) {
        if (!c->pcol_l_->used()) {
-           c.del();
+           delete c.get();
        } else {
            c->preprocess();
            c++;
@@ -53,7 +56,6 @@ Score::clean_cols()
   this sux.  We should have Score_column create the appropriate PCol.
   Unfortunately, PCols don't know about their position.    
   */
-// todo
 PCursor<Score_column*>
 Score::create_cols(Moment w)
 {
@@ -174,7 +176,9 @@ Score::output(String s)
        paper_p_->outfile = s;
     
     *mlog << "output to " << paper_p_->outfile << "...\n";
-    Tex_stream the_output(paper_p_->outfile);    
+    
+    Tex_stream the_output(paper_p_->outfile);
+    the_output << "% outputting Score, defined at: " << define_spot_str_ << "\n";
     pscore_p_->output(the_output);
 }
 
@@ -187,3 +191,16 @@ Score::add(Staff*s)
     staffs_.bottom().add(s);
 }
 
+void
+Score::add_marks(Array<String> s_arr, Array<Moment> m_arr)
+{
+    for (int i=0; i < s_arr.size(); i++) {
+       String mark_str (s_arr[i]);
+       if (markers_assoc_.elt_query(mark_str) &&
+           m_arr[i] != markers_assoc_[mark_str])
+           
+           error("Conflicting marker: `" + s_arr[i]+ "\'");
+       else
+           markers_assoc_[s_arr[i]] = m_arr[i];
+    }
+}