lilypond-auto
[Top][All Lists]
Advanced

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

[Lilypond-auto] [LilyIssues-auto] [testlilyissues:issues] #5119 MIDI2Ly


From: Auto mailings of changes to Lily Issues
Subject: [Lilypond-auto] [LilyIssues-auto] [testlilyissues:issues] #5119 MIDI2Ly fraction reduction
Date: Sun, 16 Apr 2017 14:32:24 +0000


[issues:#5119] MIDI2Ly fraction reduction

Status: New
Created: Sun Apr 16, 2017 02:32 PM UTC by Colin Campbell
Last Updated: Sun Apr 16, 2017 02:32 PM UTC
Owner: nobody

Submitted by Christopher Heckman:

When midi2ly is run, it will print fractions with large numerators
and denominators, like

r4361/120 e429/120 r431/120 e459/120 r4361/120 e429/120

when the actual durations are more likely to be

r2. e41/4 r41/4 e41/2 r2. e41/4 r41/4 e41/2 r2. e4*1/4

I have written a patch to fix this. Inside of the class Duration (line
129), replace the dump function with:


def dump (self):
    den = self.den; num = self.num;
    # code below by C C Heckman
    # looks for a neighboring fraction that reduces
    if num > 1:
        gcd1 = gcd (num - 1, den)
        gcd2 = gcd (num, den)
        gcd3 = gcd (num + 1, den)
        if gcd1 > gcd2 and gcd1 > gcd3:
            d = -1; g = gcd1
        elif gcd3 > gcd2 and gcd3 > gcd1:
            d = +1; g = gcd3
        else:
            d = 0; g = gcd2
            # for now, do nothing
        num = (num + d) / g
        den = den / g
    if den == 1:
        if num == 1:
            s = '%d' % self.dur
        elif num == 3 and self.dur != 1:
            s = '%d.' % (self.dur / 2)
        else:
            s = '%d*%d' % (self.dur, num)
    else:
        s = '%d*%d/%d' % (self.dur, num, den)
    # end modified code


Sent from sourceforge.net because address@hidden is subscribed to https://sourceforge.net/p/testlilyissues/issues/

To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/testlilyissues/admin/issues/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Testlilyissues-auto mailing list
address@hidden
https://lists.sourceforge.net/lists/listinfo/testlilyissues-auto

reply via email to

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