Hacker News new | ask | show | jobs
by kazinator 1037 days ago
If you're not a music notation genius trying to compose a complex, syncopated rhythms where you need the right rest values in between notes, MuseScore makes it very difficult. You can't just guess at the time values and then delete or insert bits of time in any way that is obvious or discoverable.

Here is a question: suppose you decide that you need an anacrusis (or "pickup measure") but didn't specify one at document creation time. Where can you do that? It's not discoverable at all. There is a submenu under Add for measures, in which you can insert measures at the beginning or end, but full measures only with all the beats.

1 comments

Huh? That's simple - just change "actual" (vs "nominal") time signature in the measure properties.

What is a problem for me though is that the measure properties dialog opens up behind the main window...

Ah, I finally found what you're talking about. This thing has multiple elements called Properties. There is a Properties tab above the left pane. When a measure is selected, a Measure item appears there: a trash button to delete selected measures and a button to insert measures.

You're talking about a right click context menu which has a Measure Properties command. That indeed opens behind the main window. (Is this using GTK+? I regularly see this issue in GTK+ programs on Windows like GIMP; it's been there for at least 15 years.)

I see that I can set the actual time of a measure to, say 1/4 which creates a one beat pickup measure if it's the first measure.

No it's all Qt. I've tried fixing a few cases but yeah, seems something fundamental to the Qt library. I'd like to think that dialog will probably go away and be rolled into the properties pane, which I gather is Martin's (tantacrul's) preference.
OK, so I now know of three instances in different software of a similar issue on Windows: a window coming up in the background.

One is in Qt (as manifested by this MuseScore behavior with the dialog).

The other is a long-standing thing in GTK+, visible for instance in the Windows version of GIMP.

Then there is this funny issue I fixed in something called the Cygnal project (a fork of the Cygwin DLL):

https://www.kylheku.com/cgit/cygnal/commit/?id=5d50aea73aace...

When a program that has never serviced its Windows message pump runs another program via CreateProcess, and that program creates a window, that program's window fails to come to the foreground.

This goes away with a dummy call to TranslateMessage.

I have a vague feeling this could all be related.

I just assumed it was because the window owner wasn't set properly (but it's a long time since I did windows desktop app development). Strangely I can't reproduce the problem now - you can certainly send the dialog behind the parent, but it comes up above it initially as expected.