Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested symbols #21

Open
hbitteur opened this issue May 17, 2017 · 7 comments
Open

Nested symbols #21

hbitteur opened this issue May 17, 2017 · 7 comments

Comments

@hbitteur
Copy link
Contributor

hbitteur commented May 17, 2017

Some symbols can be considered as containers for inner symbols. This could apply to: time signatures, key signatures, repeat signs, etc. For example, using SMuFL names, a repeatRight is an outer symbol composed of 4 inner symbols: 2 repeatDots + 1 barlineSingle + 1 barlineHeavy.

See repeatRight image and notice that we have both the bounds of the outer symbol and the bounds of each inner symbol.

Right now, Audiveris needs the inner symbols, but this may evolve in the future, based on full-context results. For widest usability, the OMR DataSet should contain both "outers" and "inners", while perserving the containment relationship.

The proposal is simple: allow a Symbol element to contain other (sub) Symbol elements. Any reading software will thus be able to pick up the info it is interested in, according to the symbol shape at hand.

Here is the rightRepeat example translated into XML:

    <Symbol interline="14" shape="repeatRight">
        <Bounds x="1705" y="2758" w="30" h="62"/>
        <Symbol interline="14" shape="repeatDot">
            <Bounds x="1705" y="2778" w="7" h="8"/>
        </Symbol>
        <Symbol interline="14" shape="repeatDot">
            <Bounds x="1706" y="2794" w="7" h="7"/>
        </Symbol>
        <Symbol interline="14" shape="barlineSingle">
            <Bounds x="1719" y="2758" w="3" h="62"/>
        </Symbol>
        <Symbol interline="14" shape="barlineHeavy">
            <Bounds x="1725" y="2758" w="10" h="62"/>
        </Symbol>
    </Symbol>
@hajicj
Copy link

hajicj commented Aug 18, 2017

Dear fellow OMRists,

I recently published an OMR dataset, and had to solve the same problems when designing the representation.

The nested structure orders the symbols into a forest graph, but at some point, you need to start duplicating objects: e.g., with noteheads that have two stems attached when two voices meet, or with back-to-back repeats (shared barlines in the middle). My solution was to use a general DAG, not a forest, and simply record the dependencies between the objects.

I would be happy to collaborate on creating the ground truth definitions in general.

-Jan Hajič jr.

@hbitteur
Copy link
Contributor Author

hbitteur commented Aug 21, 2017 via email

@hbitteur
Copy link
Contributor Author

Finally, I have been able to access your site, late at night.
Main difference is that you are aiming at handwritten music while here we deal with printed music only.
But your user interface to annotate music entities is something we are looking for.
Regarding the data model (nesting relationship vs more general relationship), there is a difference between the very simple model for OMR dataset (meant to train a classifier on entity patches) and the more complex model used internally by Audiveris (where we use graph of entities with suitable relationships). See description in the wiki part of audiveris repo, especially https://github.com/Audiveris/audiveris/wiki/sheet%23N-xml

@hajicj
Copy link

hajicj commented Aug 22, 2017

Don't worry about delays, I have way too much work anyway...

Thanks for the documentation link! It would be good for my data format to be compatible with the Audiveris SIG, so that you can eventually train whatever systems you have for manuscripts as well as printed music.

Re: MUSCIMarker UI - I will be happy to collaborate to make it useful to you. Feel free to create issues in the project repo with the type:question label; if you want a demo, we could perhaps arrange a TeamViewer session or something similar.

Have a great vacation!

@hbitteur
Copy link
Contributor Author

hbitteur commented Sep 2, 2017 via email

@hajicj
Copy link

hajicj commented Sep 7, 2017

Hello Hervé,

this usage of nesting makes sense, indeed - basically to define what your lowest-level symbol is.

On the subject of Music Hack Days -- Will you be at the upcoming Waves Vienna?

I'm currently improving MUSCIMarker for a new round of my own annotations -- I need to start dealing with grayscale images, poor-quality photos, etc., and I'm also extending the data format to deal with temporal relationships. Will you be using MUSCIMarker? If yes, now (=1st half of September) would be a good time to check it out and tell me if you need some changes, since I'm spending time on it anyway.

The offer of a real-time MUSCIMarker demo session still stands, by the way.

Best,
-Jan

@hbitteur
Copy link
Contributor Author

hbitteur commented Sep 8, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants