Audiveris / audiveris

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

BUG: Error opening Book -> SetParameters dialog #701

Open SuperNose opened 11 months ago

SuperNose commented 11 months ago

I've tried to recognize a Russian lyrics based on the forum feedback here and added to the org.audiveris.text.Language.defaultSpecification value "+rus". Afterwards I cannot longer open the Book->SetParameters window, it gives me:

WARN [] BookActions 1726 | Error in BookParameters java.lang.NullPointerException: Cannot invoke "String.trim()" because "spec" is null java.lang.NullPointerException: Cannot invoke "String.trim()" because "spec" is null at org.audiveris.omr.text.Language$SupportedLanguages.indicesOf(Language.java:322) at org.audiveris.omr.text.Language$ListModel.indicesOf(Language.java:153) at org.audiveris.omr.score.ui.BookParameters$LangPane.display(BookParameters.java:900) at org.audiveris.omr.score.ui.BookParameters$LangPane.display(BookParameters.java:846) at org.audiveris.omr.score.ui.BookParameters.stateChanged(BookParameters.java:507) at java.desktop/javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:446) at java.desktop/javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:297) at java.desktop/javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:148) at java.desktop/javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:79) at java.desktop/javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:650) at java.desktop/javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:625) at java.desktop/javax.swing.JTabbedPane.setSelectedComponent(JTabbedPane.java:709) at org.audiveris.omr.score.ui.BookParameters.<init>(BookParameters.java:345) at org.audiveris.omr.sheet.ui.BookActions.applyUserSettings(BookActions.java:1660) at org.audiveris.omr.sheet.ui.BookActions.defineParameters(BookActions.java:370) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:647) at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:687) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1029) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1073) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6620) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398) at java.desktop/java.awt.Component.processEvent(Component.java:6385) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4995) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4827) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4827) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

SuperNose commented 11 months ago

Hm, now also after I've removed the "+rus" suffix, I can no more access that "Set book parameters" menu-item, although I've reopened the .pdf file freshly, I've restarted Audiveris and even reinstalled it. Seems like there is some still-persisted option somewhere.

Error in BookParameters java.lang.NullPointerException: Cannot invoke "String.trim()" because "spec" is null

I've of course downloaded the RU-trained data from here

Quite frustrating, I can't open that dialog now no matter what; and instead of spending the Sunday with music, I'm analyzing the log-files 😂. But the app is really nice, kudos to the author, unbelievable it exists - I would be glad to help somehow, just tell me how 🙂!

hbitteur commented 11 months ago

Which Audiveris are you using? The installed one (on Windows, the master branch) Or the one built on your own (from the development branch) And which OS too?

hbitteur commented 11 months ago

There is a bug in the handling of book parameters. Something I discovered yesterday by chance. I can easily push a fix on the development branch I guess you are on the development branch, because this is where the bug on book parameters was introduced a few days ago.

hbitteur commented 11 months ago

I just pushed a fix on the development branch. Could you pull and rebuild? And tell me if it's OK now...

SuperNose commented 11 months ago

I've used the Win-Installer "Audiveris_Setup-5.3.1-windows-x86_64.exe" provided at your "Releases" Page, it's dated July-2023. So I didn't build it myself - and in this moment I can't, although I would love to 🤦‍♂️😖. PS: I've tried yesterday quite a lot more with a quite simple music-sheet and was not able to add the score staff/stave to the unrecognized area. Somehow the tool has quite problems with it and although I'm a senior SW architect and play a bit guitar and sing, I was totally lost and gave up 😁!

hbitteur commented 11 months ago

@SuperNose I'm trying to reproduce your problem. For this, I just installed Audiveris using the .exe available on the Releases page, as you did. Then, I made sure that the system environment variable TESSDATA_PREFIX was defined and pointing to the tessdata folder where I put the Tesseract language files. I downloaded the rus.traineddata file to this tessdata folder.

Then I launched Audiveris, using Windows start menu. The Help | About menu gave me this: image

Then I could use Book | Set Book Parameters to set the language selection to eng+rus: image

And things were OK. I can't reproduce your problem.

When you say:

I've tried to recognize a Russian lyrics based on the forum feedback here and added to the org.audiveris.text.Language.defaultSpecification value "+rus"

It is not clear to me how you proceeded:

I must reproduce your problem, otherwise I won't be able to help you.

SuperNose commented 11 months ago

Book | Set Book Parameters did not show me such options at the beginning, when it was possible to open that dialog: it was empty and I was a bit confused, what´s that option for, when empty.

No, I did not modify the options/settings manually, but as you´ve described via the UI.

Is there any log-file I could send you? Or a TRACE-flag I could increase so it can generate a diagnostic log for sending to you?

Reading the stack-trace, the spec is null, so when you look into the sources, the reason should be clear for you (and you're faster in your code than me ;-)!)

Tell me pls how to proceed: the tool looks amazingly complex and I'm happy to send you any more information which makes it a bit more stable 👍!

hbitteur commented 11 months ago

To get us out of this dead end, I have just published a "pre-release" 5.4-alpha. You can grab the Windows installer here Please install, and tell me how it goes on your side.

SuperNose commented 11 months ago

No crashing now, I can reach that book-settings menu from the alpha version 🙂, TY 👍!

PS: Now I'm left with the more gentle user-challenge: the app won't recognize fully my song (the score stuff was skipped in the beginngin); I've checked the user-docs (for level Einstein skills 😁) how to force/repair the recognition and could not solve it so far🤦‍♂️