from music21 import *
luca = corpus.parse('luca/gloria').measures(1,8)
tsCol = luca.asTimespans()
tsCol
<TimespanTree {55} (0.0 to 24.0) <music21.stream.Score 4382211544>>
for v in tsCol.iterateVerticalities():
print(v)
<Verticality 0.0 {F3 F4 C5}>
<Verticality 3.0 {F3 F4 D5}>
<Verticality 3.5 {F3 C4 C5}>
<Verticality 4.5 {F3 C4 A4}>
<Verticality 5.0 {F3 C4 F4}>
<Verticality 5.5 {F3 A3 F4}>
<Verticality 6.0 {F3 F4}>
<Verticality 6.5 {F3 F4 A4}>
<Verticality 7.5 {F3 F4 C5}>
<Verticality 8.5 {F3 F4 C5}>
<Verticality 9.0 {C4 E4 G4}>
<Verticality 10.5 {D4 F4 A4}>
<Verticality 12.0 {C4 E4 G4}>
<Verticality 15.0 {G3 G4 D5}>
<Verticality 16.5 {A3 E4 C5}>
<Verticality 17.5 {A3 E4 B4}>
<Verticality 18.0 {D4 F4 A4}>
<Verticality 18.5 {D4 F4 G4}>
<Verticality 19.0 {D4 F4}>
<Verticality 19.5 {C4 E4 G4}>
<Verticality 20.0 {C4 F4 G4}>
<Verticality 20.5 {C4 D4 G4}>
<Verticality 21.0 {C4 E4}>
<Verticality 21.5 {A3 E4}>
<Verticality 22.0 {A3 C4 F4}>
<Verticality 22.5 {B-3 D4 F4}>
<Verticality 23.0 {G3 B-3 D4}>
<Verticality 23.5 {B-3 D4 F4}>
v4 = list(tsCol.iterateVerticalities())[4]
v4
<Verticality 5.0 {F3 C4 F4}>
v4.pitchSet
{<music21.pitch.Pitch F3>, <music21.pitch.Pitch C4>, <music21.pitch.Pitch F4>}
f = sorted(v4.pitchSet)[0]
f
<music21.pitch.Pitch F3>
v4.startTimespans
(<ElementTimespan (5.0 to 6.0) <music21.note.Note F>>,)
v4.stopTimespans
(<ElementTimespan (4.5 to 5.0) <music21.note.Note A>>,)
v4.overlapTimespans
(<ElementTimespan (3.0 to 6.0) <music21.note.Note F>>,
<ElementTimespan (4.5 to 5.5) <music21.note.Note C>>)
v35 = tsCol.getVerticalityAt(3.5)
v35
<Verticality 3.5 {F3 C4 C5}>
v35.startTimespans
(<ElementTimespan (3.5 to 4.5) <music21.note.Note C>>,
<ElementTimespan (3.5 to 4.5) <music21.note.Note C>>)
v35.stopTimespans
(<ElementTimespan (3.0 to 3.5) <music21.note.Note D>>,
<ElementTimespan (3.0 to 3.5) <music21.note.Note F>>)
v35.overlapTimespans
(<ElementTimespan (3.0 to 6.0) <music21.note.Note F>>,)
elTsC = v35.startTimespans[0]
elTsC, elTsC.element
(<ElementTimespan (3.5 to 4.5) <music21.note.Note C>>, <music21.note.Note C>)
Test previousVerticality with Rest
v22 = tsCol.getVerticalityAt(22.0)
v22
<Verticality 22.0 {A3 C4 F4}>
v22.startTimespans
(<ElementTimespan (22.0 to 23.0) <music21.note.Note F>>,
<ElementTimespan (22.0 to 22.5) <music21.note.Note C>>)
elTSfollowingRest = v22.startTimespans[1]
elTSfollowingRest
<ElementTimespan (22.0 to 22.5) <music21.note.Note C>>
v22.stopTimespans
(<ElementTimespan (21.0 to 22.0) <music21.note.Note E>>,)
elTSfollowingRest.part
<music21.stream.Part Contratenor>
score = stream.timespans.makeExampleScore()
tsColSmall = score.asTimespans()
for v in tsColSmall.iterateVerticalities():
print(v)
print(v.getAllVoiceLeadingQuartets())
<Verticality 0.0 {C3}>
[]
<Verticality 1.0 {C3 D3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note C>, v1n2=<music21.note.Note D>, v2n1=<music21.note.Note C>, v2n2=<music21.note.Note C> >]
<Verticality 2.0 {E3 G3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note D>, v1n2=<music21.note.Note E>, v2n1=<music21.note.Note C>, v2n2=<music21.note.Note G> >]
<Verticality 3.0 {F3 G3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note E>, v1n2=<music21.note.Note F>, v2n1=<music21.note.Note G>, v2n2=<music21.note.Note G> >]
<Verticality 4.0 {E3 G3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note F>, v1n2=<music21.note.Note G>, v2n1=<music21.note.Note G>, v2n2=<music21.note.Note E> >]
<Verticality 5.0 {E3 A3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note G>, v1n2=<music21.note.Note A>, v2n1=<music21.note.Note E>, v2n2=<music21.note.Note E> >]
<Verticality 6.0 {D3 B3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note A>, v1n2=<music21.note.Note B>, v2n1=<music21.note.Note E>, v2n2=<music21.note.Note D> >]
<Verticality 7.0 {C3 D3}>
[<music21.voiceLeading.VoiceLeadingQuartet v1n1=<music21.note.Note B>, v1n2=<music21.note.Note C>, v2n1=<music21.note.Note D>, v2n2=<music21.note.Note D> >]
lucaAll = corpus.parse('luca/gloria')
tsCol = lucaAll.asTimespans()
for v in tsCol.iterateVerticalities():
vlqs = v.getAllVoiceLeadingQuartets()
bach = corpus.parse('bwv66.6')
import time
t = time.time()
dummy = alpha.theoryAnalysis.theoryAnalyzer.getVLQs(bach, 0, 1) # two parts only of bach
print(time.time() - t)
0.12808489799499512
t = time.time()
tsCol = bach.asTimespans()
for v in tsCol.iterateVerticalities():
vlqs = v.getAllVoiceLeadingQuartets()
print(time.time() - t) # all parts == 6 pairs
0.20145201683044434
meterCol = lucaAll.parts[0].asTimespans(classList=(meter.TimeSignature,))
meterCol
<TimespanTree {4} (0.0 to 275.0) <music21.stream.Part Cantus>>
print(meterCol)
<TimespanTree {4} (0.0 to 275.0) <music21.stream.Part Cantus>>
<ElementTimespan (0.0 to 0.0) <music21.meter.TimeSignature 6/8>>
<ElementTimespan (81.0 to 81.0) <music21.meter.TimeSignature 2/4>>
<ElementTimespan (185.0 to 185.0) <music21.meter.TimeSignature 6/8>>
<ElementTimespan (275.0 to 275.0) <music21.meter.TimeSignature 3/4>>