scamp.quantization.MeasureQuantizationScheme

class scamp.quantization.MeasureQuantizationScheme(beat_schemes: Sequence[BeatQuantizationScheme], time_signature: TimeSignature | str, beat_groupings: Sequence = 'auto')[source]

Bases: object

Scheme for quantizing a measure, including beat lengths and which beat divisors to allow.

Parameters:
  • beat_schemes – list of BeatQuantizationSchemes for each beat in the measure

  • time_signature – a TimeSignature or string representing a time signature for this measure

  • beat_groupings – a (potentially nested) list/tuple representing how beats come together to form larger groupings. For instance, in 4/4 time the beat_groupings will default to (2, 2).

Methods

from_time_signature(time_signature[, ...])

Constructs a MeasureQuantizationScheme from a time signature.

get_beat_hierarchies(subdivision_length)

Generates a list of hierarchies representing how nested a subdivision is within the metric structure.

classmethod from_time_signature(time_signature: TimeSignature | str | float, max_divisor: int = 'default', max_divisor_indigestibility: float = 'default', simplicity_preference: float = 'default') MeasureQuantizationScheme[source]

Constructs a MeasureQuantizationScheme from a time signature. All beats will follow the same quantization scheme, as dictated by the parameters.

Parameters:
  • time_signature – Either a TimeSignature object or something that can be interpreted as such (e.g. a string to parse as a time signature, a measure length)

  • max_divisor – the max divisor for all beats in the is measure (see BeatQuantizationScheme)

  • max_divisor_indigestibility – the max indigestibility for all beats in the is measure (see BeatQuantizationScheme)

  • simplicity_preference – the simplicity preference for all beats in the is measure (see BeatQuantizationScheme)

get_beat_hierarchies(subdivision_length: float) Sequence[int][source]

Generates a list of hierarchies representing how nested a subdivision is within the metric structure. For instance, if called on a 4/4 measure, with subdivision_length, 0.5, this will return the list [0, 3, 2, 3, 1, 3, 2, 3], showing that the first subdivision (downbeat) is the strongest, the 5th (3rd beat) is one level down, etc.

Parameters:

subdivision_length – length (in quarter notes) of the subdivision