music21.analysis.reduceChordsOld

Automatically reduce a MeasureStack to a single chord or group of chords.

ChordReducer

class music21.analysis.reduceChordsOld.ChordReducer

ChordReducer methods

ChordReducer.computeMeasureChordWeights(measureObj, weightAlgorithm=None)
>>> s = analysis.reduceChordsOld.testMeasureStream1().notes
>>> cr = analysis.reduceChordsOld.ChordReducer()
>>> cws = cr.computeMeasureChordWeights(s)
>>> for pcs in sorted(cws):
...     print("%18r  %2.1f" % (pcs, cws[pcs]))
     (0, 4, 7)  3.0
 (0, 11, 4, 5)  1.0

Add beatStrength:

>>> cws = cr.computeMeasureChordWeights(s, weightAlgorithm=cr.quarterLengthBeatStrength)
>>> for pcs in sorted(cws):
...     print("%18r  %2.1f" % (pcs, cws[pcs]))
     (0, 4, 7)  2.2
 (0, 11, 4, 5)  0.5

Give extra weight to the last element in a measure:

>>> cws = cr.computeMeasureChordWeights(s,
...              weightAlgorithm=cr.quarterLengthBeatStrengthMeasurePosition)
>>> for pcs in sorted(cws):
...     print("%18r  %2.1f" % (pcs, cws[pcs]))
     (0, 4, 7)  3.0
 (0, 11, 4, 5)  0.5

Make consonance count a lot:

>>> cws = cr.computeMeasureChordWeights(s, weightAlgorithm=cr.qlbsmpConsonance)
>>> for pcs in sorted(cws):
...     print("%18r  %2.1f" % (pcs, cws[pcs]))
         (0, 4, 7)  3.0
     (0, 11, 4, 5)  0.5
ChordReducer.multiPartReduction(inStream, maxChords=2, closedPosition=False, forceOctave=False)

Return a multipart reduction of a stream.

ChordReducer.qlbsmpConsonance(c)

Everything from before plus consonance

ChordReducer.quarterLengthBeatStrength(c)
ChordReducer.quarterLengthBeatStrengthMeasurePosition(c)
ChordReducer.quarterLengthOnly(c)
ChordReducer.reduceMeasureToNChords(measureObj, numChords=1, weightAlgorithm=None, trimBelow=0.25)
>>> s = analysis.reduceChordsOld.testMeasureStream1()
>>> cr = analysis.reduceChordsOld.ChordReducer()

Reduce to a maximum of 3 chords; though here we will only get one because the other chord is below the trimBelow threshold.

>>> newS = cr.reduceMeasureToNChords(s, 3,
...    weightAlgorithm=cr.qlbsmpConsonance, trimBelow = 0.3)
>>> newS.show('text')
{0.0} <music21.chord.Chord C4 E4 G4 C5>
>>> newS.notes.first().quarterLength
4.0
ChordReducer.reduceThisMeasure(mI, measureIndex, maxChords, closedPosition, forceOctave)

Functions

music21.analysis.reduceChordsOld.testMeasureStream1()

returns a simple measure stream for testing:

>>> s = analysis.reduceChordsOld.testMeasureStream1()
>>> s.show('text')
{0.0} <music21.meter.TimeSignature 4/4>
{0.0} <music21.chord.Chord C4 E4 G4 C5>
{2.0} <music21.chord.Chord C4 E4 F4 B4>
{3.0} <music21.chord.Chord C4 E4 G4 C5>