Previous topic

music21.features.jSymbolic

Next topic

music21.figuredBass.checker

Table Of Contents

Table Of Contents

This Page

music21.features.native

Original music21 feature extractors.

ChordBassMotionFeature

class music21.features.native.ChordBassMotionFeature(dataOrStream=None, *arguments, **keywords)

A twelve element feature that reports the fraction of all chord motion of music21.harmony.Harmony objects that move up by i-half-steps. (a half-step motion down would be stored in i = 11). i = 0 is always 0.0 since consecutive chords on the same pitch are ignored (unless there are 0 or 1 harmonies, in which case it is 1)

Sample test on the BlowinInTheWind, showing all motion is 3rds, 6ths, or especially 4ths and 5ths.

>>> s = corpus.parse('demos/BlowinInTheWind') 
>>> fe = features.native.ChordBassMotionFeature(s)
>>> fe.extract().vector 
[0.0, 0.0, 0.0, 0.0416..., 0.0416..., 0.166..., 0.0, 0.54166..., 0.0, 0.0, 0.2083... 0.0]

For comparison, the Beatles Here Comes the Sun has more tone motion

[0.0, 0.05..., 0.14..., 0.03..., 0.06..., 0.3..., 0.008..., 0.303..., 0.0, 0.0, 0.07..., 0.008...]

Post 1990s music has a lot more semitone motion.

ChordBassMotionFeature bases

ChordBassMotionFeature methods

Methods inherited from FeatureExtractor:

ComposerPopularity

class music21.features.native.ComposerPopularity(dataOrStream=None, *arguments, **keywords)

composer’s popularity today, as measured by the number of Google search results (log-10)

>>> s = corpus.parse('mozart/k155', 2)
>>> fe = features.native.ComposerPopularity(s)
>>> fe.extract().vector[0] > 6.0 
True

ComposerPopularity bases

ComposerPopularity methods

Methods inherited from FeatureExtractor:

DiminishedSeventhSimultaneityPrevalence

class music21.features.native.DiminishedSeventhSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Percentage of all simultaneities that are diminished seventh chords.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.DiminishedSeventhSimultaneityPrevalence(s)
>>> fe.extract().vector 
[0.0]

DiminishedSeventhSimultaneityPrevalence bases

DiminishedSeventhSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

DiminishedTriadSimultaneityPrevalence

class music21.features.native.DiminishedTriadSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Percentage of all simultaneities that are diminished triads.

>>> s = corpus.parse('bwv66.6')
>>> fe = features.native.DiminishedTriadSimultaneityPrevalence(s)
>>> fe.extract().vector 
[0.018867924528...]

DiminishedTriadSimultaneityPrevalence bases

DiminishedTriadSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

DominantSeventhSimultaneityPrevalence

class music21.features.native.DominantSeventhSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Percentage of all simultaneities that are dominant seventh.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.DominantSeventhSimultaneityPrevalence(s)
>>> fe.extract().vector 
[0.0]

DominantSeventhSimultaneityPrevalence bases

DominantSeventhSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

FirstBeatAttackPrevalence

class music21.features.native.FirstBeatAttackPrevalence(dataOrStream=None, *arguments, **keywords)
>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.FirstBeatAttackPrevalence(s)

FirstBeatAttackPrevalence bases

FirstBeatAttackPrevalence methods

Methods inherited from FeatureExtractor:

IncorrectlySpelledTriadPrevalence

class music21.features.native.IncorrectlySpelledTriadPrevalence(dataOrStream=None, *arguments, **keywords)

Percentage of all triads that are spelled incorrectly.

example:

Mozart k155 movement 2 has a single instance of an incorrectly spelled triad (m. 17, where the C# of an A-major chord has a lower neighbor B# thus temporarily creating an incorrectly spelled A-minor chord).

We would expect highly chromatic music such as Reger or Wagner to have a higher percentage, or automatically rendered MIDI transcriptions (which don’t distinguish between D# and Eb).

(Aside to Mozart experts: shouldn’t m. 18 beat 2 also be B#? seems a mistake in most editions... – it doesn’t alter this analysis though since the A and E in the bass are gone)

>>> s = corpus.parse('mozart/k155', 2)
>>> fe = features.native.IncorrectlySpelledTriadPrevalence(s)
>>> fe.extract().vector 
[0.007...]

IncorrectlySpelledTriadPrevalence bases

IncorrectlySpelledTriadPrevalence methods

Methods inherited from FeatureExtractor:

LandiniCadence

class music21.features.native.LandiniCadence(dataOrStream=None, *arguments, **keywords)

Return a bolean if one or more Parts end with a Landini-like cadential figure.

LandiniCadence bases

LandiniCadence methods

Methods inherited from FeatureExtractor:

LanguageFeature

class music21.features.native.LanguageFeature(dataOrStream=None, *arguments, **keywords)

language of text as a number the number is the index of text.LanguageDetector.languageCodes + 1 or 0 if there is no language.

Detect that the language of “For unto us a child is born” is English.

>>> s = corpus.parse('handel/hwv56/movement1-13.md') 
>>> fe = features.native.LanguageFeature(s)
>>> fe.extract().vector
[1]

LanguageFeature bases

LanguageFeature methods

Methods inherited from FeatureExtractor:

MajorTriadSimultaneityPrevalence

class music21.features.native.MajorTriadSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Percentage of all simultaneities that are major triads.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.MajorTriadSimultaneityPrevalence(s)
>>> fe.extract().vector
[0.1333333...]

MajorTriadSimultaneityPrevalence bases

MajorTriadSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

MinorTriadSimultaneityPrevalence

class music21.features.native.MinorTriadSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Percentage of all simultaneities that are minor triads.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.MinorTriadSimultaneityPrevalence(s)
>>> fe.extract().vector # same as major in this work
[0.13333333...]

MinorTriadSimultaneityPrevalence bases

MinorTriadSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

MostCommonNoteQuarterLength

class music21.features.native.MostCommonNoteQuarterLength(dataOrStream=None, *arguments, **keywords)
>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.MostCommonNoteQuarterLength(s)
>>> fe.extract().vector 
[0.5]

MostCommonNoteQuarterLength bases

MostCommonNoteQuarterLength methods

Methods inherited from FeatureExtractor:

MostCommonNoteQuarterLengthPrevalence

class music21.features.native.MostCommonNoteQuarterLengthPrevalence(dataOrStream=None, *arguments, **keywords)
>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.MostCommonNoteQuarterLengthPrevalence(s)
>>> fe.extract().vector 
[0.533333...]

MostCommonNoteQuarterLengthPrevalence bases

MostCommonNoteQuarterLengthPrevalence methods

Methods inherited from FeatureExtractor:

MostCommonPitchClassSetSimultaneityPrevalence

class music21.features.native.MostCommonPitchClassSetSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Fraction of all pitch class simultaneities that are the most common simultaneity.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.MostCommonPitchClassSetSimultaneityPrevalence(s)
>>> fe.extract().vector
[0.1333333333333...]

MostCommonPitchClassSetSimultaneityPrevalence bases

MostCommonPitchClassSetSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

MostCommonSetClassSimultaneityPrevalence

class music21.features.native.MostCommonSetClassSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Fraction of all set class simultaneities that the most common simultaneity occupies.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.MostCommonSetClassSimultaneityPrevalence(s)
>>> fe.extract().vector
[0.43333333...]
>>> s2 = corpus.parse('schoenberg/opus19', 6)
>>> fe2 = features.native.MostCommonSetClassSimultaneityPrevalence(s2)
>>> fe2.extract().vector
[0.184...]

MostCommonSetClassSimultaneityPrevalence bases

MostCommonSetClassSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

QualityFeature

class music21.features.native.QualityFeature(dataOrStream=None, *arguments, **keywords)

Extends the jSymbolic QualityFeature to automatically find mode

Set to 0 if the key signature indicates that a recording is major, set to 1 if it indicates that it is minor. A Music21 addition: if no key mode is found in the piece, analyze the piece to discover what mode it is most likely in.

Example: Mozart k155, mvmt 2 (musicxml) is explicitly encoded as being in Major:

>>> mozart155mvmt2 = corpus.parse('mozart/k155', 2)
>>> fe = features.native.QualityFeature(mozart155mvmt2)
>>> f = fe.extract()
>>> f.vector
[0]

now we will try it with the last movement of Schoenberg’s opus 19 which has no mode explicitly encoded in the musicxml but which our analysis routines believe (having very little to go on) fits the profile of e-minor best.

>>> schoenberg19mvmt6= corpus.parse('schoenberg/opus19', 6)
>>> fe2 = features.native.QualityFeature(schoenberg19mvmt6)
>>> f2 = fe2.extract()
>>> f2.vector
[1]

QualityFeature bases

QualityFeature methods

Methods inherited from FeatureExtractor:

RangeOfNoteQuarterLengths

class music21.features.native.RangeOfNoteQuarterLengths(dataOrStream=None, *arguments, **keywords)

Difference between the longest and shortest quarter lengths.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.RangeOfNoteQuarterLengths(s)
>>> fe.extract().vector 
[3.75]

RangeOfNoteQuarterLengths bases

RangeOfNoteQuarterLengths methods

Methods inherited from FeatureExtractor:

TonalCertainty

class music21.features.native.TonalCertainty(dataOrStream=None, *arguments, **keywords)
>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.TonalCertainty(s)
>>> f = fe.extract()
>>> f.vector
[1.18093058...]

TonalCertainty bases

TonalCertainty methods

Methods inherited from FeatureExtractor:

TriadSimultaneityPrevalence

class music21.features.native.TriadSimultaneityPrevalence(dataOrStream=None, *arguments, **keywords)

Gives the proportion of all simultaneities which form triads (major, minor, diminished, or augmented)

>>> s = corpus.parse('bwv66.6')
>>> fe = features.native.TriadSimultaneityPrevalence(s)
>>> fe.extract().vector 
[0.71698...]
>>> s2 = corpus.parse('schoenberg/opus19', 2)
>>> fe2 = features.native.TriadSimultaneityPrevalence(s2)
>>> fe2.extract().vector
[0.022727...]

TriadSimultaneityPrevalence bases

TriadSimultaneityPrevalence methods

Methods inherited from FeatureExtractor:

URLOpenerUI

class music21.features.native.URLOpenerUI(*args, **kwargs)

UniqueNoteQuarterLengths

class music21.features.native.UniqueNoteQuarterLengths(dataOrStream=None, *arguments, **keywords)
>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.UniqueNoteQuarterLengths(s)
>>> fe.extract().vector 
[7]

UniqueNoteQuarterLengths bases

UniqueNoteQuarterLengths methods

Methods inherited from FeatureExtractor:

UniquePitchClassSetSimultaneities

class music21.features.native.UniquePitchClassSetSimultaneities(dataOrStream=None, *arguments, **keywords)

Number of unique pitch class simultaneities.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.UniquePitchClassSetSimultaneities(s)
>>> fe.extract().vector
[16]

UniquePitchClassSetSimultaneities bases

UniquePitchClassSetSimultaneities methods

Methods inherited from FeatureExtractor:

UniqueSetClassSimultaneities

class music21.features.native.UniqueSetClassSimultaneities(dataOrStream=None, *arguments, **keywords)

Number of unique set class simultaneities.

>>> s = corpus.parse('hwv56/movement3-05.md')
>>> fe = features.native.UniqueSetClassSimultaneities(s)
>>> fe.extract().vector
[5]

UniqueSetClassSimultaneities bases

UniqueSetClassSimultaneities methods

Methods inherited from FeatureExtractor: