Added rest and chords to music21 converter

This commit is contained in:
2023-02-16 00:41:31 +02:00
parent f6c6497319
commit 1ff7e3b6d2
3 changed files with 19 additions and 10 deletions

View File

@ -1,8 +1,10 @@
from ziffers import *
from music21 import *
from sardine import *
from ziffers import *
z = z('e (1 2 3)+(4 2 1)*2')
s = to_music21(z,octave=-2,time="3/4")
a = zparse('1 2 qr 124')
print(list(a))
s = to_music21('1 2 qr 124',octave=-2,time="3/4")
s.show()
s.show('midi')

View File

@ -401,7 +401,7 @@ class Sequence(Meta):
text=pitch_text,
pitch_classes=pitch_classes,
notes=chord_notes,
kwargs=options,
kwargs=options
)
return chord
@ -416,6 +416,7 @@ class Sequence(Meta):
elif isinstance(item, (RandomPitch, RandomInteger)):
item = _create_pitch(item, options)
elif isinstance(item, Chord):
item.update_options(options)
item.update_notes(options)
elif isinstance(item, RomanNumeral):
item = _create_chord_from_roman(item, options)

View File

@ -1,6 +1,6 @@
"""Collection of converters"""
from music21 import converter, note, stream, meter
from ziffers import zparse, Ziffers
from music21 import converter, note, stream, meter, chord
from ziffers import zparse, Ziffers, Pitch, Rest, Chord
def to_music21(strData: str|Ziffers, **options):
"""Helper for passing options to the parser"""
@ -54,8 +54,14 @@ class ZiffersMusic21(converter.subConverters.SubConverter):
m = meter.TimeSignature("c") # Common time
s.insert(0, m)
for z in parsed:
m_note = note.Note(z.note)
m_note.duration.quarterLength = z.duration * 4
s.append(m_note)
for item in parsed:
if isinstance(item,Pitch):
m_item = note.Note(item.note)
m_item.duration.quarterLength = item.duration * 4
elif isinstance(item,Rest):
m_item = note.Rest(item.duration * 4)
elif isinstance(item,Chord):
m_item = chord.Chord(item.notes)
m_item.duration.quarterLength = item.duration * 4
s.append(m_item)
self.stream = s.makeMeasures()