Audiveris / audiveris

Latest generation of Audiveris OMR engine
https://audiveris.github.io/audiveris
GNU Affero General Public License v3.0
1.58k stars 232 forks source link

wrong assignment to voices - no possibility to correct through user interface #57

Open Bacchushlg opened 6 years ago

Bacchushlg commented 6 years ago

as time goes by_01

in the above score the analysis fails in measure 4. The reason is that the notes with stem to the bottom are not detected as voice 2. Unfortunately there is no way to "move" these notes to voice 2 by the user (at least I don't find it).

Bacchushlg commented 6 years ago

wrong voices assignements

...and what's more: the voices change for the bass staff from measure to measure. After import to MuseScore the 2 half notes of measure 3 top voice (A, F) are imported as elements of the bass staff (I cannot recognize, if this is an Audiveris or a MuseScore problem).

hbitteur commented 6 years ago

Voice numbering is something difficult. There is room for improvement especially from one measure to thefollowing one. Voices may appear and disappear nearly randomly. I should work on some kind of voice number continuity between measures. Today voices Ids are set from top to bottom within a part/measure

Bacchushlg commented 6 years ago

I was able to solve the problem by changing the value of "maxAdjacencyXGap" to 0.4 (was 0.3). Of course I don't know, what will be the side effects - but maybe this is a solution?

Bacchushlg commented 6 years ago

@hbitteur : do you agree to change this to 0.4? I work the last days with this value - seems to make no problems.

hbitteur commented 6 years ago

I changed it from 0.65 to 0.3 recently, to cope with very crowded cases. Reraising to 0.4 might lead to problems on some scores. If 0.4 is OK for you, you are free to keep this as a user value, no problem

Bacchushlg commented 6 years ago

I have a new example that is even worse than the one above. Here both chords are with aug.points:

BarP - Fly Me to the Moon 3.zip

hbitteur commented 6 years ago

FYI, an .omr file is already a zip file, so there is no need to zip it again!

hbitteur commented 6 years ago

image We have a similar problem in measures 46 and 48 (figure above taken from Fly Me to the Moon example). In location 1, we have 2 chords with opposite stem directions In location 2, we have 2 chords with opposite stem directions, as well How can the OMR engine decide that in location 1 the 2 chords should share the same time slot and that in location 2 they should not? Do you have a hint to guide the engine?

Bacchushlg commented 6 years ago

The main question in my opinion: how to decide, if a staff is meant for one or 2 (or more) voices. Your example shows the dilemma: the first tick (upper staff) could also be a half note augmented followed be the chord with stem going down. Although it is obvious to a normal musician, is difficult to define a rule. To make decision easier, I propose to help the algorithm by defining (by user), if a staff contains a single voice or 2. In that case it is clear, that notes with stem going up go the first voice, the others to the 2nd.

Concerning the example: the user would define 2 voices for staff 1 and 1 voice for staff 2.

Bacchushlg commented 6 years ago

about zip or not: I cannot upload omr-files, because the issue tracker does not accept them. Only images, pdf and zip files are accepted.

Bacchushlg commented 4 years ago

a re-transcription with the actual version (238bb2c) stops with:

[35765864-5751fee8-08cd-11e8-8be3-4d6752cffded] No support yet for TIME_ZERO [35765864-5751fee8-08cd-11e8-8be3-4d6752cffded] Error in performing [SCALE, GRID, HEADERS, STEM_SEEDS, BEAMS, LEDGERS, HEADS, STEMS, REDUCTION, CUE_BEAMS, TEXTS, MEASURES, CHORDS, CURVES, SYMBOLS, LINKS, RHYTHMS, PAGE] java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.IllegalArgumentException: loops not allowed