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

**harm spine import errors out on unrecognized token #1655

Open
alexandermorgan opened this issue Oct 19, 2023 · 0 comments
Open

**harm spine import errors out on unrecognized token #1655

alexandermorgan opened this issue Oct 19, 2023 · 0 comments

Comments

@alexandermorgan
Copy link
Contributor

music21 version

8.3.0

Problem summary

Steps to reproduce

import music21
path = 'https://raw.githubusercontent.com/jcdevaney/TAVERN/master/Beethoven/B068/Joined/B068_00_01a_a.krn'
score = music21.converter.parse(path, format='humdrum')   # raises type error

Expected vs. actual behavior
I would expect the **harm spine parser to either not run by default or to handle unrecognized symbols without raising an error. If running the parser remains the default, perhaps there could be a setting that lets us not run the parser.

More information
This was run on a mac m1. An easy fix would be to have some sort of handling of unrecognized chord symbols. This line currently returns None which is fine but the final result of an unrecognized token should be some kind of default or empty music21 roman object.
The reason the score linked to above doesn't process is because it encodes the duration information into the chord tokens as well which is a relatively common thing to do in humdrum. In my case, I am not even using the results of the HarmParser. Instead I use music21's tools for reading any spine and take the **harm tokens as they are. But even doing it this way does not work without editing the score to remove the durations and occasional other unrecognized tokens.
Ideally there would be:

  1. a default value for unrecognized tokens
  2. a way to omit automatic parsing of **harm spines
  3. a bit of a side-quest, but it seems like you should be able to access the original **harm token's string no matter how it eventually gets represented (like the .contents attribute of objects in spine.eventList)
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

1 participant