MusicMeasurements[music,"prop"]
returns the value of property "prop" for the entire music.
MusicMeasurements[music,{"prop",params}]
returns the value of property "prop" given params for the entire music.
MusicMeasurements[{music1,music2,…},…]
returns the value computed on all the music objects musici.
MusicMeasurements["prop"]
represents an operator form of MusicMeasurements that can be applied to an expression.
MusicMeasurements
MusicMeasurements[music,"prop"]
returns the value of property "prop" for the entire music.
MusicMeasurements[music,{"prop",params}]
returns the value of property "prop" given params for the entire music.
MusicMeasurements[{music1,music2,…},…]
returns the value computed on all the music objects musici.
MusicMeasurements["prop"]
represents an operator form of MusicMeasurements that can be applied to an expression.
Details and Options
- MusicMeasurements analyzes musical data, extracting key properties like pitch, duration and key, ideal for music analysis, research and algorithmic composition.
- MusicMeasurements can be used to retrieve or compute multiple properties of music objects such as MusicNote, MusicChord and MusicScore.
- MusicMeasurements[music,{"prop1","prop2",…}] computes multiple properties.
- MusicMeasurements[music,"Properties"] returns the names of all available properties as a list of strings.
- MusicMeasurements[music,{"Arguments","prop"}] returns the names of all available arguments for a given property as a list of strings.
- MusicMeasurements[music,{"Options","prop"}] returns the names of all available suboptions for a given property as a list of strings.
- The properties to be computed depend on the type of music object passed as an input.
- Properties of all objects containing a MusicDuration object:
-
"Duration" total duration expressed as a fraction of a whole note » "DurationBeats" total duration expressed in beats » "DurationSeconds" total duration expressed in seconds » - Properties of all objects containing a MusicPitch object:
-
"ChordMemberQ" test whether a pitch is a member of a specified chord » "EnharmonicQ" test enharmonically equivalency between pitches » "MatchingChords" find chords containing a set of pitches » "MatchingChordProbabilities" find chords containing a set of pitches and their probabilities » "MatchingScales" find scales containing a set of pitches » "Order" canonical order of two pitches » "ScaleDegree" the index of a pitch into a specified scale » "ScaleMemberQ" test whether a pitch is a member of a specified scale » - Properties unique to MusicChord:
-
"Quality" the detected quality (major, minor, diminished, etc.) » - Properties unique to MusicInterval:
-
"CentsDistance" total interval distance expressed in hundreths of a semitone » "FrequencyDistance" total interval distance expressed in Hertz, from a given starting pitch » "Quality" the detected quality (major, minor, diminished, etc.) » "SemitonesDistance" total interval distance in semitones, with fractional cents » "DiatonicNumber" the number of pitch keys contained in an interval » - Properties of containers such as MusicScore, MusicVoice or a list of events (MusicNote or MusicChord):
-
"AccumulatedDurations" event duration onsets relative to the start of the container » "Ambitus" minimum and maximum pitch » "EstimatedKey" detected key area based on correlation method » "EstimatedKeyProbabilities" detected key areas and their probabilities » "Durations" list of event durations » "Intervals" list of pitch intervals between events » "NoteList" flat list of events, with ties resolved » "NoteTimeSeries" time series of a measurement computed on all events » "PitchClasses" list of event pitches » - Properties unique to MusicScale:
-
"KeySignature" key signature in which pitches can be written with the fewest accidentals » "RelatedScales" list of scales containing the same set of pitches » - Properties unique to MusicTimeSignature:
-
"BeatDuration" whole-note duration of a beat » "BeatLength" number of denominator units included in a beat » "BeatsPerMeasure" total number of beats per measure » "DenominatorDuration" whole-note duration of the denominator unit » "MeasureDuration" whole-note duration of a measure » "MeterType" meter type, either simple or compound » "SecondsPerBeat" beat duration expressed in seconds, for a given tempo » "SecondsPerMeasure" measure duration expressed in seconds, for a given tempo » - Properties unique to MusicKeySignature:
-
"MajorScale" default diatonic major scale used with the key signature » "MajorTonic" tonic of the default diatonic major scale » "MatchingScales" list of scales containing pitches within the alteration rules » "MinorScale" default diatonic minor scale used with the key signature » "MinorTonic" tonic of the default diatonic minor scale » "PitchList" list of all pitches with alteration rules applied - The following options are supported:
-
AcceptanceThreshold threshold matching candidates to return MaxItems number of matching items to return MusicTempo tempo used for playback
Examples
open all close allBasic Examples (3)
Compute the minimum and maximum pitch contained within a score:
s = MusicScore[{"C", "E", "Bb", "D5", "C5"}];
MusicMeasurements[s, "Ambitus"]Compute the durations of the events:
MusicMeasurements[s, "Durations"]Check if a note is part of a chord:
MusicMeasurements[MusicNote["F#4"], {"ChordMemberQ", MusicChord["DMajor"]}]Use MusicMeasurements as an operator:
MusicMeasurements["Duration"] /@ {MusicNote["F#4"], MusicChord["CMajor", 1 / 8], MusicScore[{"C", "E", "Bb", "D5", "C5"}]}Scope (58)
Music Container Primitives (21)
MusicScore (7)
MusicMeasurements[MusicScore[{"C"}], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicScore[{"C"}], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicScore[{"C"}], "Options"]Compute the minimum and maximum pitch contained within a score:
MusicMeasurements[MusicScore[{{{"C", "E", "G3"}}}], "Ambitus"]Compute the most likely key of a score using a correlation test:
MusicMeasurements[MusicScore[{"C", "E", "G"}], "EstimatedKey"]List the 3 most probable keys along with their test statistic:
MusicMeasurements[MusicScore[{"C", "E", "G"}], "EstimatedKeyProbabilities", MaxItems -> 3]Threshold the test statistic on the returned candidates:
MusicMeasurements[MusicScore[{"C", "E", "G"}], "EstimatedKeyProbabilities", AcceptanceThreshold -> .7]Compute the duration of a score expressed as a fraction of a whole note, beats and seconds:
score = MusicScore[{"C", "E", "G", "A", "C", "E", "G", "C"}];
MusicMeasurements[score, {"Duration", "DurationBeats", "DurationSeconds"}]Compute the duration of each event in a score:
MusicMeasurements[score, "Durations"]Note that the function returns a list of durations for each voice in the score.
Compute the accumulated durations for each event in a score:
MusicMeasurements[score, "AccumulatedDurations"]By default, duration in seconds is computed using the tempo taken from the container. Assume a tempo of 80 beats per minute:
MusicMeasurements[score, {"Duration", "DurationBeats", "DurationSeconds"}, MusicTempo -> 80]Compute the intervals between events:
MusicMeasurements[MusicScore[{"C", "E", "G", "A"}], "Intervals"]Note that rest events are ignored:
MusicMeasurements[MusicScore[{"C", MusicRest[1 / 4], "G", "A"}], "Intervals"]Extract the list of events in a score:
score = MusicScore[{"C", "E", "G", "A"}];
MusicMeasurements[score, "NoteList"]Extract pitch or duration properties from all events in a score:
MusicMeasurements[score, {"NoteList", "MIDINumber"}]Extract the list of events with their accumulated duration and bundle them in a TimeSeries:
ts = MusicMeasurements[score, "NoteTimeSeries"]ts[[1]] /@ {0, 1 / 2, .89}Note that ties between measures are resolved:
score = MusicScore[{MusicNote["C", 3 / 4], MusicNote["E", 5 / 4]}];
Through[score["VoiceList"][[1]]["MeasureList"]["NoteList"]]
MusicMeasurements[score, "NoteList"]Store a pitch or duration property in the time series:
MusicMeasurements[score, {"NoteTimeSeries", "Key"}]//NormalReturn a flat list of all pitch classes contained within a score:
MusicMeasurements[MusicScore[{"C", "E", "G3"}], "PitchClasses"]MusicVoice (7)
MusicMeasurements[MusicVoice[{"C"}], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicVoice[{"C"}], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicVoice[{"C"}], "Options"]Compute the minimum and maximum pitch contained within a voice:
MusicMeasurements[MusicVoice[{"C", "E", "G3"}], "Ambitus"]Compute the most likely key of a voice using a correlation test:
MusicMeasurements[MusicVoice[{"C", "E", "G3"}], "EstimatedKey"]Compute the duration of a voice expressed as a fraction of a whole note, beats and seconds:
voice = MusicVoice[{"C", "E", "G", "A", "C", "E", "G", "C"}];
MusicMeasurements[voice, {"Duration", "DurationBeats", "DurationSeconds"}]Compute the duration of each event in a score:
MusicMeasurements[voice, "Durations"]Compute the accumulated durations for each event in a voice:
MusicMeasurements[voice, "AccumulatedDurations"]Compute the intervals between events:
MusicMeasurements[MusicVoice[{"C", "E", "G", "A"}], "Intervals"]Note that rest events are ignored:
MusicMeasurements[MusicVoice[{"C", MusicRest[1 / 4], "G", "A"}], "Intervals"]Extract the list of events in a voice:
voice = MusicVoice[{"C", "E", "G", "A"}];
MusicMeasurements[voice, "NoteList"]Extract the list of events with their accumulated duration and bundle them in a TimeSeries:
ts = MusicMeasurements[voice, "NoteTimeSeries"]ts /@ {0, 1 / 2, .89}Note that ties between measures are resolved:
voice = MusicVoice[{MusicNote["C", 3 / 4], MusicNote["E", 5 / 4]}];
Through[voice["MeasureList"]["NoteList"]]
MusicMeasurements[voice, "NoteList"]Return a flat list of all pitch classes contained within a score:
MusicMeasurements[MusicVoice[{"C", "E", "G3"}], "PitchClasses"]MusicMeasure (7)
MusicMeasurements[MusicMeasure["C"], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicMeasure["C"], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicMeasure["C"], "Options"]Compute the minimum and maximum pitch contained within a measure:
MusicMeasurements[MusicMeasure[{"C", "E", "G3"}], "Ambitus"]Compute the most likely key of a measure using a correlation test:
MusicMeasurements[MusicMeasure[{"C", "E", "G3"}], "EstimatedKey"]Compute the duration of a voice expressed as a fraction of a whole note, beats and seconds:
measure = MusicMeasure[{"C", "E", "G", "A"}];
MusicMeasurements[measure, {"Duration", "DurationBeats", "DurationSeconds"}]Compute the duration of each event in a measure:
MusicMeasurements[measure, "Durations"]Compute the accumulated durations for each event in a measure:
MusicMeasurements[measure, "AccumulatedDurations"]Compute the intervals between events:
MusicMeasurements[MusicMeasure[{"C", "E", "G", "A"}], "Intervals"]Note that rest events are ignored:
MusicMeasurements[MusicMeasure[{"C", MusicRest[], "G", "A"}], "Intervals"]Extract the list of events in a voice:
measure = MusicMeasure[{"C", "E", "G", "A"}];
MusicMeasurements[measure, "NoteList"]Extract the list of events with their accumulated duration and bundle them in a TimeSeries:
ts = MusicMeasurements[measure, "NoteTimeSeries"]ts /@ {0, 1 / 2, .89}Return a flat list of all pitch classes contained within a score:
MusicMeasurements[MusicMeasure[{"C", "E", "G3"}], "PitchClasses"]Music Event Primitives (13)
MusicNote (8)
MusicMeasurements[MusicNote["C"], "Properties"]List available measurements for a collection of notes:
MusicMeasurements[{MusicNote["C"]}, "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicNote["C"], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicNote["C"], "Options"]Check if a note is part of a chord:
MusicMeasurements[MusicNote["A"], {"ChordMemberQ", MusicChord["C 6"]}]Check if a note is part of a scale:
MusicMeasurements[MusicNote["F#"], {"ScaleMemberQ", MusicScale["D major"]}]Compute the scale degree of a note within a specific scale:
MusicMeasurements[MusicNote["F"], {"ScaleDegree", MusicScale["C major"]}]Check if two notes have the same pitch class regardless of accidentals:
MusicMeasurements[MusicNote["F#"], {"EnharmonicQ", MusicNote["Gb"]}]Compute the duration of a note as a fraction of a whole note:
MusicMeasurements[MusicNote["C"], "Duration"]Compute the duration of a note in seconds:
MusicMeasurements[MusicNote["C"], "DurationSeconds"]Compute the duration of a note in seconds, assuming a tempo of 180 beats per minute:
MusicMeasurements[MusicNote["C"], "DurationSeconds", MusicTempo -> 180]Compute the duration in of a note in beats:
MusicMeasurements[MusicNote["C", 1 / 4], "DurationBeats"]Compute the duration in of a note in beats, assuming a compound time signature:
MusicMeasurements[MusicNote["C", 1 / 4], {"DurationBeats", MusicTimeSignature[6, 8]}]Compare two notes based on pitch properties, returning a value consistent with Order:
MusicMeasurements[MusicNote["G"], {"Order", MusicNote["A"]}]This is not always the same as the canonical order of expressions:
Order[MusicNote["G"], MusicNote["A"]]MusicChord (3)
MusicMeasurements[MusicChord["C"], "Properties"]List available measurements for a collection of chords:
MusicMeasurements[{MusicChord["C"]}, "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicChord["C"], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicChord["C"], "Options"]Compute the duration of a chord as a fraction of a whole note:
MusicMeasurements[MusicChord["C"], "Duration"]Compute the duration of a chord in seconds:
MusicMeasurements[MusicChord["C"], "DurationSeconds"]Compute the duration of a chord in seconds, assuming a tempo of 180 beats per minute:
MusicMeasurements[MusicChord["C"], "DurationSeconds", MusicTempo -> 180]Compute the quality of a chord:
MusicMeasurements[MusicChord["Cm7b5"], "Quality"]Music Property Primitives (24)
MusicPitch (5)
MusicMeasurements[MusicPitch["C"], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicPitch["C"], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicPitch["C"], "Options"]Check if a pitch is part of a chord:
MusicMeasurements[MusicPitch["A"], {"ChordMemberQ", MusicChord["C 6"]}]Check if a pitch is part of a scale:
MusicMeasurements[MusicPitch["Eb"], {"ScaleMemberQ", MusicScale["C minor"]}]Specify whether enharmonically equivalent pitches should be matched:
MusicMeasurements[MusicPitch["D#"], {"ScaleMemberQ", MusicScale["C minor"], "AllowEnharmonic" -> #}]& /@ {True, False}Scale pitches are automatically matched in any octave:
MusicMeasurements[MusicPitch["D#6"], {"ScaleMemberQ", MusicScale["C minor"]}]Specify whether chord pitches should be matched in any octave:
MusicMeasurements[MusicPitch["A3"], {"ChordMemberQ", MusicChord["C 6"], "MatchOctave" -> #}]& /@ {True, False}Compute the scale degree of a pitch within a specific scale:
MusicMeasurements[MusicPitch["Eb"], {"ScaleDegree", MusicScale["C minor"]}]Check if two pitches have the same pitch class regardless of accidentals:
MusicMeasurements[MusicPitch["F#"], {"EnharmonicQ", MusicPitch["Gb"]}]Compute properties of a collection of pitches:
p = MusicPitch /@ {"C3", "Bb3", "D", "E", "A"};Complement[MusicMeasurements[p, "Properties"], MusicMeasurements[p[[1]], "Properties"]]MusicMeasurements[p, "Ambitus"]Compute intervals between consecutive pitches:
MusicMeasurements[p, "Intervals"]Compute pitch classes of all pitches:
MusicMeasurements[p, "PitchClasses"]MusicMeasurements[p, "EstimatedKeyProbabilities", MaxItems -> 2]Find chords containing the set of pitches:
MusicMeasurements[p, "MatchingChordProbabilities", MaxItems -> 2]Find scales containing the set of pitches:
MusicMeasurements[p, "MatchingScales", MaxItems -> 2]MusicDuration (2)
MusicMeasurements[MusicDuration[1 / 4], "Properties"]Compute the duration of a rest as a fraction of a whole note, beats and seconds:
MusicMeasurements[MusicDuration[1 / 4], {"Duration", "DurationBeats", "DurationSeconds"}]Compute the duration in seconds, assuming a tempo of 80 beats per minute:
MusicMeasurements[MusicDuration[1 / 4], "DurationSeconds", MusicTempo -> 80]MusicInterval (4)
MusicMeasurements[MusicInterval[5], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicInterval[5], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicInterval[5], "Options"]Compute the distance in semitones of an interval:
i = MusicInterval[5, <|"CentDeviation" -> 17|>];
MusicMeasurements[i, "SemitonesDistance"]Compute the distance in cents (one semitone is 100 cents):
MusicMeasurements[i, "CentsDistance"]Compute the distance in hertz from a starting pitch:
MusicMeasurements[MusicInterval[5, <|"CentDeviation" -> 17|>], {"FrequencyDistance", MusicPitch["D5"]}]Compute the diatonic number of a simple interval:
MusicMeasurements[MusicInterval["MajorThird"], "DiatonicNumber"]Compute the diatonic number of a compound interval:
dn = MusicMeasurements[MusicInterval["MajorThird", <|"CompoundOctaves" -> 2|>], "DiatonicNumber"]Extract the diatonic number of the simple part of a compound interval:
1 + Mod[dn - 1, 7]Compute the quality of an interval:
MusicMeasurements[MusicInterval[15], "Quality"]MusicScale (3)
MusicMeasurements[MusicScale["CMajor"], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicScale["CMajor"], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicScale["CMajor"], "Options"]Compute the key signature for the D major scale:
MusicMeasurements[MusicScale["DMajor"], "KeySignature"]Compute a list of scales that contain the same pitches as D major:
MusicMeasurements[MusicScale["DMajor"], "RelatedScales", MaxItems -> 3]MusicTimeSignature (6)
MusicMeasurements[MusicTimeSignature[4, 4], "Properties"]Compute the meter type for a time signature:
MusicMeasurements[MusicTimeSignature[9, 8], "MeterType"]
MusicMeasurements[MusicTimeSignature[3, 4], "MeterType"]Compute the length of a beat as a multiple of the time signature's denominator:
MusicMeasurements[MusicTimeSignature[9, 8], "BeatLength"]Compare the default beat length for both a simple and a compound meter:
MusicMeasurements[MusicTimeSignature[9, 8], "BeatLength"]
MusicMeasurements[MusicTimeSignature[3, 4], "BeatLength"]Compute the number of beats per measure:
MusicMeasurements[MusicTimeSignature[9, 8], "BeatsPerMeasure"]Compute the duration of the denominator unit as a fraction of a whole note:
MusicMeasurements[MusicTimeSignature[9, 8], "DenominatorDuration"]Compute the duration of a measure as a fraction of a whole note:
MusicMeasurements[MusicTimeSignature[9, 8], "MeasureDuration"]Compute the duration of a beat as a fraction of a whole note:
MusicMeasurements[MusicTimeSignature[9, 8], "BeatDuration"]Compute the quantity of seconds occupied by each measure:
MusicMeasurements[MusicTimeSignature[9, 8], "SecondsPerMeasure"]Compute the quantity of seconds occupied by each beat in a measure:
MusicMeasurements[MusicTimeSignature[9, 8], "SecondsPerBeat"]Specify a tempo to use for computing the duration:
MusicMeasurements[MusicTimeSignature[9, 8], "SecondsPerMeasure", MusicTempo -> 80]MusicKeySignature (4)
MusicMeasurements[MusicKeySignature[1], "Properties"]Check which measurements have additional arguments:
DeleteCases[{}]@MusicMeasurements[MusicKeySignature[1], "Arguments"]Check which measurements have suboptions:
DeleteCases[{}]@MusicMeasurements[MusicKeySignature[1], "Options"]Compute the major scale that corresponds to a key signature:
MusicMeasurements[MusicKeySignature[3], "MajorScale"]Compute the tonic of the major scale that corresponds to a key signature:
MusicMeasurements[MusicKeySignature[3], "MajorTonic"]Compute the minor scale that corresponds to a key signature:
MusicMeasurements[MusicKeySignature[3], "MinorScale"]Compute the tonic of the minor scale that corresponds to a key signature:
MusicMeasurements[MusicKeySignature[3], "MinorTonic"]Compute a list of scales with the same alteration rules specified by a key signature:
MusicMeasurements[MusicKeySignature[6], "MatchingScales", MaxItems -> 5]Options (3)
AcceptanceThreshold (1)
Threshold the returned results:
MusicMeasurements[Import["ExampleData/scale.mid", "MusicScore"], "EstimatedKeyProbabilities", AcceptanceThreshold -> .7]MusicMeasurements[MusicPitch /@ {"C", "E", "G", "A"}, "MatchingChordProbabilities", AcceptanceThreshold -> .7]MaxItems (1)
Limit the number of returned results:
MusicMeasurements[Import["ExampleData/scale.mid", "MusicScore"], "EstimatedKeyProbabilities", MaxItems -> 2]MusicMeasurements[MusicPitch /@ {"C", "E", "G", "A"}, "MatchingChords", MaxItems -> 2]MusicMeasurements[MusicPitch /@ {"C", "E", "G", "A"}, "MatchingScales", MaxItems -> 2]MusicMeasurements[MusicScale["CMajor"], "RelatedScales", MaxItems -> 2]MusicTempo (1)
By default, the tempo is assumed to be 120 beats per minute:
MusicMeasurements[MusicTimeSignature[4, 4], "SecondsPerMeasure"]Specify a tempo in beats per minute to use for computing durations in seconds:
MusicMeasurements[MusicTimeSignature[4, 4], "SecondsPerMeasure", MusicTempo -> 72]If a music object already has a "MusicTempo" property, then that value is used by default:
MusicMeasurements[MusicMeasure[{"C", "D", "E"}, MusicTempo -> 72], "DurationSeconds"]Specify a different music tempo to use:
MusicMeasurements[MusicVoice[{"C", "D", "E"}, MusicTempo -> 72], "DurationSeconds", MusicTempo -> 90]Related Guides
History
Text
Wolfram Research (2026), MusicMeasurements, Wolfram Language function, https://reference.wolfram.com/language/ref/MusicMeasurements.html.
CMS
Wolfram Language. 2026. "MusicMeasurements." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/MusicMeasurements.html.
APA
Wolfram Language. (2026). MusicMeasurements. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/MusicMeasurements.html
BibTeX
@misc{reference.wolfram_2026_musicmeasurements, author="Wolfram Research", title="{MusicMeasurements}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/MusicMeasurements.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_musicmeasurements, organization={Wolfram Research}, title={MusicMeasurements}, year={2026}, url={https://reference.wolfram.com/language/ref/MusicMeasurements.html}, note=[Accessed: 12-June-2026]}