abjad.duration
|
Adds |
|
Divides |
|
Changes |
|
Makes fraction from |
|
Changes |
|
Spells |
|
Duration. |
|
Offset. |
|
Ratio. |
- abjad.duration.durations(durations) list[Duration] [source]
Changes
durations
to durations.>>> abjad.durations([(15, 8), (3, 8)]) [Duration(15, 8), Duration(3, 8)]
- abjad.duration.fraction_from_dot_count(dot_count: int) Fraction [source]
Makes fraction from
dot_count
.>>> abjad.duration.fraction_from_dot_count(0) Fraction(1, 1)
>>> abjad.duration.fraction_from_dot_count(1) Fraction(3, 2)
>>> abjad.duration.fraction_from_dot_count(2) Fraction(7, 4)
>>> abjad.duration.fraction_from_dot_count(3) Fraction(15, 8)
>>> abjad.duration.fraction_from_dot_count(4) Fraction(31, 16)
- abjad.duration.pair(argument) tuple[int, int] [source]
Changes
argument
to pair.>>> abjad.duration.pair((3, 6)) (3, 6)
>>> abjad.duration.pair(abjad.Fraction(3, 6)) (1, 2)
>>> abjad.duration.pair(abjad.Duration(3, 6)) (1, 2)
>>> abjad.duration.pair(abjad.Offset((3, 6))) (1, 2)
>>> abjad.duration.pair(abjad.TimeSignature((3, 6))) (3, 6)
- abjad.duration.with_denominator(duration, denominator) tuple[int, int] [source]
Spells
duration
as pair withdenominator
.>>> abjad.duration.with_denominator(abjad.Duration(3, 6), 12) (6, 12)
>>> for numerator in range(12): ... fraction = abjad.Fraction(numerator, 6) ... print(fraction, abjad.duration.with_denominator(fraction, 12)) ... 0 (0, 12) 1/6 (2, 12) 1/3 (4, 12) 1/2 (6, 12) 2/3 (8, 12) 5/6 (10, 12) 1 (12, 12) 7/6 (14, 12) 4/3 (16, 12) 3/2 (18, 12) 5/3 (20, 12) 11/6 (22, 12)
>>> for numerator in range(12): ... pair = (numerator, 6) ... print(pair, abjad.duration.with_denominator(pair, 8)) ... (0, 6) (0, 8) (1, 6) (1, 6) (2, 6) (2, 6) (3, 6) (4, 8) (4, 6) (4, 6) (5, 6) (5, 6) (6, 6) (8, 8) (7, 6) (7, 6) (8, 6) (8, 6) (9, 6) (12, 8) (10, 6) (10, 6) (11, 6) (11, 6)
>>> for numerator in range(12): ... pair = (numerator, 6) ... print(pair, abjad.duration.with_denominator(pair, 12)) ... (0, 6) (0, 12) (1, 6) (2, 12) (2, 6) (4, 12) (3, 6) (6, 12) (4, 6) (8, 12) (5, 6) (10, 12) (6, 6) (12, 12) (7, 6) (14, 12) (8, 6) (16, 12) (9, 6) (18, 12) (10, 6) (20, 12) (11, 6) (22, 12)
- class abjad.duration.Duration(*arguments)[source]
Duration.
Initializes from integer numerator:
>>> abjad.Duration(3) Duration(3, 1)
Initializes from integer numerator and denominator:
>>> abjad.Duration(3, 16) Duration(3, 16)
Initializes from integer-equivalent numeric numerator:
>>> abjad.Duration(3.0) Duration(3, 1)
Initializes from integer-equivalent numeric numerator and denominator:
>>> abjad.Duration(3.0, 16) Duration(3, 16)
Initializes from integer-equivalent singleton:
>>> abjad.Duration((3,)) Duration(3, 1)
Initializes from integer-equivalent pair:
>>> abjad.Duration((3, 16)) Duration(3, 16)
Initializes from other duration:
>>> abjad.Duration(abjad.Duration(3, 16)) Duration(3, 16)
Intializes from fraction:
>>> import fractions >>> abjad.Duration(fractions.Fraction(3, 16)) Duration(3, 16)
Initializes from solidus string:
>>> abjad.Duration("3/16") Duration(3, 16)
Durations inherit from built-in fraction:
>>> isinstance(abjad.Duration(3, 16), fractions.Fraction) True
Durations are numbers:
>>> import numbers
>>> isinstance(abjad.Duration(3, 16), numbers.Number) True
Gets dot count.
Gets assignable duration equal to or just greater than this duration.
Gets duration equal or just greater power of two.
Gets assignable duration equal or just less than this duration.
Gets duration of the form
d**2
equal to or just less than this duration.Gets base-2 exponent.
Gets flag count.
Is true when duration is assignable.
Is true when denominator of duration is integer power of two.
Gets LilyPond duration string.
Gets numerator and denominator pair.
Gets reciprocal.
Changes duration to clock string.
- dot_count
Gets dot count.
Dot count defined equal to number of dots required to notate duration. Raises assignability error when duration is not assignable.
>>> for n in range(1, 16 + 1): ... try: ... duration = abjad.Duration(n, 16) ... sixteenths = abjad.duration.with_denominator(duration, 16) ... dot_count = duration.dot_count ... string = f"{sixteenths[0]}/{sixteenths[1]}\t{dot_count}" ... print(string) ... except abjad.AssignabilityError: ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t--") ... 1/16 0 2/16 0 3/16 1 4/16 0 5/16 -- 6/16 1 7/16 2 8/16 0 9/16 -- 10/16 -- 11/16 -- 12/16 1 13/16 -- 14/16 2 15/16 3 16/16 0
- equal_or_greater_assignable
Gets assignable duration equal to or just greater than this duration.
>>> for numerator in range(1, 16 + 1): ... duration = abjad.Duration(numerator, 16) ... result = duration.equal_or_greater_assignable ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t{result!s}") ... 1/16 1/16 2/16 1/8 3/16 3/16 4/16 1/4 5/16 3/8 6/16 3/8 7/16 7/16 8/16 1/2 9/16 3/4 10/16 3/4 11/16 3/4 12/16 3/4 13/16 7/8 14/16 7/8 15/16 15/16 16/16 1
- equal_or_greater_power_of_two
Gets duration equal or just greater power of two.
>>> for numerator in range(1, 16 + 1): ... duration = abjad.Duration(numerator, 16) ... result = duration.equal_or_greater_power_of_two ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t{result!s}") ... 1/16 1/16 2/16 1/8 3/16 1/4 4/16 1/4 5/16 1/2 6/16 1/2 7/16 1/2 8/16 1/2 9/16 1 10/16 1 11/16 1 12/16 1 13/16 1 14/16 1 15/16 1 16/16 1
- equal_or_lesser_assignable
Gets assignable duration equal or just less than this duration.
>>> for numerator in range(1, 16 + 1): ... duration = abjad.Duration(numerator, 16) ... result = duration.equal_or_lesser_assignable ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t{result!s}") ... 1/16 1/16 2/16 1/8 3/16 3/16 4/16 1/4 5/16 1/4 6/16 3/8 7/16 7/16 8/16 1/2 9/16 1/2 10/16 1/2 11/16 1/2 12/16 3/4 13/16 3/4 14/16 7/8 15/16 15/16 16/16 1
- equal_or_lesser_power_of_two
Gets duration of the form
d**2
equal to or just less than this duration.>>> for numerator in range(1, 16 + 1): ... duration = abjad.Duration(numerator, 16) ... result = duration.equal_or_lesser_power_of_two ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t{result!s}") ... 1/16 1/16 2/16 1/8 3/16 1/8 4/16 1/4 5/16 1/4 6/16 1/4 7/16 1/4 8/16 1/2 9/16 1/2 10/16 1/2 11/16 1/2 12/16 1/2 13/16 1/2 14/16 1/2 15/16 1/2 16/16 1
- exponent
Gets base-2 exponent.
>>> for numerator in range(1, 16 + 1): ... duration = abjad.Duration(numerator, 16) ... exponent = duration.exponent ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t{duration.exponent!s}") ... 1/16 4 2/16 3 3/16 3 4/16 2 5/16 2 6/16 2 7/16 2 8/16 1 9/16 1 10/16 1 11/16 1 12/16 1 13/16 1 14/16 1 15/16 1 16/16 0
- flag_count
Gets flag count.
Flag count defined equal to number of flags required to notate duration.
>>> for n in range(1, 16 + 1): ... duration = abjad.Duration(n, 64) ... sixty_fourths = abjad.duration.with_denominator(duration, 64) ... print(f"{sixty_fourths[0]}/{sixty_fourths[1]}\t{duration.flag_count}") ... 1/64 4 2/64 3 3/64 3 4/64 2 5/64 2 6/64 2 7/64 2 8/64 1 9/64 1 10/64 1 11/64 1 12/64 1 13/64 1 14/64 1 15/64 1 16/64 0
- is_assignable
Is true when duration is assignable.
>>> for numerator in range(0, 16 + 1): ... duration = abjad.Duration(numerator, 16) ... sixteenths = abjad.duration.with_denominator(duration, 16) ... print(f"{sixteenths[0]}/{sixteenths[1]}\t{duration.is_assignable}") ... 0/16 False 1/16 True 2/16 True 3/16 True 4/16 True 5/16 False 6/16 True 7/16 True 8/16 True 9/16 False 10/16 False 11/16 False 12/16 True 13/16 False 14/16 True 15/16 True 16/16 True
- is_dyadic() bool [source]
Is true when denominator of duration is integer power of two.
>>> for n in range(1, 16 + 1): ... duration = abjad.Duration(1, n) ... print(f"{duration!s}\t{duration.is_dyadic()}") ... 1 True 1/2 True 1/3 False 1/4 True 1/5 False 1/6 False 1/7 False 1/8 True 1/9 False 1/10 False 1/11 False 1/12 False 1/13 False 1/14 False 1/15 False 1/16 True
- lilypond_duration_string
Gets LilyPond duration string.
Raises assignability error when duration is not assignable.
>>> abjad.Duration(3, 16).lilypond_duration_string '8.'
- pair
Gets numerator and denominator pair.
>>> abjad.Duration(3, 16).pair (3, 16)
- reciprocal() Duration [source]
Gets reciprocal.
>>> abjad.Duration(3, 7).reciprocal() Duration(7, 3)
- to_clock_string() str [source]
Changes duration to clock string.
Rounds down to nearest second.
>>> note = abjad.Note("c'4") >>> duration = abjad.Duration(117) >>> clock_string = duration.to_clock_string() >>> clock_string "1'57''"
>>> string = rf"\markup {{ {clock_string} }}" >>> markup = abjad.Markup(string) >>> abjad.attach(markup, note, direction=abjad.UP) >>> abjad.show(note)
- class abjad.duration.Offset(*arguments, **keywords)[source]
Offset.
Initializes from integer numerator:
>>> abjad.Offset(3) Offset((3, 1))
Initializes from integer numerator and denominator:
>>> abjad.Offset(3, 16) Offset((3, 16))
Initializes from integer-equivalent numeric numerator:
>>> abjad.Offset(3.0) Offset((3, 1))
Initializes from integer-equivalent numeric numerator and denominator:
>>> abjad.Offset(3.0, 16) Offset((3, 16))
Initializes from integer-equivalent singleton:
>>> abjad.Offset((3,)) Offset((3, 1))
Initializes from integer-equivalent pair:
>>> abjad.Offset((3, 16)) Offset((3, 16))
Initializes from duration:
>>> abjad.Offset(abjad.Duration(3, 16)) Offset((3, 16))
Initializes from other offset:
>>> abjad.Offset(abjad.Offset(3, 16)) Offset((3, 16))
Initializes from other offset with displacement:
>>> offset = abjad.Offset((3, 16), displacement=(-1, 16)) >>> abjad.Offset(offset) Offset((3, 16), displacement=Duration(-1, 16))
Intializes from fraction:
>>> import fractions >>> abjad.Offset(fractions.Fraction(3, 16)) Offset((3, 16))
Initializes from solidus string:
>>> abjad.Offset("3/16") Offset((3, 16))
Offsets inherit from built-in fraction:
>>> isinstance(abjad.Offset(3, 16), fractions.Fraction) True
Offsets are numbers:
>>> import numbers
>>> isinstance(abjad.Offset(3, 16), numbers.Number) True
Gets displacement.
- displacement
Gets displacement.
Gets displacement equal to none:
>>> offset = abjad.Offset(1, 4) >>> offset.displacement is None True
Gets displacement equal to a negative sixteenth:
>>> offset = abjad.Offset(1, 4, displacement=(-1, 16)) >>> offset.displacement Duration(-1, 16)
Stores zero-valued displacement as none:
>>> offset = abjad.Offset(1, 4, displacement=0) >>> offset.displacement is None True
>>> offset Offset((1, 4))
- class abjad.duration.Ratio(numerator: int, denominator: int)[source]
Ratio.
Abjad ratios are two-term, unreduced integer ratios of the form
n:d
.These are used primarily in modeling tuplet ratios like
3:2
and6:4
.Changes (unreduced) ratio to (reduced) fraction.
Is true when ratio numerator is less than ratio denominator.
Is true when ratio is normalized diminution.
Is true when ratio denominator is less than ratio numerator.
Is true when ratio denominator is nonnegative integer power of two.
Is true when fraction form of ratio is greater than
1/2
and less than2
.Is true when ratio numerator and denominator are relatively prime.
Is true when ratio numerator equals ratio denominator.
Get reciprocal of ratio.
- as_fraction()[source]
Changes (unreduced) ratio to (reduced) fraction.
>>> abjad.Ratio(6, 4).as_fraction() Fraction(3, 2)
- is_augmented() bool [source]
Is true when ratio numerator is less than ratio denominator.
>>> abjad.Ratio(6, 4).is_augmented() False
>>> abjad.Ratio(3, 2).is_augmented() False
>>> abjad.Ratio(4, 6).is_augmented() True
>>> abjad.Ratio(2, 3).is_augmented() True
>>> abjad.Ratio(2, 2).is_augmented() False
>>> abjad.Ratio(1, 1).is_augmented() False
- is_canonical() bool [source]
Is true when ratio is normalized diminution.
>>> abjad.Ratio(6, 4).is_canonical() True
>>> abjad.Ratio(3, 2).is_canonical() True
>>> abjad.Ratio(4, 6).is_canonical() False
>>> abjad.Ratio(2, 3).is_canonical() False
>>> abjad.Ratio(2, 2).is_canonical() False
>>> abjad.Ratio(1, 1).is_canonical() False
- is_diminished() bool [source]
Is true when ratio denominator is less than ratio numerator.
>>> abjad.Ratio(6, 4).is_diminished() True
>>> abjad.Ratio(3, 2).is_diminished() True
>>> abjad.Ratio(4, 6).is_diminished() False
>>> abjad.Ratio(2, 3).is_diminished() False
>>> abjad.Ratio(2, 2).is_diminished() False
>>> abjad.Ratio(1, 1).is_diminished() False
- is_dyadic() bool [source]
Is true when ratio denominator is nonnegative integer power of two.
>>> abjad.Ratio(6, 4).is_dyadic() True
>>> abjad.Ratio(3, 2).is_dyadic() True
>>> abjad.Ratio(4, 6).is_dyadic() False
>>> abjad.Ratio(2, 3).is_dyadic() False
>>> abjad.Ratio(2, 2).is_dyadic() True
>>> abjad.Ratio(1, 1).is_dyadic() True
- is_normalized() bool [source]
Is true when fraction form of ratio is greater than
1/2
and less than2
.>>> abjad.Ratio(6, 4).is_normalized() True
>>> abjad.Ratio(3, 2).is_normalized() True
>>> abjad.Ratio(4, 6).is_normalized() True
>>> abjad.Ratio(2, 3).is_normalized() True
>>> abjad.Ratio(2, 2).is_normalized() True
>>> abjad.Ratio(1, 1).is_normalized() True
>>> abjad.Ratio(10, 4).is_normalized() False
>>> abjad.Ratio(4, 10).is_normalized() False
>>> abjad.Ratio(9, 4).is_normalized() False
>>> abjad.Ratio(4, 9).is_normalized() False
- is_reduced() bool [source]
Is true when ratio numerator and denominator are relatively prime.
>>> abjad.Ratio(6, 4).is_reduced() False
>>> abjad.Ratio(3, 2).is_reduced() True
>>> abjad.Ratio(4, 6).is_reduced() False
>>> abjad.Ratio(2, 3).is_reduced() True
>>> abjad.Ratio(2, 2).is_reduced() False
>>> abjad.Ratio(1, 1).is_reduced() True
- is_trivial() bool [source]
Is true when ratio numerator equals ratio denominator.
>>> abjad.Ratio(6, 4).is_trivial() False
>>> abjad.Ratio(3, 2).is_trivial() False
>>> abjad.Ratio(4, 6).is_trivial() False
>>> abjad.Ratio(2, 3).is_trivial() False
>>> abjad.Ratio(2, 2).is_trivial() True
>>> abjad.Ratio(1, 1).is_trivial() True