From: fred Date: Sun, 24 Mar 2002 19:28:18 +0000 (+0000) Subject: lilypond-0.0.23 X-Git-Tag: release/1.5.59~5588 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f00b3944dd8b37926054dca4e9f4b7797f93a5d2;p=lilypond.git lilypond-0.0.23 --- diff --git a/Documentation/faq.pod b/Documentation/faq.pod new file mode 100644 index 0000000000..0b841b9705 --- /dev/null +++ b/Documentation/faq.pod @@ -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 + + +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 index 0000000000..445ec08823 --- /dev/null +++ b/input/cadenza.ly @@ -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" + } +} diff --git a/src/score.cc b/src/score.cc index 706fc53d99..edd26aaf7b 100644 --- a/src/score.cc +++ b/src/score.cc @@ -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::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 s_arr, Array 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]; + } +}