Don't play invisible notes

• Jan 8, 2022 - 14:21

Hello,

I want to simplify some scores by eliminating notes. Before deleting them, I wan to hear how the music sounds without those notes.
I can easily make them invisible with the V - shortcut, but then they are still playing.
I can toggle the play switch in the inspector, but that's always an extra action and doesn't make it user friendly.

Is there an easy way to make that invisible notes are not played by default?
Is there a way to select all invisible notes?

What would be useful is :
- add a preference for what to do by default when a note is made invisible: play the note or not.
- adding 'Toggle Play Note' to the list of items you can create a shortcut for
- adding an 'invisible' select box to the 'select notes' window (what you get when right clikcing on a note and choosing select -> more)
- allow to attach more than one action to the same shortcut (although this can result in some conflicts or order of execution dependencies, I can understand this is something you don't want to implement)

Thanks,
Luc.


Comments

I'm not understanding the "extra action" about unchecking play - it's a single click either way (either press "V" or click the Play checkbox). Anyhow, no, there is no built-in facility for associating invisible notes with silent notes - indeed, and invisible silent notes basically is deleting.

So my main advice would be. just do the delete, and if you don't like the result, hit Undo. Or, simply forget about invisibility since that's not really relevant here, and work with the property you actually want here - the Play property.

If it's a matter of keyboard shortcuts being more convenient than clicking in the Inspector, I get that. For this specialized use case, probably a plugin could be written and assigned a shortcut. And yes, that plugin could also make the note invisible if you like.

In reply to by Marc Sabatella

Hello Marc,

Thanks for the reply.

"V" only changes the visible checkbox, the extra action is clearing the Play checkbox in the inspector.
About hitting undo: I didn't completely describe what I want to achieve, I want to 'mute' a set of notes, and 'unmute' some of them, undo brings them back in reverse order of muting, where I want to be able to pick the notes 'randomly'. (what I'm doing is simplifying some scores by reducing chords of 3 or 4 notes to only 1 to 3 and want to test what works out best).

The invisibility is relevant for me, as it shows which notes are muted.

It's indeed a matter of keyboard shortcuts, and I did what you suggested: I wrote a plugin that toggles the visible and play properties of selected notes, cleared the "V" shortcut, and defined "V" as shortcut for my plugin.
That's what I was looking for :-).

Thanks,
Luc.

In reply to by lucvdv

lucvdv wrote >I wrote a plugin that toggles the visible and play properties of selected notes, cleared the "V" shortcut, and defined "V" as shortcut for my plugin.

Sounds pretty slick. I'd use that. Wish there was a MuseScore preference or score setting/style to Mute notes on the v keystroke.

In the meantime, can you share your plugin?

scorster

In reply to by lucvdv

Working on version 2.

I now also make the accidental associated with the note invisible.

Another problem is that when exporting the score to a pdf file, the stems of the invisible notes are still visible.
Does anyone know, given an element of type NOTE, how to get to the stem of the note?
Please say if I better continue in the plugin forum.

Thanks,
Luc.

In reply to by jeetee

Thanks! I can get to the stem now. So musescore defines one stem per chord, which sounds logic. But as a result, you can only make it visible or invisible as a whole.

I've done some more testing and I've been looking at what is stored in the .mscx file, and came to the conclusion that what I want is impossible, even with a plugin.

The bottom endpoint of the visible part of the stem should be the lowest visible note, and it's not possible to adjust this.
(the length should be adjusted to the highest visible note, that is stored in the userLen attribute of the and it should be possible to calculate the value, but since I keep the highest note most of the time, I'm not going to investigate this further).

How the stem is visualized is defined in the screen display and pdf export functionality, so not in the data, but in the program.

Now I'm curious about what you think of the following: when you draw a note in the editor, you draw a notehead and a stem, when you make a note invisible, it should also make the stem invisible, and if the note is part of a chord, the stem should be displayed with a gray+black+gray part (gray at the bottom when the lowest note is invisible, gray at the top when the highest note is invisible), and printed as if the note wasn't there.

Luc.

In reply to by lucvdv

What You want to achieve would be possible, but in a bit overcomplicated way.

1) You can set unwanted ("invisible") notes to be a voice 4, make them stemless and hide them. If there is accidental, hide it too. Than also hide (or remove) voice 4 rests.

2) To put "invisible" notes back, change their voice, to be voice 1 again, make them visible and remove voice 4 rests.

In reply to by lucvdv

I like sammik's idea, but moving a note to another voice might be tricky to do in a plugin - checking to see to if there's room, creating the chord, etc. But if you can pull it off, it probably opens up some other interesting possibilities.

Meanwhile, to just eliminate the effect of an invisible note on the stem, try setting the "fix to line" property to force the note onto the same staff line as some other note already in the chord.

Unfortunately there's little consensus on what the "right" behavior is in drawing a stem on a chord containing invisible notes. In some cases you want it to affect the stem (e.g. to create headless notes), other times you don't. )Probably there just needs to be a property on the note to control whether it influences the stem or not.

In reply to by Marc Sabatella

Nice, "fix to line" seems to be easier / better way to go.

"there's little consensus on what the "right" behavior... headless notes"
I am not sure, if invisible note is best way for headless notation, as it hides ledger lines too. Is that intended for headless notation?
One can sat note transparent (color alfa), or even better, as feature request, new type of notehead "hidden" would be nice.
Is there any other use case, when You want invisible note to affect stem?

In reply to by sammik

The question of ledger lines comes up, and the answer is "it depends" there. There have been quite a few discussions of this over the years, scattered through various different forum threads, issue reports, etc. There's a pretty remarkable variety in the different sorts of things people use invisible notes for.

In reply to by Marc Sabatella

yes, I agree, I mostly have only 2 voices, so moving voice 1 to voice 3 and voice 2 to voice 4 together with making the note and stem invisible would give the visualization I'm looking for, on the screen and in a pdf export. Putting it in a plugin to reduce the number of mouse clicks or keystrokes is indeed not easy. The note belongs to a chord which belongs to a voice, so moving the note from one voice to another would mean to delete it form the chord, and create another chord for another voice...

I didn't know the "fix to line" property, so I learned something new. It can be used to get the stem right, but it would hide the note, and that wasn't the intention.

So, how a concensus can be reached :-)? Here is my argumentation.
1. I attached a pdf-file which is the export of a score with one measure with 4 chords of 2 notes of which I made the lower note invisible. 'Note invisible' should mean that the result should look the same as 'note not there', or 'note deleted', and not like it looks in the pdf file.

  1. musescore-xml keeps one stem per chord, while music-xml keeps one stem per note. I do understand the reasoning behind it: one can say that all notes belonging to one chord and with the same voice , have their stems combined to one stem. But it's this deviation from the standard that is causing the problem:
    in musescore-xml you can only make the stem invisible for the chord, while in music-xml you can make the stem of one note in a chord invisible. Making a note invisble in music-xml would result in the following xml code:

<note .... print-object="no">
<pitch>
<step>C</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
</note>

the 'print-object="no"' property is defined on the note, it purpose is to specify that the note shouldn't be printed, and since the stem is part of the note object, it shouldn't be printed too.

So is it correct to say that musescore doesn't follow the music-xml standard?

Luc.

Attachment Size
invisible_notes.pdf 8.88 KB

In reply to by lucvdv

I am not sure, You need plugin for this. It doesnt require so many clicks.
1. To set voice You need one click (select note) and one click or key stroke (Ctrl + Alt + 3) to set new voice.
when every unwanted notes are in propriete voice (3), you can use selection filter
2. Right click on one unwanted note, Select - More - Same voice
3. In inspector, tick Stemless and untick Play and make them invisible (in inspector, or key "v")
4. Remove unwanted rests in voice 3 (right click, Select - More - Same voice) an delete them, or make them invisible

To hide accidentals too, I created plugin for that before, so it would be step 3.b

If you find it still too many clicks, You can play with plugin, to combine it into one keystroke.
Changing voice with plugin API could be complicated, but there is magic: cmd("voice-3"), which you can run in plugin and does its job.

In reply to by sammik

Hi Sammik,
Yes, that's what I would do, except I wouldn't remove the stem, but make it invisible as well because I don't want to loose that information. I'm trying:
var this_chord = element.parent;
this_chord.stem.visible = ! this_chord.stem.visible;
where element is a note, but that doesn't seem to work.
I got the cmd("voice-x") working, but if I want to use the plugin as a toggle (executing it twice results in the original situation), I need to find the voice of the note. but that doesn't seem so easy as it depends on the position of the <voice> tags in the xml object.
Since the scope of cmd() is the selection, all selected notes should have the same voice, but that's a limitation I can live with.
What is the best resource to find more about defining plugins and see more examples?
Thanks,
Luc.

In reply to by lucvdv

stem.visible = !stem.visible should work, at least, it work for me.

with tracks, You can do something like:

switch (note.track % 4) {
case 0 : cmd("voice-3");
break;

case 1 : cmd("voice-4");
break;

case 2 : cmd("voice-1");
break;

case 3 : cmd("voice-2");
break;

default : console.log("No track")
}

You can also manage selections with plugin https://musescore.github.io/MuseScore_PluginAPI_Docs/plugins/html/class…
Also some may be useful info here https://musescore.org/en/node/321398

In reply to by sammik

Thanks! Useful links. I think that my problem with the invisible property was because I executed it twice (once if it was already in the selection, and second because I changed it as part of the note. It works now.
The select() method doens't work for chords elements, but I don't need it anymore.
I looped through the selected elements to toggle the invisible property and in the meantime, I looked at what the voice was, and then changed the voice.
But this has to be done in reverse order: I first have to change the voice before I toggle the invisible property.
So it works now.
(I only have to see if I can remove the rests (but as you already said, with select->more->same voice, I can remove them all at once, so that's not a big issue).

After running some more tests, I will replace my previous upload of the plugin by the new one.

Luc.

In reply to by lucvdv

Turning on the invisible property of a stem in a chord element, doesn't make the hook invisible.
I compared the mscx files before and after making a hook invisible using the inspector,
and the difference is that the chord has a Hook property:

<>
<Hook>
<name>flag8thDown</name>
<visible>0</visible>
<Hook>

(if the hook is visible, this data doesn't exist, so I can't make it invisible by changing the visible property of the hook).

How can I add this data to a chord in a plugin?
If there isn't some kind of a 'add hook' method, then can it be done at a lower level by adding a property to an element and adding the name and visible values? And if the second option, how can I get the name of the hook?

Thanks,
Luc.

In reply to by sammik

Thanks, Sammik.
That works for single notes, but when they are connected by a beam, the beam stays visible.
Making the beam invisible adds a property to the voice the chord belongs to

<>
<Beam>
<visible>0</visible>
</Beam>
Just like the chord's hook property, it's something that isn't in the musescore xml data when the beam is visible, so it's something that should be inserted between <voice> and <chord>
How can that be done?
Thanks,
Luc.

In reply to by sammik

Thanks! It's working now. I don't remember why it wasn't working and was focusing too much on what is written in an uncompressed saved score.
My plugin is working now, so thanks everyone for the help. I'll post it when I cleaned up the code a bit.
I have some more questions about plugins, but will post them in the plugin forum since I think that's more appropriate.
Luc.

In reply to by lucvdv

I mentioned fix to line specifically for the invisible note. So I'm not sure what you mean about hiding it not being the intention?

Probably best to take a step back and post your actual score and explain in more detail what you are trying to do.

Regarding MusicXML, can you point to the part of the spec that says partial stems should be hidden? I wasn't able to find anything about that. But if it is part of MusicXMl, then indeed, we should have a way to support it.

In reply to by Marc Sabatella

Ok, when you make a note invisible in the editor, the note is grayed-out, which is good of course, because you can still select the element and change its properties. How I understood your solution to use the 'fix to line' property is that I change the position of the note so that the stem looks the same as if the note was deleted. Then the note becomes also invisible in the editor, that's what I meant with hidden.
I also tried to explain it in the attached file.

I used the words 'partial stem' in the musescore context, not in musicXML. Musescore has one stem for the chord, with partial stem, I mean that portion of the stem that belongs to visible notes.
MusicXML has a stem per note, which should be visible for visible notes, and invisible for invisible notes as the stem property is part of the note and the print-object attribute is set on the note, and not the notehead.

In https://www.w3.org/2021/06/musicxml40/musicxml-reference/elements/note:
" print-object yes-no No Specifies whether or not to print an object. It is yes if not specified."

The object here is the note, which is a notehead + a stem.
So, in my opinion, the way musescore renders the stem in the editor and in a pdf export is not as intended in musicxml.

I hope this clarrifies what I wrote before.

Thanks,
Luc.

Attachment Size
InvisibleNotes.mscz 11.81 KB

In reply to by lucvdv

Right - the goal as I understand it is to make it as if the note isn't there. And that's exactly what the method I described accomplishes. So I'm not understanding the problem? It's that you want the invisible note to still be partially visible? So you can select it? So give it an offset too. Or just select it with Ctrl+click - that selects objects that are obscured below other objects.

I get that in MusicXML, the stem is associated with an object called a note. What I don't see is where MusicXML defines what is supposed to happen if you have a chord of multiple notes, some of which have visible stems other that don't. It also allows notes to have mixed stem directions within a single chord, but that makes no sense to me either.

In reply to by Marc Sabatella

Yes, having mixed stem directions doesn't make sens to me either.

I also don't find a description of what the intention of the print-object attribute is. There is a description of how a musicxml should look like, it would be better if there was also a standard of the intention of the definition. Now it's open for interpretation.
In any situation where graphical objects are printed, when an object has an attribute 'print-object=no', I would expect that the result would be the same as if the object didn't exist. So also in case of a note that is part of a chord. That just seems logical to me.
Perhaps If you look at it from a different angle, you may come to another conclusion, so be it.

What would be useful is :
- add a preference for what to do by default when a note is made invisible: play the note or not.

+1 This would be a handy, productivity option.

In reply to by yonah_ag

+ 2

scorster wrote > >I wish there was a MuseScore preference or score setting/style to Mute notes on the v keystroke.

In situations where I would hide a note inevitably I would not want it to play. I suppose there might be exceptions, but I can't think of any.

Presently to make high quality guitar notation, and tablature with my preferred beaming style, I have to add notes, tie them, hide and mute them.

In reply to by scorster

Lots of use cases for invisible notes that play - most obviously, using them to implement things like custom ornament or other playback effects.

It's not clear what sort of non-standard notation you are trying to create that currently seems to require invisible silent notes, but if you start a new thread about it, maybe people can suggest more efficient ways.

In reply to by Marc Sabatella

Invisible silent notes is intuitive and a sensible default. How would we know to play invisible notes on a printed score? (Rhetorical question. Clearly, we wouldn't know since we wouldn't be able to see them. Therefore they would be silent.)

Using invisible notes for playback effects is a last resort when MS does not support said effect. Hopefully with MS4 the improved playback will make this type of workaround redundant.

Ornaments should be dealt with by some sort of "ornaments processor engine" like in Guitar Pro, rather than massaged into hidden notation.

In reply to by yonah_ag

Invisible silent notes make no sense at all as a default - why have the note at all if you don;t want to see or hear it? The vast majority of use cases for silent notes, it's because you want to see them but not hear. And the vast majority of use cases for invisible notes, it's because you want to hear them but see them. In the few isolated cases where there for some reason needs to be a note where you want to neither see nor hear it, then one can simply set this manually.

In reply to by Marc Sabatella

Is there a common use for invisible notes other than trying to achieve some layout or playback effect that cannot be otherwise achieved? When used for such effects it will add clutter to MusicXml files as these notes are not an inherent part of the music.

Invisible silent notes can be useful during score development, i.e. to switch off note playback and visibility whilst testing preferred scoring options.

Maybe it's not the best default but it would be a nice option to have.

There are many functions in MuseScore where these small productivity settings could make score entry so much quicker. Lots of small manual requirements can soon add up, e.g. it would be nice to be able to set a default visibility of rests by voice number.

In reply to by yonah_ag

I would say that most people probably have no use whatsoever for invisible notes. Their main use is to achieve some specific playback effect that is not directly supported currently. And yes, in such h cases, probably best to keep them from being exported to MusicXML. Seems that has come up before, but I'm not sure the current status of it. In any case, that seems unrelated to the question of their playback.

Invisible silent notes could indeed be useful for this very specific task you are describing, but I've literally heard of anyone ever doing that before this week. So I can't imagine there are lots of people looking for this. So for the few people looking for this, it seems the existing option to mark a note silent - and the nice plugin that now exists to do both at once - is a great option. Still, if enough people voice their support for this - enough to justify spending the development effort designing, implementing, documenting, and supporting a new user interface element and the code to support it - then sure, it certainly could happen someday.

But it is important to realize that adding yet more and more options, more and more dialog boxes, more and more choices for the user to wade through in order to find the more important feature all users might need to access every day - it's definitely a tradeoff, and something good user-focused software design usually tries to avoid.

FWIW, when I'm doing A/B testing of different ways of writing a passage, I either use undo or else a separate "scratch" staff or measure.

In reply to by Marc Sabatella

But I would also observe, in this particular example - two voices both on the same note - you actually want to silence one of the regardless of whether you make one invisible or not. That is, in standard music notation, when the noteheads don't match, the norm is to show both noteheads - the eighth and the half in your example. But in the synthesized audio, you don't want them both to play, because that causes an audio "phasing" artifact due to the identical waveforms being superimposed. In fact, you don't even want both notes to play if they are on different staves that use the same playback sound - for example, alto and tenor voices, or 1st and 2nd trumpets, doubling the same pitch.

So here, the visibility of the notes really has nothing to do with why you want it silent; it's all about the fact that it's a unison with the same playback sound. Automatic detection and suppression of this would be welcome in virtually all cases. But also, a plugin to do this would be quite nice meanwhile. It's high on my list of most-wished-for plugins.

In reply to by scorster

In piano writing you see it both ways, roughly equally often I would say, although that's just a rough guesstimate. More common still would be to notate the top voice with rest.

It's also common to notate the lower notes as quarters and not sweat the discrepancy in durations or add rests. Also quite common to just notate the whole arpeggio in one voice and not bother indicating the bass note at all. The use of damper pedal tends to blur issues of note durations anyhow.

In vocal music, or other music with multiple parts combined onto one staff (eg, 1st and 2nd flute), you do not generally merge the noteheads - it's very important each player be able to read their own part independently.

In short, merging the noteheads is the norm for guitar only, really. But as I said, regardless of the notation, you don't want both to actually play in a synthesized context, because of audio artifacts. Only exception would be music for multiple parts where you are using different sounds for the voices.

So again, it would be great to handle all of these cases completely automatically, detecting cases of the same note being played mutliple times at once with the same sound, and suppressing all but one.

In reply to by Marc Sabatella

I'm ignorant concerning what is non-standard notation whether it comes to implementing custom ornaments or muting invisible notes. And I didn't want to start a discussion about whether it's useful or not :-).
My post was about the how, not about the why, because I thought to keep the message as short as possible, but I don't mind to elaborate on the why of my question.

During my childhood I studied classical piano, but I do have my limitations. I'm not a good musician in the sense that: put me in front of a piano and I can't play anything without some sheet music in front of me (having to play Bach by heart at exams was a struggle :-) ). I stopped music school when going to university, and afterwards I only played music that was fairly easy to sight read, but didn't play that often anymore and my piano has been in storage for some years.
When my mother had to go to an elderly home they organized afternoons to sing songs with the demented people accompanied by an accordionist. But the accordionist stopped and I picked up playing the piano again, also for the other residents. That's when I started to use musescore for score editing and playscore for scanning and generating musicxml files. I have entered all songs I have (> 100) in musescore. I save them as PDF and put them on my e-reader or ipad. Some scores I don't need to practice before a sing-a-long session, but others I have to play again a few times before it sounds good enough, and I do not play all notes, often reducing chords to one, or a few notes. I would make less mistakes if the score only contains the notes that I actually play, making it easier to read.
What I did so far was deleting the notes I don't play, and save it as a 'simple' version of the song. But perhaps I want to bring a note back or leave another one out, having multiple scores for the same song, doesn't make this easy.
So the idea now is to keep one score, but make the notes I don't want to play invisible. That makes it easier to experiment with leaving out other notes or bringing notes back in. It's when listening to the result that I noticed that invisible notes were still playing, while intuitively, given my view at it, invisible means silent to me.
I undestand others are looking at it from a different angle.
And I know that I can achieve what I want by using the inspector panel, I was just wondering if there was a way to set both (invisible+silent) as one. And I know the answer now :).

Luc.

Do you still have an unanswered question? Please log in first to post your question.