Re: Getting the height of a system.

2006-05-22 Thread Joe Neeman
On Mon, 2006-05-15 at 12:20 +0200, Han-Wen Nienhuys wrote:
 Perhaps you could even compute for each VerticalAxisGroup the range of 
 column ranks where it would disappear, and use that information add a 
 method to compute the approximate height of an alignment spanner, where 
 you explicitly call it with a (begin,end) pair of column ranks.
 
 In that case, you could get the approximate height of one broken system 
 in logarithmic time.
 
Here's a first attempt at doing this. It isn't complete or well-tested
yet. I add 4 grob properties
Y-extent-safe
Y-offset-safe
default-Y-extent-is-safe
default-Y-offset-is-safe

where Y-extent-safe and Y-offset-safe are functions that take 3
arguments, a grob, and the starting and ending column ranks.
default-Y-blah-is-safe just marks grobs where we don't need a
Y-blah-safe because the default Y-blah doesn't introduce side effects.
This is pretty much just there for NoteHead.

I've implemented Y-extent-safe for axis-group-interface,
hara-kiri-group-interface and NoteHead. I think it might be useful to do
side-position-interface also since that will take care of markups,
rehearsal marks and some other things that tend to be positioned away
from the staff. But that looks a bit harder so I haven't done it yet.

Is this similar to what you had in mind?
Index: lily/align-interface.cc
===
RCS file: /sources/lilypond/lilypond/lily/align-interface.cc,v
retrieving revision 1.97
diff -u -r1.97 align-interface.cc
--- lily/align-interface.cc	19 Feb 2006 00:14:59 -	1.97
+++ lily/align-interface.cc	22 May 2006 07:52:15 -
@@ -145,8 +145,11 @@
   align_to_fixed_distance ().
 */
 
-void
-Align_interface::align_elements_to_extents (Grob *me, Axis a)
+vectorReal
+Align_interface::get_extents_aligned_translates (Grob *me,
+		 vectorGrob* const all_grobs,
+		 Axis a,
+		 bool safe, int start, int end)
 {
   Spanner *me_spanner = dynamic_castSpanner * (me);
 
@@ -156,7 +159,7 @@
 {
   line_break_details = me_spanner-get_bound (LEFT)-get_property (line-break-system-details);
 
-  if (!me-get_system ())
+  if (!me-get_system ()  !safe)
 	me-warning (_ (vertical alignment called before line-breaking.\n
 			Only do cross-staff spanners with PianoStaff.));
 
@@ -171,10 +174,10 @@
   vectorInterval dims;
   vectorGrob* elems;
 
-  extract_grob_set (me, elements, all_grobs);
   for (vsize i = 0; i  all_grobs.size (); i++)
 {
-  Interval y = all_grobs[i]-extent (me, a);
+  Interval y = (safe  a == Y_AXIS) ? all_grobs[i]-safe_height (me, start, end)
+	: all_grobs[i]-extent (me, a);
   if (!y.is_empty ())
 	{
 	  Grob *e = dynamic_castGrob * (all_grobs[i]);
@@ -245,24 +248,31 @@
   if (translates.size ())
 {
   Real w = translates[0];
+
+  if (scm_is_number (align))
+	center_offset = total.linear_combination (scm_to_double (align));
+
   for  (vsize i = 0, j = 0; j  all_grobs.size (); j++)
 	{
 	  if (i  elems.size ()  all_grobs[j] == elems[i])
 	w = translates[i++];
-	  all_translates.push_back (w);
+	  all_translates.push_back (w - center_offset);
 	}
+}
+  return all_translates;
+}
 
-  /*
-	FIXME: uncommenting freaks out the Y-alignment of
-	line-of-score.
-  */
-  if (scm_is_number (align))
-	center_offset = total.linear_combination (scm_to_double (align));
+void
+Align_interface::align_elements_to_extents (Grob *me, Axis a)
+{
+  extract_grob_set (me, elements, all_grobs);
 
+  vectorReal translates = get_extents_aligned_translates (me, all_grobs, a, false, 0, 0);
+  if (translates.size ())
   for (vsize j = 0; j  all_grobs.size (); j++)
-	all_grobs[j]-translate_axis (all_translates[j] - center_offset, a);
-}
+	all_grobs[j]-translate_axis (translates[j], a);
 }
+
 Axis
 Align_interface::axis (Grob *me)
 {
Index: lily/axis-group-interface.cc
===
RCS file: /sources/lilypond/lilypond/lily/axis-group-interface.cc,v
retrieving revision 1.76
diff -u -r1.76 axis-group-interface.cc
--- lily/axis-group-interface.cc	16 Mar 2006 14:39:46 -	1.76
+++ lily/axis-group-interface.cc	22 May 2006 07:52:16 -
@@ -8,10 +8,14 @@
 
 #include axis-group-interface.hh
 
+#include align-interface.hh
 #include pointer-group-interface.hh
 #include grob.hh
 #include hara-kiri-group-spanner.hh
+#include item.hh
+#include paper-column.hh
 #include warn.hh
+#include international.hh
 
 void
 Axis_group_interface::add_element (Grob *me, Grob *e)
@@ -61,6 +65,41 @@
   return r;
 }
 
+Interval
+Axis_group_interface::relative_safe_height (Grob *me,
+	vectorGrob* const elts,
+	Grob *common,
+	int start, int end)
+{
+  Interval r;
+  vectorReal translates;
+
+  /* The children of an object with align-interface won't have their
+ offsets set properly because Y-offset is not safe for them. So
+ we do the translations here instead.
+  */
+
+  if (Align_interface::has_interface 

Re: lilypond ./ChangeLog lily/dynamic-engraver.cc l...

2006-05-22 Thread Han-Wen Nienhuys

Erlend Aasland schreef:

This change looks a bit weird to me. Should not this padding only be 
applied if the right part of the hairpin is attached to a barline (and 
not a note)? That is, something like this:


--- lily/hairpin.cc 16 May 2006 19:00:39 -  1.66
+++ lily/hairpin.cc 18 May 2006 06:56:39 -
@@ -162,7 +162,11 @@ Hairpin::print (SCM smob)
x_points[d] = e.center () - d * padding / 3;
}
  else
-   x_points[d] = e[d] - d * padding;
+   if (d == RIGHT 
+   !me-get_bound (RIGHT)-get_column ()-is_musical 
(me-get_bound (RIGHT)-get_column ()))

+ x_points[d] = e[d] - d * padding;
+   else
+ x_points[d] = e[d];
}
}
 }



yes, you're right. Thanks for the hint.



--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Getting the height of a system.

2006-05-22 Thread Han-Wen Nienhuys

Joe Neeman schreef:
In that case, you could get the approximate height of one broken system 
in logarithmic time.



Here's a first attempt at doing this. It isn't complete or well-tested
yet. I add 4 grob properties



Y-extent-safe
Y-offset-safe
default-Y-extent-is-safe
default-Y-offset-is-safe

where Y-extent-safe and Y-offset-safe are functions that take 3
arguments, a grob, and the starting and ending column ranks.
default-Y-blah-is-safe just marks grobs where we don't need a
Y-blah-safe because the default Y-blah doesn't introduce side effects.
This is pretty much just there for NoteHead.


Can't we just get away with assuming that functions that don't have 
y-extent-safe have point dimensions?   BTW, naming would be

like

  safe-foo-bar

safe might even be renamed pure or readonly which better reflects 
the idea of the functionality.



I've implemented Y-extent-safe for axis-group-interface,
hara-kiri-group-interface and NoteHead. I think it might be useful to do
side-position-interface also since that will take care of markups,
rehearsal marks and some other things that tend to be positioned away
from the staff. But that looks a bit harder so I haven't done it yet.

Is this similar to what you had in mind?


Actually, no.

What I had in mind was only to detect when hara kiri staves are alive or 
not, and use that to make an estimate of system height (with a fixed 
system height setting). Your approach here will get more accurate 
results, but I'm a little worried that the XXX_safe functions and 
properties will spread throughout the code, which is a problem as 
they're duplicating functionality.


Does this patch already work for determining system heights, or is just 
the beginning of the work? How much more must done?


BTW, the idea of precomputing when parts of a VerticalAlignment are 
hara-kiri'd can still be used to speed up the end result, I think.


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Han-Wen Nienhuys

Erik Sandberg schreef:

Hi,

I've finished 2 more patches for music streams. One of them is considerably 
larger than the other, but the two should be independent.


Some comments.

Also, in general,  I think it should be possible to split patches up 
further, eg. the tremolo stuff seems independent of the 
partcombine/lyriccombine stuff.



+ dir_ = RIGHT;
+   }
+  if (dir == STOP)
+   {


This looks a bit confusing. Maybe we can rename things to more clear?

+  // number of beams for short tremolos
+  int expected_beaming_;

please use expected_beam_count_ . In general, if you need these 1-line 
comments to explain what a member does, you have to rename that member.




+  SCM tremolo_symbol = ly_symbol2scm (TremoloSpanEvent);
+  SCM start_event_scm = scm_call_2 (ly_lily_module_constant 
(make-span-event), tremolo_symbol, scm_from_int (START));
+  unsmob_music (start_event_scm)-set_spot (*origin);
+  SCM stop_event_scm = scm_call_2 (ly_lily_module_constant 
(make-span-event), tremolo_symbol, scm_from_int (STOP));
+
+  Music *start_event = unsmob_music (start_event_scm);
+  Music *stop_event = unsmob_music (stop_event_scm);


I think you're leaking memory here, some unprotects are necessary.

+  SCM start_chord = scm_call_1 (ly_lily_module_constant 
(chordify-event), start_event_scm);
+  SCM stop_chord = scm_call_1 (ly_lily_module_constant 
(chordify-event), stop_event_scm);

+
+  child_list_ = scm_list_3 (start_chord, body-self_scm (), 
stop_chord);+


I think it should be possible to do without the chord_event, and simply 
insert the events themselves. Possibly you will need to make an 
Event_iterator, which is similar to Event_chord_iterator.



+  child_list_ = scm_list_3 (start_chord, body-self_scm (), stop_chord);+  
  }
+
+  Sequential_iterator::construct_children ();



+void
+Chord_tremolo_iterator::derived_mark () const
{
-  return child_iter_-try_music (m);
+  scm_gc_mark (child_list_);


It's better style to construct the child_list in get_music_list, and not 
store it all, as it's already stored in the base class in the cursor_ 
variable.  Then you also don't need a derived_mark() member.


I notice that you've done this with the other iterators too. Can you 
change this, also in time-scaled-music-iterator and percent-repeat-iterator?




Questions:
- It seems that the OutputPropertySetMusic music type is unused. Should I 
remove it?


yes.

- I have not yet done anything about old-lyric-combine-music-iterator. Should 
I spend time on making it work, or can we junk oldaddlyrics for the next 
release? (there's no regression test for oldaddlyrics, btw)


let's junk it.


- What's the Right Way to pass warnings and errors from Scheme code? I want 
some warning messages to make use of Input objects.


 (ly:message INPUT-SMOB format string ~a argument .. )




+  // Wait for a Create_context event, to catch implicitly created 
voices before it's too late.
+  t-events_below ()-add_listener (GET_LISTENER (check_new_context), 
ly_symbol2scm (CreateContext));
+  listening_ = true;
+}


why does this happen in find_voice() ?

Isn't it more natural to set the listener in construct_children?



+#if 0
   bool b = get_outlet ()-try_music ((Music *)m); // ugh
   Music_iterator *it = b ? (Music_iterator *) this : 0;// ugh
   if (!it)


can you strip the #if 0 sections from patches?


+  // UGH. Only swallow the output property event in the context
+  // it was intended for. This is inelegant but not inefficient.
+  if (context ()-context_name_symbol () == m-get_property 
(context-type))
+{
+  props_.push_back (m);
+  return true;
+}


this doesn't work with \alias. Can you use context::is_alias() ?

s_name ()));

+  // Send the event to a bottom context. The context-type property
+  // will later be used to apply the event in this context


Minor nit: can you use /* */ for multiline comments, with indents like

 /* bla bla blah
bla bla bla
 */



+  get_music ()-set_property (context-type,
+ get_outlet ()-context_name_symbol ());


You're modifying the input; that's not allowed.

Can you write a convert-ly rule to change

  \context Foo \applyOutput XXX

-

  \applyOutput #'Foo 

and change the \applyOutput to set context-type.



+IMPLEMENT_LISTENER (Part_combine_iterator, set_busy);
+void
+Part_combine_iterator::set_busy (SCM se)
+{
+  Stream_event *e = unsmob_stream_event (se);
+  SCM mus = e-get_property (music);
+  Music *m = unsmob_music (mus);
+  assert (m);
+
+  if (m-is_mus_type (note-event) || m-is_mus_type (cluster-note-event))
+busy_ = true;
+}
+
+/*
+* Processes a moment in an iterator, and returns whether any new music was 
reported.
+*/
+bool
+Part_combine_iterator::try_process (Music_iterator *i, Moment m)
+{
+  Dispatcher *disp = i-get_outlet ()-event_source ();
+  
+  disp-add_listener 

Re: pdf documentation broken

2006-05-22 Thread Han-Wen Nienhuys

Han-Wen Nienhuys schreef:



I have no clue. Can you refactor this into a bugreport for the texinfo 
mailing list?


oh, and can you revert the patch as far as necessary to build the 
documentation of CVS HEAD?


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


How to set text-direction

2006-05-22 Thread Cameron Horsburgh
Hi folks,

I'm trying to write the documentation for the newish feature whereby the 
direction of text scripts can be changed. From the 2.8 NEWS:

The order of words in \markup commands may now be reversed by setting the 
text-direction property. This is useful for Right-to-Left languages like Hebrew.

Unfortunately I can't figure out how to do it. Any clues?

-- 

=
Cameron Horsburgh

/dev/random says:
Dinner not ready: (A)bort (R)etry (P)izza

http://web.netcall.com.au/horsburgh

 _ _  _ _ _ 
/ ___| _ __ ___ (_) | ___| | | |
\___ \| '_ ` _ \| | |/ _ \ | | |
 ___) | | | | | | | |  __/_|_|_|
|/|_| |_| |_|_|_|\___(_|_|_)

=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Doc addition: Rehearsal Mark Alignment

2006-05-22 Thread Cameron Horsburgh
I've had a look at the note in the 2.8 News file about the new 
rehearsalMarkAlignSymbol. It seems to say everything that's needed, but I'm 
wondering if we need a list of possible values. The example shows key-signature 
and clef---where can I find the others?

I've also noticed that the explanation calls the value rehearsalMarkAlignSymbol 
whilst the snippet calls it break-align-symbol. What needs to be changed?

In the graphic in the News file the 'On Clef' example seems to be on the bar 
line as opposed to the clef. Is this due to the Rehearsal mark alignment 
problem that cropped up in late 2.7?

FWIW here's a suggested entry for 2.8.3 Rehearsal Marks as ripped off from 
the News:

**

The horizontal location of rehearsal marks can be adjusted by setting the 
rehearsalMarkAlignSymbol property:

\relative {
  c1
  \key cis \major
  \clef alto
  \override Score.RehearsalMark #'break-align-symbol = #'key-signature
  \mark on-key
  cis
 \key ces \major
  \override Score.RehearsalMark #'break-align-symbol = #'clef
  \clef treble
  \mark on clef
  ces
}

[Place music graphic here]

Other values that can be taken by break-align-symbol include:

[list of possible values]

**

-- 

=
Cameron Horsburgh

/dev/random says:
Dinner not ready: (A)bort (R)etry (P)izza

http://web.netcall.com.au/horsburgh

 _ _  _ _ _ 
/ ___| _ __ ___ (_) | ___| | | |
\___ \| '_ ` _ \| | |/ _ \ | | |
 ___) | | | | | | | |  __/_|_|_|
|/|_| |_| |_|_|_|\___(_|_|_)

=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Doc addition: Rehearsal Mark Alignment

2006-05-22 Thread Han-Wen Nienhuys

Cameron Horsburgh schreef:
I've had a look at the note in the 2.8 News file about the new rehearsalMarkAlignSymbol. 

 It seems to say everything that's needed, but I'm wondering if we need
 a list of possible values. The example shows key-signature and 
clef---where can I find the others?


Check out the values for break-align-symbol in define-grobs.scm

I've also noticed that the explanation calls the value rehearsalMarkAlignSymbol 

 whilst the snippet calls it break-align-symbol. What needs to be changed?

this was changed during the 2.7 cycle. The snippet is correct.
--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Getting the height of a system.

2006-05-22 Thread Joe Neeman
On Mon, 2006-05-22 at 10:57 +0200, Han-Wen Nienhuys wrote:
 Joe Neeman schreef:
  In that case, you could get the approximate height of one broken system 
  in logarithmic time.
 
  Here's a first attempt at doing this. It isn't complete or well-tested
  yet. I add 4 grob properties
  
  Y-extent-safe
  Y-offset-safe
  default-Y-extent-is-safe
  default-Y-offset-is-safe
  
  where Y-extent-safe and Y-offset-safe are functions that take 3
  arguments, a grob, and the starting and ending column ranks.
  default-Y-blah-is-safe just marks grobs where we don't need a
  Y-blah-safe because the default Y-blah doesn't introduce side effects.
  This is pretty much just there for NoteHead.
 
 Can't we just get away with assuming that functions that don't have 
 y-extent-safe have point dimensions?
I think so, but we would still need to have a guess for Y-offset to make
use of this.

 BTW, naming would be
 like
 
safe-foo-bar
 
 safe might even be renamed pure or readonly which better reflects 
 the idea of the functionality.
OK.

 
  I've implemented Y-extent-safe for axis-group-interface,
  hara-kiri-group-interface and NoteHead. I think it might be useful to do
  side-position-interface also since that will take care of markups,
  rehearsal marks and some other things that tend to be positioned away
  from the staff. But that looks a bit harder so I haven't done it yet.
  
  Is this similar to what you had in mind?
 
 Actually, no.
 
 What I had in mind was only to detect when hara kiri staves are alive or 
 not, and use that to make an estimate of system height (with a fixed 
 system height setting). Your approach here will get more accurate 
 results, but I'm a little worried that the XXX_safe functions and 
 properties will spread throughout the code, which is a problem as 
 they're duplicating functionality.
Yes, but I think 99% of the duplicated functionality is already in my
patch. Everything else I can think of, could be refactored like I've
done to Align_interface::align_elements_to_extents.

Most of the side-effect-causing stuff in the vertical spacing code comes
from calling extent and relative_position. Since I already have pure
versions of those, it should just be a matter of adding (bool pure, int
start, int end) to the paramaters of a few more functions and using
Grob::safe_height instead of Grob::extent when pure is true.

 
 Does this patch already work for determining system heights, or is just 
 the beginning of the work? How much more must done?
It works, but it currently only measures the height of StaffSymbol and
NoteHead. I'd like to expand it to also count things that are typically
above and below the staff. side-position-interface and
self-alignment-interface would probably be the only things left to do.
Maybe an estimate for Stem too, but that shouldn't be very important.

I want to be a little more accurate than using a fixed position for each
staff because the height of a staff can vary from piece to piece. For
example, I have a string quartet in which the 1st violin part has
systems about 20% taller than the 2nd violin because it tends to have
higher notes. The consequence in the page-breaking algorithm for
underestimating all the staff heights is that it will put too many
systems on a page and the systems will run off the bottom of the page.

OK, so the fix is easy for the user (just put system-height =
something-bigger) but I think the probability of obvious mistakes in the
default output should be _very_ low or else (1) it's inconvenient for
the user and (2) we'll get millions of duplicate bug reports and Mats
will have to patiently answer them all :)

 
 BTW, the idea of precomputing when parts of a VerticalAlignment are 
 hara-kiri'd can still be used to speed up the end result, I think.
Yes, I'll do that.


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: How to set text-direction

2006-05-22 Thread Cameron Horsburgh
On Mon, May 22, 2006 at 12:10:23PM +0200, Han-Wen Nienhuys wrote:
 Cameron Horsburgh schreef:
 Hi folks,
 
 I'm trying to write the documentation for the newish feature whereby the 
 direction of text scripts can be changed. From the 2.8 NEWS:
 
 The order of words in \markup commands may now be reversed by setting the 
 text-direction property. This is useful for Right-to-Left languages like 
 Hebrew.
 
 Unfortunately I can't figure out how to do it. Any clues?
 
 see the regtest file for text-direction
 
 
Nope--can't see it there. The onlything I can see in the regtest is 
markup-bidi-pango.ly, which seems to cheat a little bit!

I've grepped through CVS and the only likely things I can find are in 
define-grob-properties.scm and define-markup-commands.scm. Unfortunately I'm 
not able to glean from those how it should be done.
-- 

=
Cameron Horsburgh

/dev/random says:
Dinner not ready: (A)bort (R)etry (P)izza

http://web.netcall.com.au/horsburgh

 _ _  _ _ _ 
/ ___| _ __ ___ (_) | ___| | | |
\___ \| '_ ` _ \| | |/ _ \ | | |
 ___) | | | | | | | |  __/_|_|_|
|/|_| |_| |_|_|_|\___(_|_|_)

=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Doc addition: Rehearsal Mark Alignment

2006-05-22 Thread Cameron Horsburgh
On Mon, May 22, 2006 at 08:22:48PM +1000, Cameron Horsburgh wrote:

Okay, here's an updated version of my suggested entry.

**

The horizontal location of rehearsal marks can be adjusted by setting 
break-align-symbol:
 
\relative {
  c1
  \key cis \major
  \clef alto
  \override Score.RehearsalMark #'break-align-symbol = #'key-signature
  \mark on-key
  cis
 \key ces \major
  \override Score.RehearsalMark #'break-align-symbol = #'clef
  \clef treble
  \mark on clef
  ces
}

[Place music graphic here]

Other values that can be taken by break-align-symbol include:

ambitus, breathing-sign, clef, custos, staff-bar, left-edge, key-cancellation, 
key-signature, and time-signature.

Of course, setting break-align-symbol will only have an effect if the symbol 
appears at that point in the music.



**

-- 

=
Cameron Horsburgh

/dev/random says:
Dinner not ready: (A)bort (R)etry (P)izza

http://web.netcall.com.au/horsburgh

 _ _  _ _ _ 
/ ___| _ __ ___ (_) | ___| | | |
\___ \| '_ ` _ \| | |/ _ \ | | |
 ___) | | | | | | | |  __/_|_|_|
|/|_| |_| |_|_|_|\___(_|_|_)

=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Erik Sandberg

On 5/22/06, Han-Wen Nienhuys [EMAIL PROTECTED] wrote:


Also, in general,  I think it should be possible to split patches up
further, eg. the tremolo stuff seems independent of the
partcombine/lyriccombine stuff.


A problem is my limited internet access. I can cvs diff very seldom; I
often work several days on lily between the diffs. This makes it
difficult/troublesome to keep patches atomic.

Currently I keep 3 copies of the lily tree, so I can maintain 2
independent diff branches + one unmodified version; this already leads
to problems (the tremolo stuff was first supposed to go into branch 2,
but was accidentally added to branch 1 instead).


+ dir_ = RIGHT;
+   }
+  if (dir == STOP)
+   {


They don't represent the same thing. RIGHT means that the right
beam-count is modified, STOP means that an event stops a spanner.


 
 +  SCM tremolo_symbol = ly_symbol2scm (TremoloSpanEvent);
+  SCM start_event_scm = scm_call_2 (ly_lily_module_constant 
(make-span-event), tremolo_symbol, scm_from_int (START));
+  unsmob_music (start_event_scm)-set_spot (*origin);
+  SCM stop_event_scm = scm_call_2 (ly_lily_module_constant 
(make-span-event), tremolo_symbol, scm_from_int (STOP));
+
+  Music *start_event = unsmob_music (start_event_scm);
+  Music *stop_event = unsmob_music (stop_event_scm);

I think you're leaking memory here, some unprotects are necessary.


The Music objects are created by SCM code, I thought stuff returned
from Scheme was unprotected in general?


 +  SCM start_chord = scm_call_1 (ly_lily_module_constant
(chordify-event), start_event_scm);
 +  SCM stop_chord = scm_call_1 (ly_lily_module_constant
 (chordify-event), stop_event_scm);
 +
 +  child_list_ = scm_list_3 (start_chord, body-self_scm (),
 stop_chord);+

I think it should be possible to do without the chord_event, and simply
insert the events themselves. Possibly you will need to make an
Event_iterator, which is similar to Event_chord_iterator.


ok, I'll look into that.


+  child_list_ = scm_list_3 (start_chord, body-self_scm (), stop_chord);+ 
   }
+
+  Sequential_iterator::construct_children ();

+void
+Chord_tremolo_iterator::derived_mark () const
 {
-  return child_iter_-try_music (m);
+  scm_gc_mark (child_list_);

It's better style to construct the child_list in get_music_list, and not
store it all, as it's already stored in the base class in the cursor_
variable.  Then you also don't need a derived_mark() member.

I notice that you've done this with the other iterators too. Can you
change this, also in time-scaled-music-iterator and percent-repeat-iterator?


ok


 +  // Wait for a Create_context event, to catch implicitly created 
voices before it's too late.
 +  t-events_below ()-add_listener (GET_LISTENER (check_new_context), 
ly_symbol2scm (CreateContext));
 +  listening_ = true;
 +}

why does this happen in find_voice() ?

Isn't it more natural to set the listener in construct_children?


good idea (which btw seems to make a dirty workaround clean).


 +  // UGH. Only swallow the output property event in the context
 +  // it was intended for. This is inelegant but not inefficient.
 +  if (context ()-context_name_symbol () == m-get_property 
(context-type))
 +{
 +  props_.push_back (m);
 +  return true;
 +}

this doesn't work with \alias. Can you use context::is_alias() ?


ok


 +   get_outlet ()-context_name_symbol ());

You're modifying the input; that's not allowed.

Can you write a convert-ly rule to change

   \context Foo \applyOutput XXX

-

   \applyOutput #'Foo 

and change the \applyOutput to set context-type.


ok


 +/*
 +* Processes a moment in an iterator, and returns whether any new music was 
reported.
 +*/
 +bool
 +Part_combine_iterator::try_process (Music_iterator *i, Moment m)
 +{
 +  Dispatcher *disp = i-get_outlet ()-event_source ();
 +
 +  disp-add_listener (GET_LISTENER (set_busy), ly_symbol2scm (MusicEvent));
 +  busy_ = false;
 +
 +  i-process (m);
 +
 +  disp-remove_listener (GET_LISTENER (set_busy), ly_symbol2scm 
(MusicEvent));
 +  return busy_;
 +}

I don't understand this. Why are you adding and removing listeners all
the time? Why don't you signal the state of the Part_combine_iterator to
set_busy through another boolean member?  ie.


Good idea, thanks (I just tried to emulate the previous behaviour as
closely as possible)


I don't understand. What is this for?


I don't remember right now (I added those lines last summer). It might
be related to problems with grace notes, or somethign like that.
Should I remove hte lines if I can't find a more clear justification?


 - (tremolo-type ,integer? )
 + (tremolo-type ,integer? speed of tremolo, e.g. 16 for c4:16)

hmm. That sucks, we should store the negative log (-4 for 16) rather
than 16.


why negative? the parameter is used to control the number of tremolo beams.


 

Re: How to set text-direction

2006-05-22 Thread Han-Wen Nienhuys

Cameron Horsburgh schreef:

On Mon, May 22, 2006 at 12:10:23PM +0200, Han-Wen Nienhuys wrote:

Cameron Horsburgh schreef:

Hi folks,

I'm trying to write the documentation for the newish feature whereby the 
direction of text scripts can be changed. From the 2.8 NEWS:


The order of words in \markup commands may now be reversed by setting the 
text-direction property. This is useful for Right-to-Left languages like 
Hebrew.


Unfortunately I can't figure out how to do it. Any clues?

see the regtest file for text-direction



Nope--can't see it there. The onlything I can see in the regtest is 
markup-bidi-pango.ly, which seems to cheat a little bit!

I've grepped through CVS and the only likely things I can find are in 
define-grob-properties.scm and define-markup-commands.scm. Unfortunately I'm 
not able to glean from those how it should be done.


Try this:

\markup {
  \override #(cons 'text-direction LEFT) \wordwrap { hello this will be 
reversed } }


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Han-Wen Nienhuys

Erik Sandberg schreef:

Also, in general,  I think it should be possible to split patches up
further, eg. the tremolo stuff seems independent of the
partcombine/lyriccombine stuff.


A problem is my limited internet access. I can cvs diff very seldom; I
often work several days on lily between the diffs. This makes it
difficult/troublesome to keep patches atomic.

Currently I keep 3 copies of the lily tree, so I can maintain 2
independent diff branches + one unmodified version; this already leads
to problems (the tremolo stuff was first supposed to go into branch 2,
but was accidentally added to branch 1 instead).


You might want to experiment with some of the newer VC systems. Someone 
on the list mirrors lilypond CVS with GIT.





+ dir_ = RIGHT;
+   }
+  if (dir == STOP)
+   {


They don't represent the same thing. RIGHT means that the right
beam-count is modified, STOP means that an event stops a spanner.


I know they don't, that's why I suggest to use different names.


 +  SCM tremolo_symbol = ly_symbol2scm (TremoloSpanEvent);
+  SCM start_event_scm = scm_call_2 (ly_lily_module_constant 
(make-span-event), tremolo_symbol, scm_from_int (START));

+  unsmob_music (start_event_scm)-set_spot (*origin);
+  SCM stop_event_scm = scm_call_2 (ly_lily_module_constant 
(make-span-event), tremolo_symbol, scm_from_int (STOP));

+
+  Music *start_event = unsmob_music (start_event_scm);
+  Music *stop_event = unsmob_music (stop_event_scm);

I think you're leaking memory here, some unprotects are necessary.


The Music objects are created by SCM code, I thought stuff returned
from Scheme was unprotected in general?


Yes, you're right. sorry.


I don't understand. What is this for?


I don't remember right now (I added those lines last summer). It might
be related to problems with grace notes, or somethign like that.
Should I remove hte lines if I can't find a more clear justification?


Yes.


 - (tremolo-type ,integer? )
 + (tremolo-type ,integer? speed of tremolo, e.g. 16 for c4:16)

hmm. That sucks, we should store the negative log (-4 for 16) rather
than 16.


why negative? 


negative log of the duration, log2(1/16) = -4


 +#define LOWLEVEL_MAKE_SYNTAX(proc, args) \
 +  scm_apply_0 (proc, args)
 +/* Syntactic Sugar. */
  #define MAKE_SYNTAX(name, location, ...) \
 -  scm_apply_0 (ly_lily_module_constant (name), scm_list_n 
(make_input (location), __VA_ARGS__, SCM_UNDEFINED));
 +  LOWLEVEL_MAKE_SYNTAX (ly_lily_module_constant (name), scm_list_n 
(make_input (location), __VA_ARGS__, SCM_UNDEFINED));



I don't see the point of LOWLEVEL_MAKE_SYNTAX


It was used for music functions first, then I found a different way to
implement music functions. The macro can be used to use arbitrary
function objects iso. symbols to represent functions.





I think the proper way is to make it a music macro; is it OK to keep
it a music function until music macros exist? (also, the music
function code attempts to signal errors when \once is used in the
wrong place, so from a user's point of view, little changes)


Why do you want to make it a macro?


  (define-ly-syntax-loc (repeat type num body alts)
(make-repeat type num body alts))
 +
 +(define-ly-syntax-loc (context-specification type id mus ops 
create-new?)


I believe that according to Scheme coding standards, the ? is only used
on procedures, so this should just be create-new.


ok. I recall seeing a ? in an existing non-procedure symbol in lily;
I'll remove it the next time I see it.


please do.


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: How to set text-direction

2006-05-22 Thread Cameron Horsburgh
On Mon, May 22, 2006 at 02:02:11PM +0200, Han-Wen Nienhuys wrote:
 
 Try this:
 
 \markup {
   \override #(cons 'text-direction LEFT) \wordwrap { hello this will be 
 reversed } }
 

This code:

%%%
version 2.9.4

\relative{

a^\markup {\override #(cons 'text-direction LEFT) \wordwrap { hello this will 
be reversed } }


}

%%%

gives me an error:

Parsing...
Interpreting music... [1]
Preprocessing graphical objects... 
Calculating line breaks... [2]
Drawing systems... ERROR: In procedure :
ERROR: Wrong type: #f


-- 

=
Cameron Horsburgh

/dev/random says:
Dinner not ready: (A)bort (R)etry (P)izza

http://web.netcall.com.au/horsburgh

 _ _  _ _ _ 
/ ___| _ __ ___ (_) | ___| | | |
\___ \| '_ ` _ \| | |/ _ \ | | |
 ___) | | | | | | | |  __/_|_|_|
|/|_| |_| |_|_|_|\___(_|_|_)

=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: How to set text-direction

2006-05-22 Thread Han-Wen Nienhuys

Cameron Horsburgh schreef:

%%%
version 2.9.4





gives me an error:






2.9.5


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: How to set text-direction

2006-05-22 Thread Cameron Horsburgh
On Mon, May 22, 2006 at 02:16:40PM +0200, Han-Wen Nienhuys wrote:
 Cameron Horsburgh schreef:
 %%%
 version 2.9.4
 
 
 
 gives me an error:
 
 
 
 2.9.5
 
 
Still no difference.
-- 

=
Cameron Horsburgh

/dev/random says:
Dinner not ready: (A)bort (R)etry (P)izza

http://web.netcall.com.au/horsburgh

 _ _  _ _ _ 
/ ___| _ __ ___ (_) | ___| | | |
\___ \| '_ ` _ \| | |/ _ \ | | |
 ___) | | | | | | | |  __/_|_|_|
|/|_| |_| |_|_|_|\___(_|_|_)

=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Erik Sandberg

On 5/22/06, Han-Wen Nienhuys [EMAIL PROTECTED] wrote:

Erik Sandberg schreef:
 I think the proper way is to make it a music macro; is it OK to keep
 it a music function until music macros exist? (also, the music
 function code attempts to signal errors when \once is used in the
 wrong place, so from a user's point of view, little changes)

Why do you want to make it a macro?


It removes a rule from the parser, and it makes it possible to reuse
\once for future commands where it's relevant.

Because \once is tied to property settings,
\set #'foo=#bar
translates into somethign like
(property-operation 'set '() 'foo 'bar)
and \once \set #'foo=#bar
would naturally translates into something like
(property-operation 'set '() 'foo 'bar #t)
i.e., it's natural to view \once as operating on the syntax.

(I realise now that I can achieve the same inside parser by shuffling
around rules a bit, but I don't see any advantage)

Erik


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Han-Wen Nienhuys

Erik Sandberg schreef:

 I think the proper way is to make it a music macro; is it OK to keep
 it a music function until music macros exist? (also, the music
 function code attempts to signal errors when \once is used in the
 wrong place, so from a user's point of view, little changes)

Why do you want to make it a macro?


It removes a rule from the parser, and it makes it possible to reuse
\once for future commands where it's relevant.

Because \once is tied to property settings,
\set #'foo=#bar
translates into somethign like
(property-operation 'set '() 'foo 'bar)
and \once \set #'foo=#bar
would naturally translates into something like
(property-operation 'set '() 'foo 'bar #t)
i.e., it's natural to view \once as operating on the syntax.

(I realise now that I can achieve the same inside parser by shuffling
around rules a bit, but I don't see any advantage)


I don't see how you can apply to anything else besides property 
settings, and that's exactly why I want to keep it with property 
settings. Making it a macro, which is processed at a later stage sounds 
like a fragile solution to me.


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


lilypond 2.8 make fails

2006-05-22 Thread Karl Hammar
Patch in attachment.
Building lilypond 2.8 (from todays cvs), make fails:

  $ ./configure 
  checking build system type... i686-pc-linux-gnu
  checking Package... LILYPOND
  ...
  checking for mftrace... mftrace
  checking mftrace version... 1.2.4
  ...
  $ make
  cd /home/karl/most/music/lilypond/2.8/out  rm -rf bin lib share
  mkdir -p ./out/bin
  ...
  make[1]: Entering directory `/home/karl/most/music/lilypond/2.8/mf'

  ERROR: mftrace not found

  For obtaining PFA/SVG fonts, either install mftrace 
  (see http://www.xs4all.nl/~hanwen/mftrace/ ),
  or try one of the following commands in this directory: 

   make get-fonts 
   make get-rpm-fonts 
   make get-deb-fonts 

  These commands will try to download the files from internet.
  make[1]: Leaving directory `/home/karl/most/music/lilypond/2.8/mf'
  $

Error is in mf/GNUmakefile:

  $ grep -B1 -A3 '(MFTRACE)' mf/GNUmakefile 
  pfa_warning:
  ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//'),mftrace)
  @echo 
  @echo ERROR: mftrace not found
  @echo 
  $

Running the shell line:

  $ mftrace --version | sed 's/ .*//'
  mftrace

  This
  License
  under
  information.

  Copyright



  $

It becomes mftrace This License under information. Copyright  in make,
which is not eq to mftrace.

It worked fine with older mftrace since they produced one line versions:

  $ /usr/bin/mftrace --version
  mftrace 1.1.17
  $

Regards
/Karl

Index: mf/GNUmakefile
===
RCS file: /sources/lilypond/lilypond/mf/GNUmakefile,v
retrieving revision 1.193.2.1
diff -u -r1.193.2.1 GNUmakefile
--- mf/GNUmakefile  29 Mar 2006 16:19:38 -  1.193.2.1
+++ mf/GNUmakefile  22 May 2006 14:22:08 -
@@ -138,7 +138,7 @@
${MAKE} -C $(top-build-dir) link-mf-tree
 
 pfa_warning:
-ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//'),mftrace)
+ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//;1q'),mftrace)
@echo 
@echo ERROR: mftrace not found
@echo 
___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond 2.8 make fails

2006-05-22 Thread Han-Wen Nienhuys

Karl Hammar schreef:

Patch in attachment.
Building lilypond 2.8 (from todays cvs), make fails:




Index: mf/GNUmakefile
===
RCS file: /sources/lilypond/lilypond/mf/GNUmakefile,v
retrieving revision 1.193.2.1
diff -u -r1.193.2.1 GNUmakefile
--- mf/GNUmakefile  29 Mar 2006 16:19:38 -  1.193.2.1
+++ mf/GNUmakefile  22 May 2006 14:22:08 -
@@ -138,7 +138,7 @@
${MAKE} -C $(top-build-dir) link-mf-tree
 
 pfa_warning:

-ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//'),mftrace)
+ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//;1q'),mftrace)


I don't have this in todays CVS of lilypond 2.8.


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Johannes Schindelin
Hi,

On Mon, 22 May 2006, Han-Wen Nienhuys wrote:

 Erik Sandberg schreef:
   Also, in general,  I think it should be possible to split patches up
   further, eg. the tremolo stuff seems independent of the
   partcombine/lyriccombine stuff.
  
  A problem is my limited internet access. I can cvs diff very seldom; I
  often work several days on lily between the diffs. This makes it
  difficult/troublesome to keep patches atomic.
  
  Currently I keep 3 copies of the lily tree, so I can maintain 2
  independent diff branches + one unmodified version; this already leads
  to problems (the tremolo stuff was first supposed to go into branch 2,
  but was accidentally added to branch 1 instead).
 
 You might want to experiment with some of the newer VC systems. Someone 
 on the list mirrors lilypond CVS with GIT.

I do.

If you are interested, I can make it public.

At the moment, I track the CVS every morning (Greenwich time).

Ciao,
Dscho



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: lilypond 2.8 make fails

2006-05-22 Thread Karl Hammar

 Karl Hammar schreef:
  Patch in attachment.
  Building lilypond 2.8 (from todays cvs), make fails:
 
  
  Index: mf/GNUmakefile
  ===
  RCS file: /sources/lilypond/lilypond/mf/GNUmakefile,v
  retrieving revision 1.193.2.1
  diff -u -r1.193.2.1 GNUmakefile
  --- mf/GNUmakefile  29 Mar 2006 16:19:38 -  1.193.2.1
  +++ mf/GNUmakefile  22 May 2006 14:22:08 -
  @@ -138,7 +138,7 @@
  ${MAKE} -C $(top-build-dir) link-mf-tree
   
   pfa_warning:
  -ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//'),mftrace)
  +ifneq ($(shell $(MFTRACE) --version | sed 's/ .*//;1q'),mftrace)
 
 I don't have this in todays CVS of lilypond 2.8.
...

 Oops, wrong tag, sorry for the noise.

Regards
/Karl




___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


release announcements?

2006-05-22 Thread Thomas Bushnell BSG

Why do I never see release announcements on lilypond-devel?


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Erik Sandberg
On Monday 22 May 2006 17:43, Johannes Schindelin wrote:
  You might want to experiment with some of the newer VC systems. Someone
  on the list mirrors lilypond CVS with GIT.

 I do.

 If you are interested, I can make it public.

 At the moment, I track the CVS every morning (Greenwich time).

That sounds great, if it's not too much work for you. Can one perform cvs 
commits and GIT updates from the same source dir?

(I had a quick look on the field of revision control systems; currently svn, 
darcs and git look like the best choices. I haven't decided which system to 
use yet.)

-- 
Erik


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


lilypond 2.8, make fails, NCSB_SOURCE_FILES

2006-05-22 Thread Karl Hammar

$ ./configure; make
...
make[1]: Entering directory `/home/karl/most/music/lilypond/2.8/mf'
make[1]: *** No rule to make target [EMAIL PROTECTED]@', needed by 
`out/CenturySchL-Ital.otf'.  Stop.
make[1]: Leaving directory `/home/karl/most/music/lilypond/2.8/mf'
make: *** [all] Error 2
$

Does not resolve symlinks when looking for gs fonts.

Patch 'cvs diff -u -r lilypond_2_8 configure.in' attached.

Regards
/Karl

Index: configure.in
===
RCS file: /sources/lilypond/lilypond/configure.in,v
retrieving revision 1.184.2.2
diff -u -r1.184.2.2 configure.in
--- configure.in9 May 2006 08:21:57 -   1.184.2.2
+++ configure.in22 May 2006 16:15:11 -
@@ -75,6 +75,7 @@
   NCSB_FILE=`$FCMATCH --verbose 'Century Schoolbook L:style=$style' | grep 
'file:'`
 
   NCSB_FILE=`echo $NCSB_FILE | sed 's/^.*\(.*\).*$/\1/g'`
+  NCSB_FILE=`readlink -f $NCSB_FILE`
   NCSB_SOURCE_FILES=$NCSB_FILE $NCSB_SOURCE_FILES
 done
   else
___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: release announcements?

2006-05-22 Thread Han-Wen Nienhuys

Thomas Bushnell BSG schreef:

Why do I never see release announcements on lilypond-devel?



because they're posted on info-lilypond@gnu.org


--

Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen

LilyPond Software Design
 -- Code for Music Notation
http://www.lilypond-design.com



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Yet another 2 patches for music streams

2006-05-22 Thread Johannes Schindelin
Hi,

On Mon, 22 May 2006, Erik Sandberg wrote:

 On Monday 22 May 2006 17:43, Johannes Schindelin wrote:
   You might want to experiment with some of the newer VC systems. Someone
   on the list mirrors lilypond CVS with GIT.
 
  I do.
 
  If you are interested, I can make it public.
 
  At the moment, I track the CVS every morning (Greenwich time).
 
 That sounds great, if it's not too much work for you. Can one perform cvs 
 commits and GIT updates from the same source dir?

The basic commands are very similar to CVS. IMHO the biggest three 
differences are:
- no server needed (git commit commits to the .git directory)
- no cvs update, as there can be many servers, but
  git fetch url
- you can switch branches easily by git checkout branch

So, typically I just update with

git fetch origin

which updates my origin branch to what was in CVS this morning. Then, I 
just create a throw-away branch to hack on lilypond:

git checkout -b wonderfulNewWork origin

This sets up a branch wonderfulNewWork starting at the HEAD of origin.
Now I hack on lilypond as much as I want. At the same mile-stones as with 
CVS, I commit with

git commit -a -m a short comment to remember what I did

The -a means all changes. If I were to commit only the changes to a 
couple of files, it would do

git commit -m some other comment GNUmakefile flower/random.cxx

After a couple of days of work, I do the equivalent to cvs update:

git pull origin

Note the pull, not fetch. It means to pull the origin branch, and 
merge it into the current branch. Then I get the patch with

git diff origin  my.patch

Actually, you can do more quite cool things with git. For example, you can 
look at the history with git log. And if you want to see the patches 
right away, do git log -p to see the patch after each commit. To do that 
with the branch origin instead of the current one, do
git log -p origin.

You can use the pickaxe to search when a function or variable or 
whatever was added: git log -Sthefunction will show you only the commits 
where the patch contains thefunction. If you know which file contains 
it, you can make that even faster with git log -Sthefunction 
that/file.c.

Of course, there is at least one down-side, too. Since there is no central 
server, you actually have all the history in the .git folder. In packed 
format this means about 55 megabyte for lilypond.

Ah, and the most important thing: you can clone the initial repository by

git clone http://wbgn013.biozentrum.uni-wuerzburg.de/lilypond.git

This downloads the 55meg and sets up a local clone in the folder 
lilypond. Please be nice to the server...

Ciao,
Dscho




___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Cautionary accidentals in Ambitus

2006-05-22 Thread Mats Bengtsson

Here's an ugly workaround:

\score{

 \relative c {
   \clef bass
   \once \override Staff.Clef #'stencil = ##f
   \once \override Staff.TimeSignature #'stencil = ##f
   \partial 4
   s4
   \bar 
   \set Staff.forceClef = ##t
   \once \override Staff.Clef #'full-size-change = ##t
   \time 4/4
   \clef bass
   \key des \major
   des aes des aes |
 }

 \layout{
   \context {
 \Voice
 \consists Ambitus_engraver
   }
 }
}


  /Mats

Cameron Horsburgh wrote:


Hi folks,

I've recently written a timpani part for a score I'm writing, and I thought I'd 
add an ambitus to the beginning of the part to show the necessary tuning (I 
know, it's not standard!)

The two notes I want the timps tuned to are aes and des, and the key is des 
major. However, because the key signature (which comes _after_ the ambitus) 
includes aes and des there are no flats on the ambitus. How do I add cautionary 
accidentals?

I notice in the programme reference that Ambitus_engraver has a setting for 
cautionary accidentals, but it doesn't tell me how to turn them on or off.

Here's a simple version of my code:

\version 2.9.4

\score{

 \relative c {
   \clef bass
   \key des \major
   des aes des aes |
 }

 \layout{
   \context {
 \Voice
 \consists Ambitus_engraver
   }
 }
}
 




--
=
Mats Bengtsson
Signal Processing
Signals, Sensors and Systems
Royal Institute of Technology
SE-100 44  STOCKHOLM
Sweden
Phone: (+46) 8 790 8463 
   Fax:   (+46) 8 790 7260
Email: [EMAIL PROTECTED]
WWW: http://www.s3.kth.se/~mabe
=



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: [patch] lilypond -o other-dir/new-name

2006-05-22 Thread Nicolas Sceaux
Han-Wen Nienhuys [EMAIL PROTECTED] writes:

 Nicolas Sceaux schreef:
 Hi,
 Using LilyPond from CVS, when invoking lilypond with the -o option,
 specifying an output directory *and* a alternate basename, the alternate
 basename is disregarded.
   $ lilypond -o out/lwv05-letter lwv05.ly
 == produces files out/lwv05.* iso. out/lwv05-letter.*
 The following patch may fix this problem.

 Just a question: what do you think is the correct behavior for

lilypond -o dir/base foo.ly bar.ly

oh ok I see. I didn't thought about a single invocation on several files.
In that case the base name should be disregarded. It does not make sense
to specify one base name for several output files. dooh.


___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: pdf documentation broken

2006-05-22 Thread Graham Percival


On 21-May-06, at 5:45 PM, Han-Wen Nienhuys wrote:


Graham Percival schreef:
I broken the creation of the pdf docs; I suspect it was the @cindex 
@code{} = @funindex macro (producing @findex and @kindex) change.  I 
didn't notice it at the time (a few days ago) because it didn't 
complain for some reason.  (enough pre-
I have no clue. Can you refactor this into a bugreport for the texinfo 
mailing list?


I'm in discussion with Karl; the cause of the problem wasn't 
immediately obvious to him, but he suggested using -E (expand macros).  
This avoids the original problem, but causes a few other problems.  I'm 
tracking them down; if I can't fix it tonight, I'll revert CVS.


Cheers,
- Graham



___
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel