Containers, time interpretation of¶
Time interpretation defaults¶
The time interpretation of Abjad containers initializes to either sequential or simultaneous. Defaults correspond to the most common use of each type of container. Abjad’s vanilla containers, voices and staves all default to sequential time interpretation:
>>> abjad.Container(name="Example_Container").simultaneous is None
False
>>> abjad.Voice(name="Example_Voice").simultaneous is None
False
>>> abjad.Staff(name="Example_Staff").simultaneous is None
False
Abjad’s staff groups and scores default to simultaneous time interpretation:
>>> abjad.StaffGroup(name="Example_Staff_Group").simultaneous
True
>>> abjad.Score(name="Example_Score").simultaneous
True
Setting time interpretation at initialization¶
You can set the time interpretation of any container at initialization. If you know how you will use a container, go ahead and set the container’s time interpretation when you create it. The staff below initializes as simultaneous to allow two-voice polyphony:
>>> voice_1 = abjad.Voice(r"e''4 f''4 g''4 g''4 f''4 e''4 d''4 d''4 \fermata")
>>> voice_2 = abjad.Voice(r"c''4 c''4 b'4 c''4 c''8 b'8 c''4 b'4 b'4 \fermata")
>>> staff = abjad.Staff([voice_1, voice_2], simultaneous=True)
>>> command = abjad.VoiceNumber(1)
>>> abjad.attach(command, voice_1[0])
>>> command = abjad.VoiceNumber(2)
>>> abjad.attach(command, voice_2[0])
>>> abjad.show(staff)
Changing time interpretation after initialization¶
You can also set the time interpretation of containers after you create them. The staff below initializes as sequential. But you can change the staff’s time interpretation after you initialization:
>>> voice_1 = abjad.Voice(r"e''4 f''4 g''4 g''4 f''4 e''4 d''4 d''4 \fermata")
>>> voice_2 = abjad.Voice(r"c''4 c''4 b'4 c''4 c''8 b'8 c''4 b'4 b'4 \fermata")
>>> staff = abjad.Staff([voice_1, voice_2])
>>> command = abjad.VoiceNumber(1)
>>> abjad.attach(command, voice_1[0])
>>> command = abjad.VoiceNumber(2)
>>> abjad.attach(command, voice_2[0])
>>> abjad.show(staff)
>>> staff.simultaneous = True
>>> abjad.show(staff)