Open sannedubois opened 5 years ago
The immediate solution would be to type the alt-c
command to compile the filter, then go to measure 20 and delete the two lines of null tokens at the start of the measure:
The problem is caused by two grace notes in another part:
Those grace notes cause null tokens (".") to be placed in the string parts. When extracting the string parts, these null token lines remain (and I probably want them to remain). The problem is that the meaning of the null token lines has changed: they use to represent grace note lines which had 0 duration. When the grace notes are removed the line becomes a null token line that I usually interpret as a spacing line that has duration. In this case the parser is assigning a duration of 1/3 of an eighth note to each of the lines due to the eighth notes at the end of the previous measure. Perhaps this behavior should be prevented across barlines (which should solve the problem).
These spacing tokens are getting converted into MEI <space>
elements such as:
<space xml:id="space-0000001018973102" />
Technically this is probably correct since there is no duration assigned to the <space>
element, but there is no explicit way of assigning a zero duration to a <space>
, and verovio treats such a space as if it were a breve (double whole note).
The long-term solution could be done in several ways, which I will have to think about; all of which would avoid placing the <space>
there. Probably the easiest thing to do is to disallow null-token lines to cause <space>
elements to be created in the MEI conversion. Alternatively I can adjust the behavior of the rhythm parsing to not assign durations to null-token lines at the starts of measures.
OK, I understand this spacing issue can only happen when grace notes are at the start of the bar? I can use your solution for the short term, thanks for that. For the long term it would be great if there would be a way to prevent it.
Yes, I am pretty sure this case will only happen at the start of measures, where a removed part has grace notes.
I guess you don't want to make it impossible that null-token lines are there anyway?
Normally I use the rid
tool (which is not available in vhv yet) to remove such lines. One solution would be to implement an option in extract
that removes null token lines. This can be set to be the default behavior, and then I can add an option to preserve them when they are needed. This is probably also the easiest solution to implement.
That would be great.
The rid
filter has been implement in VHV, so this filter will generate the correct notation:
!!!filter: extract -k 1,2,3,4 | rid -d
The spacing of bar 20 is a bit strange when using the extract filter.
Extracted parts 1, 2, 3 and 4:
krn-file: