]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.133
authorfred <fred>
Wed, 27 Mar 2002 00:56:33 +0000 (00:56 +0000)
committerfred <fred>
Wed, 27 Mar 2002 00:56:33 +0000 (00:56 +0000)
input/bugs/tie-break-accidental.ly [new file with mode: 0644]
lily/include/main.hh
lily/main.cc
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/separating-line-group-engraver.cc
lily/swallow-engraver.cc
lily/tie-engraver.cc
mutopia/Coriolan/header.ly

diff --git a/input/bugs/tie-break-accidental.ly b/input/bugs/tie-break-accidental.ly
new file mode 100644 (file)
index 0000000..0b2c0e8
--- /dev/null
@@ -0,0 +1,14 @@
+\header {
+texidoc = "First and second bes (tied across line break)
+should get an accidental, but others should not";
+}
+
+\score {
+  \notes {
+    bes1 ~ | \break
+    bes2 ~ bes4 ~ bes4 ~ | bes1
+  }
+  \paper {
+    linewidth = 40*\staffspace;
+  }
+}
index e495ade889ccf67027d9aa6c8c156ba0bae91b3a..5405857a4b191ad474fb019d033ed5e643fb605d 100644 (file)
@@ -25,6 +25,7 @@ extern void set_inclusion_names (Array<String>);
 extern bool dependency_global_b;
 extern String dependency_prefix_global;
 extern Array<String> dump_header_fieldnames_global;
+extern bool midi_debug_global_b;
 extern bool no_paper_global_b;
 extern bool no_timestamps_global_b;
 extern String output_format_global;
index 8713c7d74167c2a406697f269ccfd4d78bf95d9d..868dbbd07718e04cc20513ba4bfefab1986bed6b 100644 (file)
@@ -50,6 +50,9 @@ Array<String> dump_header_fieldnames_global;
 /* Name of initialisation file. */
 String init_name_global;
 
+/* Write midi as formatted ascii stream? */
+bool midi_debug_global_b;
+
 /* Do not calculate and write paper output? */
 bool no_paper_global_b = false;
 
@@ -116,6 +119,7 @@ static Long_option_init options_static[] = {
   {0, "version", 'v',  _i ("print version number")},
   {0, "verbose", 'V', _i("verbose")},
   {0, "warranty", 'w',  _i ("show warranty and copyright")},
+  {0, "midi-debug", 'X',  _i ("write midi ouput in formatted ascii")},
   {0,0,0,0}
 };
 
@@ -456,6 +460,9 @@ main (int argc, char **argv)
        case 'T':
          no_timestamps_global_b = true;
          break;
+       case 'X':
+         midi_debug_global_b = true;
+         break;
        default:
          assert (false);
          break;
index c0d980d5365b228d6af884b5840c89ca128717ce..64aa262a260c83559f900b3bd26f77499fe80b52 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "debug.hh"
+#include "main.hh"
 #include "misc.hh"
 #include "string.hh"
 #include "string-convert.hh"
@@ -450,8 +451,8 @@ Midi_note_off::Midi_note_off (Midi_note* n)
   // Anybody who hears any difference, or knows how this works?
   //  0 should definitely be avoided, notes stick on some sound cards.
   // 64 is supposed to be neutral
+  
   aftertouch_byte_ = 64;
-
 }
 
 String
@@ -598,12 +599,12 @@ String
 Midi_track::data_str () const
 {
   String str = Midi_chunk::data_str ();
-  if (flower_dstream && !flower_dstream->silent_b ("Midistrings"))
+  if (midi_debug_global_b)
     str += "\n";
   for (Cons<Midi_event> *i=event_p_list_.head_; i; i = i->next_) 
     {
       str += i->car_->str ();
-      if (flower_dstream && !flower_dstream->silent_b ("Midistrings"))
+      if (midi_debug_global_b)
         str += "\n";
     }
   return str;
index 976130a3f001cabcf542edb2d118fb156e918ce9..813694b29e52930482f5be69ec5513a45c83581d 100644 (file)
@@ -37,11 +37,10 @@ Midi_stream::operator << (String str)
 Midi_stream&
 Midi_stream::operator << (Midi_item const& midi_c_r)
 {
-//    *this <<midi_c_r.str (); 
   String str = midi_c_r.str ();
-  if (flower_dstream && !flower_dstream->silent_b ("Midistrings")) 
+  if (midi_debug_global_b)
     {
-    str = String_convert::bin2hex_str (str) + "\n";
+     str = String_convert::bin2hex_str (str) + "\n";
     // ugh, should have separate debugging output with Midi*::print routines
     int i = str.index_i ("0a");
     while (i >= 0)
index b99b611c6969155592815a426ad937984d38ad0d..986a58ebdb6ddd68837c404b2686860db22bd822 100644 (file)
@@ -48,26 +48,43 @@ Midi_walker::do_start_note (Midi_note* note_p)
 {
   Audio_item* ptr = (*item_l_arr_l_)[index_];
   Moment stop_mom = note_p->length_mom () + ptr->audio_column_l_->at_mom ();
+
+  bool play_start = true;
   for (int i=0; i < stop_note_queue.size(); i++) 
     {
+      /* if this pith already in queue */
       if (stop_note_queue[i].val->pitch_i() == note_p->pitch_i ()) 
        {
          if (stop_note_queue[i].key < stop_mom)
-           stop_note_queue[i].ignore_b_ = true;
-         else {
-           // skip the stopnote
-           delete note_p;
-           return;
+           {
+             /* let stopnote in queue be ignored,
+              new stop note wins */
+             stop_note_queue[i].ignore_b_ = true;
+             /* don't replay start note, */
+             play_start = false;
+             break;
+           }
+         else
+           {
+             /* skip this stopnote,
+                don't play the start note */
+             delete note_p;
+             note_p = 0;
+             break;
          }
        }
     }
 
-  Midi_note_event e;
-  e.val = new Midi_note_off (note_p);
-  e.key = stop_mom;
-  stop_note_queue.insert (e);
-      
-  output_event (ptr->audio_column_l_->at_mom (), note_p);
+  if (note_p)
+    {
+      Midi_note_event e;
+      e.val = new Midi_note_off (note_p);
+      e.key = stop_mom;
+      stop_note_queue.insert (e);
+
+      if (play_start)
+       output_event (ptr->audio_column_l_->at_mom (), note_p);
+    }
 }
 
 /**
@@ -111,8 +128,8 @@ Midi_walker::process()
 
   /*
     THIS IS A MEMORY LEAK. FIXME.
-   */
-  //Midi_item* p = ptr->midi_item_p ();
+    where's the leak?  Everything goet to Midi_track, in a killing_cons.
+ */
   if (Midi_item* midi_p = Midi_item::midi_p (audio_p))
     {
       midi_p->channel_i_ = track_l_->number_i_;
index 0e726c1d4f808b27b887b016fb3855e15508f516..cb3f54040e7071053ae319e42fcf64aaa1b06599 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  separating-line-group-engraver.cc --  implement Separating_line_group_engraver
+'  separating-line-group-engraver.cc --  implement Separating_line_group_engraver
   
   source file of the GNU LilyPond music typesetter
   
index 26719c84777f00665091e38dfaa16b43f4a3499d..3823f2c1f5dab58547791ceebcf27612c3d18e20 100644 (file)
@@ -5,12 +5,22 @@
 
   (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
-#include "swallow-engraver.hh"
 
+#include "engraver.hh"
 
+/**
+  This engraver swallows everything given to it silently. The purpose of
+  this is to prevent spurious "request junked" warnings.
+ */
+class Swallow_engraver : public Engraver
+{
+public:
+  VIRTUAL_COPY_CONS (Translator);
+protected:
+  bool try_music (Music*) ;
+};
 
-ADD_THIS_TRANSLATOR(Swallow_engraver);
-
+ADD_THIS_TRANSLATOR (Swallow_engraver);
 
 bool
 Swallow_engraver::try_music (Music*) 
index 75139c817d712f68fd8006f0a1c65dc97de5d3da..2d65a00d02295a24b43cc9e43a9037e0efc621db 100644 (file)
@@ -7,7 +7,6 @@
   
  */
 
-#include "tie-engraver.hh"
 #include "command-request.hh"
 #include "rhythmic-head.hh"
 #include "musical-request.hh"
index dec1d9fae6dcf2bc5de747433656c54caa3a20d5..004a4de362f10ae65d3034d37e78d1a6dd956eac 100644 (file)
@@ -1,7 +1,10 @@
+% Ugh, we need to override some LaTeX titling stuff
 \header {
-  title =      "Ouverture";
-  subtitle =   "Coriolan";
+  title =      "Ouverture\\vrule width0pt height 0pt depth 1ex";
+  subtitle =   "\\normalsize Zu Heinrich Joseph v. Collins Trauerspiel\\vrule width0pt height 0pt depth 1ex";
+  subsubtitle =        "\\Large\\bf Coriolan";
   opus =  "Op. 62";
+  piece = "\\normalfont\\large Allegro con brio";
   composer =    "Ludwig van Beethoven (1770-1827)";
   enteredby =   "JCN";
   instrument = \instrument;
   mutopiaopus = "O62";
   mutopiainstrument = \instrument;
   date = "1807";
-  source = "Edition Dr. Max Unger 1936 from original published parts and autograph.";
+
+  %{
+
+  From Ouverture Coriolan is no Urtext edition available, although
+  there are Urtext editions of Beethoven's symphonys.  The Eulenburg
+  edition is commonly regarded as the Coriolan Urtext.
+  
+  Edition Eulenburg is the ``first after many years'' that tries to
+  stay as close to the original text as possible.  During the 1900s,
+  it was customary for editors not to respect the original text and
+  make any changes they thought necessary.  Unger made corrections for
+  a few ``small and obvious'' inaccuracies.  This is the only score
+  edition to abbreviate (LilyPond source notation)
+
+      [es16 es g g] [b b c c]
+  
+  using the notation
+  
+      [es8:16 g: b: c:]
+
+  however, editions of individual parts by Breitkopf and Haertel use
+  this common practice abbreviation too.
+  
+  Edition Beethoven's Werke by Breitkopf and Haertel comes without any
+  commentary, copyright mark or date.  There are no significant
+  differences with ed. Unger.  The copy was very old and worn, but is
+  probably younger than ed. Unger.
+
+  Edition Beethoven Werke by G. Henle was a new study based upon the
+  three main sources, the score autograph, the published parts
+  Stimmen-Drucke N.Simrock Bonn (most probably from 1807) and
+  Industriekontor Vienna (1807).  They reinforce the assumptions made
+  by Unger that both published parts were first prints, noting that
+  both must have worked from a different copy of the autograph (and
+  not from the autograph itself), and that Simrock's is a bit closer
+  to the original autograph.  This edition is supposed to deviate from
+  the autograph only in using `modernised notation' for the following
+  cases (LilyPond source notation).
+
+  i. Use dots instead of ties for sustaining of notes when there's no
+  measure break:
+  
+      c4 ~ c8  ->  c4.
+
+  ii. Don't repeat accidentals within the same measure:
+  
+      \key es \major; b4 c b! c |   ->   \key es \major; b4 c b c
+
+  iii. Start slurring from first tied note, not from second:
+
+      c4 ~ c8 ( d ) e   ->   c4 ( ~ c8 d ) e
+
+  From these deviations, the third is the only one unique to this
+  edition, but these are easy to spot and mostly parenthesed; the
+  other two deviations are standard modern day music notation practice
+  and thus common to all editions.
+
+  %}
+    
+  source = "i. Ed. Eulenburg, edited by dr. Max Unger 1936 from and
+  following score autograph and original published parts, ie,
+  Stimmen-Drucke N.Simrock Bonn (most probably from 1807) and
+  Industriekontor Vienna (1807).\\\\
+  ii. Beethoven's Werke -- Ouverturen fuer Orchester; Breitkopf u. Haertel,
+  Leipzig (not dated, but very old and worn).\\\\
+  iii.  Beethoven Werke II,1 -- Ouverturen und Wellingtons Sieg; G. Henle
+  Verlag, Muenchen (1974).
+  Veroeffentlichung des Beethovenhauses in Bonn.
+  Die ausgabe wurde durch die Unterstuetzung des Landes Nordrhein-Westfalen
+  ermoeglicht.";
+  
   style = "Classical";
   copyright = "Public Domain";
   maintainer = "Jan Nieuwenhuizen";
   maintainer_email = "janneke@gnu.org";
-  lastupdated =         "2001/Jan/31";
+  lastupdated =         "2001/Feb/27";
   mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
     \\\\This music is part of the Mutopia project,
     \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset