Not possible to add bars after XML import [workaround identified]

Hello,

I have been importing an XML file to Dorico and most things looked good. However, I identified some passages where there were one 2/4 bar between the regular 4/4 bars. This is of cause be related to the XML file data quality. When trying to fix these passages (deleting bar to re-create content), Dorico fails to insert new bars by any method available. Simply won’t work!

I tried to import the same information as Midi.The input showed the same issue with the 2/4 bars, but now I was able to modify in Dorico without problem. Now, as the XML input was better in assigning key changes etc. I would prefer to use the XML import.

What can be the problem?

//Per

Welcome to the forum, Per. There’s no restriction on adding bars, regardless of whteher your project started life as a MusicXML or MIDI import. Can you be a little more specific about the steps you’re taking? It sounds like you’re first deleting bars, and then trying to add new ones. What steps are you taking?

Per, there are two things to bear in mind here:

  1. If there’s no time signature, Dorico can’t add bars. It doesn’t know how long they should be, so it doesn’t add them at all. You need to add a time signature first.
  2. When you insert a time signature, Dorico will try to rebar the music that follows, but it will only go as far as the next time signature. If you need to add beats to a bar, to make it the correct number of beats, you can do so by selecting the point where you want to add the beats, typing Shift+B and then typing e.g. +1q (where “1” is the number of beats and “q” is quarter/crotchet. You can use “h” for half/minims, “e” for eighths/quavers etc.). You can also bypass this issue, to some extent, by turning on Insert mode before adding time signatures.

Hello,

Based on what @pianoleo wrote in his entry I did some checks. Based on my findings and @pianoleos info I draw the conclusion that the time signature span does not reach past the first bar. So this is all in conjunction with what was stated there "will only go as far as the next time signature. Seems that each bar is identified as an entity with new time signature then. (My assumption that it was related to a bar interpreted as 2/4 was wrong, it was way down in bar 33 that happened).

This is what I did step by step:

  1. Opened Dorico with a new empty project.
  2. Went straight into xml export and imported xml file
  3. Removed the default Flow (should be irrelevant to the topic)
  4. Changed instrument from “Bb Bass” to “4-string bass guitar”
  5. Transposed 1 octave down
  6. Entered write mode and pop-uped tempo q=166 and Time signature 4/4
  7. Marked the last pause in bar 1 and Shift B pop-uped +1. Success (same result if I mark the barline between bar 1 and 2)
  8. Marked the last pause in what is now bar 3 and Shift B pop-uped +1. Fail.
  9. Entered Time signature 4/4 in bar 3 and attempted #7 above again. Success.
    9 . etc.

There is nothing visual to reveal the time signature span ending. So, if this analysis is correct the correct question to answer here is: How do I span the time signature beyond 1 bar at a time:)?


Best regards,

//Per

Is View > Signposts > Time Signatures ticked? If not, select it - it’s likely the visual clue that you need, here.

My suspicion is that each bar in the xml file has a hidden time signature, which will appear as a red signpost. If this is the case, try selecting and deleting the barline before each red signpost. The barline itself shouldn’t disappear, but the red signpost will.

Hello again,

After some sleep and further analysis I found the following:

  1. Upon your question regarding signposts @pianoleo, I checked and they were all active (except the two accidentals) and so signposts whatsoever were visible . That triggered some further thoughts, but apparently there was no information available in the xml file that triggered any signposts.

So the conclusion here is that there were no time signature data available in file.

  1. After some reading up on musicxml it came to mind that it might be worth adding time signature attributes to the xml file, which I did. I added the time attribute to the attributes section first bar in the raw xml file. I found it needs to be located right after key and not e.g. after clef attribute, otherwise the Dorico parser generates an error.

Now, that solved the “can not add bars” issue. After adding the above and importing to Dorico I can now add bars at any position in the flow. That part of the problem solved.

  1. However, I also had another problem with some bars that clearly was not translated correctly when outputting the original xml file. I identified that when having a 4/4 bar beat and the measure x in xml definition does not have the correct number of note and rest values to equal the 4/4, we turn into another set of problem.

a. In the image below we see three bars (33-35). Bar 34 is missing a half rest

(and the signpost only showed in bar 34 in source versions where I had added time signature in xml file manually)

b. I have still not found a way in Dorico to amend bar 34 with the much needed half rest.

c. After adding a note/rest value in xml file, that problem was also solved. I tried to renew the time signature for that bar also but that did not help.

Conclusion: It seems that some of the general Dorico rules does not apply when importing xml. As I envisioned the way it would work was that you enter data to the system (manually or via xml) and then the system rules apply on the data entered. In that case, in the example above, bar 34 would have been filled with notes from bar 35, but that did not happen.

There may of cause be other use cases where you want to maintain the xml import, but there seem to be areas here that perhaps would need some further consideration.

I can not get my head around that the “fill the bars” rule does not apply when (a somewhat erroneous) xml file is imported to Dorico and that the validity of entering a time signature in Dorico does not apply through-out the flow (at least to the next change of time signature as @pianoleo pointed out). In conclusion there seems to be ruling conflicts in this area that needs to be sorted out.

//Per

In my first reply I told you how to add beats to a bar. Go back and read it again :wink:

You can then shuffle bar 35’s notes into bar 34, using Alt+Left Arrow.

Alas, Dorico seems to resist that temptation, please see enclosed movie snippet @ http://rumtid.se/images/sc2.mov

However, it works when I add a time signature from Dorico in bar 34. But the signpost says it is already 4/4?

I can’t open that video - Chrome seems to think it doesn’t exist.

In my second reply I suggested you delete the barlines immediately before each red signpost. Did you do that?

Well,

  1. Deleting the barline before results in a 6/4 bar

  1. The way to do it is to add a time signature in bar 34 (which then makes the notes from bar 35 to back flow to bar 34) and then insert a half rest.

Please note that none of this would be possible without the manual entry in the xml file, defining the time signature in bar 1, as Dorico interprets the lack of time signature in xml file as “new time signature in every bar”.

For now I understand the behaviour and I can see that there may be considerations why Dorico treats xml in this way. However, there was a bit of a threshold there…

And thanks for your support @pianoleo, much appreciated!

If you import nonsense, Dorico has no choice but to display nonsense. What’s the providence of this musicXML file?

Well, I guess the data quality needs to be evaluated with respect to the elements in the current workflow. All things considered, I’m getting good results with scanning paper sheet music to pdf and then using an iPad app, Sheet Music Scanner, which does the OCR work to MusicXML. A few bars with omitted rests seems to be the major issue in this case. It gets all the notes and key changes but slur results could have been better.

When creating Dorico projects from scratch, barlines and time signatures work something like this:

  1. If you add a time signature, Dorico automatically adds barlines. These barlines are implicit; they’re there as a result of a time signature.
  2. If you start with no time signature, but add beats and barlines manually, each barline will show a red time signature signpost (probably just displaying an “X”, meaning “open meter”). These barlines are explicit; they’re there because you’ve added them, and each has its own hidden time signature.
  3. If you add/remove beats to a bar, either by merging two bars together (by deleting a barline) or by using e.g. Shift+B +2q, the previous barline is automatically given a hidden time signature, to account for the added or removed beats.

I don’t believe that Dorico does anything different to this when handling an XML file, and I’m pretty sure that if Dorico opened the XML file at all then it’s possible to fix within Dorico itself.

If you’d be prepared to share the XML file or Dorico project, as per the guidelines here, https://www.steinberg.net/forums/viewtopic.php?f=246&t=155802 I’d very happily talk you through how to fix this within Dorico.

I’d be quite happy to share the xml file and discuss this further. I will try to arrange for that this evening. Regarding #2 in your post above I noticed that there was not a single signpost whatsoever in the flow for the imported xml file. It was not until I added the meter that the signpost for bar 34 showed up.

//Per

Hello,

Please find enclosed a zip containing 2 files:

  1. song - bass wo time.xml . This is the format which led to the search for a workaround.
    a. The challenge here would be to find a method within Dorico to make it possible to insert bars up to bar 33 after adding a meter in bar 1. As there are no signposts indicated in Dorico upon import there is no indication of “hidden” meters.
    b. If 1a can be solved then it would be preferable if a method could be found how to set bar 34 to back-flow values from bar 35 without the need of making a visible 4/4 entry for that bar (no big deal really, but nice to keep sheet clean)

  2. song - bass w time.xml . This is the version where I was able to “unlock” add-bar capabilities in Dorico by adding time tag indirect in xml file. For reference.

//Per
song-bass.zip (3.96 KB)

This looks like the same situation as https://www.steinberg.net/forums/viewtopic.php?t=124372, to me.
It’s possible to bypass it by adding one 4/4 time signature at the beginning of the flow, then Alt+Clicking that time signature to each barline in the flow (yes, individually). If you then Select All, Filter Time Signatures and delete, all the barlines will disappear. Then add another 4/4 to bar 1 and the problem’s solved.

OK, thanks for clearing that out. Then it is easier solved during preprocessing (i.e. manual entry in xml) now when that option is available. I noted that in other, more potent OCR-to-MusicXML apps, securing meter and complete bars is a must before further processing (saw that in this video where “hidden” meters are also mentioned). If I should chip up I’m contemplating SmartScore or PhotoScore. Have not decided which one yet, but they are pricy so it needs to be digested…

Anyway, thanks @pianoleo for outstanding support!