CPJKU / partitura

A python package for handling modern staff notation of music
https://partitura.readthedocs.io
Apache License 2.0
227 stars 15 forks source link

Bug fix 326 #327

Closed sildater closed 11 months ago

sildater commented 11 months ago

The current matchfile_from_alignment from alignment uses the document order of notes in line 361 (exportmatch,py)

snote_sort_info[snote.id] = (onset_beats, snote.doc_order)

to later on sort by this value in line 460 ff

sort_stime = np.array(sort_stime)
sort_stime_idx = np.lexsort((sort_stime[:, 1], sort_stime[:, 0]))
note_lines = np.array(note_lines)[sort_stime_idx]

doc_order is a standard note property but it's only used for musicxml files so far. Scores/parts imported from match/mei/kern/midi do not have this property and the sorting breaks. A doc_order property shouldn't be a hard requirement though, so the doc_order extraction is now:

snote_sort_info[snote.id] = (onset_beats, snote.doc_order if snote.doc_order is not None else 0)