bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: midi2ly produces faulty output when using "-e"


From: David Kastrup
Subject: Re: midi2ly produces faulty output when using "-e"
Date: Wed, 27 Jul 2016 11:32:44 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux)

David Kastrup <address@hidden> writes:

> Mojca Miklavec <address@hidden> writes:
>
>> If I run midi2ly with -e, this is what I get as lilypond output:
>>     f,4 <f4 a4 c'4 >4 <a'4 c''4 f4 a4 c'4 >4
>>
>> The problem is that durations are not allowed inside chords with
>> single "brackets".
>>
>> This looks like a bug to me.
>
> Not just to you.

Would seem to be introduced by

commit 8cc7376d76c442096b950d8f5e9d1c57388f65bb
Author: Jan Nieuwenhuizen <address@hidden>
Date:   Mon Feb 21 14:37:32 2011 +0100

    Midi2ly: process all voices/threads of a channel.  Fixes #1531.

and in particular the change

@@ -272,9 +276,9 @@ class Note:
         elif commas < 0:
             s = s + "," * -commas
 
-        ## FIXME: compile fix --jcn
-        if (dump_dur and (global_options.explicit_durations
-                          or self.duration.compare (reference_note.duration))):
+        if ((dump_dur
+             and self.duration.compare (reference_note.duration))
+            or global_options.explicit_durations):
             s = s + self.duration.dump ()
 
         reference_note = self

Then we have commit

commit e1d47884955f31275ebb0972a08efd1d9d0457dc
Author: Jan Nieuwenhuizen <address@hidden>
Date:   Sat Dec 28 11:57:33 2002 +0000

    * .cvsignore: Remove stepmake (huh!?!), add lib.
    
    * GNUmakefile.in: Add libdir links for builddir runs.
    
    * scripts/midi2ly.py: Add [lilypond_]libdir/python to path,
    instead of datadir.
    
    * make/substitute.make (ATVARIABLES): Add lilypond_libdir,
    local_lilypond_libdir.
    
    * config.make.in (lilypond_libdir): Add.
    
    * stepmake/stepmake/substitute-rules.make:
    * stepmake/stepmake/script-rules.make:
    * stepmake/stepmake/python-module-rules.make:
    * stepmake/aclocal.m4 (STEPMAKE_LIBDIR): Fixes from
    lilypond-python-module patch.

with the attempt to fix a syntax error (Python does not understand
prefix syntax):

@@ -450,9 +446,10 @@ class Note:
                elif commas < 0:
                        s = s + "," * -commas
 
-               if and dump_dur (explicit_durations_p \
+               ## FIXME: compile fix --jcn
+               if (dump_dur and explicit_durations_p) \
                   or Duration.compare (self.duration,
-                                       reference_note.duration)):
+                                       reference_note.duration):
                        s = s + self.duration.dump ()
 
                reference_note = self

which would however appear to establish the problem inside of chords.
This was fixed again with commit

commit 8d0267eb80a7cb026751db0a9eabeb61d958776e
Author: Han-Wen Nienhuys <address@hidden>
Date:   Thu Mar 6 20:06:57 2003 +0000

    * ly/engraver-init.ly: use Hara kiri by default for
    ChordNames, FiguredBass and Lyrics(Voice) context.
    
    * lily/axis-group-engraver.cc (acknowledge_grob): use
    rhythmic-grob-interface for selecting items not to hara-kiri'd
    
    * scm/new-markup.scm (markup-function-list): add bracket,
    vbracket.
    
    * ly/engraver-init.ly (ChordNamesContext): set
    minimumVerticalExtent

containing
@@ -447,9 +447,9 @@ class Note:
                        s = s + "," * -commas
 
                ## FIXME: compile fix --jcn
-               if (dump_dur and explicit_durations_p) \
+               if dump_dur and (explicit_durations_p \
                   or Duration.compare (self.duration,
-                                       reference_note.duration):
+                                       reference_note.duration)):
                        s = s + self.duration.dump ()
 
                reference_note = self


only to get mauled again later by Jan again.  So there is a history of
this bug getting changed back and forth by Han-Wen and Jan (though I
don't really know when current chord syntax was finalized so maybe it
did not start as a bug?), and of course there is no mention of any
rationale in any commit message.  The difference is only seen when
explicit mode is on and chords become unusable then.

I'll try to see whether I can fix this mess.

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]