xi2

a plain text language that compiles to MIDI
git clone https://git.ce9e.org/xi2.git

commit
5ee50e75083c92b0698c62bf516fad5fb59e01f9
parent
87a7a88e6b34138949f2f9ed8dfcdb070b305548
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-09-19 10:15
refactor/fix joining sections

Diffstat

M xi2.py 25 ++++++++-----------------

1 files changed, 8 insertions, 17 deletions


diff --git a/xi2.py b/xi2.py

@@ -69,29 +69,20 @@ if __name__ == '__main__':
   69    69     ll = ll.strip('\n')
   70    70     ll = re.sub('\n\n+', '\n\n', ll)
   71    71 
   72    -1     # join track parts from different sets
   -1    72     # join tracks from different sections
   73    73     tracks = dict()
   74    -1     for s in ll.split('\n\n'):
   75    -1         if len(tracks) == 0:
   76    -1             l = 0
   77    -1         else:
   78    -1             l = max([len(t) for t in tracks])
   79    -1         for track in s.split('\n'):
   -1    74     for section in ll.split('\n\n'):
   -1    75         length = max([len(t) for t in tracks.values()], default=0)
   -1    76         for track in section.split('\n'):
   80    77             try:
   81    -1                 (name, data) = track.split(':', 1)
   -1    78                 name, data = track.split(':', 1)
   82    79             except Exception:
   83    80                 print(track)
   84    81                 raise
   85    -1             data = parse(data)
   86    82             if name not in tracks:
   87    -1                 tracks[name] = [''] * l
   88    -1             tracks[name] += data
   89    -1         if len(tracks) == 0:
   90    -1             l = 0
   91    -1         else:
   92    -1             l = max([len(t) for t in tracks])
   93    -1         for name, data in tracks.items():
   94    -1             data += [''] * (l - len(data))
   -1    83                 tracks[name] = []
   -1    84             tracks[name] += [''] * (length - len(tracks[name]))
   -1    85             tracks[name] += parse(data)
   95    86 
   96    87     # create first track with meta infos
   97    88     midi_tracks = []