Am Wednesday, 12. December 2007 schrieb Reinhold Kainhofer:
> Am Tuesday, 11. December 2007 schrieb Trevor Daniels:
> > I thought my suggestion might be too much manual
> > effort, but it's the best I have to offer.  If
> > \partcombine worked the way you want that would be
> > the obvious solution, but it doesn't.
>
> Yes, apparently, the issue that bites me is that partcombine detects even a
> single note played by only one instrument as a "solo". So partcombine will
> (almost) never print out a rest in parallel with a note in the other
> instrument. In real scores, there is a de-facto threshold before a rest in
> one instrument is regarded as a solo in the other instrument. If
> partcombine allowed such a (ideally user-settable) threshold property, it
> would fit my needs just fine....

I now made a file with some test cases for the part combination with comments 
in the .ly file (Attached). One can 
clearly see several bugs..

> > As Mats said,
> > we know \partcombine is lacking but I'm not aware of
> > any development effort going into it at present.
>
> I would actually work on it to fix my problems. 

Actually, after enabling the debug output, the structure of the 
determine-split-list function in scm/part-combiner.scm is quite clear (the 
result is a simple list of ( moment . state ) pairs...).

On the other hand, I found the following patch on the mailing list:
http://lists.gnu.org/archive/html/lilypond-devel/2005-07/msg00046.html
http://lists.gnu.org/archive/html/lilypond-devel/2005-07/msg00050.html

I haven't looked closely at the patch, but judging from the description, it 
does exactly what I had planned to do in determine-split-list. Does anyone 
know why these patches never got applied? Are there any problems with them? 
Or was there simply not enough interest?

I also read in some messages that the current implementation of the 
partcombiner is a hack and should be replaced by a version that uses 
streams... What's all this about? Are there still plans to significantly 
rewrite the partcombiner? If so, I won't touch it and invest time in code, 
which will later be replaced anyway.

Cheers,
Reinhold
-- 
------------------------------------------------------------------
Reinhold Kainhofer, Vienna University of Technology, Austria
email: [EMAIL PROTECTED], http://reinhold.kainhofer.com/
 * Financial and Actuarial Mathematics, TU Wien, http://www.fam.tuwien.ac.at/
 * K Desktop Environment, http://www.kde.org, KOrganizer maintainer
 * Chorvereinigung "Jung-Wien", http://www.jung-wien.at/
\version "2.11.35"
% Each measure displays one feature of partcombine
\header {
  title = "Stress-testing \partcombine"
  subtitle = "Each measure tests one feature of the part combination"
}
% TODO:
%   * spanners (slurs, hairpins, etc) in swallowed voices)
%   * lyrics
%   * also check the existing regression tests for important features!

\new Staff << 
  \key c \major
  \time 4/4
  \partcombine
  \relative c'' { \dynamicUp 
      % Whole-measure Rests are combined
      R1 | %2
      % Solo 2, voice 1 is quiet, dynamics directions taken from the correct 
voice
      R1 | %3
      % a2, notes of same length are put on one stem, different lengths use 
      % different stems (with appropriate stem directions)
      b2.\f b4 | %4
      % the other voice might have a short rest where one voice has a note => 
      % should not be interpreted as solo, in particular, when the "solo" 
instrument
      % has a long note, during which the other instrument sets in
      % BUG: Currently, the note IS detected as a solo
      b1 | %5
      % one voice might stop earlier and have a rest, while the other instrument
      % keeps playing -> display the rest
      b1 | %6
      % If both instruments play the same notes, use unisono "a2", notes are 
printed
      % only once
      b2. r4 | %7
      % dotted notes in unisono should only show the dots once (reported bug 
      % on mailinglist, fixed now)
      b2. b8. r16 | %8
      % notes differing only by different accidentals should be shown twice with
      % the correct accidentals
      % BUG: This does not work, only the accidentals of the first voice are 
displayed!
      gis4 g4 ges4 geses4 | %9
      % voice crossings don't ever combine the stems to make the instrument 
clear
      c,4 d2 fis8 fis8 | %10
      % beams with crossings don't combine, either, other beams should (except
      % when they have a unisono note, because otherwise the second instrument
      % would not know that it should also play the unisono note!)
      fis8[ fis fis fis] c'[ c] c[ c] | %11
      % chord combination should be customizable, currently, only notes 
differing 
      % at most an octave are combined (difference hardcoded to 8!)
      c4 f a c | %12
      % if a note has a long note and the other plays short notes with rests, 
      % the rests should be shown
      c,1 | %13
      % time, clef and key signatures might be different! How to handle them???
      % C urrently, the settings of the first voice are used
      \time 2/2 \key f \major \clef "bass"
      bes4 c d2 | %14
      % BUG: clef changes are NOT applied if the associated voice is quiet 
      % immediately afterwards, but the other voice has notes!
      \time 4/4 \key c \major \clef "treble"
      % Minimum length of solo for solo-detection should be configuration 
      % (currently, even a single note is detected as a solo!)
      r4 r4 r4 c4 | %15
      \clef "treble"
      % Minimum length of solo for solo-detection should be configuration 
      % (currently, even a single note is detected as a solo!)
      c4 r4 r4 c4 | %16
      % Rests with different length at the beginning of a measure cause 
problems!
      % They can't be combined easily, but they are also not printed out both!
      r4. c8 r8 c8 c4 | %17
      % BUG: if one voice has a long note at the very end, and the other 
instrument
      % plays a note, lilypond wrongly detects this as a solo of the other 
      % instrument!!!
      g1 |
  }
  \relative c' { \dynamicDown 
      R1 | %2
      f2.\f f4 | %3
      f2. f8 f8 | %4
      r4 f4 f2 | %5
      f2. r4 | %6
      f2. r4 | %7
      b2. b8. r16 | %8
      g4 gis4 g4 ges4 | %9
      c4 g2 g8 c,8 | %10
      c'8[ g fis c] [c' g] g[ c,] | %11
      b'4 g a c, | %12
      g'4 r g r | %13
      \key g\major fis2 g | %14
      \key c\major g4 g4 g g | %15
      g4 g4 g g | %16
      r8 g8 g4 r4 g4 | %17
      c,2 c2 \bar"|."
  }
>>
_______________________________________________
lilypond-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to